@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 4.11 kB
Source Map (JSON)
{"version":3,"file":"InputNumber.mjs","names":[],"sources":["../../../src/base-ui/Input/InputNumber.tsx"],"sourcesContent":["'use client';\n\nimport { NumberField } from '@base-ui/react/number-field';\nimport { cx, useThemeMode } from 'antd-style';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\nimport { memo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { isPressEnter } from './pressEnter';\nimport { rootVariants, styles } from './style';\nimport type { InputNumberProps } from './type';\n\nconst controlIconSize = { large: 13, middle: 12, small: 10 } as const;\n\nconst InputNumber = memo<InputNumberProps>(\n ({\n ref,\n className,\n classNames,\n styles: customStyles,\n style,\n variant,\n shadow,\n size = 'middle',\n controls = true,\n changeOnWheel,\n onChange,\n placeholder,\n format,\n precision,\n prefix,\n suffix,\n onPressEnter,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const mergedVariant = variant || (isDarkMode ? 'filled' : 'outlined');\n const controlClassName = cx(\n styles.numberControl,\n size === 'small' && styles.numberControlSmall,\n size === 'large' && styles.numberControlLarge,\n );\n const mergedFormat =\n precision === undefined\n ? format\n : { ...format, maximumFractionDigits: precision, minimumFractionDigits: precision };\n\n return (\n <NumberField.Root\n allowWheelScrub={changeOnWheel}\n className={cx(rootVariants({ shadow, size, variant: mergedVariant }), className)}\n format={mergedFormat}\n style={style}\n onValueChange={onChange}\n {...rest}\n >\n {prefix && <span className={styles.slot}>{prefix}</span>}\n <NumberField.Input\n className={cx(styles.input, styles.numberInput, classNames?.input)}\n placeholder={placeholder}\n ref={ref}\n style={customStyles?.input}\n onKeyDown={(event) => {\n if (isPressEnter(event)) onPressEnter?.(event);\n }}\n />\n {suffix && <span className={styles.slot}>{suffix}</span>}\n {controls && (\n <div\n className={cx(styles.numberControls, size === 'small' && styles.numberControlsSmall)}\n >\n <NumberField.Increment className={controlClassName}>\n <Icon icon={ChevronUp} size={controlIconSize[size]} />\n </NumberField.Increment>\n <NumberField.Decrement className={controlClassName}>\n <Icon icon={ChevronDown} size={controlIconSize[size]} />\n </NumberField.Decrement>\n </div>\n )}\n </NumberField.Root>\n );\n },\n);\n\nInputNumber.displayName = 'InputNumber';\n\nexport default Object.assign(InputNumber, { formBinding: { emptyValue: null } as const });\n"],"mappings":";;;;;;;;;;AAaA,MAAM,kBAAkB;CAAE,OAAO;CAAI,QAAQ;CAAI,OAAO;AAAG;AAE3D,MAAM,cAAc,MACjB,EACC,KACA,WACA,YACA,QAAQ,cACR,OACA,SACA,QACA,OAAO,UACP,WAAW,MACX,eACA,UACA,aACA,QACA,WACA,QACA,QACA,cACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,gBAAgB,YAAY,aAAa,WAAW;CAC1D,MAAM,mBAAmB,GACvB,OAAO,eACP,SAAS,WAAW,OAAO,oBAC3B,SAAS,WAAW,OAAO,kBAC7B;CACA,MAAM,eACJ,cAAc,KAAA,IACV,SACA;EAAE,GAAG;EAAQ,uBAAuB;EAAW,uBAAuB;CAAU;CAEtF,OACE,qBAAC,YAAY,MAAb;EACE,iBAAiB;EACjB,WAAW,GAAG,aAAa;GAAE;GAAQ;GAAM,SAAS;EAAc,CAAC,GAAG,SAAS;EAC/E,QAAQ;EACD;EACP,eAAe;EACf,GAAI;EANN,UAAA;GAQG,UAAU,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAO,UAAA;GAAa,CAAA;GACvD,oBAAC,YAAY,OAAb;IACE,WAAW,GAAG,OAAO,OAAO,OAAO,aAAa,YAAY,KAAK;IACpD;IACR;IACL,OAAO,cAAc;IACrB,YAAY,UAAU;KACpB,IAAI,aAAa,KAAK,GAAG,eAAe,KAAK;IAC/C;GACD,CAAA;GACA,UAAU,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAO,UAAA;GAAa,CAAA;GACtD,YACC,qBAAC,OAAD;IACE,WAAW,GAAG,OAAO,gBAAgB,SAAS,WAAW,OAAO,mBAAmB;IADrF,UAAA,CAGE,oBAAC,YAAY,WAAb;KAAuB,WAAW;KAChC,UAAA,oBAAC,MAAD;MAAM,MAAM;MAAW,MAAM,gBAAgB;KAAQ,CAAA;IAChC,CAAA,GACvB,oBAAC,YAAY,WAAb;KAAuB,WAAW;KAChC,UAAA,oBAAC,MAAD;MAAM,MAAM;MAAa,MAAM,gBAAgB;KAAQ,CAAA;IAClC,CAAA,CACpB;;EAES;;AAEtB,CACF;AAEA,YAAY,cAAc;AAE1B,IAAA,sBAAe,OAAO,OAAO,aAAa,EAAE,aAAa,EAAE,YAAY,KAAK,EAAW,CAAC"}