@dnb/eufemia 9.16.3 → 9.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 +50 -0
- package/assets/assets/icons/above_the_line.svg +1 -1
- package/assets/assets/icons/eufemia-icons-pdf-categorized.tgz +0 -0
- package/assets/assets/icons/eufemia-icons-pdf.tgz +0 -0
- package/assets/assets/icons/facebook.svg +3 -0
- package/assets/assets/icons/facebook_medium.svg +3 -0
- package/assets/assets/icons/fridge.svg +1 -1
- package/assets/assets/icons/information_circled.svg +2 -1
- package/assets/assets/icons/information_circled_medium.svg +2 -1
- package/assets/assets/icons/instagram.svg +5 -0
- package/assets/assets/icons/instagram_medium.svg +12 -0
- package/assets/assets/icons/linkedin.svg +3 -0
- package/assets/assets/icons/linkedin_medium.svg +3 -0
- package/assets/assets/icons/motorcycle_medium.svg +2 -2
- package/assets/assets/icons/paragraph.svg +1 -1
- package/assets/assets/icons/scooter_medium.svg +2 -2
- package/assets/assets/icons/tag.svg +4 -0
- package/assets/assets/icons/tag_medium.svg +4 -0
- package/assets/icons/above_the_line.svg +1 -1
- package/assets/icons/eufemia-icons-pdf-categorized.tgz +0 -0
- package/assets/icons/eufemia-icons-pdf.tgz +0 -0
- package/assets/icons/facebook.svg +3 -0
- package/assets/icons/facebook_medium.svg +3 -0
- package/assets/icons/fridge.svg +1 -1
- package/assets/icons/information_circled.svg +2 -1
- package/assets/icons/information_circled_medium.svg +2 -1
- package/assets/icons/instagram.svg +5 -0
- package/assets/icons/instagram_medium.svg +12 -0
- package/assets/icons/linkedin.svg +3 -0
- package/assets/icons/linkedin_medium.svg +3 -0
- package/assets/icons/motorcycle_medium.svg +2 -2
- package/assets/icons/paragraph.svg +1 -1
- package/assets/icons/scooter_medium.svg +2 -2
- package/assets/icons/tag.svg +4 -0
- package/assets/icons/tag_medium.svg +4 -0
- package/cjs/components/Tag.d.ts +14 -0
- package/cjs/components/Tag.js +52 -0
- package/cjs/components/accordion/Accordion.d.ts +7 -7
- package/cjs/components/autocomplete/Autocomplete.d.ts +13 -13
- package/cjs/components/autocomplete/style/dnb-autocomplete.css +0 -2
- package/cjs/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
- package/cjs/components/breadcrumb/Breadcrumb.js +5 -3
- package/cjs/components/breadcrumb/style/_breadcrumb.scss +7 -4
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +10 -8
- package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/cjs/components/button/Button.d.ts +7 -7
- package/cjs/components/button/Button.js +7 -5
- package/cjs/components/button/style/_button.scss +0 -4
- package/cjs/components/button/style/dnb-button.css +0 -2
- package/cjs/components/button/style/dnb-button.min.css +1 -1
- package/cjs/components/button/style/themes/dnb-button-theme-open-banking.css +4 -13
- package/cjs/components/button/style/themes/dnb-button-theme-open-banking.min.css +1 -1
- package/cjs/components/button/style/themes/dnb-button-theme-ui.css +4 -13
- 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 +5 -18
- package/cjs/components/checkbox/Checkbox.d.ts +3 -3
- package/cjs/components/date-picker/DatePicker.d.ts +14 -14
- package/cjs/components/date-picker/DatePickerAddon.d.ts +1 -1
- package/cjs/components/date-picker/DatePickerCalendar.d.ts +1 -1
- package/cjs/components/date-picker/DatePickerInput.d.ts +1 -1
- package/cjs/components/date-picker/style/dnb-date-picker.css +0 -6
- package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/cjs/components/dropdown/Dropdown.d.ts +9 -9
- package/cjs/components/dropdown/style/dnb-dropdown.css +0 -2
- package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
- package/cjs/components/form-row/FormRow.d.ts +4 -4
- package/cjs/components/form-set/FormSet.d.ts +6 -6
- package/cjs/components/global-error/GlobalError.d.ts +1 -1
- package/cjs/components/global-error/style/dnb-global-error.css +0 -2
- package/cjs/components/global-error/style/dnb-global-error.min.css +1 -1
- package/cjs/components/global-status/GlobalStatus.d.ts +5 -5
- package/cjs/components/global-status/GlobalStatus.js +21 -73
- package/cjs/components/global-status/style/_global-status.scss +14 -12
- package/cjs/components/global-status/style/dnb-global-status.css +13 -17
- package/cjs/components/global-status/style/dnb-global-status.min.css +1 -1
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.css +2 -48
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
- package/cjs/components/global-status/style/themes/dnb-global-status-theme-ui.scss +2 -36
- package/cjs/components/heading/Heading.d.ts +2 -2
- package/cjs/components/heading/HeadingProvider.d.ts +2 -2
- package/cjs/components/help-button/HelpButton.d.ts +200 -0
- package/cjs/components/icon/Icon.d.ts +1 -1
- package/cjs/components/icon-primary/IconPrimary.d.ts +1 -1
- package/cjs/components/index.d.ts +2 -0
- package/cjs/components/index.js +8 -0
- package/cjs/components/input/Input.d.ts +9 -9
- package/cjs/components/input/style/dnb-input.css +0 -2
- package/cjs/components/input/style/dnb-input.min.css +1 -1
- package/cjs/components/input/style/themes/dnb-input-theme-ui.css +11 -2
- 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 +4 -1
- package/cjs/components/input-masked/InputMasked.d.ts +11 -11
- package/cjs/components/input-masked/InputMasked.js +6 -3
- package/cjs/components/input-masked/InputMaskedElement.js +1 -4
- package/cjs/components/input-masked/InputMaskedHooks.js +68 -54
- package/cjs/components/input-masked/InputMaskedUtils.js +17 -22
- package/cjs/components/input-masked/style/dnb-input-masked.css +0 -2
- package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
- package/cjs/components/lib.js +9 -0
- package/cjs/components/modal/Modal.js +158 -300
- package/cjs/components/modal/ModalContent.js +183 -272
- package/cjs/components/modal/ModalRoot.js +194 -0
- package/cjs/components/modal/components/CloseButton.js +125 -0
- package/cjs/components/modal/components/ModalHeader.js +124 -0
- package/cjs/components/modal/{ModalHeader.js → components/ModalHeaderBar.js} +50 -162
- package/cjs/components/modal/{ModalInner.js → components/ModalInner.js} +11 -19
- package/cjs/components/modal/helpers.js +80 -0
- package/cjs/components/modal/style/_modal-mixins.scss +4 -4
- package/cjs/components/modal/style/_modal.scss +13 -30
- package/cjs/components/modal/style/dnb-modal.css +27 -47
- package/cjs/components/modal/style/dnb-modal.min.css +1 -1
- package/cjs/components/modal/types.js +1 -0
- package/cjs/components/number-format/NumberFormat.d.ts +8 -8
- package/cjs/components/pagination/Pagination.d.ts +30 -30
- package/cjs/components/pagination/PaginationProvider.d.ts +2 -2
- package/cjs/components/pagination/style/dnb-pagination.css +0 -2
- package/cjs/components/pagination/style/dnb-pagination.min.css +1 -1
- package/cjs/components/radio/Radio.d.ts +4 -4
- package/cjs/components/radio/RadioGroup.d.ts +3 -3
- package/cjs/components/section/Section.d.ts +3 -2
- package/cjs/components/section/style/themes/dnb-section-theme-ui.css +77 -19
- package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/cjs/components/section/style/themes/dnb-section-theme-ui.scss +15 -2
- package/cjs/components/skeleton/Skeleton.d.ts +2 -2
- package/cjs/components/slider/Slider.d.ts +4 -4
- package/cjs/components/slider/style/dnb-slider.css +0 -2
- package/cjs/components/slider/style/dnb-slider.min.css +1 -1
- package/cjs/components/step-indicator/StepIndicator.d.ts +6 -6
- package/cjs/components/step-indicator/StepIndicator.js +4 -98
- package/cjs/components/step-indicator/StepIndicatorContext.d.ts +2 -1
- package/cjs/components/step-indicator/StepIndicatorContext.js +221 -19
- package/cjs/components/step-indicator/StepIndicatorItem.d.ts +2 -2
- package/cjs/components/step-indicator/StepIndicatorItem.js +4 -6
- package/cjs/components/step-indicator/StepIndicatorModal.js +40 -49
- package/cjs/components/step-indicator/StepIndicatorProps.js +1 -1
- package/cjs/components/step-indicator/StepIndicatorSidebar.d.ts +40 -1
- package/cjs/components/step-indicator/StepIndicatorSidebar.js +57 -54
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
- package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
- package/cjs/components/step-indicator/style/_step-indicator.scss +17 -4
- package/cjs/components/step-indicator/style/dnb-step-indicator.css +14 -6
- package/cjs/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
- package/cjs/components/switch/Switch.d.ts +5 -5
- package/cjs/components/tabs/Tabs.d.ts +4 -4
- package/cjs/components/tabs/TabsContentWrapper.d.ts +1 -1
- package/cjs/components/tag/Tag.js +97 -0
- package/cjs/components/tag/index.d.ts +8 -0
- package/cjs/components/tag/index.js +52 -0
- package/cjs/components/tag/style/_tag.scss +26 -0
- package/cjs/components/tag/style/dnb-tag.css +109 -0
- package/cjs/components/tag/style/dnb-tag.min.css +1 -0
- package/cjs/components/tag/style/dnb-tag.scss +12 -0
- package/cjs/components/tag/style/index.d.ts +6 -0
- package/cjs/components/tag/style/index.js +3 -0
- package/cjs/components/tag/style.js +3 -0
- package/cjs/components/textarea/Textarea.d.ts +4 -4
- package/cjs/components/textarea/style/_textarea.scss +4 -0
- package/cjs/components/textarea/style/dnb-textarea.css +3 -0
- package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
- package/cjs/components/toggle-button/ToggleButton.d.ts +6 -6
- package/cjs/components/toggle-button/ToggleButton.js +6 -2
- package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +3 -3
- package/cjs/components/toggle-button/style/dnb-toggle-button.css +0 -2
- package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
- package/cjs/components/tooltip/Tooltip.d.ts +5 -5
- package/cjs/components/tooltip/TooltipContainer.d.ts +3 -3
- package/cjs/components/tooltip/TooltipPortal.d.ts +1 -1
- package/cjs/components/tooltip/TooltipWithEvents.d.ts +1 -1
- package/cjs/fragments/scroll-view/ScrollView.js +7 -16
- package/cjs/icons/above_the_line.js +1 -1
- package/cjs/icons/facebook.js +35 -0
- package/cjs/icons/facebook_medium.js +35 -0
- package/cjs/icons/fridge.js +1 -1
- package/cjs/icons/icons-meta.json +24 -0
- package/cjs/icons/icons-pdf.lock +1 -1
- package/cjs/icons/icons-svg.lock +1 -1
- package/cjs/icons/index.d.ts +16 -0
- package/cjs/icons/index.js +64 -0
- package/cjs/icons/information_circled.js +11 -4
- package/cjs/icons/information_circled_medium.js +10 -4
- package/cjs/icons/instagram.js +47 -0
- package/cjs/icons/instagram_medium.js +54 -0
- package/cjs/icons/linkedin.js +32 -0
- package/cjs/icons/linkedin_medium.js +32 -0
- package/cjs/icons/motorcycle_medium.js +2 -2
- package/cjs/icons/paragraph.js +1 -1
- package/cjs/icons/scooter_medium.js +2 -2
- package/cjs/icons/secondary_icons.js +32 -0
- package/cjs/icons/secondary_icons_medium.js +32 -0
- package/cjs/icons/tag.js +41 -0
- package/cjs/icons/tag_medium.js +41 -0
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +8 -0
- package/cjs/shared/Context.js +2 -1
- package/cjs/shared/EventEmitter.js +6 -8
- package/cjs/shared/component-helper.js +108 -76
- package/cjs/shared/helpers.js +36 -11
- package/cjs/style/core/helper-classes/skip-link.scss +1 -1
- package/cjs/style/dnb-ui-components.css +107 -76
- package/cjs/style/dnb-ui-components.min.css +5 -5
- package/cjs/style/dnb-ui-components.scss +1 -0
- package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +98 -95
- package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
- package/cjs/style/themes/theme-ui/dnb-theme-ui.css +94 -82
- package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
- package/components/Tag.d.ts +14 -0
- package/components/Tag.js +3 -0
- package/components/accordion/Accordion.d.ts +7 -7
- package/components/autocomplete/Autocomplete.d.ts +13 -13
- package/components/autocomplete/style/dnb-autocomplete.css +0 -2
- package/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
- package/components/breadcrumb/Breadcrumb.js +5 -3
- package/components/breadcrumb/Breadcrumb.tsx +9 -0
- package/components/breadcrumb/style/_breadcrumb.scss +7 -4
- package/components/breadcrumb/style/dnb-breadcrumb.css +10 -8
- package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/components/button/Button.d.ts +7 -7
- package/components/button/Button.js +7 -5
- package/components/button/style/_button.scss +0 -4
- package/components/button/style/dnb-button.css +0 -2
- package/components/button/style/dnb-button.min.css +1 -1
- package/components/button/style/themes/dnb-button-theme-open-banking.css +4 -13
- package/components/button/style/themes/dnb-button-theme-open-banking.min.css +1 -1
- package/components/button/style/themes/dnb-button-theme-ui.css +4 -13
- package/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
- package/components/button/style/themes/dnb-button-theme-ui.scss +5 -18
- package/components/checkbox/Checkbox.d.ts +3 -3
- package/components/date-picker/DatePicker.d.ts +14 -14
- package/components/date-picker/DatePickerAddon.d.ts +1 -1
- package/components/date-picker/DatePickerCalendar.d.ts +1 -1
- package/components/date-picker/DatePickerInput.d.ts +1 -1
- package/components/date-picker/style/dnb-date-picker.css +0 -6
- package/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/components/dropdown/Dropdown.d.ts +9 -9
- package/components/dropdown/style/dnb-dropdown.css +0 -2
- package/components/dropdown/style/dnb-dropdown.min.css +1 -1
- package/components/form-row/FormRow.d.ts +4 -4
- package/components/form-set/FormSet.d.ts +6 -6
- package/components/global-error/GlobalError.d.ts +1 -1
- package/components/global-error/style/dnb-global-error.css +0 -2
- package/components/global-error/style/dnb-global-error.min.css +1 -1
- package/components/global-status/GlobalStatus.d.ts +5 -5
- package/components/global-status/GlobalStatus.js +18 -71
- package/components/global-status/style/_global-status.scss +14 -12
- package/components/global-status/style/dnb-global-status.css +13 -17
- package/components/global-status/style/dnb-global-status.min.css +1 -1
- package/components/global-status/style/themes/dnb-global-status-theme-ui.css +2 -48
- package/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
- package/components/global-status/style/themes/dnb-global-status-theme-ui.scss +2 -36
- package/components/heading/Heading.d.ts +2 -2
- package/components/heading/HeadingProvider.d.ts +2 -2
- package/components/help-button/HelpButton.d.ts +200 -0
- package/components/icon/Icon.d.ts +1 -1
- package/components/index.d.ts +2 -0
- package/components/index.js +2 -1
- package/components/input/Input.d.ts +9 -9
- package/components/input/style/dnb-input.css +0 -2
- package/components/input/style/dnb-input.min.css +1 -1
- package/components/input/style/themes/dnb-input-theme-ui.css +11 -2
- package/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
- package/components/input/style/themes/dnb-input-theme-ui.scss +4 -1
- package/components/input-masked/InputMasked.d.ts +11 -11
- package/components/input-masked/InputMasked.js +6 -4
- package/components/input-masked/InputMaskedElement.js +1 -4
- package/components/input-masked/InputMaskedHooks.js +66 -48
- package/components/input-masked/InputMaskedUtils.js +18 -23
- package/components/input-masked/style/dnb-input-masked.css +0 -2
- package/components/input-masked/style/dnb-input-masked.min.css +1 -1
- package/components/lib.js +3 -1
- package/components/modal/Modal.js +147 -279
- package/components/modal/Modal.tsx +524 -0
- package/components/modal/ModalContent.js +175 -253
- package/components/modal/ModalContent.tsx +515 -0
- package/components/modal/ModalContext.tsx +10 -0
- package/components/modal/ModalRoot.js +145 -0
- package/components/modal/ModalRoot.tsx +131 -0
- package/components/modal/components/CloseButton.js +72 -0
- package/components/modal/components/CloseButton.tsx +56 -0
- package/components/modal/components/ModalHeader.js +70 -0
- package/components/modal/components/ModalHeader.tsx +79 -0
- package/components/modal/components/ModalHeaderBar.js +122 -0
- package/components/modal/components/ModalHeaderBar.tsx +118 -0
- package/components/modal/{ModalInner.js → components/ModalInner.js} +11 -17
- package/components/modal/components/ModalInner.tsx +45 -0
- package/components/modal/helpers.js +64 -0
- package/components/modal/helpers.ts +63 -0
- package/components/modal/style/_modal-mixins.scss +4 -4
- package/components/modal/style/_modal.scss +13 -30
- package/components/modal/style/dnb-modal.css +27 -47
- package/components/modal/style/dnb-modal.min.css +1 -1
- package/components/modal/types.js +1 -0
- package/{cjs/components/modal/Modal.d.ts → components/modal/types.ts} +125 -179
- package/components/number-format/NumberFormat.d.ts +8 -8
- package/components/pagination/Pagination.d.ts +30 -30
- package/components/pagination/PaginationProvider.d.ts +2 -2
- package/components/pagination/style/dnb-pagination.css +0 -2
- package/components/pagination/style/dnb-pagination.min.css +1 -1
- package/components/radio/Radio.d.ts +4 -4
- package/components/radio/RadioGroup.d.ts +3 -3
- package/components/section/Section.d.ts +3 -1
- package/components/section/style/themes/dnb-section-theme-ui.css +77 -19
- package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/components/section/style/themes/dnb-section-theme-ui.scss +15 -2
- package/components/skeleton/Skeleton.d.ts +2 -2
- package/components/slider/Slider.d.ts +4 -4
- package/components/slider/style/dnb-slider.css +0 -2
- package/components/slider/style/dnb-slider.min.css +1 -1
- package/components/step-indicator/StepIndicator.d.ts +6 -6
- package/components/step-indicator/StepIndicator.js +4 -91
- package/components/step-indicator/StepIndicatorContext.d.ts +2 -1
- package/components/step-indicator/StepIndicatorContext.js +196 -18
- package/components/step-indicator/StepIndicatorItem.d.ts +2 -2
- package/components/step-indicator/StepIndicatorItem.js +3 -5
- package/components/step-indicator/StepIndicatorModal.js +33 -32
- package/components/step-indicator/StepIndicatorProps.js +1 -1
- package/components/step-indicator/StepIndicatorSidebar.d.ts +40 -1
- package/components/step-indicator/StepIndicatorSidebar.js +54 -52
- package/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
- package/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
- package/components/step-indicator/style/_step-indicator.scss +17 -4
- package/components/step-indicator/style/dnb-step-indicator.css +14 -6
- package/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
- package/components/switch/Switch.d.ts +5 -5
- package/components/tabs/Tabs.d.ts +4 -4
- package/components/tabs/TabsContentWrapper.d.ts +1 -1
- package/components/tag/Tag.js +63 -0
- package/components/tag/Tag.tsx +95 -0
- package/components/tag/index.d.ts +8 -0
- package/components/tag/index.js +3 -0
- package/components/tag/style/_tag.scss +26 -0
- package/components/tag/style/dnb-tag.css +109 -0
- package/components/tag/style/dnb-tag.min.css +1 -0
- package/components/tag/style/dnb-tag.scss +12 -0
- package/components/tag/style/index.d.ts +6 -0
- package/components/tag/style/index.js +1 -0
- package/components/tag/style.js +1 -0
- package/components/textarea/Textarea.d.ts +4 -4
- package/components/textarea/style/_textarea.scss +4 -0
- package/components/textarea/style/dnb-textarea.css +3 -0
- package/components/textarea/style/dnb-textarea.min.css +1 -1
- package/components/toggle-button/ToggleButton.d.ts +6 -6
- package/components/toggle-button/ToggleButton.js +6 -2
- package/components/toggle-button/ToggleButtonGroup.d.ts +3 -3
- package/components/toggle-button/style/dnb-toggle-button.css +0 -2
- package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
- package/components/tooltip/Tooltip.d.ts +5 -5
- package/components/tooltip/TooltipContainer.d.ts +3 -3
- package/components/tooltip/TooltipPortal.d.ts +1 -1
- package/components/tooltip/TooltipWithEvents.d.ts +1 -1
- package/es/components/Tag.d.ts +14 -0
- package/es/components/Tag.js +3 -0
- package/es/components/accordion/Accordion.d.ts +7 -7
- package/es/components/autocomplete/Autocomplete.d.ts +13 -13
- package/es/components/autocomplete/style/dnb-autocomplete.css +0 -2
- package/es/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
- package/es/components/breadcrumb/Breadcrumb.js +5 -3
- package/es/components/breadcrumb/Breadcrumb.tsx +9 -0
- package/es/components/breadcrumb/style/_breadcrumb.scss +7 -4
- package/es/components/breadcrumb/style/dnb-breadcrumb.css +10 -8
- package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/es/components/button/Button.d.ts +7 -7
- package/es/components/button/Button.js +8 -5
- package/es/components/button/style/_button.scss +0 -4
- package/es/components/button/style/dnb-button.css +0 -2
- package/es/components/button/style/dnb-button.min.css +1 -1
- package/es/components/button/style/themes/dnb-button-theme-open-banking.css +4 -13
- package/es/components/button/style/themes/dnb-button-theme-open-banking.min.css +1 -1
- package/es/components/button/style/themes/dnb-button-theme-ui.css +4 -13
- 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 +5 -18
- package/es/components/checkbox/Checkbox.d.ts +3 -3
- package/es/components/date-picker/DatePicker.d.ts +14 -14
- package/es/components/date-picker/DatePickerAddon.d.ts +1 -1
- package/es/components/date-picker/DatePickerCalendar.d.ts +1 -1
- package/es/components/date-picker/DatePickerInput.d.ts +1 -1
- package/es/components/date-picker/style/dnb-date-picker.css +0 -6
- package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/es/components/dropdown/Dropdown.d.ts +9 -9
- package/es/components/dropdown/style/dnb-dropdown.css +0 -2
- package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
- package/es/components/form-row/FormRow.d.ts +4 -4
- package/es/components/form-set/FormSet.d.ts +6 -6
- package/es/components/global-error/GlobalError.d.ts +1 -1
- package/es/components/global-error/style/dnb-global-error.css +0 -2
- package/es/components/global-error/style/dnb-global-error.min.css +1 -1
- package/es/components/global-status/GlobalStatus.d.ts +5 -5
- package/es/components/global-status/GlobalStatus.js +18 -67
- package/es/components/global-status/style/_global-status.scss +14 -12
- package/es/components/global-status/style/dnb-global-status.css +13 -17
- package/es/components/global-status/style/dnb-global-status.min.css +1 -1
- package/es/components/global-status/style/themes/dnb-global-status-theme-ui.css +2 -48
- package/es/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
- package/es/components/global-status/style/themes/dnb-global-status-theme-ui.scss +2 -36
- package/es/components/heading/Heading.d.ts +2 -2
- package/es/components/heading/HeadingProvider.d.ts +2 -2
- package/es/components/help-button/HelpButton.d.ts +200 -0
- package/es/components/icon/Icon.d.ts +1 -1
- package/es/components/icon-primary/IconPrimary.d.ts +1 -1
- package/es/components/index.d.ts +2 -0
- package/es/components/index.js +2 -1
- package/es/components/input/Input.d.ts +9 -9
- package/es/components/input/style/dnb-input.css +0 -2
- package/es/components/input/style/dnb-input.min.css +1 -1
- package/es/components/input/style/themes/dnb-input-theme-ui.css +11 -2
- 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 +4 -1
- package/es/components/input-masked/InputMasked.d.ts +11 -11
- package/es/components/input-masked/InputMasked.js +6 -4
- package/es/components/input-masked/InputMaskedElement.js +1 -4
- package/es/components/input-masked/InputMaskedHooks.js +50 -34
- package/es/components/input-masked/InputMaskedUtils.js +16 -21
- package/es/components/input-masked/style/dnb-input-masked.css +0 -2
- package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
- package/es/components/lib.js +3 -1
- package/es/components/modal/Modal.js +128 -252
- package/es/components/modal/Modal.tsx +524 -0
- package/es/components/modal/ModalContent.js +131 -211
- package/es/components/modal/ModalContent.tsx +515 -0
- package/es/components/modal/ModalContext.tsx +10 -0
- package/es/components/modal/ModalRoot.js +108 -0
- package/es/components/modal/ModalRoot.tsx +131 -0
- package/es/components/modal/components/CloseButton.js +41 -0
- package/es/components/modal/components/CloseButton.tsx +56 -0
- package/es/components/modal/components/ModalHeader.js +40 -0
- package/es/components/modal/components/ModalHeader.tsx +79 -0
- package/es/components/modal/components/ModalHeaderBar.js +88 -0
- package/es/components/modal/components/ModalHeaderBar.tsx +118 -0
- package/es/components/modal/{ModalInner.js → components/ModalInner.js} +8 -18
- package/es/components/modal/components/ModalInner.tsx +45 -0
- package/es/components/modal/helpers.js +60 -0
- package/es/components/modal/helpers.ts +63 -0
- package/es/components/modal/style/_modal-mixins.scss +4 -4
- package/es/components/modal/style/_modal.scss +13 -30
- package/es/components/modal/style/dnb-modal.css +27 -47
- package/es/components/modal/style/dnb-modal.min.css +1 -1
- package/es/components/modal/types.js +1 -0
- package/es/components/modal/{Modal.d.ts → types.ts} +125 -179
- package/es/components/number-format/NumberFormat.d.ts +8 -8
- package/es/components/pagination/Pagination.d.ts +30 -30
- package/es/components/pagination/PaginationProvider.d.ts +2 -2
- package/es/components/pagination/style/dnb-pagination.css +0 -2
- package/es/components/pagination/style/dnb-pagination.min.css +1 -1
- package/es/components/radio/Radio.d.ts +4 -4
- package/es/components/radio/RadioGroup.d.ts +3 -3
- package/es/components/section/Section.d.ts +3 -2
- package/es/components/section/style/themes/dnb-section-theme-ui.css +77 -19
- package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/es/components/section/style/themes/dnb-section-theme-ui.scss +15 -2
- package/es/components/skeleton/Skeleton.d.ts +2 -2
- package/es/components/slider/Slider.d.ts +4 -4
- package/es/components/slider/style/dnb-slider.css +0 -2
- package/es/components/slider/style/dnb-slider.min.css +1 -1
- package/es/components/step-indicator/StepIndicator.d.ts +6 -6
- package/es/components/step-indicator/StepIndicator.js +3 -79
- package/es/components/step-indicator/StepIndicatorContext.d.ts +2 -1
- package/es/components/step-indicator/StepIndicatorContext.js +165 -17
- package/es/components/step-indicator/StepIndicatorItem.d.ts +2 -2
- package/es/components/step-indicator/StepIndicatorItem.js +2 -5
- package/es/components/step-indicator/StepIndicatorModal.js +31 -34
- package/es/components/step-indicator/StepIndicatorProps.js +1 -1
- package/es/components/step-indicator/StepIndicatorSidebar.d.ts +40 -1
- package/es/components/step-indicator/StepIndicatorSidebar.js +44 -46
- package/es/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
- package/es/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
- package/es/components/step-indicator/style/_step-indicator.scss +17 -4
- package/es/components/step-indicator/style/dnb-step-indicator.css +14 -6
- package/es/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
- package/es/components/switch/Switch.d.ts +5 -5
- package/es/components/tabs/Tabs.d.ts +4 -4
- package/es/components/tabs/TabsContentWrapper.d.ts +1 -1
- package/es/components/tag/Tag.js +58 -0
- package/es/components/tag/Tag.tsx +95 -0
- package/es/components/tag/index.d.ts +8 -0
- package/es/components/tag/index.js +3 -0
- package/es/components/tag/style/_tag.scss +26 -0
- package/es/components/tag/style/dnb-tag.css +109 -0
- package/es/components/tag/style/dnb-tag.min.css +1 -0
- package/es/components/tag/style/dnb-tag.scss +12 -0
- package/es/components/tag/style/index.d.ts +6 -0
- package/es/components/tag/style/index.js +1 -0
- package/es/components/tag/style.js +1 -0
- package/es/components/textarea/Textarea.d.ts +4 -4
- package/es/components/textarea/style/_textarea.scss +4 -0
- package/es/components/textarea/style/dnb-textarea.css +3 -0
- package/es/components/textarea/style/dnb-textarea.min.css +1 -1
- package/es/components/toggle-button/ToggleButton.d.ts +6 -6
- package/es/components/toggle-button/ToggleButton.js +6 -2
- package/es/components/toggle-button/ToggleButtonGroup.d.ts +3 -3
- package/es/components/toggle-button/style/dnb-toggle-button.css +0 -2
- package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
- package/es/components/tooltip/Tooltip.d.ts +5 -5
- package/es/components/tooltip/TooltipContainer.d.ts +3 -3
- package/es/components/tooltip/TooltipPortal.d.ts +1 -1
- package/es/components/tooltip/TooltipWithEvents.d.ts +1 -1
- package/es/fragments/scroll-view/ScrollView.js +7 -15
- package/es/fragments/scroll-view/ScrollView.tsx +92 -0
- package/es/icons/above_the_line.js +1 -1
- package/es/icons/facebook.js +23 -0
- package/es/icons/facebook_medium.js +23 -0
- package/es/icons/fridge.js +1 -1
- package/es/icons/icons-meta.json +24 -0
- package/es/icons/icons-pdf.lock +1 -1
- package/es/icons/icons-svg.lock +1 -1
- package/es/icons/index.d.ts +16 -0
- package/es/icons/index.js +9 -1
- package/es/icons/information_circled.js +11 -4
- package/es/icons/information_circled_medium.js +10 -4
- package/es/icons/instagram.js +35 -0
- package/es/icons/instagram_medium.js +42 -0
- package/es/icons/linkedin.js +20 -0
- package/es/icons/linkedin_medium.js +20 -0
- package/es/icons/motorcycle_medium.js +2 -2
- package/es/icons/paragraph.js +1 -1
- package/es/icons/scooter_medium.js +2 -2
- package/es/icons/secondary_icons.js +5 -1
- package/es/icons/secondary_icons_medium.js +5 -1
- package/es/icons/tag.js +29 -0
- package/es/icons/tag_medium.js +29 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -1
- package/es/shared/Context.js +2 -1
- package/es/shared/EventEmitter.js +5 -8
- package/es/shared/component-helper.js +58 -50
- package/es/shared/helpers.js +11 -2
- package/es/style/core/helper-classes/skip-link.scss +1 -1
- package/es/style/dnb-ui-components.css +107 -76
- package/es/style/dnb-ui-components.min.css +5 -5
- package/es/style/dnb-ui-components.scss +1 -0
- package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +98 -95
- package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
- package/es/style/themes/theme-ui/dnb-theme-ui.css +94 -82
- package/es/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
- package/esm/components/Tag.d.ts +14 -0
- package/esm/components/Tag.js +3 -0
- package/esm/components/accordion/Accordion.d.ts +7 -7
- package/esm/components/autocomplete/Autocomplete.d.ts +13 -13
- package/esm/components/autocomplete/style/dnb-autocomplete.css +0 -2
- package/esm/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
- package/esm/components/breadcrumb/Breadcrumb.js +5 -3
- package/esm/components/breadcrumb/Breadcrumb.tsx +9 -0
- package/esm/components/breadcrumb/style/_breadcrumb.scss +7 -4
- package/esm/components/breadcrumb/style/dnb-breadcrumb.css +10 -8
- package/esm/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
- package/esm/components/button/Button.d.ts +7 -7
- package/esm/components/button/Button.js +7 -5
- package/esm/components/button/style/_button.scss +0 -4
- package/esm/components/button/style/dnb-button.css +0 -2
- package/esm/components/button/style/dnb-button.min.css +1 -1
- package/esm/components/button/style/themes/dnb-button-theme-open-banking.css +4 -13
- package/esm/components/button/style/themes/dnb-button-theme-open-banking.min.css +1 -1
- package/esm/components/button/style/themes/dnb-button-theme-ui.css +4 -13
- package/esm/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
- package/esm/components/button/style/themes/dnb-button-theme-ui.scss +5 -18
- package/esm/components/checkbox/Checkbox.d.ts +3 -3
- package/esm/components/date-picker/DatePicker.d.ts +14 -14
- package/esm/components/date-picker/DatePickerAddon.d.ts +1 -1
- package/esm/components/date-picker/DatePickerCalendar.d.ts +1 -1
- package/esm/components/date-picker/DatePickerInput.d.ts +1 -1
- package/esm/components/date-picker/style/dnb-date-picker.css +0 -6
- package/esm/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/esm/components/dropdown/Dropdown.d.ts +9 -9
- package/esm/components/dropdown/style/dnb-dropdown.css +0 -2
- package/esm/components/dropdown/style/dnb-dropdown.min.css +1 -1
- package/esm/components/form-row/FormRow.d.ts +4 -4
- package/esm/components/form-set/FormSet.d.ts +6 -6
- package/esm/components/global-error/GlobalError.d.ts +1 -1
- package/esm/components/global-error/style/dnb-global-error.css +0 -2
- package/esm/components/global-error/style/dnb-global-error.min.css +1 -1
- package/esm/components/global-status/GlobalStatus.d.ts +5 -5
- package/esm/components/global-status/GlobalStatus.js +18 -71
- package/esm/components/global-status/style/_global-status.scss +14 -12
- package/esm/components/global-status/style/dnb-global-status.css +13 -17
- package/esm/components/global-status/style/dnb-global-status.min.css +1 -1
- package/esm/components/global-status/style/themes/dnb-global-status-theme-ui.css +2 -48
- package/esm/components/global-status/style/themes/dnb-global-status-theme-ui.min.css +1 -1
- package/esm/components/global-status/style/themes/dnb-global-status-theme-ui.scss +2 -36
- package/esm/components/heading/Heading.d.ts +2 -2
- package/esm/components/heading/HeadingProvider.d.ts +2 -2
- package/esm/components/help-button/HelpButton.d.ts +200 -0
- package/esm/components/icon/Icon.d.ts +1 -1
- package/esm/components/index.d.ts +2 -0
- package/esm/components/index.js +2 -1
- package/esm/components/input/Input.d.ts +9 -9
- package/esm/components/input/style/dnb-input.css +0 -2
- package/esm/components/input/style/dnb-input.min.css +1 -1
- package/esm/components/input/style/themes/dnb-input-theme-ui.css +11 -2
- package/esm/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
- package/esm/components/input/style/themes/dnb-input-theme-ui.scss +4 -1
- package/esm/components/input-masked/InputMasked.d.ts +11 -11
- package/esm/components/input-masked/InputMasked.js +6 -4
- package/esm/components/input-masked/InputMaskedElement.js +1 -4
- package/esm/components/input-masked/InputMaskedHooks.js +66 -48
- package/esm/components/input-masked/InputMaskedUtils.js +18 -23
- package/esm/components/input-masked/style/dnb-input-masked.css +0 -2
- package/esm/components/input-masked/style/dnb-input-masked.min.css +1 -1
- package/esm/components/lib.js +3 -1
- package/esm/components/modal/Modal.js +147 -279
- package/esm/components/modal/Modal.tsx +524 -0
- package/esm/components/modal/ModalContent.js +175 -253
- package/esm/components/modal/ModalContent.tsx +515 -0
- package/esm/components/modal/ModalContext.tsx +10 -0
- package/esm/components/modal/ModalRoot.js +145 -0
- package/esm/components/modal/ModalRoot.tsx +131 -0
- package/esm/components/modal/components/CloseButton.js +72 -0
- package/esm/components/modal/components/CloseButton.tsx +56 -0
- package/esm/components/modal/components/ModalHeader.js +70 -0
- package/esm/components/modal/components/ModalHeader.tsx +79 -0
- package/esm/components/modal/components/ModalHeaderBar.js +122 -0
- package/esm/components/modal/components/ModalHeaderBar.tsx +118 -0
- package/esm/components/modal/{ModalInner.js → components/ModalInner.js} +11 -17
- package/esm/components/modal/components/ModalInner.tsx +45 -0
- package/esm/components/modal/helpers.js +64 -0
- package/esm/components/modal/helpers.ts +63 -0
- package/esm/components/modal/style/_modal-mixins.scss +4 -4
- package/esm/components/modal/style/_modal.scss +13 -30
- package/esm/components/modal/style/dnb-modal.css +27 -47
- package/esm/components/modal/style/dnb-modal.min.css +1 -1
- package/esm/components/modal/types.js +1 -0
- package/esm/components/modal/{Modal.d.ts → types.ts} +125 -179
- package/esm/components/number-format/NumberFormat.d.ts +8 -8
- package/esm/components/pagination/Pagination.d.ts +30 -30
- package/esm/components/pagination/PaginationProvider.d.ts +2 -2
- package/esm/components/pagination/style/dnb-pagination.css +0 -2
- package/esm/components/pagination/style/dnb-pagination.min.css +1 -1
- package/esm/components/radio/Radio.d.ts +4 -4
- package/esm/components/radio/RadioGroup.d.ts +3 -3
- package/esm/components/section/Section.d.ts +3 -1
- package/esm/components/section/style/themes/dnb-section-theme-ui.css +77 -19
- package/esm/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
- package/esm/components/section/style/themes/dnb-section-theme-ui.scss +15 -2
- package/esm/components/skeleton/Skeleton.d.ts +2 -2
- package/esm/components/slider/Slider.d.ts +4 -4
- package/esm/components/slider/style/dnb-slider.css +0 -2
- package/esm/components/slider/style/dnb-slider.min.css +1 -1
- package/esm/components/step-indicator/StepIndicator.d.ts +6 -6
- package/esm/components/step-indicator/StepIndicator.js +4 -91
- package/esm/components/step-indicator/StepIndicatorContext.d.ts +2 -1
- package/esm/components/step-indicator/StepIndicatorContext.js +196 -18
- package/esm/components/step-indicator/StepIndicatorItem.d.ts +2 -2
- package/esm/components/step-indicator/StepIndicatorItem.js +3 -5
- package/esm/components/step-indicator/StepIndicatorModal.js +33 -32
- package/esm/components/step-indicator/StepIndicatorProps.js +1 -1
- package/esm/components/step-indicator/StepIndicatorSidebar.d.ts +40 -1
- package/esm/components/step-indicator/StepIndicatorSidebar.js +54 -52
- package/esm/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
- package/esm/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
- package/esm/components/step-indicator/style/_step-indicator.scss +17 -4
- package/esm/components/step-indicator/style/dnb-step-indicator.css +14 -6
- package/esm/components/step-indicator/style/dnb-step-indicator.min.css +1 -1
- package/esm/components/switch/Switch.d.ts +5 -5
- package/esm/components/tabs/Tabs.d.ts +4 -4
- package/esm/components/tabs/TabsContentWrapper.d.ts +1 -1
- package/esm/components/tag/Tag.js +63 -0
- package/esm/components/tag/Tag.tsx +95 -0
- package/esm/components/tag/index.d.ts +8 -0
- package/esm/components/tag/index.js +3 -0
- package/esm/components/tag/style/_tag.scss +26 -0
- package/esm/components/tag/style/dnb-tag.css +109 -0
- package/esm/components/tag/style/dnb-tag.min.css +1 -0
- package/esm/components/tag/style/dnb-tag.scss +12 -0
- package/esm/components/tag/style/index.d.ts +6 -0
- package/esm/components/tag/style/index.js +1 -0
- package/esm/components/tag/style.js +1 -0
- package/esm/components/textarea/Textarea.d.ts +4 -4
- package/esm/components/textarea/style/_textarea.scss +4 -0
- package/esm/components/textarea/style/dnb-textarea.css +3 -0
- package/esm/components/textarea/style/dnb-textarea.min.css +1 -1
- package/esm/components/toggle-button/ToggleButton.d.ts +6 -6
- package/esm/components/toggle-button/ToggleButton.js +6 -2
- package/esm/components/toggle-button/ToggleButtonGroup.d.ts +3 -3
- package/esm/components/toggle-button/style/dnb-toggle-button.css +0 -2
- package/esm/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
- package/esm/components/tooltip/Tooltip.d.ts +5 -5
- package/esm/components/tooltip/TooltipContainer.d.ts +3 -3
- package/esm/components/tooltip/TooltipPortal.d.ts +1 -1
- package/esm/components/tooltip/TooltipWithEvents.d.ts +1 -1
- package/esm/dnb-ui-basis.min.mjs +2 -2
- package/esm/dnb-ui-components.min.mjs +3 -3
- package/esm/dnb-ui-elements.min.mjs +4 -4
- package/esm/dnb-ui-extensions.min.mjs +4 -4
- package/esm/dnb-ui-lib.min.mjs +4 -4
- package/esm/dnb-ui-web-components.min.mjs +4 -4
- package/esm/fragments/scroll-view/ScrollView.js +10 -16
- package/esm/fragments/scroll-view/ScrollView.tsx +92 -0
- package/esm/icons/above_the_line.js +1 -1
- package/esm/icons/facebook.js +23 -0
- package/esm/icons/facebook_medium.js +23 -0
- package/esm/icons/fridge.js +1 -1
- package/esm/icons/icons-meta.json +24 -0
- package/esm/icons/icons-pdf.lock +1 -1
- package/esm/icons/icons-svg.lock +1 -1
- package/esm/icons/index.d.ts +16 -0
- package/esm/icons/index.js +9 -1
- package/esm/icons/information_circled.js +11 -4
- package/esm/icons/information_circled_medium.js +10 -4
- package/esm/icons/instagram.js +35 -0
- package/esm/icons/instagram_medium.js +42 -0
- package/esm/icons/linkedin.js +20 -0
- package/esm/icons/linkedin_medium.js +20 -0
- package/esm/icons/motorcycle_medium.js +2 -2
- package/esm/icons/paragraph.js +1 -1
- package/esm/icons/scooter_medium.js +2 -2
- package/esm/icons/secondary_icons.js +5 -1
- package/esm/icons/secondary_icons_medium.js +5 -1
- package/esm/icons/tag.js +29 -0
- package/esm/icons/tag_medium.js +29 -0
- package/esm/index.d.ts +2 -0
- package/esm/index.js +2 -1
- package/esm/shared/Context.js +2 -1
- package/esm/shared/EventEmitter.js +6 -8
- package/esm/shared/component-helper.js +94 -59
- package/esm/shared/helpers.js +19 -2
- package/esm/style/core/helper-classes/skip-link.scss +1 -1
- package/esm/style/dnb-ui-components.css +107 -76
- package/esm/style/dnb-ui-components.min.css +5 -5
- package/esm/style/dnb-ui-components.scss +1 -0
- package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +98 -95
- package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
- package/esm/style/themes/theme-ui/dnb-theme-ui.css +94 -82
- package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
- package/fragments/scroll-view/ScrollView.js +10 -16
- package/fragments/scroll-view/ScrollView.tsx +92 -0
- package/icons/above_the_line.js +1 -1
- package/icons/facebook.js +23 -0
- package/icons/facebook_medium.js +23 -0
- package/icons/fridge.js +1 -1
- package/icons/icons-meta.json +24 -0
- package/icons/icons-pdf.lock +1 -1
- package/icons/icons-svg.lock +1 -1
- package/icons/index.d.ts +16 -0
- package/icons/index.js +9 -1
- package/icons/information_circled.js +11 -4
- package/icons/information_circled_medium.js +10 -4
- package/icons/instagram.js +35 -0
- package/icons/instagram_medium.js +42 -0
- package/icons/linkedin.js +20 -0
- package/icons/linkedin_medium.js +20 -0
- package/icons/motorcycle_medium.js +2 -2
- package/icons/paragraph.js +1 -1
- package/icons/scooter_medium.js +2 -2
- package/icons/secondary_icons.js +5 -1
- package/icons/secondary_icons_medium.js +5 -1
- package/icons/tag.js +29 -0
- package/icons/tag_medium.js +29 -0
- package/index.d.ts +2 -0
- package/index.js +2 -1
- package/package.json +1 -1
- package/shared/Context.js +2 -1
- package/shared/EventEmitter.js +6 -8
- package/shared/component-helper.js +94 -59
- package/shared/helpers.js +19 -2
- package/style/core/helper-classes/skip-link.scss +1 -1
- package/style/dnb-ui-components.css +107 -76
- package/style/dnb-ui-components.min.css +5 -5
- package/style/dnb-ui-components.scss +1 -0
- package/style/themes/theme-open-banking/dnb-theme-open-banking.css +98 -95
- package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
- package/style/themes/theme-ui/dnb-theme-ui.css +94 -82
- package/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
- package/umd/dnb-ui-basis.min.js +3 -3
- package/umd/dnb-ui-components.min.js +4 -4
- package/umd/dnb-ui-elements.min.js +5 -5
- package/umd/dnb-ui-extensions.min.js +5 -5
- package/umd/dnb-ui-lib.min.js +5 -5
- package/umd/dnb-ui-web-components.min.js +5 -5
- package/cjs/components/modal/ModalContent.d.ts +0 -168
- package/cjs/components/modal/ModalHeader.d.ts +0 -73
- package/cjs/components/modal/ModalInner.d.ts +0 -20
- package/cjs/fragments/scroll-view/ScrollView.d.ts +0 -1
- package/components/modal/Modal.d.ts +0 -325
- package/components/modal/ModalContent.d.ts +0 -168
- package/components/modal/ModalHeader.d.ts +0 -73
- package/components/modal/ModalHeader.js +0 -224
- package/components/modal/ModalInner.d.ts +0 -20
- package/es/components/modal/ModalContent.d.ts +0 -168
- package/es/components/modal/ModalHeader.d.ts +0 -73
- package/es/components/modal/ModalHeader.js +0 -166
- package/es/components/modal/ModalInner.d.ts +0 -20
- package/es/fragments/scroll-view/ScrollView.d.ts +0 -1
- package/esm/components/modal/ModalContent.d.ts +0 -168
- package/esm/components/modal/ModalHeader.d.ts +0 -73
- package/esm/components/modal/ModalHeader.js +0 -224
- package/esm/components/modal/ModalInner.d.ts +0 -20
- package/esm/fragments/scroll-view/ScrollView.d.ts +0 -1
- package/fragments/scroll-view/ScrollView.d.ts +0 -1
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Modal Component
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import React from 'react'
|
|
7
|
+
import classnames from 'classnames'
|
|
8
|
+
import keycode from 'keycode'
|
|
9
|
+
import {
|
|
10
|
+
disableBodyScroll,
|
|
11
|
+
enableBodyScroll,
|
|
12
|
+
clearAllBodyScrollLocks,
|
|
13
|
+
} from './bodyScrollLock'
|
|
14
|
+
import {
|
|
15
|
+
warn,
|
|
16
|
+
isTrue,
|
|
17
|
+
makeUniqueId,
|
|
18
|
+
InteractionInvalidation,
|
|
19
|
+
findElementInChildren,
|
|
20
|
+
combineLabelledBy,
|
|
21
|
+
combineDescribedBy,
|
|
22
|
+
validateDOMAttributes,
|
|
23
|
+
dispatchCustomElementEvent,
|
|
24
|
+
} from '../../shared/component-helper'
|
|
25
|
+
import ScrollView from '../../fragments/scroll-view/ScrollView'
|
|
26
|
+
import ModalContext from './ModalContext'
|
|
27
|
+
import ModalHeader from './components/ModalHeader'
|
|
28
|
+
import ModalHeaderBar from './components/ModalHeaderBar'
|
|
29
|
+
import { IS_IOS, IS_SAFARI, IS_MAC, isAndroid } from '../../shared/helpers'
|
|
30
|
+
import { ModalContentProps } from './types'
|
|
31
|
+
import {
|
|
32
|
+
getListOfModalRoots,
|
|
33
|
+
getModalRoot,
|
|
34
|
+
addToIndex,
|
|
35
|
+
removeFromIndex,
|
|
36
|
+
} from './helpers'
|
|
37
|
+
|
|
38
|
+
interface ModalContentState {
|
|
39
|
+
triggeredBy: string
|
|
40
|
+
triggeredByEvent: Event
|
|
41
|
+
color: string
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare global {
|
|
45
|
+
interface Window {
|
|
46
|
+
__modalStack: any[]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default class ModalContent extends React.PureComponent<
|
|
51
|
+
ModalContentProps,
|
|
52
|
+
ModalContentState
|
|
53
|
+
> {
|
|
54
|
+
state = { triggeredBy: null, triggeredByEvent: null, color: null }
|
|
55
|
+
|
|
56
|
+
_contentRef: React.RefObject<any>
|
|
57
|
+
_id: string
|
|
58
|
+
_lockTimeout: NodeJS.Timeout
|
|
59
|
+
_focusTimeout: NodeJS.Timeout
|
|
60
|
+
_androidFocusTimeout: NodeJS.Timeout
|
|
61
|
+
_ii: InteractionInvalidation
|
|
62
|
+
_iiLocal: InteractionInvalidation
|
|
63
|
+
|
|
64
|
+
constructor(props) {
|
|
65
|
+
super(props)
|
|
66
|
+
this._contentRef = React.createRef()
|
|
67
|
+
|
|
68
|
+
// NB: The ""._id" is used in the __modalStack as "last._id"
|
|
69
|
+
this._id = props.id
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
componentDidMount() {
|
|
73
|
+
const {
|
|
74
|
+
id = null,
|
|
75
|
+
no_animation = false,
|
|
76
|
+
animation_duration = null,
|
|
77
|
+
} = this.props
|
|
78
|
+
|
|
79
|
+
const timeoutDuration: number =
|
|
80
|
+
typeof animation_duration === 'string'
|
|
81
|
+
? parseFloat(animation_duration)
|
|
82
|
+
: animation_duration
|
|
83
|
+
|
|
84
|
+
// Add it to the index at first
|
|
85
|
+
// we use it later with getListOfModalRoots
|
|
86
|
+
addToIndex(this)
|
|
87
|
+
|
|
88
|
+
// Because of nested modals/drawers, we run this regardless
|
|
89
|
+
// has to be run at first – so the scrollbar gets removed
|
|
90
|
+
this.removeScrollPossibility() // forces browser to re-paint
|
|
91
|
+
|
|
92
|
+
this.setFocus()
|
|
93
|
+
this.setAndroidFocusHelper()
|
|
94
|
+
|
|
95
|
+
dispatchCustomElementEvent(this, 'on_open', {
|
|
96
|
+
id,
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
if (isTrue(no_animation) || process.env.NODE_ENV === 'test') {
|
|
100
|
+
this.lockBody() // forces browser to re-paint
|
|
101
|
+
} else {
|
|
102
|
+
this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2) // a little over --modal-animation-duration
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
componentWillUnmount() {
|
|
107
|
+
clearTimeout(this._focusTimeout)
|
|
108
|
+
clearTimeout(this._lockTimeout)
|
|
109
|
+
|
|
110
|
+
this.removeLocks()
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
lockBody = () => {
|
|
114
|
+
const modalRoots = getListOfModalRoots()
|
|
115
|
+
const firstLevel = modalRoots[0]
|
|
116
|
+
|
|
117
|
+
if (firstLevel === this) {
|
|
118
|
+
this._ii = new InteractionInvalidation()
|
|
119
|
+
this._ii.setBypassSelector(
|
|
120
|
+
[
|
|
121
|
+
// Bypass modal content
|
|
122
|
+
'.dnb-modal__content *',
|
|
123
|
+
`#dnb-modal-${this.props.root_id || 'root'} *`,
|
|
124
|
+
|
|
125
|
+
// TODO: Eventually in future, make it possible to bypass invalidation from outside
|
|
126
|
+
// '.dnb-modal--bypass_invalidation',
|
|
127
|
+
// '.dnb-modal--bypass_invalidation_deep *',
|
|
128
|
+
// this.props.bypass_invalidation_selectors,
|
|
129
|
+
].filter(Boolean)
|
|
130
|
+
)
|
|
131
|
+
this._ii.activate()
|
|
132
|
+
} else {
|
|
133
|
+
modalRoots.forEach((modal) => {
|
|
134
|
+
if (
|
|
135
|
+
modal !== this &&
|
|
136
|
+
typeof modal._iiLocal === 'undefined' &&
|
|
137
|
+
typeof modal._contentRef !== 'undefined'
|
|
138
|
+
) {
|
|
139
|
+
modal._iiLocal = new InteractionInvalidation()
|
|
140
|
+
modal._iiLocal.activate(modal._contentRef.current)
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (typeof document !== 'undefined') {
|
|
146
|
+
/** To ensure, we have always a working keydown, we call it both on the element and document */
|
|
147
|
+
document.addEventListener('keydown', this.onKeyDownHandler)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
removeLocks() {
|
|
152
|
+
const modalRoots = getListOfModalRoots()
|
|
153
|
+
const firstLevel = modalRoots[0]
|
|
154
|
+
|
|
155
|
+
removeFromIndex(this)
|
|
156
|
+
|
|
157
|
+
if (firstLevel === this) {
|
|
158
|
+
this._ii?.revert()
|
|
159
|
+
this.revertScrollPossibility()
|
|
160
|
+
} else {
|
|
161
|
+
try {
|
|
162
|
+
const modal = modalRoots[modalRoots.length - 2]
|
|
163
|
+
if (modal !== this && modal._iiLocal) {
|
|
164
|
+
modal._iiLocal.revert()
|
|
165
|
+
delete modal._iiLocal
|
|
166
|
+
}
|
|
167
|
+
} catch (e) {
|
|
168
|
+
warn(e)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
this.removeAndroidFocusHelper()
|
|
173
|
+
|
|
174
|
+
const id = this.props.id
|
|
175
|
+
const { triggeredBy, triggeredByEvent } = this.state
|
|
176
|
+
dispatchCustomElementEvent(this, 'on_close', {
|
|
177
|
+
id,
|
|
178
|
+
event: triggeredByEvent,
|
|
179
|
+
triggeredBy: triggeredBy || 'unmount',
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
if (typeof document !== 'undefined') {
|
|
183
|
+
document.removeEventListener('keydown', this.onKeyDownHandler)
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
setAndroidFocusHelper() {
|
|
188
|
+
if (typeof window !== 'undefined' && isAndroid()) {
|
|
189
|
+
window.addEventListener('resize', this._androidFocusHelper)
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
removeAndroidFocusHelper() {
|
|
194
|
+
window.removeEventListener('resize', this._androidFocusHelper)
|
|
195
|
+
clearTimeout(this._androidFocusTimeout)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
_androidFocusHelper = () => {
|
|
199
|
+
const { animation_duration = null } = this.props
|
|
200
|
+
const timeoutDuration: number =
|
|
201
|
+
typeof animation_duration === 'string'
|
|
202
|
+
? parseFloat(animation_duration)
|
|
203
|
+
: animation_duration
|
|
204
|
+
|
|
205
|
+
clearTimeout(this._androidFocusTimeout)
|
|
206
|
+
this._androidFocusTimeout = setTimeout(() => {
|
|
207
|
+
try {
|
|
208
|
+
if (
|
|
209
|
+
document.activeElement?.tagName == 'INPUT' ||
|
|
210
|
+
document.activeElement?.tagName == 'TEXTAREA'
|
|
211
|
+
) {
|
|
212
|
+
document.activeElement.scrollIntoView()
|
|
213
|
+
}
|
|
214
|
+
} catch (e) {
|
|
215
|
+
//
|
|
216
|
+
}
|
|
217
|
+
}, timeoutDuration / 2) // Older Android needs a delay here
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
setFocus() {
|
|
221
|
+
const {
|
|
222
|
+
focus_selector = null,
|
|
223
|
+
no_animation = null,
|
|
224
|
+
animation_duration = null,
|
|
225
|
+
} = this.props
|
|
226
|
+
const elem = this._contentRef.current
|
|
227
|
+
const timeoutDuration: number =
|
|
228
|
+
typeof animation_duration === 'string'
|
|
229
|
+
? parseFloat(animation_duration)
|
|
230
|
+
: animation_duration
|
|
231
|
+
|
|
232
|
+
if (elem) {
|
|
233
|
+
clearTimeout(this._focusTimeout)
|
|
234
|
+
this._focusTimeout = setTimeout(
|
|
235
|
+
() => {
|
|
236
|
+
try {
|
|
237
|
+
let focusElement = elem
|
|
238
|
+
|
|
239
|
+
// Try to use the "first-focus" method first
|
|
240
|
+
if (typeof focus_selector === 'string') {
|
|
241
|
+
focusElement = elem.querySelector(focus_selector)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
focusElement.focus()
|
|
245
|
+
|
|
246
|
+
const noH1Elem = elem.querySelector('h1, h2, h3')
|
|
247
|
+
if (
|
|
248
|
+
typeof noH1Elem?.tagName !== 'undefined' &&
|
|
249
|
+
noH1Elem?.tagName !== 'H1'
|
|
250
|
+
) {
|
|
251
|
+
warn(
|
|
252
|
+
'You have to provide a h1 element at first – instead of:',
|
|
253
|
+
noH1Elem
|
|
254
|
+
)
|
|
255
|
+
}
|
|
256
|
+
} catch (e) {
|
|
257
|
+
warn(e)
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
isTrue(no_animation) ? 0 : timeoutDuration || 0
|
|
261
|
+
) // with this delay, the user can press esc without an focus action first
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
removeScrollPossibility() {
|
|
266
|
+
if (this._contentRef.current) {
|
|
267
|
+
disableBodyScroll(this._contentRef.current)
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
revertScrollPossibility() {
|
|
272
|
+
enableBodyScroll(this._contentRef.current)
|
|
273
|
+
clearAllBodyScrollLocks()
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
preventClick = (event) => {
|
|
277
|
+
if (event) {
|
|
278
|
+
event.stopPropagation()
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
onCloseClickHandler = (event) => {
|
|
283
|
+
this.closeModalContent(event, { triggeredBy: 'button' })
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
onContentClickHandler = (event) => {
|
|
287
|
+
this.closeModalContent(event, {
|
|
288
|
+
triggeredBy: 'overlay',
|
|
289
|
+
ifIsLatest: false,
|
|
290
|
+
})
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
onKeyDownHandler = (event) => {
|
|
294
|
+
switch (keycode(event)) {
|
|
295
|
+
case 'esc': {
|
|
296
|
+
// const mostCurrent = [...getListOfModalRoots()].pop()
|
|
297
|
+
const mostCurrent = getModalRoot(-1)
|
|
298
|
+
|
|
299
|
+
if (mostCurrent === this) {
|
|
300
|
+
event.preventDefault()
|
|
301
|
+
this.closeModalContent(event, {
|
|
302
|
+
triggeredBy: 'keyboard',
|
|
303
|
+
})
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
break
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
closeModalContent(event, { triggeredBy, ...params }) {
|
|
312
|
+
event?.persist?.()
|
|
313
|
+
this.setState({ triggeredBy, triggeredByEvent: event }, () => {
|
|
314
|
+
this.props.closeModal(event, {
|
|
315
|
+
triggeredBy,
|
|
316
|
+
...params,
|
|
317
|
+
})
|
|
318
|
+
})
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
setBackgroundColor = (color: string) => {
|
|
322
|
+
document.documentElement.style.setProperty(
|
|
323
|
+
'--modal-background-color',
|
|
324
|
+
color
|
|
325
|
+
)
|
|
326
|
+
this.setState({
|
|
327
|
+
color,
|
|
328
|
+
})
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
render() {
|
|
332
|
+
const {
|
|
333
|
+
mode = 'modal',
|
|
334
|
+
hide,
|
|
335
|
+
title,
|
|
336
|
+
labelled_by,
|
|
337
|
+
header_content,
|
|
338
|
+
modal_content,
|
|
339
|
+
bar_content,
|
|
340
|
+
id: _id, // eslint-disable-line
|
|
341
|
+
close_title = 'Lukk',
|
|
342
|
+
dialog_title = 'Vindu',
|
|
343
|
+
hide_close_button = false,
|
|
344
|
+
close_button_attributes,
|
|
345
|
+
spacing = true,
|
|
346
|
+
prevent_core_style = false,
|
|
347
|
+
animation_duration, // eslint-disable-line
|
|
348
|
+
no_animation = false,
|
|
349
|
+
no_animation_on_mobile = false,
|
|
350
|
+
min_width,
|
|
351
|
+
max_width,
|
|
352
|
+
fullscreen = 'auto',
|
|
353
|
+
align_content,
|
|
354
|
+
container_placement,
|
|
355
|
+
closeModal, // eslint-disable-line
|
|
356
|
+
className,
|
|
357
|
+
class: _className,
|
|
358
|
+
content_class,
|
|
359
|
+
overlay_class,
|
|
360
|
+
content_id,
|
|
361
|
+
children, // eslint-disable-line
|
|
362
|
+
...rest
|
|
363
|
+
} = this.props
|
|
364
|
+
const { color } = this.state
|
|
365
|
+
|
|
366
|
+
const contentId = content_id || makeUniqueId('modal-')
|
|
367
|
+
|
|
368
|
+
// ensure the min/max don't conflict
|
|
369
|
+
let minWidth = min_width
|
|
370
|
+
let maxWidth = max_width
|
|
371
|
+
if (minWidth && !maxWidth && parseFloat(String(minWidth)) > 0) {
|
|
372
|
+
maxWidth = 0
|
|
373
|
+
} else if (maxWidth && !minWidth && parseFloat(String(maxWidth)) > 0) {
|
|
374
|
+
minWidth = 0
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const useDialogRole = !(IS_MAC || IS_SAFARI || IS_IOS)
|
|
378
|
+
|
|
379
|
+
const contentParams = {
|
|
380
|
+
/**
|
|
381
|
+
* Do not use role="dialog" on Safari
|
|
382
|
+
*
|
|
383
|
+
* VoiceOver has troubles with role="dialog" and "Modal in Modal",
|
|
384
|
+
* the result is, only the first Modal gets focus (set by Safari)
|
|
385
|
+
*
|
|
386
|
+
* Tests have shown: Both VoiceOver are working fine with the:
|
|
387
|
+
* "aria-labelledby" and "aria-describedby" approach
|
|
388
|
+
*
|
|
389
|
+
*/
|
|
390
|
+
role: useDialogRole ? 'dialog' : 'region',
|
|
391
|
+
'aria-modal': useDialogRole ? true : undefined,
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* ARIA references
|
|
395
|
+
*/
|
|
396
|
+
'aria-labelledby': combineLabelledBy(
|
|
397
|
+
this.props,
|
|
398
|
+
title ? contentId + '-title' : null,
|
|
399
|
+
labelled_by
|
|
400
|
+
),
|
|
401
|
+
'aria-describedby': combineDescribedBy(
|
|
402
|
+
this.props,
|
|
403
|
+
contentId + '-content'
|
|
404
|
+
),
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* If no labelled_by and no title is given,
|
|
408
|
+
* set a fallback "dialog_title"
|
|
409
|
+
*/
|
|
410
|
+
'aria-label': !title && !labelled_by ? dialog_title : undefined,
|
|
411
|
+
|
|
412
|
+
className: classnames(
|
|
413
|
+
'dnb-modal__content',
|
|
414
|
+
mode && `dnb-modal__content--${mode}`,
|
|
415
|
+
hide && 'dnb-modal__content--hide',
|
|
416
|
+
isTrue(spacing) && 'dnb-modal__content--spacing',
|
|
417
|
+
align_content && `dnb-modal__content__align--${align_content}`,
|
|
418
|
+
container_placement || mode === 'drawer'
|
|
419
|
+
? `dnb-modal__content--${container_placement || 'right'}`
|
|
420
|
+
: null,
|
|
421
|
+
isTrue(fullscreen)
|
|
422
|
+
? 'dnb-modal__content--fullscreen'
|
|
423
|
+
: fullscreen === 'auto' && 'dnb-modal__content--auto-fullscreen',
|
|
424
|
+
isTrue(no_animation) && 'dnb-modal__content--no-animation',
|
|
425
|
+
isTrue(no_animation_on_mobile) &&
|
|
426
|
+
'dnb-modal__content--no-animation-on-mobile',
|
|
427
|
+
content_class
|
|
428
|
+
),
|
|
429
|
+
onClick: this.onContentClickHandler,
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const innerParams = {
|
|
433
|
+
className: classnames(
|
|
434
|
+
'dnb-modal__content__inner',
|
|
435
|
+
!isTrue(prevent_core_style) && 'dnb-core-style',
|
|
436
|
+
className,
|
|
437
|
+
_className
|
|
438
|
+
),
|
|
439
|
+
style: (minWidth || maxWidth) && { minWidth, maxWidth },
|
|
440
|
+
onClick: this.preventClick,
|
|
441
|
+
onTouchStart: this.preventClick,
|
|
442
|
+
onKeyDown: this.onKeyDownHandler,
|
|
443
|
+
...rest,
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// also used for code markup simulation
|
|
447
|
+
validateDOMAttributes(this.props, innerParams)
|
|
448
|
+
|
|
449
|
+
const barExists = findElementInChildren(
|
|
450
|
+
modal_content,
|
|
451
|
+
(cur) => cur.type === ModalHeaderBar
|
|
452
|
+
)
|
|
453
|
+
|
|
454
|
+
const headerExists = findElementInChildren(
|
|
455
|
+
modal_content,
|
|
456
|
+
(cur) => cur.type === ModalHeader
|
|
457
|
+
)
|
|
458
|
+
|
|
459
|
+
return (
|
|
460
|
+
<ModalContext.Provider
|
|
461
|
+
value={{
|
|
462
|
+
id: this.props.id,
|
|
463
|
+
title,
|
|
464
|
+
hide_close_button,
|
|
465
|
+
close_button_attributes,
|
|
466
|
+
close_title,
|
|
467
|
+
mode,
|
|
468
|
+
setBackgroundColor: this.setBackgroundColor,
|
|
469
|
+
onCloseClickHandler: this.onCloseClickHandler,
|
|
470
|
+
}}
|
|
471
|
+
>
|
|
472
|
+
<div id={contentId} {...contentParams}>
|
|
473
|
+
{/* Div should now be clickable */}
|
|
474
|
+
<ScrollView {...innerParams}>
|
|
475
|
+
<div
|
|
476
|
+
tabIndex={-1}
|
|
477
|
+
className="dnb-modal__content__spacing dnb-no-focus"
|
|
478
|
+
style={
|
|
479
|
+
color
|
|
480
|
+
? { '--modal-background-color': `var(--color-${color})` }
|
|
481
|
+
: null
|
|
482
|
+
}
|
|
483
|
+
ref={this._contentRef}
|
|
484
|
+
>
|
|
485
|
+
{!barExists && (
|
|
486
|
+
<ModalHeaderBar>{bar_content}</ModalHeaderBar>
|
|
487
|
+
)}
|
|
488
|
+
{!headerExists && (
|
|
489
|
+
<ModalHeader title={title}>{header_content}</ModalHeader>
|
|
490
|
+
)}
|
|
491
|
+
<div
|
|
492
|
+
id={contentId + '-content'}
|
|
493
|
+
className="dnb-modal__content__wrapper"
|
|
494
|
+
>
|
|
495
|
+
{modal_content}
|
|
496
|
+
</div>
|
|
497
|
+
</div>
|
|
498
|
+
</ScrollView>
|
|
499
|
+
</div>
|
|
500
|
+
<span
|
|
501
|
+
className={classnames(
|
|
502
|
+
'dnb-modal__overlay',
|
|
503
|
+
hide && 'dnb-modal__overlay--hide',
|
|
504
|
+
mode && `dnb-modal__overlay--${mode}`,
|
|
505
|
+
isTrue(no_animation) && 'dnb-modal__overlay--no-animation',
|
|
506
|
+
isTrue(no_animation_on_mobile) &&
|
|
507
|
+
'dnb-modal__overlay--no-animation-on-mobile',
|
|
508
|
+
overlay_class
|
|
509
|
+
)}
|
|
510
|
+
aria-hidden="true"
|
|
511
|
+
/>
|
|
512
|
+
</ModalContext.Provider>
|
|
513
|
+
)
|
|
514
|
+
}
|
|
515
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import "core-js/modules/es.object.to-string.js";
|
|
2
|
+
import "core-js/modules/es.reflect.construct.js";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
5
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
6
|
+
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
|
|
7
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
8
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
9
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
10
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
11
|
+
var _excluded = ["children", "direct_dom_return"];
|
|
12
|
+
import "core-js/modules/es.array.concat.js";
|
|
13
|
+
|
|
14
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
15
|
+
|
|
16
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
17
|
+
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import ReactDOM from 'react-dom';
|
|
20
|
+
import { warn, isTrue } from '../../shared/component-helper';
|
|
21
|
+
import ModalContent from './ModalContent';
|
|
22
|
+
|
|
23
|
+
var ModalRoot = function (_React$PureComponent) {
|
|
24
|
+
_inherits(ModalRoot, _React$PureComponent);
|
|
25
|
+
|
|
26
|
+
var _super = _createSuper(ModalRoot);
|
|
27
|
+
|
|
28
|
+
function ModalRoot() {
|
|
29
|
+
var _this;
|
|
30
|
+
|
|
31
|
+
_classCallCheck(this, ModalRoot);
|
|
32
|
+
|
|
33
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
34
|
+
args[_key] = arguments[_key];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
38
|
+
|
|
39
|
+
_defineProperty(_assertThisInitialized(_this), "portalElem", void 0);
|
|
40
|
+
|
|
41
|
+
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
42
|
+
isMounted: false
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return _this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
_createClass(ModalRoot, [{
|
|
49
|
+
key: "componentDidMount",
|
|
50
|
+
value: function componentDidMount() {
|
|
51
|
+
var _this$props = this.props,
|
|
52
|
+
_this$props$direct_do = _this$props.direct_dom_return,
|
|
53
|
+
direct_dom_return = _this$props$direct_do === void 0 ? false : _this$props$direct_do,
|
|
54
|
+
_this$props$root_id = _this$props.root_id,
|
|
55
|
+
root_id = _this$props$root_id === void 0 ? 'root' : _this$props$root_id;
|
|
56
|
+
|
|
57
|
+
if (!isTrue(direct_dom_return)) {
|
|
58
|
+
ModalRoot.insertModalRoot(root_id);
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
if (!this.portalElem) {
|
|
62
|
+
this.portalElem = document.createElement('div');
|
|
63
|
+
this.portalElem.className = 'dnb-modal-root__inner';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot) {
|
|
67
|
+
window.__modalRoot.appendChild(this.portalElem);
|
|
68
|
+
}
|
|
69
|
+
} catch (e) {
|
|
70
|
+
warn(e);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
this.setState({
|
|
74
|
+
isMounted: true
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "componentWillUnmount",
|
|
80
|
+
value: function componentWillUnmount() {
|
|
81
|
+
try {
|
|
82
|
+
if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot && window.__modalRoot.removeChild) {
|
|
83
|
+
window.__modalRoot.removeChild(this.portalElem);
|
|
84
|
+
|
|
85
|
+
this.portalElem = null;
|
|
86
|
+
}
|
|
87
|
+
} catch (e) {
|
|
88
|
+
warn(e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "render",
|
|
93
|
+
value: function render() {
|
|
94
|
+
var _this$props2 = this.props,
|
|
95
|
+
children = _this$props2.children,
|
|
96
|
+
direct_dom_return = _this$props2.direct_dom_return,
|
|
97
|
+
props = _objectWithoutProperties(_this$props2, _excluded);
|
|
98
|
+
|
|
99
|
+
if (isTrue(direct_dom_return)) {
|
|
100
|
+
return React.createElement(ModalContent, props, children);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot && this.state.isMounted) {
|
|
104
|
+
return ReactDOM.createPortal(React.createElement(ModalContent, props, children), this.portalElem);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}], [{
|
|
110
|
+
key: "insertModalRoot",
|
|
111
|
+
value: function insertModalRoot(id) {
|
|
112
|
+
if (typeof window === 'undefined') {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
id = "dnb-modal-".concat(id || 'root');
|
|
118
|
+
window.__modalRoot = document.getElementById(id);
|
|
119
|
+
|
|
120
|
+
if (!window.__modalRoot) {
|
|
121
|
+
window.__modalRoot = document.createElement('div');
|
|
122
|
+
|
|
123
|
+
window.__modalRoot.setAttribute('id', id);
|
|
124
|
+
|
|
125
|
+
document.body.insertBefore(window.__modalRoot, document.body.firstChild);
|
|
126
|
+
}
|
|
127
|
+
} catch (e) {
|
|
128
|
+
warn('Modal: Could not insert dnb-modal-root', e);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return window.__modalRoot;
|
|
132
|
+
}
|
|
133
|
+
}]);
|
|
134
|
+
|
|
135
|
+
return ModalRoot;
|
|
136
|
+
}(React.PureComponent);
|
|
137
|
+
|
|
138
|
+
_defineProperty(ModalRoot, "defaultProps", {
|
|
139
|
+
id: null,
|
|
140
|
+
root_id: 'root',
|
|
141
|
+
direct_dom_return: false,
|
|
142
|
+
children: null
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
export { ModalRoot as default };
|