@dnb/eufemia 10.23.0 → 10.24.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 +19 -0
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
- package/cjs/components/anchor/Anchor.d.ts +1 -1
- package/cjs/components/anchor/Anchor.js +2 -2
- package/cjs/components/anchor/Anchor.js.map +1 -1
- package/cjs/components/anchor/style/anchor-mixins.scss +46 -3
- package/cjs/components/anchor/style/dnb-anchor.css +73 -4
- package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
- package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
- 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 +1 -8
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
- package/cjs/components/button/Button.js +1 -1
- package/cjs/components/button/Button.js.map +1 -1
- package/cjs/components/flex/style/dnb-flex.css +1 -1
- package/cjs/components/flex/style/dnb-flex.min.css +1 -1
- package/cjs/components/flex/style/flex-stack.scss +1 -1
- package/cjs/components/icon/style/dnb-icon.css +2 -2
- package/cjs/components/icon/style/dnb-icon.min.css +1 -1
- package/cjs/components/icon/style/dnb-icon.scss +1 -1
- package/cjs/components/input/Input.js +1 -1
- package/cjs/components/input/Input.js.map +1 -1
- package/cjs/components/table/style/dnb-table.css +6 -0
- package/cjs/components/table/style/dnb-table.min.css +1 -1
- package/cjs/components/table/style/table-th.scss +9 -25
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
- package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
- package/cjs/components/table/style/themes/dnb-table-theme-ui.css +1 -1
- package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
- package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
- package/cjs/components/textarea/Textarea.d.ts +9 -0
- package/cjs/components/textarea/Textarea.js +21 -5
- package/cjs/components/textarea/Textarea.js.map +1 -1
- package/cjs/components/textarea/TextareaDocs.js +10 -0
- package/cjs/components/textarea/TextareaDocs.js.map +1 -1
- package/cjs/components/textarea/style/dnb-textarea.css +69 -26
- package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
- package/cjs/components/textarea/style/dnb-textarea.scss +83 -31
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
- package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
- package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
- 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 +1 -2
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.d.ts +6 -6
- package/cjs/extensions/forms/Field/String/String.js +13 -11
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Form/Appearance/Appearance.js +3 -0
- package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
- package/cjs/extensions/forms/StepsLayout/Step/Step.js +2 -3
- package/cjs/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
- package/cjs/extensions/forms/StepsLayout/StepsContext.js +6 -1
- package/cjs/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
- package/cjs/extensions/forms/StepsLayout/StepsLayout.js +83 -50
- package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/useStep.d.ts +3 -0
- package/cjs/extensions/forms/StepsLayout/useStep.js +19 -0
- package/cjs/extensions/forms/StepsLayout/useStep.js.map +1 -0
- package/cjs/extensions/forms/style/dnb-forms.css +2 -2
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +2 -2
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/extensions/forms/utils/ajv.js +6 -2
- package/cjs/extensions/forms/utils/ajv.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/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +153 -36
- package/cjs/style/dnb-ui-components.min.css +3 -3
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +2 -2
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +2 -2
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +170 -77
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +6 -6
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-tags.css +37 -9
- package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
- package/components/anchor/Anchor.d.ts +1 -1
- package/components/anchor/Anchor.js +2 -2
- package/components/anchor/Anchor.js.map +1 -1
- package/components/anchor/style/anchor-mixins.scss +46 -3
- package/components/anchor/style/dnb-anchor.css +73 -4
- package/components/anchor/style/dnb-anchor.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
- package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
- package/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
- package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
- package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
- package/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
- package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
- package/components/button/Button.js +1 -1
- package/components/button/Button.js.map +1 -1
- package/components/flex/style/dnb-flex.css +1 -1
- package/components/flex/style/dnb-flex.min.css +1 -1
- package/components/flex/style/flex-stack.scss +1 -1
- package/components/icon/style/dnb-icon.css +2 -2
- package/components/icon/style/dnb-icon.min.css +1 -1
- package/components/icon/style/dnb-icon.scss +1 -1
- package/components/input/Input.js +1 -1
- package/components/input/Input.js.map +1 -1
- package/components/table/style/dnb-table.css +6 -0
- package/components/table/style/dnb-table.min.css +1 -1
- package/components/table/style/table-th.scss +9 -25
- package/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
- package/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
- package/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
- package/components/table/style/themes/dnb-table-theme-ui.css +1 -1
- package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
- package/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
- package/components/textarea/Textarea.d.ts +9 -0
- package/components/textarea/Textarea.js +21 -5
- package/components/textarea/Textarea.js.map +1 -1
- package/components/textarea/TextareaDocs.js +10 -0
- package/components/textarea/TextareaDocs.js.map +1 -1
- package/components/textarea/style/dnb-textarea.css +69 -26
- package/components/textarea/style/dnb-textarea.min.css +1 -1
- package/components/textarea/style/dnb-textarea.scss +83 -31
- package/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
- package/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
- package/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
- package/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
- package/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
- package/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
- package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
- 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 +1 -2
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
- package/es/components/anchor/Anchor.d.ts +1 -1
- package/es/components/anchor/Anchor.js +2 -2
- package/es/components/anchor/Anchor.js.map +1 -1
- package/es/components/anchor/style/anchor-mixins.scss +46 -3
- package/es/components/anchor/style/dnb-anchor.css +73 -4
- package/es/components/anchor/style/dnb-anchor.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
- package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
- package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
- package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
- 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 +1 -8
- package/es/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
- package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/es/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
- package/es/components/button/Button.js +1 -1
- package/es/components/button/Button.js.map +1 -1
- package/es/components/flex/style/dnb-flex.css +1 -1
- package/es/components/flex/style/dnb-flex.min.css +1 -1
- package/es/components/flex/style/flex-stack.scss +1 -1
- package/es/components/icon/style/dnb-icon.css +2 -2
- package/es/components/icon/style/dnb-icon.min.css +1 -1
- package/es/components/icon/style/dnb-icon.scss +1 -1
- package/es/components/input/Input.js +1 -1
- package/es/components/input/Input.js.map +1 -1
- package/es/components/table/style/dnb-table.css +6 -0
- package/es/components/table/style/dnb-table.min.css +1 -1
- package/es/components/table/style/table-th.scss +9 -25
- package/es/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
- package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
- package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
- package/es/components/table/style/themes/dnb-table-theme-ui.css +1 -1
- package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
- package/es/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
- package/es/components/textarea/Textarea.d.ts +9 -0
- package/es/components/textarea/Textarea.js +21 -5
- package/es/components/textarea/Textarea.js.map +1 -1
- package/es/components/textarea/TextareaDocs.js +10 -0
- package/es/components/textarea/TextareaDocs.js.map +1 -1
- package/es/components/textarea/style/dnb-textarea.css +69 -26
- package/es/components/textarea/style/dnb-textarea.min.css +1 -1
- package/es/components/textarea/style/dnb-textarea.scss +83 -31
- package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
- package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
- package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
- package/es/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
- package/es/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
- package/es/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
- package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
- 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 +1 -2
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/es/extensions/forms/Field/String/String.d.ts +6 -6
- package/es/extensions/forms/Field/String/String.js +13 -11
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Form/Appearance/Appearance.js +3 -0
- package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
- package/es/extensions/forms/StepsLayout/Step/Step.js +2 -3
- package/es/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
- package/es/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
- package/es/extensions/forms/StepsLayout/StepsContext.js +6 -1
- package/es/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
- package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
- package/es/extensions/forms/StepsLayout/StepsLayout.js +79 -49
- package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/es/extensions/forms/StepsLayout/useStep.d.ts +3 -0
- package/es/extensions/forms/StepsLayout/useStep.js +12 -0
- package/es/extensions/forms/StepsLayout/useStep.js.map +1 -0
- package/es/extensions/forms/style/dnb-forms.css +2 -2
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +2 -2
- package/es/extensions/forms/types.js.map +1 -1
- package/es/extensions/forms/utils/ajv.js +6 -2
- package/es/extensions/forms/utils/ajv.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/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +153 -36
- package/es/style/dnb-ui-components.min.css +3 -3
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +2 -2
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +2 -2
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +170 -77
- package/es/style/themes/theme-ui/ui-theme-components.min.css +6 -6
- package/es/style/themes/theme-ui/ui-theme-extensions.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-tags.css +37 -9
- 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 +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
- package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/extensions/forms/Field/String/String.d.ts +6 -6
- package/extensions/forms/Field/String/String.js +13 -11
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Form/Appearance/Appearance.js +3 -0
- package/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
- package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
- package/extensions/forms/StepsLayout/Step/Step.js +2 -3
- package/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
- package/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
- package/extensions/forms/StepsLayout/StepsContext.js +6 -1
- package/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
- package/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
- package/extensions/forms/StepsLayout/StepsLayout.js +82 -51
- package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/extensions/forms/StepsLayout/useStep.d.ts +3 -0
- package/extensions/forms/StepsLayout/useStep.js +13 -0
- package/extensions/forms/StepsLayout/useStep.js.map +1 -0
- package/extensions/forms/style/dnb-forms.css +2 -2
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +2 -2
- package/extensions/forms/types.js.map +1 -1
- package/extensions/forms/utils/ajv.js +6 -2
- package/extensions/forms/utils/ajv.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/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +153 -36
- package/style/dnb-ui-components.min.css +3 -3
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +2 -2
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +2 -2
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +170 -77
- package/style/themes/theme-ui/ui-theme-components.min.css +6 -6
- package/style/themes/theme-ui/ui-theme-extensions.css +2 -2
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +2 -2
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-tags.css +37 -9
- 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
|
@@ -57,17 +57,17 @@ export const ProviderProperties = {
|
|
|
57
57
|
};
|
|
58
58
|
export const ProviderEvents = {
|
|
59
59
|
onChange: {
|
|
60
|
-
doc: "Will be called when a value of
|
|
60
|
+
doc: "Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided.",
|
|
61
61
|
type: 'function',
|
|
62
62
|
status: 'optional'
|
|
63
63
|
},
|
|
64
64
|
onPathChange: {
|
|
65
|
-
doc: 'Will be called when a value of
|
|
65
|
+
doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',
|
|
66
66
|
type: 'function',
|
|
67
67
|
status: 'optional'
|
|
68
68
|
},
|
|
69
69
|
onSubmit: {
|
|
70
|
-
doc: "Will be called when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status).",
|
|
70
|
+
doc: "Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.",
|
|
71
71
|
type: 'function',
|
|
72
72
|
status: 'optional'
|
|
73
73
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","schema","errorMessages","minimumAsyncBehaviorTime","asyncBehaviorTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'required',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'required',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncBehaviorTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the <a href=\"/uilib/extensions/forms/extended-features/Form/schema-validation/#custom-ajv-instance-and-keywords\">Schema validation</a> section.',\n type: 'ajv',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.',\n type: 'function',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of
|
|
1
|
+
{"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","schema","errorMessages","minimumAsyncBehaviorTime","asyncBehaviorTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'required',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'required',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncBehaviorTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the <a href=\"/uilib/extensions/forms/extended-features/Form/schema-validation/#custom-ajv-instance-and-keywords\">Schema validation</a> section.',\n type: 'ajv',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.',\n type: 'function',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided.\",\n type: 'function',\n status: 'optional',\n },\n onPathChange: {\n doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',\n type: 'function',\n status: 'optional',\n },\n onSubmit: {\n doc: \"Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.\",\n type: 'function',\n status: 'optional',\n },\n onSubmitRequest: {\n doc: 'Will be called when the user tries to submit, but errors stop the data from being submitted.',\n type: 'function',\n status: 'optional',\n },\n onSubmitComplete: {\n doc: 'Will be called after onSubmit has finished and had not errors. It supports the same return values as `onSubmit` and will be merged together.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,WAAW,EAAE;IACXC,GAAG,EAAE,oHAAoH;IACzHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,6CAA6C;IAClDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACbL,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,wBAAwB,EAAE;IACxBN,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,oBAAoB,EAAE;IACpBP,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,iBAAiB,EAAE;IACjBR,GAAG,EAAE,0EAA0E;IAC/EC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,gBAAgB,EAAE;IAChBT,GAAG,EAAE,wEAAwE;IAC7EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,WAAW,EAAE;IACXV,GAAG,EAAE,oMAAoM;IACzMC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,0IAA0I;IAC/IC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDU,QAAQ,EAAE;IACRZ,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMW,cAAoC,GAAG;EAClDC,QAAQ,EAAE;IACRd,GAAG,EAAE,klBAAklB;IACvlBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,YAAY,EAAE;IACZf,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDc,QAAQ,EAAE;IACRhB,GAAG,EAAE,qwBAAqwB;IAC1wBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDe,eAAe,EAAE;IACfjB,GAAG,EAAE,8FAA8F;IACnGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDgB,gBAAgB,EAAE;IAChBlB,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -13,22 +13,22 @@ interface ErrorMessages extends CustomErrorMessages {
|
|
|
13
13
|
}
|
|
14
14
|
export type Props = FieldHelpProps & FieldProps<string, undefined | string, ErrorMessages> & {
|
|
15
15
|
multiline?: boolean;
|
|
16
|
-
mask?: InputMaskedProps['mask'];
|
|
17
|
-
leftIcon?: string;
|
|
18
|
-
rightIcon?: string;
|
|
19
16
|
inputClassName?: string;
|
|
20
17
|
innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>;
|
|
21
|
-
submitElement?: InputProps['submit_element'];
|
|
22
18
|
width?: false | 'small' | 'medium' | 'large' | 'stretch';
|
|
19
|
+
size?: InputProps['size'] | TextareaProps['size'];
|
|
20
|
+
keepPlaceholder?: InputProps['keep_placeholder'];
|
|
23
21
|
minLength?: number;
|
|
24
22
|
maxLength?: number;
|
|
25
23
|
pattern?: string;
|
|
26
24
|
type?: InputProps['type'];
|
|
27
|
-
size?: InputProps['size'];
|
|
28
25
|
align?: InputProps['align'];
|
|
29
26
|
selectall?: InputProps['selectall'];
|
|
30
27
|
clear?: boolean;
|
|
31
|
-
|
|
28
|
+
mask?: InputMaskedProps['mask'];
|
|
29
|
+
leftIcon?: string;
|
|
30
|
+
rightIcon?: string;
|
|
31
|
+
submitElement?: InputProps['submit_element'];
|
|
32
32
|
rows?: TextareaProps['rows'];
|
|
33
33
|
autoresizeMaxRows?: TextareaProps['autoresize_max_rows'];
|
|
34
34
|
autoresize?: TextareaProps['autoresize'];
|
|
@@ -141,12 +141,19 @@ function StringComponent(props) {
|
|
|
141
141
|
status: hasError ? 'error' : undefined,
|
|
142
142
|
value: transformInstantly((_value$toString = value === null || value === void 0 ? void 0 : value.toString()) !== null && _value$toString !== void 0 ? _value$toString : '')
|
|
143
143
|
});
|
|
144
|
+
const textareaProps = {
|
|
145
|
+
keepPlaceholder,
|
|
146
|
+
rows,
|
|
147
|
+
autoresize_max_rows: autoresizeMaxRows,
|
|
148
|
+
autoresize,
|
|
149
|
+
characterCounter
|
|
150
|
+
};
|
|
144
151
|
const inputProps = {
|
|
145
|
-
type,
|
|
146
|
-
clear,
|
|
147
|
-
size,
|
|
148
|
-
align,
|
|
149
|
-
selectall,
|
|
152
|
+
type: type,
|
|
153
|
+
clear: clear,
|
|
154
|
+
size: size,
|
|
155
|
+
align: align,
|
|
156
|
+
selectall: selectall,
|
|
150
157
|
icon: leftIcon !== null && leftIcon !== void 0 ? leftIcon : rightIcon,
|
|
151
158
|
icon_position: rightIcon && !leftIcon ? 'right' : undefined,
|
|
152
159
|
submit_element: submitElement,
|
|
@@ -165,12 +172,7 @@ function StringComponent(props) {
|
|
|
165
172
|
width: width === 'stretch' || fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? width : undefined,
|
|
166
173
|
contentWidth: width !== false ? width : undefined
|
|
167
174
|
}, pickSpacingProps(props));
|
|
168
|
-
return React.createElement(FieldBlock, fieldBlockProps, multiline ? React.createElement(Textarea, _extends({}, sharedProps, {
|
|
169
|
-
rows: rows,
|
|
170
|
-
autoresize_max_rows: autoresizeMaxRows,
|
|
171
|
-
autoresize: autoresize,
|
|
172
|
-
characterCounter: characterCounter
|
|
173
|
-
})) : mask ? React.createElement(InputMasked, _extends({}, sharedProps, inputProps, {
|
|
175
|
+
return React.createElement(FieldBlock, fieldBlockProps, multiline ? React.createElement(Textarea, _extends({}, sharedProps, textareaProps)) : mask ? React.createElement(InputMasked, _extends({}, sharedProps, inputProps, {
|
|
174
176
|
mask: mask
|
|
175
177
|
})) : React.createElement(Input, _extends({}, sharedProps, inputProps)));
|
|
176
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","SharedContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","StringComponent","props","_props$width","_value$toString","fieldBlockContext","sharedContext","tr","translation","Forms","errorMessages","path","required","inputErrorRequired","minLength","stringInputErrorMinLength","maxLength","stringInputErrorMaxLength","pattern","inputErrorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","autoresize_max_rows","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - String props\n multiline?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n submitElement?: InputProps['submit_element']\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n size?: InputProps['size']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: tr.inputErrorRequired,\n minLength: tr.stringInputErrorMinLength,\n maxLength: tr.stringInputErrorMaxLength,\n pattern: tr.inputErrorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return value\n },\n [props.capitalize]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder: placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const inputProps: InputProps = {\n type,\n clear,\n size,\n align,\n selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea\n {...sharedProps}\n rows={rows}\n autoresize_max_rows={autoresizeMaxRows}\n autoresize={autoresize}\n characterCounter={characterCounter}\n />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","SharedContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","StringComponent","props","_props$width","_value$toString","fieldBlockContext","sharedContext","tr","translation","Forms","errorMessages","path","required","inputErrorRequired","minLength","stringInputErrorMinLength","maxLength","stringInputErrorMaxLength","pattern","inputErrorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: tr.inputErrorRequired,\n minLength: tr.stringInputErrorMinLength,\n maxLength: tr.stringInputErrorMaxLength,\n pattern: tr.inputErrorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return value\n },\n [props.capitalize]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder: placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Appearance.js","names":["React","Provider","FormAppearance","_ref","children","size","rest","_objectWithoutProperties","_excluded","createElement","_extends","Input","DatePicker","Autocomplete","Dropdown"],"sources":["../../../../../../src/extensions/forms/Form/Appearance/Appearance.tsx"],"sourcesContent":["import React from 'react'\nimport Provider from '../../../../shared/Provider'\n\nexport type Props = {\n size?: 'medium' | 'large'\n children: React.ReactNode\n}\n\nfunction FormAppearance({ children, size = null, ...rest }: Props) {\n return (\n <Provider\n Input={{ size }}\n DatePicker={{ size }}\n Autocomplete={{ size }}\n Dropdown={{ size }}\n {...rest}\n >\n {children}\n </Provider>\n )\n}\n\nexport default FormAppearance\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,6BAA6B;AAOlD,SAASC,cAAcA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;MAAEC,QAAQ;MAAEC,IAAI,GAAG;IAAqB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EACtD,OACER,KAAA,CAAAS,aAAA,CAACR,QAAQ,EAAAS,QAAA;IACPC,KAAK,EAAE;MAAEN;IAAK,CAAE;IAChBO,
|
|
1
|
+
{"version":3,"file":"Appearance.js","names":["React","Provider","FormAppearance","_ref","children","size","rest","_objectWithoutProperties","_excluded","createElement","_extends","Input","Textarea","DatePicker","Autocomplete","Dropdown"],"sources":["../../../../../../src/extensions/forms/Form/Appearance/Appearance.tsx"],"sourcesContent":["import React from 'react'\nimport Provider from '../../../../shared/Provider'\n\nexport type Props = {\n size?: 'medium' | 'large'\n children: React.ReactNode\n}\n\nfunction FormAppearance({ children, size = null, ...rest }: Props) {\n return (\n <Provider\n Input={{ size }}\n Textarea={{ size }}\n DatePicker={{ size }}\n Autocomplete={{ size }}\n Dropdown={{ size }}\n {...rest}\n >\n {children}\n </Provider>\n )\n}\n\nexport default FormAppearance\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,6BAA6B;AAOlD,SAASC,cAAcA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;MAAEC,QAAQ;MAAEC,IAAI,GAAG;IAAqB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EACtD,OACER,KAAA,CAAAS,aAAA,CAACR,QAAQ,EAAAS,QAAA;IACPC,KAAK,EAAE;MAAEN;IAAK,CAAE;IAChBO,QAAQ,EAAE;MAAEP;IAAK,CAAE;IACnBQ,UAAU,EAAE;MAAER;IAAK,CAAE;IACrBS,YAAY,EAAE;MAAET;IAAK,CAAE;IACvBU,QAAQ,EAAE;MAAEV;IAAK;EAAE,GACfC,IAAI,GAEPF,QACO,CAAC;AAEf;AAEA,eAAeF,cAAc"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
.dnb-forms-button-row {
|
|
5
5
|
display: flex;
|
|
6
6
|
flex-flow: row;
|
|
7
|
-
-
|
|
8
|
-
|
|
7
|
+
flex-wrap: wrap;
|
|
8
|
+
gap: var(--spacing-small);
|
|
9
9
|
}
|
|
10
10
|
.dnb-card + .dnb-forms-button-row:not([class*=space__top]) {
|
|
11
11
|
margin-top: var(--spacing-small);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.dnb-forms-button-row{-
|
|
1
|
+
.dnb-forms-button-row{display:flex;flex-flow:row;flex-wrap:wrap;gap:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}
|
|
@@ -16,9 +16,8 @@ function Step(props) {
|
|
|
16
16
|
if ((stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.activeIndex) !== index) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
return React.createElement(Flex.
|
|
20
|
-
className: classnames('dnb-forms-step', className)
|
|
21
|
-
direction: "vertical"
|
|
19
|
+
return React.createElement(Flex.Stack, _extends({
|
|
20
|
+
className: classnames('dnb-forms-step', className)
|
|
22
21
|
}, pickFlexContainerProps(props)), children);
|
|
23
22
|
}
|
|
24
23
|
Step._supportsSpacingProps = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Step.js","names":["React","useContext","classnames","pickFlexContainerProps","StepsContext","Flex","Step","props","className","index","children","stepsContext","activeIndex","createElement","
|
|
1
|
+
{"version":3,"file":"Step.js","names":["React","useContext","classnames","pickFlexContainerProps","StepsContext","Flex","Step","props","className","index","children","stepsContext","activeIndex","createElement","Stack","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/StepsLayout/Step/Step.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport { ComponentProps } from '../../types'\nimport {\n Props as FlexContainerProps,\n pickFlexContainerProps,\n} from '../../../../components/flex/Container'\nimport StepsContext from '../StepsContext'\nimport Flex from '../../../../components/flex/Flex'\n\nexport type Props = ComponentProps &\n FlexContainerProps & {\n index?: number\n title?: string\n }\n\nfunction Step(props: Props) {\n const { className, index, children } = props\n const stepsContext = useContext(StepsContext)\n\n if (stepsContext?.activeIndex !== index) {\n // Another step is active\n return null\n }\n\n return (\n <Flex.Stack\n className={classnames('dnb-forms-step', className)}\n {...pickFlexContainerProps(props)}\n >\n {children}\n </Flex.Stack>\n )\n}\n\nStep._supportsSpacingProps = true\nexport default Step\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAEEC,sBAAsB,QACjB,uCAAuC;AAC9C,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,IAAI,MAAM,kCAAkC;AAQnD,SAASC,IAAIA,CAACC,KAAY,EAAE;EAC1B,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGH,KAAK;EAC5C,MAAMI,YAAY,GAAGV,UAAU,CAACG,YAAY,CAAC;EAE7C,IAAI,CAAAO,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEC,WAAW,MAAKH,KAAK,EAAE;IAEvC,OAAO,IAAI;EACb;EAEA,OACET,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACS,KAAK,EAAAC,QAAA;IACTP,SAAS,EAAEN,UAAU,CAAC,gBAAgB,EAAEM,SAAS;EAAE,GAC/CL,sBAAsB,CAACI,KAAK,CAAC,GAEhCG,QACS,CAAC;AAEjB;AAEAJ,IAAI,CAACU,qBAAqB,GAAG,IAAI;AACjC,eAAeV,IAAI"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export type StepIndex = number;
|
|
3
|
+
export interface StepsContextState {
|
|
4
|
+
activeIndex?: StepIndex;
|
|
5
|
+
handlePrevious?: () => void;
|
|
6
|
+
handleNext?: () => void;
|
|
7
|
+
setActiveIndex?: (index: StepIndex) => void;
|
|
6
8
|
}
|
|
7
9
|
declare const StepsContext: React.Context<StepsContextState>;
|
|
8
10
|
export default StepsContext;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
const StepsContext = React.createContext(
|
|
2
|
+
const StepsContext = React.createContext({
|
|
3
|
+
activeIndex: 0,
|
|
4
|
+
setActiveIndex: () => null,
|
|
5
|
+
handlePrevious: () => null,
|
|
6
|
+
handleNext: () => null
|
|
7
|
+
});
|
|
3
8
|
export default StepsContext;
|
|
4
9
|
//# sourceMappingURL=StepsContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepsContext.js","names":["React","StepsContext","createContext","
|
|
1
|
+
{"version":3,"file":"StepsContext.js","names":["React","StepsContext","createContext","activeIndex","setActiveIndex","handlePrevious","handleNext"],"sources":["../../../../../src/extensions/forms/StepsLayout/StepsContext.ts"],"sourcesContent":["import React from 'react'\n\nexport type StepIndex = number\nexport interface StepsContextState {\n activeIndex?: StepIndex\n handlePrevious?: () => void\n handleNext?: () => void\n setActiveIndex?: (index: StepIndex) => void\n}\n\nconst StepsContext = React.createContext<StepsContextState | undefined>({\n activeIndex: 0,\n setActiveIndex: () => null,\n handlePrevious: () => null,\n handleNext: () => null,\n})\n\nexport default StepsContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAUzB,MAAMC,YAAY,GAAGD,KAAK,CAACE,aAAa,CAAgC;EACtEC,WAAW,EAAE,CAAC;EACdC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,UAAU,EAAEA,CAAA,KAAM;AACpB,CAAC,CAAC;AAEF,eAAeL,YAAY"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { StepIndex } from './StepsContext';
|
|
2
3
|
import { ComponentProps, EventReturnWithStateObject } from '../types';
|
|
3
4
|
export type Props = ComponentProps & {
|
|
4
5
|
id?: string;
|
|
5
6
|
mode?: 'static' | 'strict' | 'loose';
|
|
6
7
|
scrollTopOnStepChange?: boolean;
|
|
7
|
-
initialActiveIndex?:
|
|
8
|
-
onStepChange?: (index:
|
|
8
|
+
initialActiveIndex?: StepIndex;
|
|
9
|
+
onStepChange?: (index: StepIndex, mode: 'previous' | 'next') => EventReturnWithStateObject | void | Promise<EventReturnWithStateObject | void>;
|
|
9
10
|
children: React.ReactNode;
|
|
10
11
|
variant?: 'sidebar' | 'drawer';
|
|
11
12
|
noAnimation?: boolean;
|
|
@@ -18,5 +19,6 @@ declare namespace StepsLayout {
|
|
|
18
19
|
var NextButton: typeof import("./NextButton/NextButton").default;
|
|
19
20
|
var PreviousButton: typeof import("./PreviousButton/PreviousButton").default;
|
|
20
21
|
var Buttons: typeof import("./Buttons/Buttons").default;
|
|
22
|
+
var useStep: typeof import("./useStep").useStep;
|
|
21
23
|
}
|
|
22
24
|
export default StepsLayout;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
5
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
6
|
const _excluded = ["className", "id", "mode", "scrollTopOnStepChange", "initialActiveIndex", "onStepChange", "children", "noAnimation", "variant", "sidebarId"];
|
|
6
|
-
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
import React, { useContext, useCallback, useRef, useReducer, useMemo, useEffect } from 'react';
|
|
7
10
|
import classnames from 'classnames';
|
|
8
11
|
import { Space, StepIndicator } from '../../../components';
|
|
9
12
|
import { warn } from '../../../shared/component-helper';
|
|
@@ -16,6 +19,8 @@ import NextButton from './NextButton';
|
|
|
16
19
|
import PreviousButton from './PreviousButton';
|
|
17
20
|
import Buttons from './Buttons';
|
|
18
21
|
import Provider from '../DataContext/Provider';
|
|
22
|
+
import { useSharedState } from '../../../shared/helpers/useSharedState';
|
|
23
|
+
import { useStep } from './useStep';
|
|
19
24
|
function StepsLayout(props) {
|
|
20
25
|
const {
|
|
21
26
|
className,
|
|
@@ -30,7 +35,6 @@ function StepsLayout(props) {
|
|
|
30
35
|
sidebarId
|
|
31
36
|
} = props,
|
|
32
37
|
rest = _objectWithoutProperties(props, _excluded);
|
|
33
|
-
const dataContext = useContext(DataContext);
|
|
34
38
|
const {
|
|
35
39
|
hasContext,
|
|
36
40
|
setFormState,
|
|
@@ -38,7 +42,7 @@ function StepsLayout(props) {
|
|
|
38
42
|
setShowAllErrors,
|
|
39
43
|
showAllErrors,
|
|
40
44
|
scrollToTop
|
|
41
|
-
} =
|
|
45
|
+
} = useContext(DataContext);
|
|
42
46
|
const id = useId(_id);
|
|
43
47
|
const [, forceUpdate] = useReducer(() => ({}), {});
|
|
44
48
|
const activeIndexRef = useRef(initialActiveIndex);
|
|
@@ -50,34 +54,24 @@ function StepsLayout(props) {
|
|
|
50
54
|
}
|
|
51
55
|
return onStepChange === null || onStepChange === void 0 ? void 0 : onStepChange(index, mode);
|
|
52
56
|
}, [onStepChange]);
|
|
53
|
-
const
|
|
57
|
+
const handleStepChange = useCallback(_ref => {
|
|
58
|
+
let {
|
|
59
|
+
index,
|
|
60
|
+
skipErrorCheck,
|
|
61
|
+
mode
|
|
62
|
+
} = _ref;
|
|
54
63
|
handleSubmitCall({
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
skipErrorCheck,
|
|
65
|
+
skipFieldValidation: skipErrorCheck,
|
|
57
66
|
enableAsyncBehaviour: isAsync(onStepChange),
|
|
58
67
|
onSubmit: async () => {
|
|
59
|
-
const result = await callOnStepChange(
|
|
68
|
+
const result = await callOnStepChange(index, mode);
|
|
60
69
|
setFormState('abort');
|
|
61
|
-
if (!
|
|
62
|
-
|
|
63
|
-
forceUpdate();
|
|
64
|
-
}
|
|
65
|
-
if (scrollTopOnStepChange) {
|
|
66
|
-
scrollToTop();
|
|
70
|
+
if (!skipErrorCheck) {
|
|
71
|
+
setShowAllErrors(errorOnStepRef.current[index]);
|
|
67
72
|
}
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}, [callOnStepChange, handleSubmitCall, onStepChange, scrollToTop, scrollTopOnStepChange, setFormState]);
|
|
72
|
-
const handleNext = useCallback(() => {
|
|
73
|
-
handleSubmitCall({
|
|
74
|
-
enableAsyncBehaviour: isAsync(onStepChange),
|
|
75
|
-
onSubmit: async () => {
|
|
76
|
-
const result = await callOnStepChange(activeIndexRef.current + 1, 'next');
|
|
77
|
-
setFormState('abort');
|
|
78
|
-
setShowAllErrors(errorOnStepRef.current[activeIndexRef.current + 1]);
|
|
79
73
|
if (!(result instanceof Error)) {
|
|
80
|
-
activeIndexRef.current =
|
|
74
|
+
activeIndexRef.current = index;
|
|
81
75
|
forceUpdate();
|
|
82
76
|
}
|
|
83
77
|
if (scrollTopOnStepChange) {
|
|
@@ -87,33 +81,76 @@ function StepsLayout(props) {
|
|
|
87
81
|
}
|
|
88
82
|
});
|
|
89
83
|
}, [callOnStepChange, handleSubmitCall, onStepChange, scrollToTop, scrollTopOnStepChange, setFormState, setShowAllErrors]);
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
throw new Error('Only Step can be children of StepsLayout');
|
|
84
|
+
const setActiveIndex = useCallback((index, options) => {
|
|
85
|
+
if (index === activeIndexRef.current) {
|
|
86
|
+
return;
|
|
94
87
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
88
|
+
const mode = index > activeIndexRef.current ? 'next' : 'previous';
|
|
89
|
+
handleStepChange(_objectSpread({
|
|
90
|
+
index,
|
|
91
|
+
skipErrorCheck: mode === 'previous',
|
|
92
|
+
mode
|
|
93
|
+
}, options));
|
|
94
|
+
}, [handleStepChange]);
|
|
95
|
+
const handlePrevious = useCallback(() => {
|
|
96
|
+
setActiveIndex(activeIndexRef.current - 1);
|
|
97
|
+
}, [setActiveIndex]);
|
|
98
|
+
const handleNext = useCallback(() => {
|
|
99
|
+
setActiveIndex(activeIndexRef.current + 1);
|
|
100
|
+
}, [setActiveIndex]);
|
|
101
|
+
const handleChange = useCallback(_ref2 => {
|
|
98
102
|
let {
|
|
99
103
|
current_step
|
|
100
|
-
} =
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}, [
|
|
104
|
+
} = _ref2;
|
|
105
|
+
setActiveIndex(current_step, {
|
|
106
|
+
skipErrorCheck: true
|
|
107
|
+
});
|
|
108
|
+
}, [setActiveIndex]);
|
|
109
|
+
const providerValue = useMemo(() => ({
|
|
110
|
+
activeIndex: activeIndexRef.current,
|
|
111
|
+
setActiveIndex,
|
|
112
|
+
handlePrevious,
|
|
113
|
+
handleNext
|
|
114
|
+
}), [activeIndexRef.current, setActiveIndex, handlePrevious, handleNext]);
|
|
115
|
+
const sharedState = useSharedState(hasContext && id ? id + '-steps' : undefined);
|
|
116
|
+
const {
|
|
117
|
+
extend
|
|
118
|
+
} = sharedState;
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (hasContext && id) {
|
|
121
|
+
extend(providerValue);
|
|
122
|
+
}
|
|
123
|
+
}, [id, extend, providerValue]);
|
|
105
124
|
if (!hasContext) {
|
|
106
125
|
warn('You may wrap StepsLayout in Form.Handler');
|
|
107
126
|
return React.createElement(Provider, null, React.createElement(StepsLayout, _extends({}, props, {
|
|
108
127
|
id: id
|
|
109
128
|
})));
|
|
110
129
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
130
|
+
const titles = [];
|
|
131
|
+
const contents = React.Children.map(children, (child, i) => {
|
|
132
|
+
if (React.isValidElement(child)) {
|
|
133
|
+
var _child, _child2;
|
|
134
|
+
let step = child;
|
|
135
|
+
if (((_child = child) === null || _child === void 0 ? void 0 : _child.type) !== Step && typeof child.type === 'function') {
|
|
136
|
+
var _step;
|
|
137
|
+
step = child.type.apply(child.type, [child.props]);
|
|
138
|
+
if (((_step = step) === null || _step === void 0 ? void 0 : _step.type) === Step) {
|
|
139
|
+
child = step;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (((_child2 = child) === null || _child2 === void 0 ? void 0 : _child2.type) === Step) {
|
|
143
|
+
var _child$props$title;
|
|
144
|
+
titles.push((_child$props$title = child.props.title) !== null && _child$props$title !== void 0 ? _child$props$title : 'Title missing');
|
|
145
|
+
return React.cloneElement(child, {
|
|
146
|
+
index: i
|
|
147
|
+
});
|
|
148
|
+
}
|
|
116
149
|
}
|
|
150
|
+
return child;
|
|
151
|
+
});
|
|
152
|
+
return React.createElement(StepsContext.Provider, {
|
|
153
|
+
value: providerValue
|
|
117
154
|
}, React.createElement(Space, _extends({
|
|
118
155
|
className: classnames('dnb-forms-steps-layout', className, variant === 'drawer' && 'dnb-forms-steps-layout--drawer')
|
|
119
156
|
}, rest), React.createElement("aside", {
|
|
@@ -123,26 +160,20 @@ function StepsLayout(props) {
|
|
|
123
160
|
}), React.createElement(StepIndicator, {
|
|
124
161
|
bottom: true,
|
|
125
162
|
current_step: activeIndexRef.current,
|
|
126
|
-
data:
|
|
163
|
+
data: titles,
|
|
127
164
|
mode: mode,
|
|
128
165
|
no_animation: noAnimation,
|
|
129
166
|
on_change: handleChange,
|
|
130
167
|
sidebar_id: variant === 'drawer' && !sidebarId ? '' : sidebarId ? sidebarId : id
|
|
131
168
|
})), React.createElement("div", {
|
|
132
169
|
className: "dnb-forms-steps-layout__contents"
|
|
133
|
-
},
|
|
134
|
-
if (React.isValidElement(child) && child.type === Step) {
|
|
135
|
-
return React.cloneElement(child, {
|
|
136
|
-
index: i
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
return child;
|
|
140
|
-
}))));
|
|
170
|
+
}, contents)));
|
|
141
171
|
}
|
|
142
172
|
StepsLayout._supportsSpacingProps = true;
|
|
143
173
|
StepsLayout.Step = Step;
|
|
144
174
|
StepsLayout.NextButton = NextButton;
|
|
145
175
|
StepsLayout.PreviousButton = PreviousButton;
|
|
146
176
|
StepsLayout.Buttons = Buttons;
|
|
177
|
+
StepsLayout.useStep = useStep;
|
|
147
178
|
export default StepsLayout;
|
|
148
179
|
//# sourceMappingURL=StepsLayout.js.map
|