@stenajs-webui/forms 17.6.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/ui/checkbox/Checkbox.d.ts +10 -10
  3. package/dist/components/ui/checkbox/CheckboxWithLabel.d.ts +10 -10
  4. package/dist/components/ui/numeric-stepper/NumericStepper.d.ts +6 -6
  5. package/dist/components/ui/numeric-text-input/NumericTextInput.d.ts +10 -10
  6. package/dist/components/ui/numeric-text-input/hooks/UseNumericInputValue.d.ts +4 -4
  7. package/dist/components/ui/password-input/PasswordInput.d.ts +8 -8
  8. package/dist/components/ui/radio/RadioButton.d.ts +8 -8
  9. package/dist/components/ui/radio/RadioButtonWithLabel.d.ts +10 -10
  10. package/dist/components/ui/switch/Switch.d.ts +8 -8
  11. package/dist/components/ui/switch/SwitchWithLabel.d.ts +7 -7
  12. package/dist/components/ui/text-area/TextArea.d.ts +12 -12
  13. package/dist/components/ui/text-input/TextInput.d.ts +43 -43
  14. package/dist/components/ui/text-input/TextInputBox.d.ts +7 -7
  15. package/dist/components/ui/text-input/TextInputIcon.d.ts +14 -14
  16. package/dist/components/ui/text-input/__tests__/TextInput.test.d.ts +1 -1
  17. package/dist/components/ui/types.d.ts +17 -17
  18. package/dist/hooks/UseKeyboardNavigation.d.ts +8 -8
  19. package/dist/hooks/UseSelectAllOnMount.d.ts +4 -4
  20. package/dist/hooks/UseTextInput.d.ts +30 -30
  21. package/dist/index.d.ts +18 -18
  22. package/dist/index.es.js +665 -465
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/index.js +1 -528
  25. package/dist/index.js.map +1 -1
  26. package/dist/storybook-helpers/storybook-controls.d.ts +46 -46
  27. package/dist/utils/NumberComparator.d.ts +2 -2
  28. package/dist/utils/NumericHelpers.d.ts +13 -13
  29. package/package.json +7 -8
  30. package/dist/components/ui/Form.stories.d.ts +0 -6
  31. package/dist/components/ui/checkbox/Checkbox.stories.d.ts +0 -24
  32. package/dist/components/ui/checkbox/CheckboxWithLabel.stories.d.ts +0 -27
  33. package/dist/components/ui/numeric-stepper/NumericStepper.stories.d.ts +0 -40
  34. package/dist/components/ui/numeric-text-input/NumericTextInput.stories.d.ts +0 -57
  35. package/dist/components/ui/password-input/PasswordInput.stories.d.ts +0 -9
  36. package/dist/components/ui/radio/RadioButton.stories.d.ts +0 -25
  37. package/dist/components/ui/radio/RadioButtonWithLabel.stories.d.ts +0 -7
  38. package/dist/components/ui/switch/Switch.stories.d.ts +0 -13
  39. package/dist/components/ui/switch/SwitchWithLabel.stories.d.ts +0 -12
  40. package/dist/components/ui/text-area/TextArea.stories.d.ts +0 -21
  41. package/dist/components/ui/text-input/TextInput.stories.d.ts +0 -62
  42. package/dist/components/ui/text-input/TextInputBox.stories.d.ts +0 -7
  43. package/dist/hooks/__tests__/useSelectAllOnMount.test.d.ts +0 -1
  44. package/dist/utils/__tests__/NumberComparator.test.d.ts +0 -1
  45. package/dist/utils/__tests__/NumericHelpers.test.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../node_modules/style-inject/dist/style-inject.es.js","../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size])}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton onClick={onClick} leftIcon={icon} size={\"small\"} />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { faEye } from \"@fortawesome/free-solid-svg-icons/faEye\";\nimport { faEyeSlash } from \"@fortawesome/free-solid-svg-icons/faEyeSlash\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = faEye,\n visibleIcon = faEyeSlash,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport { stenaCheck } from \"@stenajs-webui/elements\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons/faExclamationTriangle\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? faExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styles"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/components/ui/switch/Switch.tsx","../src/components/ui/switch/SwitchWithLabel.tsx","../src/components/ui/checkbox/Checkbox.tsx","../src/components/ui/checkbox/CheckboxWithLabel.tsx","../src/components/ui/radio/RadioButton.tsx","../src/components/ui/radio/RadioButtonWithLabel.tsx","../src/hooks/UseKeyboardNavigation.ts","../src/hooks/UseSelectAllOnMount.ts","../src/hooks/UseTextInput.ts","../src/components/ui/text-input/TextInputIcon.tsx","../src/components/ui/text-input/TextInput.tsx","../src/utils/NumericHelpers.ts","../src/components/ui/numeric-text-input/NumericTextInput.tsx","../src/components/ui/numeric-text-input/hooks/UseNumericInputValue.ts","../src/components/ui/password-input/PasswordInput.tsx","../src/components/ui/text-input/TextInputBox.tsx","../src/components/ui/text-area/TextArea.tsx"],"sourcesContent":["import { Ref } from \"react\";\nimport * as React from \"react\";\nimport { ButtonElementProps } from \"@stenajs-webui/core\";\nimport { ValueAndOnValueChangeProps } from \"../types\";\nimport styles from \"./Switch.module.css\";\n\nexport interface SwitchProps\n extends Omit<ButtonElementProps, \"value\">,\n ValueAndOnValueChangeProps<boolean> {\n wrapperRef?: Ref<HTMLDivElement>;\n}\n\nconst styleChecked = `${styles.switch} ${styles.checked}`;\n\nexport const Switch: React.FC<SwitchProps> = ({\n value,\n disabled,\n onValueChange,\n className,\n wrapperRef,\n ...restProps\n}) => {\n return (\n <div className={className} ref={wrapperRef}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n className={value ? styleChecked : styles.switch}\n disabled={disabled}\n onClick={() => onValueChange && onValueChange(!value)}\n {...restProps}\n >\n <div className={styles.filler} />\n <div className={styles.knob} />\n </button>\n </div>\n );\n};\n","import { Box, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Switch, SwitchProps } from \"./Switch\";\n\nexport interface SwitchWithLabelProps extends SwitchProps {\n label: string;\n textColor?: string;\n}\n\nexport const SwitchWithLabel: React.FC<SwitchWithLabelProps> = ({\n label,\n disabled,\n textColor,\n wrapperRef,\n ...switchProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Box row alignItems={\"center\"}>\n <Switch disabled={disabled} {...switchProps} />\n <Space />\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n </Box>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport cx from \"classnames\";\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxSize = \"standard\" | \"small\";\n\nexport interface CheckboxProps\n extends FullOnChangeProps<boolean, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n indeterminate?: boolean;\n size?: CheckboxSize;\n disabled?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n indeterminate = false,\n onChange,\n onValueChange,\n value = false,\n size = \"standard\",\n ...inputProps\n },\n ref\n ) => {\n const localRef = useRef<HTMLInputElement>();\n\n const setRef = (element: HTMLInputElement) => {\n localRef.current = element;\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n if (ref) {\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n (ref as MutableRefObject<HTMLInputElement>).current = element;\n }\n }\n };\n\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.checked);\n }\n },\n [onChange, onValueChange]\n );\n\n useEffect(() => {\n if (localRef.current) {\n localRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate, localRef]);\n\n return (\n <input\n type={\"checkbox\"}\n className={cx(styles.checkbox, styles[size])}\n checked={value}\n onChange={handleInputChange}\n ref={setRef}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { Checkbox, CheckboxProps } from \"./Checkbox\";\n\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n label?: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const CheckboxWithLabel: React.FC<CheckboxWithLabelProps> = ({\n children,\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...checkboxProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <Checkbox {...checkboxProps} ref={inputRef} />\n <Space />\n {label && (\n <Text userSelect={\"none\"} color={textColor}>\n {label}\n </Text>\n )}\n {children}\n </Row>\n </label>\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./RadioButton.module.css\";\n\nexport type RadioButtonSize = \"standard\" | \"small\";\n\nexport interface RadioButtonProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"value\"> {\n size?: RadioButtonSize;\n}\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n (\n { onChange, onValueChange, size = \"standard\", name, ...inputProps },\n ref\n ) => {\n const handleInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <input\n type={\"radio\"}\n name={name}\n className={styles.radiobutton + \" \" + styles[size]}\n onChange={handleInputChange}\n ref={ref}\n {...inputProps}\n />\n );\n }\n);\n","import { Row, Space, Text } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { Ref } from \"react\";\nimport { RadioButton, RadioButtonProps } from \"./RadioButton\";\n\nexport interface RadioButtonWithLabelProps extends RadioButtonProps {\n label: string;\n textColor?: string;\n wrapperRef?: Ref<HTMLDivElement>;\n inputRef?: Ref<HTMLInputElement>;\n}\n\nexport const RadioButtonWithLabel: React.FC<RadioButtonWithLabelProps> = ({\n label,\n inputRef,\n wrapperRef,\n textColor,\n ...radioButtonProps\n}) => {\n return (\n <div ref={wrapperRef}>\n <label>\n <Row alignItems={\"center\"}>\n <RadioButton ref={inputRef} {...radioButtonProps} />\n <Space />\n <Text color={textColor} userSelect={\"none\"}>\n {label}\n </Text>\n </Row>\n </label>\n </div>\n );\n};\n","import {\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type MoveDirection = \"right\" | \"left\" | \"down\" | \"up\";\nexport type TextInputElement = HTMLTextAreaElement | HTMLInputElement;\n\nexport const useKeyboardNavigation = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n /**\n * User-provided onKeyDown. Internal handler should forward calls to this.\n * */\n onKeyDown: KeyboardEventHandler<TElement> | undefined,\n onEnter: (() => void) | undefined,\n onEsc: (() => void) | undefined,\n /**\n * onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab.\n * */\n onMove: ((direction: MoveDirection) => void) | undefined,\n onDone: ((value: string) => void) | undefined,\n onBlur: FocusEventHandler<TElement> | undefined,\n onFocus: FocusEventHandler<TElement> | undefined\n) => {\n const wasHandled = useRef(false);\n\n const onBlurHandler: FocusEventHandler<TElement> = (ev) => {\n if (!wasHandled.current) {\n onDone?.(ev.target.value ?? \"\");\n }\n onBlur?.(ev);\n };\n\n const onFocusHandler: FocusEventHandler<TElement> = (ev) => {\n wasHandled.current = false;\n onFocus?.(ev);\n };\n\n const onKeyDownHandler: KeyboardEventHandler<TElement> = useCallback(\n (ev) => {\n const { key } = ev;\n if (key === \"Enter\") {\n wasHandled.current = true;\n onEnter?.();\n onDone?.(ev.currentTarget.value ?? \"\");\n } else if (key === \"Escape\") {\n wasHandled.current = true;\n onEsc?.();\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onMove) {\n const blurMoveAndCancel = (\n direction: MoveDirection,\n e: KeyboardEvent<TElement>\n ) => {\n wasHandled.current = true;\n ref.current!.blur();\n onMove(direction);\n e.preventDefault();\n e.stopPropagation();\n };\n\n if (ev.shiftKey && key === \"Tab\") {\n blurMoveAndCancel(\"left\", ev);\n } else if (key === \"Tab\") {\n blurMoveAndCancel(\"right\", ev);\n } else if (key === \"ArrowUp\") {\n blurMoveAndCancel(\"up\", ev);\n } else if (key === \"ArrowDown\") {\n blurMoveAndCancel(\"down\", ev);\n } else if (key === \"ArrowRight\") {\n if (ref.current!.value.length === ref.current!.selectionStart) {\n blurMoveAndCancel(\"right\", ev);\n }\n } else if (key === \"ArrowLeft\") {\n if (ref.current!.selectionStart === 0) {\n blurMoveAndCancel(\"left\", ev);\n }\n }\n }\n\n if (onKeyDown) {\n onKeyDown(ev);\n }\n },\n [onEsc, onMove, onKeyDown, ref, onEnter, onDone]\n );\n\n return {\n onKeyDownHandler,\n onBlurHandler,\n onFocusHandler,\n };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { TextInputElement } from \"./UseKeyboardNavigation\";\n\nexport function elementHasSelectionRange(element: TextInputElement): boolean {\n if (element.tagName === \"TEXTAREA\") {\n return true;\n }\n\n if (\n element.tagName === \"INPUT\" &&\n (element.type === \"text\" ||\n element.type === \"search\" ||\n element.type === \"url\" ||\n element.type === \"tel\" ||\n element.type === \"password\")\n ) {\n return true;\n }\n\n return false;\n}\n\nexport const useSelectAllOnMount = (\n ref: RefObject<TextInputElement>,\n moveCursorToEnd: boolean,\n enabled: boolean\n) => {\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n /*\n `selectionStart`, `selectionEnd` properties and `setSelectionRange` method apply only to inputs of types text, search, URL, tel and password.\n Chrome, starting from version 33, throws an exception while accessing those properties and method on the rest of input types.\n https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n */\n if (!elementHasSelectionRange(ref.current)) {\n return;\n }\n\n if (enabled) {\n ref.current.setSelectionRange(0, ref.current.value.length);\n } else if (moveCursorToEnd) {\n ref.current.setSelectionRange(\n ref.current.value.length,\n ref.current.value.length\n );\n }\n }, [moveCursorToEnd, ref, enabled]);\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n CSSProperties,\n FocusEventHandler,\n KeyboardEventHandler,\n RefObject,\n useCallback,\n} from \"react\";\nimport { TextInputVariant } from \"../components/ui/text-input/TextInput\";\nimport {\n MoveDirection,\n TextInputElement,\n useKeyboardNavigation,\n} from \"./UseKeyboardNavigation\";\nimport { useSelectAllOnMount } from \"./UseSelectAllOnMount\";\nimport { FullOnChangeProps } from \"../components/ui/types\";\n\ninterface UseTextInputOptions<TElement extends TextInputElement>\n extends FullOnChangeProps<string, ChangeEvent<TElement>> {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n onFocus?: FocusEventHandler<TElement>;\n onBlur?: FocusEventHandler<TElement>;\n onKeyDown?: KeyboardEventHandler<TElement>;\n}\n\ninterface UseTextInputHookResult<TElement extends TextInputElement> {\n autoFocus?: boolean;\n onChange: ChangeEventHandler<TElement>;\n onFocus: FocusEventHandler<TElement>;\n onBlur: FocusEventHandler<TElement>;\n onKeyDown: KeyboardEventHandler<TElement>;\n}\n\nexport const useTextInput = <TElement extends TextInputElement>(\n ref: RefObject<TElement>,\n {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n }: UseTextInputOptions<TElement>\n): UseTextInputHookResult<TElement> => {\n useSelectAllOnMount(ref, !!moveCursorToEndOnMount, !!selectAllOnMount);\n\n const { onKeyDownHandler, onFocusHandler, onBlurHandler } =\n useKeyboardNavigation<TElement>(\n ref,\n onKeyDown,\n onEnter,\n onEsc,\n onMove,\n onDone,\n onBlur,\n onFocus\n );\n\n const onChangeHandler = useCallback<ChangeEventHandler<TElement>>(\n (ev) => {\n onChange?.(ev);\n onValueChange?.(ev.target.value);\n },\n [onChange, onValueChange]\n );\n\n return {\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onKeyDown: onKeyDownHandler,\n autoFocus: selectAllOnMount || autoFocus,\n };\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { Space } from \"@stenajs-webui/core\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { FlatButton } from \"@stenajs-webui/elements\";\n\nexport interface TextInputIconProps {\n iconClassName?: string;\n content?: React.ReactNode;\n icon?: IconDefinition;\n spaceOnRight?: boolean;\n spaceOnLeft?: boolean;\n disableContentPadding?: boolean;\n disableContentPaddingLeft?: boolean;\n disableContentPaddingRight?: boolean;\n onClick?: () => void;\n}\n\nexport const TextInputIcon: React.FC<TextInputIconProps> = ({\n icon,\n iconClassName,\n content,\n spaceOnLeft,\n spaceOnRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n onClick,\n}) => {\n if (!content && !icon) {\n return null;\n }\n\n if (content) {\n return (\n <>\n {spaceOnLeft &&\n !(disableContentPadding || disableContentPaddingLeft) ? (\n <Space />\n ) : null}\n {onClick ? (\n <span onClick={onClick} className={styles.clickable}>\n {content || null}\n </span>\n ) : (\n <>{content || null}</>\n )}\n\n {spaceOnRight &&\n !(disableContentPadding || disableContentPaddingRight) ? (\n <Space />\n ) : null}\n </>\n );\n }\n\n return (\n <>\n {spaceOnLeft ? <Space /> : null}\n {icon && (\n <>\n {onClick ? (\n <FlatButton onClick={onClick} leftIcon={icon} size={\"small\"} />\n ) : (\n <FontAwesomeIcon\n icon={icon}\n className={cx(styles.icon, iconClassName)}\n />\n )}\n </>\n )}\n {spaceOnRight ? <Space /> : null}\n </>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { InputProps } from \"@stenajs-webui/core\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { stenaCheck, stenaExclamationTriangle } from \"@stenajs-webui/elements\";\nimport cx from \"classnames\";\nimport * as React from \"react\";\nimport { ChangeEvent, CSSProperties, useRef } from \"react\";\nimport { MoveDirection } from \"../../../hooks/UseKeyboardNavigation\";\nimport { useTextInput } from \"../../../hooks/UseTextInput\";\nimport { FullOnChangeProps } from \"../types\";\nimport styles from \"./TextInput.module.css\";\nimport { TextInputIcon } from \"./TextInputIcon\";\n\nexport type TextInputVariant =\n | \"standard\"\n | \"loading\"\n | \"warning\"\n | \"error\"\n | \"modified\"\n | \"success\";\n\ninterface ExtraContent {\n /** React node to put to the left. Left icon is ignored if this is set. */\n contentLeft?: React.ReactNode;\n /** React node to put to the right. Right icon is ignored if this is set. */\n contentRight?: React.ReactNode;\n /** If true, there will be no padding between contentLeft/contentRight and the border. */\n disableContentPadding?: boolean;\n /** If true, there will be no padding between contentLeft and the border. */\n disableContentPaddingLeft?: boolean;\n /** If true, there will be no padding between contentRight and the border. */\n disableContentPaddingRight?: boolean;\n /** Icon on the left side. */\n iconLeft?: IconDefinition;\n /** Icon on the right side. */\n iconRight?: IconDefinition;\n /** On click left. */\n onClickLeft?: () => void;\n /** On click right. */\n onClickRight?: () => void;\n}\n\nexport interface TextInputProps\n extends FullOnChangeProps<string, ChangeEvent<HTMLInputElement>>,\n InputProps,\n ExtraContent {\n wrapperStyle?: CSSProperties;\n wrapperClassName?: string;\n variant?: TextInputVariant;\n hideBorder?: boolean;\n selectAllOnMount?: boolean;\n moveCursorToEndOnMount?: boolean;\n onDone?: (value: string) => void;\n onEnter?: () => void;\n onEsc?: () => void;\n autoFocus?: boolean;\n /** onMove callback, triggered when user tries to move outside of field using arrow keys, tab or shift+tab. */\n onMove?: (direction: MoveDirection) => void;\n}\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n variant = \"standard\",\n inputRef,\n disabled,\n className,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconLeft,\n iconRight,\n onClickLeft,\n onClickRight,\n moveCursorToEndOnMount,\n selectAllOnMount,\n autoFocus,\n onValueChange,\n wrapperClassName,\n wrapperStyle,\n onDone,\n onEnter,\n onEsc,\n onMove,\n onChange,\n onKeyDown,\n hideBorder,\n onFocus,\n onBlur,\n ...inputProps\n } = props;\n const localRef = useRef<HTMLInputElement>(null);\n const refToUse = inputRef ?? localRef;\n const hookProps = useTextInput<HTMLInputElement>(refToUse, {\n onEnter,\n onEsc,\n onChange,\n onValueChange,\n selectAllOnMount,\n moveCursorToEndOnMount,\n onDone,\n onMove,\n onFocus,\n onBlur,\n onKeyDown,\n autoFocus,\n });\n\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? stenaExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n {\n [styles.hideBorder]: hideBorder,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <input\n className={cx(styles.input, className)}\n type={\"text\"}\n disabled={disabled}\n ref={refToUse}\n autoFocus={autoFocus}\n {...inputProps}\n {...hookProps}\n />\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport const onStepValueChange = ({\n onValueChange,\n value,\n numSteps,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n value: string | undefined;\n numSteps: number;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (!value) {\n onValueChange(String(limitWithinRange(numSteps, min, max)));\n } else {\n const parsedValue = parseFloatElseUndefined(value);\n const newValue = (parsedValue || 0) + numSteps;\n onValueChange(String(limitWithinRange(newValue, min, max)));\n }\n }\n};\n\nexport const onTextValueChange = ({\n onValueChange,\n newValue,\n min,\n max,\n}: {\n onValueChange: ((value: string) => void) | undefined;\n newValue: string;\n min: number | undefined;\n max: number | undefined;\n}) => {\n if (onValueChange) {\n if (newValue === \"\") {\n onValueChange(\"\");\n } else {\n const parsedValue = parseFloatElseUndefined(newValue);\n const value = parsedValue || 0;\n onValueChange(String(limitWithinRange(value, min, max)));\n }\n }\n};\n\nconst limitWithinRange = (\n value: number,\n min?: number,\n max?: number\n): number => {\n let v = value;\n if (min != null) {\n v = Math.max(min, v);\n }\n if (max != null) {\n v = Math.min(max, v);\n }\n return v;\n};\n","import { Omit, Space } from \"@stenajs-webui/core\";\nimport { UpDownButtons } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport styles from \"./NumericTextInput.module.css\";\nimport cx from \"classnames\";\nimport {\n onStepValueChange,\n onTextValueChange,\n} from \"../../../utils/NumericHelpers\";\n\nexport interface NumericTextInputProps\n extends Omit<\n TextInputProps,\n | \"onChange\" // Omit onChange, since up down buttons don't generate HTMLInput event.\n | \"selectAllOnMount\" // Not supported by browser when input type='number'\n | \"moveCursorToEndOnMount\" // Not supported by browser when input type='number'\n > {\n max?: number;\n min?: number;\n step?: number;\n hideButtons?: boolean;\n}\n\nexport const NumericTextInput: React.FC<NumericTextInputProps> = ({\n value,\n onValueChange,\n max,\n min,\n step = 1,\n contentRight,\n disabled,\n className,\n hideButtons,\n ...restProps\n}) => {\n const onClick = useCallback(\n (numSteps: number) => {\n onStepValueChange({ onValueChange, value, numSteps, min, max });\n },\n [value, max, min, onValueChange]\n );\n const onChange = useCallback(\n (newValue: string) => {\n onTextValueChange({ onValueChange, newValue, min, max });\n },\n [max, min, onValueChange]\n );\n\n const contentRightToUse = hideButtons ? (\n contentRight\n ) : (\n <>\n {contentRight && (\n <>\n {contentRight}\n <Space />\n </>\n )}\n <UpDownButtons\n onClickUp={disabled ? undefined : () => onClick(step)}\n onClickDown={disabled ? undefined : () => onClick(-step)}\n iconColor={\"var(--swui-textinput-text-color)\"}\n disabled={disabled}\n />\n </>\n );\n\n return (\n <TextInput\n contentRight={contentRightToUse}\n value={value}\n onValueChange={onChange}\n disableContentPaddingRight={!hideButtons}\n type={\"number\"}\n min={min}\n max={max}\n step={step}\n className={cx(styles.numericTextInputInput, className)}\n disabled={disabled}\n {...restProps}\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { ValueAndOnValueChangeProps } from \"../../types\";\nimport { NumericTextInputProps } from \"../NumericTextInput\";\nimport { parseFloatElseUndefined } from \"@stenajs-webui/core\";\n\nexport type NumericInputValueProps = ValueAndOnValueChangeProps<\n number | undefined\n>;\n\nexport const useNumericInputValue = (\n value: number | undefined,\n onValueChange?: (value: number | undefined) => void\n): Partial<NumericTextInputProps> => {\n const onValueChangeString = useCallback(\n (newValue: string) => {\n if (onValueChange) {\n if (!newValue) {\n onValueChange(undefined);\n } else {\n const n = parseFloatElseUndefined(newValue);\n if (n !== undefined) {\n onValueChange(n);\n }\n }\n }\n },\n [onValueChange]\n );\n\n const valueString = useMemo(() => {\n if (value === undefined) {\n return \"\";\n }\n return String(value);\n }, [value]);\n\n return {\n onValueChange: onValueChangeString,\n value: valueString,\n };\n};\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { TextInput, TextInputProps } from \"../text-input/TextInput\";\nimport { faEye } from \"@fortawesome/free-solid-svg-icons/faEye\";\nimport { faEyeSlash } from \"@fortawesome/free-solid-svg-icons/faEyeSlash\";\n\nexport interface PasswordInputProps extends TextInputProps {\n visibleIcon?: IconDefinition;\n hiddenIcon?: IconDefinition;\n}\n\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n hiddenIcon = faEye,\n visibleIcon = faEyeSlash,\n ...props\n}) => {\n const [isPassword, setIsPassword] = useState(true);\n\n return (\n <TextInput\n iconRight={isPassword ? hiddenIcon : visibleIcon}\n onClickRight={() => setIsPassword((x) => !x)}\n type={isPassword ? \"password\" : \"text\"}\n {...props}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./TextInput.module.css\";\nimport cx from \"classnames\";\nimport { TextInputProps } from \"./TextInput\";\nimport { TextInputIcon } from \"./TextInputIcon\";\nimport { stenaCheck } from \"@stenajs-webui/elements\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons/faExclamationTriangle\";\nimport { InputSpinner } from \"@stenajs-webui/elements\";\nimport { Row } from \"@stenajs-webui/core\";\n\nexport interface TextInputBoxProps\n extends Pick<\n TextInputProps,\n | \"variant\"\n | \"wrapperClassName\"\n | \"disabled\"\n | \"wrapperStyle\"\n | \"contentLeft\"\n | \"contentRight\"\n | \"disableContentPadding\"\n | \"disableContentPaddingLeft\"\n | \"disableContentPaddingRight\"\n | \"iconRight\"\n | \"iconLeft\"\n | \"onClickLeft\"\n | \"onClickRight\"\n > {\n children?: ReactNode;\n}\n\nexport const TextInputBox: React.FC<TextInputBoxProps> = ({\n variant = \"standard\",\n disabled,\n wrapperClassName,\n wrapperStyle,\n contentLeft,\n contentRight,\n disableContentPadding,\n disableContentPaddingLeft,\n disableContentPaddingRight,\n iconRight,\n iconLeft,\n onClickLeft,\n onClickRight,\n children,\n}) => {\n const currentIconRight =\n variant === \"success\"\n ? stenaCheck\n : variant === \"warning\" || variant === \"error\"\n ? faExclamationTriangle\n : iconRight;\n\n const currentContentRight =\n variant === \"loading\" ? <InputSpinner /> : contentRight;\n\n return (\n <div\n className={cx(\n styles.textInput,\n styles.inputContainer,\n styles[variant],\n {\n [styles.disabled]: disabled,\n },\n wrapperClassName\n )}\n style={wrapperStyle}\n >\n <TextInputIcon\n content={contentLeft}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={iconLeft}\n spaceOnLeft\n onClick={onClickLeft}\n />\n <Row alignItems={\"center\"}>{children}</Row>\n <TextInputIcon\n content={currentContentRight}\n disableContentPadding={disableContentPadding}\n disableContentPaddingLeft={disableContentPaddingLeft}\n disableContentPaddingRight={disableContentPaddingRight}\n icon={currentIconRight}\n spaceOnRight\n onClick={onClickRight}\n />\n </div>\n );\n};\n","import * as React from \"react\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./TextArea.module.css\";\nimport { FullOnChangeProps } from \"../types\";\n\ntype Resize =\n | \"none\"\n | \"both\"\n | \"horizontal\"\n | \"vertical\"\n | \"inherit\"\n | \"initial\"\n | \"revert\"\n | \"unset\";\n\nexport interface TextAreaProps\n extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"value\">,\n FullOnChangeProps<string, ChangeEvent<HTMLTextAreaElement>> {\n resize?: Resize;\n readOnly?: boolean;\n rows?: number;\n disabled?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n value,\n onValueChange,\n onChange,\n resize = \"none\",\n readOnly = false,\n rows,\n disabled,\n ...textAreaProps\n },\n ref\n ) => {\n const onChangeHandler: ChangeEventHandler<HTMLTextAreaElement> =\n useCallback(\n (ev) => {\n if (onChange) {\n onChange(ev);\n }\n if (onValueChange) {\n onValueChange(ev.target.value);\n }\n },\n [onChange, onValueChange]\n );\n\n return (\n <textarea\n disabled={disabled}\n rows={rows}\n readOnly={readOnly}\n className={cx(styles.textArea, className)}\n style={{ resize }}\n onChange={onChangeHandler}\n value={value}\n ref={ref}\n {...textAreaProps}\n />\n );\n }\n);\n"],"names":["styleChecked","styles","switch","checked","Switch","value","disabled","onValueChange","className","wrapperRef","restProps","_jsx","filler","knob","SwitchWithLabel","label","textColor","switchProps","Checkbox","forwardRef","indeterminate","onChange","size","inputProps","ref","localRef","useRef","setRef","element","current","Boolean","handleInputChange","useCallback","ev","target","useEffect","cx","checkbox","CheckboxWithLabel","children","inputRef","checkboxProps","RadioButton","name","radiobutton","RadioButtonWithLabel","radioButtonProps","TextInputIcon","icon","iconClassName","content","spaceOnLeft","spaceOnRight","disableContentPadding","disableContentPaddingLeft","disableContentPaddingRight","onClick","_Fragment","clickable","TextInput","props","variant","contentLeft","contentRight","iconLeft","iconRight","onClickLeft","onClickRight","moveCursorToEndOnMount","selectAllOnMount","autoFocus","wrapperClassName","wrapperStyle","onDone","onEnter","onEsc","onMove","onKeyDown","hideBorder","onFocus","onBlur","refToUse","hookProps","useTextInput","currentIconRight","stenaCheck","stenaExclamationTriangle","currentContentRight","textInput","input","NumericTextInput","max","min","step","hideButtons","numSteps","newValue","contentRightToUse","_jsxs","undefined","numericTextInputInput","PasswordInput","hiddenIcon","faEye","visibleIcon","faEyeSlash","isPassword","setIsPassword","useState","x","TextInputBox","faExclamationTriangle","inputContainer","TextArea","resize","readOnly","rows","textAreaProps","onChangeHandler","textArea"],"mappings":"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"}