otp.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { genStyleHooks, mergeToken } from '../../theme/internal';
  2. import { initComponentToken, initInputToken } from './token';
  3. // =============================== OTP ================================
  4. const genOTPStyle = token => {
  5. const {
  6. componentCls,
  7. paddingXS
  8. } = token;
  9. return {
  10. [componentCls]: {
  11. display: 'inline-flex',
  12. alignItems: 'center',
  13. flexWrap: 'nowrap',
  14. columnGap: paddingXS,
  15. [`${componentCls}-input-wrapper`]: {
  16. position: 'relative',
  17. [`${componentCls}-mask-icon`]: {
  18. position: 'absolute',
  19. zIndex: '1',
  20. top: '50%',
  21. right: '50%',
  22. transform: 'translate(50%, -50%)',
  23. pointerEvents: 'none'
  24. },
  25. [`${componentCls}-mask-input`]: {
  26. color: 'transparent',
  27. caretColor: token.colorText
  28. },
  29. [`${componentCls}-mask-input[type=number]::-webkit-inner-spin-button`]: {
  30. '-webkit-appearance': 'none',
  31. margin: 0
  32. },
  33. [`${componentCls}-mask-input[type=number]`]: {
  34. '-moz-appearance': 'textfield'
  35. }
  36. },
  37. '&-rtl': {
  38. direction: 'rtl'
  39. },
  40. [`${componentCls}-input`]: {
  41. textAlign: 'center',
  42. paddingInline: token.paddingXXS
  43. },
  44. // ================= Size =================
  45. [`&${componentCls}-sm ${componentCls}-input`]: {
  46. paddingInline: token.calc(token.paddingXXS).div(2).equal()
  47. },
  48. [`&${componentCls}-lg ${componentCls}-input`]: {
  49. paddingInline: token.paddingXS
  50. }
  51. }
  52. };
  53. };
  54. // ============================== Export ==============================
  55. export default genStyleHooks(['Input', 'OTP'], token => {
  56. const inputToken = mergeToken(token, initInputToken(token));
  57. return genOTPStyle(inputToken);
  58. }, initComponentToken);