@tet/tet-components 1.4.71-testing → 1.4.72-production
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/dist/cjs/{address-656e77f6.js → address-951109ee.js} +1 -1
- package/dist/cjs/{assets-f64f0e16.js → assets-c00a24d2.js} +1 -1
- package/dist/cjs/{async-request-fcf33aba.js → async-request-13036d6f.js} +1 -1
- package/dist/cjs/{http-codes-40da1e61.js → http-codes-16564d25.js} +1 -1
- package/dist/cjs/{index-3242ff3f.js → index-162b4cbc.js} +17 -9
- package/dist/cjs/{index-4b423f33.js → index-a59cbcb0.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{phone-055efd07.js → phone-39f20542.js} +2 -2
- package/dist/cjs/{product-comparison-88a89820.js → product-comparison-5535cd9e.js} +1 -1
- package/dist/cjs/tet-accordion.cjs.entry.js +1 -1
- package/dist/cjs/tet-address-offers-filters-products_2.cjs.entry.js +4 -4
- package/dist/cjs/tet-address-offers-view.cjs.entry.js +3 -3
- package/dist/cjs/tet-address-offers_4.cjs.entry.js +7 -7
- package/dist/cjs/tet-address-search.cjs.entry.js +4 -4
- package/dist/cjs/tet-asset-addresses.cjs.entry.js +3 -3
- package/dist/cjs/tet-autocomplete-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/tet-autocomplete.cjs.entry.js +1 -1
- package/dist/cjs/tet-b2b-check-out-form_5.cjs.entry.js +3 -3
- package/dist/cjs/tet-b2b-configurator.cjs.entry.js +4 -4
- package/dist/cjs/tet-b2b-service-calculator.cjs.entry.js +3 -3
- package/dist/cjs/tet-banner-nav.cjs.entry.js +3 -3
- package/dist/cjs/tet-bar-graph.cjs.entry.js +1 -1
- package/dist/cjs/tet-border-radius.cjs.entry.js +1 -1
- package/dist/cjs/tet-business-card.cjs.entry.js +1 -1
- package/dist/cjs/tet-business-compare-card.cjs.entry.js +1 -1
- package/dist/cjs/tet-business-lines.cjs.entry.js +4 -4
- package/dist/cjs/tet-business-round-stepper.cjs.entry.js +1 -1
- package/dist/cjs/tet-button.cjs.entry.js +1 -1
- package/dist/cjs/tet-card-list.cjs.entry.js +1 -1
- package/dist/cjs/tet-carousel.cjs.entry.js +3 -3
- package/dist/cjs/{tet-checkbox_3.cjs.entry.js → tet-checkbox_2.cjs.entry.js} +1 -375
- package/dist/cjs/tet-cloud-application-form-dialog.cjs.entry.js +3 -3
- package/dist/cjs/tet-cloud-configurator.cjs.entry.js +3 -3
- package/dist/cjs/tet-colors.cjs.entry.js +1 -1
- package/dist/cjs/tet-compare-card-v2.cjs.entry.js +4 -4
- package/dist/cjs/tet-compare-card-v3.cjs.entry.js +360 -0
- package/dist/cjs/tet-compare-cards-tab.cjs.entry.js +3 -3
- package/dist/cjs/tet-compare-cards_2.cjs.entry.js +3 -3
- package/dist/cjs/tet-components.cjs.js +2 -2
- package/dist/cjs/tet-contact-form.cjs.entry.js +5 -5
- package/dist/cjs/tet-contact-info.cjs.entry.js +1 -1
- package/dist/cjs/tet-container_2.cjs.entry.js +1 -1
- package/dist/cjs/tet-countdown.cjs.entry.js +1 -1
- package/dist/cjs/tet-counter.cjs.entry.js +1 -1
- package/dist/cjs/tet-customer-assets.cjs.entry.js +3 -3
- package/dist/cjs/tet-datepicker-header_4.cjs.entry.js +1 -1
- package/dist/cjs/tet-datepicker.cjs.entry.js +1 -1
- package/dist/cjs/tet-dialog.cjs.entry.js +3 -3
- package/dist/cjs/tet-display.cjs.entry.js +1 -1
- package/dist/cjs/tet-divider.cjs.entry.js +1 -1
- package/dist/cjs/tet-dynamic-card.cjs.entry.js +1 -1
- package/dist/cjs/tet-expandable-input.cjs.entry.js +2 -2
- package/dist/cjs/tet-expansion-panel.cjs.entry.js +1 -1
- package/dist/cjs/tet-feedback-form.cjs.entry.js +3 -3
- package/dist/cjs/tet-filter.cjs.entry.js +1 -1
- package/dist/cjs/tet-floating-block.cjs.entry.js +1 -1
- package/dist/cjs/tet-font-weight.cjs.entry.js +1 -1
- package/dist/cjs/tet-fonts.cjs.entry.js +1 -1
- package/dist/cjs/tet-grid.cjs.entry.js +1 -1
- package/dist/cjs/tet-icon.cjs.entry.js +2 -2
- package/dist/cjs/tet-inline-message.cjs.entry.js +1 -1
- package/dist/cjs/tet-input.cjs.entry.js +3 -3
- package/dist/cjs/tet-label.cjs.entry.js +3 -3
- package/dist/cjs/tet-layout.cjs.entry.js +1 -1
- package/dist/cjs/tet-link-card-list.cjs.entry.js +1 -1
- package/dist/cjs/tet-link.cjs.entry.js +1 -1
- package/dist/cjs/tet-loader.cjs.entry.js +1 -1
- package/dist/cjs/tet-macd-view.cjs.entry.js +6 -6
- package/dist/cjs/tet-menu-mobile.cjs.entry.js +7 -5
- package/dist/cjs/tet-menu.cjs.entry.js +397 -92
- package/dist/cjs/tet-mini-compare-card.cjs.entry.js +1 -1
- package/dist/cjs/tet-multi-step-dialog.cjs.entry.js +3 -3
- package/dist/cjs/tet-navigation-mobile.cjs.entry.js +2 -2
- package/dist/cjs/tet-news-card-list.cjs.entry.js +1 -1
- package/dist/cjs/tet-notification.cjs.entry.js +1 -1
- package/dist/cjs/tet-number-input.cjs.entry.js +1 -1
- package/dist/cjs/tet-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/tet-position.cjs.entry.js +1 -1
- package/dist/cjs/tet-price-view.cjs.entry.js +1 -1
- package/dist/cjs/tet-radio.cjs.entry.js +13 -11
- package/dist/cjs/tet-range-slider.cjs.entry.js +1 -1
- package/dist/cjs/tet-referral.cjs.entry.js +5 -5
- package/dist/cjs/tet-round-stepper.cjs.entry.js +1 -1
- package/dist/cjs/tet-snicker-card-badge.cjs.entry.js +1 -1
- package/dist/cjs/tet-snicker-card-group.cjs.entry.js +1 -1
- package/dist/cjs/tet-snicker-card.cjs.entry.js +3 -3
- package/dist/cjs/tet-spacing.cjs.entry.js +1 -1
- package/dist/cjs/tet-spinner.cjs.entry.js +1 -1
- package/dist/cjs/tet-stepper-input.cjs.entry.js +3 -3
- package/dist/cjs/tet-stepper-v2.cjs.entry.js +1 -1
- package/dist/cjs/tet-stepper-v3.cjs.entry.js +1 -1
- package/dist/cjs/tet-stepper.cjs.entry.js +1 -1
- package/dist/cjs/tet-support-search.cjs.entry.js +1 -1
- package/dist/cjs/tet-switch.cjs.entry.js +2 -2
- package/dist/cjs/tet-tab-header.cjs.entry.js +1 -1
- package/dist/cjs/tet-table.cjs.entry.js +1 -1
- package/dist/cjs/tet-tag_2.cjs.entry.js +3 -3
- package/dist/cjs/tet-text-list.cjs.entry.js +2 -2
- package/dist/cjs/tet-text.cjs.entry.js +1 -1
- package/dist/cjs/tet-textarea.cjs.entry.js +1 -1
- package/dist/cjs/tet-thank-you-view-v2.cjs.entry.js +3 -3
- package/dist/cjs/tet-thank-you-view-v3.cjs.entry.js +3 -3
- package/dist/cjs/tet-thank-you-view.cjs.entry.js +1 -1
- package/dist/cjs/tet-tooltip.cjs.entry.js +380 -0
- package/dist/cjs/tet-tv-gift-block.cjs.entry.js +1 -1
- package/dist/cjs/tet-tv-gift-list.cjs.entry.js +1 -1
- package/dist/cjs/{theme-wrapper-66880718.js → theme-wrapper-cde3168f.js} +2 -2
- package/dist/cjs/{translations-03c9de64.js → translations-ca556860.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/advanced/cards/tet-compare-card/tet-compare-card.css +34 -0
- package/dist/collection/components/advanced/cards/tet-compare-card-v2/tet-compare-card-v2.css +34 -0
- package/dist/collection/components/advanced/cards/tet-compare-card-v3/test/comparison-response.mock.js +463 -0
- package/dist/collection/components/advanced/cards/tet-compare-card-v3/tet-compare-card-v3.css +868 -0
- package/dist/collection/components/advanced/cards/tet-compare-card-v3/tet-compare-card-v3.js +699 -0
- package/dist/collection/components/basic/buttons/tet-radio/tet-radio.css +3 -0
- package/dist/collection/components/basic/buttons/tet-radio/tet-radio.js +11 -9
- package/dist/collection/components/basic/buttons/tet-switch/tet-switch.css +3 -0
- package/dist/collection/components/simple/inputs/tet-expandable-input/tet-expandable-input.css +23 -7
- package/dist/collection/components/simple/lists/tet-text-list/tet-text-list.css +34 -0
- package/dist/collection/components/simple/menu/tet-menu/tet-menu.css +819 -39
- package/dist/collection/components/simple/menu/tet-menu/tet-menu.js +464 -95
- package/dist/collection/components/simple/menu/tet-menu-mobile/tet-menu-mobile.css +56 -36
- package/dist/collection/components/simple/menu/tet-menu-mobile/tet-menu-mobile.js +23 -3
- package/dist/collection/components/simple/menu/tet-navigation-mobile/tet-navigation-mobile.css +17 -3
- package/dist/components/index.js +3 -1
- package/dist/components/{p-8f9ff447.js → p-0c6b7ee4.js} +2 -2
- package/dist/components/{p-1a84e464.js → p-0cd72467.js} +6 -6
- package/dist/components/{p-cd88c18e.js → p-0d7a13c4.js} +7 -7
- package/dist/components/{p-d840d114.js → p-0fb58488.js} +1 -1
- package/dist/components/{p-789bee5f.js → p-14371fc9.js} +1 -1
- package/dist/components/{p-b63a7833.js → p-16a058a6.js} +3 -3
- package/dist/components/{p-d2906f29.js → p-17f7575a.js} +3 -3
- package/dist/components/{p-ecb62209.js → p-19b3a55c.js} +2 -2
- package/dist/components/{p-de671173.js → p-1ab3676a.js} +1 -1
- package/dist/components/{p-734f67c5.js → p-1ad085d5.js} +1 -1
- package/dist/components/{p-b51591ec.js → p-1d8bc79a.js} +1 -1
- package/dist/components/{p-05a4a88a.js → p-1e920550.js} +2 -2
- package/dist/components/{p-4d181fc9.js → p-2297d3a8.js} +5 -5
- package/dist/components/{p-411270c6.js → p-2523029a.js} +2 -2
- package/dist/components/{p-6e273f47.js → p-2b8d8b77.js} +1 -1
- package/dist/components/{p-8cd5cc24.js → p-2e4ca0ab.js} +2 -2
- package/dist/components/{p-b7eb822d.js → p-358dc559.js} +1 -1
- package/dist/components/{p-d6c8d210.js → p-3ef3a3e7.js} +10 -10
- package/dist/components/{p-5a41a155.js → p-4092e01d.js} +4 -4
- package/dist/components/{p-3c404244.js → p-429235d1.js} +1 -1
- package/dist/components/{p-a46ed058.js → p-47657122.js} +1 -1
- package/dist/components/{p-e8595e06.js → p-50d97c82.js} +14 -12
- package/dist/components/{p-8f3097ac.js → p-600c6af2.js} +10 -10
- package/dist/components/{p-69ddd50b.js → p-67f81125.js} +6 -6
- package/dist/components/{p-25ea4db6.js → p-6b814793.js} +1 -1
- package/dist/components/{p-6b6e4f80.js → p-6c7cd629.js} +1 -1
- package/dist/components/{p-42d78188.js → p-6ee658e2.js} +7 -7
- package/dist/components/{p-22b05881.js → p-6f9d915f.js} +3 -3
- package/dist/components/{p-1942f0f5.js → p-71cd1694.js} +3 -3
- package/dist/components/{p-2f7b2d35.js → p-75549c13.js} +1 -1
- package/dist/components/{p-a57638be.js → p-75c001fd.js} +1 -1
- package/dist/components/{p-70507bfc.js → p-78567cb4.js} +1 -1
- package/dist/components/{p-a004fba4.js → p-78acba3f.js} +2 -2
- package/dist/components/{p-23f7b264.js → p-7dad0edc.js} +7 -7
- package/dist/components/{p-d659d0dc.js → p-7dd4f8c0.js} +1 -1
- package/dist/components/{p-efa3ec10.js → p-80b1df35.js} +2 -2
- package/dist/components/{p-d5d6ad18.js → p-84775fd7.js} +2 -2
- package/dist/components/{p-4468c9e9.js → p-8792ebce.js} +1 -1
- package/dist/components/{p-25b93e8f.js → p-8b6ad07d.js} +1 -1
- package/dist/components/{p-f6e855a8.js → p-8fe68dae.js} +7 -7
- package/dist/components/{p-a6c51126.js → p-936f84b7.js} +2 -2
- package/dist/components/{p-2be031c9.js → p-a0601962.js} +9 -9
- package/dist/components/{p-61ba5ba1.js → p-a60d01a4.js} +1 -1
- package/dist/components/{p-189a37d2.js → p-ac0cadcb.js} +5 -5
- package/dist/components/{p-c7f783f8.js → p-ad96b57a.js} +7 -7
- package/dist/components/{p-454eccfc.js → p-adc7c3dd.js} +3 -3
- package/dist/components/{p-eabd73fc.js → p-b8ad4f15.js} +3 -3
- package/dist/components/{p-1281b61e.js → p-bc02b9e7.js} +2 -2
- package/dist/components/{p-f6c678ae.js → p-c1cdf2d3.js} +2 -2
- package/dist/components/{p-809b2c68.js → p-d0886e4e.js} +3 -3
- package/dist/components/{p-79e64e7a.js → p-d096569b.js} +3 -3
- package/dist/components/{p-72215a89.js → p-d0f08803.js} +2 -2
- package/dist/components/{p-68c6a6d2.js → p-df8f8a8f.js} +1 -1
- package/dist/components/{p-70a6ba6c.js → p-f74e2b37.js} +14 -14
- package/dist/components/{p-e72337be.js → p-f92e8f2d.js} +1 -1
- package/dist/components/{p-8803338b.js → p-f99f28c0.js} +1 -1
- package/dist/components/{p-7cd73a11.js → p-fa6601a7.js} +3 -3
- package/dist/components/{p-dab4d025.js → p-fb3d7fdc.js} +1 -1
- package/dist/components/{p-806583bf.js → p-fe16cabd.js} +4 -4
- package/dist/components/tet-accordion.js +1 -1
- package/dist/components/tet-address-offers-filters-products.js +1 -1
- package/dist/components/tet-address-offers-filters.js +1 -1
- package/dist/components/tet-address-offers-view.js +24 -24
- package/dist/components/tet-address-offers.js +1 -1
- package/dist/components/tet-address-search.js +1 -1
- package/dist/components/tet-asset-addresses.js +13 -13
- package/dist/components/tet-asset-availability-addresses.js +1 -1
- package/dist/components/tet-autocomplete-dropdown.js +5 -5
- package/dist/components/tet-autocomplete.js +1 -1
- package/dist/components/tet-availability-contact-form.js +1 -1
- package/dist/components/tet-b2b-check-out-form.js +1 -1
- package/dist/components/tet-b2b-compare-card.js +1 -1
- package/dist/components/tet-b2b-configurator-cart.js +1 -1
- package/dist/components/tet-b2b-configurator.js +20 -20
- package/dist/components/tet-b2b-service-calculator.js +8 -8
- package/dist/components/tet-banner-nav.js +3 -3
- package/dist/components/tet-bar-graph.js +1 -1
- package/dist/components/tet-border-radius.js +1 -1
- package/dist/components/tet-business-card.js +1 -1
- package/dist/components/tet-business-compare-card.js +3 -3
- package/dist/components/tet-business-lines.js +5 -5
- package/dist/components/tet-business-navigation.js +1 -1
- package/dist/components/tet-business-round-stepper.js +2 -2
- package/dist/components/tet-business-summary-card.js +1 -1
- package/dist/components/tet-button.js +1 -1
- package/dist/components/tet-card-list.js +1 -1
- package/dist/components/tet-carousel.js +4 -4
- package/dist/components/tet-checkbox.js +1 -1
- package/dist/components/tet-cloud-application-form-dialog.js +8 -8
- package/dist/components/tet-cloud-configurator.js +12 -12
- package/dist/components/tet-colors.js +1 -1
- package/dist/components/tet-compare-card-v2.js +10 -10
- package/dist/components/tet-compare-card-v3.d.ts +11 -0
- package/dist/components/tet-compare-card-v3.js +440 -0
- package/dist/components/tet-compare-card.js +1 -1
- package/dist/components/tet-compare-cards-tab.js +16 -16
- package/dist/components/tet-compare-cards.js +1 -1
- package/dist/components/tet-contact-form.js +9 -9
- package/dist/components/tet-contact-info.js +1 -1
- package/dist/components/tet-container.js +1 -1
- package/dist/components/tet-countdown.js +1 -1
- package/dist/components/tet-counter.js +1 -1
- package/dist/components/tet-customer-assets.js +9 -9
- package/dist/components/tet-datepicker-header.js +1 -1
- package/dist/components/tet-datepicker-month-view.js +1 -1
- package/dist/components/tet-datepicker-multi-year-view.js +1 -1
- package/dist/components/tet-datepicker-year-view.js +1 -1
- package/dist/components/tet-datepicker.js +6 -6
- package/dist/components/tet-dialog.js +1 -1
- package/dist/components/tet-display.js +8 -8
- package/dist/components/tet-divider.js +7 -7
- package/dist/components/tet-dropdown.js +1 -1
- package/dist/components/tet-dynamic-card.js +4 -4
- package/dist/components/tet-expandable-input.js +4 -4
- package/dist/components/tet-expansion-panel.js +1 -1
- package/dist/components/tet-feedback-form.js +7 -7
- package/dist/components/tet-filter.js +4 -4
- package/dist/components/tet-floating-block.js +3 -3
- package/dist/components/tet-font-weight.js +1 -1
- package/dist/components/tet-fonts.js +1 -1
- package/dist/components/tet-grid.js +1 -1
- package/dist/components/tet-icon.js +1 -1
- package/dist/components/tet-inline-message.js +1 -1
- package/dist/components/tet-input.js +1 -1
- package/dist/components/tet-label.js +3 -3
- package/dist/components/tet-layout.js +1 -1
- package/dist/components/tet-link-card-list.js +3 -3
- package/dist/components/tet-link.js +1 -1
- package/dist/components/tet-loader.js +1 -1
- package/dist/components/tet-macd-view.js +10 -10
- package/dist/components/tet-menu-mobile.js +9 -6
- package/dist/components/tet-menu.js +405 -95
- package/dist/components/tet-mini-compare-card.js +3 -3
- package/dist/components/tet-multi-step-dialog.js +5 -5
- package/dist/components/tet-navigation-mobile.js +3 -3
- package/dist/components/tet-news-card-list.js +4 -4
- package/dist/components/tet-notification.js +1 -1
- package/dist/components/tet-number-input.js +1 -1
- package/dist/components/tet-placeholder.js +1 -1
- package/dist/components/tet-position.js +7 -7
- package/dist/components/tet-price-view.js +1 -1
- package/dist/components/tet-radio.js +1 -1
- package/dist/components/tet-range-slider.js +1 -1
- package/dist/components/tet-referral.js +6 -6
- package/dist/components/tet-round-stepper.js +2 -2
- package/dist/components/tet-selection-list.js +1 -1
- package/dist/components/tet-snicker-card-badge.js +1 -1
- package/dist/components/tet-snicker-card-group.js +1 -1
- package/dist/components/tet-snicker-card.js +11 -11
- package/dist/components/tet-spacing.js +1 -1
- package/dist/components/tet-spinner.js +1 -1
- package/dist/components/tet-stepper-input.js +1 -1
- package/dist/components/tet-stepper-v2.js +1 -1
- package/dist/components/tet-stepper-v3.js +1 -1
- package/dist/components/tet-stepper.js +1 -1
- package/dist/components/tet-support-search.js +7 -7
- package/dist/components/tet-switch.js +1 -1
- package/dist/components/tet-tab-content.js +1 -1
- package/dist/components/tet-tab-header.js +1 -1
- package/dist/components/tet-table.js +3 -3
- package/dist/components/tet-tag-group.js +1 -1
- package/dist/components/tet-tag.js +1 -1
- package/dist/components/tet-text-list.js +1 -1
- package/dist/components/tet-text.js +7 -7
- package/dist/components/tet-textarea.js +1 -1
- package/dist/components/tet-thank-you-view-v2.js +5 -5
- package/dist/components/tet-thank-you-view-v3.js +5 -5
- package/dist/components/tet-thank-you-view.js +4 -4
- package/dist/components/tet-tooltip.js +1 -1
- package/dist/components/tet-tv-gift-block.js +1 -1
- package/dist/components/tet-tv-gift-list.js +2 -2
- package/dist/esm/{address-1e0810e7.js → address-24e316f2.js} +1 -1
- package/dist/esm/{assets-e1349520.js → assets-343a0b59.js} +1 -1
- package/dist/esm/{async-request-4c945e13.js → async-request-a5159336.js} +1 -1
- package/dist/esm/{http-codes-1927ea00.js → http-codes-98d3e25c.js} +1 -1
- package/dist/esm/{index-aac31bd2.js → index-0da0d682.js} +17 -9
- package/dist/esm/{index-412df137.js → index-6c5bc6fc.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{phone-1a920c5c.js → phone-ea11e1d0.js} +2 -2
- package/dist/esm/{product-comparison-dd90c721.js → product-comparison-21980b84.js} +1 -1
- package/dist/esm/tet-accordion.entry.js +1 -1
- package/dist/esm/tet-address-offers-filters-products_2.entry.js +4 -4
- package/dist/esm/tet-address-offers-view.entry.js +3 -3
- package/dist/esm/tet-address-offers_4.entry.js +7 -7
- package/dist/esm/tet-address-search.entry.js +4 -4
- package/dist/esm/tet-asset-addresses.entry.js +3 -3
- package/dist/esm/tet-autocomplete-dropdown.entry.js +1 -1
- package/dist/esm/tet-autocomplete.entry.js +1 -1
- package/dist/esm/tet-b2b-check-out-form_5.entry.js +3 -3
- package/dist/esm/tet-b2b-configurator.entry.js +4 -4
- package/dist/esm/tet-b2b-service-calculator.entry.js +3 -3
- package/dist/esm/tet-banner-nav.entry.js +3 -3
- package/dist/esm/tet-bar-graph.entry.js +1 -1
- package/dist/esm/tet-border-radius.entry.js +1 -1
- package/dist/esm/tet-business-card.entry.js +1 -1
- package/dist/esm/tet-business-compare-card.entry.js +1 -1
- package/dist/esm/tet-business-lines.entry.js +4 -4
- package/dist/esm/tet-business-round-stepper.entry.js +1 -1
- package/dist/esm/tet-button.entry.js +1 -1
- package/dist/esm/tet-card-list.entry.js +1 -1
- package/dist/esm/tet-carousel.entry.js +3 -3
- package/dist/esm/{tet-checkbox_3.entry.js → tet-checkbox_2.entry.js} +2 -375
- package/dist/esm/tet-cloud-application-form-dialog.entry.js +3 -3
- package/dist/esm/tet-cloud-configurator.entry.js +3 -3
- package/dist/esm/tet-colors.entry.js +1 -1
- package/dist/esm/tet-compare-card-v2.entry.js +4 -4
- package/dist/esm/tet-compare-card-v3.entry.js +356 -0
- package/dist/esm/tet-compare-cards-tab.entry.js +3 -3
- package/dist/esm/tet-compare-cards_2.entry.js +3 -3
- package/dist/esm/tet-components.js +3 -3
- package/dist/esm/tet-contact-form.entry.js +5 -5
- package/dist/esm/tet-contact-info.entry.js +1 -1
- package/dist/esm/tet-container_2.entry.js +1 -1
- package/dist/esm/tet-countdown.entry.js +1 -1
- package/dist/esm/tet-counter.entry.js +1 -1
- package/dist/esm/tet-customer-assets.entry.js +3 -3
- package/dist/esm/tet-datepicker-header_4.entry.js +1 -1
- package/dist/esm/tet-datepicker.entry.js +1 -1
- package/dist/esm/tet-dialog.entry.js +3 -3
- package/dist/esm/tet-display.entry.js +1 -1
- package/dist/esm/tet-divider.entry.js +1 -1
- package/dist/esm/tet-dynamic-card.entry.js +1 -1
- package/dist/esm/tet-expandable-input.entry.js +2 -2
- package/dist/esm/tet-expansion-panel.entry.js +1 -1
- package/dist/esm/tet-feedback-form.entry.js +3 -3
- package/dist/esm/tet-filter.entry.js +1 -1
- package/dist/esm/tet-floating-block.entry.js +1 -1
- package/dist/esm/tet-font-weight.entry.js +1 -1
- package/dist/esm/tet-fonts.entry.js +1 -1
- package/dist/esm/tet-grid.entry.js +1 -1
- package/dist/esm/tet-icon.entry.js +2 -2
- package/dist/esm/tet-inline-message.entry.js +1 -1
- package/dist/esm/tet-input.entry.js +3 -3
- package/dist/esm/tet-label.entry.js +3 -3
- package/dist/esm/tet-layout.entry.js +1 -1
- package/dist/esm/tet-link-card-list.entry.js +1 -1
- package/dist/esm/tet-link.entry.js +1 -1
- package/dist/esm/tet-loader.entry.js +1 -1
- package/dist/esm/tet-macd-view.entry.js +6 -6
- package/dist/esm/tet-menu-mobile.entry.js +7 -5
- package/dist/esm/tet-menu.entry.js +397 -92
- package/dist/esm/tet-mini-compare-card.entry.js +1 -1
- package/dist/esm/tet-multi-step-dialog.entry.js +3 -3
- package/dist/esm/tet-navigation-mobile.entry.js +2 -2
- package/dist/esm/tet-news-card-list.entry.js +1 -1
- package/dist/esm/tet-notification.entry.js +1 -1
- package/dist/esm/tet-number-input.entry.js +1 -1
- package/dist/esm/tet-placeholder.entry.js +1 -1
- package/dist/esm/tet-position.entry.js +1 -1
- package/dist/esm/tet-price-view.entry.js +1 -1
- package/dist/esm/tet-radio.entry.js +13 -11
- package/dist/esm/tet-range-slider.entry.js +1 -1
- package/dist/esm/tet-referral.entry.js +5 -5
- package/dist/esm/tet-round-stepper.entry.js +1 -1
- package/dist/esm/tet-snicker-card-badge.entry.js +1 -1
- package/dist/esm/tet-snicker-card-group.entry.js +1 -1
- package/dist/esm/tet-snicker-card.entry.js +3 -3
- package/dist/esm/tet-spacing.entry.js +1 -1
- package/dist/esm/tet-spinner.entry.js +1 -1
- package/dist/esm/tet-stepper-input.entry.js +3 -3
- package/dist/esm/tet-stepper-v2.entry.js +1 -1
- package/dist/esm/tet-stepper-v3.entry.js +1 -1
- package/dist/esm/tet-stepper.entry.js +1 -1
- package/dist/esm/tet-support-search.entry.js +1 -1
- package/dist/esm/tet-switch.entry.js +2 -2
- package/dist/esm/tet-tab-header.entry.js +1 -1
- package/dist/esm/tet-table.entry.js +1 -1
- package/dist/esm/tet-tag_2.entry.js +3 -3
- package/dist/esm/tet-text-list.entry.js +2 -2
- package/dist/esm/tet-text.entry.js +1 -1
- package/dist/esm/tet-textarea.entry.js +1 -1
- package/dist/esm/tet-thank-you-view-v2.entry.js +3 -3
- package/dist/esm/tet-thank-you-view-v3.entry.js +3 -3
- package/dist/esm/tet-thank-you-view.entry.js +1 -1
- package/dist/esm/tet-tooltip.entry.js +376 -0
- package/dist/esm/tet-tv-gift-block.entry.js +1 -1
- package/dist/esm/tet-tv-gift-list.entry.js +1 -1
- package/dist/esm/{theme-wrapper-72d0b9da.js → theme-wrapper-37dd9692.js} +2 -2
- package/dist/esm/{translations-4712c45f.js → translations-9a0d9386.js} +1 -1
- package/dist/tet-components/{p-f6916bfc.entry.js → p-01a44fa7.entry.js} +1 -1
- package/dist/tet-components/{p-e6aab016.entry.js → p-01e5830a.entry.js} +1 -1
- package/dist/tet-components/{p-0c6b6730.js → p-0255120e.js} +1 -1
- package/dist/tet-components/{p-3324b31a.entry.js → p-038230dc.entry.js} +1 -1
- package/dist/tet-components/{p-b44083d7.entry.js → p-08be0a0c.entry.js} +1 -1
- package/dist/tet-components/{p-e290c65d.entry.js → p-096705a4.entry.js} +1 -1
- package/dist/tet-components/{p-ff291490.entry.js → p-0993a390.entry.js} +1 -1
- package/dist/tet-components/p-0e2df2d9.entry.js +1 -0
- package/dist/tet-components/p-102119d0.entry.js +1 -0
- package/dist/tet-components/{p-4c6a379b.entry.js → p-1537fc09.entry.js} +1 -1
- package/dist/tet-components/{p-46b3fc7f.entry.js → p-18ef5232.entry.js} +1 -1
- package/dist/tet-components/{p-7544dfd7.js → p-19c6a28c.js} +1 -1
- package/dist/tet-components/{p-724189c2.entry.js → p-1ad37ab3.entry.js} +1 -1
- package/dist/tet-components/{p-b01405f8.entry.js → p-1be60596.entry.js} +1 -1
- package/dist/tet-components/{p-ba8c6a1c.entry.js → p-1ca03991.entry.js} +1 -1
- package/dist/tet-components/{p-697d23d7.entry.js → p-1e00c707.entry.js} +1 -1
- package/dist/tet-components/{p-1fd2adaf.js → p-1e9db0cc.js} +1 -1
- package/dist/tet-components/{p-d8518d4b.js → p-21acfb7d.js} +1 -1
- package/dist/tet-components/{p-003e17a0.entry.js → p-23ba99b6.entry.js} +1 -1
- package/dist/tet-components/{p-38be49a6.entry.js → p-249d52da.entry.js} +1 -1
- package/dist/tet-components/{p-25e48d9f.entry.js → p-25fa66d3.entry.js} +1 -1
- package/dist/tet-components/{p-e13c62c8.entry.js → p-2725e612.entry.js} +1 -1
- package/dist/tet-components/{p-25bb7d4f.entry.js → p-27ef835b.entry.js} +1 -1
- package/dist/tet-components/{p-c711cd66.entry.js → p-2c577b6b.entry.js} +1 -1
- package/dist/tet-components/{p-e93ab3e8.entry.js → p-35250549.entry.js} +1 -1
- package/dist/tet-components/p-3649ee82.entry.js +1 -0
- package/dist/tet-components/{p-689e9d36.entry.js → p-3e4a1fea.entry.js} +1 -1
- package/dist/tet-components/{p-2c92d701.entry.js → p-403b7e52.entry.js} +1 -1
- package/dist/tet-components/{p-be3cb49b.entry.js → p-42b40e30.entry.js} +1 -1
- package/dist/tet-components/{p-cde8057a.entry.js → p-48d13280.entry.js} +1 -1
- package/dist/tet-components/{p-4b84438a.entry.js → p-4ef61eca.entry.js} +1 -1
- package/dist/tet-components/{p-1ff1f044.entry.js → p-51b6c13e.entry.js} +1 -1
- package/dist/tet-components/{p-b5315830.entry.js → p-5974d9e0.entry.js} +1 -1
- package/dist/tet-components/{p-0ebbf5ef.js → p-59ffdcd3.js} +1 -1
- package/dist/tet-components/{p-6be0549b.entry.js → p-5afa5243.entry.js} +1 -1
- package/dist/tet-components/{p-6693715e.entry.js → p-5c469b6d.entry.js} +1 -1
- package/dist/tet-components/{p-b10165d6.entry.js → p-60a85942.entry.js} +1 -1
- package/dist/tet-components/{p-7f18c74c.entry.js → p-674c34fe.entry.js} +1 -1
- package/dist/tet-components/{p-805fb580.entry.js → p-6b01ed30.entry.js} +1 -1
- package/dist/tet-components/{p-93820289.entry.js → p-6c01686a.entry.js} +1 -1
- package/dist/tet-components/{p-97cff839.entry.js → p-6c1fe6e2.entry.js} +1 -1
- package/dist/tet-components/{p-480ca12a.entry.js → p-6ce50129.entry.js} +1 -1
- package/dist/tet-components/{p-5c821eef.entry.js → p-6f456e0a.entry.js} +1 -1
- package/dist/tet-components/{p-64e277c1.entry.js → p-725a4439.entry.js} +1 -1
- package/dist/tet-components/{p-52949a88.entry.js → p-76662132.entry.js} +1 -1
- package/dist/tet-components/{p-d1035694.entry.js → p-779c00c2.entry.js} +1 -1
- package/dist/tet-components/p-7c868b40.js +2 -0
- package/dist/tet-components/p-81456c37.js +1 -0
- package/dist/tet-components/{p-778c46a6.js → p-81586378.js} +1 -1
- package/dist/tet-components/{p-d5b36540.entry.js → p-8318b6ce.entry.js} +1 -1
- package/dist/tet-components/{p-84322a3d.entry.js → p-85dbfd0e.entry.js} +1 -1
- package/dist/tet-components/{p-fa259a3d.entry.js → p-86732da3.entry.js} +1 -1
- package/dist/tet-components/{p-b0c62997.entry.js → p-8763c126.entry.js} +1 -1
- package/dist/tet-components/{p-949d0eaf.entry.js → p-8d03a36d.entry.js} +1 -1
- package/dist/tet-components/{p-9a75ed39.entry.js → p-93a7b0e4.entry.js} +1 -1
- package/dist/tet-components/{p-83e4ae9f.entry.js → p-9595c23f.entry.js} +1 -1
- package/dist/tet-components/{p-8fa0be45.entry.js → p-95a1dd7c.entry.js} +1 -1
- package/dist/tet-components/p-962240a1.entry.js +1 -0
- package/dist/tet-components/{p-ddce536f.entry.js → p-96df0d8f.entry.js} +1 -1
- package/dist/tet-components/{p-6b088283.entry.js → p-9d45496b.entry.js} +1 -1
- package/dist/tet-components/{p-bd9f9dea.entry.js → p-9e507839.entry.js} +1 -1
- package/dist/tet-components/{p-f81b3bb0.js → p-a0b08ff1.js} +1 -1
- package/dist/tet-components/{p-c9f21fde.entry.js → p-a193f723.entry.js} +1 -1
- package/dist/tet-components/{p-1393ed60.entry.js → p-a2ab4213.entry.js} +1 -1
- package/dist/tet-components/{p-122f3d3c.entry.js → p-a31f3a9a.entry.js} +1 -1
- package/dist/tet-components/{p-cf3456e2.entry.js → p-ada4d25e.entry.js} +1 -1
- package/dist/tet-components/{p-401e736e.entry.js → p-b2e718fd.entry.js} +1 -1
- package/dist/tet-components/{p-331e7bf2.entry.js → p-b7af088e.entry.js} +1 -1
- package/dist/tet-components/{p-cd86d0b1.entry.js → p-b8dc6b8f.entry.js} +1 -1
- package/dist/tet-components/{p-fc88ce77.entry.js → p-b9005e25.entry.js} +1 -1
- package/dist/tet-components/{p-f9c69d39.entry.js → p-bb1691e9.entry.js} +1 -1
- package/dist/tet-components/{p-a0baf31a.entry.js → p-bc83880b.entry.js} +1 -1
- package/dist/tet-components/{p-6babde37.entry.js → p-bcac4284.entry.js} +1 -1
- package/dist/tet-components/{p-46f6a051.entry.js → p-bcbb0768.entry.js} +1 -1
- package/dist/tet-components/{p-2b5b2c71.entry.js → p-be5be172.entry.js} +1 -1
- package/dist/tet-components/{p-5b5001cf.entry.js → p-bf65a1c5.entry.js} +1 -1
- package/dist/tet-components/{p-f93ab9f3.entry.js → p-bfaa6230.entry.js} +1 -1
- package/dist/tet-components/{p-900bd4e1.entry.js → p-c0f90a8e.entry.js} +1 -1
- package/dist/tet-components/{p-876009b7.entry.js → p-c2aa35fe.entry.js} +1 -1
- package/dist/tet-components/{p-d778c1fe.entry.js → p-c51611c6.entry.js} +1 -1
- package/dist/tet-components/{p-85f3f726.entry.js → p-c65639c0.entry.js} +1 -1
- package/dist/tet-components/{p-39ae25f5.entry.js → p-c735bfbc.entry.js} +1 -1
- package/dist/tet-components/{p-7fc933fe.entry.js → p-c855d22d.entry.js} +1 -1
- package/dist/tet-components/{p-9c837569.entry.js → p-c95500c7.entry.js} +1 -1
- package/dist/tet-components/{p-1080e977.entry.js → p-ca61e250.entry.js} +1 -1
- package/dist/tet-components/{p-b31168fc.entry.js → p-cb311987.entry.js} +1 -1
- package/dist/tet-components/{p-c4de9e32.entry.js → p-ccbe2f2a.entry.js} +1 -1
- package/dist/tet-components/{p-e17d0862.entry.js → p-cd87b2ca.entry.js} +1 -1
- package/dist/tet-components/p-ce264566.entry.js +1 -0
- package/dist/tet-components/{p-d06f8b4e.entry.js → p-d2127f71.entry.js} +1 -1
- package/dist/tet-components/{p-69c58fc4.entry.js → p-d83369f0.entry.js} +1 -1
- package/dist/tet-components/{p-f58bb61e.entry.js → p-dd8ba61f.entry.js} +1 -1
- package/dist/tet-components/p-e15c11c7.entry.js +1 -0
- package/dist/tet-components/{p-ed07c65a.entry.js → p-e39dc6d0.entry.js} +1 -1
- package/dist/tet-components/{p-7e7068af.entry.js → p-e3a61004.entry.js} +1 -1
- package/dist/tet-components/{p-75bbc14a.entry.js → p-e3ccb120.entry.js} +1 -1
- package/dist/tet-components/{p-255cd889.entry.js → p-ea7f687c.entry.js} +1 -1
- package/dist/tet-components/{p-78d6f52c.entry.js → p-ee6331bf.entry.js} +1 -1
- package/dist/tet-components/{p-edd42275.entry.js → p-f05d8d8d.entry.js} +1 -1
- package/dist/tet-components/{p-5fb62a1b.entry.js → p-f272a0ce.entry.js} +1 -1
- package/dist/tet-components/{p-87221449.entry.js → p-f3cd9c56.entry.js} +1 -1
- package/dist/tet-components/{p-a8051a99.js → p-f9e5405c.js} +1 -1
- package/dist/tet-components/{p-8bfd498e.entry.js → p-fa69d1cf.entry.js} +1 -1
- package/dist/tet-components/{p-ccfa9f31.entry.js → p-fc8d6963.entry.js} +1 -1
- package/dist/tet-components/{p-b98f7254.entry.js → p-fd5460fc.entry.js} +1 -1
- package/dist/tet-components/{p-2fb8ea65.entry.js → p-fda6a584.entry.js} +1 -1
- package/dist/tet-components/tet-components.css +2 -2
- package/dist/tet-components/tet-components.esm.js +1 -1
- package/dist/types/components/advanced/cards/tet-compare-card-v3/tet-compare-card-v3.d.ts +169 -0
- package/dist/types/components/simple/menu/tet-menu/tet-menu.d.ts +111 -1
- package/dist/types/components/simple/menu/tet-menu-mobile/tet-menu-mobile.d.ts +4 -0
- package/dist/types/components.d.ts +186 -3
- package/dist/types/services/api/services/catalog/product-comparison.d.ts +3 -3
- package/package.json +1 -1
- package/dist/tet-components/p-1fbb7d96.entry.js +0 -1
- package/dist/tet-components/p-83f43fdd.js +0 -2
- package/dist/tet-components/p-b0688983.entry.js +0 -1
- package/dist/tet-components/p-cac7dbf9.entry.js +0 -1
- package/dist/tet-components/p-d091fa60.entry.js +0 -1
- package/dist/tet-components/p-f81d95ae.js +0 -1
|
@@ -8,47 +8,312 @@ export class TetMenu {
|
|
|
8
8
|
this.active = false;
|
|
9
9
|
this.clickable = false;
|
|
10
10
|
this.firstLevelTitle = '';
|
|
11
|
-
this.firstLevelId =
|
|
11
|
+
this.firstLevelId = undefined;
|
|
12
12
|
this.firstLevelLink = '';
|
|
13
13
|
this.firstLevelIcon = '';
|
|
14
14
|
this.menuItemTheme = '';
|
|
15
15
|
this.showMenuItemAnimation = true;
|
|
16
16
|
this.subLevels = [];
|
|
17
17
|
this.darkMode = false;
|
|
18
|
+
this.parentSelector = '';
|
|
19
|
+
this.isMegaMenuLayout = false;
|
|
18
20
|
this.isSubmenuLeft = false;
|
|
21
|
+
this.megaActiveSubLevelIndex = -1;
|
|
22
|
+
this.isMegaMenuOpen = false;
|
|
23
|
+
this.isMegaMenuEscapeClosed = false;
|
|
19
24
|
}
|
|
25
|
+
/** The host element. */
|
|
26
|
+
el;
|
|
27
|
+
/** Stores 3rd level hover handlers to avoid duplicate listeners. */
|
|
28
|
+
thirdLevelMouseEnterHandlers = new WeakMap();
|
|
29
|
+
/** Parent element used for mega-menu close-on-parent-leave binding. */
|
|
30
|
+
megaParentElement = null;
|
|
20
31
|
/**
|
|
21
32
|
* Listener for windows resize events
|
|
22
33
|
*/
|
|
23
34
|
onWindowResize() {
|
|
35
|
+
this.syncLayout();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Handles host mouse leave to reset mega-menu leave-related state.
|
|
39
|
+
*/
|
|
40
|
+
onHostMouseLeave() {
|
|
41
|
+
this.handleMenuMouseLeave();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Handles host focus-in to reopen mega-menu after Escape dismissal when needed.
|
|
45
|
+
*/
|
|
46
|
+
onHostFocusIn() {
|
|
47
|
+
this.handleMenuFocusIn();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Recalculates interactive layout values.
|
|
51
|
+
*/
|
|
52
|
+
syncLayout = () => {
|
|
53
|
+
if (!this.isMegaMenuEnabled()) {
|
|
54
|
+
this.setMegaParentElement(null);
|
|
55
|
+
}
|
|
24
56
|
this.setupThirdLevelEvent();
|
|
57
|
+
this.updateDropdownLayout();
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Determines whether mega-menu logic should be active.
|
|
61
|
+
*/
|
|
62
|
+
isMegaMenuEnabled() {
|
|
63
|
+
return this.isMegaMenuLayout && this.type === 'main' && this.subLevels.length > 0;
|
|
25
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Binds/updates parent mouseleave listener for mega-menu close behavior.
|
|
67
|
+
*/
|
|
68
|
+
setMegaParentElement(parentElement) {
|
|
69
|
+
if (this.megaParentElement === parentElement) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (this.megaParentElement) {
|
|
73
|
+
this.megaParentElement.removeEventListener('mouseleave', this.handleMegaParentMouseLeave);
|
|
74
|
+
}
|
|
75
|
+
this.megaParentElement = parentElement;
|
|
76
|
+
this.megaParentElement?.addEventListener('mouseleave', this.handleMegaParentMouseLeave);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Closes mega-menu and clears active 2nd-level state.
|
|
80
|
+
*/
|
|
81
|
+
closeMegaMenu = () => {
|
|
82
|
+
if (!this.isMegaMenuEnabled()) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.isMegaMenuOpen = false;
|
|
86
|
+
this.clearMegaActiveSubLevel();
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Clears focus inside shadow root so :focus-within does not immediately reopen mega-menu.
|
|
90
|
+
*/
|
|
91
|
+
blurFocusedMenuItem() {
|
|
92
|
+
const focusedMenuItem = this.el.shadowRoot?.activeElement;
|
|
93
|
+
focusedMenuItem?.blur();
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Handles parent mouseleave for mega-menu close behavior.
|
|
97
|
+
*/
|
|
98
|
+
handleMegaParentMouseLeave = () => {
|
|
99
|
+
this.closeMegaMenu();
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Opens mega-menu and notifies sibling mega-menu instances to close.
|
|
103
|
+
*/
|
|
104
|
+
openMegaMenu() {
|
|
105
|
+
if (!this.isMegaMenuEnabled()) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this.isMegaMenuEscapeClosed = false;
|
|
109
|
+
this.isMegaMenuOpen = true;
|
|
110
|
+
globalThis.dispatchEvent(new CustomEvent('tet-menu-mega-open', { detail: this.el }));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Handles first-level pointer/focus entry:
|
|
114
|
+
* opens mega menu when available or notifies mega siblings to close.
|
|
115
|
+
*/
|
|
116
|
+
handleFirstLevelInteraction = () => {
|
|
117
|
+
if (this.isMegaMenuEnabled()) {
|
|
118
|
+
this.syncLayout();
|
|
119
|
+
this.openMegaMenu();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
globalThis.dispatchEvent(new CustomEvent('tet-menu-mega-open', { detail: this.el }));
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Resets Escape-dismissed state once pointer fully leaves this menu trigger area.
|
|
126
|
+
*/
|
|
127
|
+
handleMenuMouseLeave = () => {
|
|
128
|
+
if (!this.isMegaMenuEnabled()) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
this.clearMegaActiveSubLevel();
|
|
132
|
+
this.isMegaMenuEscapeClosed = false;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Reopens mega menu when focus re-enters menu content after an Escape dismissal.
|
|
136
|
+
*/
|
|
137
|
+
handleMenuFocusIn = () => {
|
|
138
|
+
if (!this.isMegaMenuEnabled() || !this.isMegaMenuEscapeClosed) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
this.openMegaMenu();
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Handles Escape to close mega-menu for both hover-open and keyboard-focus-open states.
|
|
145
|
+
*/
|
|
146
|
+
onWindowKeyDown(event) {
|
|
147
|
+
if (!this.isMegaMenuEnabled() || event.key !== 'Escape') {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const eventPath = typeof event.composedPath === 'function' ? event.composedPath() : [];
|
|
151
|
+
const isEventFromCurrentMenu = eventPath.includes(this.el);
|
|
152
|
+
if (!this.isMegaMenuOpen && !isEventFromCurrentMenu) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
this.isMegaMenuEscapeClosed = true;
|
|
156
|
+
this.closeMegaMenu();
|
|
157
|
+
this.blurFocusedMenuItem();
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Closes current mega-menu when another menu instance announces open state.
|
|
161
|
+
*/
|
|
162
|
+
onExternalMegaMenuOpen(event) {
|
|
163
|
+
if (!this.isMegaMenuEnabled() || event.detail === this.el) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.isMegaMenuEscapeClosed = true;
|
|
167
|
+
this.closeMegaMenu();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Sets active second-level item in mega-menu mode.
|
|
171
|
+
*/
|
|
172
|
+
setMegaActiveSubLevel(index, hasSubMenuItems) {
|
|
173
|
+
if (!this.isMegaMenuEnabled()) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.megaActiveSubLevelIndex = hasSubMenuItems ? index : -1;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Mirrors non-mega keyboard behavior:
|
|
180
|
+
* tabbing from a 2nd-level item with submenu should enter 3rd-level links.
|
|
181
|
+
*/
|
|
182
|
+
handleMegaSecondLevelKeyDown(event, index, hasSubMenuItems) {
|
|
183
|
+
if (!this.isMegaMenuEnabled() || !hasSubMenuItems || event.key !== 'Tab' || event.shiftKey) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
event.preventDefault();
|
|
187
|
+
this.setMegaActiveSubLevel(index, hasSubMenuItems);
|
|
188
|
+
globalThis.requestAnimationFrame(() => {
|
|
189
|
+
const firstThirdLevelLink = this.el.shadowRoot?.querySelector('.menu__dropdown__mega-third-list a');
|
|
190
|
+
firstThirdLevelLink?.focus();
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Handles Tab navigation within mega-menu 3rd-level links.
|
|
195
|
+
*/
|
|
196
|
+
handleMegaThirdLevelLinkKeyDown = (event) => {
|
|
197
|
+
if (!this.isMegaMenuEnabled() || event.key !== 'Tab') {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const megaThirdLevelLinks = Array.from(this.el.shadowRoot?.querySelectorAll('.menu__dropdown__mega-third-list a') ?? []);
|
|
201
|
+
if (megaThirdLevelLinks.length === 0) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const currentAnchor = event.currentTarget;
|
|
205
|
+
const currentIndex = megaThirdLevelLinks.indexOf(currentAnchor);
|
|
206
|
+
if (currentIndex < 0) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (event.shiftKey) {
|
|
210
|
+
if (currentIndex > 0) {
|
|
211
|
+
event.preventDefault();
|
|
212
|
+
megaThirdLevelLinks[currentIndex - 1]?.focus();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const activeSecondLevelIndex = this.megaActiveSubLevelIndex;
|
|
216
|
+
if (activeSecondLevelIndex < 0) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
const secondLevelLinks = this.el.shadowRoot?.querySelectorAll('.menu__dropdown__list--mega > li > a');
|
|
221
|
+
secondLevelLinks?.[activeSecondLevelIndex]?.focus();
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (currentIndex < megaThirdLevelLinks.length - 1) {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
megaThirdLevelLinks[currentIndex + 1]?.focus();
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const activeSecondLevelIndex = this.megaActiveSubLevelIndex;
|
|
230
|
+
if (activeSecondLevelIndex < 0) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const secondLevelLinks = this.el.shadowRoot?.querySelectorAll('.menu__dropdown__list--mega > li > a');
|
|
234
|
+
const nextSecondLevelLink = secondLevelLinks?.[activeSecondLevelIndex + 1];
|
|
235
|
+
if (nextSecondLevelLink) {
|
|
236
|
+
event.preventDefault();
|
|
237
|
+
nextSecondLevelLink.focus();
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* Clears active second-level item in mega-menu mode.
|
|
242
|
+
*/
|
|
243
|
+
clearMegaActiveSubLevel = () => {
|
|
244
|
+
if (!this.isMegaMenuEnabled()) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.megaActiveSubLevelIndex = -1;
|
|
248
|
+
};
|
|
26
249
|
/**
|
|
27
250
|
* Renders the first menu level.
|
|
28
251
|
*/
|
|
29
252
|
renderFirstLevel() {
|
|
30
|
-
const { firstLevelTitle, firstLevelLink, firstLevelId, firstLevelIcon, menuItemTheme, showMenuItemAnimation, active, clickable, type } = this;
|
|
253
|
+
const { firstLevelTitle, firstLevelLink, firstLevelId, firstLevelIcon, menuItemTheme, showMenuItemAnimation, active, subLevels, clickable, type } = this;
|
|
31
254
|
const link = clickable && firstLevelLink.length !== 0 ? firstLevelLink : 'javascript:void(0)';
|
|
32
255
|
const icon = firstLevelIcon ? this.renderIcon({ name: firstLevelIcon, invertIcon: true }) : '';
|
|
256
|
+
const hasActiveDescendant = type === 'main' && this.hasActiveSubLevels(subLevels);
|
|
257
|
+
const isFirstLevelActive = (active || hasActiveDescendant) && type !== 'login';
|
|
33
258
|
let menuItemThemeClass = '', showAnimation = false;
|
|
34
259
|
if (type === 'main') {
|
|
35
260
|
menuItemThemeClass = menuItemTheme ? `menu__first-level--theme-${menuItemTheme}` : '';
|
|
36
261
|
showAnimation = showMenuItemAnimation;
|
|
37
262
|
}
|
|
38
|
-
return (h("a", { id: firstLevelId, href: link, class: {
|
|
263
|
+
return (h("a", { id: firstLevelId, href: link, part: "first-level", onMouseEnter: this.handleFirstLevelInteraction, onFocus: this.handleFirstLevelInteraction, class: {
|
|
39
264
|
'menu__first-level': true,
|
|
40
|
-
'menu--active':
|
|
265
|
+
'menu--active': isFirstLevelActive,
|
|
41
266
|
'menu__first-level--themed': menuItemThemeClass.length > 0,
|
|
42
267
|
...(menuItemThemeClass && { [menuItemThemeClass]: true }),
|
|
43
268
|
...(showAnimation && { 'show-animation': true })
|
|
44
269
|
} }, icon, firstLevelTitle, this.renderChevron()));
|
|
45
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Checks whether any nested sub-level item is marked as active.
|
|
273
|
+
*/
|
|
274
|
+
hasActiveSubLevels(items) {
|
|
275
|
+
return items.some((item) => !!item.active || this.hasActiveSubLevels(item.subLevels ?? []));
|
|
276
|
+
}
|
|
46
277
|
/**
|
|
47
278
|
* Emit event when the component has been rendered.
|
|
48
279
|
* Calculates available space on screen after first full render to correctly render 3rd level navigation.
|
|
49
280
|
*/
|
|
50
281
|
componentDidRender() {
|
|
51
|
-
this.
|
|
282
|
+
this.syncLayout();
|
|
283
|
+
}
|
|
284
|
+
disconnectedCallback() {
|
|
285
|
+
this.setMegaParentElement(null);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Syncs dropdown size and position with parent container.
|
|
289
|
+
*/
|
|
290
|
+
updateDropdownLayout() {
|
|
291
|
+
if (!this.isMegaMenuEnabled()) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const dropdown = this.el.shadowRoot?.querySelector('.menu__dropdown');
|
|
295
|
+
if (!dropdown) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
const parentSelector = this.parentSelector?.trim();
|
|
299
|
+
const parentElement = parentSelector
|
|
300
|
+
? this.el.closest(parentSelector)
|
|
301
|
+
: this.el.parentElement;
|
|
302
|
+
if (!parentElement) {
|
|
303
|
+
this.setMegaParentElement(null);
|
|
304
|
+
dropdown.style.removeProperty('top');
|
|
305
|
+
dropdown.style.removeProperty('--menu-dropdown-hover-bridge-height');
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
this.setMegaParentElement(parentElement);
|
|
309
|
+
const parentRect = parentElement.getBoundingClientRect();
|
|
310
|
+
if (parentRect.width <= 0) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
const menuRect = this.el.getBoundingClientRect();
|
|
314
|
+
const hoverBridgeHeight = Math.max(0, parentRect.bottom - menuRect.bottom);
|
|
315
|
+
dropdown.style.top = `${parentRect.bottom}px`;
|
|
316
|
+
dropdown.style.setProperty('--menu-dropdown-hover-bridge-height', `${hoverBridgeHeight}px`);
|
|
52
317
|
}
|
|
53
318
|
/**
|
|
54
319
|
* Renders the chevron icon if the menu has sub-levels.
|
|
@@ -70,7 +335,7 @@ export class TetMenu {
|
|
|
70
335
|
if (!subLevel.active || type !== 'language') {
|
|
71
336
|
return '';
|
|
72
337
|
}
|
|
73
|
-
return (h("tet-icon", { name: "check", class: "menu__dropdown__list__checkmark", theme: this.darkMode ? 'dark' : 'light' }));
|
|
338
|
+
return (h("tet-icon", { name: "tc-check", class: "menu__dropdown__list__checkmark", theme: this.darkMode ? 'dark' : 'light' }));
|
|
74
339
|
}
|
|
75
340
|
/**
|
|
76
341
|
* Renders the dropdown of the menu.
|
|
@@ -80,51 +345,71 @@ export class TetMenu {
|
|
|
80
345
|
if (subLevels.length < 1) {
|
|
81
346
|
return '';
|
|
82
347
|
}
|
|
83
|
-
const
|
|
84
|
-
|
|
348
|
+
const isMegaMenuEnabled = this.isMegaMenuEnabled();
|
|
349
|
+
const megaIndex = isMegaMenuEnabled ? this.megaActiveSubLevelIndex : -1;
|
|
350
|
+
const activeMegaSubLevels = megaIndex >= 0 ? (subLevels[megaIndex]?.subLevels ?? []) : [];
|
|
351
|
+
const renderedSubLevels = subLevels.map((subLevel, index) => this.renderSubItem(subLevel, index, isMegaMenuEnabled));
|
|
352
|
+
const list = (h("ul", { class: { 'menu__dropdown__list': true, 'menu__dropdown__list--mega': isMegaMenuEnabled } }, renderedSubLevels));
|
|
353
|
+
return (h("div", { class: { 'menu__dropdown': true, 'menu__dropdown--mega': isMegaMenuEnabled } }, isMegaMenuEnabled
|
|
354
|
+
? (h("div", { class: "tet-grid" }, h("div", { class: "menu__dropdown__wrapper tet-grid__cell tet-grid__cell--span-all" }, h("div", { class: "menu__dropdown__mega-lists" }, list, h("div", { class: "menu__dropdown__mega-third" }, activeMegaSubLevels.length > 0 && (h("ul", { class: "menu__dropdown__mega-third-list" }, activeMegaSubLevels.map((_subLevel) => this.renderSublevelItem(_subLevel)))))), h("div", { class: "menu__dropdown__mega-banner" }, h("slot", { name: "banner" })))))
|
|
355
|
+
: list));
|
|
85
356
|
}
|
|
86
357
|
/**
|
|
87
358
|
* Renders the sub-levels of the menu.
|
|
88
359
|
* @param subLevel
|
|
89
360
|
*/
|
|
90
|
-
renderSubItem(subLevel) {
|
|
361
|
+
renderSubItem(subLevel, index, isMegaMenuEnabled) {
|
|
91
362
|
const subMenuItems = subLevel.subLevels?.map((_subLevel) => {
|
|
92
363
|
return this.renderSublevelItem(_subLevel);
|
|
93
364
|
});
|
|
365
|
+
const hasSubMenuItems = !!subMenuItems?.length;
|
|
366
|
+
const hasActiveDescendant = this.hasActiveSubLevels(subLevel.subLevels ?? []);
|
|
367
|
+
const subMenuChevronName = 'chevron-right';
|
|
94
368
|
let iconLeft = '';
|
|
95
369
|
let iconRight = '';
|
|
96
|
-
if (
|
|
97
|
-
iconLeft
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
iconRight
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
370
|
+
if (!this.isMegaMenuLayout) {
|
|
371
|
+
if (subLevel.iconLeft) {
|
|
372
|
+
iconLeft = this.renderIcon({
|
|
373
|
+
name: subLevel.iconLeft,
|
|
374
|
+
right: false,
|
|
375
|
+
id: subLevel.id,
|
|
376
|
+
size: subLevel.iconSize,
|
|
377
|
+
useDefaultColor: subLevel.useDefaultColor
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
else if (subLevel.imageSrc) {
|
|
381
|
+
iconLeft = this.renderImage(subLevel);
|
|
382
|
+
}
|
|
383
|
+
if (subLevel.iconRight) {
|
|
384
|
+
iconRight = this.renderIcon({
|
|
385
|
+
name: subLevel.iconRight,
|
|
386
|
+
right: true,
|
|
387
|
+
id: subLevel.id,
|
|
388
|
+
size: subLevel.iconSize
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
const subTitle = subLevel.subTitle && subLevel.subTitle.length !== 0 ? (h("div", { class: {
|
|
393
|
+
"menu__dropdown__list__sub-title": true,
|
|
394
|
+
"menu__dropdown__list__sub-title--mega": this.isMegaMenuLayout,
|
|
395
|
+
} }, subLevel.subTitle)) : ('');
|
|
396
|
+
const itemId = subLevel.id?.toString();
|
|
397
|
+
const subList = hasSubMenuItems && !isMegaMenuEnabled ? (h("div", { class: {
|
|
398
|
+
left: !isMegaMenuEnabled && this.isSubmenuLeft,
|
|
399
|
+
right: !isMegaMenuEnabled && !this.isSubmenuLeft,
|
|
400
|
+
menu__sublist: true
|
|
401
|
+
} }, h("ul", { class: { content: true } }, subMenuItems))) : null;
|
|
402
|
+
return (h("li", null, h("a", { id: itemId, href: subLevel.link, onMouseEnter: () => this.setMegaActiveSubLevel(index, hasSubMenuItems), onFocus: () => this.setMegaActiveSubLevel(index, hasSubMenuItems), onKeyDown: (event) => this.handleMegaSecondLevelKeyDown(event, index, hasSubMenuItems), class: {
|
|
403
|
+
'menu--active': !!subLevel.active || hasActiveDescendant,
|
|
404
|
+
'menu--mega-current': isMegaMenuEnabled && index === this.megaActiveSubLevelIndex,
|
|
405
|
+
'menu--highlighted': !!subLevel.highlighted,
|
|
406
|
+
'line-top': !!subLevel.lineTop,
|
|
407
|
+
'text-color-secondary': !!subLevel.textColorSecondary,
|
|
408
|
+
'translation-none': !!subLevel.translationNone,
|
|
409
|
+
'menu--submenu': hasSubMenuItems
|
|
125
410
|
}, tabIndex: 0 }, iconLeft, h("div", null, !!subLevel.badgeText
|
|
126
411
|
? h("span", { class: "menu__badge" }, subLevel.badgeText)
|
|
127
|
-
: null, h("div", null, subLevel.title), subTitle, this.renderCheckmark(subLevel)), iconRight,
|
|
412
|
+
: null, h("div", null, subLevel.title), subTitle, this.renderCheckmark(subLevel)), iconRight, hasSubMenuItems && (h("tet-icon", { class: "menu__chevron", name: subMenuChevronName, theme: this.darkMode ? 'dark' : 'light' }))), subList));
|
|
128
413
|
}
|
|
129
414
|
/**
|
|
130
415
|
* Renders the sub-levels of the menu.
|
|
@@ -133,31 +418,33 @@ export class TetMenu {
|
|
|
133
418
|
renderSublevelItem(subLevel) {
|
|
134
419
|
let iconLeft = '';
|
|
135
420
|
let iconRight = '';
|
|
136
|
-
if (
|
|
137
|
-
iconLeft
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
iconRight
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
'
|
|
160
|
-
'
|
|
421
|
+
if (!this.isMegaMenuLayout) {
|
|
422
|
+
if (subLevel.iconLeft) {
|
|
423
|
+
iconLeft = this.renderIcon({
|
|
424
|
+
name: subLevel.iconLeft,
|
|
425
|
+
right: false,
|
|
426
|
+
id: subLevel.id,
|
|
427
|
+
size: subLevel.iconSize,
|
|
428
|
+
useDefaultColor: subLevel.useDefaultColor
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
else if (subLevel.imageSrc) {
|
|
432
|
+
iconLeft = this.renderImage(subLevel);
|
|
433
|
+
}
|
|
434
|
+
if (subLevel.iconRight) {
|
|
435
|
+
iconRight = this.renderIcon({
|
|
436
|
+
name: subLevel.iconRight,
|
|
437
|
+
right: true,
|
|
438
|
+
id: subLevel.id,
|
|
439
|
+
size: subLevel.iconSize
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return (h("li", null, h("a", { id: subLevel.id, href: subLevel.link, onKeyDown: this.handleMegaThirdLevelLinkKeyDown, class: {
|
|
444
|
+
'menu--active': !!subLevel.active,
|
|
445
|
+
'menu--highlighted': !!subLevel.highlighted,
|
|
446
|
+
'line-top': !!subLevel.lineTop,
|
|
447
|
+
'text-color-secondary': !!subLevel.textColorSecondary
|
|
161
448
|
}, tabIndex: 0 }, iconLeft, h("div", null, h("div", null, h("span", null, subLevel.title), !!subLevel.badgeText
|
|
162
449
|
? h("span", { class: "menu__badge" }, subLevel.badgeText)
|
|
163
450
|
: null), this.renderCheckmark(subLevel)), iconRight)));
|
|
@@ -182,41 +469,60 @@ export class TetMenu {
|
|
|
182
469
|
return (h("div", { class: "menu__icon" }, h("img", { src: subLevel.imageSrc, alt: "" })));
|
|
183
470
|
}
|
|
184
471
|
setupThirdLevelEvent() {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const bottomPadding = 10;
|
|
201
|
-
const desiredTopViewport = Math.max(10, Math.min(parentRect.top, windowHeight - thirdLevelmenuHeight - bottomPadding));
|
|
202
|
-
const desiredTopOffset = desiredTopViewport - offsetRect.top;
|
|
203
|
-
thirdLevelmenu.style.top = `${desiredTopOffset}px`;
|
|
204
|
-
thirdLevelmenu.style.bottom = '';
|
|
205
|
-
const parentRight = parentRect.right;
|
|
206
|
-
this.isSubmenuLeft = windowWidth < parentRight + thirdLevelmenuWidth;
|
|
207
|
-
});
|
|
208
|
-
});
|
|
472
|
+
if (this.isMegaMenuEnabled()) {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
const thirdLevelmenus = this.el.shadowRoot?.querySelectorAll('.menu__sublist');
|
|
476
|
+
if (!thirdLevelmenus) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
thirdLevelmenus.forEach((thirdLevelmenu) => {
|
|
480
|
+
const menuItem = thirdLevelmenu.closest('li');
|
|
481
|
+
if (!menuItem) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
const parent = menuItem.querySelector('a');
|
|
485
|
+
if (!parent) {
|
|
486
|
+
return;
|
|
209
487
|
}
|
|
488
|
+
const existingHandler = this.thirdLevelMouseEnterHandlers.get(parent);
|
|
489
|
+
if (existingHandler) {
|
|
490
|
+
parent.removeEventListener('mouseenter', existingHandler);
|
|
491
|
+
this.thirdLevelMouseEnterHandlers.delete(parent);
|
|
492
|
+
}
|
|
493
|
+
thirdLevelmenu.style.removeProperty('top');
|
|
494
|
+
thirdLevelmenu.style.removeProperty('bottom');
|
|
495
|
+
const onMouseEnter = () => {
|
|
496
|
+
const windowWidth = window.innerWidth;
|
|
497
|
+
const windowHeight = window.innerHeight;
|
|
498
|
+
const parentRect = parent.getBoundingClientRect();
|
|
499
|
+
const thirdRectParent = thirdLevelmenu.offsetParent || null;
|
|
500
|
+
const offsetRect = thirdRectParent ? thirdRectParent.getBoundingClientRect() : { top: 0 };
|
|
501
|
+
const thirdLevelmenuWidth = thirdLevelmenu.offsetWidth;
|
|
502
|
+
const thirdLevelmenuHeight = thirdLevelmenu.offsetHeight;
|
|
503
|
+
// Desired top position in viewport coordinates
|
|
504
|
+
const bottomPadding = 10;
|
|
505
|
+
const desiredTopViewport = Math.max(10, Math.min(parentRect.top, windowHeight - thirdLevelmenuHeight - bottomPadding));
|
|
506
|
+
const desiredTopOffset = desiredTopViewport - offsetRect.top;
|
|
507
|
+
thirdLevelmenu.style.top = `${desiredTopOffset}px`;
|
|
508
|
+
thirdLevelmenu.style.bottom = '';
|
|
509
|
+
const parentRight = parentRect.right;
|
|
510
|
+
this.isSubmenuLeft = windowWidth < parentRight + thirdLevelmenuWidth;
|
|
511
|
+
};
|
|
512
|
+
parent.addEventListener('mouseenter', onMouseEnter);
|
|
513
|
+
this.thirdLevelMouseEnterHandlers.set(parent, onMouseEnter);
|
|
210
514
|
});
|
|
211
515
|
}
|
|
212
516
|
render() {
|
|
213
517
|
const { type } = this;
|
|
214
|
-
return (h(Host, { key: '
|
|
518
|
+
return (h(Host, { key: '981d8a58d272ace848d7a6c4c82e7916a4282991' }, h("div", { key: '3eb7afce24ff6373a43bc4405fbba7cb6a421e85', class: {
|
|
215
519
|
menu: true,
|
|
216
520
|
menu__main: type === 'main',
|
|
217
521
|
menu__language: type === 'language',
|
|
218
522
|
menu__login: type === 'login',
|
|
219
|
-
menu__dark: this.darkMode
|
|
523
|
+
menu__dark: this.darkMode,
|
|
524
|
+
'menu--mega-open': this.isMegaMenuEnabled() && this.isMegaMenuOpen,
|
|
525
|
+
'menu--mega-escape-closed': this.isMegaMenuEnabled() && this.isMegaMenuEscapeClosed
|
|
220
526
|
} }, this.renderFirstLevel(), this.renderSubLevels())));
|
|
221
527
|
}
|
|
222
528
|
static get is() { return "tet-menu"; }
|
|
@@ -263,7 +569,7 @@ export class TetMenu {
|
|
|
263
569
|
"optional": false,
|
|
264
570
|
"docs": {
|
|
265
571
|
"tags": [],
|
|
266
|
-
"text": "Determines whether the menu item should appear as active."
|
|
572
|
+
"text": "Determines whether the menu item should appear as active.\nFor `type=\"main\"`, it is also treated as active when any nested child item is active."
|
|
267
573
|
},
|
|
268
574
|
"attribute": "active",
|
|
269
575
|
"reflect": false,
|
|
@@ -314,14 +620,13 @@ export class TetMenu {
|
|
|
314
620
|
"references": {}
|
|
315
621
|
},
|
|
316
622
|
"required": false,
|
|
317
|
-
"optional":
|
|
623
|
+
"optional": true,
|
|
318
624
|
"docs": {
|
|
319
625
|
"tags": [],
|
|
320
626
|
"text": "The id of the first menu level."
|
|
321
627
|
},
|
|
322
628
|
"attribute": "first-level-id",
|
|
323
|
-
"reflect": false
|
|
324
|
-
"defaultValue": "null"
|
|
629
|
+
"reflect": false
|
|
325
630
|
},
|
|
326
631
|
"firstLevelLink": {
|
|
327
632
|
"type": "string",
|
|
@@ -440,14 +745,54 @@ export class TetMenu {
|
|
|
440
745
|
"attribute": "dark-mode",
|
|
441
746
|
"reflect": false,
|
|
442
747
|
"defaultValue": "false"
|
|
748
|
+
},
|
|
749
|
+
"parentSelector": {
|
|
750
|
+
"type": "string",
|
|
751
|
+
"mutable": false,
|
|
752
|
+
"complexType": {
|
|
753
|
+
"original": "string",
|
|
754
|
+
"resolved": "string",
|
|
755
|
+
"references": {}
|
|
756
|
+
},
|
|
757
|
+
"required": false,
|
|
758
|
+
"optional": false,
|
|
759
|
+
"docs": {
|
|
760
|
+
"tags": [],
|
|
761
|
+
"text": "The selector of the parent element."
|
|
762
|
+
},
|
|
763
|
+
"attribute": "parent-selector",
|
|
764
|
+
"reflect": false,
|
|
765
|
+
"defaultValue": "''"
|
|
766
|
+
},
|
|
767
|
+
"isMegaMenuLayout": {
|
|
768
|
+
"type": "boolean",
|
|
769
|
+
"mutable": false,
|
|
770
|
+
"complexType": {
|
|
771
|
+
"original": "boolean",
|
|
772
|
+
"resolved": "boolean",
|
|
773
|
+
"references": {}
|
|
774
|
+
},
|
|
775
|
+
"required": false,
|
|
776
|
+
"optional": false,
|
|
777
|
+
"docs": {
|
|
778
|
+
"tags": [],
|
|
779
|
+
"text": "Enables mega-menu behavior for main type menus by aligning the dropdown to the parent container."
|
|
780
|
+
},
|
|
781
|
+
"attribute": "is-mega-menu-layout",
|
|
782
|
+
"reflect": false,
|
|
783
|
+
"defaultValue": "false"
|
|
443
784
|
}
|
|
444
785
|
};
|
|
445
786
|
}
|
|
446
787
|
static get states() {
|
|
447
788
|
return {
|
|
448
|
-
"isSubmenuLeft": {}
|
|
789
|
+
"isSubmenuLeft": {},
|
|
790
|
+
"megaActiveSubLevelIndex": {},
|
|
791
|
+
"isMegaMenuOpen": {},
|
|
792
|
+
"isMegaMenuEscapeClosed": {}
|
|
449
793
|
};
|
|
450
794
|
}
|
|
795
|
+
static get elementRef() { return "el"; }
|
|
451
796
|
static get listeners() {
|
|
452
797
|
return [{
|
|
453
798
|
"name": "resize",
|
|
@@ -455,6 +800,30 @@ export class TetMenu {
|
|
|
455
800
|
"target": "window",
|
|
456
801
|
"capture": false,
|
|
457
802
|
"passive": true
|
|
803
|
+
}, {
|
|
804
|
+
"name": "mouseleave",
|
|
805
|
+
"method": "onHostMouseLeave",
|
|
806
|
+
"target": undefined,
|
|
807
|
+
"capture": false,
|
|
808
|
+
"passive": true
|
|
809
|
+
}, {
|
|
810
|
+
"name": "focusin",
|
|
811
|
+
"method": "onHostFocusIn",
|
|
812
|
+
"target": undefined,
|
|
813
|
+
"capture": false,
|
|
814
|
+
"passive": false
|
|
815
|
+
}, {
|
|
816
|
+
"name": "keydown",
|
|
817
|
+
"method": "onWindowKeyDown",
|
|
818
|
+
"target": "window",
|
|
819
|
+
"capture": false,
|
|
820
|
+
"passive": false
|
|
821
|
+
}, {
|
|
822
|
+
"name": "tet-menu-mega-open",
|
|
823
|
+
"method": "onExternalMegaMenuOpen",
|
|
824
|
+
"target": "window",
|
|
825
|
+
"capture": false,
|
|
826
|
+
"passive": false
|
|
458
827
|
}];
|
|
459
828
|
}
|
|
460
829
|
}
|