@orangesk/orange-design-system 3.5.0 → 3.6.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/build/components/Icon/style.css +1 -1
- package/build/components/Icon/style.css.map +1 -1
- package/build/components/PromoBanner/style.css +1 -1
- package/build/components/PromoBanner/style.css.map +1 -1
- package/build/components/StarRating/style.css +1 -1
- package/build/components/StarRating/style.css.map +1 -1
- package/build/components/index.js +1 -1
- package/build/components/index.js.map +1 -1
- package/build/components/types/index.d.ts +2 -0
- package/build/lib/components.css +1 -1
- package/build/lib/components.css.map +1 -1
- package/build/lib/footer.js +1 -1
- package/build/lib/footer.js.map +1 -1
- package/build/lib/megamenu.js +1 -1
- package/build/lib/megamenu.js.map +1 -1
- package/build/lib/scripts.js +1 -1
- package/build/lib/scripts.js.map +1 -1
- package/build/lib/style.css +1 -1
- package/build/lib/style.css.map +1 -1
- package/package.json +38 -39
- package/src/assets/icons/age-rating-3.svg +0 -0
- package/src/assets/icons/assistent.svg +0 -0
- package/src/assets/icons/boxes.svg +0 -0
- package/src/assets/icons/business-lounge.svg +0 -0
- package/src/assets/icons/calendar-30.svg +0 -0
- package/src/assets/icons/calendar-month.svg +0 -0
- package/src/assets/icons/communication-settings.svg +0 -0
- package/src/assets/icons/cookies.svg +0 -0
- package/src/assets/icons/currency-euro.svg +0 -0
- package/src/assets/icons/data-services.svg +0 -0
- package/src/assets/icons/device-mobile-package.svg +0 -0
- package/src/assets/icons/futher-education.svg +0 -0
- package/src/assets/icons/modifier-delete.svg +0 -0
- package/src/assets/icons/orange-experts-orange-business-consultant.svg +0 -0
- package/src/assets/icons/orange-messenger.svg +0 -0
- package/src/assets/icons/orange-reflect.svg +0 -0
- package/src/assets/icons/personal-smartphone-trainer.svg +0 -0
- package/src/assets/icons/unlimited-calls.svg +0 -0
- package/src/components/Accordion/Accordion.tsx +2 -1
- package/src/components/Accordion/AccordionItem.tsx +2 -1
- package/src/components/Alert/Alert.tsx +2 -1
- package/src/components/Avatar/Avatar.tsx +2 -1
- package/src/components/BlockAction/BlockAction.tsx +2 -1
- package/src/components/BlockAction/BlockActionControl.tsx +2 -1
- package/src/components/BlockAction/BlockActionIndicator.tsx +2 -1
- package/src/components/BlockAction/CloneElementWithClassName.tsx +2 -1
- package/src/components/BlockAction/Context.tsx +2 -1
- package/src/components/BlockAction/index.tsx +2 -1
- package/src/components/Button/IconButton.tsx +2 -1
- package/src/components/Button/index.tsx +2 -1
- package/src/components/Carousel/Carousel.tsx +2 -1
- package/src/components/Carousel/CarouselItem.tsx +2 -1
- package/src/components/CarouselHero/CarouselHero.tsx +2 -1
- package/src/components/CarouselHero/CarouselHeroItem.tsx +2 -1
- package/src/components/CarouselPromotions/CarouselPromotions.static.ts +1 -1
- package/src/components/CarouselPromotions/CarouselPromotions.tsx +2 -1
- package/src/components/CarouselPromotions/CarouselPromotionsItem.tsx +2 -1
- package/src/components/CarouselPromotions/styles/mixins.scss +2 -3
- package/src/components/Countdown/Countdown.react.ts +2 -2
- package/src/components/Countdown/Countdown.static.ts +5 -3
- package/src/components/Countdown/Countdown.tsx +2 -2
- package/src/components/Countdown/CountdownTag.static.ts +5 -3
- package/src/components/Countdown/CountdownTag.tsx +1 -1
- package/src/components/Divider/Divider.tsx +2 -1
- package/src/components/Dropdown/Dropdown.static.ts +2 -1
- package/src/components/Dropdown/Dropdown.tsx +5 -3
- package/src/components/Dropdown/DropdownItem.tsx +2 -1
- package/src/components/Dropdown/DropdownToggleButton.tsx +1 -1
- package/src/components/Dropdown/constants.ts +1 -0
- package/src/components/FeatureAccordion/FeatureAccordion.tsx +2 -1
- package/src/components/FeatureAccordion/FeatureAccordionItem.tsx +2 -1
- package/src/components/Forms/Autocomplete/Autocomplete.static.ts +2 -2
- package/src/components/Forms/Field/Field.tsx +2 -1
- package/src/components/Forms/Field/Label.tsx +2 -1
- package/src/components/Forms/Fieldset/Fieldset.tsx +2 -1
- package/src/components/Forms/File/File.tsx +2 -1
- package/src/components/Forms/Group/Group.tsx +2 -1
- package/src/components/Forms/Group/Item.tsx +2 -1
- package/src/components/Forms/RangeSlider/RangeSlider.static.ts +4 -2
- package/src/components/Forms/Select/index.tsx +2 -1
- package/src/components/Gauge/Gauge.tsx +2 -1
- package/src/components/Icon/Pictogram.tsx +2 -1
- package/src/components/Icon/SpritePathContext.tsx +2 -1
- package/src/components/Icon/styles/config.scss +17 -2
- package/src/components/Icon/styles/export/size.js +4 -3
- package/src/components/Icon/styles/style.scss +9 -0
- package/src/components/Icon/tests/Icon.styles.unit.test.jsx +12 -0
- package/src/components/Loader/Loader.tsx +2 -1
- package/src/components/Loader/LoaderFullscreen.tsx +2 -1
- package/src/components/Megamenu/Megamenu.tsx +2 -7
- package/src/components/Megamenu/MegamenuBlog.tsx +1 -1
- package/src/components/Modal/ModalCloseButton.tsx +2 -2
- package/src/components/Pagination/Separator.tsx +1 -1
- package/src/components/Pill/Pill.tsx +2 -1
- package/src/components/PromoBanner/styles/mixins.scss +10 -0
- package/src/components/PromoBanner/styles/style.scss +5 -0
- package/src/components/PromotionCard/PromotionCard.tsx +2 -2
- package/src/components/SkipLink/SkipLink.tsx +2 -1
- package/src/components/StarRating/StarRating.tsx +5 -1
- package/src/components/StarRating/styles/style.scss +9 -2
- package/src/components/StarRating/tests/StarRating.unit.test.jsx +7 -1
- package/src/components/Table/Footer.tsx +1 -1
- package/src/components/Table/Header.tsx +1 -1
- package/src/components/Table/Row.tsx +1 -1
- package/src/components/Table/Rows.tsx +1 -1
- package/src/components/Table/Table.tsx +1 -1
- package/src/components/Table/TableContext.ts +1 -1
- package/src/components/Tag/Tag.tsx +4 -3
- package/src/components/Tag/TagButton.tsx +1 -1
- package/src/components/Tag/constants.ts +1 -0
- package/src/components/Tag/styles/mixins.scss +2 -2
- package/src/components/Tile/Tile.tsx +3 -2
- package/src/components/Tooltip/InfoTooltip.tsx +2 -1
- package/src/components/Tooltip/Tooltip.static.ts +2 -2
- package/src/styles/tokens/space.scss +3 -1
- package/src/styles/tools/generate.scss +4 -2
- package/src/styles/utilities/color.scss +7 -6
- package/build/components/tsconfig.tsbuildinfo +0 -1
- package/build/components/types/src/components/Accordion/Accordion.d.ts +0 -19
- package/build/components/types/src/components/Accordion/Accordion.static.d.ts +0 -20
- package/build/components/types/src/components/Accordion/AccordionHeader.d.ts +0 -18
- package/build/components/types/src/components/Accordion/AccordionItem.d.ts +0 -20
- package/build/components/types/src/components/Accordion/HeadingContext.d.ts +0 -2
- package/build/components/types/src/components/Accordion/index.d.ts +0 -2
- package/build/components/types/src/components/Accordion/tests/data.d.ts +0 -5
- package/build/components/types/src/components/Alert/Alert.d.ts +0 -23
- package/build/components/types/src/components/Alert/data.d.ts +0 -7
- package/build/components/types/src/components/Alert/index.d.ts +0 -1
- package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.d.ts +0 -16
- package/build/components/types/src/components/AnchorNavigation/AnchorNavigation.static.d.ts +0 -102
- package/build/components/types/src/components/AnchorNavigation/index.d.ts +0 -1
- package/build/components/types/src/components/Avatar/Avatar.d.ts +0 -7
- package/build/components/types/src/components/Avatar/index.d.ts +0 -2
- package/build/components/types/src/components/Bar/Bar.d.ts +0 -22
- package/build/components/types/src/components/Bar/BarBreak.d.ts +0 -12
- package/build/components/types/src/components/Bar/BarItem.d.ts +0 -16
- package/build/components/types/src/components/Bar/index.d.ts +0 -3
- package/build/components/types/src/components/BlockAction/BlockAction.d.ts +0 -11
- package/build/components/types/src/components/BlockAction/BlockAction.static.d.ts +0 -19
- package/build/components/types/src/components/BlockAction/BlockActionControl.d.ts +0 -9
- package/build/components/types/src/components/BlockAction/BlockActionIndicator.d.ts +0 -9
- package/build/components/types/src/components/BlockAction/CloneElementWithClassName.d.ts +0 -8
- package/build/components/types/src/components/BlockAction/Context.d.ts +0 -15
- package/build/components/types/src/components/BlockAction/index.d.ts +0 -13
- package/build/components/types/src/components/BodyBanner/BodyBanner.d.ts +0 -20
- package/build/components/types/src/components/BodyBanner/index.d.ts +0 -1
- package/build/components/types/src/components/Breadcrumbs/BreadcrumbItem.d.ts +0 -15
- package/build/components/types/src/components/Breadcrumbs/Breadcrumbs.d.ts +0 -18
- package/build/components/types/src/components/Breadcrumbs/index.d.ts +0 -1
- package/build/components/types/src/components/Button/Button.d.ts +0 -25
- package/build/components/types/src/components/Button/IconButton.d.ts +0 -18
- package/build/components/types/src/components/Button/index.d.ts +0 -15
- package/build/components/types/src/components/Buttons/Buttons.d.ts +0 -8
- package/build/components/types/src/components/Buttons/index.d.ts +0 -1
- package/build/components/types/src/components/Card/Card.d.ts +0 -11
- package/build/components/types/src/components/Card/CardProductHeader.d.ts +0 -9
- package/build/components/types/src/components/Card/CardSection.d.ts +0 -14
- package/build/components/types/src/components/Card/index.d.ts +0 -4
- package/build/components/types/src/components/Card/tests/data.d.ts +0 -5
- package/build/components/types/src/components/Carousel/Carousel.d.ts +0 -23
- package/build/components/types/src/components/Carousel/Carousel.static.d.ts +0 -101
- package/build/components/types/src/components/Carousel/CarouselItem.d.ts +0 -7
- package/build/components/types/src/components/Carousel/constants.d.ts +0 -27
- package/build/components/types/src/components/Carousel/index.d.ts +0 -2
- package/build/components/types/src/components/CarouselHero/CarouselHero.d.ts +0 -19
- package/build/components/types/src/components/CarouselHero/CarouselHero.static.d.ts +0 -50
- package/build/components/types/src/components/CarouselHero/CarouselHeroItem.d.ts +0 -8
- package/build/components/types/src/components/CarouselHero/constants.d.ts +0 -33
- package/build/components/types/src/components/CarouselHero/index.d.ts +0 -2
- package/build/components/types/src/components/CarouselPromotions/CarouselPromotions.d.ts +0 -9
- package/build/components/types/src/components/CarouselPromotions/CarouselPromotions.static.d.ts +0 -36
- package/build/components/types/src/components/CarouselPromotions/CarouselPromotionsItem.d.ts +0 -12
- package/build/components/types/src/components/CarouselPromotions/constants.d.ts +0 -20
- package/build/components/types/src/components/CarouselPromotions/index.d.ts +0 -2
- package/build/components/types/src/components/CartTable/CartTable.d.ts +0 -13
- package/build/components/types/src/components/CartTable/FooterNameColumn.d.ts +0 -7
- package/build/components/types/src/components/CartTable/FooterPriceColumn.d.ts +0 -9
- package/build/components/types/src/components/CartTable/Price.d.ts +0 -10
- package/build/components/types/src/components/CartTable/data.d.ts +0 -33
- package/build/components/types/src/components/CartTable/generateFooter.d.ts +0 -22
- package/build/components/types/src/components/CartTable/generateRow.d.ts +0 -21
- package/build/components/types/src/components/CartTable/generateTotal.d.ts +0 -45
- package/build/components/types/src/components/CartTable/index.d.ts +0 -1
- package/build/components/types/src/components/Code/Code.d.ts +0 -16
- package/build/components/types/src/components/Code/index.d.ts +0 -6
- package/build/components/types/src/components/Container/Container.d.ts +0 -3
- package/build/components/types/src/components/Container/index.d.ts +0 -1
- package/build/components/types/src/components/Controls/Controls.d.ts +0 -15
- package/build/components/types/src/components/Controls/index.d.ts +0 -1
- package/build/components/types/src/components/Countdown/Countdown.d.ts +0 -10
- package/build/components/types/src/components/Countdown/Countdown.react.d.ts +0 -8
- package/build/components/types/src/components/Countdown/Countdown.shared.d.ts +0 -54
- package/build/components/types/src/components/Countdown/Countdown.static.d.ts +0 -21
- package/build/components/types/src/components/Countdown/CountdownTag.d.ts +0 -9
- package/build/components/types/src/components/Countdown/CountdownTag.static.d.ts +0 -16
- package/build/components/types/src/components/Countdown/constants.d.ts +0 -28
- package/build/components/types/src/components/Countdown/index.d.ts +0 -3
- package/build/components/types/src/components/Cover/Cover.d.ts +0 -42
- package/build/components/types/src/components/Cover/index.d.ts +0 -2
- package/build/components/types/src/components/Divider/Divider.d.ts +0 -9
- package/build/components/types/src/components/Divider/index.d.ts +0 -1
- package/build/components/types/src/components/DocumentationSidebar/DocumentationSidebar.d.ts +0 -18
- package/build/components/types/src/components/DocumentationSidebar/index.d.ts +0 -3
- package/build/components/types/src/components/Dropdown/Dropdown.d.ts +0 -22
- package/build/components/types/src/components/Dropdown/Dropdown.static.d.ts +0 -28
- package/build/components/types/src/components/Dropdown/DropdownDivider.d.ts +0 -3
- package/build/components/types/src/components/Dropdown/DropdownItem.d.ts +0 -9
- package/build/components/types/src/components/Dropdown/DropdownToggleButton.d.ts +0 -7
- package/build/components/types/src/components/Dropdown/index.d.ts +0 -4
- package/build/components/types/src/components/Expander/Expander.d.ts +0 -25
- package/build/components/types/src/components/Expander/Expander.static.d.ts +0 -14
- package/build/components/types/src/components/Expander/index.d.ts +0 -1
- package/build/components/types/src/components/FeatureAccordion/FeatureAccordion.d.ts +0 -25
- package/build/components/types/src/components/FeatureAccordion/FeatureAccordion.static.d.ts +0 -19
- package/build/components/types/src/components/FeatureAccordion/FeatureAccordionItem.d.ts +0 -12
- package/build/components/types/src/components/FeatureAccordion/index.d.ts +0 -2
- package/build/components/types/src/components/Footer/Footer.d.ts +0 -8
- package/build/components/types/src/components/Footer/Footer.static.d.ts +0 -21
- package/build/components/types/src/components/Footer/PlanObnovy.d.ts +0 -1
- package/build/components/types/src/components/Footer/constants.d.ts +0 -20
- package/build/components/types/src/components/Footer/data.d.ts +0 -26
- package/build/components/types/src/components/Footer/index.d.ts +0 -1
- package/build/components/types/src/components/Footer/static.d.ts +0 -21
- package/build/components/types/src/components/Forms/Autocomplete/Autocomplete.d.ts +0 -19
- package/build/components/types/src/components/Forms/Autocomplete/Autocomplete.static.d.ts +0 -33
- package/build/components/types/src/components/Forms/Autocomplete/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Checkbox/Checkbox.d.ts +0 -21
- package/build/components/types/src/components/Forms/Checkbox/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/DatePicker/DatePicker.d.ts +0 -84
- package/build/components/types/src/components/Forms/DatePicker/DatePicker.static.d.ts +0 -69
- package/build/components/types/src/components/Forms/DatePicker/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Field/Control.d.ts +0 -6
- package/build/components/types/src/components/Forms/Field/Description.d.ts +0 -7
- package/build/components/types/src/components/Forms/Field/Field.d.ts +0 -17
- package/build/components/types/src/components/Forms/Field/FieldContext.d.ts +0 -18
- package/build/components/types/src/components/Forms/Field/Label.d.ts +0 -11
- package/build/components/types/src/components/Forms/Field/Messages.d.ts +0 -12
- package/build/components/types/src/components/Forms/Field/Tooltip.d.ts +0 -11
- package/build/components/types/src/components/Forms/Field/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Field/utils.d.ts +0 -16
- package/build/components/types/src/components/Forms/Fieldset/Fieldset.d.ts +0 -16
- package/build/components/types/src/components/Forms/Fieldset/FieldsetContext.d.ts +0 -7
- package/build/components/types/src/components/Forms/Fieldset/docsData.d.ts +0 -59
- package/build/components/types/src/components/Forms/Fieldset/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/File/File.d.ts +0 -17
- package/build/components/types/src/components/Forms/File/File.static.d.ts +0 -27
- package/build/components/types/src/components/Forms/File/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Group/Group.d.ts +0 -16
- package/build/components/types/src/components/Forms/Group/Item.d.ts +0 -8
- package/build/components/types/src/components/Forms/Group/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Hint/Hint.d.ts +0 -7
- package/build/components/types/src/components/Forms/Hint/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/InputStepper/InputStepper.d.ts +0 -21
- package/build/components/types/src/components/Forms/InputStepper/InputStepper.static.d.ts +0 -24
- package/build/components/types/src/components/Forms/InputStepper/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Label/Label.d.ts +0 -8
- package/build/components/types/src/components/Forms/Label/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Message/Message.d.ts +0 -12
- package/build/components/types/src/components/Forms/Message/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Radio/Radio.d.ts +0 -21
- package/build/components/types/src/components/Forms/Radio/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/RangeSlider/RangeSlider.d.ts +0 -40
- package/build/components/types/src/components/Forms/RangeSlider/RangeSlider.static.d.ts +0 -24
- package/build/components/types/src/components/Forms/RangeSlider/data.d.ts +0 -49
- package/build/components/types/src/components/Forms/RangeSlider/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/Select/Select.d.ts +0 -33
- package/build/components/types/src/components/Forms/Select/index.d.ts +0 -3
- package/build/components/types/src/components/Forms/TextArea/TextArea.d.ts +0 -29
- package/build/components/types/src/components/Forms/TextArea/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/TextInput/TextInput.d.ts +0 -35
- package/build/components/types/src/components/Forms/TextInput/index.d.ts +0 -1
- package/build/components/types/src/components/Forms/index.d.ts +0 -16
- package/build/components/types/src/components/Gauge/Gauge.d.ts +0 -11
- package/build/components/types/src/components/Gauge/GaugeMaker.d.ts +0 -3
- package/build/components/types/src/components/Gauge/index.d.ts +0 -1
- package/build/components/types/src/components/Grid/Grid.d.ts +0 -14
- package/build/components/types/src/components/Grid/GridCol.d.ts +0 -12
- package/build/components/types/src/components/Grid/index.d.ts +0 -2
- package/build/components/types/src/components/Hero/Hero.d.ts +0 -49
- package/build/components/types/src/components/Hero/index.d.ts +0 -1
- package/build/components/types/src/components/Icon/Icon.d.ts +0 -30
- package/build/components/types/src/components/Icon/IconSearch.d.ts +0 -6
- package/build/components/types/src/components/Icon/IconSearchWrapper.d.ts +0 -1
- package/build/components/types/src/components/Icon/Pictogram.d.ts +0 -22
- package/build/components/types/src/components/Icon/PictogramSearch.d.ts +0 -6
- package/build/components/types/src/components/Icon/PictogramSearchWrapper.d.ts +0 -1
- package/build/components/types/src/components/Icon/SpritePathContext.d.ts +0 -8
- package/build/components/types/src/components/Icon/iconSearchTags.d.ts +0 -427
- package/build/components/types/src/components/Icon/iconUtils.d.ts +0 -2
- package/build/components/types/src/components/Icon/index.d.ts +0 -3
- package/build/components/types/src/components/IconList/IconList.d.ts +0 -13
- package/build/components/types/src/components/IconList/Item.d.ts +0 -9
- package/build/components/types/src/components/IconList/index.d.ts +0 -2
- package/build/components/types/src/components/Image/Image.d.ts +0 -20
- package/build/components/types/src/components/Image/index.d.ts +0 -1
- package/build/components/types/src/components/Link/Link.d.ts +0 -18
- package/build/components/types/src/components/Link/index.d.ts +0 -1
- package/build/components/types/src/components/List/ClickableControl.d.ts +0 -9
- package/build/components/types/src/components/List/List.d.ts +0 -13
- package/build/components/types/src/components/List/ListItem.d.ts +0 -16
- package/build/components/types/src/components/List/index.d.ts +0 -2
- package/build/components/types/src/components/Loader/Loader.d.ts +0 -14
- package/build/components/types/src/components/Loader/Loader.static.d.ts +0 -19
- package/build/components/types/src/components/Loader/LoaderFullscreen.d.ts +0 -7
- package/build/components/types/src/components/Loader/index.d.ts +0 -2
- package/build/components/types/src/components/Megamenu/BrandMark.d.ts +0 -1
- package/build/components/types/src/components/Megamenu/Logo.d.ts +0 -1
- package/build/components/types/src/components/Megamenu/LogoJeTu.d.ts +0 -1
- package/build/components/types/src/components/Megamenu/MegaMenuIcon.d.ts +0 -13
- package/build/components/types/src/components/Megamenu/Megamenu.d.ts +0 -20
- package/build/components/types/src/components/Megamenu/Megamenu.static.d.ts +0 -63
- package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +0 -2
- package/build/components/types/src/components/Megamenu/MegamenuSearchContent.d.ts +0 -10
- package/build/components/types/src/components/Megamenu/MyOrangeMobilePanel.d.ts +0 -8
- package/build/components/types/src/components/Megamenu/constants.d.ts +0 -86
- package/build/components/types/src/components/Megamenu/data.d.ts +0 -29
- package/build/components/types/src/components/Megamenu/ids.d.ts +0 -11
- package/build/components/types/src/components/Megamenu/index.d.ts +0 -3
- package/build/components/types/src/components/Megamenu/shared.d.ts +0 -40
- package/build/components/types/src/components/Megamenu/static.d.ts +0 -21
- package/build/components/types/src/components/Modal/Modal.d.ts +0 -39
- package/build/components/types/src/components/Modal/Modal.static.d.ts +0 -37
- package/build/components/types/src/components/Modal/ModalBody.d.ts +0 -12
- package/build/components/types/src/components/Modal/ModalCloseButton.d.ts +0 -8
- package/build/components/types/src/components/Modal/ModalProductFooter.d.ts +0 -10
- package/build/components/types/src/components/Modal/ModalProductHeader.d.ts +0 -11
- package/build/components/types/src/components/Modal/ModalTitle.d.ts +0 -9
- package/build/components/types/src/components/Modal/index.d.ts +0 -6
- package/build/components/types/src/components/Pagination/Pagination.d.ts +0 -25
- package/build/components/types/src/components/Pagination/PaginationItem.d.ts +0 -21
- package/build/components/types/src/components/Pagination/Separator.d.ts +0 -6
- package/build/components/types/src/components/Pagination/helpers.d.ts +0 -23
- package/build/components/types/src/components/Pagination/index.d.ts +0 -3
- package/build/components/types/src/components/Pill/Pill.d.ts +0 -11
- package/build/components/types/src/components/Pill/index.d.ts +0 -1
- package/build/components/types/src/components/Preview/CodeExample.d.ts +0 -12
- package/build/components/types/src/components/Preview/Preview.d.ts +0 -9
- package/build/components/types/src/components/Preview/PreviewGenerator.d.ts +0 -30
- package/build/components/types/src/components/Preview/PreviewTitleBar.d.ts +0 -9
- package/build/components/types/src/components/Preview/getElementDisplayName.d.ts +0 -1
- package/build/components/types/src/components/Preview/index.d.ts +0 -9
- package/build/components/types/src/components/Progress/Progress.d.ts +0 -14
- package/build/components/types/src/components/Progress/index.d.ts +0 -1
- package/build/components/types/src/components/PromoBanner/PromoBanner.d.ts +0 -25
- package/build/components/types/src/components/PromoBanner/index.d.ts +0 -1
- package/build/components/types/src/components/PromotionCard/PromotionCard.d.ts +0 -9
- package/build/components/types/src/components/PromotionCard/PromotionCardContent.d.ts +0 -8
- package/build/components/types/src/components/PromotionCard/PromotionCardImageWrapper.d.ts +0 -8
- package/build/components/types/src/components/PromotionCard/PromotionCardSection.d.ts +0 -9
- package/build/components/types/src/components/PromotionCard/PromotionCardTitle.d.ts +0 -8
- package/build/components/types/src/components/PromotionCard/constants.d.ts +0 -5
- package/build/components/types/src/components/PromotionCard/index.d.ts +0 -5
- package/build/components/types/src/components/Section/Section.d.ts +0 -26
- package/build/components/types/src/components/Section/index.d.ts +0 -1
- package/build/components/types/src/components/Skeleton/Skeleton.d.ts +0 -3
- package/build/components/types/src/components/Skeleton/index.d.ts +0 -1
- package/build/components/types/src/components/SkipLink/SkipLink.d.ts +0 -6
- package/build/components/types/src/components/SkipLink/index.d.ts +0 -1
- package/build/components/types/src/components/SocialButton/SocialButton.d.ts +0 -13
- package/build/components/types/src/components/SocialButton/index.d.ts +0 -1
- package/build/components/types/src/components/StarRating/StarRating.d.ts +0 -9
- package/build/components/types/src/components/StarRating/index.d.ts +0 -1
- package/build/components/types/src/components/Stepbar/Stepbar.d.ts +0 -19
- package/build/components/types/src/components/Stepbar/index.d.ts +0 -1
- package/build/components/types/src/components/Sticker/Sticker.d.ts +0 -10
- package/build/components/types/src/components/Sticker/index.d.ts +0 -2
- package/build/components/types/src/components/Table/Cell.d.ts +0 -11
- package/build/components/types/src/components/Table/Footer.d.ts +0 -3
- package/build/components/types/src/components/Table/Header.d.ts +0 -3
- package/build/components/types/src/components/Table/Row.d.ts +0 -10
- package/build/components/types/src/components/Table/Rows.d.ts +0 -3
- package/build/components/types/src/components/Table/Table.d.ts +0 -24
- package/build/components/types/src/components/Table/Table.static.d.ts +0 -23
- package/build/components/types/src/components/Table/TableContext.d.ts +0 -4
- package/build/components/types/src/components/Table/docsData.d.ts +0 -41
- package/build/components/types/src/components/Table/index.d.ts +0 -2
- package/build/components/types/src/components/Table/types.d.ts +0 -35
- package/build/components/types/src/components/Tabs/Tab.d.ts +0 -13
- package/build/components/types/src/components/Tabs/TabPanel.d.ts +0 -20
- package/build/components/types/src/components/Tabs/Tabs.d.ts +0 -18
- package/build/components/types/src/components/Tabs/Tabs.static.d.ts +0 -40
- package/build/components/types/src/components/Tabs/index.d.ts +0 -3
- package/build/components/types/src/components/Tag/Tag.d.ts +0 -29
- package/build/components/types/src/components/Tag/TagButton.d.ts +0 -12
- package/build/components/types/src/components/Tag/index.d.ts +0 -3
- package/build/components/types/src/components/Tile/Tile.d.ts +0 -16
- package/build/components/types/src/components/Tile/index.d.ts +0 -1
- package/build/components/types/src/components/Timeline/Timeline.d.ts +0 -13
- package/build/components/types/src/components/Timeline/index.d.ts +0 -2
- package/build/components/types/src/components/Tooltip/InfoTooltip.d.ts +0 -8
- package/build/components/types/src/components/Tooltip/Tooltip.d.ts +0 -24
- package/build/components/types/src/components/Tooltip/Tooltip.static.d.ts +0 -30
- package/build/components/types/src/components/Tooltip/index.d.ts +0 -2
- package/build/components/types/src/components/Tooltip/tests/BaseWrapper.d.ts +0 -3
- package/build/components/types/src/components/index.d.ts +0 -54
- package/build/components/types/src/components/static.d.ts +0 -1
- package/build/components/types/src/docs/utils/SpacePreview.d.ts +0 -2
- package/build/components/types/src/docs/utils/ToggleButton.d.ts +0 -9
- package/build/components/types/src/scripts/index.d.ts +0 -131
- package/build/components/types/src/scripts/lib/moduleFactory.d.ts +0 -3
- package/build/components/types/src/scripts/modules/SameHeight.d.ts +0 -22
- package/build/components/types/src/scripts/modules/SpacePreview/SpacePreview.d.ts +0 -23
- package/build/components/types/src/scripts/modules/SpacePreview/index.d.ts +0 -2
- package/build/components/types/src/scripts/modules/Toggle.d.ts +0 -42
- package/build/components/types/src/scripts/modules/toggleUtil.d.ts +0 -13
- package/build/components/types/src/styles/export/breakpoint.d.ts +0 -9
- package/build/components/types/src/styles/export/color.d.ts +0 -107
- package/build/components/types/src/styles/export/space.d.ts +0 -9
- package/build/components/types/src/utils/ConditionalWrapper.d.ts +0 -10
- package/build/components/types/src/utils/classes.d.ts +0 -5
- package/build/components/types/src/utils/color.d.ts +0 -20
- package/build/components/types/src/utils/constants.d.ts +0 -18
- package/build/components/types/src/utils/formatCode.d.ts +0 -5
- package/build/components/types/src/utils/generateId.d.ts +0 -6
- package/build/components/types/src/utils/helpers.d.ts +0 -11
- package/build/components/types/src/utils/hooks.d.ts +0 -30
- package/build/components/types/src/utils/index.d.ts +0 -5
- package/build/components/types/src/utils/keyboard.d.ts +0 -14
- package/build/lib/tsconfig.tsbuildinfo +0 -1
package/build/lib/footer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t={exports:{}};e||(e=1,t.exports=function(){var e=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function t(e){return e.split("").reverse().join("")}function n(e,t){return e.substring(0,t.length)===t}function i(e,t){return e.slice(-1*t.length)===t}function o(e,t,n){if((e[t]||e[n])&&e[t]===e[n])throw new Error(t)}function r(e){return"number"==typeof e&&isFinite(e)}function s(e,t){return e=e.toString().split("e"),(+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]-t:-t))).toFixed(t)}function a(e,n,i,o,a,c,d,l,u,f,h,g){var w,m,S,p=g,y="",O="";return c&&(g=c(g)),!!r(g)&&(!1!==e&&0===parseFloat(g.toFixed(e))&&(g=0),g<0&&(w=!0,g=Math.abs(g)),!1!==e&&(g=s(g,e)),-1!==(g=g.toString()).indexOf(".")?(S=(m=g.split("."))[0],i&&(y=i+m[1])):S=g,n&&(S=t(S).match(/.{1,3}/g),S=t(S.join(t(n)))),w&&l&&(O+=l),o&&(O+=o),w&&u&&(O+=u),O+=S,O+=y,a&&(O+=a),f&&(O=f(O,p)),O)}function c(e,t,o,s,a,c,d,l,u,f,h,g){var w,m="";return h&&(g=h(g)),!(!g||"string"!=typeof g)&&(l&&n(g,l)&&(g=g.replace(l,""),w=!0),s&&n(g,s)&&(g=g.replace(s,"")),u&&n(g,u)&&(g=g.replace(u,""),w=!0),a&&i(g,a)&&(g=g.slice(0,-1*a.length)),t&&(g=g.split(t).join("")),o&&(g=g.replace(o,".")),w&&(m+="-"),""!==(m=(m+=g).replace(/[^0-9\.\-.]/g,""))&&(m=Number(m),d&&(m=d(m)),!!r(m)&&m))}function d(t){var n,i,r,s={};for(void 0===t.suffix&&(t.suffix=t.postfix),n=0;n<e.length;n+=1)if(void 0===(r=t[i=e[n]]))"negative"!==i||s.negativeBefore?"mark"===i&&"."!==s.thousand?s[i]=".":s[i]=!1:s[i]="-";else if("decimals"===i){if(!(r>=0&&r<8))throw new Error(i);s[i]=r}else if("encoder"===i||"decoder"===i||"edit"===i||"undo"===i){if("function"!=typeof r)throw new Error(i);s[i]=r}else{if("string"!=typeof r)throw new Error(i);s[i]=r}return o(s,"mark","thousand"),o(s,"prefix","negative"),o(s,"prefix","negativeBefore"),s}function l(t,n,i){var o,r=[];for(o=0;o<e.length;o+=1)r.push(t[e[o]]);return r.push(i),n.apply("",r)}function u(e){if(!(this instanceof u))return new u(e);"object"==typeof e&&(e=d(e),this.to=function(t){return l(e,a,t)},this.from=function(t){return l(e,c,t)})}return u}());const n="footer",i=`${n}__menu-section`,o=`${n}__accordion-toggle`;class r{constructor(e){return e.ODS_Footer?e.ODS_Footer:(this.element=e,this.sections=[],this.mediaQueryList=window.matchMedia("(max-width: 479.98px)"),this.onToggleClick=this.handleToggleClick.bind(this),this.onMediaQueryChange=this.syncViewportState.bind(this),this.element.ODS_Footer=this,this.init(),this)}static getInstance(e){return e&&e.ODS_Footer?e.ODS_Footer:null}init(){this.sections=Array.from(this.element.querySelectorAll(`[data-footer-section].${i}`)).map(e=>{const t=e.querySelector(`.${o}`),n=t?.getAttribute("aria-controls"),i=n?this.element.querySelector(`#${n}`):null;return t&&t.addEventListener("click",this.onToggleClick),{element:e,toggle:t,panel:i}}),this.mediaQueryList.addEventListener("change",this.onMediaQueryChange),this.syncViewportState()}setSectionState(e,t){e.toggle&&e.panel&&(e.toggle.setAttribute("aria-expanded",String(t)),e.panel.hidden=!t)}syncViewportState(){const e=this.mediaQueryList.matches;this.sections.forEach((t,n)=>{if(!t.toggle||!t.panel)return;if(!e)return this.setSectionState(t,!0),void t.element.removeAttribute("data-footer-mobile-initialized");if(!("true"===t.element.getAttribute("data-footer-mobile-initialized")))return this.setSectionState(t,0===n),void t.element.setAttribute("data-footer-mobile-initialized","true");const i="true"===t.toggle.getAttribute("aria-expanded");this.setSectionState(t,i)})}handleToggleClick(e){if(!this.mediaQueryList.matches)return;const t=e.currentTarget,n=this.sections.find(e=>e.toggle===t);if(!n||!n.toggle)return;const i="true"===n.toggle.getAttribute("aria-expanded");this.setSectionState(n,!i)}destroy(){this.sections.forEach(e=>{e.toggle&&e.toggle.removeEventListener("click",this.onToggleClick)}),this.mediaQueryList.removeEventListener("change",this.onMediaQueryChange)}update(){this.destroy(),this.init()}}const s=[{Module:r,name:"Footer",selector:"[data-footer]"}];window.ODSFooter=window.ODSFooter||{Footer:r,instances:[],init:()=>{window.ODSFooter.instances=function(e,t,n={}){return Array.from(document.querySelectorAll(t)).map(t=>new e(t,n))}(r,"[data-footer]")},destroy:()=>{window.ODSFooter.instances.forEach(e=>{e&&"function"==typeof e.destroy&&e.destroy()}),window.ODSFooter.instances=[]},initModulesWithin:function(e){const t={};return window.ODS.moduleSelectorPairs.forEach(n=>{const i=(o=n.name).charAt(0).toLowerCase()+o.slice(1);var o;const r=Array.from(e.querySelectorAll(n.selector)),s=`ODS_${n.name}`,a=r.filter(e=>!e[s]);window&&window.ODS&&window.ODS.instances[i]&&(window.ODS.instances[i]=window.ODS.instances[i].filter(e=>{const t=document.contains(e.element);return t||e.destroy?.(),t}),window.ODS.instances[i].forEach(e=>{a.forEach((t,n)=>{t.isSameNode(e.element)&&a.splice(n,1)})})),a.length&&(Array.isArray(window.ODS.instances[i])||(window.ODS.instances[i]=[]),t[i]=a.map(e=>new n.Module(e)),window.ODS.instances[i]=[...window.ODS.instances[i],...t[i]])}),t},destroyModulesWithin:function(e,t=!1){const n={};return Object.keys(window.ODS.instances).forEach(i=>{window.ODS.instances[i].forEach(o=>{"object"!=typeof n[i]&&(n[i]=[]);let r=e.contains(o.element);"modal"===i?r=o.instance?._openers.every(t=>e.contains(t)):"tooltip"===i&&(r=e.contains(o.trigger)),r&&(o.destroy(),n[i].push(o)),r&&t&&["modal","tooltip"].includes(i)&&o.element.remove()}),window.ODS.instances[i]=window.ODS.instances[i].filter(e=>!n[i].includes(e))}),n}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{window.ODSFooter.init()}):window.ODSFooter.init();export{r as Footer,s as customFooterModuleSelectorPairs,r as default};
|
|
1
|
+
var e,t={exports:{}};e||(e=1,t.exports=function(){var e=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function t(e){return e.split("").reverse().join("")}function n(e,t){return e.substring(0,t.length)===t}function i(e,t){return e.slice(-1*t.length)===t}function o(e,t,n){if((e[t]||e[n])&&e[t]===e[n])throw new Error(t)}function r(e){return"number"==typeof e&&isFinite(e)}function s(e,t){return e=e.toString().split("e"),(+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]-t:-t))).toFixed(t)}function a(e,n,i,o,a,c,d,l,u,f,h,g){var w,m,S,p=g,y="",O="";return c&&(g=c(g)),!!r(g)&&(!1!==e&&0===parseFloat(g.toFixed(e))&&(g=0),g<0&&(w=!0,g=Math.abs(g)),!1!==e&&(g=s(g,e)),-1!==(g=g.toString()).indexOf(".")?(S=(m=g.split("."))[0],i&&(y=i+m[1])):S=g,n&&(S=t(S).match(/.{1,3}/g),S=t(S.join(t(n)))),w&&l&&(O+=l),o&&(O+=o),w&&u&&(O+=u),O+=S,O+=y,a&&(O+=a),f&&(O=f(O,p)),O)}function c(e,t,o,s,a,c,d,l,u,f,h,g){var w,m="";return h&&(g=h(g)),!(!g||"string"!=typeof g)&&(l&&n(g,l)&&(g=g.replace(l,""),w=!0),s&&n(g,s)&&(g=g.replace(s,"")),u&&n(g,u)&&(g=g.replace(u,""),w=!0),a&&i(g,a)&&(g=g.slice(0,-1*a.length)),t&&(g=g.split(t).join("")),o&&(g=g.replace(o,".")),w&&(m+="-"),""!==(m=(m+=g).replace(/[^0-9\.\-.]/g,""))&&(m=Number(m),d&&(m=d(m)),!!r(m)&&m))}function d(t){var n,i,r,s={};for(void 0===t.suffix&&(t.suffix=t.postfix),n=0;n<e.length;n+=1)if(void 0===(r=t[i=e[n]]))"negative"!==i||s.negativeBefore?"mark"===i&&"."!==s.thousand?s[i]=".":s[i]=!1:s[i]="-";else if("decimals"===i){if(!(r>=0&&r<8))throw new Error(i);s[i]=r}else if("encoder"===i||"decoder"===i||"edit"===i||"undo"===i){if("function"!=typeof r)throw new Error(i);s[i]=r}else{if("string"!=typeof r)throw new Error(i);s[i]=r}return o(s,"mark","thousand"),o(s,"prefix","negative"),o(s,"prefix","negativeBefore"),s}function l(t,n,i){var o,r=[];for(o=0;o<e.length;o+=1)r.push(t[e[o]]);return r.push(i),n.apply("",r)}function u(e){if(!(this instanceof u))return new u(e);"object"==typeof e&&(e=d(e),this.to=function(t){return l(e,a,t)},this.from=function(t){return l(e,c,t)})}return u}());const n="footer",i=`${n}__menu-section`,o=`${n}__accordion-toggle`;class r{element;sections;mediaQueryList;onToggleClick;onMediaQueryChange;constructor(e){return e.ODS_Footer?e.ODS_Footer:(this.element=e,this.sections=[],this.mediaQueryList=window.matchMedia("(max-width: 479.98px)"),this.onToggleClick=this.handleToggleClick.bind(this),this.onMediaQueryChange=this.syncViewportState.bind(this),this.element.ODS_Footer=this,this.init(),this)}static getInstance(e){return e&&e.ODS_Footer?e.ODS_Footer:null}init(){this.sections=Array.from(this.element.querySelectorAll(`[data-footer-section].${i}`)).map(e=>{const t=e.querySelector(`.${o}`),n=t?.getAttribute("aria-controls"),i=n?this.element.querySelector(`#${n}`):null;return t&&t.addEventListener("click",this.onToggleClick),{element:e,toggle:t,panel:i}}),this.mediaQueryList.addEventListener("change",this.onMediaQueryChange),this.syncViewportState()}setSectionState(e,t){e.toggle&&e.panel&&(e.toggle.setAttribute("aria-expanded",String(t)),e.panel.hidden=!t)}syncViewportState(){const e=this.mediaQueryList.matches;this.sections.forEach((t,n)=>{if(!t.toggle||!t.panel)return;if(!e)return this.setSectionState(t,!0),void t.element.removeAttribute("data-footer-mobile-initialized");if(!("true"===t.element.getAttribute("data-footer-mobile-initialized")))return this.setSectionState(t,0===n),void t.element.setAttribute("data-footer-mobile-initialized","true");const i="true"===t.toggle.getAttribute("aria-expanded");this.setSectionState(t,i)})}handleToggleClick(e){if(!this.mediaQueryList.matches)return;const t=e.currentTarget,n=this.sections.find(e=>e.toggle===t);if(!n||!n.toggle)return;const i="true"===n.toggle.getAttribute("aria-expanded");this.setSectionState(n,!i)}destroy(){this.sections.forEach(e=>{e.toggle&&e.toggle.removeEventListener("click",this.onToggleClick)}),this.mediaQueryList.removeEventListener("change",this.onMediaQueryChange)}update(){this.destroy(),this.init()}}const s=[{Module:r,name:"Footer",selector:"[data-footer]"}];window.ODSFooter=window.ODSFooter||{Footer:r,instances:[],init:()=>{window.ODSFooter.instances=function(e,t,n={}){return Array.from(document.querySelectorAll(t)).map(t=>new e(t,n))}(r,"[data-footer]")},destroy:()=>{window.ODSFooter.instances.forEach(e=>{e&&"function"==typeof e.destroy&&e.destroy()}),window.ODSFooter.instances=[]},initModulesWithin:function(e){const t={};return window.ODS.moduleSelectorPairs.forEach(n=>{const i=(o=n.name).charAt(0).toLowerCase()+o.slice(1);var o;const r=Array.from(e.querySelectorAll(n.selector)),s=`ODS_${n.name}`,a=r.filter(e=>!e[s]);window&&window.ODS&&window.ODS.instances[i]&&(window.ODS.instances[i]=window.ODS.instances[i].filter(e=>{const t=document.contains(e.element);return t||e.destroy?.(),t}),window.ODS.instances[i].forEach(e=>{a.forEach((t,n)=>{t.isSameNode(e.element)&&a.splice(n,1)})})),a.length&&(Array.isArray(window.ODS.instances[i])||(window.ODS.instances[i]=[]),t[i]=a.map(e=>new n.Module(e)),window.ODS.instances[i]=[...window.ODS.instances[i],...t[i]])}),t},destroyModulesWithin:function(e,t=!1){const n={};return Object.keys(window.ODS.instances).forEach(i=>{window.ODS.instances[i].forEach(o=>{"object"!=typeof n[i]&&(n[i]=[]);let r=e.contains(o.element);"modal"===i?r=o.instance?._openers.every(t=>e.contains(t)):"tooltip"===i&&(r=e.contains(o.trigger)),r&&(o.destroy(),n[i].push(o)),r&&t&&["modal","tooltip"].includes(i)&&o.element.remove()}),window.ODS.instances[i]=window.ODS.instances[i].filter(e=>!n[i].includes(e))}),n}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{window.ODSFooter.init()}):window.ODSFooter.init();export{r as Footer,s as customFooterModuleSelectorPairs,r as default};
|
|
2
2
|
//# sourceMappingURL=footer.js.map
|
package/build/lib/footer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.js","sources":["../../node_modules/.pnpm/wnumb@1.2.0/node_modules/wnumb/wNumb.js","../../../../src/components/Footer/constants.ts","../../../../src/components/Footer/Footer.static.ts","../../../../src/components/Footer/static.ts","../../../../src/scripts/lib/moduleFactory.js","../../src/utils/helpers.js"],"sourcesContent":["(function(factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n } else if (typeof exports === \"object\") {\r\n // Node/CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n window.wNumb = factory();\r\n }\r\n})(function() {\r\n \"use strict\";\r\n\r\n var FormatOptions = [\r\n \"decimals\",\r\n \"thousand\",\r\n \"mark\",\r\n \"prefix\",\r\n \"suffix\",\r\n \"encoder\",\r\n \"decoder\",\r\n \"negativeBefore\",\r\n \"negative\",\r\n \"edit\",\r\n \"undo\"\r\n ];\r\n\r\n // General\r\n\r\n // Reverse a string\r\n function strReverse(a) {\r\n return a\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\");\r\n }\r\n\r\n // Check if a string starts with a specified prefix.\r\n function strStartsWith(input, match) {\r\n return input.substring(0, match.length) === match;\r\n }\r\n\r\n // Check is a string ends in a specified suffix.\r\n function strEndsWith(input, match) {\r\n return input.slice(-1 * match.length) === match;\r\n }\r\n\r\n // Throw an error if formatting options are incompatible.\r\n function throwEqualError(F, a, b) {\r\n if ((F[a] || F[b]) && F[a] === F[b]) {\r\n throw new Error(a);\r\n }\r\n }\r\n\r\n // Check if a number is finite and not NaN\r\n function isValidNumber(input) {\r\n return typeof input === \"number\" && isFinite(input);\r\n }\r\n\r\n // Provide rounding-accurate toFixed method.\r\n // Borrowed: http://stackoverflow.com/a/21323330/775265\r\n function toFixed(value, exp) {\r\n value = value.toString().split(\"e\");\r\n value = Math.round(+(value[0] + \"e\" + (value[1] ? +value[1] + exp : exp)));\r\n value = value.toString().split(\"e\");\r\n return (+(value[0] + \"e\" + (value[1] ? +value[1] - exp : -exp))).toFixed(exp);\r\n }\r\n\r\n // Formatting\r\n\r\n // Accept a number as input, output formatted string.\r\n function formatTo(\r\n decimals,\r\n thousand,\r\n mark,\r\n prefix,\r\n suffix,\r\n encoder,\r\n decoder,\r\n negativeBefore,\r\n negative,\r\n edit,\r\n undo,\r\n input\r\n ) {\r\n var originalInput = input,\r\n inputIsNegative,\r\n inputPieces,\r\n inputBase,\r\n inputDecimals = \"\",\r\n output = \"\";\r\n\r\n // Apply user encoder to the input.\r\n // Expected outcome: number.\r\n if (encoder) {\r\n input = encoder(input);\r\n }\r\n\r\n // Stop if no valid number was provided, the number is infinite or NaN.\r\n if (!isValidNumber(input)) {\r\n return false;\r\n }\r\n\r\n // Rounding away decimals might cause a value of -0\r\n // when using very small ranges. Remove those cases.\r\n if (decimals !== false && parseFloat(input.toFixed(decimals)) === 0) {\r\n input = 0;\r\n }\r\n\r\n // Formatting is done on absolute numbers,\r\n // decorated by an optional negative symbol.\r\n if (input < 0) {\r\n inputIsNegative = true;\r\n input = Math.abs(input);\r\n }\r\n\r\n // Reduce the number of decimals to the specified option.\r\n if (decimals !== false) {\r\n input = toFixed(input, decimals);\r\n }\r\n\r\n // Transform the number into a string, so it can be split.\r\n input = input.toString();\r\n\r\n // Break the number on the decimal separator.\r\n if (input.indexOf(\".\") !== -1) {\r\n inputPieces = input.split(\".\");\r\n\r\n inputBase = inputPieces[0];\r\n\r\n if (mark) {\r\n inputDecimals = mark + inputPieces[1];\r\n }\r\n } else {\r\n // If it isn't split, the entire number will do.\r\n inputBase = input;\r\n }\r\n\r\n // Group numbers in sets of three.\r\n if (thousand) {\r\n inputBase = strReverse(inputBase).match(/.{1,3}/g);\r\n inputBase = strReverse(inputBase.join(strReverse(thousand)));\r\n }\r\n\r\n // If the number is negative, prefix with negation symbol.\r\n if (inputIsNegative && negativeBefore) {\r\n output += negativeBefore;\r\n }\r\n\r\n // Prefix the number\r\n if (prefix) {\r\n output += prefix;\r\n }\r\n\r\n // Normal negative option comes after the prefix. Defaults to '-'.\r\n if (inputIsNegative && negative) {\r\n output += negative;\r\n }\r\n\r\n // Append the actual number.\r\n output += inputBase;\r\n output += inputDecimals;\r\n\r\n // Apply the suffix.\r\n if (suffix) {\r\n output += suffix;\r\n }\r\n\r\n // Run the output through a user-specified post-formatter.\r\n if (edit) {\r\n output = edit(output, originalInput);\r\n }\r\n\r\n // All done.\r\n return output;\r\n }\r\n\r\n // Accept a sting as input, output decoded number.\r\n function formatFrom(\r\n decimals,\r\n thousand,\r\n mark,\r\n prefix,\r\n suffix,\r\n encoder,\r\n decoder,\r\n negativeBefore,\r\n negative,\r\n edit,\r\n undo,\r\n input\r\n ) {\r\n var originalInput = input,\r\n inputIsNegative,\r\n output = \"\";\r\n\r\n // User defined pre-decoder. Result must be a non empty string.\r\n if (undo) {\r\n input = undo(input);\r\n }\r\n\r\n // Test the input. Can't be empty.\r\n if (!input || typeof input !== \"string\") {\r\n return false;\r\n }\r\n\r\n // If the string starts with the negativeBefore value: remove it.\r\n // Remember is was there, the number is negative.\r\n if (negativeBefore && strStartsWith(input, negativeBefore)) {\r\n input = input.replace(negativeBefore, \"\");\r\n inputIsNegative = true;\r\n }\r\n\r\n // Repeat the same procedure for the prefix.\r\n if (prefix && strStartsWith(input, prefix)) {\r\n input = input.replace(prefix, \"\");\r\n }\r\n\r\n // And again for negative.\r\n if (negative && strStartsWith(input, negative)) {\r\n input = input.replace(negative, \"\");\r\n inputIsNegative = true;\r\n }\r\n\r\n // Remove the suffix.\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice\r\n if (suffix && strEndsWith(input, suffix)) {\r\n input = input.slice(0, -1 * suffix.length);\r\n }\r\n\r\n // Remove the thousand grouping.\r\n if (thousand) {\r\n input = input.split(thousand).join(\"\");\r\n }\r\n\r\n // Set the decimal separator back to period.\r\n if (mark) {\r\n input = input.replace(mark, \".\");\r\n }\r\n\r\n // Prepend the negative symbol.\r\n if (inputIsNegative) {\r\n output += \"-\";\r\n }\r\n\r\n // Add the number\r\n output += input;\r\n\r\n // Trim all non-numeric characters (allow '.' and '-');\r\n output = output.replace(/[^0-9\\.\\-.]/g, \"\");\r\n\r\n // The value contains no parse-able number.\r\n if (output === \"\") {\r\n return false;\r\n }\r\n\r\n // Covert to number.\r\n output = Number(output);\r\n\r\n // Run the user-specified post-decoder.\r\n if (decoder) {\r\n output = decoder(output);\r\n }\r\n\r\n // Check is the output is valid, otherwise: return false.\r\n if (!isValidNumber(output)) {\r\n return false;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n // Framework\r\n\r\n // Validate formatting options\r\n function validate(inputOptions) {\r\n var i,\r\n optionName,\r\n optionValue,\r\n filteredOptions = {};\r\n\r\n if (inputOptions[\"suffix\"] === undefined) {\r\n inputOptions[\"suffix\"] = inputOptions[\"postfix\"];\r\n }\r\n\r\n for (i = 0; i < FormatOptions.length; i += 1) {\r\n optionName = FormatOptions[i];\r\n optionValue = inputOptions[optionName];\r\n\r\n if (optionValue === undefined) {\r\n // Only default if negativeBefore isn't set.\r\n if (optionName === \"negative\" && !filteredOptions.negativeBefore) {\r\n filteredOptions[optionName] = \"-\";\r\n // Don't set a default for mark when 'thousand' is set.\r\n } else if (optionName === \"mark\" && filteredOptions.thousand !== \".\") {\r\n filteredOptions[optionName] = \".\";\r\n } else {\r\n filteredOptions[optionName] = false;\r\n }\r\n\r\n // Floating points in JS are stable up to 7 decimals.\r\n } else if (optionName === \"decimals\") {\r\n if (optionValue >= 0 && optionValue < 8) {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n\r\n // These options, when provided, must be functions.\r\n } else if (\r\n optionName === \"encoder\" ||\r\n optionName === \"decoder\" ||\r\n optionName === \"edit\" ||\r\n optionName === \"undo\"\r\n ) {\r\n if (typeof optionValue === \"function\") {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n\r\n // Other options are strings.\r\n } else {\r\n if (typeof optionValue === \"string\") {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n }\r\n }\r\n\r\n // Some values can't be extracted from a\r\n // string if certain combinations are present.\r\n throwEqualError(filteredOptions, \"mark\", \"thousand\");\r\n throwEqualError(filteredOptions, \"prefix\", \"negative\");\r\n throwEqualError(filteredOptions, \"prefix\", \"negativeBefore\");\r\n\r\n return filteredOptions;\r\n }\r\n\r\n // Pass all options as function arguments\r\n function passAll(options, method, input) {\r\n var i,\r\n args = [];\r\n\r\n // Add all options in order of FormatOptions\r\n for (i = 0; i < FormatOptions.length; i += 1) {\r\n args.push(options[FormatOptions[i]]);\r\n }\r\n\r\n // Append the input, then call the method, presenting all\r\n // options as arguments.\r\n args.push(input);\r\n return method.apply(\"\", args);\r\n }\r\n\r\n function wNumb(options) {\r\n if (!(this instanceof wNumb)) {\r\n return new wNumb(options);\r\n }\r\n\r\n if (typeof options !== \"object\") {\r\n return;\r\n }\r\n\r\n options = validate(options);\r\n\r\n // Call 'formatTo' with proper arguments.\r\n this.to = function(input) {\r\n return passAll(options, formatTo, input);\r\n };\r\n\r\n // Call 'formatFrom' with proper arguments.\r\n this.from = function(input) {\r\n return passAll(options, formatFrom, input);\r\n };\r\n }\r\n\r\n return wNumb;\r\n});\r\n","export const CLASS_ROOT = \"footer\";\n\nexport const CLASS_CONTAINER = `${CLASS_ROOT}__container`;\nexport const CLASS_LOGO = `${CLASS_ROOT}__logo`;\nexport const CLASS_TITLE = `${CLASS_ROOT}__title`;\nexport const CLASS_LIST = `${CLASS_ROOT}__list`;\nexport const CLASS_LIST_SPACE_SMALL = `${CLASS_ROOT}__list--space-small`;\nexport const CLASS_LIST_INLINE = `${CLASS_ROOT}__list--inline`;\nexport const CLASS_LIST_STACK_SM_DOWN = `${CLASS_ROOT}__list--stack-sm-down`;\nexport const CLASS_LIST_BREAK_SM_DOWN = `${CLASS_ROOT}__list-break--sm-down`;\nexport const CLASS_LIST_ITEM_LEAD = `${CLASS_ROOT}__list-item--lead`;\nexport const CLASS_BOTTOM = `${CLASS_ROOT}__bottom`;\nexport const CLASS_BOTTOM_COPYRIGHT = `${CLASS_ROOT}__bottom-copyright`;\nexport const CLASS_MENU = `${CLASS_ROOT}__menu`;\nexport const CLASS_MENU_SECTION = `${CLASS_ROOT}__menu-section`;\nexport const CLASS_BAR = `${CLASS_ROOT}__bar`;\nexport const CLASS_MB_LARGE = `${CLASS_ROOT}--mb-xlarge`;\nexport const CLASS_ACCORDION_TOGGLE = `${CLASS_ROOT}__accordion-toggle`;\nexport const CLASS_ACCORDION_ICON = `${CLASS_ROOT}__accordion-icon`;\nexport const CLASS_DIVIDER = `${CLASS_ROOT}__divider`;\nexport const CLASS_DIVIDER_HIDE_XS_DOWN = `${CLASS_DIVIDER}--hide-xs-down`;\n","import { CLASS_ACCORDION_TOGGLE, CLASS_MENU_SECTION } from \"./constants\";\n\nconst MOBILE_MEDIA_QUERY = \"(max-width: 479.98px)\";\n\ninterface FooterSection {\n element: HTMLElement;\n toggle: HTMLButtonElement | null;\n panel: HTMLElement | null;\n}\n\nexport default class Footer {\n element!: HTMLElement;\n sections!: FooterSection[];\n mediaQueryList!: MediaQueryList;\n onToggleClick!: (event: Event) => void;\n onMediaQueryChange!: () => void;\n\n constructor(element: HTMLElement) {\n if ((element as any).ODS_Footer) {\n return (element as any).ODS_Footer;\n }\n\n this.element = element;\n this.sections = [];\n this.mediaQueryList = window.matchMedia(MOBILE_MEDIA_QUERY);\n\n this.onToggleClick = this.handleToggleClick.bind(this);\n this.onMediaQueryChange = this.syncViewportState.bind(this);\n\n (this.element as any).ODS_Footer = this;\n\n this.init();\n return this;\n }\n\n static getInstance(el: HTMLElement): Footer | null {\n return el && (el as any).ODS_Footer ? (el as any).ODS_Footer : null;\n }\n\n init(): void {\n this.sections = Array.from(\n this.element.querySelectorAll(\n `[data-footer-section].${CLASS_MENU_SECTION}`,\n ),\n ).map((section) => {\n const toggle = section.querySelector(\n `.${CLASS_ACCORDION_TOGGLE}`,\n ) as HTMLButtonElement | null;\n const panelId = toggle?.getAttribute(\"aria-controls\");\n const panel = panelId\n ? (this.element.querySelector(`#${panelId}`) as HTMLElement | null)\n : null;\n\n if (toggle) {\n toggle.addEventListener(\"click\", this.onToggleClick);\n }\n\n return {\n element: section as HTMLElement,\n toggle,\n panel,\n };\n });\n\n this.mediaQueryList.addEventListener(\"change\", this.onMediaQueryChange);\n\n this.syncViewportState();\n }\n\n private setSectionState(section: FooterSection, isExpanded: boolean): void {\n if (!section.toggle || !section.panel) return;\n\n section.toggle.setAttribute(\"aria-expanded\", String(isExpanded));\n section.panel.hidden = !isExpanded;\n }\n\n private syncViewportState(): void {\n const isMobile = this.mediaQueryList.matches;\n\n this.sections.forEach((section, index) => {\n if (!section.toggle || !section.panel) return;\n\n if (!isMobile) {\n this.setSectionState(section, true);\n section.element.removeAttribute(\"data-footer-mobile-initialized\");\n return;\n }\n\n const isInitialized =\n section.element.getAttribute(\"data-footer-mobile-initialized\") ===\n \"true\";\n\n if (!isInitialized) {\n this.setSectionState(section, index === 0);\n section.element.setAttribute(\"data-footer-mobile-initialized\", \"true\");\n return;\n }\n\n const isExpanded =\n section.toggle.getAttribute(\"aria-expanded\") === \"true\";\n this.setSectionState(section, isExpanded);\n });\n }\n\n private handleToggleClick(event: Event): void {\n if (!this.mediaQueryList.matches) return;\n\n const toggle = event.currentTarget as HTMLButtonElement;\n const section = this.sections.find((item) => item.toggle === toggle);\n\n if (!section || !section.toggle) return;\n\n const isExpanded = section.toggle.getAttribute(\"aria-expanded\") === \"true\";\n this.setSectionState(section, !isExpanded);\n }\n\n destroy(): void {\n this.sections.forEach((section) => {\n if (!section.toggle) return;\n section.toggle.removeEventListener(\"click\", this.onToggleClick);\n });\n\n this.mediaQueryList.removeEventListener(\"change\", this.onMediaQueryChange);\n }\n\n update(): void {\n this.destroy();\n this.init();\n }\n}\n","import moduleFactory, {\n destroyModulesWithin,\n initModulesWithin,\n} from \"../../scripts/lib/moduleFactory\";\nimport Footer from \"./Footer.static\";\nimport \"./styles/style.scss\";\n\nexport const customFooterModuleSelectorPairs = [\n {\n Module: Footer,\n name: \"Footer\",\n selector: \"[data-footer]\",\n },\n];\n\ndeclare global {\n interface Window {\n ODSFooter: {\n Footer: typeof Footer;\n instances: Footer[];\n init: () => void;\n destroy: () => void;\n initModulesWithin: (container: any) => {};\n destroyModulesWithin: (\n container: any,\n removeOrphanedNodes?: boolean | undefined,\n ) => {};\n };\n }\n}\n\nwindow.ODSFooter = window.ODSFooter || {\n Footer,\n instances: [],\n init: () => {\n window.ODSFooter.instances = moduleFactory(Footer, \"[data-footer]\");\n },\n destroy: () => {\n window.ODSFooter.instances.forEach((instance) => {\n if (instance && typeof instance.destroy === \"function\") {\n instance.destroy();\n }\n });\n window.ODSFooter.instances = [];\n },\n initModulesWithin,\n destroyModulesWithin,\n};\n\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => {\n window.ODSFooter.init();\n });\n} else {\n window.ODSFooter.init();\n}\n\nexport { Footer };\nexport default Footer;\n","import { lowerCamelCase } from \"../../utils/helpers\";\n\nexport default function moduleFactory(Module, selector, options = {}) {\n const elements = Array.from(document.querySelectorAll(selector));\n\n return elements.map((element) => new Module(element, options));\n}\n\nexport function destroyModulesWithin(container, removeOrphanedNodes = false) {\n const destroyedInstances = {};\n\n Object.keys(window.ODS.instances).forEach((moduleName) => {\n window.ODS.instances[moduleName].forEach((instance) => {\n if (typeof destroyedInstances[moduleName] !== \"object\") {\n destroyedInstances[moduleName] = [];\n }\n\n let isInContainer = container.contains(instance.element);\n if (moduleName === \"modal\") {\n isInContainer = instance.instance?._openers.every((opener) =>\n container.contains(opener),\n );\n } else if (moduleName === \"tooltip\") {\n isInContainer = container.contains(instance.trigger);\n }\n\n if (isInContainer) {\n instance.destroy();\n destroyedInstances[moduleName].push(instance);\n }\n\n if (\n isInContainer &&\n removeOrphanedNodes &&\n [\"modal\", \"tooltip\"].includes(moduleName)\n ) {\n instance.element.remove();\n }\n });\n\n window.ODS.instances[moduleName] = window.ODS.instances[moduleName].filter(\n (instance) => !destroyedInstances[moduleName].includes(instance),\n );\n });\n\n return destroyedInstances;\n}\n\nexport function initModulesWithin(container) {\n const instances = {};\n window.ODS.moduleSelectorPairs.forEach((module) => {\n const name = lowerCamelCase(module.name);\n const elements = Array.from(container.querySelectorAll(module.selector));\n\n // Filter out elements that already have an instance (e.g., initialized by React)\n const instancePropertyName = `ODS_${module.name}`;\n const uninitializedElements = elements.filter(\n (element) => !element[instancePropertyName],\n );\n\n if (window && window.ODS && window.ODS.instances[name]) {\n // Also clean up instances from elements that are no longer in the document\n window.ODS.instances[name] = window.ODS.instances[name].filter(\n (instance) => {\n const isInDocument = document.contains(instance.element);\n if (!isInDocument) {\n // Clean up the instance if its element is no longer in the document\n instance.destroy?.();\n }\n return isInDocument;\n },\n );\n\n window.ODS.instances[name].forEach((instance) => {\n uninitializedElements.forEach((element, index) => {\n if (element.isSameNode(instance.element)) {\n uninitializedElements.splice(index, 1);\n }\n });\n });\n }\n if (uninitializedElements.length) {\n if (!Array.isArray(window.ODS.instances[name])) {\n window.ODS.instances[name] = [];\n }\n instances[name] = uninitializedElements.map(\n (element) => new module.Module(element),\n );\n window.ODS.instances[name] = [\n ...window.ODS.instances[name],\n ...instances[name],\n ];\n }\n });\n return instances;\n}\n","import wnumb from \"wnumb\";\n\nexport function isObject(val) {\n return val != null && typeof val === \"object\" && Array.isArray(val) === false;\n}\n\nexport function dateToYYYYMMDD(date) {\n if (!date || !(date instanceof Date)) {\n return \"\";\n }\n\n return `${date.getFullYear()}-${(date.getMonth() + 1)\n .toString()\n .padStart(2, \"0\")}-${date.getDate().toString().padStart(2, \"0\")}`;\n}\n\n// Get element position relative to document\nexport function windowOffset(el) {\n const position = { x: 0, y: 0 };\n\n if (el.offsetParent) {\n do {\n position.x += el.offsetLeft;\n position.y += el.offsetTop;\n } while ((el = el.offsetParent));\n }\n\n return position;\n}\n\n// Get element siblings\nexport function getSiblings(el) {\n if (!(el instanceof Element)) {\n return false;\n }\n\n const parent = el.parentNode;\n if (!parent) {\n return false;\n }\n\n const parentChildren = [];\n const siblings = [];\n\n parentChildren.push.apply(parentChildren, parent.children);\n\n for (let i = 0, l = parentChildren.length; i < l; i += 1) {\n if (parentChildren[i] !== el) {\n siblings.push(parentChildren[i]);\n }\n }\n\n return siblings;\n}\n\n/**\n * Converts object to string\n *\n * Should be able to handle all types\n * objectToString({\n * 'boolean': true,\n * 'function': () => { return 'test'; },\n * 'namedfunction': function test() { return 'test'; },\n * 'null': null,\n * 'number1': 1,\n * 'number2': 2.345,\n * 'object1': { test: 'test' },\n * 'string': 'String',\n * 'undefined' : undefined,\n * })\n *\n * @param {object} object object to convert\n * @returns object converted to string\n */\nexport const objectToString = (object, spaceCount = 2) => {\n let str = \"\";\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n let value = object?.[key];\n if (typeof value === \"string\") {\n value = `\"${value}\"`;\n } else if (value === null) {\n value = \"null\";\n } else if (typeof value === \"object\") {\n value = objectToString(value, spaceCount + 2);\n } else if (typeof value === \"function\") {\n value = value.toString();\n } else if (value === undefined) {\n value = \"undefined\";\n }\n str += `${\" \".repeat(spaceCount)}${key}: ${value},\\n`;\n }\n }\n return `{\\n${str}${\" \".repeat(spaceCount - 2)}}`;\n};\nexport function capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function lowerCamelCase(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\nconst defaultPriceFormat = {\n decimals: 2,\n mark: \",\",\n thousand: \" \",\n suffix: `\\xa0€`,\n};\n\nexport function formatPrice(price, format) {\n return wnumb({\n ...defaultPriceFormat,\n ...format,\n ...(price % 1 === 0 ? { decimals: 0 } : {}), // integers without decimals\n }).to(price);\n}\n"],"names":["exports","FormatOptions","strReverse","a","split","reverse","join","strStartsWith","input","match","substring","length","strEndsWith","slice","throwEqualError","F","b","Error","isValidNumber","isFinite","toFixed","value","exp","toString","Math","round","formatTo","decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo","inputIsNegative","inputPieces","inputBase","originalInput","inputDecimals","output","parseFloat","abs","indexOf","formatFrom","replace","Number","validate","inputOptions","i","optionName","optionValue","filteredOptions","undefined","passAll","options","method","args","push","apply","wNumb","this","to","from","factory","CLASS_ROOT","CLASS_MENU_SECTION","CLASS_ACCORDION_TOGGLE","Footer","constructor","element","ODS_Footer","sections","mediaQueryList","window","matchMedia","onToggleClick","handleToggleClick","bind","onMediaQueryChange","syncViewportState","init","getInstance","el","Array","querySelectorAll","map","section","toggle","querySelector","panelId","getAttribute","panel","addEventListener","setSectionState","isExpanded","setAttribute","String","hidden","isMobile","matches","forEach","index","removeAttribute","event","currentTarget","find","item","destroy","removeEventListener","update","customFooterModuleSelectorPairs","Module","name","selector","ODSFooter","instances","document","moduleFactory","instance","initModulesWithin","container","ODS","moduleSelectorPairs","module","string","charAt","toLowerCase","elements","instancePropertyName","uninitializedElements","filter","isInDocument","contains","isSameNode","splice","isArray","destroyModulesWithin","removeOrphanedNodes","destroyedInstances","Object","keys","moduleName","isInContainer","_openers","every","opener","trigger","includes","remove","readyState"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"footer.js","sources":["../../node_modules/.pnpm/wnumb@1.2.0/node_modules/wnumb/wNumb.js","../../src/components/Footer/constants.ts","../../src/components/Footer/Footer.static.ts","../../src/components/Footer/static.ts","../../src/scripts/lib/moduleFactory.js","../../src/utils/helpers.js"],"sourcesContent":["(function(factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n } else if (typeof exports === \"object\") {\r\n // Node/CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n window.wNumb = factory();\r\n }\r\n})(function() {\r\n \"use strict\";\r\n\r\n var FormatOptions = [\r\n \"decimals\",\r\n \"thousand\",\r\n \"mark\",\r\n \"prefix\",\r\n \"suffix\",\r\n \"encoder\",\r\n \"decoder\",\r\n \"negativeBefore\",\r\n \"negative\",\r\n \"edit\",\r\n \"undo\"\r\n ];\r\n\r\n // General\r\n\r\n // Reverse a string\r\n function strReverse(a) {\r\n return a\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\");\r\n }\r\n\r\n // Check if a string starts with a specified prefix.\r\n function strStartsWith(input, match) {\r\n return input.substring(0, match.length) === match;\r\n }\r\n\r\n // Check is a string ends in a specified suffix.\r\n function strEndsWith(input, match) {\r\n return input.slice(-1 * match.length) === match;\r\n }\r\n\r\n // Throw an error if formatting options are incompatible.\r\n function throwEqualError(F, a, b) {\r\n if ((F[a] || F[b]) && F[a] === F[b]) {\r\n throw new Error(a);\r\n }\r\n }\r\n\r\n // Check if a number is finite and not NaN\r\n function isValidNumber(input) {\r\n return typeof input === \"number\" && isFinite(input);\r\n }\r\n\r\n // Provide rounding-accurate toFixed method.\r\n // Borrowed: http://stackoverflow.com/a/21323330/775265\r\n function toFixed(value, exp) {\r\n value = value.toString().split(\"e\");\r\n value = Math.round(+(value[0] + \"e\" + (value[1] ? +value[1] + exp : exp)));\r\n value = value.toString().split(\"e\");\r\n return (+(value[0] + \"e\" + (value[1] ? +value[1] - exp : -exp))).toFixed(exp);\r\n }\r\n\r\n // Formatting\r\n\r\n // Accept a number as input, output formatted string.\r\n function formatTo(\r\n decimals,\r\n thousand,\r\n mark,\r\n prefix,\r\n suffix,\r\n encoder,\r\n decoder,\r\n negativeBefore,\r\n negative,\r\n edit,\r\n undo,\r\n input\r\n ) {\r\n var originalInput = input,\r\n inputIsNegative,\r\n inputPieces,\r\n inputBase,\r\n inputDecimals = \"\",\r\n output = \"\";\r\n\r\n // Apply user encoder to the input.\r\n // Expected outcome: number.\r\n if (encoder) {\r\n input = encoder(input);\r\n }\r\n\r\n // Stop if no valid number was provided, the number is infinite or NaN.\r\n if (!isValidNumber(input)) {\r\n return false;\r\n }\r\n\r\n // Rounding away decimals might cause a value of -0\r\n // when using very small ranges. Remove those cases.\r\n if (decimals !== false && parseFloat(input.toFixed(decimals)) === 0) {\r\n input = 0;\r\n }\r\n\r\n // Formatting is done on absolute numbers,\r\n // decorated by an optional negative symbol.\r\n if (input < 0) {\r\n inputIsNegative = true;\r\n input = Math.abs(input);\r\n }\r\n\r\n // Reduce the number of decimals to the specified option.\r\n if (decimals !== false) {\r\n input = toFixed(input, decimals);\r\n }\r\n\r\n // Transform the number into a string, so it can be split.\r\n input = input.toString();\r\n\r\n // Break the number on the decimal separator.\r\n if (input.indexOf(\".\") !== -1) {\r\n inputPieces = input.split(\".\");\r\n\r\n inputBase = inputPieces[0];\r\n\r\n if (mark) {\r\n inputDecimals = mark + inputPieces[1];\r\n }\r\n } else {\r\n // If it isn't split, the entire number will do.\r\n inputBase = input;\r\n }\r\n\r\n // Group numbers in sets of three.\r\n if (thousand) {\r\n inputBase = strReverse(inputBase).match(/.{1,3}/g);\r\n inputBase = strReverse(inputBase.join(strReverse(thousand)));\r\n }\r\n\r\n // If the number is negative, prefix with negation symbol.\r\n if (inputIsNegative && negativeBefore) {\r\n output += negativeBefore;\r\n }\r\n\r\n // Prefix the number\r\n if (prefix) {\r\n output += prefix;\r\n }\r\n\r\n // Normal negative option comes after the prefix. Defaults to '-'.\r\n if (inputIsNegative && negative) {\r\n output += negative;\r\n }\r\n\r\n // Append the actual number.\r\n output += inputBase;\r\n output += inputDecimals;\r\n\r\n // Apply the suffix.\r\n if (suffix) {\r\n output += suffix;\r\n }\r\n\r\n // Run the output through a user-specified post-formatter.\r\n if (edit) {\r\n output = edit(output, originalInput);\r\n }\r\n\r\n // All done.\r\n return output;\r\n }\r\n\r\n // Accept a sting as input, output decoded number.\r\n function formatFrom(\r\n decimals,\r\n thousand,\r\n mark,\r\n prefix,\r\n suffix,\r\n encoder,\r\n decoder,\r\n negativeBefore,\r\n negative,\r\n edit,\r\n undo,\r\n input\r\n ) {\r\n var originalInput = input,\r\n inputIsNegative,\r\n output = \"\";\r\n\r\n // User defined pre-decoder. Result must be a non empty string.\r\n if (undo) {\r\n input = undo(input);\r\n }\r\n\r\n // Test the input. Can't be empty.\r\n if (!input || typeof input !== \"string\") {\r\n return false;\r\n }\r\n\r\n // If the string starts with the negativeBefore value: remove it.\r\n // Remember is was there, the number is negative.\r\n if (negativeBefore && strStartsWith(input, negativeBefore)) {\r\n input = input.replace(negativeBefore, \"\");\r\n inputIsNegative = true;\r\n }\r\n\r\n // Repeat the same procedure for the prefix.\r\n if (prefix && strStartsWith(input, prefix)) {\r\n input = input.replace(prefix, \"\");\r\n }\r\n\r\n // And again for negative.\r\n if (negative && strStartsWith(input, negative)) {\r\n input = input.replace(negative, \"\");\r\n inputIsNegative = true;\r\n }\r\n\r\n // Remove the suffix.\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice\r\n if (suffix && strEndsWith(input, suffix)) {\r\n input = input.slice(0, -1 * suffix.length);\r\n }\r\n\r\n // Remove the thousand grouping.\r\n if (thousand) {\r\n input = input.split(thousand).join(\"\");\r\n }\r\n\r\n // Set the decimal separator back to period.\r\n if (mark) {\r\n input = input.replace(mark, \".\");\r\n }\r\n\r\n // Prepend the negative symbol.\r\n if (inputIsNegative) {\r\n output += \"-\";\r\n }\r\n\r\n // Add the number\r\n output += input;\r\n\r\n // Trim all non-numeric characters (allow '.' and '-');\r\n output = output.replace(/[^0-9\\.\\-.]/g, \"\");\r\n\r\n // The value contains no parse-able number.\r\n if (output === \"\") {\r\n return false;\r\n }\r\n\r\n // Covert to number.\r\n output = Number(output);\r\n\r\n // Run the user-specified post-decoder.\r\n if (decoder) {\r\n output = decoder(output);\r\n }\r\n\r\n // Check is the output is valid, otherwise: return false.\r\n if (!isValidNumber(output)) {\r\n return false;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n // Framework\r\n\r\n // Validate formatting options\r\n function validate(inputOptions) {\r\n var i,\r\n optionName,\r\n optionValue,\r\n filteredOptions = {};\r\n\r\n if (inputOptions[\"suffix\"] === undefined) {\r\n inputOptions[\"suffix\"] = inputOptions[\"postfix\"];\r\n }\r\n\r\n for (i = 0; i < FormatOptions.length; i += 1) {\r\n optionName = FormatOptions[i];\r\n optionValue = inputOptions[optionName];\r\n\r\n if (optionValue === undefined) {\r\n // Only default if negativeBefore isn't set.\r\n if (optionName === \"negative\" && !filteredOptions.negativeBefore) {\r\n filteredOptions[optionName] = \"-\";\r\n // Don't set a default for mark when 'thousand' is set.\r\n } else if (optionName === \"mark\" && filteredOptions.thousand !== \".\") {\r\n filteredOptions[optionName] = \".\";\r\n } else {\r\n filteredOptions[optionName] = false;\r\n }\r\n\r\n // Floating points in JS are stable up to 7 decimals.\r\n } else if (optionName === \"decimals\") {\r\n if (optionValue >= 0 && optionValue < 8) {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n\r\n // These options, when provided, must be functions.\r\n } else if (\r\n optionName === \"encoder\" ||\r\n optionName === \"decoder\" ||\r\n optionName === \"edit\" ||\r\n optionName === \"undo\"\r\n ) {\r\n if (typeof optionValue === \"function\") {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n\r\n // Other options are strings.\r\n } else {\r\n if (typeof optionValue === \"string\") {\r\n filteredOptions[optionName] = optionValue;\r\n } else {\r\n throw new Error(optionName);\r\n }\r\n }\r\n }\r\n\r\n // Some values can't be extracted from a\r\n // string if certain combinations are present.\r\n throwEqualError(filteredOptions, \"mark\", \"thousand\");\r\n throwEqualError(filteredOptions, \"prefix\", \"negative\");\r\n throwEqualError(filteredOptions, \"prefix\", \"negativeBefore\");\r\n\r\n return filteredOptions;\r\n }\r\n\r\n // Pass all options as function arguments\r\n function passAll(options, method, input) {\r\n var i,\r\n args = [];\r\n\r\n // Add all options in order of FormatOptions\r\n for (i = 0; i < FormatOptions.length; i += 1) {\r\n args.push(options[FormatOptions[i]]);\r\n }\r\n\r\n // Append the input, then call the method, presenting all\r\n // options as arguments.\r\n args.push(input);\r\n return method.apply(\"\", args);\r\n }\r\n\r\n function wNumb(options) {\r\n if (!(this instanceof wNumb)) {\r\n return new wNumb(options);\r\n }\r\n\r\n if (typeof options !== \"object\") {\r\n return;\r\n }\r\n\r\n options = validate(options);\r\n\r\n // Call 'formatTo' with proper arguments.\r\n this.to = function(input) {\r\n return passAll(options, formatTo, input);\r\n };\r\n\r\n // Call 'formatFrom' with proper arguments.\r\n this.from = function(input) {\r\n return passAll(options, formatFrom, input);\r\n };\r\n }\r\n\r\n return wNumb;\r\n});\r\n","export const CLASS_ROOT = \"footer\";\n\nexport const CLASS_CONTAINER = `${CLASS_ROOT}__container`;\nexport const CLASS_LOGO = `${CLASS_ROOT}__logo`;\nexport const CLASS_TITLE = `${CLASS_ROOT}__title`;\nexport const CLASS_LIST = `${CLASS_ROOT}__list`;\nexport const CLASS_LIST_SPACE_SMALL = `${CLASS_ROOT}__list--space-small`;\nexport const CLASS_LIST_INLINE = `${CLASS_ROOT}__list--inline`;\nexport const CLASS_LIST_STACK_SM_DOWN = `${CLASS_ROOT}__list--stack-sm-down`;\nexport const CLASS_LIST_BREAK_SM_DOWN = `${CLASS_ROOT}__list-break--sm-down`;\nexport const CLASS_LIST_ITEM_LEAD = `${CLASS_ROOT}__list-item--lead`;\nexport const CLASS_BOTTOM = `${CLASS_ROOT}__bottom`;\nexport const CLASS_BOTTOM_COPYRIGHT = `${CLASS_ROOT}__bottom-copyright`;\nexport const CLASS_MENU = `${CLASS_ROOT}__menu`;\nexport const CLASS_MENU_SECTION = `${CLASS_ROOT}__menu-section`;\nexport const CLASS_BAR = `${CLASS_ROOT}__bar`;\nexport const CLASS_MB_LARGE = `${CLASS_ROOT}--mb-xlarge`;\nexport const CLASS_ACCORDION_TOGGLE = `${CLASS_ROOT}__accordion-toggle`;\nexport const CLASS_ACCORDION_ICON = `${CLASS_ROOT}__accordion-icon`;\nexport const CLASS_DIVIDER = `${CLASS_ROOT}__divider`;\nexport const CLASS_DIVIDER_HIDE_XS_DOWN = `${CLASS_DIVIDER}--hide-xs-down`;\n","import { CLASS_ACCORDION_TOGGLE, CLASS_MENU_SECTION } from \"./constants\";\n\nconst MOBILE_MEDIA_QUERY = \"(max-width: 479.98px)\";\n\ninterface FooterSection {\n element: HTMLElement;\n toggle: HTMLButtonElement | null;\n panel: HTMLElement | null;\n}\n\nexport default class Footer {\n element!: HTMLElement;\n sections!: FooterSection[];\n mediaQueryList!: MediaQueryList;\n onToggleClick!: (event: Event) => void;\n onMediaQueryChange!: () => void;\n\n constructor(element: HTMLElement) {\n if ((element as any).ODS_Footer) {\n return (element as any).ODS_Footer;\n }\n\n this.element = element;\n this.sections = [];\n this.mediaQueryList = window.matchMedia(MOBILE_MEDIA_QUERY);\n\n this.onToggleClick = this.handleToggleClick.bind(this);\n this.onMediaQueryChange = this.syncViewportState.bind(this);\n\n (this.element as any).ODS_Footer = this;\n\n this.init();\n return this;\n }\n\n static getInstance(el: HTMLElement): Footer | null {\n return el && (el as any).ODS_Footer ? (el as any).ODS_Footer : null;\n }\n\n init(): void {\n this.sections = Array.from(\n this.element.querySelectorAll(\n `[data-footer-section].${CLASS_MENU_SECTION}`,\n ),\n ).map((section) => {\n const toggle = section.querySelector(\n `.${CLASS_ACCORDION_TOGGLE}`,\n ) as HTMLButtonElement | null;\n const panelId = toggle?.getAttribute(\"aria-controls\");\n const panel = panelId\n ? (this.element.querySelector(`#${panelId}`) as HTMLElement | null)\n : null;\n\n if (toggle) {\n toggle.addEventListener(\"click\", this.onToggleClick);\n }\n\n return {\n element: section as HTMLElement,\n toggle,\n panel,\n };\n });\n\n this.mediaQueryList.addEventListener(\"change\", this.onMediaQueryChange);\n\n this.syncViewportState();\n }\n\n private setSectionState(section: FooterSection, isExpanded: boolean): void {\n if (!section.toggle || !section.panel) return;\n\n section.toggle.setAttribute(\"aria-expanded\", String(isExpanded));\n section.panel.hidden = !isExpanded;\n }\n\n private syncViewportState(): void {\n const isMobile = this.mediaQueryList.matches;\n\n this.sections.forEach((section, index) => {\n if (!section.toggle || !section.panel) return;\n\n if (!isMobile) {\n this.setSectionState(section, true);\n section.element.removeAttribute(\"data-footer-mobile-initialized\");\n return;\n }\n\n const isInitialized =\n section.element.getAttribute(\"data-footer-mobile-initialized\") ===\n \"true\";\n\n if (!isInitialized) {\n this.setSectionState(section, index === 0);\n section.element.setAttribute(\"data-footer-mobile-initialized\", \"true\");\n return;\n }\n\n const isExpanded =\n section.toggle.getAttribute(\"aria-expanded\") === \"true\";\n this.setSectionState(section, isExpanded);\n });\n }\n\n private handleToggleClick(event: Event): void {\n if (!this.mediaQueryList.matches) return;\n\n const toggle = event.currentTarget as HTMLButtonElement;\n const section = this.sections.find((item) => item.toggle === toggle);\n\n if (!section || !section.toggle) return;\n\n const isExpanded = section.toggle.getAttribute(\"aria-expanded\") === \"true\";\n this.setSectionState(section, !isExpanded);\n }\n\n destroy(): void {\n this.sections.forEach((section) => {\n if (!section.toggle) return;\n section.toggle.removeEventListener(\"click\", this.onToggleClick);\n });\n\n this.mediaQueryList.removeEventListener(\"change\", this.onMediaQueryChange);\n }\n\n update(): void {\n this.destroy();\n this.init();\n }\n}\n","import moduleFactory, {\n destroyModulesWithin,\n initModulesWithin,\n} from \"../../scripts/lib/moduleFactory\";\nimport Footer from \"./Footer.static\";\nimport \"./styles/style.scss\";\n\nexport const customFooterModuleSelectorPairs = [\n {\n Module: Footer,\n name: \"Footer\",\n selector: \"[data-footer]\",\n },\n];\n\ndeclare global {\n interface Window {\n ODSFooter: {\n Footer: typeof Footer;\n instances: Footer[];\n init: () => void;\n destroy: () => void;\n initModulesWithin: (container: any) => {};\n destroyModulesWithin: (\n container: any,\n removeOrphanedNodes?: boolean | undefined,\n ) => {};\n };\n }\n}\n\nwindow.ODSFooter = window.ODSFooter || {\n Footer,\n instances: [],\n init: () => {\n window.ODSFooter.instances = moduleFactory(Footer, \"[data-footer]\");\n },\n destroy: () => {\n window.ODSFooter.instances.forEach((instance) => {\n if (instance && typeof instance.destroy === \"function\") {\n instance.destroy();\n }\n });\n window.ODSFooter.instances = [];\n },\n initModulesWithin,\n destroyModulesWithin,\n};\n\nif (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => {\n window.ODSFooter.init();\n });\n} else {\n window.ODSFooter.init();\n}\n\nexport { Footer };\nexport default Footer;\n","import { lowerCamelCase } from \"../../utils/helpers\";\n\nexport default function moduleFactory(Module, selector, options = {}) {\n const elements = Array.from(document.querySelectorAll(selector));\n\n return elements.map((element) => new Module(element, options));\n}\n\nexport function destroyModulesWithin(container, removeOrphanedNodes = false) {\n const destroyedInstances = {};\n\n Object.keys(window.ODS.instances).forEach((moduleName) => {\n window.ODS.instances[moduleName].forEach((instance) => {\n if (typeof destroyedInstances[moduleName] !== \"object\") {\n destroyedInstances[moduleName] = [];\n }\n\n let isInContainer = container.contains(instance.element);\n if (moduleName === \"modal\") {\n isInContainer = instance.instance?._openers.every((opener) =>\n container.contains(opener),\n );\n } else if (moduleName === \"tooltip\") {\n isInContainer = container.contains(instance.trigger);\n }\n\n if (isInContainer) {\n instance.destroy();\n destroyedInstances[moduleName].push(instance);\n }\n\n if (\n isInContainer &&\n removeOrphanedNodes &&\n [\"modal\", \"tooltip\"].includes(moduleName)\n ) {\n instance.element.remove();\n }\n });\n\n window.ODS.instances[moduleName] = window.ODS.instances[moduleName].filter(\n (instance) => !destroyedInstances[moduleName].includes(instance),\n );\n });\n\n return destroyedInstances;\n}\n\nexport function initModulesWithin(container) {\n const instances = {};\n window.ODS.moduleSelectorPairs.forEach((module) => {\n const name = lowerCamelCase(module.name);\n const elements = Array.from(container.querySelectorAll(module.selector));\n\n // Filter out elements that already have an instance (e.g., initialized by React)\n const instancePropertyName = `ODS_${module.name}`;\n const uninitializedElements = elements.filter(\n (element) => !element[instancePropertyName],\n );\n\n if (window && window.ODS && window.ODS.instances[name]) {\n // Also clean up instances from elements that are no longer in the document\n window.ODS.instances[name] = window.ODS.instances[name].filter(\n (instance) => {\n const isInDocument = document.contains(instance.element);\n if (!isInDocument) {\n // Clean up the instance if its element is no longer in the document\n instance.destroy?.();\n }\n return isInDocument;\n },\n );\n\n window.ODS.instances[name].forEach((instance) => {\n uninitializedElements.forEach((element, index) => {\n if (element.isSameNode(instance.element)) {\n uninitializedElements.splice(index, 1);\n }\n });\n });\n }\n if (uninitializedElements.length) {\n if (!Array.isArray(window.ODS.instances[name])) {\n window.ODS.instances[name] = [];\n }\n instances[name] = uninitializedElements.map(\n (element) => new module.Module(element),\n );\n window.ODS.instances[name] = [\n ...window.ODS.instances[name],\n ...instances[name],\n ];\n }\n });\n return instances;\n}\n","import wnumb from \"wnumb\";\n\nexport function isObject(val) {\n return val != null && typeof val === \"object\" && Array.isArray(val) === false;\n}\n\nexport function dateToYYYYMMDD(date) {\n if (!date || !(date instanceof Date)) {\n return \"\";\n }\n\n return `${date.getFullYear()}-${(date.getMonth() + 1)\n .toString()\n .padStart(2, \"0\")}-${date.getDate().toString().padStart(2, \"0\")}`;\n}\n\n// Get element position relative to document\nexport function windowOffset(el) {\n const position = { x: 0, y: 0 };\n\n if (el.offsetParent) {\n do {\n position.x += el.offsetLeft;\n position.y += el.offsetTop;\n } while ((el = el.offsetParent));\n }\n\n return position;\n}\n\n// Get element siblings\nexport function getSiblings(el) {\n if (!(el instanceof Element)) {\n return false;\n }\n\n const parent = el.parentNode;\n if (!parent) {\n return false;\n }\n\n const parentChildren = [];\n const siblings = [];\n\n parentChildren.push.apply(parentChildren, parent.children);\n\n for (let i = 0, l = parentChildren.length; i < l; i += 1) {\n if (parentChildren[i] !== el) {\n siblings.push(parentChildren[i]);\n }\n }\n\n return siblings;\n}\n\n/**\n * Converts object to string\n *\n * Should be able to handle all types\n * objectToString({\n * 'boolean': true,\n * 'function': () => { return 'test'; },\n * 'namedfunction': function test() { return 'test'; },\n * 'null': null,\n * 'number1': 1,\n * 'number2': 2.345,\n * 'object1': { test: 'test' },\n * 'string': 'String',\n * 'undefined' : undefined,\n * })\n *\n * @param {object} object object to convert\n * @returns object converted to string\n */\nexport const objectToString = (object, spaceCount = 2) => {\n let str = \"\";\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n let value = object?.[key];\n if (typeof value === \"string\") {\n value = `\"${value}\"`;\n } else if (value === null) {\n value = \"null\";\n } else if (typeof value === \"object\") {\n value = objectToString(value, spaceCount + 2);\n } else if (typeof value === \"function\") {\n value = value.toString();\n } else if (value === undefined) {\n value = \"undefined\";\n }\n str += `${\" \".repeat(spaceCount)}${key}: ${value},\\n`;\n }\n }\n return `{\\n${str}${\" \".repeat(spaceCount - 2)}}`;\n};\nexport function capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function lowerCamelCase(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\nconst defaultPriceFormat = {\n decimals: 2,\n mark: \",\",\n thousand: \" \",\n suffix: `\\xa0€`,\n};\n\nexport function formatPrice(price, format) {\n return wnumb({\n ...defaultPriceFormat,\n ...format,\n ...(price % 1 === 0 ? { decimals: 0 } : {}), // integers without decimals\n }).to(price);\n}\n"],"names":["exports","FormatOptions","strReverse","a","split","reverse","join","strStartsWith","input","match","substring","length","strEndsWith","slice","throwEqualError","F","b","Error","isValidNumber","isFinite","toFixed","value","exp","toString","Math","round","formatTo","decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo","inputIsNegative","inputPieces","inputBase","originalInput","inputDecimals","output","parseFloat","abs","indexOf","formatFrom","replace","Number","validate","inputOptions","i","optionName","optionValue","filteredOptions","undefined","passAll","options","method","args","push","apply","wNumb","this","to","from","factory","CLASS_ROOT","CLASS_MENU_SECTION","CLASS_ACCORDION_TOGGLE","Footer","element","sections","mediaQueryList","onToggleClick","onMediaQueryChange","constructor","ODS_Footer","window","matchMedia","handleToggleClick","bind","syncViewportState","init","getInstance","el","Array","querySelectorAll","map","section","toggle","querySelector","panelId","getAttribute","panel","addEventListener","setSectionState","isExpanded","setAttribute","String","hidden","isMobile","matches","forEach","index","removeAttribute","event","currentTarget","find","item","destroy","removeEventListener","update","customFooterModuleSelectorPairs","Module","name","selector","ODSFooter","instances","document","moduleFactory","instance","initModulesWithin","container","ODS","moduleSelectorPairs","module","string","charAt","toLowerCase","elements","instancePropertyName","uninitializedElements","filter","isInDocument","contains","isSameNode","splice","isArray","destroyModulesWithin","removeOrphanedNodes","destroyedInstances","Object","keys","moduleName","isInContainer","_openers","every","opener","trigger","includes","remove","readyState"],"mappings":"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","x_google_ignoreList":[0]}
|
package/build/lib/megamenu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t={exports:{}};e||(e=1,t.exports=function(){var e=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function t(e){return e.split("").reverse().join("")}function n(e,t){return e.substring(0,t.length)===t}function s(e,t){return e.slice(-1*t.length)===t}function i(e,t,n){if((e[t]||e[n])&&e[t]===e[n])throw new Error(t)}function o(e){return"number"==typeof e&&isFinite(e)}function l(e,t){return e=e.toString().split("e"),(+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]-t:-t))).toFixed(t)}function r(e,n,s,i,r,a,c,d,h,u,m,g){var f,b,v,y=g,p="",w="";return a&&(g=a(g)),!!o(g)&&(!1!==e&&0===parseFloat(g.toFixed(e))&&(g=0),g<0&&(f=!0,g=Math.abs(g)),!1!==e&&(g=l(g,e)),-1!==(g=g.toString()).indexOf(".")?(v=(b=g.split("."))[0],s&&(p=s+b[1])):v=g,n&&(v=t(v).match(/.{1,3}/g),v=t(v.join(t(n)))),f&&d&&(w+=d),i&&(w+=i),f&&h&&(w+=h),w+=v,w+=p,r&&(w+=r),u&&(w=u(w,y)),w)}function a(e,t,i,l,r,a,c,d,h,u,m,g){var f,b="";return m&&(g=m(g)),!(!g||"string"!=typeof g)&&(d&&n(g,d)&&(g=g.replace(d,""),f=!0),l&&n(g,l)&&(g=g.replace(l,"")),h&&n(g,h)&&(g=g.replace(h,""),f=!0),r&&s(g,r)&&(g=g.slice(0,-1*r.length)),t&&(g=g.split(t).join("")),i&&(g=g.replace(i,".")),f&&(b+="-"),""!==(b=(b+=g).replace(/[^0-9\.\-.]/g,""))&&(b=Number(b),c&&(b=c(b)),!!o(b)&&b))}function c(t){var n,s,o,l={};for(void 0===t.suffix&&(t.suffix=t.postfix),n=0;n<e.length;n+=1)if(void 0===(o=t[s=e[n]]))"negative"!==s||l.negativeBefore?"mark"===s&&"."!==l.thousand?l[s]=".":l[s]=!1:l[s]="-";else if("decimals"===s){if(!(o>=0&&o<8))throw new Error(s);l[s]=o}else if("encoder"===s||"decoder"===s||"edit"===s||"undo"===s){if("function"!=typeof o)throw new Error(s);l[s]=o}else{if("string"!=typeof o)throw new Error(s);l[s]=o}return i(l,"mark","thousand"),i(l,"prefix","negative"),i(l,"prefix","negativeBefore"),l}function d(t,n,s){var i,o=[];for(i=0;i<e.length;i+=1)o.push(t[e[i]]);return o.push(s),n.apply("",o)}function h(e){if(!(this instanceof h))return new h(e);"object"==typeof e&&(e=c(e),this.to=function(t){return d(e,r,t)},this.from=function(t){return d(e,a,t)})}return h}());const n="megamenu",s=`${n}__nav-button`,i=`${n}__nav-dropdown`,o=`${n}__overlay`,l=`${n}--hide-lg-up`,r=`${n}__mobile`,a=`${n}__mobile-overlay`,c=`${n}__accordion-button`,d=`${n}__accordion-icon`,h={dataToggle:"data-toggle",activeClass:"is-active",removeOnDestroy:!1};class u{isModalOpen(){return document.body.classList.contains("has-modal")}getLockedScrollTop(){const e=document.body.getAttribute("data-lock-scrolltop"),t=Number.parseInt(e||"",10);return Number.isFinite(t)?t:null}getEffectiveScrollY(){return this.isModalOpen()?this.getLockedScrollTop()??window.scrollY:window.scrollY}constructor(e,t={}){return e.ODS_Megamenu?e.ODS_Megamenu:(this.element=e,this.config={...h,...t},this.handleToggleClick=this.handleToggleClick.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleScroll=this.handleScroll.bind(this),this.handleAccordionClick=this.handleAccordionClick.bind(this),this.handleArrowNavigation=this.handleArrowNavigation.bind(this),this.trapFocus=this.trapFocus.bind(this),this.handleMobileMenuToggle=this.handleMobileMenuToggle.bind(this),this.desktopOverlayClickHandler=()=>this.closeAllDropdowns(),this.mobileCloseHandler=e=>{e.preventDefault(),this.closeMobileMenu()},this.element.ODS_Megamenu=this,this.init(),this)}static getInstance(e){return e&&e.ODS_Megamenu?e.ODS_Megamenu:null}init(){this.toggleButtons=this.element.querySelectorAll(`.${s}[aria-controls]`),this.dropdowns=this.element.querySelectorAll(`.${i}`),this.instanceName=this.element.getAttribute("data-megamenu-name")||this.element.id||"",this.mobilePanels=Array.from(this.element.querySelectorAll(`.${r}`)),this.activeMobilePanel=null,this.activeMobileTarget=null,this.focusTrapElement=null;const e=Array.from(this.element.querySelectorAll(`[data-megamenu-mobile-toggle], .${l} button`)),t=Array.from(document.querySelectorAll("[data-megamenu-mobile-toggle]"));this.mobileMenuButtons=Array.from(new Set([...e,...t])).filter(e=>this.shouldUseMobileTrigger(e)),this.mobileCloseButtons=Array.from(this.element.querySelectorAll(`.${a}, [data-megamenu-close-button]`)),this.mobilePanels.forEach(e=>{e.setAttribute("aria-hidden","true")}),this.syncMobileButtonState(),this.desktopOverlay=this.element.querySelector(`.${o}`),this.accordionButtons=this.element.querySelectorAll(`.${c}`),this.toggleButtons.forEach(e=>{e.addEventListener("click",this.handleToggleClick)}),this.mobileMenuButtons.forEach(e=>{e.addEventListener("click",this.handleMobileMenuToggle)}),this.mobileCloseButtons.forEach(e=>{e.addEventListener("click",this.mobileCloseHandler)}),this.desktopOverlay&&this.desktopOverlay.addEventListener("click",this.desktopOverlayClickHandler),this.accordionButtons.forEach(e=>{e.addEventListener("click",this.handleAccordionClick)}),this.element.addEventListener("keydown",this.handleKeyPress),window.addEventListener("scroll",this.handleScroll),this.isKeyboardUser=!1,this.keydownHandler=e=>{"Tab"!==e.key&&" "!==e.key&&"Enter"!==e.key||(this.isKeyboardUser=!0)},this.mousedownHandler=()=>{this.isKeyboardUser=!1},this.touchstartHandler=()=>{this.isKeyboardUser=!1},this.element.addEventListener("keydown",this.keydownHandler),this.element.addEventListener("mousedown",this.mousedownHandler),this.element.addEventListener("touchstart",this.touchstartHandler),this.updateTabIndices(),this.handleScroll()}shouldUseMobileTrigger(e){if(this.element.contains(e))return!0;const t=e.getAttribute("data-megamenu-mobile-for");if(!t){const e=document.querySelectorAll("[data-megamenu]");return 1===e.length&&e[0]===this.element}return!!this.instanceName&&t===this.instanceName}getDefaultMobileTarget(){const e=this.mobilePanels[0];return e?.getAttribute("data-megamenu-mobile-panel")||"main"}getTargetFromElement(e){return e?.getAttribute("data-megamenu-mobile-target")||this.getDefaultMobileTarget()}getPanelByTarget(e){const t=this.mobilePanels.find(t=>t.getAttribute("data-megamenu-mobile-panel")===e);return t||(e===this.getDefaultMobileTarget()&&1===this.mobilePanels.length?this.mobilePanels[0]:null)}syncMobileButtonState(){this.mobileMenuButtons.forEach(e=>{const t=this.getTargetFromElement(e),n=this.activeMobileTarget===t;e.setAttribute("aria-expanded",n?"true":"false"),e.classList.toggle(this.config.activeClass,n)})}isInMobilePanel(e){return Boolean(e&&this.mobilePanels.some(t=>t.contains(e)))}getFocusRestoreTarget(){const e=this.lastFocusedElement;if(e&&e.isConnected&&!this.isInMobilePanel(e))return e;const t=this.activeMobileTarget;if(t){const e=this.mobileMenuButtons.find(e=>this.getTargetFromElement(e)===t&&!this.isInMobilePanel(e));if(e)return e}return this.mobileMenuButtons.find(e=>!this.isInMobilePanel(e))||null}setMobilePanelState(e,t){e.classList.toggle(this.config.activeClass,t),e.setAttribute("aria-hidden",t?"false":"true")}handleToggleClick(e){const t=e.currentTarget,n=t.classList.contains(this.config.activeClass);this.closeAllDropdowns(),n?t.focus():this.openDropdown(t)}handleKeyPress(e){if("Escape"===e.key){const e=Array.from(this.toggleButtons).find(e=>"true"===e.getAttribute("aria-expanded"));this.closeAllDropdowns(),this.closeMobileMenu(),this.closeAllAccordions(),e&&e.focus()}if("Enter"===e.key||" "===e.key){const t=e.target;("BUTTON"===t.tagName&&t.hasAttribute("aria-controls")||t.classList.contains(c))&&(e.preventDefault(),t.click())}if("Home"===e.key||"End"===e.key){const t=e.target?.closest(`.${i}`);if(t){e.preventDefault();const n=Array.from(t.querySelectorAll('a, button, [tabindex]:not([tabindex="-1"])'));"Home"===e.key&&n.length>0?n[0].focus():"End"===e.key&&n.length>0&&n[n.length-1].focus()}}if("ArrowDown"===e.key){const t=e.target;if("BUTTON"===t.tagName&&t.hasAttribute("aria-controls")){if("true"===t.getAttribute("aria-expanded")){e.preventDefault();const n=t.parentElement?.querySelector(`.${i}`),s=n?.querySelector("a, button");s&&s.focus()}}else{const n=t.closest(`.${i}`);n&&(e.preventDefault(),this.handleArrowNavigation(e,n))}}if("ArrowUp"===e.key){const t=e.target?.closest(`.${i}`);t&&(e.preventDefault(),this.handleArrowNavigation(e,t))}}handleAccordionClick(e){const t=e.currentTarget,n="true"===t.getAttribute("aria-expanded");this.closeAllAccordions(),n||this.openAccordion(t)}handleScroll(){const e=this.element.querySelector('[data-hide-when-sticky="true"]'),t=Boolean(this.element.querySelector("[data-megamenu-brand-mark]")),n=this.getEffectiveScrollY()>(e?.offsetHeight||15),s=this.element.classList.contains("top-hidden");e?n&&!s?(e.classList.add("is-hidden"),this.element.classList.add("top-hidden")):!n&&s&&(e.classList.remove("is-hidden"),this.element.classList.remove("top-hidden")):!this.element.classList.contains("non-sticky")&&t&&this.element.classList.toggle("top-hidden",n)}openDropdown(e){const t=e.parentElement?.querySelector(`.${i}`);t&&(e.classList.add(this.config.activeClass),e.setAttribute("aria-expanded","true"),t.style.display="block",t.classList.add("is-visible"),this.showDesktopOverlay(),this.updateTabIndices())}closeDropdown(e){const t=e.parentElement?.querySelector(`.${i}`);t&&(e.classList.remove(this.config.activeClass),e.setAttribute("aria-expanded","false"),t.classList.remove("is-visible"),t.style.display="none",this.updateTabIndices())}closeAllDropdowns(){this.toggleButtons.forEach(e=>{this.closeDropdown(e)}),this.hideDesktopOverlay()}handleMobileMenuToggle(e){e.preventDefault();const t=e.currentTarget,n=this.getTargetFromElement(t),s=this.getPanelByTarget(n);s&&(this.activeMobileTarget===n&&s.classList.contains(this.config.activeClass)?this.closeMobileMenu():this.openMobileMenu(n,t))}openMobileMenu(e=this.getDefaultMobileTarget(),t){const n=this.getPanelByTarget(e);if(!n)return;this.lastFocusedElement=t||document.activeElement;const s=document.activeElement;if(s&&s!==n&&this.mobilePanels.some(e=>e!==n&&e.contains(s))&&s.blur(),this.mobilePanels.forEach(e=>{this.setMobilePanelState(e,e===n)}),this.activeMobilePanel=n,this.activeMobileTarget=e,this.syncMobileButtonState(),document.body.style.overflow="hidden",this.removeFocusTrap(),this.trapFocus(n),this.isKeyboardUser){const e=n.querySelector("button, a");e&&setTimeout(()=>e.focus(),50)}this.updateTabIndices()}closeMobileMenu(){if(!this.activeMobilePanel)return;const e=this.getFocusRestoreTarget();e?e.focus():document.activeElement?.blur?.(),this.mobilePanels.forEach(e=>{this.setMobilePanelState(e,!1)}),document.body.style.overflow="",this.closeAllAccordions(),this.removeFocusTrap(),this.activeMobilePanel=null,this.activeMobileTarget=null,this.lastFocusedElement=null,this.syncMobileButtonState(),this.updateTabIndices()}showDesktopOverlay(){this.desktopOverlay&&this.desktopOverlay.classList.add(this.config.activeClass)}hideDesktopOverlay(){this.desktopOverlay&&this.desktopOverlay.classList.remove(this.config.activeClass)}openAccordion(e){const t=e.getAttribute("aria-controls"),n=t?this.element.querySelector(`#${t}`):null,s=e.querySelector(`.${d}`);n&&(e.setAttribute("aria-expanded","true"),e.classList.add(this.config.activeClass),n.classList.add("is-visible"),n.style.display="block",s&&s.classList.add(this.config.activeClass))}closeAccordion(e){const t=e.getAttribute("aria-controls"),n=t?this.element.querySelector(`#${t}`):null,s=e.querySelector(`.${d}`);n&&(e.setAttribute("aria-expanded","false"),e.classList.remove(this.config.activeClass),n.classList.remove("is-visible"),n.style.display="none",s&&s.classList.remove(this.config.activeClass))}closeAllAccordions(){this.accordionButtons.forEach(e=>{this.closeAccordion(e)})}handleArrowNavigation(e,t){const n=Array.from(t.querySelectorAll('a, button, [tabindex]:not([tabindex="-1"])'));if(0===n.length)return;const s=n.findIndex(t=>t===e.target);let i;if("ArrowDown"===e.key)i=s<n.length-1?s+1:0;else{if("ArrowUp"!==e.key)return;i=s>0?s-1:n.length-1}i>=0&&i<n.length&&n[i]&&n[i].focus()}trapFocus(e){const t=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),n=t[0],s=t[t.length-1];this.focusTrapHandler=e=>{"Tab"===e.key&&(e.shiftKey?document.activeElement===n&&(e.preventDefault(),s.focus()):document.activeElement===s&&(e.preventDefault(),n.focus()))},this.focusTrapElement=e,e.addEventListener("keydown",this.focusTrapHandler)}removeFocusTrap(){this.focusTrapElement&&this.focusTrapHandler&&(this.focusTrapElement.removeEventListener("keydown",this.focusTrapHandler),this.focusTrapElement=null)}updateTabIndices(){this.dropdowns.forEach(e=>{const t=e.classList.contains("is-visible");e.querySelectorAll("a, button, [tabindex]:not([tabindex='-1'])").forEach(e=>{const n=t;n&&-1===e.tabIndex?e.tabIndex=0:n||-1===e.tabIndex||(e.tabIndex=-1)})}),this.mobilePanels.forEach(e=>{const t=e.classList.contains(this.config.activeClass);e.querySelectorAll("a, button, [tabindex]:not([tabindex='-1'])").forEach(e=>{e.tabIndex=t?0:-1})})}destroy(){this.toggleButtons.forEach(e=>{e.removeEventListener("click",this.handleToggleClick)}),this.mobileMenuButtons.forEach(e=>{e.removeEventListener("click",this.handleMobileMenuToggle)}),this.mobileCloseButtons.forEach(e=>{e.removeEventListener("click",this.mobileCloseHandler)}),this.desktopOverlay&&this.desktopOverlay.removeEventListener("click",this.desktopOverlayClickHandler),this.accordionButtons.forEach(e=>{e.removeEventListener("click",this.handleAccordionClick)}),this.element.removeEventListener("keydown",this.handleKeyPress),window.removeEventListener("scroll",this.handleScroll),this.element.removeEventListener("keydown",this.keydownHandler),this.element.removeEventListener("mousedown",this.mousedownHandler),this.element.removeEventListener("touchstart",this.touchstartHandler),document.body.style.overflow="",this.removeFocusTrap(),this.element.ODS_Megamenu=null,this.config.removeOnDestroy&&this.element.remove()}}const m=[{Module:u,name:"Megamenu",selector:"[data-megamenu]"}];window.ODSMegamenu=window.ODSMegamenu||{Megamenu:u,instances:[],init:()=>{window.ODSMegamenu.instances=function(e,t,n={}){return Array.from(document.querySelectorAll(t)).map(t=>new e(t,n))}(u,"[data-megamenu]")},destroy:()=>{window.ODSMegamenu.instances.forEach(e=>{e&&"function"==typeof e.destroy&&e.destroy()}),window.ODSMegamenu.instances=[]},initModulesWithin:function(e){const t={};return window.ODS.moduleSelectorPairs.forEach(n=>{const s=(i=n.name).charAt(0).toLowerCase()+i.slice(1);var i;const o=Array.from(e.querySelectorAll(n.selector)),l=`ODS_${n.name}`,r=o.filter(e=>!e[l]);window&&window.ODS&&window.ODS.instances[s]&&(window.ODS.instances[s]=window.ODS.instances[s].filter(e=>{const t=document.contains(e.element);return t||e.destroy?.(),t}),window.ODS.instances[s].forEach(e=>{r.forEach((t,n)=>{t.isSameNode(e.element)&&r.splice(n,1)})})),r.length&&(Array.isArray(window.ODS.instances[s])||(window.ODS.instances[s]=[]),t[s]=r.map(e=>new n.Module(e)),window.ODS.instances[s]=[...window.ODS.instances[s],...t[s]])}),t},destroyModulesWithin:function(e,t=!1){const n={};return Object.keys(window.ODS.instances).forEach(s=>{window.ODS.instances[s].forEach(i=>{"object"!=typeof n[s]&&(n[s]=[]);let o=e.contains(i.element);"modal"===s?o=i.instance?._openers.every(t=>e.contains(t)):"tooltip"===s&&(o=e.contains(i.trigger)),o&&(i.destroy(),n[s].push(i)),o&&t&&["modal","tooltip"].includes(s)&&i.element.remove()}),window.ODS.instances[s]=window.ODS.instances[s].filter(e=>!n[s].includes(e))}),n}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{window.ODSMegamenu.init()}):window.ODSMegamenu.init();export{u as Megamenu,m as customMegamenuModuleSelectorPairs,u as default};
|
|
1
|
+
var e,t={exports:{}};e||(e=1,t.exports=function(){var e=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function t(e){return e.split("").reverse().join("")}function n(e,t){return e.substring(0,t.length)===t}function s(e,t){return e.slice(-1*t.length)===t}function i(e,t,n){if((e[t]||e[n])&&e[t]===e[n])throw new Error(t)}function o(e){return"number"==typeof e&&isFinite(e)}function l(e,t){return e=e.toString().split("e"),(+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]-t:-t))).toFixed(t)}function a(e,n,s,i,a,r,c,d,h,u,m,g){var f,b,v,y=g,p="",w="";return r&&(g=r(g)),!!o(g)&&(!1!==e&&0===parseFloat(g.toFixed(e))&&(g=0),g<0&&(f=!0,g=Math.abs(g)),!1!==e&&(g=l(g,e)),-1!==(g=g.toString()).indexOf(".")?(v=(b=g.split("."))[0],s&&(p=s+b[1])):v=g,n&&(v=t(v).match(/.{1,3}/g),v=t(v.join(t(n)))),f&&d&&(w+=d),i&&(w+=i),f&&h&&(w+=h),w+=v,w+=p,a&&(w+=a),u&&(w=u(w,y)),w)}function r(e,t,i,l,a,r,c,d,h,u,m,g){var f,b="";return m&&(g=m(g)),!(!g||"string"!=typeof g)&&(d&&n(g,d)&&(g=g.replace(d,""),f=!0),l&&n(g,l)&&(g=g.replace(l,"")),h&&n(g,h)&&(g=g.replace(h,""),f=!0),a&&s(g,a)&&(g=g.slice(0,-1*a.length)),t&&(g=g.split(t).join("")),i&&(g=g.replace(i,".")),f&&(b+="-"),""!==(b=(b+=g).replace(/[^0-9\.\-.]/g,""))&&(b=Number(b),c&&(b=c(b)),!!o(b)&&b))}function c(t){var n,s,o,l={};for(void 0===t.suffix&&(t.suffix=t.postfix),n=0;n<e.length;n+=1)if(void 0===(o=t[s=e[n]]))"negative"!==s||l.negativeBefore?"mark"===s&&"."!==l.thousand?l[s]=".":l[s]=!1:l[s]="-";else if("decimals"===s){if(!(o>=0&&o<8))throw new Error(s);l[s]=o}else if("encoder"===s||"decoder"===s||"edit"===s||"undo"===s){if("function"!=typeof o)throw new Error(s);l[s]=o}else{if("string"!=typeof o)throw new Error(s);l[s]=o}return i(l,"mark","thousand"),i(l,"prefix","negative"),i(l,"prefix","negativeBefore"),l}function d(t,n,s){var i,o=[];for(i=0;i<e.length;i+=1)o.push(t[e[i]]);return o.push(s),n.apply("",o)}function h(e){if(!(this instanceof h))return new h(e);"object"==typeof e&&(e=c(e),this.to=function(t){return d(e,a,t)},this.from=function(t){return d(e,r,t)})}return h}());const n="megamenu",s=`${n}__nav-button`,i=`${n}__nav-dropdown`,o=`${n}__overlay`,l=`${n}--hide-lg-up`,a=`${n}__mobile`,r=`${n}__mobile-overlay`,c=`${n}__accordion-button`,d=`${n}__accordion-icon`,h={dataToggle:"data-toggle",activeClass:"is-active",removeOnDestroy:!1};class u{element;config;toggleButtons;dropdowns;mobileMenuButtons;mobilePanels;mobileCloseButtons;activeMobilePanel;activeMobileTarget;desktopOverlay;accordionButtons;desktopOverlayClickHandler;mobileCloseHandler;focusTrapHandler;focusTrapElement;lastFocusedElement;isKeyboardUser;keydownHandler;mousedownHandler;touchstartHandler;instanceName;isModalOpen(){return document.body.classList.contains("has-modal")}getLockedScrollTop(){const e=document.body.getAttribute("data-lock-scrolltop"),t=Number.parseInt(e||"",10);return Number.isFinite(t)?t:null}getEffectiveScrollY(){return this.isModalOpen()?this.getLockedScrollTop()??window.scrollY:window.scrollY}constructor(e,t={}){return e.ODS_Megamenu?e.ODS_Megamenu:(this.element=e,this.config={...h,...t},this.handleToggleClick=this.handleToggleClick.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleScroll=this.handleScroll.bind(this),this.handleAccordionClick=this.handleAccordionClick.bind(this),this.handleArrowNavigation=this.handleArrowNavigation.bind(this),this.trapFocus=this.trapFocus.bind(this),this.handleMobileMenuToggle=this.handleMobileMenuToggle.bind(this),this.desktopOverlayClickHandler=()=>this.closeAllDropdowns(),this.mobileCloseHandler=e=>{e.preventDefault(),this.closeMobileMenu()},this.element.ODS_Megamenu=this,this.init(),this)}static getInstance(e){return e&&e.ODS_Megamenu?e.ODS_Megamenu:null}init(){this.toggleButtons=this.element.querySelectorAll(`.${s}[aria-controls]`),this.dropdowns=this.element.querySelectorAll(`.${i}`),this.instanceName=this.element.getAttribute("data-megamenu-name")||this.element.id||"",this.mobilePanels=Array.from(this.element.querySelectorAll(`.${a}`)),this.activeMobilePanel=null,this.activeMobileTarget=null,this.focusTrapElement=null;const e=Array.from(this.element.querySelectorAll(`[data-megamenu-mobile-toggle], .${l} button`)),t=Array.from(document.querySelectorAll("[data-megamenu-mobile-toggle]"));this.mobileMenuButtons=Array.from(new Set([...e,...t])).filter(e=>this.shouldUseMobileTrigger(e)),this.mobileCloseButtons=Array.from(this.element.querySelectorAll(`.${r}, [data-megamenu-close-button]`)),this.mobilePanels.forEach(e=>{e.setAttribute("aria-hidden","true")}),this.syncMobileButtonState(),this.desktopOverlay=this.element.querySelector(`.${o}`),this.accordionButtons=this.element.querySelectorAll(`.${c}`),this.toggleButtons.forEach(e=>{e.addEventListener("click",this.handleToggleClick)}),this.mobileMenuButtons.forEach(e=>{e.addEventListener("click",this.handleMobileMenuToggle)}),this.mobileCloseButtons.forEach(e=>{e.addEventListener("click",this.mobileCloseHandler)}),this.desktopOverlay&&this.desktopOverlay.addEventListener("click",this.desktopOverlayClickHandler),this.accordionButtons.forEach(e=>{e.addEventListener("click",this.handleAccordionClick)}),this.element.addEventListener("keydown",this.handleKeyPress),window.addEventListener("scroll",this.handleScroll),this.isKeyboardUser=!1,this.keydownHandler=e=>{"Tab"!==e.key&&" "!==e.key&&"Enter"!==e.key||(this.isKeyboardUser=!0)},this.mousedownHandler=()=>{this.isKeyboardUser=!1},this.touchstartHandler=()=>{this.isKeyboardUser=!1},this.element.addEventListener("keydown",this.keydownHandler),this.element.addEventListener("mousedown",this.mousedownHandler),this.element.addEventListener("touchstart",this.touchstartHandler),this.updateTabIndices(),this.handleScroll()}shouldUseMobileTrigger(e){if(this.element.contains(e))return!0;const t=e.getAttribute("data-megamenu-mobile-for");if(!t){const e=document.querySelectorAll("[data-megamenu]");return 1===e.length&&e[0]===this.element}return!!this.instanceName&&t===this.instanceName}getDefaultMobileTarget(){const e=this.mobilePanels[0];return e?.getAttribute("data-megamenu-mobile-panel")||"main"}getTargetFromElement(e){return e?.getAttribute("data-megamenu-mobile-target")||this.getDefaultMobileTarget()}getPanelByTarget(e){const t=this.mobilePanels.find(t=>t.getAttribute("data-megamenu-mobile-panel")===e);return t||(e===this.getDefaultMobileTarget()&&1===this.mobilePanels.length?this.mobilePanels[0]:null)}syncMobileButtonState(){this.mobileMenuButtons.forEach(e=>{const t=this.getTargetFromElement(e),n=this.activeMobileTarget===t;e.setAttribute("aria-expanded",n?"true":"false"),e.classList.toggle(this.config.activeClass,n)})}isInMobilePanel(e){return Boolean(e&&this.mobilePanels.some(t=>t.contains(e)))}getFocusRestoreTarget(){const e=this.lastFocusedElement;if(e&&e.isConnected&&!this.isInMobilePanel(e))return e;const t=this.activeMobileTarget;if(t){const e=this.mobileMenuButtons.find(e=>this.getTargetFromElement(e)===t&&!this.isInMobilePanel(e));if(e)return e}return this.mobileMenuButtons.find(e=>!this.isInMobilePanel(e))||null}setMobilePanelState(e,t){e.classList.toggle(this.config.activeClass,t),e.setAttribute("aria-hidden",t?"false":"true")}handleToggleClick(e){const t=e.currentTarget,n=t.classList.contains(this.config.activeClass);this.closeAllDropdowns(),n?t.focus():this.openDropdown(t)}handleKeyPress(e){if("Escape"===e.key){const e=Array.from(this.toggleButtons).find(e=>"true"===e.getAttribute("aria-expanded"));this.closeAllDropdowns(),this.closeMobileMenu(),this.closeAllAccordions(),e&&e.focus()}if("Enter"===e.key||" "===e.key){const t=e.target;("BUTTON"===t.tagName&&t.hasAttribute("aria-controls")||t.classList.contains(c))&&(e.preventDefault(),t.click())}if("Home"===e.key||"End"===e.key){const t=e.target?.closest(`.${i}`);if(t){e.preventDefault();const n=Array.from(t.querySelectorAll('a, button, [tabindex]:not([tabindex="-1"])'));"Home"===e.key&&n.length>0?n[0].focus():"End"===e.key&&n.length>0&&n[n.length-1].focus()}}if("ArrowDown"===e.key){const t=e.target;if("BUTTON"===t.tagName&&t.hasAttribute("aria-controls")){if("true"===t.getAttribute("aria-expanded")){e.preventDefault();const n=t.parentElement?.querySelector(`.${i}`),s=n?.querySelector("a, button");s&&s.focus()}}else{const n=t.closest(`.${i}`);n&&(e.preventDefault(),this.handleArrowNavigation(e,n))}}if("ArrowUp"===e.key){const t=e.target?.closest(`.${i}`);t&&(e.preventDefault(),this.handleArrowNavigation(e,t))}}handleAccordionClick(e){const t=e.currentTarget,n="true"===t.getAttribute("aria-expanded");this.closeAllAccordions(),n||this.openAccordion(t)}handleScroll(){const e=this.element.querySelector('[data-hide-when-sticky="true"]'),t=Boolean(this.element.querySelector("[data-megamenu-brand-mark]")),n=this.getEffectiveScrollY()>(e?.offsetHeight||15),s=this.element.classList.contains("top-hidden");e?n&&!s?(e.classList.add("is-hidden"),this.element.classList.add("top-hidden")):!n&&s&&(e.classList.remove("is-hidden"),this.element.classList.remove("top-hidden")):!this.element.classList.contains("non-sticky")&&t&&this.element.classList.toggle("top-hidden",n)}openDropdown(e){const t=e.parentElement?.querySelector(`.${i}`);t&&(e.classList.add(this.config.activeClass),e.setAttribute("aria-expanded","true"),t.style.display="block",t.classList.add("is-visible"),this.showDesktopOverlay(),this.updateTabIndices())}closeDropdown(e){const t=e.parentElement?.querySelector(`.${i}`);t&&(e.classList.remove(this.config.activeClass),e.setAttribute("aria-expanded","false"),t.classList.remove("is-visible"),t.style.display="none",this.updateTabIndices())}closeAllDropdowns(){this.toggleButtons.forEach(e=>{this.closeDropdown(e)}),this.hideDesktopOverlay()}handleMobileMenuToggle(e){e.preventDefault();const t=e.currentTarget,n=this.getTargetFromElement(t),s=this.getPanelByTarget(n);s&&(this.activeMobileTarget===n&&s.classList.contains(this.config.activeClass)?this.closeMobileMenu():this.openMobileMenu(n,t))}openMobileMenu(e=this.getDefaultMobileTarget(),t){const n=this.getPanelByTarget(e);if(!n)return;this.lastFocusedElement=t||document.activeElement;const s=document.activeElement;if(s&&s!==n&&this.mobilePanels.some(e=>e!==n&&e.contains(s))&&s.blur(),this.mobilePanels.forEach(e=>{this.setMobilePanelState(e,e===n)}),this.activeMobilePanel=n,this.activeMobileTarget=e,this.syncMobileButtonState(),document.body.style.overflow="hidden",this.removeFocusTrap(),this.trapFocus(n),this.isKeyboardUser){const e=n.querySelector("button, a");e&&setTimeout(()=>e.focus(),50)}this.updateTabIndices()}closeMobileMenu(){if(!this.activeMobilePanel)return;const e=this.getFocusRestoreTarget();e?e.focus():document.activeElement?.blur?.(),this.mobilePanels.forEach(e=>{this.setMobilePanelState(e,!1)}),document.body.style.overflow="",this.closeAllAccordions(),this.removeFocusTrap(),this.activeMobilePanel=null,this.activeMobileTarget=null,this.lastFocusedElement=null,this.syncMobileButtonState(),this.updateTabIndices()}showDesktopOverlay(){this.desktopOverlay&&this.desktopOverlay.classList.add(this.config.activeClass)}hideDesktopOverlay(){this.desktopOverlay&&this.desktopOverlay.classList.remove(this.config.activeClass)}openAccordion(e){const t=e.getAttribute("aria-controls"),n=t?this.element.querySelector(`#${t}`):null,s=e.querySelector(`.${d}`);n&&(e.setAttribute("aria-expanded","true"),e.classList.add(this.config.activeClass),n.classList.add("is-visible"),n.style.display="block",s&&s.classList.add(this.config.activeClass))}closeAccordion(e){const t=e.getAttribute("aria-controls"),n=t?this.element.querySelector(`#${t}`):null,s=e.querySelector(`.${d}`);n&&(e.setAttribute("aria-expanded","false"),e.classList.remove(this.config.activeClass),n.classList.remove("is-visible"),n.style.display="none",s&&s.classList.remove(this.config.activeClass))}closeAllAccordions(){this.accordionButtons.forEach(e=>{this.closeAccordion(e)})}handleArrowNavigation(e,t){const n=Array.from(t.querySelectorAll('a, button, [tabindex]:not([tabindex="-1"])'));if(0===n.length)return;const s=n.findIndex(t=>t===e.target);let i;if("ArrowDown"===e.key)i=s<n.length-1?s+1:0;else{if("ArrowUp"!==e.key)return;i=s>0?s-1:n.length-1}i>=0&&i<n.length&&n[i]&&n[i].focus()}trapFocus(e){const t=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),n=t[0],s=t[t.length-1];this.focusTrapHandler=e=>{"Tab"===e.key&&(e.shiftKey?document.activeElement===n&&(e.preventDefault(),s.focus()):document.activeElement===s&&(e.preventDefault(),n.focus()))},this.focusTrapElement=e,e.addEventListener("keydown",this.focusTrapHandler)}removeFocusTrap(){this.focusTrapElement&&this.focusTrapHandler&&(this.focusTrapElement.removeEventListener("keydown",this.focusTrapHandler),this.focusTrapElement=null)}updateTabIndices(){this.dropdowns.forEach(e=>{const t=e.classList.contains("is-visible");e.querySelectorAll("a, button, [tabindex]:not([tabindex='-1'])").forEach(e=>{const n=t;n&&-1===e.tabIndex?e.tabIndex=0:n||-1===e.tabIndex||(e.tabIndex=-1)})}),this.mobilePanels.forEach(e=>{const t=e.classList.contains(this.config.activeClass);e.querySelectorAll("a, button, [tabindex]:not([tabindex='-1'])").forEach(e=>{e.tabIndex=t?0:-1})})}destroy(){this.toggleButtons.forEach(e=>{e.removeEventListener("click",this.handleToggleClick)}),this.mobileMenuButtons.forEach(e=>{e.removeEventListener("click",this.handleMobileMenuToggle)}),this.mobileCloseButtons.forEach(e=>{e.removeEventListener("click",this.mobileCloseHandler)}),this.desktopOverlay&&this.desktopOverlay.removeEventListener("click",this.desktopOverlayClickHandler),this.accordionButtons.forEach(e=>{e.removeEventListener("click",this.handleAccordionClick)}),this.element.removeEventListener("keydown",this.handleKeyPress),window.removeEventListener("scroll",this.handleScroll),this.element.removeEventListener("keydown",this.keydownHandler),this.element.removeEventListener("mousedown",this.mousedownHandler),this.element.removeEventListener("touchstart",this.touchstartHandler),document.body.style.overflow="",this.removeFocusTrap(),this.element.ODS_Megamenu=null,this.config.removeOnDestroy&&this.element.remove()}}const m=[{Module:u,name:"Megamenu",selector:"[data-megamenu]"}];window.ODSMegamenu=window.ODSMegamenu||{Megamenu:u,instances:[],init:()=>{window.ODSMegamenu.instances=function(e,t,n={}){return Array.from(document.querySelectorAll(t)).map(t=>new e(t,n))}(u,"[data-megamenu]")},destroy:()=>{window.ODSMegamenu.instances.forEach(e=>{e&&"function"==typeof e.destroy&&e.destroy()}),window.ODSMegamenu.instances=[]},initModulesWithin:function(e){const t={};return window.ODS.moduleSelectorPairs.forEach(n=>{const s=(i=n.name).charAt(0).toLowerCase()+i.slice(1);var i;const o=Array.from(e.querySelectorAll(n.selector)),l=`ODS_${n.name}`,a=o.filter(e=>!e[l]);window&&window.ODS&&window.ODS.instances[s]&&(window.ODS.instances[s]=window.ODS.instances[s].filter(e=>{const t=document.contains(e.element);return t||e.destroy?.(),t}),window.ODS.instances[s].forEach(e=>{a.forEach((t,n)=>{t.isSameNode(e.element)&&a.splice(n,1)})})),a.length&&(Array.isArray(window.ODS.instances[s])||(window.ODS.instances[s]=[]),t[s]=a.map(e=>new n.Module(e)),window.ODS.instances[s]=[...window.ODS.instances[s],...t[s]])}),t},destroyModulesWithin:function(e,t=!1){const n={};return Object.keys(window.ODS.instances).forEach(s=>{window.ODS.instances[s].forEach(i=>{"object"!=typeof n[s]&&(n[s]=[]);let o=e.contains(i.element);"modal"===s?o=i.instance?._openers.every(t=>e.contains(t)):"tooltip"===s&&(o=e.contains(i.trigger)),o&&(i.destroy(),n[s].push(i)),o&&t&&["modal","tooltip"].includes(s)&&i.element.remove()}),window.ODS.instances[s]=window.ODS.instances[s].filter(e=>!n[s].includes(e))}),n}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{window.ODSMegamenu.init()}):window.ODSMegamenu.init();export{u as Megamenu,m as customMegamenuModuleSelectorPairs,u as default};
|
|
2
2
|
//# sourceMappingURL=megamenu.js.map
|