@fluentui/react-spinbutton 0.0.0-nightly-20230317-1454.1 → 0.0.0-nightly-20230321-0440.1
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/CHANGELOG.json +17 -17
- package/CHANGELOG.md +11 -11
- package/lib/SpinButton.js +1 -1
- package/lib/SpinButton.js.map +1 -1
- package/lib/SpinButtonField.js +1 -1
- package/lib/SpinButtonField.js.map +1 -1
- package/lib/components/SpinButton/SpinButton.js +6 -6
- package/lib/components/SpinButton/SpinButton.js.map +1 -1
- package/lib/components/SpinButton/SpinButton.types.js +1 -1
- package/lib/components/SpinButton/SpinButton.types.js.map +1 -1
- package/lib/components/SpinButton/index.js +5 -5
- package/lib/components/SpinButton/index.js.map +1 -1
- package/lib/components/SpinButton/renderSpinButton.js +11 -3
- package/lib/components/SpinButton/renderSpinButton.js.map +1 -1
- package/lib/components/SpinButton/useSpinButton.js +57 -56
- package/lib/components/SpinButton/useSpinButton.js.map +1 -1
- package/lib/components/SpinButton/useSpinButtonStyles.js +14 -14
- package/lib/components/SpinButton/useSpinButtonStyles.js.map +1 -1
- package/lib/components/SpinButtonField/SpinButtonField.js +3 -2
- package/lib/components/SpinButtonField/SpinButtonField.js.map +1 -1
- package/lib/components/SpinButtonField/index.js +1 -1
- package/lib/components/SpinButtonField/index.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/utils/clamp.js +1 -1
- package/lib/utils/clamp.js.map +1 -1
- package/lib/utils/getBound.js +4 -4
- package/lib/utils/getBound.js.map +1 -1
- package/lib/utils/index.js +3 -3
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/precision.js +7 -6
- package/lib/utils/precision.js.map +1 -1
- package/lib-commonjs/SpinButton.js +4 -5
- package/lib-commonjs/SpinButton.js.map +1 -1
- package/lib-commonjs/SpinButtonField.js +4 -5
- package/lib-commonjs/SpinButtonField.js.map +1 -1
- package/lib-commonjs/components/SpinButton/SpinButton.js +20 -19
- package/lib-commonjs/components/SpinButton/SpinButton.js.map +1 -1
- package/lib-commonjs/components/SpinButton/SpinButton.types.js +2 -5
- package/lib-commonjs/components/SpinButton/SpinButton.types.js.map +1 -1
- package/lib-commonjs/components/SpinButton/index.js +8 -9
- package/lib-commonjs/components/SpinButton/index.js.map +1 -1
- package/lib-commonjs/components/SpinButton/renderSpinButton.js +24 -13
- package/lib-commonjs/components/SpinButton/renderSpinButton.js.map +1 -1
- package/lib-commonjs/components/SpinButton/useSpinButton.js +259 -246
- package/lib-commonjs/components/SpinButton/useSpinButton.js.map +1 -1
- package/lib-commonjs/components/SpinButton/useSpinButtonStyles.js +246 -506
- package/lib-commonjs/components/SpinButton/useSpinButtonStyles.js.map +1 -1
- package/lib-commonjs/components/SpinButtonField/SpinButtonField.js +11 -17
- package/lib-commonjs/components/SpinButtonField/SpinButtonField.js.map +1 -1
- package/lib-commonjs/components/SpinButtonField/index.js +4 -5
- package/lib-commonjs/components/SpinButtonField/index.js.map +1 -1
- package/lib-commonjs/index.js +49 -21
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/utils/clamp.js +21 -28
- package/lib-commonjs/utils/clamp.js.map +1 -1
- package/lib-commonjs/utils/getBound.js +14 -16
- package/lib-commonjs/utils/getBound.js.map +1 -1
- package/lib-commonjs/utils/index.js +6 -7
- package/lib-commonjs/utils/index.js.map +1 -1
- package/lib-commonjs/utils/precision.js +33 -33
- package/lib-commonjs/utils/precision.js.map +1 -1
- package/package.json +12 -11
- package/.swcrc +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","getPartitionedNativeProps","mergeCallbacks","resolveShorthand","useControllableState","useTimeout","ArrowUp","ArrowDown","End","Enter","Escape","Home","PageDown","PageUp","calculatePrecision","precisionRound","getBound","clamp","ChevronUp16Regular","ChevronDown16Regular","useOverrides_unstable","useOverrides","DEFAULT_SPIN_DELAY_MS","MIN_SPIN_DELAY_MS","MAX_SPIN_TIME_MS","lerp","start","end","percent","useSpinButton_unstable","props","ref","nativeProps","primarySlotTagName","excludedPropNames","overrides","value","displayValue","defaultValue","min","max","step","stepPage","precision","precisionFromProps","onChange","size","appearance","inputDefaultAppearance","root","input","incrementButton","decrementButton","useMemo","Math","currentValue","setCurrentValue","state","defaultState","initialState","isControlled","undefined","textValue","setTextValue","useState","keyboardSpinState","setKeyboardSpinState","internalState","useRef","spinState","spinTime","spinDelay","atBound","setStepTimeout","clearStepTimeout","stepValue","e","direction","startFrom","startValue","current","num","parseFloat","isNaN","val","dir","stepSize","stepStart","nullStep","commit","newValue","Number","handleInputChange","previousTextValue","String","target","handleIncrementMouseDown","handleDecrementMouseDown","handleStepMouseUpOrLeave","handleBlur","handleKeyDown","nextKeyboardSpinState","key","preventDefault","shiftKey","handleKeyUp","newDisplayValue","valueChanged","displayValueChanged","roundedValue","nextValue","components","required","defaultProps","autoComplete","role","type","primary","tabIndex","children","createElement","disabled","valueToDisplay","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"sources":["../../../src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n resolveShorthand,\n useControllableState,\n useTimeout,\n} from '@fluentui/react-utilities';\nimport { ArrowUp, ArrowDown, End, Enter, Escape, Home, PageDown, PageUp } from '@fluentui/keyboard-keys';\nimport {\n SpinButtonProps,\n SpinButtonState,\n SpinButtonSpinState,\n SpinButtonChangeEvent,\n SpinButtonBounds,\n} from './SpinButton.types';\nimport { calculatePrecision, precisionRound, getBound, clamp } from '../../utils/index';\nimport { ChevronUp16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\nimport { useOverrides_unstable as useOverrides } from '@fluentui/react-shared-contexts';\n\ntype InternalState = {\n value: number | null;\n spinState: SpinButtonSpinState;\n spinTime: number;\n spinDelay: number;\n previousTextValue?: string;\n atBound: SpinButtonBounds;\n};\n\nconst DEFAULT_SPIN_DELAY_MS = 150;\nconst MIN_SPIN_DELAY_MS = 80;\nconst MAX_SPIN_TIME_MS = 1000;\n\n// This is here to give an ease for the mouse held down case.\n// Exact easing it to be defined. Once it is we'll likely\n// pull this out into a util function in the SpinButton package.\nconst lerp = (start: number, end: number, percent: number): number => start + (end - start) * percent;\n\n/**\n * Create the state required to render SpinButton.\n *\n * The returned state can be modified with hooks such as useSpinButtonStyles_unstable,\n * before being passed to renderSpinButton_unstable.\n *\n * @param props - props from this instance of SpinButton\n * @param ref - reference to root HTMLElement of SpinButton\n */\nexport const useSpinButton_unstable = (props: SpinButtonProps, ref: React.Ref<HTMLInputElement>): SpinButtonState => {\n const nativeProps = getPartitionedNativeProps({\n props,\n primarySlotTagName: 'input',\n excludedPropNames: ['defaultValue', 'max', 'min', 'onChange', 'size', 'value'],\n });\n\n const overrides = useOverrides();\n\n const {\n value,\n displayValue,\n defaultValue,\n min,\n max,\n step = 1,\n stepPage = 1,\n precision: precisionFromProps,\n onChange,\n size = 'medium',\n appearance = overrides.inputDefaultAppearance ?? 'outline',\n root,\n input,\n incrementButton,\n decrementButton,\n } = props;\n\n const precision = React.useMemo(() => {\n return precisionFromProps ?? Math.max(calculatePrecision(step), 0);\n }, [precisionFromProps, step]);\n\n const [currentValue, setCurrentValue] = useControllableState({\n state: value,\n defaultState: defaultValue,\n initialState: 0,\n });\n\n const isControlled = value !== undefined;\n\n const [textValue, setTextValue] = React.useState<string | undefined>(undefined);\n const [keyboardSpinState, setKeyboardSpinState] = React.useState<SpinButtonSpinState>('rest');\n\n const internalState = React.useRef<InternalState>({\n value: currentValue,\n spinState: 'rest',\n spinTime: 0,\n spinDelay: DEFAULT_SPIN_DELAY_MS,\n atBound: currentValue !== null ? getBound(precisionRound(currentValue, precision), min, max) : 'none',\n });\n\n const [setStepTimeout, clearStepTimeout] = useTimeout();\n\n const stepValue = (\n e: SpinButtonChangeEvent,\n direction: 'up' | 'down' | 'upPage' | 'downPage',\n startFrom?: string,\n ) => {\n let startValue = internalState.current.value;\n if (startFrom) {\n const num = parseFloat(startFrom);\n if (!isNaN(num)) {\n startValue = num;\n }\n }\n const val = startValue;\n const dir = direction === 'up' || direction === 'upPage' ? 1 : -1;\n const stepSize = direction === 'upPage' || direction === 'downPage' ? stepPage : step;\n\n if (val === null) {\n const stepStart = min === undefined ? 0 : min;\n const nullStep = clamp(stepStart + stepSize * dir, min, max);\n commit(e, nullStep);\n return;\n }\n\n let newValue = val + stepSize * dir;\n if (!Number.isNaN(newValue)) {\n newValue = clamp(newValue, min, max);\n }\n\n commit(e, newValue);\n\n if (internalState.current.spinState !== 'rest') {\n setStepTimeout(() => {\n // Ease the step speed a bit\n internalState.current.spinTime += internalState.current.spinDelay;\n internalState.current.spinDelay = lerp(\n DEFAULT_SPIN_DELAY_MS,\n MIN_SPIN_DELAY_MS,\n internalState.current.spinTime / MAX_SPIN_TIME_MS,\n );\n stepValue(e, direction);\n }, internalState.current.spinDelay);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!internalState.current.previousTextValue) {\n internalState.current.previousTextValue = textValue ?? String(currentValue);\n }\n const newValue = e.target.value;\n setTextValue(newValue);\n };\n\n const handleIncrementMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n internalState.current.spinState = 'up';\n stepValue(e, 'up');\n };\n\n const handleDecrementMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n internalState.current.spinState = 'down';\n stepValue(e, 'down');\n };\n\n const handleStepMouseUpOrLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n clearStepTimeout();\n internalState.current.spinState = 'rest';\n internalState.current.spinDelay = DEFAULT_SPIN_DELAY_MS;\n internalState.current.spinTime = 0;\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n commit(e, currentValue, textValue);\n internalState.current.previousTextValue = undefined;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n let nextKeyboardSpinState: SpinButtonSpinState = 'rest';\n\n if (e.key === ArrowUp) {\n stepValue(e, 'up', textValue);\n nextKeyboardSpinState = 'up';\n } else if (e.key === ArrowDown) {\n stepValue(e, 'down', textValue);\n nextKeyboardSpinState = 'down';\n } else if (e.key === PageUp) {\n e.preventDefault();\n stepValue(e, 'upPage', textValue);\n nextKeyboardSpinState = 'up';\n } else if (e.key === PageDown) {\n e.preventDefault();\n stepValue(e, 'downPage', textValue);\n nextKeyboardSpinState = 'down';\n } else if (!e.shiftKey && e.key === Home && min !== undefined) {\n commit(e, min);\n nextKeyboardSpinState = 'down';\n } else if (!e.shiftKey && e.key === End && max !== undefined) {\n commit(e, max);\n nextKeyboardSpinState = 'up';\n } else if (e.key === Enter) {\n commit(e, currentValue, textValue);\n internalState.current.previousTextValue = undefined;\n } else if (e.key === Escape) {\n if (internalState.current.previousTextValue) {\n setTextValue(undefined);\n internalState.current.previousTextValue = undefined;\n }\n }\n\n if (keyboardSpinState !== nextKeyboardSpinState) {\n setKeyboardSpinState(nextKeyboardSpinState);\n }\n };\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (keyboardSpinState !== 'rest') {\n setKeyboardSpinState('rest');\n internalState.current.spinState = 'rest';\n }\n };\n\n const commit = (e: SpinButtonChangeEvent, newValue?: number | null, newDisplayValue?: string) => {\n const valueChanged = newValue !== undefined && currentValue !== newValue;\n const displayValueChanged =\n newDisplayValue !== undefined &&\n internalState.current.previousTextValue !== undefined &&\n internalState.current.previousTextValue !== newDisplayValue;\n\n let roundedValue;\n if (valueChanged) {\n roundedValue = precisionRound(newValue!, precision);\n setCurrentValue(roundedValue);\n } else if (displayValueChanged && !isControlled) {\n const nextValue = parseFloat(newDisplayValue as string);\n if (!isNaN(nextValue)) {\n setCurrentValue(precisionRound(nextValue, precision));\n }\n }\n\n if (valueChanged || displayValueChanged) {\n onChange?.(e, { value: roundedValue, displayValue: newDisplayValue });\n }\n\n setTextValue(undefined);\n };\n\n const state: SpinButtonState = {\n size,\n appearance,\n spinState: keyboardSpinState,\n atBound: internalState.current.atBound,\n\n components: {\n root: 'span',\n input: 'input',\n incrementButton: 'button',\n decrementButton: 'button',\n },\n root: resolveShorthand(root, {\n required: true,\n defaultProps: nativeProps.root,\n }),\n input: resolveShorthand(input, {\n required: true,\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n }),\n incrementButton: resolveShorthand(incrementButton, {\n required: true,\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Increment value',\n type: 'button',\n },\n }),\n decrementButton: resolveShorthand(decrementButton, {\n required: true,\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n }),\n };\n\n let valueToDisplay;\n if (textValue !== undefined) {\n valueToDisplay = textValue;\n } else if (value === null || currentValue === null) {\n valueToDisplay = displayValue ?? '';\n internalState.current.value = null;\n internalState.current.atBound = 'none';\n } else {\n const roundedValue = precisionRound(currentValue, precision);\n internalState.current.value = roundedValue;\n internalState.current.atBound = getBound(roundedValue, min, max);\n if (isControlled) {\n valueToDisplay = displayValue ?? String(roundedValue);\n } else {\n valueToDisplay = String(roundedValue);\n }\n }\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\n state.input['aria-valuenow'] = currentValue ?? undefined;\n state.input['aria-valuetext'] = state.input['aria-valuetext'] ?? ((value !== undefined && displayValue) || undefined);\n state.input.onChange = mergeCallbacks(state.input.onChange, handleInputChange);\n state.input.onBlur = mergeCallbacks(state.input.onBlur, handleBlur);\n state.input.onKeyDown = mergeCallbacks(state.input.onKeyDown, handleKeyDown);\n state.input.onKeyUp = mergeCallbacks(state.input.onKeyUp, handleKeyUp);\n\n state.incrementButton.onMouseDown = mergeCallbacks(handleIncrementMouseDown, state.incrementButton.onMouseDown);\n state.incrementButton.onMouseUp = mergeCallbacks(state.incrementButton.onMouseUp, handleStepMouseUpOrLeave);\n state.incrementButton.onMouseLeave = mergeCallbacks(state.incrementButton.onMouseLeave, handleStepMouseUpOrLeave);\n\n state.decrementButton.onMouseDown = mergeCallbacks(handleDecrementMouseDown, state.decrementButton.onMouseDown);\n state.decrementButton.onMouseUp = mergeCallbacks(state.decrementButton.onMouseUp, handleStepMouseUpOrLeave);\n state.decrementButton.onMouseLeave = mergeCallbacks(state.decrementButton.onMouseLeave, handleStepMouseUpOrLeave);\n\n return state;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","getPartitionedNativeProps","mergeCallbacks","resolveShorthand","useControllableState","useTimeout","ArrowUp","ArrowDown","End","Enter","Escape","Home","PageDown","PageUp","calculatePrecision","precisionRound","getBound","clamp","ChevronUp16Regular","ChevronDown16Regular","useOverrides_unstable","useOverrides","DEFAULT_SPIN_DELAY_MS","MIN_SPIN_DELAY_MS","MAX_SPIN_TIME_MS","lerp","start","end","percent","useSpinButton_unstable","props","ref","nativeProps","primarySlotTagName","excludedPropNames","overrides","value","displayValue","defaultValue","min","max","step","stepPage","precision","precisionFromProps","onChange","size","appearance","_a","inputDefaultAppearance","root","input","incrementButton","decrementButton","useMemo","Math","currentValue","setCurrentValue","state","defaultState","initialState","isControlled","undefined","textValue","setTextValue","useState","keyboardSpinState","setKeyboardSpinState","internalState","useRef","spinState","spinTime","spinDelay","atBound","setStepTimeout","clearStepTimeout","stepValue","e","direction","startFrom","startValue","current","num","parseFloat","isNaN","val","dir","stepSize","stepStart","nullStep","commit","newValue","Number","handleInputChange","previousTextValue","String","target","handleIncrementMouseDown","handleDecrementMouseDown","handleStepMouseUpOrLeave","handleBlur","handleKeyDown","nextKeyboardSpinState","key","preventDefault","shiftKey","handleKeyUp","newDisplayValue","valueChanged","displayValueChanged","roundedValue","nextValue","components","required","defaultProps","autoComplete","role","type","primary","tabIndex","children","createElement","disabled","valueToDisplay","_b","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"sources":["../../../../../../../../../packages/react-components/react-spinbutton/src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n resolveShorthand,\n useControllableState,\n useTimeout,\n} from '@fluentui/react-utilities';\nimport { ArrowUp, ArrowDown, End, Enter, Escape, Home, PageDown, PageUp } from '@fluentui/keyboard-keys';\nimport {\n SpinButtonProps,\n SpinButtonState,\n SpinButtonSpinState,\n SpinButtonChangeEvent,\n SpinButtonBounds,\n} from './SpinButton.types';\nimport { calculatePrecision, precisionRound, getBound, clamp } from '../../utils/index';\nimport { ChevronUp16Regular, ChevronDown16Regular } from '@fluentui/react-icons';\nimport { useOverrides_unstable as useOverrides } from '@fluentui/react-shared-contexts';\n\ntype InternalState = {\n value: number | null;\n spinState: SpinButtonSpinState;\n spinTime: number;\n spinDelay: number;\n previousTextValue?: string;\n atBound: SpinButtonBounds;\n};\n\nconst DEFAULT_SPIN_DELAY_MS = 150;\nconst MIN_SPIN_DELAY_MS = 80;\nconst MAX_SPIN_TIME_MS = 1000;\n\n// This is here to give an ease for the mouse held down case.\n// Exact easing it to be defined. Once it is we'll likely\n// pull this out into a util function in the SpinButton package.\nconst lerp = (start: number, end: number, percent: number): number => start + (end - start) * percent;\n\n/**\n * Create the state required to render SpinButton.\n *\n * The returned state can be modified with hooks such as useSpinButtonStyles_unstable,\n * before being passed to renderSpinButton_unstable.\n *\n * @param props - props from this instance of SpinButton\n * @param ref - reference to root HTMLElement of SpinButton\n */\nexport const useSpinButton_unstable = (props: SpinButtonProps, ref: React.Ref<HTMLInputElement>): SpinButtonState => {\n const nativeProps = getPartitionedNativeProps({\n props,\n primarySlotTagName: 'input',\n excludedPropNames: ['defaultValue', 'max', 'min', 'onChange', 'size', 'value'],\n });\n\n const overrides = useOverrides();\n\n const {\n value,\n displayValue,\n defaultValue,\n min,\n max,\n step = 1,\n stepPage = 1,\n precision: precisionFromProps,\n onChange,\n size = 'medium',\n appearance = overrides.inputDefaultAppearance ?? 'outline',\n root,\n input,\n incrementButton,\n decrementButton,\n } = props;\n\n const precision = React.useMemo(() => {\n return precisionFromProps ?? Math.max(calculatePrecision(step), 0);\n }, [precisionFromProps, step]);\n\n const [currentValue, setCurrentValue] = useControllableState({\n state: value,\n defaultState: defaultValue,\n initialState: 0,\n });\n\n const isControlled = value !== undefined;\n\n const [textValue, setTextValue] = React.useState<string | undefined>(undefined);\n const [keyboardSpinState, setKeyboardSpinState] = React.useState<SpinButtonSpinState>('rest');\n\n const internalState = React.useRef<InternalState>({\n value: currentValue,\n spinState: 'rest',\n spinTime: 0,\n spinDelay: DEFAULT_SPIN_DELAY_MS,\n atBound: currentValue !== null ? getBound(precisionRound(currentValue, precision), min, max) : 'none',\n });\n\n const [setStepTimeout, clearStepTimeout] = useTimeout();\n\n const stepValue = (\n e: SpinButtonChangeEvent,\n direction: 'up' | 'down' | 'upPage' | 'downPage',\n startFrom?: string,\n ) => {\n let startValue = internalState.current.value;\n if (startFrom) {\n const num = parseFloat(startFrom);\n if (!isNaN(num)) {\n startValue = num;\n }\n }\n const val = startValue;\n const dir = direction === 'up' || direction === 'upPage' ? 1 : -1;\n const stepSize = direction === 'upPage' || direction === 'downPage' ? stepPage : step;\n\n if (val === null) {\n const stepStart = min === undefined ? 0 : min;\n const nullStep = clamp(stepStart + stepSize * dir, min, max);\n commit(e, nullStep);\n return;\n }\n\n let newValue = val + stepSize * dir;\n if (!Number.isNaN(newValue)) {\n newValue = clamp(newValue, min, max);\n }\n\n commit(e, newValue);\n\n if (internalState.current.spinState !== 'rest') {\n setStepTimeout(() => {\n // Ease the step speed a bit\n internalState.current.spinTime += internalState.current.spinDelay;\n internalState.current.spinDelay = lerp(\n DEFAULT_SPIN_DELAY_MS,\n MIN_SPIN_DELAY_MS,\n internalState.current.spinTime / MAX_SPIN_TIME_MS,\n );\n stepValue(e, direction);\n }, internalState.current.spinDelay);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!internalState.current.previousTextValue) {\n internalState.current.previousTextValue = textValue ?? String(currentValue);\n }\n const newValue = e.target.value;\n setTextValue(newValue);\n };\n\n const handleIncrementMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n internalState.current.spinState = 'up';\n stepValue(e, 'up');\n };\n\n const handleDecrementMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n internalState.current.spinState = 'down';\n stepValue(e, 'down');\n };\n\n const handleStepMouseUpOrLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n clearStepTimeout();\n internalState.current.spinState = 'rest';\n internalState.current.spinDelay = DEFAULT_SPIN_DELAY_MS;\n internalState.current.spinTime = 0;\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n commit(e, currentValue, textValue);\n internalState.current.previousTextValue = undefined;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n let nextKeyboardSpinState: SpinButtonSpinState = 'rest';\n\n if (e.key === ArrowUp) {\n stepValue(e, 'up', textValue);\n nextKeyboardSpinState = 'up';\n } else if (e.key === ArrowDown) {\n stepValue(e, 'down', textValue);\n nextKeyboardSpinState = 'down';\n } else if (e.key === PageUp) {\n e.preventDefault();\n stepValue(e, 'upPage', textValue);\n nextKeyboardSpinState = 'up';\n } else if (e.key === PageDown) {\n e.preventDefault();\n stepValue(e, 'downPage', textValue);\n nextKeyboardSpinState = 'down';\n } else if (!e.shiftKey && e.key === Home && min !== undefined) {\n commit(e, min);\n nextKeyboardSpinState = 'down';\n } else if (!e.shiftKey && e.key === End && max !== undefined) {\n commit(e, max);\n nextKeyboardSpinState = 'up';\n } else if (e.key === Enter) {\n commit(e, currentValue, textValue);\n internalState.current.previousTextValue = undefined;\n } else if (e.key === Escape) {\n if (internalState.current.previousTextValue) {\n setTextValue(undefined);\n internalState.current.previousTextValue = undefined;\n }\n }\n\n if (keyboardSpinState !== nextKeyboardSpinState) {\n setKeyboardSpinState(nextKeyboardSpinState);\n }\n };\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (keyboardSpinState !== 'rest') {\n setKeyboardSpinState('rest');\n internalState.current.spinState = 'rest';\n }\n };\n\n const commit = (e: SpinButtonChangeEvent, newValue?: number | null, newDisplayValue?: string) => {\n const valueChanged = newValue !== undefined && currentValue !== newValue;\n const displayValueChanged =\n newDisplayValue !== undefined &&\n internalState.current.previousTextValue !== undefined &&\n internalState.current.previousTextValue !== newDisplayValue;\n\n let roundedValue;\n if (valueChanged) {\n roundedValue = precisionRound(newValue!, precision);\n setCurrentValue(roundedValue);\n } else if (displayValueChanged && !isControlled) {\n const nextValue = parseFloat(newDisplayValue as string);\n if (!isNaN(nextValue)) {\n setCurrentValue(precisionRound(nextValue, precision));\n }\n }\n\n if (valueChanged || displayValueChanged) {\n onChange?.(e, { value: roundedValue, displayValue: newDisplayValue });\n }\n\n setTextValue(undefined);\n };\n\n const state: SpinButtonState = {\n size,\n appearance,\n spinState: keyboardSpinState,\n atBound: internalState.current.atBound,\n\n components: {\n root: 'span',\n input: 'input',\n incrementButton: 'button',\n decrementButton: 'button',\n },\n root: resolveShorthand(root, {\n required: true,\n defaultProps: nativeProps.root,\n }),\n input: resolveShorthand(input, {\n required: true,\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n }),\n incrementButton: resolveShorthand(incrementButton, {\n required: true,\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Increment value',\n type: 'button',\n },\n }),\n decrementButton: resolveShorthand(decrementButton, {\n required: true,\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n }),\n };\n\n let valueToDisplay;\n if (textValue !== undefined) {\n valueToDisplay = textValue;\n } else if (value === null || currentValue === null) {\n valueToDisplay = displayValue ?? '';\n internalState.current.value = null;\n internalState.current.atBound = 'none';\n } else {\n const roundedValue = precisionRound(currentValue, precision);\n internalState.current.value = roundedValue;\n internalState.current.atBound = getBound(roundedValue, min, max);\n if (isControlled) {\n valueToDisplay = displayValue ?? String(roundedValue);\n } else {\n valueToDisplay = String(roundedValue);\n }\n }\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\n state.input['aria-valuenow'] = currentValue ?? undefined;\n state.input['aria-valuetext'] = state.input['aria-valuetext'] ?? ((value !== undefined && displayValue) || undefined);\n state.input.onChange = mergeCallbacks(state.input.onChange, handleInputChange);\n state.input.onBlur = mergeCallbacks(state.input.onBlur, handleBlur);\n state.input.onKeyDown = mergeCallbacks(state.input.onKeyDown, handleKeyDown);\n state.input.onKeyUp = mergeCallbacks(state.input.onKeyUp, handleKeyUp);\n\n state.incrementButton.onMouseDown = mergeCallbacks(handleIncrementMouseDown, state.incrementButton.onMouseDown);\n state.incrementButton.onMouseUp = mergeCallbacks(state.incrementButton.onMouseUp, handleStepMouseUpOrLeave);\n state.incrementButton.onMouseLeave = mergeCallbacks(state.incrementButton.onMouseLeave, handleStepMouseUpOrLeave);\n\n state.decrementButton.onMouseDown = mergeCallbacks(handleDecrementMouseDown, state.decrementButton.onMouseDown);\n state.decrementButton.onMouseUp = mergeCallbacks(state.decrementButton.onMouseUp, handleStepMouseUpOrLeave);\n state.decrementButton.onMouseLeave = mergeCallbacks(state.decrementButton.onMouseLeave, handleStepMouseUpOrLeave);\n\n return state;\n};\n"],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { __resetStyles, __styles, mergeClasses, shorthands } from
|
|
2
|
-
import { tokens, typographyStyles } from
|
|
1
|
+
import { __resetStyles, __styles, mergeClasses, shorthands } from '@griffel/react';
|
|
2
|
+
import { tokens, typographyStyles } from '@fluentui/react-theme';
|
|
3
3
|
export const spinButtonClassNames = {
|
|
4
|
-
root:
|
|
5
|
-
input:
|
|
6
|
-
incrementButton:
|
|
7
|
-
decrementButton:
|
|
4
|
+
root: 'fui-SpinButton',
|
|
5
|
+
input: 'fui-SpinButton__input',
|
|
6
|
+
incrementButton: 'fui-SpinButton__incrementButton',
|
|
7
|
+
decrementButton: 'fui-SpinButton__decrementButton'
|
|
8
8
|
};
|
|
9
9
|
const spinButtonExtraClassNames = {
|
|
10
|
-
buttonActive:
|
|
10
|
+
buttonActive: 'fui-SpinButton__button_active'
|
|
11
11
|
};
|
|
12
12
|
const fieldHeights = {
|
|
13
|
-
small:
|
|
14
|
-
medium:
|
|
13
|
+
small: '24px',
|
|
14
|
+
medium: '32px'
|
|
15
15
|
};
|
|
16
16
|
const useRootClassName = /*#__PURE__*/__resetStyles("rkqmps4", "r1trw52p", [".rkqmps4{display:inline-grid;grid-template-columns:1fr 24px;grid-template-rows:1fr 1fr;-webkit-column-gap:var(--spacingHorizontalXS);column-gap:var(--spacingHorizontalXS);row-gap:0;position:relative;isolation:isolate;background-color:var(--colorNeutralBackground1);min-height:32px;padding:0 0 0 var(--spacingHorizontalMNudge);border-radius:var(--borderRadiusMedium);}", ".rkqmps4::before{content:\"\";box-sizing:border-box;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10;border:1px solid var(--colorNeutralStroke1);border-bottom-color:var(--colorNeutralStrokeAccessible);border-radius:var(--borderRadiusMedium);}", ".rkqmps4::after{box-sizing:border-box;content:\"\";position:absolute;right:0;bottom:0;left:0;z-index:20;height:max(2px, var(--borderRadiusMedium));border-bottom-left-radius:var(--borderRadiusMedium);border-bottom-right-radius:var(--borderRadiusMedium);border-bottom:2px solid var(--colorCompoundBrandStroke);-webkit-clip-path:inset(calc(100% - 2px) 0 0 0);clip-path:inset(calc(100% - 2px) 0 0 0);-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);transition-property:transform;transition-duration:var(--durationUltraFast);transition-delay:var(--curveAccelerateMid);}", "@media screen and (prefers-reduced-motion: reduce){.rkqmps4::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", ".rkqmps4:focus-within::after{-webkit-transform:scaleX(1);-moz-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1);transition-property:transform;transition-duration:var(--durationNormal);transition-delay:var(--curveDecelerateMid);}", "@media screen and (prefers-reduced-motion: reduce){.rkqmps4:focus-within::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", ".rkqmps4:focus-within:active::after{border-bottom-color:var(--colorCompoundBrandStrokePressed);}", ".rkqmps4:focus-within{outline:2px solid transparent;}", ".r1trw52p{display:inline-grid;grid-template-columns:1fr 24px;grid-template-rows:1fr 1fr;-webkit-column-gap:var(--spacingHorizontalXS);column-gap:var(--spacingHorizontalXS);row-gap:0;position:relative;isolation:isolate;background-color:var(--colorNeutralBackground1);min-height:32px;padding:0 var(--spacingHorizontalMNudge) 0 0;border-radius:var(--borderRadiusMedium);}", ".r1trw52p::before{content:\"\";box-sizing:border-box;position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none;z-index:10;border:1px solid var(--colorNeutralStroke1);border-bottom-color:var(--colorNeutralStrokeAccessible);border-radius:var(--borderRadiusMedium);}", ".r1trw52p::after{box-sizing:border-box;content:\"\";position:absolute;left:0;bottom:0;right:0;z-index:20;height:max(2px, var(--borderRadiusMedium));border-bottom-right-radius:var(--borderRadiusMedium);border-bottom-left-radius:var(--borderRadiusMedium);border-bottom:2px solid var(--colorCompoundBrandStroke);-webkit-clip-path:inset(calc(100% - 2px) 0 0 0);clip-path:inset(calc(100% - 2px) 0 0 0);-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);transition-property:transform;transition-duration:var(--durationUltraFast);transition-delay:var(--curveAccelerateMid);}", "@media screen and (prefers-reduced-motion: reduce){.r1trw52p::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", ".r1trw52p:focus-within::after{-webkit-transform:scaleX(1);-moz-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1);transition-property:transform;transition-duration:var(--durationNormal);transition-delay:var(--curveDecelerateMid);}", "@media screen and (prefers-reduced-motion: reduce){.r1trw52p:focus-within::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", ".r1trw52p:focus-within:active::after{border-bottom-color:var(--colorCompoundBrandStrokePressed);}", ".r1trw52p:focus-within{outline:2px solid transparent;}"]);
|
|
17
17
|
const useRootStyles = /*#__PURE__*/__styles({
|
|
@@ -243,15 +243,15 @@ export const useSpinButtonStyles_unstable = state => {
|
|
|
243
243
|
size
|
|
244
244
|
} = state;
|
|
245
245
|
const disabled = state.input.disabled;
|
|
246
|
-
const invalid = `${state.input[
|
|
247
|
-
const filled = appearance.startsWith(
|
|
246
|
+
const invalid = `${state.input['aria-invalid']}` === 'true';
|
|
247
|
+
const filled = appearance.startsWith('filled');
|
|
248
248
|
const rootStyles = useRootStyles();
|
|
249
249
|
const buttonStyles = useButtonStyles();
|
|
250
250
|
const buttonDisabledStyles = useButtonDisabledStyles();
|
|
251
251
|
const inputStyles = useInputStyles();
|
|
252
|
-
state.root.className = mergeClasses(spinButtonClassNames.root, useRootClassName(), rootStyles[size], rootStyles[appearance], filled && rootStyles.filled, !disabled && appearance ===
|
|
253
|
-
state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState ===
|
|
254
|
-
state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState ===
|
|
252
|
+
state.root.className = mergeClasses(spinButtonClassNames.root, useRootClassName(), rootStyles[size], rootStyles[appearance], filled && rootStyles.filled, !disabled && appearance === 'outline' && rootStyles.outlineInteractive, !disabled && appearance === 'underline' && rootStyles.underlineInteractive, !disabled && filled && rootStyles.filledInteractive, !disabled && invalid && rootStyles.invalid, disabled && rootStyles.disabled, state.root.className);
|
|
253
|
+
state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, (atBound === 'max' || atBound === 'both') && buttonDisabledStyles.base, (atBound === 'max' || atBound === 'both') && buttonDisabledStyles[appearance], state.incrementButton.className);
|
|
254
|
+
state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, (atBound === 'min' || atBound === 'both') && buttonDisabledStyles.base, (atBound === 'min' || atBound === 'both') && buttonDisabledStyles[appearance], state.decrementButton.className);
|
|
255
255
|
state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);
|
|
256
256
|
return state;
|
|
257
257
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__resetStyles","__styles","mergeClasses","shorthands","tokens","typographyStyles","spinButtonClassNames","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","useRootStyles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","Budzafs","r59vdv","n07z76","ck0cow","underlineInteractive","B3778ie","d9w3h3","Bl18szs","B4j8arr","filled","Bdkvgpv","m598lv","qa3bma","Bbv0w2i","Bq4z7u6","Bk5zm6e","Bqjgrrk","Bm6vgfq","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","Bqenvij","decrementButtonSmall","r4wkhp","B95qlz1","p743kt","B7xitij","B6siaa6","Ba9qmo4","Dyrjrp","drw0cw","idzz8t","useButtonDisabledStyles","base","eoavqd","useSpinButtonStyles_unstable","state","appearance","atBound","spinState","size","startsWith","rootStyles","buttonStyles","buttonDisabledStyles","inputStyles","className"],"sources":["../../../src/components/SpinButton/useSpinButtonStyles.ts"],"sourcesContent":["import { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport type { SpinButtonSlots, SpinButtonState } from './SpinButton.types';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\nexport const spinButtonClassNames: SlotClassNames<SpinButtonSlots> = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton',\n};\n\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active',\n};\n\nconst fieldHeights = {\n small: '24px',\n medium: '32px',\n};\n\nconst useRootClassName = makeResetStyles({\n display: 'inline-grid',\n gridTemplateColumns: `1fr 24px`,\n gridTemplateRows: '1fr 1fr',\n columnGap: tokens.spacingHorizontalXS,\n rowGap: 0,\n position: 'relative',\n isolation: 'isolate',\n\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\n\n // Apply border styles on the ::before pseudo element.\n // We cannot use ::after since that is used for selection.\n // Using the pseudo element allows us to place the border\n // above content in the component which ensures the buttons\n // line up visually with the border as expected. Without this\n // there is a bit of a gap which can become very noticeable\n // at high zoom or when OS zoom levels are not divisible by 2\n // (e.g., 150% on Windows in Firefox)\n // This is most noticeable on the \"outline\" appearance which is\n // also the default so it feels worth the extra ceremony to get right.\n '::before': {\n content: '\"\"',\n boxSizing: 'border-box',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'none',\n zIndex: 10,\n border: `1px solid ${tokens.colorNeutralStroke1}`,\n borderBottomColor: tokens.colorNeutralStrokeAccessible,\n borderRadius: tokens.borderRadiusMedium,\n },\n\n '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\n\n // Maintaining the correct corner radius:\n // Use the whole border-radius as the height and only put radii on the bottom corners.\n // (Otherwise the radius would be automatically reduced to fit available space.)\n // max() ensures the focus border still shows up even if someone sets tokens.borderRadiusMedium to 0.\n height: `max(2px, ${tokens.borderRadiusMedium})`,\n borderBottomLeftRadius: tokens.borderRadiusMedium,\n borderBottomRightRadius: tokens.borderRadiusMedium,\n\n // Flat 2px border:\n // By default borderBottom will cause little \"horns\" on the ends. The clipPath trims them off.\n // (This could be done without trimming using `background: linear-gradient(...)`, but using\n // borderBottom makes it easier for people to override the color if needed.)\n borderBottom: `2px solid ${tokens.colorCompoundBrandStroke}`,\n clipPath: 'inset(calc(100% - 2px) 0 0 0)',\n\n // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms',\n },\n },\n\n ':focus-within::after': {\n // Animation for focus IN\n transform: 'scaleX(1)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationNormal,\n transitionDelay: tokens.curveDecelerateMid,\n\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms',\n },\n },\n ':focus-within:active::after': {\n // This is if the user clicks the field again while it's already focused\n borderBottomColor: tokens.colorCompoundBrandStrokePressed,\n },\n ':focus-within': {\n outline: '2px solid transparent',\n },\n});\n\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS,\n },\n\n medium: {\n // set by useRootClassName\n },\n\n outline: {\n // set by useRootClassName\n },\n\n outlineInteractive: {\n ':hover::before': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Hover),\n borderBottomColor: tokens.colorNeutralStrokeAccessibleHover,\n },\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':active,:focus-within': {\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Pressed),\n borderBottomColor: tokens.colorNeutralStrokeAccessiblePressed,\n },\n },\n },\n\n underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n ...shorthands.borderRadius(tokens.borderRadiusNone), // corners look strange if rounded\n },\n },\n\n underlineInteractive: {\n ':hover::before': {\n borderBottomColor: tokens.colorNeutralStrokeAccessibleHover,\n },\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':active,:focus-within': {\n '::before': {\n borderBottomColor: tokens.colorNeutralStrokeAccessiblePressed,\n },\n },\n '::after': shorthands.borderRadius(tokens.borderRadiusNone), // remove rounded corners from focus underline\n },\n\n filled: {\n '::before': {\n ...shorthands.border('1px', 'solid', tokens.colorTransparentStroke),\n },\n },\n\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3,\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1,\n },\n\n filledInteractive: {\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':hover,:focus-within': {\n '::before': {\n // also handles pressed border color (:active)\n ...shorthands.borderColor(tokens.colorTransparentStrokeInteractive),\n },\n },\n },\n\n invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2),\n },\n },\n },\n\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText'),\n },\n },\n },\n});\n\nconst useInputClassName = makeResetStyles({\n gridColumnStart: '1',\n gridColumnEnd: '2',\n gridRowStart: '1',\n gridRowEnd: '3',\n outlineStyle: 'none',\n border: '0',\n padding: '0',\n color: tokens.colorNeutralForeground1,\n // Use literal \"transparent\" (not from the theme) to always let the color from the root show through\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'inherit',\n\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1, // browser style override\n },\n});\n\nconst useInputStyles = makeStyles({\n disabled: {\n color: tokens.colorNeutralForegroundDisabled,\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::placeholder': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n});\n\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n\n outlineStyle: 'none',\n height: '16px',\n\n // Use literal \"transparent\" (not from the theme) to always let the color from the root show through\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n\n ':active': {\n outlineStyle: 'none',\n },\n\n ':enabled': {\n ':hover': {\n cursor: 'pointer',\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorSubtleBackgroundHover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n },\n\n ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled,\n },\n});\n\nconst useButtonStyles = makeStyles({\n increment: {\n gridRowStart: '1',\n borderTopRightRadius: tokens.borderRadiusMedium,\n paddingTop: '4px',\n paddingBottom: '1px',\n },\n decrement: {\n gridRowStart: '2',\n borderBottomRightRadius: tokens.borderRadiusMedium,\n paddingTop: '1px',\n paddingBottom: '4px',\n },\n // Padding values numbers don't align with design specs\n // but visually the padding aligns.\n // The icons are set in a 16x16px square but the artwork is inset from that\n // so these padding values are computed by hand.\n // Additionally the design uses fractional values so these are\n // rounded to the nearest integer.\n incrementButtonSmall: {\n ...shorthands.padding('3px', '6px', '0px', '4px'),\n height: '12px',\n },\n\n decrementButtonSmall: {\n ...shorthands.padding('0px', '6px', '3px', '4px'),\n height: '12px',\n },\n\n outline: {\n // set by useButtonClassName\n },\n\n underline: {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorSubtleBackgroundHover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n 'filled-darker': {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorNeutralBackground3Hover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n 'filled-lighter': {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorNeutralBackground1Hover,\n },\n [`:active,&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground1Pressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n});\n\n// Cannot just disable button as they need to remain\n// exposed to ATs like screen readers.\nconst useButtonDisabledStyles = makeStyles({\n base: {\n cursor: 'not-allowed',\n\n ':hover': {\n cursor: 'not-allowed',\n },\n },\n\n outline: {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n underline: {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n 'filled-darker': {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n 'filled-lighter': {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n});\n\n/**\n * Apply styling to the SpinButton slots based on the state\n */\nexport const useSpinButtonStyles_unstable = (state: SpinButtonState): SpinButtonState => {\n const { appearance, atBound, spinState, size } = state;\n const disabled = state.input.disabled;\n const invalid = `${state.input['aria-invalid']}` === 'true';\n const filled = appearance.startsWith('filled');\n\n const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const buttonDisabledStyles = useButtonDisabledStyles();\n const inputStyles = useInputStyles();\n\n state.root.className = mergeClasses(\n spinButtonClassNames.root,\n useRootClassName(),\n rootStyles[size],\n rootStyles[appearance],\n filled && rootStyles.filled,\n !disabled && appearance === 'outline' && rootStyles.outlineInteractive,\n !disabled && appearance === 'underline' && rootStyles.underlineInteractive,\n !disabled && filled && rootStyles.filledInteractive,\n !disabled && invalid && rootStyles.invalid,\n disabled && rootStyles.disabled,\n state.root.className,\n );\n\n state.incrementButton.className = mergeClasses(\n spinButtonClassNames.incrementButton,\n spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`,\n useBaseButtonClassName(),\n buttonStyles.increment,\n buttonStyles[appearance],\n size === 'small' && buttonStyles.incrementButtonSmall,\n (atBound === 'max' || atBound === 'both') && buttonDisabledStyles.base,\n (atBound === 'max' || atBound === 'both') && buttonDisabledStyles[appearance],\n state.incrementButton.className,\n );\n state.decrementButton.className = mergeClasses(\n spinButtonClassNames.decrementButton,\n spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`,\n useBaseButtonClassName(),\n buttonStyles.decrement,\n buttonStyles[appearance],\n size === 'small' && buttonStyles.decrementButtonSmall,\n (atBound === 'min' || atBound === 'both') && buttonDisabledStyles.base,\n (atBound === 'min' || atBound === 'both') && buttonDisabledStyles[appearance],\n state.decrementButton.className,\n );\n\n state.input.className = mergeClasses(\n spinButtonClassNames.input,\n useInputClassName(),\n disabled && inputStyles.disabled,\n state.input.className,\n );\n\n return state;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["__resetStyles","__styles","mergeClasses","shorthands","tokens","typographyStyles","spinButtonClassNames","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","useRootStyles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","Budzafs","r59vdv","n07z76","ck0cow","underlineInteractive","B3778ie","d9w3h3","Bl18szs","B4j8arr","filled","Bdkvgpv","m598lv","qa3bma","Bbv0w2i","Bq4z7u6","Bk5zm6e","Bqjgrrk","Bm6vgfq","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","Bqenvij","decrementButtonSmall","r4wkhp","B95qlz1","p743kt","B7xitij","B6siaa6","Ba9qmo4","Dyrjrp","drw0cw","idzz8t","useButtonDisabledStyles","base","eoavqd","useSpinButtonStyles_unstable","state","appearance","atBound","spinState","size","startsWith","rootStyles","buttonStyles","buttonDisabledStyles","inputStyles","className"],"sources":["../../../../../../../../../packages/react-components/react-spinbutton/src/components/SpinButton/useSpinButtonStyles.ts"],"sourcesContent":["import { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport type { SpinButtonSlots, SpinButtonState } from './SpinButton.types';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\nexport const spinButtonClassNames: SlotClassNames<SpinButtonSlots> = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton',\n};\n\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active',\n};\n\nconst fieldHeights = {\n small: '24px',\n medium: '32px',\n};\n\nconst useRootClassName = makeResetStyles({\n display: 'inline-grid',\n gridTemplateColumns: `1fr 24px`,\n gridTemplateRows: '1fr 1fr',\n columnGap: tokens.spacingHorizontalXS,\n rowGap: 0,\n position: 'relative',\n isolation: 'isolate',\n\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\n\n // Apply border styles on the ::before pseudo element.\n // We cannot use ::after since that is used for selection.\n // Using the pseudo element allows us to place the border\n // above content in the component which ensures the buttons\n // line up visually with the border as expected. Without this\n // there is a bit of a gap which can become very noticeable\n // at high zoom or when OS zoom levels are not divisible by 2\n // (e.g., 150% on Windows in Firefox)\n // This is most noticeable on the \"outline\" appearance which is\n // also the default so it feels worth the extra ceremony to get right.\n '::before': {\n content: '\"\"',\n boxSizing: 'border-box',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'none',\n zIndex: 10,\n border: `1px solid ${tokens.colorNeutralStroke1}`,\n borderBottomColor: tokens.colorNeutralStrokeAccessible,\n borderRadius: tokens.borderRadiusMedium,\n },\n\n '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\n\n // Maintaining the correct corner radius:\n // Use the whole border-radius as the height and only put radii on the bottom corners.\n // (Otherwise the radius would be automatically reduced to fit available space.)\n // max() ensures the focus border still shows up even if someone sets tokens.borderRadiusMedium to 0.\n height: `max(2px, ${tokens.borderRadiusMedium})`,\n borderBottomLeftRadius: tokens.borderRadiusMedium,\n borderBottomRightRadius: tokens.borderRadiusMedium,\n\n // Flat 2px border:\n // By default borderBottom will cause little \"horns\" on the ends. The clipPath trims them off.\n // (This could be done without trimming using `background: linear-gradient(...)`, but using\n // borderBottom makes it easier for people to override the color if needed.)\n borderBottom: `2px solid ${tokens.colorCompoundBrandStroke}`,\n clipPath: 'inset(calc(100% - 2px) 0 0 0)',\n\n // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms',\n },\n },\n\n ':focus-within::after': {\n // Animation for focus IN\n transform: 'scaleX(1)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationNormal,\n transitionDelay: tokens.curveDecelerateMid,\n\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms',\n },\n },\n ':focus-within:active::after': {\n // This is if the user clicks the field again while it's already focused\n borderBottomColor: tokens.colorCompoundBrandStrokePressed,\n },\n ':focus-within': {\n outline: '2px solid transparent',\n },\n});\n\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS,\n },\n\n medium: {\n // set by useRootClassName\n },\n\n outline: {\n // set by useRootClassName\n },\n\n outlineInteractive: {\n ':hover::before': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Hover),\n borderBottomColor: tokens.colorNeutralStrokeAccessibleHover,\n },\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':active,:focus-within': {\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Pressed),\n borderBottomColor: tokens.colorNeutralStrokeAccessiblePressed,\n },\n },\n },\n\n underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n ...shorthands.borderRadius(tokens.borderRadiusNone), // corners look strange if rounded\n },\n },\n\n underlineInteractive: {\n ':hover::before': {\n borderBottomColor: tokens.colorNeutralStrokeAccessibleHover,\n },\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':active,:focus-within': {\n '::before': {\n borderBottomColor: tokens.colorNeutralStrokeAccessiblePressed,\n },\n },\n '::after': shorthands.borderRadius(tokens.borderRadiusNone), // remove rounded corners from focus underline\n },\n\n filled: {\n '::before': {\n ...shorthands.border('1px', 'solid', tokens.colorTransparentStroke),\n },\n },\n\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3,\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1,\n },\n\n filledInteractive: {\n // DO NOT add a space between the selectors! It changes the behavior of make-styles.\n ':hover,:focus-within': {\n '::before': {\n // also handles pressed border color (:active)\n ...shorthands.borderColor(tokens.colorTransparentStrokeInteractive),\n },\n },\n },\n\n invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2),\n },\n },\n },\n\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText'),\n },\n },\n },\n});\n\nconst useInputClassName = makeResetStyles({\n gridColumnStart: '1',\n gridColumnEnd: '2',\n gridRowStart: '1',\n gridRowEnd: '3',\n outlineStyle: 'none',\n border: '0',\n padding: '0',\n color: tokens.colorNeutralForeground1,\n // Use literal \"transparent\" (not from the theme) to always let the color from the root show through\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'inherit',\n\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1, // browser style override\n },\n});\n\nconst useInputStyles = makeStyles({\n disabled: {\n color: tokens.colorNeutralForegroundDisabled,\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::placeholder': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n});\n\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n\n outlineStyle: 'none',\n height: '16px',\n\n // Use literal \"transparent\" (not from the theme) to always let the color from the root show through\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n\n ':active': {\n outlineStyle: 'none',\n },\n\n ':enabled': {\n ':hover': {\n cursor: 'pointer',\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorSubtleBackgroundHover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n },\n\n ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled,\n },\n});\n\nconst useButtonStyles = makeStyles({\n increment: {\n gridRowStart: '1',\n borderTopRightRadius: tokens.borderRadiusMedium,\n paddingTop: '4px',\n paddingBottom: '1px',\n },\n decrement: {\n gridRowStart: '2',\n borderBottomRightRadius: tokens.borderRadiusMedium,\n paddingTop: '1px',\n paddingBottom: '4px',\n },\n // Padding values numbers don't align with design specs\n // but visually the padding aligns.\n // The icons are set in a 16x16px square but the artwork is inset from that\n // so these padding values are computed by hand.\n // Additionally the design uses fractional values so these are\n // rounded to the nearest integer.\n incrementButtonSmall: {\n ...shorthands.padding('3px', '6px', '0px', '4px'),\n height: '12px',\n },\n\n decrementButtonSmall: {\n ...shorthands.padding('0px', '6px', '3px', '4px'),\n height: '12px',\n },\n\n outline: {\n // set by useButtonClassName\n },\n\n underline: {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorSubtleBackgroundHover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n 'filled-darker': {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorNeutralBackground3Hover,\n },\n ':active': {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n 'filled-lighter': {\n backgroundColor: 'transparent',\n color: tokens.colorNeutralForeground3,\n\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForeground3Hover,\n backgroundColor: tokens.colorNeutralBackground1Hover,\n },\n [`:active,&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForeground3Pressed,\n backgroundColor: tokens.colorNeutralBackground1Pressed,\n },\n },\n ':disabled': {\n color: tokens.colorNeutralForegroundDisabled,\n },\n },\n});\n\n// Cannot just disable button as they need to remain\n// exposed to ATs like screen readers.\nconst useButtonDisabledStyles = makeStyles({\n base: {\n cursor: 'not-allowed',\n\n ':hover': {\n cursor: 'not-allowed',\n },\n },\n\n outline: {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n underline: {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n 'filled-darker': {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n\n 'filled-lighter': {\n color: tokens.colorNeutralForegroundDisabled,\n ':enabled': {\n ':hover': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n ':active': {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n [`&.${spinButtonExtraClassNames.buttonActive}`]: {\n color: tokens.colorNeutralForegroundDisabled,\n backgroundColor: 'transparent',\n },\n },\n },\n});\n\n/**\n * Apply styling to the SpinButton slots based on the state\n */\nexport const useSpinButtonStyles_unstable = (state: SpinButtonState): SpinButtonState => {\n const { appearance, atBound, spinState, size } = state;\n const disabled = state.input.disabled;\n const invalid = `${state.input['aria-invalid']}` === 'true';\n const filled = appearance.startsWith('filled');\n\n const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const buttonDisabledStyles = useButtonDisabledStyles();\n const inputStyles = useInputStyles();\n\n state.root.className = mergeClasses(\n spinButtonClassNames.root,\n useRootClassName(),\n rootStyles[size],\n rootStyles[appearance],\n filled && rootStyles.filled,\n !disabled && appearance === 'outline' && rootStyles.outlineInteractive,\n !disabled && appearance === 'underline' && rootStyles.underlineInteractive,\n !disabled && filled && rootStyles.filledInteractive,\n !disabled && invalid && rootStyles.invalid,\n disabled && rootStyles.disabled,\n state.root.className,\n );\n\n state.incrementButton.className = mergeClasses(\n spinButtonClassNames.incrementButton,\n spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`,\n useBaseButtonClassName(),\n buttonStyles.increment,\n buttonStyles[appearance],\n size === 'small' && buttonStyles.incrementButtonSmall,\n (atBound === 'max' || atBound === 'both') && buttonDisabledStyles.base,\n (atBound === 'max' || atBound === 'both') && buttonDisabledStyles[appearance],\n state.incrementButton.className,\n );\n state.decrementButton.className = mergeClasses(\n spinButtonClassNames.decrementButton,\n spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`,\n useBaseButtonClassName(),\n buttonStyles.decrement,\n buttonStyles[appearance],\n size === 'small' && buttonStyles.decrementButtonSmall,\n (atBound === 'min' || atBound === 'both') && buttonDisabledStyles.base,\n (atBound === 'min' || atBound === 'both') && buttonDisabledStyles[appearance],\n state.decrementButton.className,\n );\n\n state.input.className = mergeClasses(\n spinButtonClassNames.input,\n useInputClassName(),\n disabled && inputStyles.disabled,\n state.input.className,\n );\n\n return state;\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/* eslint-disable deprecation/deprecation */
|
|
2
|
-
import {
|
|
1
|
+
/* eslint-disable deprecation/deprecation */
|
|
2
|
+
import { getDeprecatedFieldClassNames, makeDeprecatedField } from '@fluentui/react-field';
|
|
3
|
+
import { SpinButton, spinButtonClassNames } from '../../SpinButton';
|
|
3
4
|
/** @deprecated Use Field with SpinButton: `<Field><SpinButton /></Field>` */
|
|
4
5
|
export const spinButtonFieldClassNames = /*#__PURE__*/getDeprecatedFieldClassNames(spinButtonClassNames.root);
|
|
5
6
|
/** @deprecated Use Field with SpinButton: `<Field><SpinButton /></Field>` */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getDeprecatedFieldClassNames","makeDeprecatedField","SpinButton","spinButtonClassNames","spinButtonFieldClassNames","root","SpinButtonField"],"sources":["
|
|
1
|
+
{"version":3,"names":["getDeprecatedFieldClassNames","makeDeprecatedField","SpinButton","spinButtonClassNames","spinButtonFieldClassNames","root","SpinButtonField"],"sources":["../../../../../../../../../packages/react-components/react-spinbutton/src/components/SpinButtonField/SpinButtonField.tsx"],"sourcesContent":["/* eslint-disable deprecation/deprecation */\nimport { DeprecatedFieldProps, getDeprecatedFieldClassNames, makeDeprecatedField } from '@fluentui/react-field';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { SpinButton, spinButtonClassNames, SpinButtonProps } from '../../SpinButton';\n\n/** @deprecated Use Field with SpinButton: `<Field><SpinButton /></Field>` */\nexport type SpinButtonFieldProps = DeprecatedFieldProps<SpinButtonProps>;\n/** @deprecated Use Field with SpinButton: `<Field><SpinButton /></Field>` */\nexport const spinButtonFieldClassNames = getDeprecatedFieldClassNames(spinButtonClassNames.root);\n/** @deprecated Use Field with SpinButton: `<Field><SpinButton /></Field>` */\nexport const SpinButtonField: ForwardRefComponent<SpinButtonFieldProps> = makeDeprecatedField(SpinButton);\n"],"mappings":"AAAA;AACA,SAA+BA,4BAA4B,EAAEC,mBAAmB,QAAQ,uBAAuB;AAE/G,SAASC,UAAU,EAAEC,oBAAoB,QAAyB,kBAAkB;AAIpF;AACA,OAAO,MAAMC,yBAAyB,gBAAGJ,4BAA4B,CAACG,oBAAoB,CAACE,IAAI,CAAC;AAChG;AACA,OAAO,MAAMC,eAAe,gBAA8CL,mBAAmB,CAACC,UAAU,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './SpinButtonField';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../packages/react-components/react-spinbutton/src/components/SpinButtonField/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC","sourcesContent":["export * from './SpinButtonField';\n"]}
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SpinButton, renderSpinButton_unstable, spinButtonClassNames, useSpinButtonStyles_unstable, useSpinButton_unstable } from
|
|
1
|
+
export { SpinButton, renderSpinButton_unstable, spinButtonClassNames, useSpinButtonStyles_unstable, useSpinButton_unstable } from './SpinButton';
|
|
2
2
|
// eslint-disable-next-line deprecation/deprecation
|
|
3
|
-
export { SpinButtonField as SpinButtonField_unstable, spinButtonFieldClassNames } from
|
|
3
|
+
export { SpinButtonField as SpinButtonField_unstable, spinButtonFieldClassNames } from './SpinButtonField';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SpinButton","renderSpinButton_unstable","spinButtonClassNames","useSpinButtonStyles_unstable","useSpinButton_unstable","SpinButtonField","SpinButtonField_unstable","spinButtonFieldClassNames"],"sources":["
|
|
1
|
+
{"version":3,"names":["SpinButton","renderSpinButton_unstable","spinButtonClassNames","useSpinButtonStyles_unstable","useSpinButton_unstable","SpinButtonField","SpinButtonField_unstable","spinButtonFieldClassNames"],"sources":["../../../../../../../packages/react-components/react-spinbutton/src/index.ts"],"sourcesContent":["export {\n SpinButton,\n renderSpinButton_unstable,\n spinButtonClassNames,\n useSpinButtonStyles_unstable,\n useSpinButton_unstable,\n} from './SpinButton';\nexport type {\n SpinButtonOnChangeData,\n SpinButtonChangeEvent,\n SpinButtonProps,\n SpinButtonSlots,\n SpinButtonState,\n SpinButtonSpinState,\n SpinButtonBounds,\n} from './SpinButton';\n\n// eslint-disable-next-line deprecation/deprecation\nexport { SpinButtonField as SpinButtonField_unstable, spinButtonFieldClassNames } from './SpinButtonField';\n// eslint-disable-next-line deprecation/deprecation\nexport type { SpinButtonFieldProps as SpinButtonFieldProps_unstable } from './SpinButtonField';\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,yBAAyB,EACzBC,oBAAoB,EACpBC,4BAA4B,EAC5BC,sBAAsB,QACjB,cAAc;AAWrB;AACA,SAASC,eAAe,IAAIC,wBAAwB,EAAEC,yBAAyB,QAAQ,mBAAmB"}
|
package/lib/utils/clamp.js
CHANGED
|
@@ -3,7 +3,7 @@ export const clamp = (value, min, max) => {
|
|
|
3
3
|
if (min !== undefined) {
|
|
4
4
|
if (max !== undefined && min > max) {
|
|
5
5
|
const error = new Error();
|
|
6
|
-
if (process.env.NODE_ENV !==
|
|
6
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
7
7
|
// eslint-disable-next-line no-console
|
|
8
8
|
console.error([`"min" value "${min}" is greater than "max" value "${max}".`, '"min" must be less than or equal to "max".', `Returning value "${value}".`, error.stack].join());
|
|
9
9
|
}
|
package/lib/utils/clamp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clamp","value","min","max","nextValue","undefined","error","Error","process","env","NODE_ENV","console","stack","join","Math"],"sources":["
|
|
1
|
+
{"version":3,"names":["clamp","value","min","max","nextValue","undefined","error","Error","process","env","NODE_ENV","console","stack","join","Math"],"sources":["../../../../../../../../packages/react-components/react-spinbutton/src/utils/clamp.ts"],"sourcesContent":["export const clamp = (value: number, min?: number, max?: number): number => {\n let nextValue = value;\n if (min !== undefined) {\n if (max !== undefined && min > max) {\n const error = new Error();\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(\n [\n `\"min\" value \"${min}\" is greater than \"max\" value \"${max}\".`,\n '\"min\" must be less than or equal to \"max\".',\n `Returning value \"${value}\".`,\n error.stack,\n ].join(),\n );\n }\n return value;\n }\n\n nextValue = Math.max(min, nextValue);\n }\n\n if (max !== undefined) {\n nextValue = Math.min(max, nextValue);\n }\n\n return nextValue;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,KAAK,GAAGA,CAACC,KAAa,EAAEC,GAAY,EAAEC,GAAY,KAAY;EACzE,IAAIC,SAAS,GAAGH,KAAK;EACrB,IAAIC,GAAG,KAAKG,SAAS,EAAE;IACrB,IAAIF,GAAG,KAAKE,SAAS,IAAIH,GAAG,GAAGC,GAAG,EAAE;MAClC,MAAMG,KAAK,GAAG,IAAIC,KAAK,EAAE;MACzB,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzC;QACAC,OAAO,CAACL,KAAK,CACX,CACE,gBAAgBJ,GAAG,kCAAkCC,GAAG,IAAI,EAC5D,4CAA4C,EAC5C,oBAAoBF,KAAK,IAAI,EAC7BK,KAAK,CAACM,KAAK,CACZ,CAACC,IAAI,EAAE,CACT;;MAEH,OAAOZ,KAAK;;IAGdG,SAAS,GAAGU,IAAI,CAACX,GAAG,CAACD,GAAG,EAAEE,SAAS,CAAC;;EAGtC,IAAID,GAAG,KAAKE,SAAS,EAAE;IACrBD,SAAS,GAAGU,IAAI,CAACZ,GAAG,CAACC,GAAG,EAAEC,SAAS,CAAC;;EAGtC,OAAOA,SAAS;AAClB,CAAC"}
|
package/lib/utils/getBound.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export const getBound = (value, min, max) => {
|
|
2
2
|
if (min !== undefined && value === min) {
|
|
3
3
|
if (max === min) {
|
|
4
|
-
return
|
|
4
|
+
return 'both';
|
|
5
5
|
}
|
|
6
|
-
return
|
|
6
|
+
return 'min';
|
|
7
7
|
} else if (max !== undefined && value === max) {
|
|
8
|
-
return
|
|
8
|
+
return 'max';
|
|
9
9
|
}
|
|
10
|
-
return
|
|
10
|
+
return 'none';
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=getBound.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getBound","value","min","max","undefined"],"sources":["
|
|
1
|
+
{"version":3,"names":["getBound","value","min","max","undefined"],"sources":["../../../../../../../../packages/react-components/react-spinbutton/src/utils/getBound.ts"],"sourcesContent":["import type { SpinButtonBounds } from '../SpinButton';\n\nexport const getBound = (value: number, min?: number, max?: number): SpinButtonBounds => {\n if (min !== undefined && value === min) {\n if (max === min) {\n return 'both';\n }\n return 'min';\n } else if (max !== undefined && value === max) {\n return 'max';\n }\n\n return 'none';\n};\n"],"mappings":"AAEA,OAAO,MAAMA,QAAQ,GAAGA,CAACC,KAAa,EAAEC,GAAY,EAAEC,GAAY,KAAsB;EACtF,IAAID,GAAG,KAAKE,SAAS,IAAIH,KAAK,KAAKC,GAAG,EAAE;IACtC,IAAIC,GAAG,KAAKD,GAAG,EAAE;MACf,OAAO,MAAM;;IAEf,OAAO,KAAK;GACb,MAAM,IAAIC,GAAG,KAAKC,SAAS,IAAIH,KAAK,KAAKE,GAAG,EAAE;IAC7C,OAAO,KAAK;;EAGd,OAAO,MAAM;AACf,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from './clamp';
|
|
2
|
+
export * from './getBound';
|
|
3
|
+
export * from './precision';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-spinbutton/src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC","sourcesContent":["export * from './clamp';\nexport * from './getBound';\nexport * from './precision';\n"]}
|
package/lib/utils/precision.js
CHANGED
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
* precision. Otherwise, it calculates the number of digits after
|
|
5
5
|
* the decimal point indicated by a positive precision.
|
|
6
6
|
* @param value - the value to determine the precision of
|
|
7
|
-
*/
|
|
7
|
+
*/
|
|
8
|
+
export function calculatePrecision(value) {
|
|
8
9
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
* Group 1:
|
|
11
|
+
* [1-9]([0]+$) matches trailing zeros
|
|
12
|
+
* Group 2:
|
|
13
|
+
* \.([0-9]*) matches all digits after a decimal point.
|
|
14
|
+
*/
|
|
14
15
|
const groups = /[1-9]([0]+$)|\.([0-9]*)/.exec(String(value));
|
|
15
16
|
if (!groups) {
|
|
16
17
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["calculatePrecision","value","groups","exec","String","length","precisionRound","precision","base","exp","Math","pow","round"],"sources":["
|
|
1
|
+
{"version":3,"names":["calculatePrecision","value","groups","exec","String","length","precisionRound","precision","base","exp","Math","pow","round"],"sources":["../../../../../../../../packages/react-components/react-spinbutton/src/utils/precision.ts"],"sourcesContent":["/**\n * Calculates a number's precision based on the number of trailing\n * zeros if the number does not have a decimal indicated by a negative\n * precision. Otherwise, it calculates the number of digits after\n * the decimal point indicated by a positive precision.\n * @param value - the value to determine the precision of\n */\nexport function calculatePrecision(value: number | string): number {\n /**\n * Group 1:\n * [1-9]([0]+$) matches trailing zeros\n * Group 2:\n * \\.([0-9]*) matches all digits after a decimal point.\n */\n const groups = /[1-9]([0]+$)|\\.([0-9]*)/.exec(String(value));\n if (!groups) {\n return 0;\n }\n if (groups[1]) {\n return -groups[1].length;\n }\n if (groups[2]) {\n return groups[2].length;\n }\n return 0;\n}\n\n/**\n * Rounds a number to a certain level of precision. Accepts negative precision.\n * @param value - The value that is being rounded.\n * @param precision - The number of decimal places to round the number to\n */\nexport function precisionRound(value: number, precision: number, base: number = 10): number {\n const exp = Math.pow(base, precision);\n return Math.round(value * exp) / exp;\n}\n"],"mappings":"AAAA;;;;;;;AAOA,OAAM,SAAUA,kBAAkBA,CAACC,KAAsB;EACvD;;;;;;EAMA,MAAMC,MAAM,GAAG,yBAAyB,CAACC,IAAI,CAACC,MAAM,CAACH,KAAK,CAAC,CAAC;EAC5D,IAAI,CAACC,MAAM,EAAE;IACX,OAAO,CAAC;;EAEV,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE;IACb,OAAO,CAACA,MAAM,CAAC,CAAC,CAAC,CAACG,MAAM;;EAE1B,IAAIH,MAAM,CAAC,CAAC,CAAC,EAAE;IACb,OAAOA,MAAM,CAAC,CAAC,CAAC,CAACG,MAAM;;EAEzB,OAAO,CAAC;AACV;AAEA;;;;;AAKA,OAAM,SAAUC,cAAcA,CAACL,KAAa,EAAEM,SAAiB,EAAEC,IAAA,GAAe,EAAE;EAChF,MAAMC,GAAG,GAAGC,IAAI,CAACC,GAAG,CAACH,IAAI,EAAED,SAAS,CAAC;EACrC,OAAOG,IAAI,CAACE,KAAK,CAACX,KAAK,GAAGQ,GAAG,CAAC,GAAGA,GAAG;AACtC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
+
value: true
|
|
4
5
|
});
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=SpinButton.js.map
|
|
8
|
-
|
|
6
|
+
const tslib_1 = /*#__PURE__*/require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./components/SpinButton/index"), exports);
|
|
9
8
|
//# sourceMappingURL=SpinButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"names":["tslib_1","__exportStar","require","exports"],"sources":["../../../../../../../packages/react-components/react-spinbutton/src/SpinButton.ts"],"sourcesContent":["export * from './components/SpinButton/index';\n"],"mappings":";;;;;;AAAAA,OAAA,CAAAC,YAAA,CAAAC,OAAA,mCAAAC,OAAA"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
+
value: true
|
|
4
5
|
});
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=SpinButtonField.js.map
|
|
8
|
-
|
|
6
|
+
const tslib_1 = /*#__PURE__*/require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./components/SpinButtonField/index"), exports);
|
|
9
8
|
//# sourceMappingURL=SpinButtonField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"names":["tslib_1","__exportStar","require","exports"],"sources":["../../../../../../../packages/react-components/react-spinbutton/src/SpinButtonField.ts"],"sourcesContent":["export * from './components/SpinButtonField/index';\n"],"mappings":";;;;;;AAAAA,OAAA,CAAAC,YAAA,CAAAC,OAAA,wCAAAC,OAAA"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SpinButton", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>SpinButton
|
|
4
|
+
value: true
|
|
8
5
|
});
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
exports.SpinButton = void 0;
|
|
7
|
+
const React = /*#__PURE__*/require("react");
|
|
8
|
+
const useSpinButton_1 = /*#__PURE__*/require("./useSpinButton");
|
|
9
|
+
const renderSpinButton_1 = /*#__PURE__*/require("./renderSpinButton");
|
|
10
|
+
const useSpinButtonStyles_1 = /*#__PURE__*/require("./useSpinButtonStyles");
|
|
11
|
+
const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
|
|
12
|
+
/**
|
|
13
|
+
* A SpinButton allows someone to incrementally adjust a value in small steps.
|
|
14
|
+
*/
|
|
15
|
+
exports.SpinButton = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
16
|
+
const state = useSpinButton_1.useSpinButton_unstable(props, ref);
|
|
17
|
+
useSpinButtonStyles_1.useSpinButtonStyles_unstable(state);
|
|
18
|
+
const {
|
|
19
|
+
useSpinButtonStyles_unstable: useCustomStyles
|
|
20
|
+
} = react_shared_contexts_1.useCustomStyleHooks_unstable();
|
|
21
|
+
useCustomStyles(state);
|
|
22
|
+
return renderSpinButton_1.renderSpinButton_unstable(state);
|
|
21
23
|
});
|
|
22
|
-
SpinButton.displayName =
|
|
23
|
-
|
|
24
|
+
exports.SpinButton.displayName = 'SpinButton';
|
|
24
25
|
//# sourceMappingURL=SpinButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"names":["React","require","useSpinButton_1","renderSpinButton_1","useSpinButtonStyles_1","react_shared_contexts_1","exports","SpinButton","forwardRef","props","ref","state","useSpinButton_unstable","useSpinButtonStyles_unstable","useCustomStyles","useCustomStyleHooks_unstable","renderSpinButton_unstable","displayName"],"sources":["../../../../../../../../../packages/react-components/react-spinbutton/src/components/SpinButton/SpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useSpinButton_unstable } from './useSpinButton';\nimport { renderSpinButton_unstable } from './renderSpinButton';\nimport { useSpinButtonStyles_unstable } from './useSpinButtonStyles';\nimport type { SpinButtonProps } from './SpinButton.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCustomStyleHooks_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * A SpinButton allows someone to incrementally adjust a value in small steps.\n */\nexport const SpinButton: ForwardRefComponent<SpinButtonProps> = React.forwardRef((props, ref) => {\n const state = useSpinButton_unstable(props, ref);\n\n useSpinButtonStyles_unstable(state);\n\n const { useSpinButtonStyles_unstable: useCustomStyles } = useCustomStyleHooks_unstable();\n useCustomStyles(state);\n\n return renderSpinButton_unstable(state);\n});\n\nSpinButton.displayName = 'SpinButton';\n"],"mappings":";;;;;;AAAA,MAAAA,KAAA,gBAAAC,OAAA;AACA,MAAAC,eAAA,gBAAAD,OAAA;AACA,MAAAE,kBAAA,gBAAAF,OAAA;AACA,MAAAG,qBAAA,gBAAAH,OAAA;AAGA,MAAAI,uBAAA,gBAAAJ,OAAA;AAEA;;;AAGaK,OAAA,CAAAC,UAAU,gBAAyCP,KAAK,CAACQ,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EAC9F,MAAMC,KAAK,GAAGT,eAAA,CAAAU,sBAAsB,CAACH,KAAK,EAAEC,GAAG,CAAC;EAEhDN,qBAAA,CAAAS,4BAA4B,CAACF,KAAK,CAAC;EAEnC,MAAM;IAAEE,4BAA4B,EAAEC;EAAe,CAAE,GAAGT,uBAAA,CAAAU,4BAA4B,EAAE;EACxFD,eAAe,CAACH,KAAK,CAAC;EAEtB,OAAOR,kBAAA,CAAAa,yBAAyB,CAACL,KAAK,CAAC;AACzC,CAAC,CAAC;AAEFL,OAAA,CAAAC,UAAU,CAACU,WAAW,GAAG,YAAY"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
+
value: true
|
|
4
5
|
});
|
|
5
|
-
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
6
|
-
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
7
|
-
//# sourceMappingURL=SpinButton.types.js.map
|
|
8
|
-
|
|
9
6
|
//# sourceMappingURL=SpinButton.types.js.map
|