@codefast/ui 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-DH7SJ5IC.cjs → chunk-3Z6QUP75.cjs} +1 -1
- package/dist/{chunk-DH7SJ5IC.cjs.map → chunk-3Z6QUP75.cjs.map} +1 -1
- package/dist/{chunk-JVSVYDS3.js → chunk-W5RHRZIO.js} +1 -1
- package/dist/chunk-W5RHRZIO.js.map +1 -0
- package/dist/react/calendar.cjs.map +1 -1
- package/dist/react/calendar.js.map +1 -1
- package/dist/react/command.d.cts +8 -8
- package/dist/react/command.d.ts +8 -8
- package/dist/react/data-table.cjs.map +1 -1
- package/dist/react/data-table.js.map +1 -1
- package/dist/react/number-input.cjs +1 -1
- package/dist/react/number-input.js +1 -1
- package/dist/react/primitive/number-input.cjs +1 -1
- package/dist/react/primitive/number-input.js +1 -1
- package/dist/react/separator.cjs +1 -1
- package/dist/react/separator.cjs.map +1 -1
- package/dist/react/separator.d.cts +81 -3
- package/dist/react/separator.d.ts +81 -3
- package/dist/react/separator.js +1 -1
- package/dist/react/separator.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +7 -7
- package/dist/chunk-JVSVYDS3.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk76TT2QSBcjs = require('./chunk-76TT2QSB.cjs');var _react = require('react'); var t = _interopRequireWildcard(_react);var _reactcontext = require('@radix-ui/react-context');var _reactcomposerefs = require('@radix-ui/react-compose-refs');var _primitive = require('@radix-ui/primitive');var _reactprimitive = require('@radix-ui/react-primitive');var _reactusecontrollablestate = require('@radix-ui/react-use-controllable-state');var _jsxruntime = require('react/jsx-runtime');var O="NumberInput",[q,Ne]=_reactcontext.createContextScope.call(void 0, O,[_chunk76TT2QSBcjs.a]),A=_chunk76TT2QSBcjs.a.call(void 0, ),[G,F]=q(O);function Q(n){let{__scopeNumberInput:r,ariaDecrementLabel:p,ariaIncrementLabel:f,defaultValue:a,disabled:N,formatOptions:R={style:"decimal",minimumFractionDigits:0},id:C,locale:E=navigator.language,max:m,min:s,onChange:d,readOnly:l,step:u=1,value:I,...v}=n,b=A(r),g=t.useRef(null),[y,w]=_reactusecontrollablestate.useControllableState.call(void 0, {prop:I,defaultProp:a,onChange:d}),{thousandSeparator:S,decimalSeparator:x}=t.useMemo(()=>oe(E),[E]),D=t.useCallback(o=>o===void 0||isNaN(o)?"":new Intl.NumberFormat(E,R).format(o),[R,E]),B=t.useCallback(o=>{if(typeof o=="number")return V(o,s,m);if(typeof o!="string")return NaN;let T=o.trim().replace(/[^\d.,\-()]/g,"");if(T==="")return NaN;let k=ue(T,S,x),M=parseFloat(k);return R.style==="percent"&&(M/=100),isNaN(M)?0:V(M,s,m)},[x,R.style,m,s,S]),e=t.useCallback(o=>{let T=g.current;if(!T||N||l)return;let k=B(T.value)||0,M=V(o(k),s,m);T.value=D(M),w(M)},[N,D,m,s,B,l,w]),c=t.useCallback(()=>{e(o=>o+u)},[e,u]),i=t.useCallback(()=>{e(o=>o-u)},[e,u]),P=t.useCallback(()=>{e(o=>_nullishCoalesce(m, () => (o+u)))},[e,m,u]),X=t.useCallback(()=>{e(o=>_nullishCoalesce(s, () => (o-u)))},[e,s,u]);return _jsxruntime.jsx.call(void 0, G,{ariaDecrementLabel:p,ariaIncrementLabel:f,disabled:N,formatOptions:R,formatValue:D,id:C,inputRef:g,max:m,min:s,parseValue:B,readOnly:l,scope:r,value:y,onChange:w,onDecrement:i,onDecrementToMin:X,onIncrement:c,onIncrementToMax:P,children:_jsxruntime.jsx.call(void 0, _chunk76TT2QSBcjs.b,{...b,...v})})}Q.displayName=O;var J="NumberInputItem",Z= exports.c =t.forwardRef(({__scopeNumberInput:n,...r},p)=>{let f=A(n),{inputRef:a,disabled:N,id:R,max:C,min:E,readOnly:m,step:s,value:d,formatValue:l,parseValue:u,onChange:I,onIncrement:v,onDecrement:b,onIncrementToMax:g,onDecrementToMin:y}=F(J,n),w=_reactcomposerefs.useComposedRefs.call(void 0, p,a),S=t.useCallback(e=>{let c=u(e.target.value),i=l(c);i!==e.target.value&&(e.target.value=i),I(c)},[l,I,u]),x=t.useCallback(e=>{switch(e.key){case"ArrowUp":v(),e.preventDefault();break;case"PageUp":g(),e.preventDefault();break;case"ArrowDown":b(),e.preventDefault();break;case"PageDown":y(),e.preventDefault();break;default:break}},[v,g,b,y]),D=t.useCallback(e=>{switch(e.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Tab":case"Escape":case"Enter":case"Backspace":case"Delete":case"Home":case"End":case".":case",":case"-":case"%":return;default:if(le(e.key)||me(e)||ce(e.key))return;e.preventDefault()}},[]),B=t.useCallback(e=>{let c=a.current;if(e.key!=="Enter"||!c)return;let i=u(c.value),P=l(i);P!==c.value&&(c.value=P),I(i)},[l,a,I,u]);return t.useEffect(()=>{let e=i=>{let P=a.current;!P||N||m||document.activeElement!==P||(i.preventDefault(),i.deltaY>0?v():b())},c=a.current;return _optionalChain([c, 'optionalAccess', _2 => _2.addEventListener, 'call', _3 => _3("wheel",e)]),()=>{_optionalChain([c, 'optionalAccess', _4 => _4.removeEventListener, 'call', _5 => _5("wheel",e)])}},[v,b,a,N,m]),t.useEffect(()=>{let e=a.current;e&&e!==document.activeElement&&(e.value=l(d))},[l,a,d]),t.useEffect(()=>{let e=a.current;if(!e)return;let c=()=>{I()},i=e.form;return _optionalChain([i, 'optionalAccess', _6 => _6.addEventListener, 'call', _7 => _7("reset",c)]),()=>{_optionalChain([i, 'optionalAccess', _8 => _8.removeEventListener, 'call', _9 => _9("reset",c)])}},[a,I]),_jsxruntime.jsx.call(void 0, _chunk76TT2QSBcjs.c,{ref:w,...f,...r,defaultValue:l(d),disabled:N,id:R,max:C,min:E,readOnly:m,step:s,onBlur:_primitive.composeEventHandlers.call(void 0, r.onBlur,S),onKeyDown:_primitive.composeEventHandlers.call(void 0, r.onKeyDown,t.useMemo(()=>ae(D,x,B),[x,B,D]))})});Z.displayName=J;var W="NumberInputImplButton",_=t.forwardRef(({__scopeNumberInput:n,operation:r,...p},f)=>{let{ariaIncrementLabel:a,ariaDecrementLabel:N,disabled:R,readOnly:C,id:E,onIncrement:m,onDecrement:s}=F(W,n),d=t.useRef(null),l=t.useCallback(b=>{let y=()=>{b(),d.current=setTimeout(y,100)};b(),d.current=setTimeout(y,100*2)},[]),u=t.useCallback(()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),I=t.useCallback(()=>{l(r==="increment"?m:s)},[s,m,r,l]),v=t.useCallback(b=>{b.preventDefault()},[]);return _jsxruntime.jsx.call(void 0, _reactprimitive.Primitive.button,{ref:f,"aria-controls":E,"aria-label":r==="increment"?a:N,"aria-live":"polite",disabled:R||C,tabIndex:-1,type:"button",onContextMenu:v,onPointerCancel:u,onPointerDown:I,onPointerLeave:u,onPointerUp:u,...p})});_.displayName=W;var ee="NumberInputIncrementButton",te= exports.d =t.forwardRef((n,r)=>_jsxruntime.jsx.call(void 0, _,{operation:"increment",...n,ref:r}));te.displayName=ee;var ne="NumberInputDecrementButton",re= exports.e =t.forwardRef((n,r)=>_jsxruntime.jsx.call(void 0, _,{operation:"decrement",...n,ref:r}));re.displayName=ne;function ae(...n){return(...r)=>{for(let p of n)p(...r)}}function oe(n){return new Intl.NumberFormat(n).formatToParts(12345.6).reduce((f,a)=>(a.type==="group"&&(f.thousandSeparator=a.value),a.type==="decimal"&&(f.decimalSeparator=a.value),f),{thousandSeparator:"",decimalSeparator:""})}function ue(n,r,p){return n.replace(new RegExp(`\\${r}`,"g"),"").replace(new RegExp(`\\${p}`),".").replace(/[()]/g,"-")}function me(n){return n.ctrlKey||n.altKey||n.metaKey||n.shiftKey}function ce(n){return n.startsWith("F")&&n.length>1}function le(n){return!isNaN(Number(n))}function V(n,r=-1/0,p=1/0){return Math.min(Math.max(n,r),p)}exports.a = Ne; exports.b = Q; exports.c = Z; exports.d = te; exports.e = re;
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-3Z6QUP75.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-DH7SJ5IC.cjs","../src/react/primitive/number-input.tsx"],"names":["NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","jsx","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-DH7SJ5IC.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'PageUp':\n case 'PageDown':\n case 'Tab':\n case 'Escape':\n case 'Enter':\n case 'Backspace':\n case 'Delete':\n case 'Home':\n case 'End':\n case '.':\n case ',':\n case '-':\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-3Z6QUP75.cjs","../src/react/primitive/number-input.tsx"],"names":["NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","jsx","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-3Z6QUP75.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n\n case 'ArrowDown':\n\n case 'ArrowLeft':\n\n case 'ArrowRight':\n\n case 'PageUp':\n\n case 'PageDown':\n\n case 'Tab':\n\n case 'Escape':\n\n case 'Enter':\n\n case 'Backspace':\n\n case 'Delete':\n\n case 'Home':\n\n case 'End':\n\n case '.':\n\n case ',':\n\n case '-':\n\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{a as L,b as U,c as H}from"./chunk-QCHBG2C4.js";import*as t from"react";import{createContextScope as z}from"@radix-ui/react-context";import{useComposedRefs as $}from"@radix-ui/react-compose-refs";import{composeEventHandlers as K}from"@radix-ui/primitive";import{Primitive as Y}from"@radix-ui/react-primitive";import{useControllableState as j}from"@radix-ui/react-use-controllable-state";import{jsx as h}from"react/jsx-runtime";var O="NumberInput",[q,Ne]=z(O,[L]),A=L(),[G,F]=q(O);function Q(n){let{__scopeNumberInput:r,ariaDecrementLabel:p,ariaIncrementLabel:f,defaultValue:a,disabled:N,formatOptions:R={style:"decimal",minimumFractionDigits:0},id:C,locale:E=navigator.language,max:m,min:s,onChange:d,readOnly:l,step:u=1,value:I,...v}=n,b=A(r),g=t.useRef(null),[y,w]=j({prop:I,defaultProp:a,onChange:d}),{thousandSeparator:S,decimalSeparator:x}=t.useMemo(()=>oe(E),[E]),D=t.useCallback(o=>o===void 0||isNaN(o)?"":new Intl.NumberFormat(E,R).format(o),[R,E]),B=t.useCallback(o=>{if(typeof o=="number")return V(o,s,m);if(typeof o!="string")return NaN;let T=o.trim().replace(/[^\d.,\-()]/g,"");if(T==="")return NaN;let k=ue(T,S,x),M=parseFloat(k);return R.style==="percent"&&(M/=100),isNaN(M)?0:V(M,s,m)},[x,R.style,m,s,S]),e=t.useCallback(o=>{let T=g.current;if(!T||N||l)return;let k=B(T.value)||0,M=V(o(k),s,m);T.value=D(M),w(M)},[N,D,m,s,B,l,w]),c=t.useCallback(()=>{e(o=>o+u)},[e,u]),i=t.useCallback(()=>{e(o=>o-u)},[e,u]),P=t.useCallback(()=>{e(o=>m??o+u)},[e,m,u]),X=t.useCallback(()=>{e(o=>s??o-u)},[e,s,u]);return h(G,{ariaDecrementLabel:p,ariaIncrementLabel:f,disabled:N,formatOptions:R,formatValue:D,id:C,inputRef:g,max:m,min:s,parseValue:B,readOnly:l,scope:r,value:y,onChange:w,onDecrement:i,onDecrementToMin:X,onIncrement:c,onIncrementToMax:P,children:h(U,{...b,...v})})}Q.displayName=O;var J="NumberInputItem",Z=t.forwardRef(({__scopeNumberInput:n,...r},p)=>{let f=A(n),{inputRef:a,disabled:N,id:R,max:C,min:E,readOnly:m,step:s,value:d,formatValue:l,parseValue:u,onChange:I,onIncrement:v,onDecrement:b,onIncrementToMax:g,onDecrementToMin:y}=F(J,n),w=$(p,a),S=t.useCallback(e=>{let c=u(e.target.value),i=l(c);i!==e.target.value&&(e.target.value=i),I(c)},[l,I,u]),x=t.useCallback(e=>{switch(e.key){case"ArrowUp":v(),e.preventDefault();break;case"PageUp":g(),e.preventDefault();break;case"ArrowDown":b(),e.preventDefault();break;case"PageDown":y(),e.preventDefault();break;default:break}},[v,g,b,y]),D=t.useCallback(e=>{switch(e.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Tab":case"Escape":case"Enter":case"Backspace":case"Delete":case"Home":case"End":case".":case",":case"-":case"%":return;default:if(le(e.key)||me(e)||ce(e.key))return;e.preventDefault()}},[]),B=t.useCallback(e=>{let c=a.current;if(e.key!=="Enter"||!c)return;let i=u(c.value),P=l(i);P!==c.value&&(c.value=P),I(i)},[l,a,I,u]);return t.useEffect(()=>{let e=i=>{let P=a.current;!P||N||m||document.activeElement!==P||(i.preventDefault(),i.deltaY>0?v():b())},c=a.current;return c?.addEventListener("wheel",e),()=>{c?.removeEventListener("wheel",e)}},[v,b,a,N,m]),t.useEffect(()=>{let e=a.current;e&&e!==document.activeElement&&(e.value=l(d))},[l,a,d]),t.useEffect(()=>{let e=a.current;if(!e)return;let c=()=>{I()},i=e.form;return i?.addEventListener("reset",c),()=>{i?.removeEventListener("reset",c)}},[a,I]),h(H,{ref:w,...f,...r,defaultValue:l(d),disabled:N,id:R,max:C,min:E,readOnly:m,step:s,onBlur:K(r.onBlur,S),onKeyDown:K(r.onKeyDown,t.useMemo(()=>ae(D,x,B),[x,B,D]))})});Z.displayName=J;var W="NumberInputImplButton",_=t.forwardRef(({__scopeNumberInput:n,operation:r,...p},f)=>{let{ariaIncrementLabel:a,ariaDecrementLabel:N,disabled:R,readOnly:C,id:E,onIncrement:m,onDecrement:s}=F(W,n),d=t.useRef(null),l=t.useCallback(b=>{let y=()=>{b(),d.current=setTimeout(y,100)};b(),d.current=setTimeout(y,100*2)},[]),u=t.useCallback(()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),I=t.useCallback(()=>{l(r==="increment"?m:s)},[s,m,r,l]),v=t.useCallback(b=>{b.preventDefault()},[]);return h(Y.button,{ref:f,"aria-controls":E,"aria-label":r==="increment"?a:N,"aria-live":"polite",disabled:R||C,tabIndex:-1,type:"button",onContextMenu:v,onPointerCancel:u,onPointerDown:I,onPointerLeave:u,onPointerUp:u,...p})});_.displayName=W;var ee="NumberInputIncrementButton",te=t.forwardRef((n,r)=>h(_,{operation:"increment",...n,ref:r}));te.displayName=ee;var ne="NumberInputDecrementButton",re=t.forwardRef((n,r)=>h(_,{operation:"decrement",...n,ref:r}));re.displayName=ne;function ae(...n){return(...r)=>{for(let p of n)p(...r)}}function oe(n){return new Intl.NumberFormat(n).formatToParts(12345.6).reduce((f,a)=>(a.type==="group"&&(f.thousandSeparator=a.value),a.type==="decimal"&&(f.decimalSeparator=a.value),f),{thousandSeparator:"",decimalSeparator:""})}function ue(n,r,p){return n.replace(new RegExp(`\\${r}`,"g"),"").replace(new RegExp(`\\${p}`),".").replace(/[()]/g,"-")}function me(n){return n.ctrlKey||n.altKey||n.metaKey||n.shiftKey}function ce(n){return n.startsWith("F")&&n.length>1}function le(n){return!isNaN(Number(n))}function V(n,r=-1/0,p=1/0){return Math.min(Math.max(n,r),p)}export{Ne as a,Q as b,Z as c,te as d,re as e};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-W5RHRZIO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/primitive/number-input.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { createContextScope, type Scope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport * as InputPrimitive from '@/react/primitive/input';\nimport { createInputScope } from '@/react/primitive/input';\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInput\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_NAME = 'NumberInput';\n\ntype ScopedProps<P> = P & {\n __scopeNumberInput?: Scope;\n};\nconst [createNumberInputContext, createNumberInputScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);\nconst useInputScope = createInputScope();\n\ninterface NumberInputContextValue {\n formatOptions: Intl.NumberFormatOptions;\n formatValue: (value?: number) => string;\n inputRef: React.RefObject<HTMLInputElement>;\n onChange: (value?: number) => void;\n onDecrement: () => void;\n onDecrementToMin: () => void;\n onIncrement: () => void;\n onIncrementToMax: () => void;\n parseValue: (value: string | number | readonly string[] | undefined) => number;\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n disabled?: boolean;\n id?: string;\n max?: number;\n min?: number;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nconst [NumberInputProvider, useNumberInputContext] =\n createNumberInputContext<NumberInputContextValue>(NUMBER_INPUT_NAME);\n\ninterface NumberInputProps extends Omit<InputPrimitive.InputProps, 'prefix' | 'suffix' | 'loading' | 'loaderPosition'> {\n ariaDecrementLabel?: string;\n ariaIncrementLabel?: string;\n defaultValue?: number;\n disabled?: boolean;\n formatOptions?: Intl.NumberFormatOptions;\n id?: string;\n locale?: string;\n max?: number;\n min?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n step?: number;\n value?: number;\n}\n\nfunction NumberInput(numberInputProps: NumberInputProps): React.JSX.Element {\n const {\n __scopeNumberInput,\n ariaDecrementLabel,\n ariaIncrementLabel,\n defaultValue,\n disabled,\n formatOptions = { style: 'decimal', minimumFractionDigits: 0 },\n id,\n locale = navigator.language,\n max,\n min,\n onChange,\n readOnly,\n step = 1,\n value: valueProp,\n ...props\n } = numberInputProps as ScopedProps<NumberInputProps>;\n const inputScope = useInputScope(__scopeNumberInput);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange,\n });\n\n const { thousandSeparator, decimalSeparator } = React.useMemo(() => getNumberFormatSeparators(locale), [locale]);\n\n const formatValue = React.useCallback(\n (inputValue?: number): string => {\n if (inputValue === undefined || isNaN(inputValue)) {\n return '';\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(inputValue);\n },\n [formatOptions, locale],\n );\n\n const parseValue = React.useCallback(\n (inputValue: string | number | readonly string[] | undefined): number => {\n if (typeof inputValue === 'number') {\n return clamp(inputValue, min, max);\n }\n\n if (typeof inputValue !== 'string') {\n return NaN;\n }\n\n const cleanedValue = inputValue.trim().replace(/[^\\d.,\\-()]/g, '');\n\n if (cleanedValue === '') {\n return NaN;\n }\n\n const normalizedValue = normalizeInputValue(cleanedValue, thousandSeparator, decimalSeparator);\n let parsedValue = parseFloat(normalizedValue);\n\n if (formatOptions.style === 'percent') {\n parsedValue /= 100;\n }\n\n return isNaN(parsedValue) ? 0 : clamp(parsedValue, min, max);\n },\n [decimalSeparator, formatOptions.style, max, min, thousandSeparator],\n );\n\n const changeNumberValue = React.useCallback(\n (operation: (number: number) => number) => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly) {\n return;\n }\n\n const currentValue = parseValue(inputElement.value) || 0;\n const newValue = clamp(operation(currentValue), min, max);\n\n inputElement.value = formatValue(newValue);\n setValue(newValue);\n },\n [disabled, formatValue, max, min, parseValue, readOnly, setValue],\n );\n\n const handleIncrement = React.useCallback(() => {\n changeNumberValue((number) => number + step);\n }, [changeNumberValue, step]);\n\n const handleDecrement = React.useCallback(() => {\n changeNumberValue((number) => number - step);\n }, [changeNumberValue, step]);\n\n const handleIncrementToMax = React.useCallback(() => {\n changeNumberValue((number) => max ?? number + step);\n }, [changeNumberValue, max, step]);\n\n const handleDecrementToMin = React.useCallback(() => {\n changeNumberValue((number) => min ?? number - step);\n }, [changeNumberValue, min, step]);\n\n return (\n <NumberInputProvider\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n disabled={disabled}\n formatOptions={formatOptions}\n formatValue={formatValue}\n id={id}\n inputRef={inputRef}\n max={max}\n min={min}\n parseValue={parseValue}\n readOnly={readOnly}\n scope={__scopeNumberInput}\n value={value}\n onChange={setValue}\n onDecrement={handleDecrement}\n onDecrementToMin={handleDecrementToMin}\n onIncrement={handleIncrement}\n onIncrementToMax={handleIncrementToMax}\n >\n <InputPrimitive.Root {...inputScope} {...props} />\n </NumberInputProvider>\n );\n}\n\nNumberInput.displayName = NUMBER_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputItem\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_ITEM_NAME = 'NumberInputItem';\n\ntype NumberInputItemElement = React.ElementRef<typeof InputPrimitive.Item>;\ntype NumberInputItemProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputPrimitive.Item>,\n 'min' | 'max' | 'value' | 'step' | 'onChange' | 'defaultValue' | 'disabled' | 'readOnly' | 'prefix' | 'id'\n>;\n\nconst NumberInputItem = React.forwardRef<NumberInputItemElement, NumberInputItemProps>(\n ({ __scopeNumberInput, ...props }: ScopedProps<NumberInputItemProps>, forwardedRef): React.JSX.Element => {\n const inputScope = useInputScope(__scopeNumberInput);\n const {\n inputRef,\n disabled,\n id,\n max,\n min,\n readOnly,\n step,\n value,\n formatValue,\n parseValue,\n onChange,\n onIncrement,\n onDecrement,\n onIncrementToMax,\n onDecrementToMin,\n } = useNumberInputContext(NUMBER_INPUT_ITEM_NAME, __scopeNumberInput);\n const composedNumberInputRef = useComposedRefs(forwardedRef, inputRef);\n\n // Handle blur event to format the value\n const handleBlur = React.useCallback<React.FocusEventHandler<HTMLInputElement>>(\n (event) => {\n const numericValue = parseValue(event.target.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== event.target.value) {\n event.target.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, onChange, parseValue],\n );\n\n // Handle keyboard events to increment/decrement the value\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n switch (event.key) {\n case 'ArrowUp':\n onIncrement();\n event.preventDefault();\n break;\n\n case 'PageUp':\n onIncrementToMax();\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n onDecrement();\n event.preventDefault();\n break;\n\n case 'PageDown':\n onDecrementToMin();\n event.preventDefault();\n break;\n\n default:\n break;\n }\n },\n [onIncrement, onIncrementToMax, onDecrement, onDecrementToMin],\n );\n\n // Prevent non-numeric input\n const handleKeyDownPrevent = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>((event) => {\n switch (event.key) {\n case 'ArrowUp':\n\n case 'ArrowDown':\n\n case 'ArrowLeft':\n\n case 'ArrowRight':\n\n case 'PageUp':\n\n case 'PageDown':\n\n case 'Tab':\n\n case 'Escape':\n\n case 'Enter':\n\n case 'Backspace':\n\n case 'Delete':\n\n case 'Home':\n\n case 'End':\n\n case '.':\n\n case ',':\n\n case '-':\n\n case '%':\n return;\n\n default:\n if (isNumberKey(event.key) || isModifierKey(event) || isFunctionKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n }\n }, []);\n\n // Handle Enter key to format the value\n const handleKeyDownEnter = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (event) => {\n const inputElement = inputRef.current;\n\n if (event.key !== 'Enter' || !inputElement) {\n return;\n }\n\n const numericValue = parseValue(inputElement.value);\n const formattedValue = formatValue(numericValue);\n\n if (formattedValue !== inputElement.value) {\n inputElement.value = formattedValue;\n }\n\n onChange(numericValue);\n },\n [formatValue, inputRef, onChange, parseValue],\n );\n\n // Handle wheel event to increment/decrement the value\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent): void => {\n const inputElement = inputRef.current;\n\n if (!inputElement || disabled || readOnly || document.activeElement !== inputElement) {\n return;\n }\n\n event.preventDefault();\n event.deltaY > 0 ? onIncrement() : onDecrement();\n };\n\n const inputElement = inputRef.current;\n\n inputElement?.addEventListener('wheel', handleWheel);\n\n return () => {\n inputElement?.removeEventListener('wheel', handleWheel);\n };\n }, [onIncrement, onDecrement, inputRef, disabled, readOnly]);\n\n // Format the value when the value changes\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (inputElement && inputElement !== document.activeElement) {\n inputElement.value = formatValue(value);\n }\n }, [formatValue, inputRef, value]);\n\n // Handle form reset\n React.useEffect(() => {\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n const handleReset = (): void => {\n onChange();\n };\n\n const form = inputElement.form;\n\n form?.addEventListener('reset', handleReset);\n\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [inputRef, onChange]);\n\n return (\n <InputPrimitive.Item\n ref={composedNumberInputRef}\n {...inputScope}\n {...props}\n defaultValue={formatValue(value)}\n disabled={disabled}\n id={id}\n max={max}\n min={min}\n readOnly={readOnly}\n step={step}\n onBlur={composeEventHandlers(props.onBlur, handleBlur)}\n onKeyDown={composeEventHandlers(\n props.onKeyDown,\n React.useMemo(\n () => chain(handleKeyDownPrevent, handleKeyDown, handleKeyDownEnter),\n [handleKeyDown, handleKeyDownEnter, handleKeyDownPrevent],\n ),\n )}\n />\n );\n },\n);\n\nNumberInputItem.displayName = NUMBER_INPUT_ITEM_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputImplButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_BUTTON_IMPL_NAME = 'NumberInputImplButton';\n\ntype NumberInputButtonImplElement = React.ElementRef<typeof Primitive.button>;\ninterface NumberInputButtonImplProps extends React.ComponentPropsWithoutRef<typeof Primitive.button> {\n operation: 'increment' | 'decrement';\n}\n\nconst NumberInputButtonImpl = React.forwardRef<NumberInputButtonImplElement, NumberInputButtonImplProps>(\n (\n { __scopeNumberInput, operation, ...props }: ScopedProps<NumberInputButtonImplProps>,\n forwardedRef,\n ): React.JSX.Element => {\n const { ariaIncrementLabel, ariaDecrementLabel, disabled, readOnly, id, onIncrement, onDecrement } =\n useNumberInputContext(NUMBER_INPUT_BUTTON_IMPL_NAME, __scopeNumberInput);\n const timeoutIdRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const startActionInterval = React.useCallback((callback: () => void) => {\n const interval = 100;\n\n const repeatAction = (): void => {\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval);\n };\n\n callback();\n timeoutIdRef.current = setTimeout(repeatAction, interval * 2);\n }, []);\n\n const clearActionInterval = React.useCallback(() => {\n if (timeoutIdRef.current) {\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = null;\n }\n }, []);\n\n const handlePointerDown = React.useCallback<React.PointerEventHandler<HTMLButtonElement>>(() => {\n const action = operation === 'increment' ? onIncrement : onDecrement;\n\n startActionInterval(action);\n }, [onDecrement, onIncrement, operation, startActionInterval]);\n\n const handleContextMenu = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>((event) => {\n event.preventDefault();\n }, []);\n\n return (\n <Primitive.button\n ref={forwardedRef}\n aria-controls={id}\n aria-label={operation === 'increment' ? ariaIncrementLabel : ariaDecrementLabel}\n aria-live=\"polite\"\n disabled={disabled || readOnly}\n tabIndex={-1}\n type=\"button\"\n onContextMenu={handleContextMenu}\n onPointerCancel={clearActionInterval}\n onPointerDown={handlePointerDown}\n onPointerLeave={clearActionInterval}\n onPointerUp={clearActionInterval}\n {...props}\n />\n );\n },\n);\n\nNumberInputButtonImpl.displayName = NUMBER_INPUT_BUTTON_IMPL_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputIncrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_INCREMENT_BUTTON_NAME = 'NumberInputIncrementButton';\n\ntype NumberInputIncrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputIncrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputIncrementButton = React.forwardRef<NumberInputIncrementButtonElement, NumberInputIncrementButtonProps>(\n (props: NumberInputIncrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"increment\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputIncrementButton.displayName = NUMBER_INPUT_INCREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Component: NumberInputDecrementButton\n * -------------------------------------------------------------------------- */\n\nconst NUMBER_INPUT_DECREMENT_BUTTON_NAME = 'NumberInputDecrementButton';\n\ntype NumberInputDecrementButtonElement = NumberInputButtonImplElement;\ntype NumberInputDecrementButtonProps = Omit<NumberInputButtonImplProps, 'operation'>;\n\nconst NumberInputDecrementButton = React.forwardRef<NumberInputDecrementButtonElement, NumberInputDecrementButtonProps>(\n (props: NumberInputDecrementButtonProps, forwardedRef): React.JSX.Element => (\n <NumberInputButtonImpl operation=\"decrement\" {...props} ref={forwardedRef} />\n ),\n);\n\nNumberInputDecrementButton.displayName = NUMBER_INPUT_DECREMENT_BUTTON_NAME;\n\n/* -----------------------------------------------------------------------------\n * Utility Functions\n * -------------------------------------------------------------------------- */\n\nfunction chain<T extends unknown[]>(...callbacks: ((...args: T) => void)[]): (...args: T) => void {\n return (...args: T) => {\n for (const callback of callbacks) {\n callback(...args);\n }\n };\n}\n\nfunction getNumberFormatSeparators(locale: string): { decimalSeparator: string; thousandSeparator: string } {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(12345.6);\n\n return parts.reduce(\n (separatorOptions, part) => {\n if (part.type === 'group') {\n separatorOptions.thousandSeparator = part.value;\n }\n\n if (part.type === 'decimal') {\n separatorOptions.decimalSeparator = part.value;\n }\n\n return separatorOptions;\n },\n { thousandSeparator: '', decimalSeparator: '' },\n );\n}\n\nfunction normalizeInputValue(value: string, thousandSeparator: string, decimalSeparator: string): string {\n return value\n .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n .replace(new RegExp(`\\\\${decimalSeparator}`), '.')\n .replace(/[()]/g, '-');\n}\n\nfunction isModifierKey(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n return event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;\n}\n\nfunction isFunctionKey(key: string): boolean {\n return key.startsWith('F') && key.length > 1;\n}\n\nfunction isNumberKey(key: string): boolean {\n return !isNaN(Number(key));\n}\n\nfunction clamp(value: number, min = -Infinity, max = Infinity): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n createNumberInputScope,\n NumberInput,\n NumberInput as Root,\n NumberInputItem,\n NumberInputItem as Item,\n NumberInputIncrementButton,\n NumberInputIncrementButton as IncrementButton,\n NumberInputDecrementButton,\n NumberInputDecrementButton as DecrementButton,\n type NumberInputProps,\n type NumberInputItemProps,\n type NumberInputIncrementButtonProps,\n type NumberInputDecrementButtonProps,\n};\n"],"mappings":"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","names":["React","createContextScope","useComposedRefs","composeEventHandlers","Primitive","useControllableState","jsx","NUMBER_INPUT_NAME","createNumberInputContext","createNumberInputScope","createContextScope","createInputScope","useInputScope","NumberInputProvider","useNumberInputContext","NumberInput","numberInputProps","__scopeNumberInput","ariaDecrementLabel","ariaIncrementLabel","defaultValue","disabled","formatOptions","id","locale","max","min","onChange","readOnly","step","valueProp","props","inputScope","inputRef","value","setValue","useControllableState","thousandSeparator","decimalSeparator","getNumberFormatSeparators","formatValue","inputValue","parseValue","clamp","cleanedValue","normalizedValue","normalizeInputValue","parsedValue","changeNumberValue","operation","inputElement","currentValue","newValue","handleIncrement","number","handleDecrement","handleIncrementToMax","handleDecrementToMin","Input","NUMBER_INPUT_ITEM_NAME","NumberInputItem","forwardedRef","onIncrement","onDecrement","onIncrementToMax","onDecrementToMin","composedNumberInputRef","useComposedRefs","handleBlur","event","numericValue","formattedValue","handleKeyDown","handleKeyDownPrevent","isNumberKey","isModifierKey","isFunctionKey","handleKeyDownEnter","handleWheel","handleReset","form","InputItem","composeEventHandlers","chain","NUMBER_INPUT_BUTTON_IMPL_NAME","NumberInputButtonImpl","timeoutIdRef","startActionInterval","callback","repeatAction","clearActionInterval","handlePointerDown","handleContextMenu","Primitive","NUMBER_INPUT_INCREMENT_BUTTON_NAME","NumberInputIncrementButton","NUMBER_INPUT_DECREMENT_BUTTON_NAME","NumberInputDecrementButton","callbacks","args","separatorOptions","part","key"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","../../src/react/calendar.tsx"],"names":["Chevron","orientation","props","jsx","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"],"mappings":"AAAA,22BAAY,CAAC,yDAAgD,iCAA8B,yDAA0C,uECE9G,kDAQhB,mDAOA,+CAWM,SAHJA,CAAAA,CAAQ,CAAE,WAAA,CAAAC,CAAAA,CAAa,GAAGC,CAAM,CAAA,CAAyE,CAChH,MAAA,CAAQD,CAAAA,CAAa,CACnB,IAAK,IAAA,CACH,OAAOE,6BAAAA,yBAACC,CAAA,CAAc,SAAA,CAAU,QAAA,CAAU,GAAGF,CAAAA,CAAO,CAAA,
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","../../src/react/calendar.tsx"],"names":["Chevron","orientation","props","jsx","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/calendar.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up': {\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n }\n\n case 'down': {\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n }\n\n case 'left': {\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n }\n\n case 'right': {\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n }\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up'
|
|
1
|
+
{"version":3,"sources":["../../src/react/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type CustomComponents,\n type DateRange,\n DayPicker,\n type DayPickerProps,\n SelectionState,\n UI,\n} from 'react-day-picker';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n DotFilledIcon,\n} from '@radix-ui/react-icons';\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '@/react/button';\n\n/* -----------------------------------------------------------------------------\n * Component: Chevron\n * -------------------------------------------------------------------------- */\n\nfunction Chevron({ orientation, ...props }: React.ComponentProps<CustomComponents['Chevron']>): React.JSX.Element {\n switch (orientation) {\n case 'up': {\n return <ChevronUpIcon className=\"size-4\" {...props} />;\n }\n\n case 'down': {\n return <ChevronDownIcon className=\"size-4\" {...props} />;\n }\n\n case 'left': {\n return <ChevronLeftIcon className=\"size-4\" {...props} />;\n }\n\n case 'right': {\n return <ChevronRightIcon className=\"size-4\" {...props} />;\n }\n\n default:\n return <DotFilledIcon className=\"size-4\" {...props} />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DayButton\n * -------------------------------------------------------------------------- */\n\nfunction DayButton({\n day: _,\n modifiers,\n className,\n ...props\n}: React.ComponentProps<CustomComponents['DayButton']>): React.JSX.Element {\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useEffect(() => {\n if (modifiers.focused) {\n buttonRef.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={buttonRef}\n className={cn(\n 'focus-visible:-outline-offset-2',\n (!modifiers.selected || modifiers.range_middle) && !modifiers.today && 'hover:bg-transparent',\n modifiers.today && !modifiers.selected && 'bg-accent',\n modifiers.outside && (!modifiers.selected || modifiers.range_middle) && 'text-opacity-30',\n className,\n )}\n size=\"icon-sm\"\n variant={modifiers.selected && !modifiers.range_middle ? 'default' : 'ghost'}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Calendar\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps;\n\nfunction Calendar({ className, classNames, ...props }: CalendarProps): React.JSX.Element {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n [UI.ButtonPrevious]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none start-0',\n }),\n [UI.ButtonNext]: buttonVariants({\n size: 'icon-xs',\n variant: 'outline',\n className: 'absolute shadow-none end-0',\n }),\n [UI.Root]: 'inline-grid gap-4',\n [UI.Chevron]: '',\n [UI.Day]: 'py-0',\n [UI.DayButton]: 'border border-transparent hover:border-primary',\n [UI.CaptionLabel]: 'inline-flex items-center',\n [UI.Dropdowns]: 'inline-flex items-center gap-2',\n [UI.Dropdown]: 'appearance-none opacity-0 absolute size-full',\n [UI.DropdownRoot]: 'relative inline-flex',\n [UI.Footer]: 'text-sm',\n [UI.MonthGrid]: 'block table-fixed border-collapse relative [&>thead]:block space-y-2',\n [UI.MonthCaption]: 'flex text-sm font-medium w-full justify-center',\n [UI.MonthsDropdown]: '',\n [UI.Month]: 'grid gap-4 grid-rows-[2rem_1fr]',\n [UI.Months]: 'relative flex flex-wrap gap-4',\n [UI.Nav]: '-mr-4',\n [UI.Week]: 'flex',\n [UI.Weeks]: 'block space-y-2',\n [UI.Weekday]: 'text-muted-foreground text-sm font-normal flex-1',\n [UI.Weekdays]: 'flex',\n [UI.WeekNumber]: 'text-foreground/50 text-xs size-9 text-center',\n [UI.WeekNumberHeader]: '',\n [UI.YearsDropdown]: '',\n [SelectionState.range_start]: 'bg-gradient-to-r from-transparent to-50% to-accent rounded-l-md',\n [SelectionState.range_middle]: 'bg-accent first:rounded-l-md last:rounded-r-md',\n [SelectionState.range_end]: 'bg-gradient-to-l from-transparent to-50% to-accent rounded-r-md',\n [SelectionState.selected]: '',\n ...classNames,\n }}\n components={{ Chevron, DayButton }}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Calendar, type CalendarProps, type DateRange };\n"],"mappings":"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","names":["React","DayPicker","SelectionState","UI","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronUpIcon","DotFilledIcon","jsx","Chevron","orientation","props","ChevronUpIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","DotFilledIcon","DayButton","_","modifiers","className","buttonRef","Button","cn","Calendar","classNames","DayPicker","UI","buttonVariants","SelectionState"]}
|
package/dist/react/command.d.cts
CHANGED
|
@@ -10,7 +10,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
|
10
10
|
ref?: React.Ref<HTMLDivElement>;
|
|
11
11
|
} & {
|
|
12
12
|
asChild?: boolean;
|
|
13
|
-
}, "key" |
|
|
13
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
14
14
|
label?: string;
|
|
15
15
|
shouldFilter?: boolean;
|
|
16
16
|
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
@@ -28,7 +28,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
|
|
|
28
28
|
ref?: React.Ref<HTMLInputElement>;
|
|
29
29
|
} & {
|
|
30
30
|
asChild?: boolean;
|
|
31
|
-
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "
|
|
31
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
32
32
|
value?: string;
|
|
33
33
|
onValueChange?: (search: string) => void;
|
|
34
34
|
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -39,7 +39,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
|
39
39
|
ref?: React.Ref<HTMLDivElement>;
|
|
40
40
|
} & {
|
|
41
41
|
asChild?: boolean;
|
|
42
|
-
}, "key" |
|
|
42
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
43
43
|
label?: string;
|
|
44
44
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
45
45
|
type CommandEmptyProps = React.ComponentPropsWithoutRef<typeof Command$1.Empty>;
|
|
@@ -49,7 +49,7 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
|
|
|
49
49
|
ref?: React.Ref<HTMLDivElement>;
|
|
50
50
|
} & {
|
|
51
51
|
asChild?: boolean;
|
|
52
|
-
}, "key" |
|
|
52
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
53
|
type CommandGroupProps = React.ComponentPropsWithoutRef<typeof Command$1.Group>;
|
|
54
54
|
declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
55
55
|
children?: React.ReactNode;
|
|
@@ -57,7 +57,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
|
57
57
|
ref?: React.Ref<HTMLDivElement>;
|
|
58
58
|
} & {
|
|
59
59
|
asChild?: boolean;
|
|
60
|
-
}, "key" |
|
|
60
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
|
|
61
61
|
heading?: React.ReactNode;
|
|
62
62
|
value?: string;
|
|
63
63
|
forceMount?: boolean;
|
|
@@ -67,7 +67,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
|
|
|
67
67
|
ref?: React.Ref<HTMLDivElement>;
|
|
68
68
|
} & {
|
|
69
69
|
asChild?: boolean;
|
|
70
|
-
}, "key" |
|
|
70
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
71
71
|
alwaysRender?: boolean;
|
|
72
72
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
73
73
|
type CommandItemProps = React.ComponentPropsWithoutRef<typeof Command$1.Item>;
|
|
@@ -77,7 +77,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
|
|
|
77
77
|
ref?: React.Ref<HTMLDivElement>;
|
|
78
78
|
} & {
|
|
79
79
|
asChild?: boolean;
|
|
80
|
-
}, "key" |
|
|
80
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "value" | "disabled"> & {
|
|
81
81
|
disabled?: boolean;
|
|
82
82
|
onSelect?: (value: string) => void;
|
|
83
83
|
value?: string;
|
|
@@ -91,7 +91,7 @@ declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
|
|
|
91
91
|
ref?: React.Ref<HTMLDivElement>;
|
|
92
92
|
} & {
|
|
93
93
|
asChild?: boolean;
|
|
94
|
-
}, "key" |
|
|
94
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
95
95
|
progress?: number;
|
|
96
96
|
label?: string;
|
|
97
97
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
package/dist/react/command.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
|
10
10
|
ref?: React.Ref<HTMLDivElement>;
|
|
11
11
|
} & {
|
|
12
12
|
asChild?: boolean;
|
|
13
|
-
}, "key" |
|
|
13
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
14
14
|
label?: string;
|
|
15
15
|
shouldFilter?: boolean;
|
|
16
16
|
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
@@ -28,7 +28,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
|
|
|
28
28
|
ref?: React.Ref<HTMLInputElement>;
|
|
29
29
|
} & {
|
|
30
30
|
asChild?: boolean;
|
|
31
|
-
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "
|
|
31
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
32
32
|
value?: string;
|
|
33
33
|
onValueChange?: (search: string) => void;
|
|
34
34
|
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -39,7 +39,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
|
39
39
|
ref?: React.Ref<HTMLDivElement>;
|
|
40
40
|
} & {
|
|
41
41
|
asChild?: boolean;
|
|
42
|
-
}, "key" |
|
|
42
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
43
43
|
label?: string;
|
|
44
44
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
45
45
|
type CommandEmptyProps = React.ComponentPropsWithoutRef<typeof Command$1.Empty>;
|
|
@@ -49,7 +49,7 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
|
|
|
49
49
|
ref?: React.Ref<HTMLDivElement>;
|
|
50
50
|
} & {
|
|
51
51
|
asChild?: boolean;
|
|
52
|
-
}, "key" |
|
|
52
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
53
|
type CommandGroupProps = React.ComponentPropsWithoutRef<typeof Command$1.Group>;
|
|
54
54
|
declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
55
55
|
children?: React.ReactNode;
|
|
@@ -57,7 +57,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
|
57
57
|
ref?: React.Ref<HTMLDivElement>;
|
|
58
58
|
} & {
|
|
59
59
|
asChild?: boolean;
|
|
60
|
-
}, "key" |
|
|
60
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
|
|
61
61
|
heading?: React.ReactNode;
|
|
62
62
|
value?: string;
|
|
63
63
|
forceMount?: boolean;
|
|
@@ -67,7 +67,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
|
|
|
67
67
|
ref?: React.Ref<HTMLDivElement>;
|
|
68
68
|
} & {
|
|
69
69
|
asChild?: boolean;
|
|
70
|
-
}, "key" |
|
|
70
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
71
71
|
alwaysRender?: boolean;
|
|
72
72
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
73
73
|
type CommandItemProps = React.ComponentPropsWithoutRef<typeof Command$1.Item>;
|
|
@@ -77,7 +77,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
|
|
|
77
77
|
ref?: React.Ref<HTMLDivElement>;
|
|
78
78
|
} & {
|
|
79
79
|
asChild?: boolean;
|
|
80
|
-
}, "key" |
|
|
80
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "value" | "disabled"> & {
|
|
81
81
|
disabled?: boolean;
|
|
82
82
|
onSelect?: (value: string) => void;
|
|
83
83
|
value?: string;
|
|
@@ -91,7 +91,7 @@ declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
|
|
|
91
91
|
ref?: React.Ref<HTMLDivElement>;
|
|
92
92
|
} & {
|
|
93
93
|
asChild?: boolean;
|
|
94
|
-
}, "key" |
|
|
94
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
95
95
|
progress?: number;
|
|
96
96
|
label?: string;
|
|
97
97
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","../../src/react/data-table.tsx"],"names":["DataTableViewOptions","table","jsxs","DropdownMenu","jsx","DropdownMenuTrigger","Button","MixerHorizontalIcon","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","column","DropdownMenuCheckboxItem","value","DataTablePagination","className","props","cn","Select","SelectTrigger","SelectValue","SelectContent","pageSize","SelectItem","DoubleArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","DoubleArrowRightIcon","DataTableColumnHeader","title","SortIcon","DropdownMenuItem","ArrowUpIcon","ArrowDownIcon","EyeNoneIcon","sorted","CaretSortIcon"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n EyeNoneIcon,\n MixerHorizontalIcon,\n} from '@radix-ui/react-icons';\nimport type * as ReactTable from '@tanstack/react-table';\nimport { cn } from '@/lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/react/dropdown-menu';\nimport { Button } from '@/react/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/react/select';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\ninterface DataTableViewOptionsProps<TData> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"ml-auto hidden h-8 lg:flex\" size=\"sm\" variant=\"outline\">\n <MixerHorizontalIcon className=\"mr-2 size-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\ninterface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTablePagination<TData>({\n table,\n className,\n ...props\n}: DataTablePaginationProps<TData>): React.JSX.Element {\n return (\n <div className={cn('flex items-center justify-between px-2', className)} {...props}>\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={String(pageSize)}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-28 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\ninterface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element {\n if (!column.getCanSort()) {\n return <div className={className}>{title}</div>;\n }\n\n return (\n <div className={cn('flex items-center space-x-2', className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"data-[state=open]:bg-accent -ml-3\" size=\"xs\" variant=\"ghost\">\n <span>{title}</span>\n <SortIcon sorted={column.getIsSorted()} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ArrowUpIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ArrowDownIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeNoneIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nfunction SortIcon({ sorted }: { sorted: false | ReactTable.SortDirection }): React.JSX.Element {\n switch (sorted) {\n case 'desc':\n return <ArrowDownIcon className=\"ml-2 size-4\" />;\n\n case 'asc':\n return <ArrowUpIcon className=\"ml-2 size-4\" />;\n\n default:\n return <CaretSortIcon className=\"ml-2 size-4\" />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n DataTableViewOptions,\n DataTablePagination,\n DataTableColumnHeader,\n type DataTableViewOptionsProps,\n type DataTablePaginationProps,\n type DataTableColumnHeaderProps,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","../../src/react/data-table.tsx"],"names":["DataTableViewOptions","table","jsxs","DropdownMenu","jsx","DropdownMenuTrigger","Button","MixerHorizontalIcon","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","column","DropdownMenuCheckboxItem","value","DataTablePagination","className","props","cn","Select","SelectTrigger","SelectValue","SelectContent","pageSize","SelectItem","DoubleArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","DoubleArrowRightIcon","DataTableColumnHeader","title","SortIcon","DropdownMenuItem","ArrowUpIcon","ArrowDownIcon","EyeNoneIcon","sorted","CaretSortIcon"],"mappings":"AAAA,qFAAY,CAAC,yDAAqE,yDAAoF,yDAA0C,iCAA8B,yDAA0C,mDCajR,+CA2BC,SAJCA,CAAAA,CAA4B,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAwD,CACnG,OACEC,8BAAAA,mBAACC,CAAA,CACC,QAAA,CAAA,CAAAC,6BAAAA,mBAACC,CAAA,CAAoB,OAAA,CAAO,CAAA,CAAA,CAC1B,QAAA,CAAAH,8BAAAA,mBAACI,CAAA,CAAO,SAAA,CAAU,4BAAA,CAA6B,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,SAAA,CAC/D,QAAA,CAAA,CAAAF,6BAAAA,+BAACG,CAAA,CAAoB,SAAA,CAAU,aAAA,CAAc,CAAA,CAAE,MAAA,CAAA,CAEjD,CAAA,CACF,CAAA,CACAL,8BAAAA,mBAACM,CAAA,CAAoB,KAAA,CAAM,KAAA,CAAM,SAAA,CAAU,MAAA,CACzC,QAAA,CAAA,CAAAJ,6BAAAA,mBAACK,CAAA,CAAkB,QAAA,CAAA,gBAAA,CAAc,CAAA,CACjCL,6BAAAA,mBAACM,CAAA,CAAA,CAAsB,CAAA,CACtBT,CAAAA,CACE,aAAA,CAAc,CAAA,CACd,MAAA,CAAQU,CAAAA,EAAW,OAAOA,CAAAA,CAAO,UAAA,CAAe,GAAA,EAAeA,CAAAA,CAAO,UAAA,CAAW,CAAC,CAAA,CAClF,GAAA,CAAKA,CAAAA,EAEFP,6BAAAA,mBAACQ,CAAA,CAEC,OAAA,CAASD,CAAAA,CAAO,YAAA,CAAa,CAAA,CAC7B,SAAA,CAAU,YAAA,CACV,eAAA,CAAkBE,CAAAA,EAAU,CAC1BF,CAAAA,CAAO,gBAAA,CAAiB,CAAA,CAAQE,CAAM,CACxC,CAAA,CAEC,QAAA,CAAAF,CAAAA,CAAO,EAAA,CAAA,CAPHA,CAAAA,CAAO,EAQd,CAEH,CAAA,CAAA,CACL,CAAA,CAAA,CACF,CAEJ,CAUA,SAASG,CAAAA,CAA2B,CAClC,KAAA,CAAAb,CAAAA,CACA,SAAA,CAAAc,CAAAA,CACA,GAAGC,CACL,CAAA,CAAuD,CACrD,OACEd,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAWe,iCAAAA,wCAAG,CAA0CF,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAC3E,QAAA,CAAA,CAAAd,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,sCAAA,CACZ,QAAA,CAAA,CAAAD,CAAAA,CAAM,2BAAA,CAA4B,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,MAAA,CAAKA,CAAAA,CAAM,mBAAA,CAAoB,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,mBAAA,CAAA,CAChG,CAAA,CACAC,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,0CAAA,CACb,QAAA,CAAA,CAAAA,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAA,CAAAE,6BAAAA,GAAC,CAAA,CAAE,SAAA,CAAU,qBAAA,CAAsB,QAAA,CAAA,eAAA,CAAa,CAAA,CAChDF,8BAAAA,mBAACgB,CAAA,CACC,KAAA,CAAO,MAAA,CAAOjB,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,CAClD,aAAA,CAAgBY,CAAAA,EAAU,CACxBZ,CAAAA,CAAM,WAAA,CAAY,MAAA,CAAOY,CAAK,CAAC,CACjC,CAAA,CAEA,QAAA,CAAA,CAAAT,6BAAAA,mBAACe,CAAA,CAAc,SAAA,CAAU,UAAA,CACvB,QAAA,CAAAf,6BAAAA,mBAACgB,CAAA,CAAY,WAAA,CAAanB,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAE,UAAA,CAAW,QAAA,CAAU,CAAA,CAClE,CAAA,CACAG,6BAAAA,mBAACiB,CAAA,CAAc,IAAA,CAAK,KAAA,CACjB,QAAA,CAAA,CAAC,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAE,CAAA,CAAE,GAAA,CAAKC,CAAAA,EACzBlB,6BAAAA,mBAACmB,CAAA,CAA0B,KAAA,CAAO,MAAA,CAAOD,CAAQ,CAAA,CAC9C,QAAA,CAAAA,CAAAA,CAAAA,CADcA,CAEjB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACApB,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,2DAAA,CAA4D,QAAA,CAAA,CAAA,OAAA,CACnED,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAE,UAAA,CAAW,SAAA,CAAY,CAAA,CAAE,MAAA,CAAKA,CAAAA,CAAM,YAAA,CAAa,CAAA,CAAA,CAC1E,CAAA,CACAC,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,6BAAA,CACb,QAAA,CAAA,CAAAA,8BAAAA,mBAACI,CAAA,CACC,SAAA,CAAU,gBAAA,CACV,QAAA,CAAU,CAACL,CAAAA,CAAM,kBAAA,CAAmB,CAAA,CACpC,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS,CAAA,CAAA,EAAM,CACbA,CAAAA,CAAM,YAAA,CAAa,CAAC,CACtB,CAAA,CAEA,QAAA,CAAA,CAAAG,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAC1CA,6BAAAA,+BAACoB,CAAA,CAAoB,SAAA,CAAU,QAAA,CAAS,CAAA,CAAA,CAC1C,CAAA,CACAtB,8BAAAA,mBAACI,CAAA,CACC,QAAA,CAAU,CAACL,CAAAA,CAAM,kBAAA,CAAmB,CAAA,CACpC,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS,CAAA,CAAA,EAAM,CACbA,CAAAA,CAAM,YAAA,CAAa,CACrB,CAAA,CAEA,QAAA,CAAA,CAAAG,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,qBAAA,CAAmB,CAAA,CAC7CA,6BAAAA,2BAACqB,CAAA,CAAgB,SAAA,CAAU,QAAA,CAAS,CAAA,CAAA,CACtC,CAAA,CACAvB,8BAAAA,mBAACI,CAAA,CACC,QAAA,CAAU,CAACL,CAAAA,CAAM,cAAA,CAAe,CAAA,CAChC,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS,CAAA,CAAA,EAAM,CACbA,CAAAA,CAAM,QAAA,CAAS,CACjB,CAAA,CAEA,QAAA,CAAA,CAAAG,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,CAAA,CACzCA,6BAAAA,4BAACsB,CAAA,CAAiB,SAAA,CAAU,QAAA,CAAS,CAAA,CAAA,CACvC,CAAA,CACAxB,8BAAAA,mBAACI,CAAA,CACC,SAAA,CAAU,gBAAA,CACV,QAAA,CAAU,CAACL,CAAAA,CAAM,cAAA,CAAe,CAAA,CAChC,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,SAAA,CACR,OAAA,CAAS,CAAA,CAAA,EAAM,CACbA,CAAAA,CAAM,YAAA,CAAaA,CAAAA,CAAM,YAAA,CAAa,CAAA,CAAI,CAAC,CAC7C,CAAA,CAEA,QAAA,CAAA,CAAAG,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,iBAAA,CAAe,CAAA,CACzCA,6BAAAA,gCAACuB,CAAA,CAAqB,SAAA,CAAU,QAAA,CAAS,CAAA,CAAA,CAC3C,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAWA,SAASC,CAAAA,CAAqC,CAC5C,MAAA,CAAAjB,CAAAA,CACA,KAAA,CAAAkB,CAAAA,CACA,SAAA,CAAAd,CACF,CAAA,CAAiE,CAC/D,OAAKJ,CAAAA,CAAO,UAAA,CAAW,CAAA,CAKrBP,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAWa,iCAAAA,6BAAG,CAA+BF,CAAS,CAAA,CACzD,QAAA,CAAAb,8BAAAA,mBAACC,CAAA,CACC,QAAA,CAAA,CAAAC,6BAAAA,mBAACC,CAAA,CAAoB,OAAA,CAAO,CAAA,CAAA,CAC1B,QAAA,CAAAH,8BAAAA,mBAACI,CAAA,CAAO,SAAA,CAAU,mCAAA,CAAoC,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CACtE,QAAA,CAAA,CAAAF,6BAAAA,MAAC,CAAA,CAAM,QAAA,CAAAyB,CAAAA,CAAM,CAAA,CACbzB,6BAAAA,CAAC0B,CAAA,CAAS,MAAA,CAAQnB,CAAAA,CAAO,WAAA,CAAY,CAAA,CAAG,CAAA,CAAA,CAC1C,CAAA,CACF,CAAA,CACAT,8BAAAA,mBAACM,CAAA,CAAoB,KAAA,CAAM,OAAA,CACzB,QAAA,CAAA,CAAAN,8BAAAA,mBAAC6B,CAAA,CACC,OAAA,CAAS,CAAA,CAAA,EAAM,CACbpB,CAAAA,CAAO,aAAA,CAAc,CAAA,CAAK,CAC5B,CAAA,CAEA,QAAA,CAAA,CAAAP,6BAAAA,uBAAC4B,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,CAAA,CAAE,KAAA,CAAA,CAEpE,CAAA,CACA9B,8BAAAA,mBAAC6B,CAAA,CACC,OAAA,CAAS,CAAA,CAAA,EAAM,CACbpB,CAAAA,CAAO,aAAA,CAAc,CAAA,CAAI,CAC3B,CAAA,CAEA,QAAA,CAAA,CAAAP,6BAAAA,yBAAC6B,CAAA,CAAc,SAAA,CAAU,wCAAA,CAAyC,CAAA,CAAE,MAAA,CAAA,CAEtE,CAAA,CACA7B,6BAAAA,mBAACM,CAAA,CAAA,CAAsB,CAAA,CACvBR,8BAAAA,mBAAC6B,CAAA,CACC,OAAA,CAAS,CAAA,CAAA,EAAM,CACbpB,CAAAA,CAAO,gBAAA,CAAiB,CAAA,CAAK,CAC/B,CAAA,CAEA,QAAA,CAAA,CAAAP,6BAAAA,uBAAC8B,CAAA,CAAY,SAAA,CAAU,wCAAA,CAAyC,CAAA,CAAE,MAAA,CAAA,CAEpE,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAxCO9B,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAWW,CAAAA,CAAY,QAAA,CAAAc,CAAAA,CAAM,CA0C7C,CAEA,SAASC,CAAAA,CAAS,CAAE,MAAA,CAAAK,CAAO,CAAA,CAAoE,CAC7F,MAAA,CAAQA,CAAAA,CAAQ,CACd,IAAK,MAAA,CACH,OAAO/B,6BAAAA,yBAAC6B,CAAA,CAAc,SAAA,CAAU,aAAA,CAAc,CAAA,CAGhD,IAAK,KAAA,CACH,OAAO7B,6BAAAA,uBAAC4B,CAAA,CAAY,SAAA,CAAU,aAAA,CAAc,CAAA,CAG9C,OAAA,CACE,OAAO5B,6BAAAA,yBAACgC,CAAA,CAAc,SAAA,CAAU,aAAA,CAAc,CAClD,CACF,CAAA,qGAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/react/data-table.cjs","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n EyeNoneIcon,\n MixerHorizontalIcon,\n} from '@radix-ui/react-icons';\nimport type * as ReactTable from '@tanstack/react-table';\nimport { cn } from '@/lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/react/dropdown-menu';\nimport { Button } from '@/react/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/react/select';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\ninterface DataTableViewOptionsProps<TData> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"ml-auto hidden h-8 lg:flex\" size=\"sm\" variant=\"outline\">\n <MixerHorizontalIcon className=\"mr-2 size-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\ninterface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {\n table: ReactTable.Table<TData>;\n}\n\nfunction DataTablePagination<TData>({\n table,\n className,\n ...props\n}: DataTablePaginationProps<TData>): React.JSX.Element {\n return (\n <div className={cn('flex items-center justify-between px-2', className)} {...props}>\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={String(pageSize)}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-28 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanPreviousPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"hidden lg:flex\"\n disabled={!table.getCanNextPage()}\n size=\"icon-xs\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\ninterface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element {\n if (!column.getCanSort()) {\n return <div className={className}>{title}</div>;\n }\n\n return (\n <div className={cn('flex items-center space-x-2', className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"data-[state=open]:bg-accent -ml-3\" size=\"xs\" variant=\"ghost\">\n <span>{title}</span>\n <SortIcon sorted={column.getIsSorted()} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ArrowUpIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ArrowDownIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeNoneIcon className=\"text-muted-foreground/70 mr-2 size-3.5\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nfunction SortIcon({ sorted }: { sorted: false | ReactTable.SortDirection }): React.JSX.Element {\n switch (sorted) {\n case 'desc': {\n return <ArrowDownIcon className=\"ml-2 size-4\" />;\n }\n\n case 'asc': {\n return <ArrowUpIcon className=\"ml-2 size-4\" />;\n }\n\n default:\n return <CaretSortIcon className=\"ml-2 size-4\" />;\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n DataTableViewOptions,\n DataTablePagination,\n DataTableColumnHeader,\n type DataTableViewOptionsProps,\n type DataTablePaginationProps,\n type DataTableColumnHeaderProps,\n};\n"]}
|