@fluentui/react-spinbutton 9.2.92 → 9.2.93

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,26 @@
1
1
  # Change Log - @fluentui/react-spinbutton
2
2
 
3
- This log was last generated on Mon, 18 Nov 2024 09:42:22 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 06 Dec 2024 12:49:15 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.2.93](https://github.com/microsoft/fluentui/tree/@fluentui/react-spinbutton_v9.2.93)
8
+
9
+ Fri, 06 Dec 2024 12:49:15 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-spinbutton_v9.2.92..@fluentui/react-spinbutton_v9.2.93)
11
+
12
+ ### Patches
13
+
14
+ - fix: up/down buttons were not semantically disabled when unclickable ([PR #33143](https://github.com/microsoft/fluentui/pull/33143) by sarah.higley@microsoft.com)
15
+ - Bump @fluentui/react-field to v9.1.81 ([PR #33414](https://github.com/microsoft/fluentui/pull/33414) by beachball)
16
+ - Bump @fluentui/react-jsx-runtime to v9.0.47 ([PR #33414](https://github.com/microsoft/fluentui/pull/33414) by beachball)
17
+ - Bump @fluentui/react-shared-contexts to v9.21.1 ([PR #33414](https://github.com/microsoft/fluentui/pull/33414) by beachball)
18
+ - Bump @fluentui/react-theme to v9.1.23 ([PR #33414](https://github.com/microsoft/fluentui/pull/33414) by beachball)
19
+ - Bump @fluentui/react-utilities to v9.18.18 ([PR #33414](https://github.com/microsoft/fluentui/pull/33414) by beachball)
20
+
7
21
  ## [9.2.92](https://github.com/microsoft/fluentui/tree/@fluentui/react-spinbutton_v9.2.92)
8
22
 
9
- Mon, 18 Nov 2024 09:42:22 GMT
23
+ Mon, 18 Nov 2024 09:44:40 GMT
10
24
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-spinbutton_v9.2.91..@fluentui/react-spinbutton_v9.2.92)
11
25
 
12
26
  ### Patches
@@ -228,7 +228,7 @@ const lerp = (start, end, percent)=>start + (end - start) * percent;
228
228
  defaultProps: {
229
229
  tabIndex: -1,
230
230
  children: /*#__PURE__*/ React.createElement(ChevronUp16Regular, null),
231
- disabled: nativeProps.primary.disabled,
231
+ disabled: nativeProps.primary.disabled || internalState.current.atBound === 'max' || internalState.current.atBound === 'both',
232
232
  'aria-label': 'Increment value',
233
233
  type: 'button'
234
234
  },
@@ -238,7 +238,7 @@ const lerp = (start, end, percent)=>start + (end - start) * percent;
238
238
  defaultProps: {
239
239
  tabIndex: -1,
240
240
  children: /*#__PURE__*/ React.createElement(ChevronDown16Regular, null),
241
- disabled: nativeProps.primary.disabled,
241
+ disabled: nativeProps.primary.disabled || internalState.current.atBound === 'min' || internalState.current.atBound === 'both',
242
242
  'aria-label': 'Decrement value',
243
243
  type: 'button'
244
244
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFieldControlProps_unstable } from '@fluentui/react-field';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n useControllableState,\n useTimeout,\n slot,\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 // Merge props from surrounding <Field>, if any\n props = useFieldControlProps_unstable(props, { supportsLabelFor: true, supportsRequired: true });\n\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 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 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: slot.always(root, {\n defaultProps: nativeProps.root,\n elementType: 'span',\n }),\n input: slot.always(input, {\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n elementType: 'input',\n }),\n incrementButton: slot.always(incrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Increment value',\n type: 'button',\n },\n elementType: 'button',\n }),\n decrementButton: slot.always(decrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n elementType: 'button',\n }),\n };\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\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"],"names":["React","useFieldControlProps_unstable","getPartitionedNativeProps","mergeCallbacks","useControllableState","useTimeout","slot","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","supportsLabelFor","supportsRequired","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","valueToDisplay","components","always","defaultProps","elementType","autoComplete","role","type","primary","tabIndex","children","disabled","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFieldControlProps_unstable } from '@fluentui/react-field';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n useControllableState,\n useTimeout,\n slot,\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 // Merge props from surrounding <Field>, if any\n props = useFieldControlProps_unstable(props, { supportsLabelFor: true, supportsRequired: true });\n\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 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 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: slot.always(root, {\n defaultProps: nativeProps.root,\n elementType: 'span',\n }),\n input: slot.always(input, {\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n elementType: 'input',\n }),\n incrementButton: slot.always(incrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled:\n nativeProps.primary.disabled ||\n internalState.current.atBound === 'max' ||\n internalState.current.atBound === 'both',\n 'aria-label': 'Increment value',\n type: 'button',\n },\n elementType: 'button',\n }),\n decrementButton: slot.always(decrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled:\n nativeProps.primary.disabled ||\n internalState.current.atBound === 'min' ||\n internalState.current.atBound === 'both',\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n elementType: 'button',\n }),\n };\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\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"],"names":["React","useFieldControlProps_unstable","getPartitionedNativeProps","mergeCallbacks","useControllableState","useTimeout","slot","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","supportsLabelFor","supportsRequired","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","valueToDisplay","components","always","defaultProps","elementType","autoComplete","role","type","primary","tabIndex","children","disabled","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SACEC,yBAAyB,EACzBC,cAAc,EACdC,oBAAoB,EACpBC,UAAU,EACVC,IAAI,QACC,4BAA4B;AACnC,SAASC,OAAO,EAAEC,SAAS,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,0BAA0B;AAQzG,SAASC,kBAAkB,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,KAAK,QAAQ,oBAAoB;AACxF,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,wBAAwB;AACjF,SAASC,yBAAyBC,YAAY,QAAQ,kCAAkC;AAWxF,MAAMC,wBAAwB;AAC9B,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB;AAEzB,6DAA6D;AAC7D,yDAAyD;AACzD,gEAAgE;AAChE,MAAMC,OAAO,CAACC,OAAeC,KAAaC,UAA4BF,QAAQ,AAACC,CAAAA,MAAMD,KAAI,IAAKE;AAE9F;;;;;;;;CAQC,GACD,OAAO,MAAMC,yBAAyB,CAACC,OAAwBC;IAC7D,+CAA+C;IAC/CD,QAAQ9B,8BAA8B8B,OAAO;QAAEE,kBAAkB;QAAMC,kBAAkB;IAAK;IAE9F,MAAMC,cAAcjC,0BAA0B;QAC5C6B;QACAK,oBAAoB;QACpBC,mBAAmB;YAAC;YAAgB;YAAO;YAAO;YAAY;YAAQ;SAAQ;IAChF;IAEA,MAAMC,YAAYhB;QAaHgB;IAXf,MAAM,EACJC,KAAK,EACLC,YAAY,EACZC,YAAY,EACZC,GAAG,EACHC,GAAG,EACHC,OAAO,CAAC,EACRC,WAAW,CAAC,EACZC,WAAWC,kBAAkB,EAC7BC,QAAQ,EACRC,OAAO,QAAQ,EACfC,aAAaZ,CAAAA,oCAAAA,UAAUa,sBAAsB,cAAhCb,+CAAAA,oCAAoC,SAAS,EAC1Dc,IAAI,EACJC,KAAK,EACLC,eAAe,EACfC,eAAe,EAChB,GAAGxB;IAEJ,MAAMe,YAAY9C,MAAMwD,OAAO,CAAC;QAC9B,OAAOT,+BAAAA,gCAAAA,qBAAsBU,KAAKd,GAAG,CAAC5B,mBAAmB6B,OAAO;IAClE,GAAG;QAACG;QAAoBH;KAAK;IAE7B,MAAM,CAACc,cAAcC,gBAAgB,GAAGvD,qBAAqB;QAC3DwD,OAAOrB;QACPsB,cAAcpB;QACdqB,cAAc;IAChB;IAEA,MAAMC,eAAexB,UAAUyB;IAE/B,MAAM,CAACC,WAAWC,aAAa,GAAGlE,MAAMmE,QAAQ,CAAqBH;IACrE,MAAM,CAACI,mBAAmBC,qBAAqB,GAAGrE,MAAMmE,QAAQ,CAAsB;IAEtF,MAAMG,gBAAgBtE,MAAMuE,MAAM,CAAgB;QAChDhC,OAAOmB;QACPc,WAAW;QACXC,UAAU;QACVC,WAAWnD;QACXoD,SAASjB,iBAAiB,OAAOzC,SAASD,eAAe0C,cAAcZ,YAAYJ,KAAKC,OAAO;IACjG;IAEA,MAAM,CAACiC,gBAAgBC,iBAAiB,GAAGxE;IAE3C,MAAMyE,YAAY,CAChBC,GACAC,WACAC;QAEA,IAAIC,aAAaZ,cAAca,OAAO,CAAC5C,KAAK;QAC5C,IAAI0C,WAAW;YACb,MAAMG,MAAMC,WAAWJ;YACvB,IAAI,CAACK,MAAMF,MAAM;gBACfF,aAAaE;YACf;QACF;QACA,MAAMG,MAAML;QACZ,MAAMM,MAAMR,cAAc,QAAQA,cAAc,WAAW,IAAI,CAAC;QAChE,MAAMS,WAAWT,cAAc,YAAYA,cAAc,aAAanC,WAAWD;QAEjF,IAAI2C,QAAQ,MAAM;YAChB,MAAMG,YAAYhD,QAAQsB,YAAY,IAAItB;YAC1C,MAAMiD,WAAWzE,MAAMwE,YAAYD,WAAWD,KAAK9C,KAAKC;YACxDiD,OAAOb,GAAGY;YACV;QACF;QAEA,IAAIE,WAAWN,MAAME,WAAWD;QAChC,IAAI,CAACM,OAAOR,KAAK,CAACO,WAAW;YAC3BA,WAAW3E,MAAM2E,UAAUnD,KAAKC;QAClC;QAEAiD,OAAOb,GAAGc;QAEV,IAAIvB,cAAca,OAAO,CAACX,SAAS,KAAK,QAAQ;YAC9CI,eAAe;gBACb,4BAA4B;gBAC5BN,cAAca,OAAO,CAACV,QAAQ,IAAIH,cAAca,OAAO,CAACT,SAAS;gBACjEJ,cAAca,OAAO,CAACT,SAAS,GAAGhD,KAChCH,uBACAC,mBACA8C,cAAca,OAAO,CAACV,QAAQ,GAAGhD;gBAEnCqD,UAAUC,GAAGC;YACf,GAAGV,cAAca,OAAO,CAACT,SAAS;QACpC;IACF;IAEA,MAAMqB,oBAAoB,CAAChB;QACzB,IAAI,CAACT,cAAca,OAAO,CAACa,iBAAiB,EAAE;YAC5C1B,cAAca,OAAO,CAACa,iBAAiB,GAAG/B,sBAAAA,uBAAAA,YAAagC,OAAOvC;QAChE;QACA,MAAMmC,WAAWd,EAAEmB,MAAM,CAAC3D,KAAK;QAC/B2B,aAAa2B;IACf;IAEA,MAAMM,2BAA2B,CAACpB;QAChCT,cAAca,OAAO,CAACX,SAAS,GAAG;QAClCM,UAAUC,GAAG;IACf;IAEA,MAAMqB,2BAA2B,CAACrB;QAChCT,cAAca,OAAO,CAACX,SAAS,GAAG;QAClCM,UAAUC,GAAG;IACf;IAEA,MAAMsB,2BAA2B,CAACtB;QAChCF;QACAP,cAAca,OAAO,CAACX,SAAS,GAAG;QAClCF,cAAca,OAAO,CAACT,SAAS,GAAGnD;QAClC+C,cAAca,OAAO,CAACV,QAAQ,GAAG;IACnC;IAEA,MAAM6B,aAAa,CAACvB;QAClBa,OAAOb,GAAGrB,cAAcO;QACxBK,cAAca,OAAO,CAACa,iBAAiB,GAAGhC;IAC5C;IAEA,MAAMuC,gBAAgB,CAACxB;QACrB,IAAIyB,wBAA6C;QAEjD,IAAIzB,EAAE0B,GAAG,KAAKlG,SAAS;YACrBuE,UAAUC,GAAG,MAAMd;YACnBuC,wBAAwB;QAC1B,OAAO,IAAIzB,EAAE0B,GAAG,KAAKjG,WAAW;YAC9BsE,UAAUC,GAAG,QAAQd;YACrBuC,wBAAwB;QAC1B,OAAO,IAAIzB,EAAE0B,GAAG,KAAK3F,QAAQ;YAC3BiE,EAAE2B,cAAc;YAChB5B,UAAUC,GAAG,UAAUd;YACvBuC,wBAAwB;QAC1B,OAAO,IAAIzB,EAAE0B,GAAG,KAAK5F,UAAU;YAC7BkE,EAAE2B,cAAc;YAChB5B,UAAUC,GAAG,YAAYd;YACzBuC,wBAAwB;QAC1B,OAAO,IAAI,CAACzB,EAAE4B,QAAQ,IAAI5B,EAAE0B,GAAG,KAAK7F,QAAQ8B,QAAQsB,WAAW;YAC7D4B,OAAOb,GAAGrC;YACV8D,wBAAwB;QAC1B,OAAO,IAAI,CAACzB,EAAE4B,QAAQ,IAAI5B,EAAE0B,GAAG,KAAKhG,OAAOkC,QAAQqB,WAAW;YAC5D4B,OAAOb,GAAGpC;YACV6D,wBAAwB;QAC1B,OAAO,IAAIzB,EAAE0B,GAAG,KAAK/F,OAAO;YAC1BkF,OAAOb,GAAGrB,cAAcO;YACxBK,cAAca,OAAO,CAACa,iBAAiB,GAAGhC;QAC5C,OAAO,IAAIe,EAAE0B,GAAG,KAAK9F,QAAQ;YAC3B,IAAI2D,cAAca,OAAO,CAACa,iBAAiB,EAAE;gBAC3C9B,aAAaF;gBACbM,cAAca,OAAO,CAACa,iBAAiB,GAAGhC;YAC5C;QACF;QAEA,IAAII,sBAAsBoC,uBAAuB;YAC/CnC,qBAAqBmC;QACvB;IACF;IAEA,MAAMI,cAAc,CAAC7B;QACnB,IAAIX,sBAAsB,QAAQ;YAChCC,qBAAqB;YACrBC,cAAca,OAAO,CAACX,SAAS,GAAG;QACpC;IACF;IAEA,MAAMoB,SAAS,CAACb,GAA0Bc,UAA0BgB;QAClE,MAAMC,eAAejB,aAAa7B,aAAaN,iBAAiBmC;QAChE,MAAMkB,sBACJF,oBAAoB7C,aACpBM,cAAca,OAAO,CAACa,iBAAiB,KAAKhC,aAC5CM,cAAca,OAAO,CAACa,iBAAiB,KAAKa;QAE9C,IAAIG;QACJ,IAAIF,cAAc;YAChBE,eAAehG,eAAe6E,UAAW/C;YACzCa,gBAAgBqD;QAClB,OAAO,IAAID,uBAAuB,CAAChD,cAAc;YAC/C,MAAMkD,YAAY5B,WAAWwB;YAC7B,IAAI,CAACvB,MAAM2B,YAAY;gBACrBtD,gBAAgB3C,eAAeiG,WAAWnE;YAC5C;QACF;QAEA,IAAIgE,gBAAgBC,qBAAqB;YACvC/D,qBAAAA,+BAAAA,SAAW+B,GAAG;gBAAExC,OAAOyE;gBAAcxE,cAAcqE;YAAgB;QACrE;QAEA3C,aAAaF;IACf;IAEA,IAAIkD;IACJ,IAAIjD,cAAcD,WAAW;QAC3BkD,iBAAiBjD;IACnB,OAAO,IAAI1B,UAAU,QAAQmB,iBAAiB,MAAM;QAClDwD,iBAAiB1E,yBAAAA,0BAAAA,eAAgB;QACjC8B,cAAca,OAAO,CAAC5C,KAAK,GAAG;QAC9B+B,cAAca,OAAO,CAACR,OAAO,GAAG;IAClC,OAAO;QACL,MAAMqC,eAAehG,eAAe0C,cAAcZ;QAClDwB,cAAca,OAAO,CAAC5C,KAAK,GAAGyE;QAC9B1C,cAAca,OAAO,CAACR,OAAO,GAAG1D,SAAS+F,cAActE,KAAKC;QAC5D,IAAIoB,cAAc;YAChBmD,iBAAiB1E,yBAAAA,0BAAAA,eAAgByD,OAAOe;QAC1C,OAAO;YACLE,iBAAiBjB,OAAOe;QAC1B;IACF;IAEA,MAAMpD,QAAyB;QAC7BX;QACAC;QACAsB,WAAWJ;QACXO,SAASL,cAAca,OAAO,CAACR,OAAO;QAEtCwC,YAAY;YACV/D,MAAM;YACNC,OAAO;YACPC,iBAAiB;YACjBC,iBAAiB;QACnB;QACAH,MAAM9C,KAAK8G,MAAM,CAAChE,MAAM;YACtBiE,cAAclF,YAAYiB,IAAI;YAC9BkE,aAAa;QACf;QACAjE,OAAO/C,KAAK8G,MAAM,CAAC/D,OAAO;YACxBgE,cAAc;gBACZrF;gBACAuF,cAAc;gBACdC,MAAM;gBACNtE;gBACAuE,MAAM;gBACN,GAAGtF,YAAYuF,OAAO;YACxB;YACAJ,aAAa;QACf;QACAhE,iBAAiBhD,KAAK8G,MAAM,CAAC9D,iBAAiB;YAC5C+D,cAAc;gBACZM,UAAU,CAAC;gBACXC,wBAAU,oBAACzG;gBACX0G,UACE1F,YAAYuF,OAAO,CAACG,QAAQ,IAC5BvD,cAAca,OAAO,CAACR,OAAO,KAAK,SAClCL,cAAca,OAAO,CAACR,OAAO,KAAK;gBACpC,cAAc;gBACd8C,MAAM;YACR;YACAH,aAAa;QACf;QACA/D,iBAAiBjD,KAAK8G,MAAM,CAAC7D,iBAAiB;YAC5C8D,cAAc;gBACZM,UAAU,CAAC;gBACXC,wBAAU,oBAACxG;gBACXyG,UACE1F,YAAYuF,OAAO,CAACG,QAAQ,IAC5BvD,cAAca,OAAO,CAACR,OAAO,KAAK,SAClCL,cAAca,OAAO,CAACR,OAAO,KAAK;gBACpC,cAAc;gBACd8C,MAAM;YACR;YACAH,aAAa;QACf;IACF;IAEA1D,MAAMP,KAAK,CAACd,KAAK,GAAG2E;IACpBtD,MAAMP,KAAK,CAAC,gBAAgB,GAAGX;IAC/BkB,MAAMP,KAAK,CAAC,gBAAgB,GAAGV;QACCiB;IAAhCA,MAAMP,KAAK,CAAC,iBAAiB,GAAGO,CAAAA,6BAAAA,MAAMP,KAAK,CAAC,iBAAiB,cAA7BO,wCAAAA,6BAAkC,AAACrB,UAAUyB,aAAaxB,gBAAiBwB;IAC3GJ,MAAMP,KAAK,CAACL,QAAQ,GAAG7C,eAAeyD,MAAMP,KAAK,CAACL,QAAQ,EAAE+C;IAC5DnC,MAAMP,KAAK,CAACyE,MAAM,GAAG3H,eAAeyD,MAAMP,KAAK,CAACyE,MAAM,EAAExB;IACxD1C,MAAMP,KAAK,CAAC0E,SAAS,GAAG5H,eAAeyD,MAAMP,KAAK,CAAC0E,SAAS,EAAExB;IAC9D3C,MAAMP,KAAK,CAAC2E,OAAO,GAAG7H,eAAeyD,MAAMP,KAAK,CAAC2E,OAAO,EAAEpB;IAE1DhD,MAAMN,eAAe,CAAC2E,WAAW,GAAG9H,eAAegG,0BAA0BvC,MAAMN,eAAe,CAAC2E,WAAW;IAC9GrE,MAAMN,eAAe,CAAC4E,SAAS,GAAG/H,eAAeyD,MAAMN,eAAe,CAAC4E,SAAS,EAAE7B;IAClFzC,MAAMN,eAAe,CAAC6E,YAAY,GAAGhI,eAAeyD,MAAMN,eAAe,CAAC6E,YAAY,EAAE9B;IAExFzC,MAAML,eAAe,CAAC0E,WAAW,GAAG9H,eAAeiG,0BAA0BxC,MAAML,eAAe,CAAC0E,WAAW;IAC9GrE,MAAML,eAAe,CAAC2E,SAAS,GAAG/H,eAAeyD,MAAML,eAAe,CAAC2E,SAAS,EAAE7B;IAClFzC,MAAML,eAAe,CAAC4E,YAAY,GAAGhI,eAAeyD,MAAML,eAAe,CAAC4E,YAAY,EAAE9B;IAExF,OAAOzC;AACT,EAAE"}
@@ -209,53 +209,6 @@ const useButtonStyles = /*#__PURE__*/__styles({
209
209
  p: -1
210
210
  }], ".f3rmtva{background-color:transparent;}", ".f11d4kpn{color:var(--colorNeutralForeground3);}", ".f1no7wuu:enabled:hover{color:var(--colorNeutralForeground3Hover);}", ".f1bifk9c:enabled:hover{background-color:var(--colorSubtleBackgroundHover);}", ".fp1zg4s:enabled:active{color:var(--colorNeutralForeground3Pressed);}", ".fo6hitd:enabled:active{background-color:var(--colorSubtleBackgroundPressed);}", ".f1wiab75:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForeground3Pressed);}", ".fj9zm5z:enabled.fui-SpinButton__button_active{background-color:var(--colorSubtleBackgroundPressed);}", ".f1cqwcg4:disabled{color:var(--colorNeutralForegroundDisabled);}", ".fwwxidx:enabled:hover{background-color:var(--colorNeutralBackground3Hover);}", ".f14i52sd:enabled:active{background-color:var(--colorNeutralBackground3Pressed);}", ".fwry2ka:enabled.fui-SpinButton__button_active{background-color:var(--colorNeutralBackground3Pressed);}", ".f1yywxnv:enabled:hover{background-color:var(--colorNeutralBackground1Hover);}", ".fzaa11h:enabled:active,.fzaa11h:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForeground3Pressed);}", ".f4fpmm9:enabled:active,.f4fpmm9:enabled.fui-SpinButton__button_active{background-color:var(--colorNeutralBackground1Pressed);}"]
211
211
  });
212
- // Cannot just disable button as they need to remain
213
- // exposed to ATs like screen readers.
214
- const useButtonDisabledStyles = /*#__PURE__*/__styles({
215
- base: {
216
- Bceei9c: "fdrzuqr",
217
- eoavqd: "fphbwmw"
218
- },
219
- outline: {
220
- sj55zd: "f1s2aq7o",
221
- r4wkhp: "few7wvn",
222
- B95qlz1: "f110wuh6",
223
- p743kt: "f9s4mys",
224
- B7xitij: "f10404rc",
225
- B6siaa6: "fwzu9cz",
226
- Ba9qmo4: "f1snwkb6"
227
- },
228
- underline: {
229
- sj55zd: "f1s2aq7o",
230
- r4wkhp: "few7wvn",
231
- B95qlz1: "f110wuh6",
232
- p743kt: "f9s4mys",
233
- B7xitij: "f10404rc",
234
- B6siaa6: "fwzu9cz",
235
- Ba9qmo4: "f1snwkb6"
236
- },
237
- "filled-darker": {
238
- sj55zd: "f1s2aq7o",
239
- r4wkhp: "few7wvn",
240
- B95qlz1: "f110wuh6",
241
- p743kt: "f9s4mys",
242
- B7xitij: "f10404rc",
243
- B6siaa6: "fwzu9cz",
244
- Ba9qmo4: "f1snwkb6"
245
- },
246
- "filled-lighter": {
247
- sj55zd: "f1s2aq7o",
248
- r4wkhp: "few7wvn",
249
- B95qlz1: "f110wuh6",
250
- p743kt: "f9s4mys",
251
- B7xitij: "f10404rc",
252
- B6siaa6: "fwzu9cz",
253
- Ba9qmo4: "f1snwkb6"
254
- }
255
- }, {
256
- d: [".fdrzuqr{cursor:not-allowed;}", ".f1s2aq7o{color:var(--colorNeutralForegroundDisabled);}", ".few7wvn:enabled:hover{color:var(--colorNeutralForegroundDisabled);}", ".f110wuh6:enabled:hover{background-color:transparent;}", ".f9s4mys:enabled:active{color:var(--colorNeutralForegroundDisabled);}", ".f10404rc:enabled:active{background-color:transparent;}", ".fwzu9cz:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForegroundDisabled);}", ".f1snwkb6:enabled.fui-SpinButton__button_active{background-color:transparent;}"],
257
- h: [".fphbwmw:hover{cursor:not-allowed;}"]
258
- });
259
212
  /**
260
213
  * Apply styling to the SpinButton slots based on the state
261
214
  */
@@ -264,7 +217,6 @@ export const useSpinButtonStyles_unstable = state => {
264
217
 
265
218
  const {
266
219
  appearance,
267
- atBound,
268
220
  spinState,
269
221
  size
270
222
  } = state;
@@ -273,11 +225,10 @@ export const useSpinButtonStyles_unstable = state => {
273
225
  const filled = appearance.startsWith('filled');
274
226
  const rootStyles = useRootStyles();
275
227
  const buttonStyles = useButtonStyles();
276
- const buttonDisabledStyles = useButtonDisabledStyles();
277
228
  const inputStyles = useInputStyles();
278
229
  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);
279
- 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);
280
- 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);
230
+ state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, state.incrementButton.className);
231
+ state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, state.decrementButton.className);
281
232
  state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);
282
233
  return state;
283
234
  };
@@ -1 +1 @@
1
- {"version":3,"names":["__resetStyles","__styles","mergeClasses","shorthands","tokens","typographyStyles","spinButtonClassNames","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","r","s","useRootStyles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","r59vdv","Budzafs","ck0cow","n07z76","Gng75u","underlineInteractive","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","filled","Bcgcnre","Bqjgrrk","qa3bma","Biqmznv","Bm6vgfq","Bbv0w2i","eqrjj","Bk5zm6e","m598lv","ydt019","Bq4z7u6","Bdkvgpv","kj8mxx","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","p","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","B0ocmuz","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":["useSpinButtonStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const spinButtonClassNames = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton'\n};\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active'\n};\nconst fieldHeights = {\n small: '24px',\n medium: '32px'\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 verticalAlign: 'middle',\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\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 '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\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 // 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 // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms'\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 '@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});\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS\n },\n medium: {\n },\n outline: {\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 underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n borderRadius: tokens.borderRadiusNone\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': {\n borderRadius: tokens.borderRadiusNone\n }\n },\n filled: {\n '::before': {\n border: `1px solid ${tokens.colorTransparentStroke}`\n }\n },\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1\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 invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText')\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 width: '100%',\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1\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});\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n outlineStyle: 'none',\n height: '16px',\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 // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n ':active': {\n outlineStyle: 'none'\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 ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled\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 padding: '3px 6px 0px 4px',\n height: '12px'\n },\n decrementButtonSmall: {\n padding: '0px 6px 3px 4px',\n height: '12px'\n },\n outline: {\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 ':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 ':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// 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 ':hover': {\n cursor: 'not-allowed'\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 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 '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 '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 * Apply styling to the SpinButton slots based on the state\n */ export const useSpinButtonStyles_unstable = (state)=>{\n 'use no memo';\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 const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const buttonDisabledStyles = useButtonDisabledStyles();\n const inputStyles = useInputStyles();\n 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);\n 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);\n 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);\n state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);\n return state;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__resetStyles","__styles","mergeClasses","shorthands","tokens","typographyStyles","spinButtonClassNames","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","r","s","useRootStyles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","r59vdv","Budzafs","ck0cow","n07z76","Gng75u","underlineInteractive","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","filled","Bcgcnre","Bqjgrrk","qa3bma","Biqmznv","Bm6vgfq","Bbv0w2i","eqrjj","Bk5zm6e","m598lv","ydt019","Bq4z7u6","Bdkvgpv","kj8mxx","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","p","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","B0ocmuz","Bqenvij","decrementButtonSmall","r4wkhp","B95qlz1","p743kt","B7xitij","B6siaa6","Ba9qmo4","Dyrjrp","drw0cw","idzz8t","useSpinButtonStyles_unstable","state","appearance","spinState","size","startsWith","rootStyles","buttonStyles","inputStyles","className"],"sources":["useSpinButtonStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const spinButtonClassNames = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton'\n};\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active'\n};\nconst fieldHeights = {\n small: '24px',\n medium: '32px'\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 verticalAlign: 'middle',\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\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 '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\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 // 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 // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms'\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 '@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});\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS\n },\n medium: {\n },\n outline: {\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 underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n borderRadius: tokens.borderRadiusNone\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': {\n borderRadius: tokens.borderRadiusNone\n }\n },\n filled: {\n '::before': {\n border: `1px solid ${tokens.colorTransparentStroke}`\n }\n },\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1\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 invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText')\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 width: '100%',\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1\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});\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n outlineStyle: 'none',\n height: '16px',\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 // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n ':active': {\n outlineStyle: 'none'\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 ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled\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 padding: '3px 6px 0px 4px',\n height: '12px'\n },\n decrementButtonSmall: {\n padding: '0px 6px 3px 4px',\n height: '12px'\n },\n outline: {\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 ':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 ':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 * Apply styling to the SpinButton slots based on the state\n */ export const useSpinButtonStyles_unstable = (state)=>{\n 'use no memo';\n const { appearance, spinState, size } = state;\n const disabled = state.input.disabled;\n const invalid = `${state.input['aria-invalid']}` === 'true';\n const filled = appearance.startsWith('filled');\n const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const inputStyles = useInputStyles();\n 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);\n state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, state.incrementButton.className);\n state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, state.decrementButton.className);\n state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);\n return state;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -231,7 +231,7 @@ const useSpinButton_unstable = (props, ref)=>{
231
231
  defaultProps: {
232
232
  tabIndex: -1,
233
233
  children: /*#__PURE__*/ _react.createElement(_reacticons.ChevronUp16Regular, null),
234
- disabled: nativeProps.primary.disabled,
234
+ disabled: nativeProps.primary.disabled || internalState.current.atBound === 'max' || internalState.current.atBound === 'both',
235
235
  'aria-label': 'Increment value',
236
236
  type: 'button'
237
237
  },
@@ -241,7 +241,7 @@ const useSpinButton_unstable = (props, ref)=>{
241
241
  defaultProps: {
242
242
  tabIndex: -1,
243
243
  children: /*#__PURE__*/ _react.createElement(_reacticons.ChevronDown16Regular, null),
244
- disabled: nativeProps.primary.disabled,
244
+ disabled: nativeProps.primary.disabled || internalState.current.atBound === 'min' || internalState.current.atBound === 'both',
245
245
  'aria-label': 'Decrement value',
246
246
  type: 'button'
247
247
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFieldControlProps_unstable } from '@fluentui/react-field';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n useControllableState,\n useTimeout,\n slot,\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 // Merge props from surrounding <Field>, if any\n props = useFieldControlProps_unstable(props, { supportsLabelFor: true, supportsRequired: true });\n\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 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 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: slot.always(root, {\n defaultProps: nativeProps.root,\n elementType: 'span',\n }),\n input: slot.always(input, {\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n elementType: 'input',\n }),\n incrementButton: slot.always(incrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Increment value',\n type: 'button',\n },\n elementType: 'button',\n }),\n decrementButton: slot.always(decrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled: nativeProps.primary.disabled,\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n elementType: 'button',\n }),\n };\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\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"],"names":["useSpinButton_unstable","DEFAULT_SPIN_DELAY_MS","MIN_SPIN_DELAY_MS","MAX_SPIN_TIME_MS","lerp","start","end","percent","props","ref","useFieldControlProps_unstable","supportsLabelFor","supportsRequired","nativeProps","getPartitionedNativeProps","primarySlotTagName","excludedPropNames","overrides","useOverrides","value","displayValue","defaultValue","min","max","step","stepPage","precision","precisionFromProps","onChange","size","appearance","inputDefaultAppearance","root","input","incrementButton","decrementButton","React","useMemo","Math","calculatePrecision","currentValue","setCurrentValue","useControllableState","state","defaultState","initialState","isControlled","undefined","textValue","setTextValue","useState","keyboardSpinState","setKeyboardSpinState","internalState","useRef","spinState","spinTime","spinDelay","atBound","getBound","precisionRound","setStepTimeout","clearStepTimeout","useTimeout","stepValue","e","direction","startFrom","startValue","current","num","parseFloat","isNaN","val","dir","stepSize","stepStart","nullStep","clamp","commit","newValue","Number","handleInputChange","previousTextValue","String","target","handleIncrementMouseDown","handleDecrementMouseDown","handleStepMouseUpOrLeave","handleBlur","handleKeyDown","nextKeyboardSpinState","key","ArrowUp","ArrowDown","PageUp","preventDefault","PageDown","shiftKey","Home","End","Enter","Escape","handleKeyUp","newDisplayValue","valueChanged","displayValueChanged","roundedValue","nextValue","valueToDisplay","components","slot","always","defaultProps","elementType","autoComplete","role","type","primary","tabIndex","children","createElement","ChevronUp16Regular","disabled","ChevronDown16Regular","mergeCallbacks","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../src/components/SpinButton/useSpinButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFieldControlProps_unstable } from '@fluentui/react-field';\nimport {\n getPartitionedNativeProps,\n mergeCallbacks,\n useControllableState,\n useTimeout,\n slot,\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 // Merge props from surrounding <Field>, if any\n props = useFieldControlProps_unstable(props, { supportsLabelFor: true, supportsRequired: true });\n\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 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 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: slot.always(root, {\n defaultProps: nativeProps.root,\n elementType: 'span',\n }),\n input: slot.always(input, {\n defaultProps: {\n ref,\n autoComplete: 'off',\n role: 'spinbutton',\n appearance,\n type: 'text',\n ...nativeProps.primary,\n },\n elementType: 'input',\n }),\n incrementButton: slot.always(incrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronUp16Regular />,\n disabled:\n nativeProps.primary.disabled ||\n internalState.current.atBound === 'max' ||\n internalState.current.atBound === 'both',\n 'aria-label': 'Increment value',\n type: 'button',\n },\n elementType: 'button',\n }),\n decrementButton: slot.always(decrementButton, {\n defaultProps: {\n tabIndex: -1,\n children: <ChevronDown16Regular />,\n disabled:\n nativeProps.primary.disabled ||\n internalState.current.atBound === 'min' ||\n internalState.current.atBound === 'both',\n 'aria-label': 'Decrement value',\n type: 'button',\n },\n elementType: 'button',\n }),\n };\n\n state.input.value = valueToDisplay;\n state.input['aria-valuemin'] = min;\n state.input['aria-valuemax'] = max;\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"],"names":["useSpinButton_unstable","DEFAULT_SPIN_DELAY_MS","MIN_SPIN_DELAY_MS","MAX_SPIN_TIME_MS","lerp","start","end","percent","props","ref","useFieldControlProps_unstable","supportsLabelFor","supportsRequired","nativeProps","getPartitionedNativeProps","primarySlotTagName","excludedPropNames","overrides","useOverrides","value","displayValue","defaultValue","min","max","step","stepPage","precision","precisionFromProps","onChange","size","appearance","inputDefaultAppearance","root","input","incrementButton","decrementButton","React","useMemo","Math","calculatePrecision","currentValue","setCurrentValue","useControllableState","state","defaultState","initialState","isControlled","undefined","textValue","setTextValue","useState","keyboardSpinState","setKeyboardSpinState","internalState","useRef","spinState","spinTime","spinDelay","atBound","getBound","precisionRound","setStepTimeout","clearStepTimeout","useTimeout","stepValue","e","direction","startFrom","startValue","current","num","parseFloat","isNaN","val","dir","stepSize","stepStart","nullStep","clamp","commit","newValue","Number","handleInputChange","previousTextValue","String","target","handleIncrementMouseDown","handleDecrementMouseDown","handleStepMouseUpOrLeave","handleBlur","handleKeyDown","nextKeyboardSpinState","key","ArrowUp","ArrowDown","PageUp","preventDefault","PageDown","shiftKey","Home","End","Enter","Escape","handleKeyUp","newDisplayValue","valueChanged","displayValueChanged","roundedValue","nextValue","valueToDisplay","components","slot","always","defaultProps","elementType","autoComplete","role","type","primary","tabIndex","children","createElement","ChevronUp16Regular","disabled","ChevronDown16Regular","mergeCallbacks","onBlur","onKeyDown","onKeyUp","onMouseDown","onMouseUp","onMouseLeave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -425,77 +425,18 @@ const useButtonStyles = /*#__PURE__*/ (0, _react.__styles)({
425
425
  ".f4fpmm9:enabled:active,.f4fpmm9:enabled.fui-SpinButton__button_active{background-color:var(--colorNeutralBackground1Pressed);}"
426
426
  ]
427
427
  });
428
- // Cannot just disable button as they need to remain
429
- // exposed to ATs like screen readers.
430
- const useButtonDisabledStyles = /*#__PURE__*/ (0, _react.__styles)({
431
- base: {
432
- Bceei9c: "fdrzuqr",
433
- eoavqd: "fphbwmw"
434
- },
435
- outline: {
436
- sj55zd: "f1s2aq7o",
437
- r4wkhp: "few7wvn",
438
- B95qlz1: "f110wuh6",
439
- p743kt: "f9s4mys",
440
- B7xitij: "f10404rc",
441
- B6siaa6: "fwzu9cz",
442
- Ba9qmo4: "f1snwkb6"
443
- },
444
- underline: {
445
- sj55zd: "f1s2aq7o",
446
- r4wkhp: "few7wvn",
447
- B95qlz1: "f110wuh6",
448
- p743kt: "f9s4mys",
449
- B7xitij: "f10404rc",
450
- B6siaa6: "fwzu9cz",
451
- Ba9qmo4: "f1snwkb6"
452
- },
453
- "filled-darker": {
454
- sj55zd: "f1s2aq7o",
455
- r4wkhp: "few7wvn",
456
- B95qlz1: "f110wuh6",
457
- p743kt: "f9s4mys",
458
- B7xitij: "f10404rc",
459
- B6siaa6: "fwzu9cz",
460
- Ba9qmo4: "f1snwkb6"
461
- },
462
- "filled-lighter": {
463
- sj55zd: "f1s2aq7o",
464
- r4wkhp: "few7wvn",
465
- B95qlz1: "f110wuh6",
466
- p743kt: "f9s4mys",
467
- B7xitij: "f10404rc",
468
- B6siaa6: "fwzu9cz",
469
- Ba9qmo4: "f1snwkb6"
470
- }
471
- }, {
472
- d: [
473
- ".fdrzuqr{cursor:not-allowed;}",
474
- ".f1s2aq7o{color:var(--colorNeutralForegroundDisabled);}",
475
- ".few7wvn:enabled:hover{color:var(--colorNeutralForegroundDisabled);}",
476
- ".f110wuh6:enabled:hover{background-color:transparent;}",
477
- ".f9s4mys:enabled:active{color:var(--colorNeutralForegroundDisabled);}",
478
- ".f10404rc:enabled:active{background-color:transparent;}",
479
- ".fwzu9cz:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForegroundDisabled);}",
480
- ".f1snwkb6:enabled.fui-SpinButton__button_active{background-color:transparent;}"
481
- ],
482
- h: [
483
- ".fphbwmw:hover{cursor:not-allowed;}"
484
- ]
485
- });
486
428
  const useSpinButtonStyles_unstable = (state)=>{
487
429
  'use no memo';
488
- const { appearance, atBound, spinState, size } = state;
430
+ const { appearance, spinState, size } = state;
489
431
  const disabled = state.input.disabled;
490
432
  const invalid = `${state.input['aria-invalid']}` === 'true';
491
433
  const filled = appearance.startsWith('filled');
492
434
  const rootStyles = useRootStyles();
493
435
  const buttonStyles = useButtonStyles();
494
- const buttonDisabledStyles = useButtonDisabledStyles();
495
436
  const inputStyles = useInputStyles();
496
437
  state.root.className = (0, _react.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);
497
- state.incrementButton.className = (0, _react.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);
498
- state.decrementButton.className = (0, _react.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);
438
+ state.incrementButton.className = (0, _react.mergeClasses)(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, state.incrementButton.className);
439
+ state.decrementButton.className = (0, _react.mergeClasses)(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, state.decrementButton.className);
499
440
  state.input.className = (0, _react.mergeClasses)(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);
500
441
  return state;
501
442
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["useSpinButtonStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const spinButtonClassNames = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton'\n};\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active'\n};\nconst fieldHeights = {\n small: '24px',\n medium: '32px'\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 verticalAlign: 'middle',\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\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 '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\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 // 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 // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms'\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 '@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});\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS\n },\n medium: {\n },\n outline: {\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 underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n borderRadius: tokens.borderRadiusNone\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': {\n borderRadius: tokens.borderRadiusNone\n }\n },\n filled: {\n '::before': {\n border: `1px solid ${tokens.colorTransparentStroke}`\n }\n },\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1\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 invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText')\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 width: '100%',\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1\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});\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n outlineStyle: 'none',\n height: '16px',\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 // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n ':active': {\n outlineStyle: 'none'\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 ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled\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 padding: '3px 6px 0px 4px',\n height: '12px'\n },\n decrementButtonSmall: {\n padding: '0px 6px 3px 4px',\n height: '12px'\n },\n outline: {\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 ':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 ':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// 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 ':hover': {\n cursor: 'not-allowed'\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 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 '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 '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 * Apply styling to the SpinButton slots based on the state\n */ export const useSpinButtonStyles_unstable = (state)=>{\n 'use no memo';\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 const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const buttonDisabledStyles = useButtonDisabledStyles();\n const inputStyles = useInputStyles();\n 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);\n 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);\n 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);\n state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);\n return state;\n};\n"],"names":["spinButtonClassNames","useSpinButtonStyles_unstable","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","__resetStyles","r","s","useRootStyles","__styles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","r59vdv","Budzafs","ck0cow","n07z76","Gng75u","underlineInteractive","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","filled","Bcgcnre","Bqjgrrk","qa3bma","Biqmznv","Bm6vgfq","Bbv0w2i","eqrjj","Bk5zm6e","m598lv","ydt019","Bq4z7u6","Bdkvgpv","kj8mxx","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","p","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","B0ocmuz","Bqenvij","decrementButtonSmall","r4wkhp","B95qlz1","p743kt","B7xitij","B6siaa6","Ba9qmo4","Dyrjrp","drw0cw","idzz8t","useButtonDisabledStyles","base","eoavqd","state","appearance","atBound","spinState","size","startsWith","rootStyles","buttonStyles","buttonDisabledStyles","inputStyles","className","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["useSpinButtonStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const spinButtonClassNames = {\n root: 'fui-SpinButton',\n input: 'fui-SpinButton__input',\n incrementButton: 'fui-SpinButton__incrementButton',\n decrementButton: 'fui-SpinButton__decrementButton'\n};\nconst spinButtonExtraClassNames = {\n buttonActive: 'fui-SpinButton__button_active'\n};\nconst fieldHeights = {\n small: '24px',\n medium: '32px'\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 verticalAlign: 'middle',\n backgroundColor: tokens.colorNeutralBackground1,\n minHeight: fieldHeights.medium,\n padding: `0 0 0 ${tokens.spacingHorizontalMNudge}`,\n borderRadius: tokens.borderRadiusMedium,\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 '::after': {\n boxSizing: 'border-box',\n content: '\"\"',\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 20,\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 // 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 // Animation for focus OUT\n transform: 'scaleX(0)',\n transitionProperty: 'transform',\n transitionDuration: tokens.durationUltraFast,\n transitionDelay: tokens.curveAccelerateMid,\n '@media screen and (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n transitionDelay: '0.01ms'\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 '@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});\nconst useRootStyles = makeStyles({\n small: {\n minHeight: fieldHeights.small,\n ...typographyStyles.caption1,\n paddingLeft: tokens.spacingHorizontalS\n },\n medium: {\n },\n outline: {\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 underline: {\n '::before': {\n ...shorthands.borderWidth(0, 0, '1px', 0),\n borderRadius: tokens.borderRadiusNone\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': {\n borderRadius: tokens.borderRadiusNone\n }\n },\n filled: {\n '::before': {\n border: `1px solid ${tokens.colorTransparentStroke}`\n }\n },\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1\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 invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n '::before': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n '::before': {\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText')\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 width: '100%',\n '::placeholder': {\n color: tokens.colorNeutralForeground4,\n opacity: 1\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});\nconst useBaseButtonClassName = makeResetStyles({\n display: 'inline-flex',\n width: '24px',\n alignItems: 'center',\n justifyContent: 'center',\n border: '0',\n position: 'absolute',\n outlineStyle: 'none',\n height: '16px',\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 // common button layout\n gridColumnStart: '2',\n borderRadius: '0',\n padding: '0 5px 0 5px',\n ':active': {\n outlineStyle: 'none'\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 ':disabled': {\n cursor: 'not-allowed',\n color: tokens.colorNeutralForegroundDisabled\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 padding: '3px 6px 0px 4px',\n height: '12px'\n },\n decrementButtonSmall: {\n padding: '0px 6px 3px 4px',\n height: '12px'\n },\n outline: {\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 ':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 ':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 * Apply styling to the SpinButton slots based on the state\n */ export const useSpinButtonStyles_unstable = (state)=>{\n 'use no memo';\n const { appearance, spinState, size } = state;\n const disabled = state.input.disabled;\n const invalid = `${state.input['aria-invalid']}` === 'true';\n const filled = appearance.startsWith('filled');\n const rootStyles = useRootStyles();\n const buttonStyles = useButtonStyles();\n const inputStyles = useInputStyles();\n 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);\n state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, state.incrementButton.className);\n state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, state.decrementButton.className);\n state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className);\n return state;\n};\n"],"names":["spinButtonClassNames","useSpinButtonStyles_unstable","root","input","incrementButton","decrementButton","spinButtonExtraClassNames","buttonActive","fieldHeights","small","medium","useRootClassName","__resetStyles","r","s","useRootStyles","__styles","sshi5w","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","uwmqm3","outline","outlineInteractive","Bo3r8zu","Hpvxnh","Bx11ytk","B1rg0w0","Bsg1tlv","Brjw370","xcfy85","Bcc6kan","underline","B0qfbqy","B4f6apu","y0oebl","uvfttm","r59vdv","Budzafs","ck0cow","n07z76","Gng75u","underlineInteractive","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","filled","Bcgcnre","Bqjgrrk","qa3bma","Biqmznv","Bm6vgfq","Bbv0w2i","eqrjj","Bk5zm6e","m598lv","ydt019","Bq4z7u6","Bdkvgpv","kj8mxx","De3pzq","filledInteractive","B05mzqr","tb9y6h","jcehpj","B23o0hn","invalid","emecyz","lz0pba","Bo1k74p","Ba322q7","disabled","Bceei9c","Cffpyd","hxi8he","Bcuq369","Imo2if","d","p","h","a","m","useInputClassName","useInputStyles","sj55zd","yvdlaj","useBaseButtonClassName","useButtonStyles","increment","Ijaq50","B7oj6ja","z8tnut","Byoj8tv","decrement","Bbmb7ep","incrementButtonSmall","z189sj","B0ocmuz","Bqenvij","decrementButtonSmall","r4wkhp","B95qlz1","p743kt","B7xitij","B6siaa6","Ba9qmo4","Dyrjrp","drw0cw","idzz8t","state","appearance","spinState","size","startsWith","rootStyles","buttonStyles","inputStyles","className","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-spinbutton",
3
- "version": "9.2.92",
3
+ "version": "9.2.93",
4
4
  "description": "Fluent UI React SpinButton component.",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -20,12 +20,12 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@fluentui/keyboard-keys": "^9.0.8",
23
- "@fluentui/react-field": "^9.1.80",
23
+ "@fluentui/react-field": "^9.1.81",
24
24
  "@fluentui/react-icons": "^2.0.245",
25
- "@fluentui/react-jsx-runtime": "^9.0.46",
26
- "@fluentui/react-shared-contexts": "^9.21.0",
27
- "@fluentui/react-theme": "^9.1.22",
28
- "@fluentui/react-utilities": "^9.18.17",
25
+ "@fluentui/react-jsx-runtime": "^9.0.47",
26
+ "@fluentui/react-shared-contexts": "^9.21.1",
27
+ "@fluentui/react-theme": "^9.1.23",
28
+ "@fluentui/react-utilities": "^9.18.18",
29
29
  "@griffel/react": "^1.5.22",
30
30
  "@swc/helpers": "^0.5.1"
31
31
  },