@dnb/eufemia 10.16.0 → 10.18.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.
- package/CHANGELOG.md +54 -0
- package/cjs/components/anchor/Anchor.js +9 -5
- package/cjs/components/anchor/Anchor.js.map +1 -1
- package/cjs/components/anchor/style/anchor-mixins.scss +0 -11
- package/cjs/components/anchor/style/dnb-anchor.css +0 -16
- package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
- package/cjs/components/autocomplete/Autocomplete.js +2 -2
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/button/style/dnb-button.css +13 -0
- package/cjs/components/button/style/dnb-button.min.css +1 -1
- package/cjs/components/button/style/dnb-button.scss +16 -0
- package/cjs/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
- package/cjs/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
- package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
- package/cjs/components/button/style/themes/dnb-button-theme-ui.css +12 -1
- package/cjs/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
- package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
- package/cjs/components/date-picker/DatePicker.d.ts +14 -1
- package/cjs/components/date-picker/DatePicker.js +0 -1
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalc.js +2 -1
- package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
- package/cjs/components/date-picker/DatePickerInput.d.ts +3 -0
- package/cjs/components/date-picker/DatePickerInput.js +9 -2
- package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
- package/cjs/components/dropdown/Dropdown.js +3 -2
- package/cjs/components/dropdown/Dropdown.js.map +1 -1
- package/cjs/components/flex/Container.js +15 -2
- package/cjs/components/flex/Container.js.map +1 -1
- package/cjs/components/flex/export.d.ts +1 -0
- package/cjs/components/flex/export.js +7 -0
- package/cjs/components/flex/export.js.map +1 -1
- package/cjs/components/flex/utils.d.ts +1 -1
- package/cjs/components/flex/utils.js +11 -1
- package/cjs/components/flex/utils.js.map +1 -1
- package/cjs/components/flex/withChildren.d.ts +6 -0
- package/cjs/components/flex/withChildren.js +13 -0
- package/cjs/components/flex/withChildren.js.map +1 -0
- package/cjs/components/input/Input.js +3 -3
- package/cjs/components/input/Input.js.map +1 -1
- package/cjs/components/input/style/themes/dnb-input-theme-ui.css +2 -0
- package/cjs/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
- package/cjs/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
- package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/cjs/components/input-masked/InputMaskedHooks.js +13 -8
- package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/cjs/components/input-masked/MultiInputMask.d.ts +10 -2
- package/cjs/components/input-masked/MultiInputMask.js +41 -14
- package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
- package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
- package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
- package/cjs/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/cjs/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/cjs/components/number-format/NumberFormat.js +1 -1
- package/cjs/components/number-format/NumberFormat.js.map +1 -1
- package/cjs/components/textarea/style/dnb-textarea.css +5 -0
- package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
- package/cjs/components/textarea/style/dnb-textarea.scss +4 -0
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/cjs/components/visually-hidden/VisuallyHidden.js +1 -1
- package/cjs/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +14 -14
- package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/cjs/extensions/forms/Field/Currency/Currency.d.ts +1 -5
- package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.d.ts +3 -1
- package/cjs/extensions/forms/Field/Date/Date.js +47 -10
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js +20 -10
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/Number.d.ts +5 -1
- package/cjs/extensions/forms/Field/Number/Number.js +109 -30
- package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/style/dnb-number.css +192 -0
- package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
- package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
- package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/cjs/extensions/forms/Field/Selection/Selection.js +4 -9
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.d.ts +0 -1
- package/cjs/extensions/forms/Field/String/String.js +23 -9
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +16 -26
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
- package/cjs/extensions/forms/Form/Handler/Handler.js +1 -0
- package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.d.ts +5 -2
- package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
- package/cjs/extensions/forms/Form/Visibility/index.js.map +1 -0
- package/cjs/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/cjs/extensions/forms/Form/hooks/useData.js +36 -0
- package/cjs/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/cjs/extensions/forms/Form/index.d.ts +2 -0
- package/cjs/extensions/forms/Form/index.js +14 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Iterate/Array/Array.js +0 -4
- package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataValue.js +26 -33
- package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/cjs/extensions/forms/hooks/useId.d.ts +1 -0
- package/cjs/extensions/forms/hooks/useId.js +18 -0
- package/cjs/extensions/forms/hooks/useId.js.map +1 -0
- package/cjs/extensions/forms/index.d.ts +6 -1
- package/cjs/extensions/forms/index.js +5 -8
- package/cjs/extensions/forms/index.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +214 -11
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +16 -18
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
- package/cjs/extensions/forms/utils/TestElement/TestElement.js +1 -0
- package/cjs/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/EventEmitter.d.ts +5 -0
- package/cjs/shared/helpers/EventEmitter.js.map +1 -1
- package/cjs/shared/helpers/useEventEmitter.d.ts +2 -0
- package/cjs/shared/helpers/useEventEmitter.js.map +1 -1
- package/cjs/shared/helpers/useSharedState.d.ts +15 -0
- package/cjs/shared/helpers/useSharedState.js +71 -0
- package/cjs/shared/helpers/useSharedState.js.map +1 -0
- package/cjs/style/core/utilities.scss +1 -2
- package/cjs/style/dnb-ui-components.css +232 -27
- package/cjs/style/dnb-ui-components.min.css +3 -3
- package/cjs/style/dnb-ui-extensions.css +214 -11
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +214 -11
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/dnb-ui-forms.scss +1 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
- package/cjs/style/themes/theme-ui/ui-theme-components.css +496 -44
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +9 -5
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +230 -11
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +230 -12
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.scss +2 -0
- package/cjs/style/themes/theme-ui/ui-theme-tags.css +8 -10
- package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/components/anchor/Anchor.js +9 -5
- package/components/anchor/Anchor.js.map +1 -1
- package/components/anchor/style/anchor-mixins.scss +0 -11
- package/components/anchor/style/dnb-anchor.css +0 -16
- package/components/anchor/style/dnb-anchor.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
- package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
- package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
- package/components/autocomplete/Autocomplete.js +2 -2
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/button/style/dnb-button.css +13 -0
- package/components/button/style/dnb-button.min.css +1 -1
- package/components/button/style/dnb-button.scss +16 -0
- package/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
- package/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
- package/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
- package/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
- package/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
- package/components/button/style/themes/dnb-button-theme-ui.css +12 -1
- package/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
- package/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
- package/components/date-picker/DatePicker.d.ts +14 -1
- package/components/date-picker/DatePicker.js +0 -1
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerCalc.js +2 -1
- package/components/date-picker/DatePickerCalc.js.map +1 -1
- package/components/date-picker/DatePickerInput.d.ts +3 -0
- package/components/date-picker/DatePickerInput.js +9 -2
- package/components/date-picker/DatePickerInput.js.map +1 -1
- package/components/dropdown/Dropdown.js +3 -2
- package/components/dropdown/Dropdown.js.map +1 -1
- package/components/flex/Container.js +15 -2
- package/components/flex/Container.js.map +1 -1
- package/components/flex/export.d.ts +1 -0
- package/components/flex/export.js +1 -0
- package/components/flex/export.js.map +1 -1
- package/components/flex/utils.d.ts +1 -1
- package/components/flex/utils.js +11 -1
- package/components/flex/utils.js.map +1 -1
- package/components/flex/withChildren.d.ts +6 -0
- package/components/flex/withChildren.js +6 -0
- package/components/flex/withChildren.js.map +1 -0
- package/components/input/Input.js +3 -3
- package/components/input/Input.js.map +1 -1
- package/components/input/style/themes/dnb-input-theme-ui.css +2 -0
- package/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
- package/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
- package/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/components/input-masked/InputMaskedHooks.js +13 -8
- package/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/components/input-masked/MultiInputMask.d.ts +10 -2
- package/components/input-masked/MultiInputMask.js +39 -14
- package/components/input-masked/MultiInputMask.js.map +1 -1
- package/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
- package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
- package/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/components/number-format/NumberFormat.js +1 -1
- package/components/number-format/NumberFormat.js.map +1 -1
- package/components/textarea/style/dnb-textarea.css +5 -0
- package/components/textarea/style/dnb-textarea.min.css +1 -1
- package/components/textarea/style/dnb-textarea.scss +4 -0
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/components/visually-hidden/VisuallyHidden.js +1 -1
- package/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/es/components/anchor/Anchor.js +9 -5
- package/es/components/anchor/Anchor.js.map +1 -1
- package/es/components/anchor/style/anchor-mixins.scss +0 -11
- package/es/components/anchor/style/dnb-anchor.css +0 -16
- package/es/components/anchor/style/dnb-anchor.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
- package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
- package/es/components/autocomplete/Autocomplete.js +2 -2
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/button/style/dnb-button.css +13 -0
- package/es/components/button/style/dnb-button.min.css +1 -1
- package/es/components/button/style/dnb-button.scss +16 -0
- package/es/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
- package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
- package/es/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
- package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
- package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
- package/es/components/button/style/themes/dnb-button-theme-ui.css +12 -1
- package/es/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
- package/es/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
- package/es/components/date-picker/DatePicker.d.ts +14 -1
- package/es/components/date-picker/DatePicker.js +0 -1
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerCalc.js +2 -1
- package/es/components/date-picker/DatePickerCalc.js.map +1 -1
- package/es/components/date-picker/DatePickerInput.d.ts +3 -0
- package/es/components/date-picker/DatePickerInput.js +9 -2
- package/es/components/date-picker/DatePickerInput.js.map +1 -1
- package/es/components/dropdown/Dropdown.js +3 -2
- package/es/components/dropdown/Dropdown.js.map +1 -1
- package/es/components/flex/Container.js +15 -2
- package/es/components/flex/Container.js.map +1 -1
- package/es/components/flex/export.d.ts +1 -0
- package/es/components/flex/export.js +1 -0
- package/es/components/flex/export.js.map +1 -1
- package/es/components/flex/utils.d.ts +1 -1
- package/es/components/flex/utils.js +11 -1
- package/es/components/flex/utils.js.map +1 -1
- package/es/components/flex/withChildren.d.ts +6 -0
- package/es/components/flex/withChildren.js +6 -0
- package/es/components/flex/withChildren.js.map +1 -0
- package/es/components/input/Input.js +3 -3
- package/es/components/input/Input.js.map +1 -1
- package/es/components/input/style/themes/dnb-input-theme-ui.css +2 -0
- package/es/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
- package/es/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
- package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/es/components/input-masked/InputMaskedHooks.js +13 -8
- package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/es/components/input-masked/MultiInputMask.d.ts +10 -2
- package/es/components/input-masked/MultiInputMask.js +39 -13
- package/es/components/input-masked/MultiInputMask.js.map +1 -1
- package/es/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
- package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
- package/es/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
- package/es/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
- package/es/components/number-format/NumberFormat.js +1 -1
- package/es/components/number-format/NumberFormat.js.map +1 -1
- package/es/components/textarea/style/dnb-textarea.css +5 -0
- package/es/components/textarea/style/dnb-textarea.min.css +1 -1
- package/es/components/textarea/style/dnb-textarea.scss +4 -0
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
- package/es/components/visually-hidden/VisuallyHidden.js +1 -1
- package/es/components/visually-hidden/VisuallyHidden.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/es/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
- package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/es/extensions/forms/Field/Currency/Currency.d.ts +1 -5
- package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.d.ts +3 -1
- package/es/extensions/forms/Field/Date/Date.js +45 -9
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js +20 -11
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/Number/Number.d.ts +5 -1
- package/es/extensions/forms/Field/Number/Number.js +109 -31
- package/es/extensions/forms/Field/Number/Number.js.map +1 -1
- package/es/extensions/forms/Field/Number/style/dnb-number.css +192 -0
- package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
- package/es/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
- package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/es/extensions/forms/Field/Selection/Selection.js +4 -9
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/Field/String/String.d.ts +0 -1
- package/es/extensions/forms/Field/String/String.js +23 -9
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js +14 -23
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
- package/es/extensions/forms/Form/Handler/Handler.js +1 -0
- package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/{extensions/forms → es/extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
- package/es/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
- package/es/extensions/forms/Form/Visibility/index.js.map +1 -0
- package/es/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/es/extensions/forms/Form/hooks/useData.js +29 -0
- package/es/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/es/extensions/forms/Form/index.d.ts +2 -0
- package/es/extensions/forms/Form/index.js +2 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Iterate/Array/Array.js +0 -4
- package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/es/extensions/forms/hooks/useDataValue.js +26 -33
- package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/es/extensions/forms/hooks/useId.d.ts +1 -0
- package/es/extensions/forms/hooks/useId.js +11 -0
- package/es/extensions/forms/hooks/useId.js.map +1 -0
- package/es/extensions/forms/index.d.ts +6 -1
- package/es/extensions/forms/index.js +3 -1
- package/es/extensions/forms/index.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +214 -11
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +16 -18
- package/es/extensions/forms/types.js.map +1 -1
- package/es/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
- package/es/extensions/forms/utils/TestElement/TestElement.js +1 -0
- package/es/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/EventEmitter.d.ts +5 -0
- package/es/shared/helpers/EventEmitter.js.map +1 -1
- package/es/shared/helpers/useEventEmitter.d.ts +2 -0
- package/es/shared/helpers/useEventEmitter.js.map +1 -1
- package/es/shared/helpers/useSharedState.d.ts +15 -0
- package/es/shared/helpers/useSharedState.js +63 -0
- package/es/shared/helpers/useSharedState.js.map +1 -0
- package/es/style/core/utilities.scss +1 -2
- package/es/style/dnb-ui-components.css +232 -27
- package/es/style/dnb-ui-components.min.css +3 -3
- package/es/style/dnb-ui-extensions.css +214 -11
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +214 -11
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/dnb-ui-forms.scss +1 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
- package/es/style/themes/theme-ui/ui-theme-components.css +496 -44
- package/es/style/themes/theme-ui/ui-theme-components.min.css +9 -5
- package/es/style/themes/theme-ui/ui-theme-extensions.css +230 -11
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
- package/es/style/themes/theme-ui/ui-theme-forms.css +230 -12
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
- package/es/style/themes/theme-ui/ui-theme-forms.scss +2 -0
- package/es/style/themes/theme-ui/ui-theme-tags.css +8 -10
- package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
- package/extensions/forms/DataContext/Provider/Provider.js +22 -4
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
- package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
- package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
- package/extensions/forms/Field/Currency/Currency.d.ts +1 -5
- package/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/extensions/forms/Field/Date/Date.d.ts +3 -1
- package/extensions/forms/Field/Date/Date.js +48 -11
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
- package/extensions/forms/Field/Expiry/Expiry.js +21 -11
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/Number/Number.d.ts +5 -1
- package/extensions/forms/Field/Number/Number.js +110 -31
- package/extensions/forms/Field/Number/Number.js.map +1 -1
- package/extensions/forms/Field/Number/style/dnb-number.css +192 -0
- package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
- package/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
- package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +7 -1
- package/extensions/forms/Field/Selection/Selection.js +4 -9
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/Field/String/String.d.ts +0 -1
- package/extensions/forms/Field/String/String.js +23 -9
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.js +0 -4
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js +16 -26
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
- package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
- package/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
- package/extensions/forms/Form/Handler/Handler.js +1 -0
- package/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/{es/extensions/forms → extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
- package/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
- package/extensions/forms/Form/Visibility/index.js.map +1 -0
- package/extensions/forms/Form/hooks/useData.d.ts +10 -0
- package/extensions/forms/Form/hooks/useData.js +30 -0
- package/extensions/forms/Form/hooks/useData.js.map +1 -0
- package/extensions/forms/Form/index.d.ts +2 -0
- package/extensions/forms/Form/index.js +2 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Iterate/Array/Array.js +0 -4
- package/extensions/forms/Iterate/Array/Array.js.map +1 -1
- package/extensions/forms/hooks/useDataValue.js +26 -33
- package/extensions/forms/hooks/useDataValue.js.map +1 -1
- package/extensions/forms/hooks/useId.d.ts +1 -0
- package/extensions/forms/hooks/useId.js +11 -0
- package/extensions/forms/hooks/useId.js.map +1 -0
- package/extensions/forms/index.d.ts +6 -1
- package/extensions/forms/index.js +3 -1
- package/extensions/forms/index.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +214 -11
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +16 -18
- package/extensions/forms/types.js.map +1 -1
- package/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
- package/extensions/forms/utils/TestElement/TestElement.js +1 -0
- package/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/EventEmitter.d.ts +5 -0
- package/shared/helpers/EventEmitter.js.map +1 -1
- package/shared/helpers/useEventEmitter.d.ts +2 -0
- package/shared/helpers/useEventEmitter.js.map +1 -1
- package/shared/helpers/useSharedState.d.ts +15 -0
- package/shared/helpers/useSharedState.js +63 -0
- package/shared/helpers/useSharedState.js.map +1 -0
- package/style/core/utilities.scss +1 -2
- package/style/dnb-ui-components.css +232 -27
- package/style/dnb-ui-components.min.css +3 -3
- package/style/dnb-ui-extensions.css +214 -11
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +214 -11
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/dnb-ui-forms.scss +1 -0
- package/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
- package/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
- package/style/themes/theme-ui/ui-theme-components.css +496 -44
- package/style/themes/theme-ui/ui-theme-components.min.css +9 -5
- package/style/themes/theme-ui/ui-theme-extensions.css +230 -11
- package/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
- package/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
- package/style/themes/theme-ui/ui-theme-forms.css +230 -12
- package/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
- package/style/themes/theme-ui/ui-theme-forms.scss +2 -0
- package/style/themes/theme-ui/ui-theme-tags.css +8 -10
- package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/extensions/forms/Visibility/Visibility.js.map +0 -1
- package/cjs/extensions/forms/Visibility/index.js.map +0 -1
- package/es/extensions/forms/Visibility/Visibility.js.map +0 -1
- package/es/extensions/forms/Visibility/index.js.map +0 -1
- package/extensions/forms/Visibility/Visibility.js.map +0 -1
- package/extensions/forms/Visibility/index.js.map +0 -1
- /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
- /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
- /package/es/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
- /package/es/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
- /package/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
- /package/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
|
@@ -47,6 +47,14 @@ export type MultiInputMaskProps<T extends string> = {
|
|
|
47
47
|
* Runs when the input value changes. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`
|
|
48
48
|
*/
|
|
49
49
|
onChange?: (values: MultiInputMaskValue<T>) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Runs when the input gains focus. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`
|
|
52
|
+
*/
|
|
53
|
+
onFocus?: (values: MultiInputMaskValue<T>) => void;
|
|
54
|
+
/**
|
|
55
|
+
* Runs when the input loses focus. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`
|
|
56
|
+
*/
|
|
57
|
+
onBlur?: (values: MultiInputMaskValue<T>) => void;
|
|
50
58
|
/**
|
|
51
59
|
* Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.
|
|
52
60
|
*/
|
|
@@ -63,8 +71,8 @@ export type MultiInputMaskProps<T extends string> = {
|
|
|
63
71
|
* Text describing the content of the input more than the label. you can also send in a React component, so it gets wrapped inside the Input component.
|
|
64
72
|
*/
|
|
65
73
|
suffix?: React.ReactNode;
|
|
66
|
-
} & Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'ref' | 'value' | 'label'> & SpacingProps;
|
|
67
|
-
declare function MultiInputMask<T extends string>({ label, labelDirection, inputs, delimiter, onChange: onChangeExternal, disabled, status, statusState, values: defaultValues, className, stretch, inputMode, suffix, ...props }: MultiInputMaskProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
} & Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'onFocus' | 'onBlur' | 'ref' | 'value' | 'label'> & SpacingProps;
|
|
75
|
+
declare function MultiInputMask<T extends string>({ label, labelDirection, inputs, delimiter, onChange: onChangeExternal, disabled, status, statusState, values: defaultValues, className, stretch, inputMode, suffix, onBlur, onFocus, ...props }: MultiInputMaskProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
68
76
|
declare namespace MultiInputMask {
|
|
69
77
|
var _formElement: boolean;
|
|
70
78
|
var _supportsSpacingProps: boolean;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
5
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
-
const _excluded = ["label", "labelDirection", "inputs", "delimiter", "onChange", "disabled", "status", "statusState", "values", "className", "stretch", "inputMode", "suffix"],
|
|
6
|
-
_excluded2 = ["id", "label", "value", "mask", "placeholderCharacter", "delimiter", "disabled", "inputRef", "onKeyDown", "onChange"]
|
|
6
|
+
const _excluded = ["label", "labelDirection", "inputs", "delimiter", "onChange", "disabled", "status", "statusState", "values", "className", "stretch", "inputMode", "suffix", "onBlur", "onFocus"],
|
|
7
|
+
_excluded2 = ["id", "label", "value", "mask", "placeholderCharacter", "delimiter", "disabled", "inputRef", "onKeyDown", "onChange", "onBlur", "onFocus"],
|
|
8
|
+
_excluded3 = ["target"];
|
|
9
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
10
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
7
11
|
import React, { useRef } from 'react';
|
|
8
12
|
import Input from '../Input';
|
|
9
13
|
import TextMask from './TextMask';
|
|
@@ -27,7 +31,9 @@ function MultiInputMask(_ref) {
|
|
|
27
31
|
className,
|
|
28
32
|
stretch,
|
|
29
33
|
inputMode,
|
|
30
|
-
suffix
|
|
34
|
+
suffix,
|
|
35
|
+
onBlur,
|
|
36
|
+
onFocus
|
|
31
37
|
} = _ref,
|
|
32
38
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
33
39
|
const [values, onChange] = useMultiInputValue({
|
|
@@ -63,6 +69,16 @@ function MultiInputMask(_ref) {
|
|
|
63
69
|
delimiter: index !== inputs.length - 1 ? delimiter : undefined,
|
|
64
70
|
onKeyDown: onKeyDown,
|
|
65
71
|
onChange: onChange,
|
|
72
|
+
onFocus: () => {
|
|
73
|
+
if (onFocus) {
|
|
74
|
+
onFocus(values);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
onBlur: () => {
|
|
78
|
+
if (onBlur) {
|
|
79
|
+
onBlur(values);
|
|
80
|
+
}
|
|
81
|
+
},
|
|
66
82
|
disabled: disabled,
|
|
67
83
|
inputRef: getInputRef
|
|
68
84
|
})))
|
|
@@ -114,14 +130,17 @@ function MultiInputMaskInput(_ref2) {
|
|
|
114
130
|
disabled,
|
|
115
131
|
inputRef,
|
|
116
132
|
onKeyDown,
|
|
117
|
-
onChange
|
|
133
|
+
onChange,
|
|
134
|
+
onBlur,
|
|
135
|
+
onFocus
|
|
118
136
|
} = _ref2,
|
|
119
137
|
attributes = _objectWithoutProperties(_ref2, _excluded2);
|
|
138
|
+
const shouldHighlight = !disabled && /\w+/.test(value);
|
|
120
139
|
const markupId = `${id}-${makeUniqueId()}`;
|
|
121
140
|
return React.createElement(React.Fragment, null, React.createElement(TextMask, _extends({
|
|
122
141
|
id: `${markupId}__input`,
|
|
123
142
|
"data-mask-id": id,
|
|
124
|
-
className: "dnb-input__input dnb-multi-input-mask__input" + (
|
|
143
|
+
className: "dnb-input__input dnb-multi-input-mask__input" + (shouldHighlight ? " dnb-multi-input-mask__input--highlight" : ""),
|
|
125
144
|
disabled: disabled,
|
|
126
145
|
size: mask.length,
|
|
127
146
|
mask: mask,
|
|
@@ -133,7 +152,20 @@ function MultiInputMaskInput(_ref2) {
|
|
|
133
152
|
"aria-labelledby": `${markupId}__label`,
|
|
134
153
|
ref: inputRef,
|
|
135
154
|
onKeyDown: onKeyDown,
|
|
136
|
-
|
|
155
|
+
onBlur: onBlur,
|
|
156
|
+
onFocus: _ref3 => {
|
|
157
|
+
let {
|
|
158
|
+
target
|
|
159
|
+
} = _ref3,
|
|
160
|
+
event = _objectWithoutProperties(_ref3, _excluded3);
|
|
161
|
+
target.focus();
|
|
162
|
+
target.select();
|
|
163
|
+
if (onFocus) {
|
|
164
|
+
onFocus(_objectSpread({
|
|
165
|
+
target
|
|
166
|
+
}, event));
|
|
167
|
+
}
|
|
168
|
+
},
|
|
137
169
|
onChange: event => {
|
|
138
170
|
onChange(id, removePlaceholder(event.target.value, placeholderCharacter));
|
|
139
171
|
}
|
|
@@ -143,17 +175,11 @@ function MultiInputMaskInput(_ref2) {
|
|
|
143
175
|
hidden: true
|
|
144
176
|
}, label), delimiter && React.createElement("span", {
|
|
145
177
|
"aria-hidden": true,
|
|
146
|
-
className: 'dnb-multi-input-mask__delimiter' + (
|
|
178
|
+
className: 'dnb-multi-input-mask__delimiter' + (shouldHighlight ? " dnb-multi-input-mask__delimiter--highlight" : "")
|
|
147
179
|
}, delimiter));
|
|
148
180
|
function removePlaceholder(value, placeholder) {
|
|
149
181
|
return value.replace(RegExp(placeholder, 'gm'), '');
|
|
150
182
|
}
|
|
151
|
-
function onFocus({
|
|
152
|
-
target
|
|
153
|
-
}) {
|
|
154
|
-
target.focus();
|
|
155
|
-
target.select();
|
|
156
|
-
}
|
|
157
183
|
}
|
|
158
184
|
export default MultiInputMask;
|
|
159
185
|
MultiInputMask._formElement = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiInputMask.js","names":["React","useRef","Input","TextMask","useHandleCursorPosition","classnames","FormLabel","createSpacingClasses","useMultiInputValue","makeUniqueId","MultiInputMask","_ref","label","labelDirection","inputs","delimiter","onChange","onChangeExternal","disabled","status","statusState","values","defaultValues","className","stretch","inputMode","suffix","props","_objectWithoutProperties","_excluded","callback","inputRefs","onKeyDown","current","getKeysToHandle","WrapperElement","createElement","element","onClick","onLegendClick","vertical","_extends","status_state","input_element","map","input","index","MultiInputMaskInput","key","id","value","length","undefined","inputRef","getInputRef","firstInput","focus","setSelectionRange","ref","includes","push","uniqueMasks","getUniqueMasks","size","pattern","next","replace","RegExp","reduce","keys","mask","masks","Set","forEach","add","String","_ref2","placeholderCharacter","attributes","_excluded2","markupId","Fragment","test","placeholderChar","guide","showMask","keepCharPositions","onFocus","event","removePlaceholder","target","htmlFor","hidden","placeholder","select","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/input-masked/MultiInputMask.tsx"],"sourcesContent":["import React, { Fragment, MutableRefObject, useRef } from 'react'\nimport Input from '../Input'\nimport TextMask from './TextMask'\nimport useHandleCursorPosition from './hooks/useHandleCursorPosition'\nimport classnames from 'classnames'\nimport FormLabel from '../FormLabel'\nimport { SpacingProps } from '../space/types'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { FormStatusState, FormStatusText } from '../FormStatus'\nimport { useMultiInputValue } from './hooks/useMultiInputValues'\nimport { makeUniqueId } from '../../shared/component-helper'\n\nexport type MultiInputMaskInput<T extends string> = {\n /**\n * Defines the id for the input. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` parameters.\n */\n id: T\n /**\n * Label used by the input. The label itself is hidden, but required to uphold accessibility standards for screen readers.\n */\n label: React.ReactNode\n /**\n * Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The length sets the size of the input, so an array of two items would produce an input of two characters\n */\n mask: RegExp[]\n /**\n * Sets the placeholder character used for the input.\n */\n placeholderCharacter: string\n} & Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'ref'>\n\nexport type MultiInputMaskValue<T extends string> = {\n // eslint-disable-next-line no-unused-vars\n [K in T]: string\n}\n\nexport type MultiInputMaskProps<T extends string> = {\n /**\n * The label describing the group of inputs inside the components.\n */\n label?: React.ReactNode\n /**\n * Use to change the label layout direction. Defaults to `horizontal`.\n */\n labelDirection?: 'vertical' | 'horizontal'\n /**\n * Used to define the different inputs representing the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`\n */\n inputs: MultiInputMaskInput<T>[]\n /**\n * Values used for the inputs inside the component. Expects an object with keys matching the id's defined in `inputs`\n */\n values?: MultiInputMaskValue<T>\n /**\n * Defines the delimiter used to separate the inputs inside the component.\n */\n delimiter?: string\n /**\n * Runs when the input value changes. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`\n */\n onChange?: (values: MultiInputMaskValue<T>) => void\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Set it to `true` in order to stretch the input to the available space. Defaults to false.\n */\n stretch?: boolean\n /**\n * Text describing the content of the input more than the label. you can also send in a React component, so it gets wrapped inside the Input component.\n */\n suffix?: React.ReactNode\n} & Omit<\n React.HTMLProps<HTMLInputElement>,\n 'onChange' | 'ref' | 'value' | 'label'\n> &\n SpacingProps\n\nfunction MultiInputMask<T extends string>({\n label,\n labelDirection = 'horizontal',\n inputs,\n delimiter,\n onChange: onChangeExternal,\n disabled,\n status,\n statusState,\n values: defaultValues,\n className,\n stretch,\n inputMode,\n suffix,\n ...props\n}: MultiInputMaskProps<T>) {\n const [values, onChange] = useMultiInputValue({\n inputs,\n defaultValues,\n callback: onChangeExternal,\n })\n\n const inputRefs = useRef<Array<MutableRefObject<HTMLInputElement>>>([])\n\n const { onKeyDown } = useHandleCursorPosition(\n inputRefs.current,\n getKeysToHandle()\n )\n\n const WrapperElement = label ? 'fieldset' : 'div'\n\n return (\n <WrapperElement\n className={classnames(\n 'dnb-multi-input-mask__fieldset',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__fieldset--horizontal',\n createSpacingClasses(props)\n )}\n >\n {label && (\n <FormLabel\n className={classnames(\n 'dnb-multi-input-mask__legend',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__legend--horizontal'\n )}\n element=\"legend\"\n onClick={onLegendClick}\n disabled={disabled}\n vertical={labelDirection === 'vertical'}\n >\n {/* This <span/> wrapper is needed to make hover work in Safari Desktop */}\n <span>{label}</span>\n </FormLabel>\n )}\n <Input\n {...props}\n className={classnames('dnb-multi-input-mask', className)}\n disabled={disabled}\n status={status}\n status_state={statusState}\n suffix={suffix}\n stretch={stretch}\n input_element={inputs.map((input, index) => (\n <MultiInputMaskInput\n key={input.id}\n {...input}\n inputMode={inputMode}\n value={values[input.id]}\n delimiter={index !== inputs.length - 1 ? delimiter : undefined}\n onKeyDown={onKeyDown}\n onChange={onChange}\n disabled={disabled}\n inputRef={getInputRef}\n />\n ))}\n />\n </WrapperElement>\n )\n\n // Event handlers\n function onLegendClick() {\n if (disabled) {\n return\n }\n\n const firstInput = inputRefs.current[0].current\n\n firstInput.focus()\n firstInput.setSelectionRange(0, 0)\n }\n\n // Utilities\n function getInputRef(ref: any) {\n const inputRef = ref?.inputRef\n\n if (inputRef && !inputRefs.current.includes(inputRef)) {\n inputRefs.current.push(inputRef)\n }\n }\n\n function getKeysToHandle() {\n const uniqueMasks = getUniqueMasks()\n\n // Return the only one RegExp since all the inputs are using the same mask\n if (uniqueMasks.size === 1) {\n const pattern = uniqueMasks.values().next().value.replace(/\\//g, '')\n return new RegExp(pattern)\n }\n\n // If there are multiple types of masks used, then map the maps to an object based on input ids\n // So that useHandleCursorPosition can do a per character test to see if the pressed key should be handled or not\n return inputs.reduce(\n (keys, { id, mask }) => {\n keys[id] = mask\n\n return keys\n },\n {} as Record<T, RegExp[]>\n )\n }\n\n function getUniqueMasks() {\n const masks = new Set()\n\n inputs.forEach((input) => {\n input.mask.forEach((pattern) => masks.add(String(pattern)))\n })\n\n return masks\n }\n}\n\ntype MultiInputMaskInputProps<T extends string> =\n MultiInputMaskInput<T> & {\n id: MultiInputMaskInput<T>['id']\n label: MultiInputMaskInput<T>['label']\n value: string\n mask: MultiInputMaskInput<T>['mask']\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n delimiter?: MultiInputMaskProps<T>['delimiter']\n disabled: boolean\n onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void\n onChange: (\n id: string,\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n ) => void\n inputRef: any\n }\n\nfunction MultiInputMaskInput<T extends string>({\n id,\n label,\n value,\n mask,\n placeholderCharacter,\n delimiter,\n disabled,\n inputRef,\n onKeyDown,\n onChange,\n ...attributes\n}: MultiInputMaskInputProps<T>) {\n const markupId = `${id}-${makeUniqueId()}`\n\n return (\n <>\n <TextMask\n id={`${markupId}__input`}\n data-mask-id={id}\n className={classnames(\n 'dnb-input__input',\n 'dnb-multi-input-mask__input',\n /\\d+/.test(value) && 'dnb-multi-input-mask__input--highlight'\n )}\n disabled={disabled}\n size={mask.length}\n mask={mask}\n value={value ?? ''}\n placeholderChar={placeholderCharacter}\n guide={true}\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n aria-labelledby={`${markupId}__label`}\n ref={inputRef}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onChange={(event) => {\n onChange(\n id,\n removePlaceholder(event.target.value, placeholderCharacter)\n )\n }}\n {...attributes}\n />\n <label\n id={`${markupId}__label`}\n htmlFor={`${markupId}__input`}\n hidden\n >\n {label}\n </label>\n {delimiter && (\n <span\n aria-hidden\n className={classnames(\n 'dnb-multi-input-mask__delimiter',\n value && 'dnb-multi-input-mask__delimiter--highlight'\n )}\n >\n {delimiter}\n </span>\n )}\n </>\n )\n\n function removePlaceholder(value: string, placeholder: string) {\n return value.replace(RegExp(placeholder, 'gm'), '')\n }\n\n function onFocus({ target }: React.FocusEvent<HTMLInputElement>) {\n target.focus()\n target.select()\n }\n}\n\nexport default MultiInputMask\n\nMultiInputMask._formElement = true\nMultiInputMask._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiInputMask.js","names":["React","useRef","Input","TextMask","useHandleCursorPosition","classnames","FormLabel","createSpacingClasses","useMultiInputValue","makeUniqueId","MultiInputMask","_ref","label","labelDirection","inputs","delimiter","onChange","onChangeExternal","disabled","status","statusState","values","defaultValues","className","stretch","inputMode","suffix","onBlur","onFocus","props","_objectWithoutProperties","_excluded","callback","inputRefs","onKeyDown","current","getKeysToHandle","WrapperElement","createElement","element","onClick","onLegendClick","vertical","_extends","status_state","input_element","map","input","index","MultiInputMaskInput","key","id","value","length","undefined","inputRef","getInputRef","firstInput","focus","setSelectionRange","ref","includes","push","uniqueMasks","getUniqueMasks","size","pattern","next","replace","RegExp","reduce","keys","mask","masks","Set","forEach","add","String","_ref2","placeholderCharacter","attributes","_excluded2","shouldHighlight","test","markupId","Fragment","placeholderChar","guide","showMask","keepCharPositions","_ref3","target","event","_excluded3","select","_objectSpread","removePlaceholder","htmlFor","hidden","placeholder","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/input-masked/MultiInputMask.tsx"],"sourcesContent":["import React, { Fragment, MutableRefObject, useRef } from 'react'\nimport Input from '../Input'\nimport TextMask from './TextMask'\nimport useHandleCursorPosition from './hooks/useHandleCursorPosition'\nimport classnames from 'classnames'\nimport FormLabel from '../FormLabel'\nimport { SpacingProps } from '../space/types'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { FormStatusState, FormStatusText } from '../FormStatus'\nimport { useMultiInputValue } from './hooks/useMultiInputValues'\nimport { makeUniqueId } from '../../shared/component-helper'\n\nexport type MultiInputMaskInput<T extends string> = {\n /**\n * Defines the id for the input. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` parameters.\n */\n id: T\n /**\n * Label used by the input. The label itself is hidden, but required to uphold accessibility standards for screen readers.\n */\n label: React.ReactNode\n /**\n * Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The length sets the size of the input, so an array of two items would produce an input of two characters\n */\n mask: RegExp[]\n /**\n * Sets the placeholder character used for the input.\n */\n placeholderCharacter: string\n} & Omit<React.HTMLProps<HTMLInputElement>, 'onChange' | 'ref'>\n\nexport type MultiInputMaskValue<T extends string> = {\n // eslint-disable-next-line no-unused-vars\n [K in T]: string\n}\n\nexport type MultiInputMaskProps<T extends string> = {\n /**\n * The label describing the group of inputs inside the components.\n */\n label?: React.ReactNode\n /**\n * Use to change the label layout direction. Defaults to `horizontal`.\n */\n labelDirection?: 'vertical' | 'horizontal'\n /**\n * Used to define the different inputs representing the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`\n */\n inputs: MultiInputMaskInput<T>[]\n /**\n * Values used for the inputs inside the component. Expects an object with keys matching the id's defined in `inputs`\n */\n values?: MultiInputMaskValue<T>\n /**\n * Defines the delimiter used to separate the inputs inside the component.\n */\n delimiter?: string\n /**\n * Runs when the input value changes. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`\n */\n onChange?: (values: MultiInputMaskValue<T>) => void\n /**\n * Runs when the input gains focus. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`\n */\n onFocus?: (values: MultiInputMaskValue<T>) => void\n /**\n * Runs when the input loses focus. Has an object parameter with keys matching the id's defined in `inputs`. i.e. `{month: string, year: string}`\n */\n onBlur?: (values: MultiInputMaskValue<T>) => void\n /**\n * Text with a status message. The style defaults to an error message. You can use `true` to only get the status color, without a message.\n */\n status?: FormStatusText\n /**\n * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.\n */\n statusState?: FormStatusState\n /**\n * Set it to `true` in order to stretch the input to the available space. Defaults to false.\n */\n stretch?: boolean\n /**\n * Text describing the content of the input more than the label. you can also send in a React component, so it gets wrapped inside the Input component.\n */\n suffix?: React.ReactNode\n} & Omit<\n React.HTMLProps<HTMLInputElement>,\n 'onChange' | 'onFocus' | 'onBlur' | 'ref' | 'value' | 'label'\n> &\n SpacingProps\n\nfunction MultiInputMask<T extends string>({\n label,\n labelDirection = 'horizontal',\n inputs,\n delimiter,\n onChange: onChangeExternal,\n disabled,\n status,\n statusState,\n values: defaultValues,\n className,\n stretch,\n inputMode,\n suffix,\n onBlur,\n onFocus,\n ...props\n}: MultiInputMaskProps<T>) {\n const [values, onChange] = useMultiInputValue({\n inputs,\n defaultValues,\n callback: onChangeExternal,\n })\n\n const inputRefs = useRef<Array<MutableRefObject<HTMLInputElement>>>([])\n\n const { onKeyDown } = useHandleCursorPosition(\n inputRefs.current,\n getKeysToHandle()\n )\n\n const WrapperElement = label ? 'fieldset' : 'div'\n\n return (\n <WrapperElement\n className={classnames(\n 'dnb-multi-input-mask__fieldset',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__fieldset--horizontal',\n createSpacingClasses(props)\n )}\n >\n {label && (\n <FormLabel\n className={classnames(\n 'dnb-multi-input-mask__legend',\n labelDirection === 'horizontal' &&\n 'dnb-multi-input-mask__legend--horizontal'\n )}\n element=\"legend\"\n onClick={onLegendClick}\n disabled={disabled}\n vertical={labelDirection === 'vertical'}\n >\n {/* This <span/> wrapper is needed to make hover work in Safari Desktop */}\n <span>{label}</span>\n </FormLabel>\n )}\n <Input\n {...props}\n className={classnames('dnb-multi-input-mask', className)}\n disabled={disabled}\n status={status}\n status_state={statusState}\n suffix={suffix}\n stretch={stretch}\n input_element={inputs.map((input, index) => (\n <MultiInputMaskInput\n key={input.id}\n {...input}\n inputMode={inputMode}\n value={values[input.id]}\n delimiter={index !== inputs.length - 1 ? delimiter : undefined}\n onKeyDown={onKeyDown}\n onChange={onChange}\n onFocus={() => {\n if (onFocus) {\n onFocus(values)\n }\n }}\n onBlur={() => {\n if (onBlur) {\n onBlur(values)\n }\n }}\n disabled={disabled}\n inputRef={getInputRef}\n />\n ))}\n />\n </WrapperElement>\n )\n\n // Event handlers\n function onLegendClick() {\n if (disabled) {\n return\n }\n\n const firstInput = inputRefs.current[0].current\n\n firstInput.focus()\n firstInput.setSelectionRange(0, 0)\n }\n\n // Utilities\n function getInputRef(ref: any) {\n const inputRef = ref?.inputRef\n\n if (inputRef && !inputRefs.current.includes(inputRef)) {\n inputRefs.current.push(inputRef)\n }\n }\n\n function getKeysToHandle() {\n const uniqueMasks = getUniqueMasks()\n\n // Return the only one RegExp since all the inputs are using the same mask\n if (uniqueMasks.size === 1) {\n const pattern = uniqueMasks.values().next().value.replace(/\\//g, '')\n return new RegExp(pattern)\n }\n\n // If there are multiple types of masks used, then map the maps to an object based on input ids\n // So that useHandleCursorPosition can do a per character test to see if the pressed key should be handled or not\n return inputs.reduce(\n (keys, { id, mask }) => {\n keys[id] = mask\n\n return keys\n },\n {} as Record<T, RegExp[]>\n )\n }\n\n function getUniqueMasks() {\n const masks = new Set()\n\n inputs.forEach((input) => {\n input.mask.forEach((pattern) => masks.add(String(pattern)))\n })\n\n return masks\n }\n}\n\ntype MultiInputMaskInputProps<T extends string> =\n MultiInputMaskInput<T> & {\n id: MultiInputMaskInput<T>['id']\n label: MultiInputMaskInput<T>['label']\n value: string\n mask: MultiInputMaskInput<T>['mask']\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n delimiter?: MultiInputMaskProps<T>['delimiter']\n disabled: boolean\n onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void\n onChange: (\n id: string,\n placeholderCharacter: MultiInputMaskInput<T>['placeholderCharacter']\n ) => void\n inputRef: any\n }\n\nfunction MultiInputMaskInput<T extends string>({\n id,\n label,\n value,\n mask,\n placeholderCharacter,\n delimiter,\n disabled,\n inputRef,\n onKeyDown,\n onChange,\n onBlur,\n onFocus,\n ...attributes\n}: MultiInputMaskInputProps<T>) {\n const shouldHighlight = !disabled && /\\w+/.test(value)\n const markupId = `${id}-${makeUniqueId()}`\n\n return (\n <>\n <TextMask\n id={`${markupId}__input`}\n data-mask-id={id}\n className={classnames(\n 'dnb-input__input',\n 'dnb-multi-input-mask__input',\n shouldHighlight && 'dnb-multi-input-mask__input--highlight'\n )}\n disabled={disabled}\n size={mask.length}\n mask={mask}\n value={value ?? ''}\n placeholderChar={placeholderCharacter}\n guide={true}\n showMask={true}\n keepCharPositions={false} // so we can overwrite next value, if it already exists\n aria-labelledby={`${markupId}__label`}\n ref={inputRef}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n onFocus={({ target, ...event }) => {\n target.focus()\n target.select()\n\n if (onFocus) {\n onFocus({ target, ...event })\n }\n }}\n onChange={(event) => {\n onChange(\n id,\n removePlaceholder(event.target.value, placeholderCharacter)\n )\n }}\n {...attributes}\n />\n <label\n id={`${markupId}__label`}\n htmlFor={`${markupId}__input`}\n hidden\n >\n {label}\n </label>\n {delimiter && (\n <span\n aria-hidden\n className={classnames(\n 'dnb-multi-input-mask__delimiter',\n shouldHighlight && 'dnb-multi-input-mask__delimiter--highlight'\n )}\n >\n {delimiter}\n </span>\n )}\n </>\n )\n\n function removePlaceholder(value: string, placeholder: string) {\n return value.replace(RegExp(placeholder, 'gm'), '')\n }\n}\n\nexport default MultiInputMask\n\nMultiInputMask._formElement = true\nMultiInputMask._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
@@ -15,13 +15,14 @@ function useHandleCursorPosition(inputRefs, keysToHandle) {
|
|
|
15
15
|
keysToHandle,
|
|
16
16
|
input
|
|
17
17
|
})) === null || _getKeysToHandle === void 0 ? void 0 : _getKeysToHandle.test(pressedKey)) || /(ArrowRight|ArrowLeft|Backspace)/.test(pressedKey);
|
|
18
|
+
const hasSelection = hasSelectedValue(input);
|
|
19
|
+
const inputPosition = !hasSelection && getInputPosition(input, inputs);
|
|
18
20
|
const initialSelectionStart = input.selectionStart;
|
|
19
|
-
const inputPosition = getInputPosition(input, inputs);
|
|
20
21
|
window.requestAnimationFrame(() => {
|
|
21
|
-
|
|
22
|
-
if (!hasPressedKeysToHandle) {
|
|
22
|
+
if (!hasPressedKeysToHandle || hasSelection) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
+
const caretPosition = getCaretPosition(input);
|
|
25
26
|
if (caretPosition === 'last' && inputPosition !== 'last' && !(initialSelectionStart === 1 && pressedKey === 'ArrowRight')) {
|
|
26
27
|
return goToInput('next', input, inputs);
|
|
27
28
|
}
|
|
@@ -72,6 +73,9 @@ function getSelectionPositions(input) {
|
|
|
72
73
|
end: Number(input.size)
|
|
73
74
|
};
|
|
74
75
|
}
|
|
76
|
+
function hasSelectedValue(input) {
|
|
77
|
+
return input.selectionEnd > input.selectionStart;
|
|
78
|
+
}
|
|
75
79
|
function getCaretPosition(input) {
|
|
76
80
|
const {
|
|
77
81
|
start,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHandleCursorPosition.js","names":["useEffect","useRef","useHandleCursorPosition","inputRefs","keysToHandle","inputList","refsToInputList","current","onKeyDown","event","_getKeysToHandle","inputs","input","target","pressedKey","key","hasPressedKeysToHandle","getKeysToHandle","test","
|
|
1
|
+
{"version":3,"file":"useHandleCursorPosition.js","names":["useEffect","useRef","useHandleCursorPosition","inputRefs","keysToHandle","inputList","refsToInputList","current","onKeyDown","event","_getKeysToHandle","inputs","input","target","pressedKey","key","hasPressedKeysToHandle","getKeysToHandle","test","hasSelection","hasSelectedValue","inputPosition","getInputPosition","initialSelectionStart","selectionStart","window","requestAnimationFrame","caretPosition","getCaretPosition","goToInput","map","ref","filter","Boolean","undefined","RegExp","masks","dataset","maskId","selection","selectionEnd","maskIndex","size","length","firstInput","lastInput","getSelectionPositions","start","end","Number","to","currentInputIndex","indexOf","siblingIndex","siblingInput","focus","setSelectionRange"],"sources":["../../../../../src/components/input-masked/hooks/useHandleCursorPosition.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react'\n\nfunction useHandleCursorPosition(\n inputRefs: MutableRefObject<HTMLInputElement>[],\n keysToHandle?: RegExp | { [inputId: string]: RegExp[] }\n) {\n const inputList = useRef(refsToInputList(inputRefs))\n\n // To keep the refs.current in synch with component of use, or else it wont be possible to navigate to the next input, without triggering a re-render first.\n useEffect(() => {\n inputList.current = refsToInputList(inputRefs)\n }, [inputRefs])\n\n function onKeyDown(event: React.KeyboardEvent) {\n const inputs = inputList.current\n const input = event.target as HTMLInputElement\n\n const pressedKey = event.key\n\n const hasPressedKeysToHandle =\n getKeysToHandle({ keysToHandle, input })?.test(pressedKey) ||\n /(ArrowRight|ArrowLeft|Backspace)/.test(pressedKey)\n\n const hasSelection = hasSelectedValue(input)\n\n const inputPosition = !hasSelection && getInputPosition(input, inputs)\n\n const initialSelectionStart = input.selectionStart\n\n window.requestAnimationFrame(() => {\n if (!hasPressedKeysToHandle || hasSelection) {\n return // stop here\n }\n\n const caretPosition = getCaretPosition(input)\n\n if (\n caretPosition === 'last' &&\n inputPosition !== 'last' &&\n !(initialSelectionStart === 1 && pressedKey === 'ArrowRight')\n ) {\n return goToInput('next', input, inputs)\n }\n\n if (\n caretPosition === 'first' &&\n inputPosition !== 'first' &&\n !(\n initialSelectionStart === 1 &&\n (pressedKey === 'ArrowLeft' || pressedKey === 'Backspace')\n )\n ) {\n return goToInput('previous', input, inputs)\n }\n })\n }\n\n return { onKeyDown }\n}\n\n// Helpers\nfunction refsToInputList(inputRefs: MutableRefObject<HTMLInputElement>[]) {\n return inputRefs.map((ref) => ref.current).filter(Boolean)\n}\n\ntype GetKeysToHandleParams = {\n keysToHandle: RegExp | { [inputId: string]: RegExp[] }\n input: HTMLInputElement\n}\n\nfunction getKeysToHandle({ keysToHandle, input }: GetKeysToHandleParams) {\n if (!keysToHandle) {\n return undefined\n }\n\n if (keysToHandle instanceof RegExp) {\n return keysToHandle\n }\n\n const masks = keysToHandle[input.dataset.maskId]\n\n const selection =\n input.selectionStart === input.selectionEnd\n ? input.selectionStart\n : undefined\n\n if (!selection) {\n return undefined\n }\n\n const maskIndex = selection === input.size ? masks.length - 1 : selection\n\n return masks[maskIndex]\n}\n\nfunction getInputPosition(\n input: HTMLInputElement,\n inputs: HTMLInputElement[]\n) {\n const firstInput = inputs[0]\n const lastInput = inputs[inputs.length - 1]\n\n if (input === firstInput) {\n return 'first'\n }\n\n if (input === lastInput) {\n return 'last'\n }\n\n return 'non-initial'\n}\n\nfunction getSelectionPositions(input: HTMLInputElement) {\n return { start: 0, end: Number(input.size) }\n}\n\nfunction hasSelectedValue(input: HTMLInputElement) {\n return input.selectionEnd > input.selectionStart\n}\n\nfunction getCaretPosition(input: HTMLInputElement) {\n const { start, end } = getSelectionPositions(input)\n\n const selectionStart = input.selectionStart\n const selectionEnd = input.selectionEnd\n\n if (selectionStart === start && selectionEnd === start) {\n return 'first'\n }\n\n if (selectionStart === end && selectionEnd === end) {\n return 'last'\n }\n\n return 'non-initial'\n}\n\nfunction goToInput(\n to: 'next' | 'previous',\n input: HTMLInputElement,\n inputs: HTMLInputElement[]\n) {\n const currentInputIndex = inputs.indexOf(input)\n\n const siblingIndex =\n to === 'next'\n ? currentInputIndex + 1\n : to === 'previous'\n ? currentInputIndex - 1\n : 0\n\n const siblingInput = inputs[siblingIndex]\n\n const { start, end } = getSelectionPositions(siblingInput)\n\n siblingInput.focus()\n\n if (to === 'next') {\n return siblingInput.setSelectionRange(start, start)\n }\n\n if (to === 'previous') {\n return siblingInput.setSelectionRange(end, end)\n }\n}\n\nexport default useHandleCursorPosition\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MultiInputMaskProps, MultiInputMaskValue } from '../MultiInputMask';
|
|
2
|
-
type
|
|
2
|
+
type UseMultiInputValues<T extends string> = {
|
|
3
3
|
inputs: MultiInputMaskProps<T>['inputs'];
|
|
4
4
|
defaultValues?: MultiInputMaskProps<T>['values'];
|
|
5
5
|
callback?: (values: MultiInputMaskProps<T>['values']) => void;
|
|
6
6
|
};
|
|
7
|
-
export declare function useMultiInputValue<T extends string>({ inputs, defaultValues, callback, }:
|
|
7
|
+
export declare function useMultiInputValue<T extends string>({ inputs, defaultValues, callback, }: UseMultiInputValues<T>): readonly [MultiInputMaskValue<T>, (id: string, value: string) => void];
|
|
8
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultiInputValues.js","names":["useState","useMultiInputValue","inputs","defaultValues","callback","values","setValues","createDefaultValues","reduce","input","id","onChange","value","updatedValues","_objectSpread"],"sources":["../../../../../src/components/input-masked/hooks/useMultiInputValues.ts"],"sourcesContent":["import { useState } from 'react'\nimport {\n MultiInputMaskProps,\n MultiInputMaskValue,\n} from '../MultiInputMask'\n\ntype
|
|
1
|
+
{"version":3,"file":"useMultiInputValues.js","names":["useState","useMultiInputValue","inputs","defaultValues","callback","values","setValues","createDefaultValues","reduce","input","id","onChange","value","updatedValues","_objectSpread"],"sources":["../../../../../src/components/input-masked/hooks/useMultiInputValues.ts"],"sourcesContent":["import { useState } from 'react'\nimport {\n MultiInputMaskProps,\n MultiInputMaskValue,\n} from '../MultiInputMask'\n\ntype UseMultiInputValues<T extends string> = {\n inputs: MultiInputMaskProps<T>['inputs']\n defaultValues?: MultiInputMaskProps<T>['values']\n callback?: (values: MultiInputMaskProps<T>['values']) => void\n}\n\nexport function useMultiInputValue<T extends string>({\n inputs,\n defaultValues,\n callback,\n}: UseMultiInputValues<T>) {\n const [values, setValues] = useState<MultiInputMaskValue<T>>(\n defaultValues ? defaultValues : createDefaultValues()\n )\n\n function createDefaultValues() {\n return inputs.reduce((values, input) => {\n values[input.id] = ''\n\n return values\n }, {} as MultiInputMaskValue<T>)\n }\n\n function onChange(id: string, value: string) {\n const updatedValues = { ...values, [id]: value }\n\n setValues(updatedValues)\n if (callback) {\n callback(updatedValues)\n }\n }\n\n return [values, onChange] as const\n}\n"],"mappings":";;;;;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAYhC,OAAO,SAASC,kBAAkBA,CAAmB;EACnDC,MAAM;EACNC,aAAa;EACbC;AACsB,CAAC,EAAE;EACzB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGN,QAAQ,CAClCG,aAAa,GAAGA,aAAa,GAAGI,mBAAmB,CAAC,CACtD,CAAC;EAED,SAASA,mBAAmBA,CAAA,EAAG;IAC7B,OAAOL,MAAM,CAACM,MAAM,CAAC,CAACH,MAAM,EAAEI,KAAK,KAAK;MACtCJ,MAAM,CAACI,KAAK,CAACC,EAAE,CAAC,GAAG,EAAE;MAErB,OAAOL,MAAM;IACf,CAAC,EAAE,CAAC,CAA2B,CAAC;EAClC;EAEA,SAASM,QAAQA,CAACD,EAAU,EAAEE,KAAa,EAAE;IAC3C,MAAMC,aAAa,GAAAC,aAAA,CAAAA,aAAA,KAAQT,MAAM;MAAE,CAACK,EAAE,GAAGE;IAAK,EAAE;IAEhDN,SAAS,CAACO,aAAa,CAAC;IACxB,IAAIT,QAAQ,EAAE;MACZA,QAAQ,CAACS,aAAa,CAAC;IACzB;EACF;EAEA,OAAO,CAACR,MAAM,EAAEM,QAAQ,CAAC;AAC3B"}
|
|
@@ -40,7 +40,7 @@ export default class NumberFormat extends React.PureComponent {
|
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
_defineProperty(this, "onClickHandler", () => {
|
|
43
|
-
if (
|
|
43
|
+
if ((isTrue(this.props.selectall) || isTrue(this.props.always_selectall)) && !hasSelectedText()) {
|
|
44
44
|
this.setFocus();
|
|
45
45
|
}
|
|
46
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberFormat.js","names":["React","PropTypes","classnames","Context","warn","isTrue","makeUniqueId","validateDOMAttributes","convertJsxToString","extendPropsWithContextInClassComponent","extend","detectOutsideClick","hasSelectedText","IS_IOS","spacingPropTypes","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Tooltip","injectTooltipSemantic","format","showSelectionNotice","runIOSSelectionFix","NumberFormat","PureComponent","constructor","props","_defineProperty","_this$context$getTran","_this$context$getTran2","value","cleanedValue","label","context","getTranslation","clipboard_copy","run","_ref","current","setState","selected","clearTimeout","_selectAllTimeout","setTimeout","setFocus","always_selectall","createRef","_selectionRef","_id","id","state","omitCurrencySign","componentDidMount","hasiOSFix","componentWillUnmount","_this$outsideClick","outsideClick","remove","_this$_selectionRef$c","focus","selectAll","copy_selection","onBlurHandler","elem","selection","window","getSelection","range","document","createRange","selectNodeContents","removeAllRanges","addRange","e","runFix","comp","className","isValidElement","cloneElement","createElement","render","defaultProps","_value","prefix","suffix","children","currency","currency_display","currency_position","compact","ban","nin","phone","org","percent","link","_link","tooltip","skeleton","options","locale","decimals","omit_rounding","clean","selectall","clean_copy_value","srLabel","element","class","_className","_rest","_objectWithoutProperties","_excluded","rest","formatOptions","omit_currency_sign","returnAria","useContext","_objectSpread","number","display","aria","lang","attributes","ref","displayParams","onClick","onClickHandler","onContextMenu","onContextMenuHandler","Fragment","String","_extends","href","Element","tabIndex","onBlur","onCopy","shortcutHandler","targetElement","process","env","NODE_ENV","propTypes","string","oneOfType","node","func","bool","oneOf","object","_supportsSpacingProps"],"sources":["../../../../src/components/number-format/NumberFormat.js"],"sourcesContent":["/**\n * Web NumberFormat Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n validateDOMAttributes,\n convertJsxToString,\n extendPropsWithContextInClassComponent,\n extend,\n detectOutsideClick,\n} from '../../shared/component-helper'\nimport { hasSelectedText, IS_IOS } from '../../shared/helpers'\nimport {\n spacingPropTypes,\n createSpacingClasses,\n} from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Tooltip, { injectTooltipSemantic } from '../tooltip/Tooltip'\nimport {\n format,\n showSelectionNotice,\n runIOSSelectionFix,\n} from './NumberUtils'\n\nexport default class NumberFormat extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n locale: PropTypes.string,\n prefix: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n suffix: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n // currency\n currency: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n currency_display: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['code', 'name', 'symbol', 'narrowSymbol', '']),\n ]),\n currency_position: PropTypes.oneOf(['auto', 'before', 'after']),\n\n // shortens any number or currency including an abbreviation\n compact: PropTypes.oneOfType([\n PropTypes.oneOf(['short', 'long']),\n PropTypes.bool,\n ]),\n\n // bank account number\n ban: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // national identification number\n nin: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // phone number\n phone: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // organization number\n org: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // percentage\n percent: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // can be tel or sms\n link: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n options: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n decimals: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n selectall: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n always_selectall: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n copy_selection: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n clean_copy_value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n omit_rounding: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n clean: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n srLabel: PropTypes.node,\n element: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n tooltip: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n skeleton: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n ...spacingPropTypes,\n\n class: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n }\n static defaultProps = {\n id: null,\n value: null,\n locale: null,\n prefix: null,\n suffix: null,\n currency: null,\n currency_display: null, // code, name, symbol\n currency_position: null, // null, before, after\n compact: null,\n ban: null,\n nin: null,\n phone: null,\n org: null,\n percent: null,\n link: null,\n options: null,\n decimals: null,\n selectall: true,\n always_selectall: false,\n copy_selection: true,\n clean_copy_value: false,\n omit_rounding: null,\n clean: null,\n srLabel: null,\n element: 'span', // span or abbr\n tooltip: null,\n skeleton: null,\n class: null,\n\n className: null,\n children: null,\n }\n\n constructor(props) {\n super(props)\n this._ref = React.createRef()\n this._selectionRef = React.createRef()\n\n this._id = props.id || makeUniqueId()\n this.state = { selected: false, omitCurrencySign: false }\n }\n\n componentDidMount() {\n clearTimeout(this._selectAllTimeout)\n\n // NB: This hack may be removed in future iOS versions\n // in order that iOS v13 can select something on the first try, we run this add range trick\n if (IS_IOS && !hasiOSFix) {\n hasiOSFix = true\n runIOSSelectionFix()\n }\n }\n\n shortcutHandler = () => {\n showSelectionNotice({\n value: this.cleanedValue,\n label: this.context.getTranslation(this.props)?.NumberFormat\n ?.clipboard_copy,\n }).run(this._ref.current)\n }\n\n onBlurHandler = () => {\n this.setState({ selected: false })\n }\n\n onContextMenuHandler = () => {\n if (!hasSelectedText()) {\n clearTimeout(this._selectAllTimeout)\n this._selectAllTimeout = setTimeout(() => {\n this.setFocus()\n }, 1)\n }\n }\n\n onClickHandler = () => {\n if (!hasSelectedText() || isTrue(this.props.always_selectall)) {\n this.setFocus()\n }\n }\n\n componentWillUnmount() {\n this.outsideClick?.remove()\n }\n\n setFocus() {\n this.setState({ selected: true }, () => {\n this._selectionRef.current?.focus()\n this.selectAll()\n\n if (!isTrue(this.props.copy_selection)) {\n this.outsideClick = detectOutsideClick(\n this._ref.current,\n this.onBlurHandler\n )\n }\n })\n }\n\n selectAll() {\n try {\n const elem = this._selectionRef.current || this._ref.current\n if (elem) {\n const selection = window.getSelection()\n const range = document.createRange()\n range.selectNodeContents(elem)\n selection.removeAllRanges()\n selection.addRange(range)\n }\n } catch (e) {\n warn(e)\n }\n }\n\n runFix(comp, className) {\n if (typeof comp === 'function') {\n comp = comp()\n }\n if (React.isValidElement(comp)) {\n return React.cloneElement(comp, {\n className: classnames(comp.props.className, className),\n })\n }\n return <span className={className}>{comp}</span>\n }\n\n render() {\n // consume the global context\n const props = extendPropsWithContextInClassComponent(\n this.props,\n NumberFormat.defaultProps,\n this.context.getTranslation(this.props).NumberFormat,\n this.context.NumberFormat\n )\n\n const {\n id, // eslint-disable-line\n value: _value,\n prefix,\n suffix,\n children,\n currency,\n currency_display,\n currency_position,\n compact,\n ban,\n nin,\n phone,\n org,\n percent,\n link: _link,\n tooltip,\n skeleton,\n options,\n locale,\n decimals,\n omit_rounding,\n clean,\n selectall,\n copy_selection,\n clean_copy_value,\n srLabel,\n element,\n class: _className,\n className,\n ..._rest\n } = props\n let rest = _rest\n\n let link = _link\n let value = _value\n\n if (value === null && children !== null) {\n value = children\n }\n\n const formatOptions = {\n locale,\n currency,\n currency_display,\n currency_position,\n omit_currency_sign: this.state.omitCurrencySign,\n compact,\n ban,\n nin,\n phone,\n org,\n percent,\n decimals,\n omit_rounding: isTrue(omit_rounding),\n options,\n clean: isTrue(clean),\n clean_copy_value: isTrue(clean_copy_value),\n returnAria: true,\n }\n\n // use only the props from context, who are available here anyway\n const useContext = extend(\n true,\n { locale: null, currency: null },\n this.context\n )\n\n if (useContext) {\n if (useContext.locale && !locale) {\n formatOptions.locale = useContext.locale\n }\n\n // only replace if the prop is \"true\" and not actually a currency\n if (useContext.currency && isTrue(currency)) {\n formatOptions.options = formatOptions.options\n ? { ...formatOptions.options }\n : {}\n formatOptions.options.currency = useContext.currency\n }\n }\n\n let {\n cleanedValue,\n number: display,\n aria,\n locale: lang,\n } = format(value, formatOptions)\n this.cleanedValue = cleanedValue\n\n if (tooltip) {\n rest = injectTooltipSemantic(rest)\n }\n\n const attributes = {\n ref: this._ref,\n className: classnames(\n 'dnb-number-format',\n className,\n _className,\n (isTrue(currency) || typeof currency === 'string') &&\n 'dnb-number-format--currency',\n isTrue(selectall) && 'dnb-number-format--selectall',\n this.state.selected && 'dnb-number-format--selected',\n link && 'dnb-anchor',\n createSpacingClasses(this.props)\n ),\n ...rest,\n }\n\n /**\n * Works in VoiceOver and NVDA\n * Makes the span with it's roles etc. appear as text.\n * Special useful if a number is in side e.g. a paragraph alongside with numbers\n */\n attributes['role'] = 'text' // role=\"text\"\n\n const displayParams = {}\n if (isTrue(selectall) || isTrue(copy_selection)) {\n displayParams.onClick = this.onClickHandler\n displayParams.onContextMenu = this.onContextMenuHandler\n }\n\n validateDOMAttributes(this.props, attributes)\n skeletonDOMAttributes(attributes, skeleton, this.context)\n\n if (prefix) {\n display = (\n <>\n {this.runFix(prefix, 'dnb-number-format__prefix')} {display}\n </>\n )\n aria = String(\n `${convertJsxToString(\n this.runFix(prefix, 'dnb-number-format__prefix')\n )} ${aria}`\n )\n }\n if (suffix) {\n display = (\n <>\n {display} {this.runFix(suffix, 'dnb-number-format__suffix')}\n </>\n )\n aria = `${aria} ${convertJsxToString(\n this.runFix(suffix, 'dnb-number-format__suffix')\n )}`\n }\n\n if (link) {\n if (isTrue(link)) {\n link = 'tel'\n }\n return (\n <a href={`${link}:${display}`} {...attributes}>\n {display}\n </a>\n )\n }\n\n const Element = element\n\n /**\n * This approach is most NVDA friendly, and we used it now also for mac,\n * because if the consistency and SSR JAM Stack build\n */\n return (\n <Element lang={lang} {...attributes}>\n {srLabel && (\n <span className=\"dnb-sr-only\" data-text={srLabel + ' '} />\n )}\n\n <span\n className={classnames(\n 'dnb-number-format__visible',\n createSkeletonClass('font', skeleton, this.context)\n )}\n aria-describedby={this._id}\n aria-hidden\n {...displayParams}\n >\n {display}\n </span>\n\n <span\n id={this._id}\n className=\"dnb-number-format__sr-only dnb-sr-only\"\n data-text={aria}\n />\n\n {isTrue(copy_selection) && (\n <span\n className=\"dnb-number-format__selection dnb-no-focus\"\n ref={this._selectionRef}\n tabIndex={-1}\n onBlur={this.onBlurHandler}\n onCopy={this.shortcutHandler}\n aria-hidden\n >\n {this.state.selected && cleanedValue}\n </span>\n )}\n\n {tooltip && (\n <Tooltip\n id={this._id + '-tooltip'}\n targetElement={this._ref}\n tooltip={tooltip}\n />\n )}\n </Element>\n )\n }\n}\n\nlet hasiOSFix = false\n\nNumberFormat._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumberFormat.js","names":["React","PropTypes","classnames","Context","warn","isTrue","makeUniqueId","validateDOMAttributes","convertJsxToString","extendPropsWithContextInClassComponent","extend","detectOutsideClick","hasSelectedText","IS_IOS","spacingPropTypes","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Tooltip","injectTooltipSemantic","format","showSelectionNotice","runIOSSelectionFix","NumberFormat","PureComponent","constructor","props","_defineProperty","_this$context$getTran","_this$context$getTran2","value","cleanedValue","label","context","getTranslation","clipboard_copy","run","_ref","current","setState","selected","clearTimeout","_selectAllTimeout","setTimeout","setFocus","selectall","always_selectall","createRef","_selectionRef","_id","id","state","omitCurrencySign","componentDidMount","hasiOSFix","componentWillUnmount","_this$outsideClick","outsideClick","remove","_this$_selectionRef$c","focus","selectAll","copy_selection","onBlurHandler","elem","selection","window","getSelection","range","document","createRange","selectNodeContents","removeAllRanges","addRange","e","runFix","comp","className","isValidElement","cloneElement","createElement","render","defaultProps","_value","prefix","suffix","children","currency","currency_display","currency_position","compact","ban","nin","phone","org","percent","link","_link","tooltip","skeleton","options","locale","decimals","omit_rounding","clean","clean_copy_value","srLabel","element","class","_className","_rest","_objectWithoutProperties","_excluded","rest","formatOptions","omit_currency_sign","returnAria","useContext","_objectSpread","number","display","aria","lang","attributes","ref","displayParams","onClick","onClickHandler","onContextMenu","onContextMenuHandler","Fragment","String","_extends","href","Element","tabIndex","onBlur","onCopy","shortcutHandler","targetElement","process","env","NODE_ENV","propTypes","string","oneOfType","node","func","bool","oneOf","object","_supportsSpacingProps"],"sources":["../../../../src/components/number-format/NumberFormat.js"],"sourcesContent":["/**\n * Web NumberFormat Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n validateDOMAttributes,\n convertJsxToString,\n extendPropsWithContextInClassComponent,\n extend,\n detectOutsideClick,\n} from '../../shared/component-helper'\nimport { hasSelectedText, IS_IOS } from '../../shared/helpers'\nimport {\n spacingPropTypes,\n createSpacingClasses,\n} from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\nimport Tooltip, { injectTooltipSemantic } from '../tooltip/Tooltip'\nimport {\n format,\n showSelectionNotice,\n runIOSSelectionFix,\n} from './NumberUtils'\n\nexport default class NumberFormat extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n locale: PropTypes.string,\n prefix: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n suffix: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n // currency\n currency: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n currency_display: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['code', 'name', 'symbol', 'narrowSymbol', '']),\n ]),\n currency_position: PropTypes.oneOf(['auto', 'before', 'after']),\n\n // shortens any number or currency including an abbreviation\n compact: PropTypes.oneOfType([\n PropTypes.oneOf(['short', 'long']),\n PropTypes.bool,\n ]),\n\n // bank account number\n ban: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // national identification number\n nin: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // phone number\n phone: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // organization number\n org: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // percentage\n percent: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n // can be tel or sms\n link: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n options: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n decimals: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n selectall: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n always_selectall: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n copy_selection: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n clean_copy_value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n omit_rounding: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n clean: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n srLabel: PropTypes.node,\n element: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n tooltip: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n skeleton: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\n ...spacingPropTypes,\n\n class: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n }\n static defaultProps = {\n id: null,\n value: null,\n locale: null,\n prefix: null,\n suffix: null,\n currency: null,\n currency_display: null, // code, name, symbol\n currency_position: null, // null, before, after\n compact: null,\n ban: null,\n nin: null,\n phone: null,\n org: null,\n percent: null,\n link: null,\n options: null,\n decimals: null,\n selectall: true,\n always_selectall: false,\n copy_selection: true,\n clean_copy_value: false,\n omit_rounding: null,\n clean: null,\n srLabel: null,\n element: 'span', // span or abbr\n tooltip: null,\n skeleton: null,\n class: null,\n\n className: null,\n children: null,\n }\n\n constructor(props) {\n super(props)\n this._ref = React.createRef()\n this._selectionRef = React.createRef()\n\n this._id = props.id || makeUniqueId()\n this.state = { selected: false, omitCurrencySign: false }\n }\n\n componentDidMount() {\n clearTimeout(this._selectAllTimeout)\n\n // NB: This hack may be removed in future iOS versions\n // in order that iOS v13 can select something on the first try, we run this add range trick\n if (IS_IOS && !hasiOSFix) {\n hasiOSFix = true\n runIOSSelectionFix()\n }\n }\n\n shortcutHandler = () => {\n showSelectionNotice({\n value: this.cleanedValue,\n label: this.context.getTranslation(this.props)?.NumberFormat\n ?.clipboard_copy,\n }).run(this._ref.current)\n }\n\n onBlurHandler = () => {\n this.setState({ selected: false })\n }\n\n onContextMenuHandler = () => {\n if (!hasSelectedText()) {\n clearTimeout(this._selectAllTimeout)\n this._selectAllTimeout = setTimeout(() => {\n this.setFocus()\n }, 1)\n }\n }\n\n onClickHandler = () => {\n if (\n (isTrue(this.props.selectall) ||\n isTrue(this.props.always_selectall)) &&\n !hasSelectedText()\n ) {\n this.setFocus()\n }\n }\n\n componentWillUnmount() {\n this.outsideClick?.remove()\n }\n\n setFocus() {\n this.setState({ selected: true }, () => {\n this._selectionRef.current?.focus()\n this.selectAll()\n\n if (!isTrue(this.props.copy_selection)) {\n this.outsideClick = detectOutsideClick(\n this._ref.current,\n this.onBlurHandler\n )\n }\n })\n }\n\n selectAll() {\n try {\n const elem = this._selectionRef.current || this._ref.current\n if (elem) {\n const selection = window.getSelection()\n const range = document.createRange()\n range.selectNodeContents(elem)\n selection.removeAllRanges()\n selection.addRange(range)\n }\n } catch (e) {\n warn(e)\n }\n }\n\n runFix(comp, className) {\n if (typeof comp === 'function') {\n comp = comp()\n }\n if (React.isValidElement(comp)) {\n return React.cloneElement(comp, {\n className: classnames(comp.props.className, className),\n })\n }\n return <span className={className}>{comp}</span>\n }\n\n render() {\n // consume the global context\n const props = extendPropsWithContextInClassComponent(\n this.props,\n NumberFormat.defaultProps,\n this.context.getTranslation(this.props).NumberFormat,\n this.context.NumberFormat\n )\n\n const {\n id, // eslint-disable-line\n value: _value,\n prefix,\n suffix,\n children,\n currency,\n currency_display,\n currency_position,\n compact,\n ban,\n nin,\n phone,\n org,\n percent,\n link: _link,\n tooltip,\n skeleton,\n options,\n locale,\n decimals,\n omit_rounding,\n clean,\n selectall,\n copy_selection,\n clean_copy_value,\n srLabel,\n element,\n class: _className,\n className,\n ..._rest\n } = props\n let rest = _rest\n\n let link = _link\n let value = _value\n\n if (value === null && children !== null) {\n value = children\n }\n\n const formatOptions = {\n locale,\n currency,\n currency_display,\n currency_position,\n omit_currency_sign: this.state.omitCurrencySign,\n compact,\n ban,\n nin,\n phone,\n org,\n percent,\n decimals,\n omit_rounding: isTrue(omit_rounding),\n options,\n clean: isTrue(clean),\n clean_copy_value: isTrue(clean_copy_value),\n returnAria: true,\n }\n\n // use only the props from context, who are available here anyway\n const useContext = extend(\n true,\n { locale: null, currency: null },\n this.context\n )\n\n if (useContext) {\n if (useContext.locale && !locale) {\n formatOptions.locale = useContext.locale\n }\n\n // only replace if the prop is \"true\" and not actually a currency\n if (useContext.currency && isTrue(currency)) {\n formatOptions.options = formatOptions.options\n ? { ...formatOptions.options }\n : {}\n formatOptions.options.currency = useContext.currency\n }\n }\n\n let {\n cleanedValue,\n number: display,\n aria,\n locale: lang,\n } = format(value, formatOptions)\n this.cleanedValue = cleanedValue\n\n if (tooltip) {\n rest = injectTooltipSemantic(rest)\n }\n\n const attributes = {\n ref: this._ref,\n className: classnames(\n 'dnb-number-format',\n className,\n _className,\n (isTrue(currency) || typeof currency === 'string') &&\n 'dnb-number-format--currency',\n isTrue(selectall) && 'dnb-number-format--selectall',\n this.state.selected && 'dnb-number-format--selected',\n link && 'dnb-anchor',\n createSpacingClasses(this.props)\n ),\n ...rest,\n }\n\n /**\n * Works in VoiceOver and NVDA\n * Makes the span with it's roles etc. appear as text.\n * Special useful if a number is in side e.g. a paragraph alongside with numbers\n */\n attributes['role'] = 'text' // role=\"text\"\n\n const displayParams = {}\n if (isTrue(selectall) || isTrue(copy_selection)) {\n displayParams.onClick = this.onClickHandler\n displayParams.onContextMenu = this.onContextMenuHandler\n }\n\n validateDOMAttributes(this.props, attributes)\n skeletonDOMAttributes(attributes, skeleton, this.context)\n\n if (prefix) {\n display = (\n <>\n {this.runFix(prefix, 'dnb-number-format__prefix')} {display}\n </>\n )\n aria = String(\n `${convertJsxToString(\n this.runFix(prefix, 'dnb-number-format__prefix')\n )} ${aria}`\n )\n }\n if (suffix) {\n display = (\n <>\n {display} {this.runFix(suffix, 'dnb-number-format__suffix')}\n </>\n )\n aria = `${aria} ${convertJsxToString(\n this.runFix(suffix, 'dnb-number-format__suffix')\n )}`\n }\n\n if (link) {\n if (isTrue(link)) {\n link = 'tel'\n }\n return (\n <a href={`${link}:${display}`} {...attributes}>\n {display}\n </a>\n )\n }\n\n const Element = element\n\n /**\n * This approach is most NVDA friendly, and we used it now also for mac,\n * because if the consistency and SSR JAM Stack build\n */\n return (\n <Element lang={lang} {...attributes}>\n {srLabel && (\n <span className=\"dnb-sr-only\" data-text={srLabel + ' '} />\n )}\n\n <span\n className={classnames(\n 'dnb-number-format__visible',\n createSkeletonClass('font', skeleton, this.context)\n )}\n aria-describedby={this._id}\n aria-hidden\n {...displayParams}\n >\n {display}\n </span>\n\n <span\n id={this._id}\n className=\"dnb-number-format__sr-only dnb-sr-only\"\n data-text={aria}\n />\n\n {isTrue(copy_selection) && (\n <span\n className=\"dnb-number-format__selection dnb-no-focus\"\n ref={this._selectionRef}\n tabIndex={-1}\n onBlur={this.onBlurHandler}\n onCopy={this.shortcutHandler}\n aria-hidden\n >\n {this.state.selected && cleanedValue}\n </span>\n )}\n\n {tooltip && (\n <Tooltip\n id={this._id + '-tooltip'}\n targetElement={this._ref}\n tooltip={tooltip}\n />\n )}\n </Element>\n )\n }\n}\n\nlet hasiOSFix = false\n\nNumberFormat._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
@@ -78,6 +78,11 @@ html:not([data-visual-test]) .dnb-textarea__textarea {
|
|
|
78
78
|
background-color: var(--scrollbar-thumb-hover-color, #666);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
@-moz-document url-prefix() {
|
|
82
|
+
.dnb-textarea__textarea {
|
|
83
|
+
overflow-x: clip;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
81
86
|
.dnb-textarea__input:-webkit-autofill {
|
|
82
87
|
box-shadow: 0 0 0 var(--border-width) var(--border-color), 0 0 0 10em var(--textarea-background-color) inset;
|
|
83
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-textarea{--textarea-padding-width:0.5rem;--textarea-rows:2;--textarea-background-color:var(--color-white);display:inline-flex;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-textarea__inner{display:inline-flex;flex-direction:column;margin:var(--textarea-padding-width)}.dnb-textarea__shell{display:inline-flex;font-size:var(--font-size-basis);position:relative}.dnb-textarea__state{background-color:var(--color-white);border-radius:.25rem;bottom:-.5rem;box-shadow:0 0 0 .0625rem var(--color-sea-green);left:-.5rem;position:absolute;right:-.5rem;top:-.5rem;z-index:1}.dnb-textarea__row{display:inline-flex}.dnb-textarea__suffix.dnb-suffix{padding-left:1rem}.dnb-textarea__textarea{-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;border:none;cursor:auto;font-size:var(--font-size-basis);line-height:var(--line-height-basis);margin:0;outline:none;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--textarea-padding-width);position:relative;scrollbar-color:var(--scrollbar-thumb-color,#888) transparent;z-index:2}html:not([data-visual-test]) .dnb-textarea__textarea{scroll-behavior:smooth}@supports not (scrollbar-color:auto){.dnb-textarea__textarea::-webkit-scrollbar{background-color:var(--scrollbar-track-color,#eee);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:vertical{width:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:horizontal{height:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color,#888);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover-color,#666)}}.dnb-textarea__input:-webkit-autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__input:autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__placeholder{-webkit-box-orient:vertical;-webkit-line-clamp:var(--textarea-rows,2);border:none;cursor:auto;display:-webkit-box;font-size:var(--font-size-basis);height:100%;left:0;line-height:var(--line-height-basis);margin:0;outline:none;overflow:hidden;padding:0 var(--textarea-padding-width);pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.dnb-textarea__placeholder,.dnb-textarea__textarea{text-align:left}.dnb-textarea__align--right .dnb-textarea__placeholder,.dnb-textarea__align--right .dnb-textarea__textarea{text-align:right}.dnb-textarea__autoresize .dnb-textarea__textarea{resize:none}.dnb-textarea--disabled .dnb-textarea__textarea,.dnb-textarea__textarea[disabled]{-webkit-user-select:none;user-select:none}.dnb-textarea--disabled .dnb-textarea__textarea::-webkit-scrollbar,.dnb-textarea__textarea[disabled]::-webkit-scrollbar{width:0}.dnb-textarea--focus .dnb-textarea__textarea:not([disabled]):not([readonly])~.dnb-textarea__placeholder,.dnb-textarea--has-content .dnb-textarea__textarea~.dnb-textarea__placeholder{display:none}.dnb-textarea__inner>.dnb-form-status{margin:1rem 0 0 calc(0px - var(--textarea-padding-width));order:2}.dnb-textarea:not(.dnb-textarea--vertical) .dnb-form-label{margin-top:.5rem}.dnb-textarea--vertical{align-items:flex-start;display:flex;flex-direction:column}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]{align-items:flex-start}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]>.dnb-form-label{margin-top:.25rem}@media screen and (max-width:40em){.dnb-textarea{flex-wrap:wrap}.dnb-textarea>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-textarea--stretch{display:flex;flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner{flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner,.dnb-textarea--stretch .dnb-textarea__shell,.dnb-textarea--stretch .dnb-textarea__textarea{width:100%}.dnb-textarea--stretch .dnb-form-label+.dnb-textarea__inner{width:auto}.dnb-form-row--horizontal .dnb-textarea--stretch,.dnb-textarea--vertical.dnb-textarea--stretch .dnb-textarea__inner{width:100%}@media screen and (max-width:40em){.dnb-responsive-component .dnb-textarea{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:.5rem}.dnb-responsive-component .dnb-textarea>.dnb-form-label{margin-bottom:.5rem}}html[data-visual-test] .dnb-textarea__textarea{caret-color:var(--color-white)}.dnb-textarea.dnb-skeleton .dnb-textarea__inner{border-radius:.25rem;margin:0}.dnb-textarea.dnb-skeleton .dnb-textarea__inner .dnb-textarea__shell{margin:var(--textarea-padding-width)}.dnb-textarea.dnb-skeleton .dnb-textarea__state,.dnb-textarea.dnb-skeleton .dnb-textarea__textarea{visibility:hidden}
|
|
1
|
+
.dnb-textarea{--textarea-padding-width:0.5rem;--textarea-rows:2;--textarea-background-color:var(--color-white);display:inline-flex;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-textarea__inner{display:inline-flex;flex-direction:column;margin:var(--textarea-padding-width)}.dnb-textarea__shell{display:inline-flex;font-size:var(--font-size-basis);position:relative}.dnb-textarea__state{background-color:var(--color-white);border-radius:.25rem;bottom:-.5rem;box-shadow:0 0 0 .0625rem var(--color-sea-green);left:-.5rem;position:absolute;right:-.5rem;top:-.5rem;z-index:1}.dnb-textarea__row{display:inline-flex}.dnb-textarea__suffix.dnb-suffix{padding-left:1rem}.dnb-textarea__textarea{-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;border:none;cursor:auto;font-size:var(--font-size-basis);line-height:var(--line-height-basis);margin:0;outline:none;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--textarea-padding-width);position:relative;scrollbar-color:var(--scrollbar-thumb-color,#888) transparent;z-index:2}html:not([data-visual-test]) .dnb-textarea__textarea{scroll-behavior:smooth}@supports not (scrollbar-color:auto){.dnb-textarea__textarea::-webkit-scrollbar{background-color:var(--scrollbar-track-color,#eee);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:vertical{width:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:horizontal{height:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color,#888);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover-color,#666)}}@-moz-document url-prefix(){.dnb-textarea__textarea{overflow-x:clip}}.dnb-textarea__input:-webkit-autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__input:autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__placeholder{-webkit-box-orient:vertical;-webkit-line-clamp:var(--textarea-rows,2);border:none;cursor:auto;display:-webkit-box;font-size:var(--font-size-basis);height:100%;left:0;line-height:var(--line-height-basis);margin:0;outline:none;overflow:hidden;padding:0 var(--textarea-padding-width);pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.dnb-textarea__placeholder,.dnb-textarea__textarea{text-align:left}.dnb-textarea__align--right .dnb-textarea__placeholder,.dnb-textarea__align--right .dnb-textarea__textarea{text-align:right}.dnb-textarea__autoresize .dnb-textarea__textarea{resize:none}.dnb-textarea--disabled .dnb-textarea__textarea,.dnb-textarea__textarea[disabled]{-webkit-user-select:none;user-select:none}.dnb-textarea--disabled .dnb-textarea__textarea::-webkit-scrollbar,.dnb-textarea__textarea[disabled]::-webkit-scrollbar{width:0}.dnb-textarea--focus .dnb-textarea__textarea:not([disabled]):not([readonly])~.dnb-textarea__placeholder,.dnb-textarea--has-content .dnb-textarea__textarea~.dnb-textarea__placeholder{display:none}.dnb-textarea__inner>.dnb-form-status{margin:1rem 0 0 calc(0px - var(--textarea-padding-width));order:2}.dnb-textarea:not(.dnb-textarea--vertical) .dnb-form-label{margin-top:.5rem}.dnb-textarea--vertical{align-items:flex-start;display:flex;flex-direction:column}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]{align-items:flex-start}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]>.dnb-form-label{margin-top:.25rem}@media screen and (max-width:40em){.dnb-textarea{flex-wrap:wrap}.dnb-textarea>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-textarea--stretch{display:flex;flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner{flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner,.dnb-textarea--stretch .dnb-textarea__shell,.dnb-textarea--stretch .dnb-textarea__textarea{width:100%}.dnb-textarea--stretch .dnb-form-label+.dnb-textarea__inner{width:auto}.dnb-form-row--horizontal .dnb-textarea--stretch,.dnb-textarea--vertical.dnb-textarea--stretch .dnb-textarea__inner{width:100%}@media screen and (max-width:40em){.dnb-responsive-component .dnb-textarea{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:.5rem}.dnb-responsive-component .dnb-textarea>.dnb-form-label{margin-bottom:.5rem}}html[data-visual-test] .dnb-textarea__textarea{caret-color:var(--color-white)}.dnb-textarea.dnb-skeleton .dnb-textarea__inner{border-radius:.25rem;margin:0}.dnb-textarea.dnb-skeleton .dnb-textarea__inner .dnb-textarea__shell{margin:var(--textarea-padding-width)}.dnb-textarea.dnb-skeleton .dnb-textarea__state,.dnb-textarea.dnb-skeleton .dnb-textarea__textarea{visibility:hidden}
|
|
@@ -40,7 +40,6 @@ html:not([data-whatintent=touch]) .dnb-toggle-button__button:hover:not([disabled
|
|
|
40
40
|
--border-width: 0.09375rem;
|
|
41
41
|
box-shadow: inset 0 0 0 var(--border-width) var(--border-color);
|
|
42
42
|
border-color: transparent;
|
|
43
|
-
background-color: var(--sb-color-gray-light);
|
|
44
43
|
color: var(--sb-color-gray-dark);
|
|
45
44
|
}
|
|
46
45
|
html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-radio__button {
|
|
@@ -59,6 +58,14 @@ html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:ac
|
|
|
59
58
|
html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-checkbox__gfx {
|
|
60
59
|
color: var(--focus-ring-color);
|
|
61
60
|
}
|
|
61
|
+
.dnb-toggle-button--checked .dnb-toggle-button__button[disabled] {
|
|
62
|
+
--border-color: var(--sb-color-gray-light);
|
|
63
|
+
--border-width: 0.09375rem;
|
|
64
|
+
box-shadow: inset 0 0 0 var(--border-width) var(--border-color);
|
|
65
|
+
border-color: transparent;
|
|
66
|
+
background-color: var(--sb-color-gray-light);
|
|
67
|
+
color: var(--sb-color-gray-dark);
|
|
68
|
+
}
|
|
62
69
|
.dnb-toggle-button--checked .dnb-toggle-button__button:not([disabled]):not(:active) {
|
|
63
70
|
background-color: var(--sb-color-violet);
|
|
64
71
|
color: var(--sb-color-white);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-toggle-button__button{--border-color:var(--sb-color-violet);--border-width:0.09375rem;background-color:var(--sb-color-white);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-violet)}html:not([data-whatintent=touch]) .dnb-toggle-button__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-toggle-button__button:hover:not([disabled]){background-color:var(--sb-color-violet-light-3);color:var(--sb-color-violet)}.dnb-toggle-button__button:active[disabled],html:not([data-whatintent=touch]) .dnb-toggle-button__button:active[disabled]{cursor:not-allowed}.dnb-toggle-button__button:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-toggle-button__button:active:not([disabled]){--border-color:var(--sb-color-violet-light-3);--border-width:0.125rem;background-color:var(--sb-color-violet);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-violet-light-3)}.dnb-toggle-button__button[disabled]{--border-color:var(--sb-color-gray-light);--border-width:0.09375rem;
|
|
1
|
+
.dnb-toggle-button__button{--border-color:var(--sb-color-violet);--border-width:0.09375rem;background-color:var(--sb-color-white);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-violet)}html:not([data-whatintent=touch]) .dnb-toggle-button__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-toggle-button__button:hover:not([disabled]){background-color:var(--sb-color-violet-light-3);color:var(--sb-color-violet)}.dnb-toggle-button__button:active[disabled],html:not([data-whatintent=touch]) .dnb-toggle-button__button:active[disabled]{cursor:not-allowed}.dnb-toggle-button__button:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-toggle-button__button:active:not([disabled]){--border-color:var(--sb-color-violet-light-3);--border-width:0.125rem;background-color:var(--sb-color-violet);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-violet-light-3)}.dnb-toggle-button__button[disabled]{--border-color:var(--sb-color-gray-light);--border-width:0.09375rem;border-color:transparent;box-shadow:inset 0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-gray-dark)}html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-radio__button{background-color:transparent;border-color:var(--focus-ring-color);box-shadow:0 0 0 .0625rem var(--focus-ring-color)}html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-radio__dot{background-color:var(--focus-ring-color)}html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-checkbox__button{background-color:transparent;border-color:var(--focus-ring-color);box-shadow:0 0 0 .0625rem var(--focus-ring-color)}html[data-whatinput=keyboard] .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus .dnb-checkbox__gfx{color:var(--focus-ring-color)}.dnb-toggle-button--checked .dnb-toggle-button__button[disabled]{--border-color:var(--sb-color-gray-light);--border-width:0.09375rem;background-color:var(--sb-color-gray-light);border-color:transparent;box-shadow:inset 0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-gray-dark)}.dnb-toggle-button--checked .dnb-toggle-button__button:not([disabled]):not(:active){background-color:var(--sb-color-violet);box-shadow:none;color:var(--sb-color-white)}html:not([data-whatintent=touch]) .dnb-toggle-button--checked .dnb-toggle-button__button:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-toggle-button--checked .dnb-toggle-button__button:hover:not([disabled]){--border-color:var(--sb-color-violet);--border-width:0.125rem;background-color:var(--sb-color-violet);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-white)}.dnb-toggle-button--checked .dnb-toggle-button__button:active[disabled],html:not([data-whatintent=touch]) .dnb-toggle-button--checked .dnb-toggle-button__button:active[disabled]{cursor:not-allowed}.dnb-toggle-button--checked .dnb-toggle-button__button:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-toggle-button--checked .dnb-toggle-button__button:active:not([disabled]){--border-color:var(--sb-color-violet-light-3);--border-width:0.125rem;background-color:var(--sb-color-violet);border-color:transparent;box-shadow:inset 0 0 0 var(--border-width) var(--border-color);color:var(--sb-color-violet-light-3)}html[data-whatinput=keyboard] .dnb-toggle-button--checked .dnb-toggle-button__button:not([disabled]):not(:active):not(:hover):focus{background-color:var(--sb-color-blue-light-2);color:var(--sb-color-blue-dark-2)}
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
|
|
25
25
|
&[disabled] {
|
|
26
26
|
@include fakeBorder(var(--sb-color-gray-light), 0.09375rem, inset);
|
|
27
|
-
background-color: var(--sb-color-gray-light);
|
|
28
27
|
color: var(--sb-color-gray-dark);
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -55,6 +54,12 @@
|
|
|
55
54
|
|
|
56
55
|
/* stylelint-disable no-descending-specificity */
|
|
57
56
|
&--checked &__button {
|
|
57
|
+
&[disabled] {
|
|
58
|
+
@include fakeBorder(var(--sb-color-gray-light), 0.09375rem, inset);
|
|
59
|
+
background-color: var(--sb-color-gray-light);
|
|
60
|
+
color: var(--sb-color-gray-dark);
|
|
61
|
+
}
|
|
62
|
+
|
|
58
63
|
&:not([disabled]):not(:active) {
|
|
59
64
|
background-color: var(--sb-color-violet);
|
|
60
65
|
color: var(--sb-color-white);
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
.dnb-toggle-button .dnb-radio__input:not([disabled]) ~ .dnb-radio__button {
|
|
22
22
|
box-shadow: 0 0 0 0.0318rem var(--color-sea-green);
|
|
23
23
|
}
|
|
24
|
+
.dnb-toggle-button--checked .dnb-toggle-button__button[disabled], .dnb-toggle-button--checked .dnb-toggle-button__button:focus[disabled], .dnb-toggle-button--checked .dnb-toggle-button__button:hover[disabled] {
|
|
25
|
+
background-color: var(--color-mint-green);
|
|
26
|
+
color: var(--color-white);
|
|
27
|
+
}
|
|
24
28
|
.dnb-toggle-button--checked .dnb-toggle-button__button:not([disabled]):not(:active), .dnb-toggle-button--checked .dnb-toggle-button__button:focus:not([disabled]):not(:active), .dnb-toggle-button--checked .dnb-toggle-button__button:hover:not([disabled]):not(:active) {
|
|
25
29
|
background-color: var(--color-emerald-green);
|
|
26
30
|
color: var(--color-mint-green);
|