@tet/tet-components 1.4.27-testing → 1.4.28-staging
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-f852270f.js} +1 -1
- package/dist/cjs/{assets-f64f0e16.js → assets-b9d36649.js} +1 -1
- package/dist/cjs/{async-request-fcf33aba.js → async-request-4517f566.js} +1 -1
- package/dist/cjs/{http-codes-40da1e61.js → http-codes-062f76cf.js} +1 -1
- package/dist/cjs/{index-4b423f33.js → index-19a7608f.js} +1 -1
- package/dist/cjs/{index-3242ff3f.js → index-faec4c52.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{phone-055efd07.js → phone-d6be0dd2.js} +2 -2
- package/dist/cjs/{product-comparison-88a89820.js → product-comparison-aa80a77c.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 +3 -3
- 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 +492 -165
- package/dist/cjs/tet-checkbox.cjs.entry.js +1 -1
- 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 +3 -3
- 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-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-dropdown_2.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 +1 -1
- 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 +1 -1
- package/dist/cjs/tet-menu.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 +1 -1
- 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 +1 -1
- 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-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-switch.cjs.entry.js +1 -1
- 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 +1 -1
- 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-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-46514846.js} +2 -2
- package/dist/cjs/{translations-03c9de64.js → translations-89a0ec3d.js} +1 -1
- package/dist/collection/components/basic/carousel/tet-carousel/tet-carousel.css +0 -1
- package/dist/collection/components/basic/carousel/tet-carousel/tet-carousel.js +489 -160
- package/dist/components/index.js +1 -1
- package/dist/components/{p-67c5a58c.js → p-09e12e32.js} +1 -1
- package/dist/components/{p-bf18b5b7.js → p-0af4c96a.js} +2 -2
- package/dist/components/{p-68143dc1.js → p-0d4040e8.js} +5 -5
- package/dist/components/{p-a57bdbb3.js → p-11700d82.js} +4 -4
- package/dist/components/{p-8f56bf1c.js → p-13296f85.js} +2 -2
- package/dist/components/{p-df5d84f1.js → p-1469ed4f.js} +3 -3
- package/dist/components/{p-795a1c43.js → p-164c4f08.js} +4 -4
- package/dist/components/{p-aae07dc6.js → p-19f32f2a.js} +2 -2
- package/dist/components/{p-6fa17892.js → p-1fe9d8a5.js} +10 -10
- package/dist/components/{p-f76fad86.js → p-26ffcb52.js} +1 -1
- package/dist/components/{p-a6be19f9.js → p-29aa33c8.js} +1 -1
- package/dist/components/{p-af0662ff.js → p-2a189a6b.js} +1 -1
- package/dist/components/{p-ddcc69cd.js → p-308ed708.js} +2 -2
- package/dist/components/{p-193320bd.js → p-3447cfe2.js} +1 -1
- package/dist/components/{p-4468c9e9.js → p-3493f65f.js} +1 -1
- package/dist/components/{p-defc1e19.js → p-3cf8ea69.js} +14 -14
- package/dist/components/{p-4903892e.js → p-3d4fecca.js} +9 -9
- package/dist/components/{p-64690a6c.js → p-40893ddd.js} +3 -3
- package/dist/components/{p-74e1a749.js → p-41b79a2e.js} +6 -6
- package/dist/components/{p-50c4fd79.js → p-464c7198.js} +1 -1
- package/dist/components/{p-e4f06634.js → p-4db83698.js} +7 -7
- package/dist/components/{p-8a5c883e.js → p-5a3da1ac.js} +1 -1
- package/dist/components/{p-2c1233bc.js → p-5b460f62.js} +1 -1
- package/dist/components/{p-c1c77130.js → p-65a05865.js} +2 -2
- package/dist/components/{p-4b4a0334.js → p-6e9df8dd.js} +2 -2
- package/dist/components/{p-41260991.js → p-75612e20.js} +3 -3
- package/dist/components/{p-c964254d.js → p-8921cb9c.js} +1 -1
- package/dist/components/{p-49b5dcf4.js → p-8bbea05f.js} +2 -2
- package/dist/components/{p-5c6b063f.js → p-92423544.js} +2 -2
- package/dist/components/{p-48611429.js → p-95722fb3.js} +2 -2
- package/dist/components/{p-2b5669f6.js → p-99746f8e.js} +1 -1
- package/dist/components/{p-9783cca1.js → p-9b4b062e.js} +7 -7
- package/dist/components/{p-d57cec8c.js → p-a0f69423.js} +1 -1
- package/dist/components/{p-375a5cfa.js → p-a1135d10.js} +1 -1
- package/dist/components/{p-027f730e.js → p-a25b08b6.js} +7 -7
- package/dist/components/{p-461e1a38.js → p-a2c27d73.js} +1 -1
- package/dist/components/{p-e3cb1d2d.js → p-a31e7e42.js} +3 -3
- package/dist/components/{p-1b7b79a5.js → p-a3b7c408.js} +3 -3
- package/dist/components/{p-34265c9d.js → p-a830ca83.js} +2 -2
- package/dist/components/{p-25b93e8f.js → p-aa122c92.js} +1 -1
- package/dist/components/{p-59997b7c.js → p-aedb4093.js} +1 -1
- package/dist/components/{p-44201f97.js → p-b6841a9b.js} +1 -1
- package/dist/components/{p-7f859d29.js → p-bac1705f.js} +1 -1
- package/dist/components/{p-089612ee.js → p-c29a45f3.js} +10 -10
- package/dist/components/{p-def0e33f.js → p-c2ea4c67.js} +3 -3
- package/dist/components/{p-1035feaa.js → p-c4f77126.js} +3 -3
- package/dist/components/{p-af9beaa1.js → p-c6284dbe.js} +7 -7
- package/dist/components/{p-d22aed2d.js → p-c9cc0a5b.js} +6 -6
- package/dist/components/{p-04a2d6a8.js → p-d21c7be3.js} +1 -1
- package/dist/components/{p-be5d67d1.js → p-d298006c.js} +1 -1
- package/dist/components/{p-95cc2537.js → p-d2a4570d.js} +3 -3
- package/dist/components/{p-331ebe65.js → p-d2c3076d.js} +1 -1
- package/dist/components/{p-bef5a700.js → p-e9cec2be.js} +1 -1
- package/dist/components/{p-5472702d.js → p-ec4cea27.js} +5 -5
- package/dist/components/{p-1e624d81.js → p-f2402ed7.js} +2 -2
- package/dist/components/{p-0a575a94.js → p-f259ef5f.js} +6 -6
- package/dist/components/{p-e87a77a6.js → p-f4c5337a.js} +1 -1
- package/dist/components/{p-49251432.js → p-f5f56fe1.js} +2 -2
- 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 +494 -166
- 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 +9 -9
- 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-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 +3 -3
- 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 +2 -2
- 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 +2 -2
- package/dist/components/tet-menu.js +2 -2
- package/dist/components/tet-multi-step-dialog.js +5 -5
- package/dist/components/tet-navigation-mobile.js +2 -2
- 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-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-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-20e2d850.js} +1 -1
- package/dist/esm/{assets-e1349520.js → assets-894007df.js} +1 -1
- package/dist/esm/{async-request-4c945e13.js → async-request-ae1056de.js} +1 -1
- package/dist/esm/{http-codes-1927ea00.js → http-codes-cf0086d4.js} +1 -1
- package/dist/esm/{index-412df137.js → index-e3209c56.js} +1 -1
- package/dist/esm/{index-aac31bd2.js → index-e933a7d2.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{phone-1a920c5c.js → phone-62660137.js} +2 -2
- package/dist/esm/{product-comparison-dd90c721.js → product-comparison-cb8955f6.js} +1 -1
- package/dist/esm/tet-accordion.entry.js +1 -1
- package/dist/esm/tet-address-offers-filters-products_2.entry.js +3 -3
- 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 +492 -165
- package/dist/esm/tet-checkbox.entry.js +1 -1
- 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 +3 -3
- 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-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-dropdown_2.entry.js +1 -1
- package/dist/esm/tet-dynamic-card.entry.js +1 -1
- package/dist/esm/tet-expandable-input.entry.js +1 -1
- 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 +1 -1
- package/dist/esm/tet-menu.entry.js +1 -1
- package/dist/esm/tet-multi-step-dialog.entry.js +3 -3
- package/dist/esm/tet-navigation-mobile.entry.js +1 -1
- 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 +1 -1
- 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-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-switch.entry.js +1 -1
- 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 +1 -1
- 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-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-cf4d7d54.js} +2 -2
- package/dist/esm/{translations-4712c45f.js → translations-e60db8fd.js} +1 -1
- package/dist/tet-components/{p-55be4b32.entry.js → p-01cbb74c.entry.js} +1 -1
- package/dist/tet-components/{p-c31236d5.entry.js → p-0614c980.entry.js} +1 -1
- package/dist/tet-components/{p-4967b041.entry.js → p-08569f07.entry.js} +1 -1
- package/dist/tet-components/{p-79700f85.entry.js → p-0bda3eeb.entry.js} +1 -1
- package/dist/tet-components/{p-5391d594.entry.js → p-0bf60061.entry.js} +1 -1
- package/dist/tet-components/{p-028e8ace.entry.js → p-0d2c26f6.entry.js} +1 -1
- package/dist/tet-components/{p-7a3c1254.entry.js → p-127b2895.entry.js} +1 -1
- package/dist/tet-components/{p-26b112a2.entry.js → p-12f975ff.entry.js} +1 -1
- package/dist/tet-components/{p-2a43ccef.entry.js → p-14c15a69.entry.js} +1 -1
- package/dist/tet-components/{p-c13b2ba7.entry.js → p-1765c8c5.entry.js} +1 -1
- package/dist/tet-components/{p-040c0f07.entry.js → p-1a05c222.entry.js} +1 -1
- package/dist/tet-components/{p-4e58c5e2.entry.js → p-1b976fcb.entry.js} +1 -1
- package/dist/tet-components/{p-5533f71b.entry.js → p-1ea5d4bf.entry.js} +1 -1
- package/dist/tet-components/{p-bcca51cc.entry.js → p-1f5ed76c.entry.js} +1 -1
- package/dist/tet-components/{p-cf479331.entry.js → p-22c2b9f8.entry.js} +1 -1
- package/dist/tet-components/{p-6297692b.entry.js → p-239fa72a.entry.js} +1 -1
- package/dist/tet-components/{p-0690732e.entry.js → p-23f3b153.entry.js} +1 -1
- package/dist/tet-components/{p-be3a10d0.entry.js → p-24df18b9.entry.js} +1 -1
- package/dist/tet-components/{p-d9560c74.entry.js → p-24e724eb.entry.js} +1 -1
- package/dist/tet-components/{p-f6916bfc.entry.js → p-265701de.entry.js} +1 -1
- package/dist/tet-components/{p-00e4bbed.entry.js → p-27a27a6f.entry.js} +1 -1
- package/dist/tet-components/{p-b0fc3440.entry.js → p-2a558830.entry.js} +1 -1
- package/dist/tet-components/{p-33f2ed2e.entry.js → p-2a973b3c.entry.js} +1 -1
- package/dist/tet-components/{p-d8518d4b.js → p-2dbe670c.js} +1 -1
- package/dist/tet-components/{p-7056a120.entry.js → p-31d0b400.entry.js} +1 -1
- package/dist/tet-components/{p-629a9a5d.entry.js → p-32488c4e.entry.js} +1 -1
- package/dist/tet-components/{p-778c46a6.js → p-3ac57578.js} +1 -1
- package/dist/tet-components/{p-f06fb66c.entry.js → p-3b3fdcb0.entry.js} +1 -1
- package/dist/tet-components/{p-3fc6a020.entry.js → p-3b5e9fed.entry.js} +1 -1
- package/dist/tet-components/{p-f81b3bb0.js → p-4213c1d1.js} +1 -1
- package/dist/tet-components/{p-ee3604eb.entry.js → p-43eff59d.entry.js} +1 -1
- package/dist/tet-components/{p-d5b72171.entry.js → p-49779ee5.entry.js} +1 -1
- package/dist/tet-components/{p-e98108ba.entry.js → p-49da8f23.entry.js} +1 -1
- package/dist/tet-components/{p-81db4c30.entry.js → p-4d7f1c6e.entry.js} +1 -1
- package/dist/tet-components/{p-7c7fb42f.entry.js → p-4d935fc8.entry.js} +1 -1
- package/dist/tet-components/{p-73411459.entry.js → p-4fc641da.entry.js} +1 -1
- package/dist/tet-components/{p-122f3d3c.entry.js → p-548d7cc1.entry.js} +1 -1
- package/dist/tet-components/{p-f9a0b36a.entry.js → p-54cc6dd2.entry.js} +1 -1
- package/dist/tet-components/{p-6dde4d69.entry.js → p-55ded3a8.entry.js} +1 -1
- package/dist/tet-components/{p-71018cb8.entry.js → p-581b1f01.entry.js} +1 -1
- package/dist/tet-components/{p-ce850061.entry.js → p-589e8e4b.entry.js} +1 -1
- package/dist/tet-components/{p-5845a3dc.entry.js → p-59007fe7.entry.js} +1 -1
- package/dist/tet-components/{p-83f43fdd.js → p-5abb3bea.js} +1 -1
- package/dist/tet-components/{p-5a6fc34c.entry.js → p-5d56e074.entry.js} +1 -1
- package/dist/tet-components/{p-cde8057a.entry.js → p-60abca86.entry.js} +1 -1
- package/dist/tet-components/{p-8bfd498e.entry.js → p-63f6def9.entry.js} +1 -1
- package/dist/tet-components/p-660bdc27.js +1 -0
- package/dist/tet-components/{p-c10d5369.entry.js → p-6c6cd148.entry.js} +1 -1
- package/dist/tet-components/{p-cf11c4cd.entry.js → p-6c6fe82b.entry.js} +1 -1
- package/dist/tet-components/{p-ae8ff573.entry.js → p-6cf6894d.entry.js} +1 -1
- package/dist/tet-components/{p-a903f58f.entry.js → p-6e06eb15.entry.js} +1 -1
- package/dist/tet-components/{p-76526271.entry.js → p-6fb8c506.entry.js} +1 -1
- package/dist/tet-components/{p-32ece6e1.entry.js → p-6ffacde3.entry.js} +1 -1
- package/dist/tet-components/{p-d4dc17f5.entry.js → p-70bdb222.entry.js} +1 -1
- package/dist/tet-components/{p-fa446e53.entry.js → p-70cec2eb.entry.js} +1 -1
- package/dist/tet-components/{p-0ebbf5ef.js → p-726651bc.js} +1 -1
- package/dist/tet-components/{p-46975ec4.entry.js → p-73c190a2.entry.js} +1 -1
- package/dist/tet-components/{p-ed044f47.entry.js → p-79ee95e0.entry.js} +1 -1
- package/dist/tet-components/{p-09e92f79.entry.js → p-7a9db071.entry.js} +1 -1
- package/dist/tet-components/{p-b822a377.entry.js → p-7bd6f009.entry.js} +1 -1
- package/dist/tet-components/{p-5e8466e6.entry.js → p-835c7ee4.entry.js} +1 -1
- package/dist/tet-components/{p-3a3fd77f.entry.js → p-839ae15f.entry.js} +1 -1
- package/dist/tet-components/{p-bb7d4ae2.entry.js → p-8574b729.entry.js} +1 -1
- package/dist/tet-components/{p-5d70599c.entry.js → p-86b8ce79.entry.js} +1 -1
- package/dist/tet-components/{p-10e72480.entry.js → p-8b93b91f.entry.js} +1 -1
- package/dist/tet-components/{p-f5d4d8c8.entry.js → p-8fae4e03.entry.js} +1 -1
- package/dist/tet-components/{p-f16514db.entry.js → p-9bd457d2.entry.js} +1 -1
- package/dist/tet-components/{p-da0fc55d.entry.js → p-9c263933.entry.js} +1 -1
- package/dist/tet-components/{p-a8051a99.js → p-a476fd02.js} +1 -1
- package/dist/tet-components/{p-33768388.entry.js → p-a64706a6.entry.js} +1 -1
- package/dist/tet-components/{p-0d5562a1.entry.js → p-af86e2dc.entry.js} +1 -1
- package/dist/tet-components/{p-f68450a4.entry.js → p-b22de340.entry.js} +1 -1
- package/dist/tet-components/{p-0e2dbd84.entry.js → p-b29111f0.entry.js} +1 -1
- package/dist/tet-components/{p-ce4b6943.entry.js → p-b2c138f0.entry.js} +1 -1
- package/dist/tet-components/{p-7544dfd7.js → p-b39df477.js} +1 -1
- package/dist/tet-components/{p-872bbccf.entry.js → p-b468a922.entry.js} +1 -1
- package/dist/tet-components/{p-9c837569.entry.js → p-b4b90473.entry.js} +1 -1
- package/dist/tet-components/{p-7de684c1.entry.js → p-b61304cf.entry.js} +1 -1
- package/dist/tet-components/{p-1fd2adaf.js → p-b92dff8a.js} +1 -1
- package/dist/tet-components/{p-7a3e4581.entry.js → p-c094dfd6.entry.js} +1 -1
- package/dist/tet-components/{p-798aa31d.entry.js → p-c1b9f3f1.entry.js} +1 -1
- package/dist/tet-components/{p-9c36ecbd.entry.js → p-c76a4457.entry.js} +1 -1
- package/dist/tet-components/{p-43c3b078.entry.js → p-c87aa965.entry.js} +1 -1
- package/dist/tet-components/{p-b34e86ef.entry.js → p-c9583427.entry.js} +1 -1
- package/dist/tet-components/{p-0c6b6730.js → p-c9ddf890.js} +1 -1
- package/dist/tet-components/{p-75927057.entry.js → p-cc99e827.entry.js} +1 -1
- package/dist/tet-components/{p-b4ecbc40.entry.js → p-d028d7c4.entry.js} +1 -1
- package/dist/tet-components/{p-39796998.entry.js → p-d3db997e.entry.js} +1 -1
- package/dist/tet-components/{p-584f54a7.entry.js → p-d76479dc.entry.js} +1 -1
- package/dist/tet-components/p-d8542fed.entry.js +1 -0
- package/dist/tet-components/{p-62bcf382.entry.js → p-df99dc91.entry.js} +1 -1
- package/dist/tet-components/{p-a64e3e96.entry.js → p-e74416dc.entry.js} +1 -1
- package/dist/tet-components/{p-efdef0e5.entry.js → p-ec1e970f.entry.js} +1 -1
- package/dist/tet-components/{p-c9f21fde.entry.js → p-ec5b1040.entry.js} +1 -1
- package/dist/tet-components/{p-1d0c3563.entry.js → p-ef84df23.entry.js} +1 -1
- package/dist/tet-components/{p-2738fbb7.entry.js → p-efc8d952.entry.js} +1 -1
- package/dist/tet-components/{p-2328b1d4.entry.js → p-f9c98275.entry.js} +1 -1
- package/dist/tet-components/{p-43fd6ff8.entry.js → p-fa67ec09.entry.js} +1 -1
- package/dist/tet-components/{p-0f2d1a9c.entry.js → p-fdd44094.entry.js} +1 -1
- package/dist/tet-components/{p-4f5a19cb.entry.js → p-fe7dab47.entry.js} +1 -1
- package/dist/tet-components/tet-components.esm.js +1 -1
- package/dist/types/components/basic/carousel/tet-carousel/tet-carousel.d.ts +53 -11
- package/package.json +1 -1
- package/dist/tet-components/p-a0f6721c.entry.js +0 -1
- package/dist/tet-components/p-f81d95ae.js +0 -1
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
6
|
-
const translations = require('./translations-
|
|
5
|
+
const index = require('./index-faec4c52.js');
|
|
6
|
+
const translations = require('./translations-89a0ec3d.js');
|
|
7
7
|
require('./typecheck-d48810dc.js');
|
|
8
|
-
require('./http-codes-
|
|
8
|
+
require('./http-codes-062f76cf.js');
|
|
9
9
|
|
|
10
|
-
const tetCarouselCss = ":host{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;padding:0;margin:0}:host{--color-gray-light:#cdd2de;--color-ta070:#f5f6f8;--color-ta080:#e6e8ee;--color-ta100:#cdd2de;--color-ta200:#9ba5be;--color-ta300:#69789c;--color-ta500:#1e356a;--color-ta600:#051d59;--color-tc090:#d6e6fd;--color-tc100:#d1dffe;--color-tc300:#75a1fb;--color-tc500:#1a70f6;--color-tc600:#0060f5;--color-td500:#00F1F2;--color-td600:#01cbe0;--color-tf600:#f53b2a;--color-tg300:#2b3036;--color-tg400:#1d2128;--color-tg500:#12171e;--color-tg600:#01050c;--color-th500:#f5f5f5;--color-ti500:#869198;--color-ti600:#aeb7bc;--text-font:Gilroy, serif;--text-color-darker:var(--color-ta600);--text-color-dark:var(--color-ta500);--text-color-dark-theme:var(--color-th500);--icons-font:Tet Icons, serif}.icon.tet-search{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-search::before{content:\"\\e86e\"}.icon.tet-close-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close-circled::before{content:\"\\e85a\"}.icon.tet-close{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close::before{content:\"\\e85b\"}.icon.tet-check-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check-circled::before{content:\"\\e86c\"}.icon.tet-check{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check::before{content:\"\\e855\"}.icon.tet-chevron-up{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-up::before{content:\"\\e859\"}.icon.tet-chevron-down{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-down::before{content:\"\\e856\"}.icon.tet-clipboard{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-clipboard::before{content:\"\\e86a\"}.icon.tet-info{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-info::before{content:\"\\e81d\"}.icon.tet-done{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-done::before{content:\"\\e867\"}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}:host{--font-family-fallback:Gilroy, Arial, sans-serif;--font-family-headline:Gilroy;--font-family-content:Inter, var(--font-family-fallback);font-family:var(--font-family-content)}:host{--carousel-background:transparent;--carousel-dot-size:1rem;--carousel-buttons-bottom:-1rem;--carousel-dot-background:transparent;--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-margin:0;--carousel-dot-margin-mobile:1rem;--carousel-label-color:var(--tc-text-secondary);--carousel-dot-active-background:var(--tc-layer-inverse-primary);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover);--carousel-dot-active-hover-background:var(--tc-grey-80);--carousel-dots-gap:0.5rem;--carousel-buttons-gap:1rem;--carousel-track-gap:0;--carousel-track-height:100%;--carousel-item-width:100%;--carousel-item-height:100%;--carousel-buttons-right:2rem;--carousel-dots-bottom:-1rem;--carousel-nudge-animation-duration:1.5s;--carousel-gradient:var(--tc-background-primary);-webkit-tap-highlight-color:transparent;display:inline-block;cursor:pointer;width:100%}.tet-carousel{position:relative;width:100%;background:var(--carousel-background)}.tet-carousel.dark{--carousel-dot-active-background:var(--tc-layer-inverse-primary-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover-dark);--carousel-dot-active-hover-background:var(--tc-grey-80-dark);--carousel-label-color:var(--tc-text-secondary-dark);--carousel-gradient:var(--tc-background-primary-dark)}.tet-carousel__container{width:var(--carousel-item-width);max-width:var(--carousel-item-width);height:var(--carousel-track-height);position:relative;margin-bottom:var(--carousel-dot-margin-mobile)}.tet-carousel__controls{position:relative;display:flex;align-items:center;justify-content:center;height:fit-content;margin-bottom:var(--carousel-dot-margin-mobile);min-height:2.75rem;touch-action:manipulation}.tet-carousel__label{color:var(--carousel-label-color);margin-left:auto;margin-right:auto;margin-bottom:1rem;text-align:center;font-family:var(--font-family-content);font-size:0.875rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:-0.003125rem}.tet-carousel__track{touch-action:pan-y;display:flex;height:var(--carousel-track-height);will-change:transform}.tet-carousel__track--center{justify-content:center}.tet-carousel__track-content{display:flex;gap:var(--carousel-track-gap);will-change:transform}.tet-carousel__track-content--nudge{animation:tet-carousel-nudge var(--carousel-nudge-animation-duration) ease-in-out}@media (hover: hover) and (pointer: fine){.tet-carousel:hover .tet-carousel__track-content--nudge{animation-play-state:paused}}.tet-carousel__track-content>*{flex-shrink:0;display:flex;align-items:center;justify-content:center}.tet-carousel__buttons{position:absolute;right:0;bottom:50%;display:flex;transform:translateY(50%);gap:var(--carousel-buttons-gap);z-index:2}.tet-carousel__buttons--mobile{display:flex;left:0}.tet-carousel__buttons--desktop{display:none !important}.tet-carousel__dots{display:flex;width:100%;gap:var(--carousel-dots-gap);justify-content:center;align-items:center}.tet-carousel__dot{width:var(--carousel-dot-size);height:var(--carousel-dot-size);border-radius:50%;background:var(--carousel-dot-background);cursor:pointer;transition:background 0.2s;border:var(--carousel-dot-border);z-index:2;touch-action:manipulation}.tet-carousel__dot:hover{background:var(--carousel-dot-hover-background)}.tet-carousel__dot.active{background:var(--carousel-dot-active-background);border:none}.tet-carousel__dot.active:hover{background:var(--carousel-dot-active-hover-background)}.tet-carousel__dot:focus-visible{outline:0.125rem solid var(--tc-blue-40-dark);outline-offset:0.125rem}.tet-carousel__gradient-left,.tet-carousel__gradient-right{position:absolute;top:0;display:block;width:13.75rem;height:100%;transition:opacity 0.4s ease-out;pointer-events:none;z-index:20;opacity:0}.tet-carousel__gradient-left{background:linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);left:0}.tet-carousel__gradient-right{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);right:0}@keyframes tet-carousel-nudge{0%{transform:translateX(0)}50%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}70%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}100%{transform:translateX(0)}}@media all and (min-width: 46.25rem){.tet-carousel__controls{margin-bottom:var(--carousel-dot-margin)}.tet-carousel__label{font-size:1rem;line-height:1.5rem;letter-spacing:-0.00625rem}.tet-carousel__buttons{right:0.25rem}.tet-carousel__buttons--mobile{display:none}.tet-carousel__buttons--desktop{display:flex !important}}@media all and (min-width: 90rem){.tet-carousel__label{font-size:1.125rem;line-height:1.75rem}}";
|
|
10
|
+
const tetCarouselCss = ":host{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;padding:0;margin:0}:host{--color-gray-light:#cdd2de;--color-ta070:#f5f6f8;--color-ta080:#e6e8ee;--color-ta100:#cdd2de;--color-ta200:#9ba5be;--color-ta300:#69789c;--color-ta500:#1e356a;--color-ta600:#051d59;--color-tc090:#d6e6fd;--color-tc100:#d1dffe;--color-tc300:#75a1fb;--color-tc500:#1a70f6;--color-tc600:#0060f5;--color-td500:#00F1F2;--color-td600:#01cbe0;--color-tf600:#f53b2a;--color-tg300:#2b3036;--color-tg400:#1d2128;--color-tg500:#12171e;--color-tg600:#01050c;--color-th500:#f5f5f5;--color-ti500:#869198;--color-ti600:#aeb7bc;--text-font:Gilroy, serif;--text-color-darker:var(--color-ta600);--text-color-dark:var(--color-ta500);--text-color-dark-theme:var(--color-th500);--icons-font:Tet Icons, serif}.icon.tet-search{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-search::before{content:\"\\e86e\"}.icon.tet-close-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close-circled::before{content:\"\\e85a\"}.icon.tet-close{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close::before{content:\"\\e85b\"}.icon.tet-check-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check-circled::before{content:\"\\e86c\"}.icon.tet-check{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check::before{content:\"\\e855\"}.icon.tet-chevron-up{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-up::before{content:\"\\e859\"}.icon.tet-chevron-down{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-down::before{content:\"\\e856\"}.icon.tet-clipboard{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-clipboard::before{content:\"\\e86a\"}.icon.tet-info{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-info::before{content:\"\\e81d\"}.icon.tet-done{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-done::before{content:\"\\e867\"}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}:host{--font-family-fallback:Gilroy, Arial, sans-serif;--font-family-headline:Gilroy;--font-family-content:Inter, var(--font-family-fallback);font-family:var(--font-family-content)}:host{--carousel-background:transparent;--carousel-dot-size:1rem;--carousel-buttons-bottom:-1rem;--carousel-dot-background:transparent;--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-margin:0;--carousel-dot-margin-mobile:1rem;--carousel-label-color:var(--tc-text-secondary);--carousel-dot-active-background:var(--tc-layer-inverse-primary);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover);--carousel-dot-active-hover-background:var(--tc-grey-80);--carousel-dots-gap:0.5rem;--carousel-buttons-gap:1rem;--carousel-track-gap:0;--carousel-track-height:100%;--carousel-item-width:100%;--carousel-item-height:100%;--carousel-buttons-right:2rem;--carousel-dots-bottom:-1rem;--carousel-nudge-animation-duration:1.5s;--carousel-gradient:var(--tc-background-primary);-webkit-tap-highlight-color:transparent;display:inline-block;width:100%}.tet-carousel{position:relative;width:100%;background:var(--carousel-background)}.tet-carousel.dark{--carousel-dot-active-background:var(--tc-layer-inverse-primary-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover-dark);--carousel-dot-active-hover-background:var(--tc-grey-80-dark);--carousel-label-color:var(--tc-text-secondary-dark);--carousel-gradient:var(--tc-background-primary-dark)}.tet-carousel__container{width:var(--carousel-item-width);max-width:var(--carousel-item-width);height:var(--carousel-track-height);position:relative;margin-bottom:var(--carousel-dot-margin-mobile)}.tet-carousel__controls{position:relative;display:flex;align-items:center;justify-content:center;height:fit-content;margin-bottom:var(--carousel-dot-margin-mobile);min-height:2.75rem;touch-action:manipulation}.tet-carousel__label{color:var(--carousel-label-color);margin-left:auto;margin-right:auto;margin-bottom:1rem;text-align:center;font-family:var(--font-family-content);font-size:0.875rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:-0.003125rem}.tet-carousel__track{touch-action:pan-y;display:flex;height:var(--carousel-track-height);will-change:transform}.tet-carousel__track--center{justify-content:center}.tet-carousel__track-content{display:flex;gap:var(--carousel-track-gap);will-change:transform}.tet-carousel__track-content--nudge{animation:tet-carousel-nudge var(--carousel-nudge-animation-duration) ease-in-out}@media (hover: hover) and (pointer: fine){.tet-carousel:hover .tet-carousel__track-content--nudge{animation-play-state:paused}}.tet-carousel__track-content>*{flex-shrink:0;display:flex;align-items:center;justify-content:center}.tet-carousel__buttons{position:absolute;right:0;bottom:50%;display:flex;transform:translateY(50%);gap:var(--carousel-buttons-gap);z-index:2}.tet-carousel__buttons--mobile{display:flex;left:0}.tet-carousel__buttons--desktop{display:none !important}.tet-carousel__dots{display:flex;width:100%;gap:var(--carousel-dots-gap);justify-content:center;align-items:center}.tet-carousel__dot{width:var(--carousel-dot-size);height:var(--carousel-dot-size);border-radius:50%;background:var(--carousel-dot-background);cursor:pointer;transition:background 0.2s;border:var(--carousel-dot-border);z-index:2;touch-action:manipulation}.tet-carousel__dot:hover{background:var(--carousel-dot-hover-background)}.tet-carousel__dot.active{background:var(--carousel-dot-active-background);border:none}.tet-carousel__dot.active:hover{background:var(--carousel-dot-active-hover-background)}.tet-carousel__dot:focus-visible{outline:0.125rem solid var(--tc-blue-40-dark);outline-offset:0.125rem}.tet-carousel__gradient-left,.tet-carousel__gradient-right{position:absolute;top:0;display:block;width:13.75rem;height:100%;transition:opacity 0.4s ease-out;pointer-events:none;z-index:20;opacity:0}.tet-carousel__gradient-left{background:linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);left:0}.tet-carousel__gradient-right{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);right:0}@keyframes tet-carousel-nudge{0%{transform:translateX(0)}50%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}70%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}100%{transform:translateX(0)}}@media all and (min-width: 46.25rem){.tet-carousel__controls{margin-bottom:var(--carousel-dot-margin)}.tet-carousel__label{font-size:1rem;line-height:1.5rem;letter-spacing:-0.00625rem}.tet-carousel__buttons{right:0.25rem}.tet-carousel__buttons--mobile{display:none}.tet-carousel__buttons--desktop{display:flex !important}}@media all and (min-width: 90rem){.tet-carousel__label{font-size:1.125rem;line-height:1.75rem}}";
|
|
11
11
|
const TetCarouselStyle0 = tetCarouselCss;
|
|
12
12
|
|
|
13
13
|
const TetCarousel = class {
|
|
@@ -37,42 +37,73 @@ const TetCarousel = class {
|
|
|
37
37
|
static NUDGE_DISTANCE_PX = 16;
|
|
38
38
|
static NUDGE_IDLE_THRESHOLD_MS = 1500;
|
|
39
39
|
static GRADIENT_VISIBILITY_THRESHOLD_PX = 1;
|
|
40
|
+
static EDGE_DRAG_MAX_PX = 32;
|
|
41
|
+
static EDGE_DRAG_RESISTANCE = 0.95;
|
|
42
|
+
static MOUSE_DRAG_SMOOTHING_MS = 60;
|
|
43
|
+
focusableSelector = 'a[href], [tabindex]:not([tabindex="-1"])';
|
|
44
|
+
handleResize = () => {
|
|
45
|
+
this.getDotCount();
|
|
46
|
+
const assigned = this.getSlotElements();
|
|
47
|
+
if (!assigned?.length)
|
|
48
|
+
return;
|
|
49
|
+
const idx = Math.max(0, Math.min(this.activeItem, assigned.length - 1));
|
|
50
|
+
this.moveToItem(assigned[idx], idx);
|
|
51
|
+
this.checkGradient();
|
|
52
|
+
};
|
|
53
|
+
handleSlotChangeListener = () => this.handleSlotChange();
|
|
54
|
+
managedFocusableElements = [];
|
|
55
|
+
managedSlideFocusWithinListeners = [];
|
|
40
56
|
draggedAnchor = null;
|
|
41
57
|
dragMoved = false;
|
|
42
58
|
dragPointerStartX = 0;
|
|
43
59
|
dragStartX = 0;
|
|
60
|
+
dragStartActiveItem = 0;
|
|
61
|
+
dragPointerType = '';
|
|
44
62
|
nudgeTimeoutId;
|
|
45
63
|
nudgeGradientRafId;
|
|
46
64
|
lastInteractionAt = 0;
|
|
47
65
|
trackElement = null;
|
|
48
66
|
trackContentElement = null;
|
|
67
|
+
mobileBackButtonWrapper = null;
|
|
49
68
|
container;
|
|
50
69
|
leftGradientRef;
|
|
51
70
|
rightGradientRef;
|
|
52
71
|
slotObserver;
|
|
53
|
-
|
|
54
|
-
|
|
72
|
+
safeForceUpdate() {
|
|
73
|
+
try {
|
|
74
|
+
index.forceUpdate(this);
|
|
75
|
+
}
|
|
76
|
+
catch { }
|
|
77
|
+
}
|
|
78
|
+
syncTranslations(language) {
|
|
79
|
+
translations.processTranslations('tet-components', language).then(() => this.safeForceUpdate());
|
|
80
|
+
}
|
|
81
|
+
onLanguageChange(language) {
|
|
82
|
+
this.syncTranslations(language);
|
|
83
|
+
}
|
|
84
|
+
onActiveItemChange() {
|
|
85
|
+
this.updateSlideFocusableTabIndexes();
|
|
55
86
|
}
|
|
56
87
|
checkGradient() {
|
|
57
88
|
if (this.showGradient) {
|
|
58
|
-
const absOffset = Math.abs(this.getRealDragOffset());
|
|
59
89
|
const wrapperWidth = this.getViewportWidth();
|
|
60
90
|
const totalWidth = this.getSlotClientWidth();
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
91
|
+
const maxScrollableOffset = Math.max(0, totalWidth - wrapperWidth);
|
|
92
|
+
const rawScrollableOffset = -this.getRealDragOffset();
|
|
93
|
+
const clampedScrollableOffset = Math.max(0, Math.min(maxScrollableOffset, rawScrollableOffset));
|
|
94
|
+
const rightEdgeDistance = maxScrollableOffset - clampedScrollableOffset;
|
|
95
|
+
const rightEdge = rightEdgeDistance < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX;
|
|
96
|
+
if (clampedScrollableOffset < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX) {
|
|
97
|
+
this.leftGradientRef.style.opacity = '0';
|
|
98
|
+
this.rightGradientRef.style.opacity = '1';
|
|
99
|
+
}
|
|
100
|
+
else if (rightEdge) {
|
|
101
|
+
this.leftGradientRef.style.opacity = '1';
|
|
102
|
+
this.rightGradientRef.style.opacity = '0';
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.leftGradientRef.style.opacity = '1';
|
|
106
|
+
this.rightGradientRef.style.opacity = '1';
|
|
76
107
|
}
|
|
77
108
|
}
|
|
78
109
|
else {
|
|
@@ -88,7 +119,7 @@ const TetCarousel = class {
|
|
|
88
119
|
this.checkGradient();
|
|
89
120
|
}
|
|
90
121
|
componentWillLoad() {
|
|
91
|
-
|
|
122
|
+
this.syncTranslations(this.language);
|
|
92
123
|
}
|
|
93
124
|
getSlotElements() {
|
|
94
125
|
const slot = this.container?.querySelector('slot');
|
|
@@ -108,6 +139,9 @@ const TetCarousel = class {
|
|
|
108
139
|
getSlotClientWidth() {
|
|
109
140
|
return this.trackElement?.querySelector('slot')?.offsetWidth || window.innerWidth;
|
|
110
141
|
}
|
|
142
|
+
getMaxScrollableOffset() {
|
|
143
|
+
return Math.max(0, this.getSlotClientWidth() - this.getViewportWidth());
|
|
144
|
+
}
|
|
111
145
|
// Run a callback after layout/paint to ensure DOM measurements are up to date
|
|
112
146
|
afterLayout(cb) {
|
|
113
147
|
requestAnimationFrame(() => requestAnimationFrame(cb));
|
|
@@ -130,30 +164,140 @@ const TetCarousel = class {
|
|
|
130
164
|
const lastScreenBorder = Math.max(dotScreenLength, viewportWidth);
|
|
131
165
|
return this.isLast(lastScreenBorder, position);
|
|
132
166
|
}
|
|
133
|
-
|
|
167
|
+
getItemLayoutMetrics() {
|
|
134
168
|
const assigned = this.getSlotElements();
|
|
135
169
|
if (!assigned || assigned.length === 0)
|
|
170
|
+
return [];
|
|
171
|
+
return assigned.map((item, index) => {
|
|
172
|
+
const left = item.offsetLeft;
|
|
173
|
+
return {
|
|
174
|
+
item,
|
|
175
|
+
index,
|
|
176
|
+
left,
|
|
177
|
+
right: left + item.offsetWidth
|
|
178
|
+
};
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
getFullyVisibleItemCount() {
|
|
182
|
+
const metrics = this.getItemLayoutMetrics();
|
|
183
|
+
if (!metrics.length)
|
|
136
184
|
return 0;
|
|
137
185
|
const viewportWidth = this.getViewportWidth();
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
const visibleRight = absOffset + viewportWidth;
|
|
186
|
+
const visibleLeft = Math.abs(this.dragOffset);
|
|
187
|
+
const visibleRight = visibleLeft + viewportWidth;
|
|
141
188
|
let count = 0;
|
|
142
|
-
for (const
|
|
143
|
-
|
|
144
|
-
const trackRect = this.trackElement.getBoundingClientRect();
|
|
145
|
-
const relativeLeft = rect.left - trackRect.left;
|
|
146
|
-
const relativeRight = relativeLeft + item.offsetWidth;
|
|
147
|
-
// Fully visible when the entire item falls inside the viewport window
|
|
148
|
-
if (relativeLeft >= visibleLeft && relativeRight <= visibleRight) {
|
|
189
|
+
for (const { left, right } of metrics) {
|
|
190
|
+
if (left >= visibleLeft && right <= visibleRight) {
|
|
149
191
|
count++;
|
|
150
192
|
}
|
|
151
193
|
}
|
|
152
194
|
return count;
|
|
153
195
|
}
|
|
196
|
+
getVisibleItemCountFromIndex(startIndex) {
|
|
197
|
+
const metrics = this.getItemLayoutMetrics();
|
|
198
|
+
if (!metrics.length)
|
|
199
|
+
return 1;
|
|
200
|
+
const safeStart = Math.max(0, Math.min(startIndex, metrics.length - 1));
|
|
201
|
+
const viewportWidth = this.getViewportWidth();
|
|
202
|
+
const startLeft = metrics[safeStart].left;
|
|
203
|
+
const visibleRight = startLeft + viewportWidth + 0.5;
|
|
204
|
+
let count = 0;
|
|
205
|
+
for (let index = safeStart; index < metrics.length; index++) {
|
|
206
|
+
if (metrics[index].right <= visibleRight) {
|
|
207
|
+
count++;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return Math.max(1, count);
|
|
214
|
+
}
|
|
215
|
+
getFirstVisibleItemInViewport() {
|
|
216
|
+
const metrics = this.getItemLayoutMetrics();
|
|
217
|
+
if (!metrics.length)
|
|
218
|
+
return null;
|
|
219
|
+
const viewportLeft = Math.abs(this.dragOffset);
|
|
220
|
+
const edgeEpsilon = 0.5;
|
|
221
|
+
const current = metrics.find((metric) => metric.left <= viewportLeft + edgeEpsilon && metric.right > viewportLeft + edgeEpsilon);
|
|
222
|
+
if (current) {
|
|
223
|
+
const itemWidth = current.right - current.left;
|
|
224
|
+
const visibleWidth = current.right - viewportLeft;
|
|
225
|
+
const isAtLeastHalfVisible = visibleWidth >= itemWidth / 2;
|
|
226
|
+
if (isAtLeastHalfVisible || current.index === metrics.length - 1) {
|
|
227
|
+
return { item: current.item, index: current.index };
|
|
228
|
+
}
|
|
229
|
+
const next = metrics[current.index + 1];
|
|
230
|
+
if (next) {
|
|
231
|
+
return { item: next.item, index: next.index };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (viewportLeft <= metrics[0].left + edgeEpsilon) {
|
|
235
|
+
return { item: metrics[0].item, index: metrics[0].index };
|
|
236
|
+
}
|
|
237
|
+
const firstAfterViewport = metrics.find((metric) => metric.left > viewportLeft + edgeEpsilon);
|
|
238
|
+
if (firstAfterViewport) {
|
|
239
|
+
return { item: firstAfterViewport.item, index: firstAfterViewport.index };
|
|
240
|
+
}
|
|
241
|
+
const last = metrics.at(-1);
|
|
242
|
+
return { item: last.item, index: last.index };
|
|
243
|
+
}
|
|
244
|
+
getEdgeSnapTarget(direction) {
|
|
245
|
+
const metrics = this.getItemLayoutMetrics();
|
|
246
|
+
if (!metrics.length)
|
|
247
|
+
return null;
|
|
248
|
+
const viewportLeft = Math.abs(this.dragOffset);
|
|
249
|
+
const viewportRight = viewportLeft + this.getViewportWidth();
|
|
250
|
+
const first = metrics[0];
|
|
251
|
+
const last = metrics.at(-1);
|
|
252
|
+
if (direction < 0) {
|
|
253
|
+
const firstVisibleWidth = Math.min(first.right, viewportRight) - Math.max(first.left, viewportLeft);
|
|
254
|
+
if (firstVisibleWidth > 0 && firstVisibleWidth >= (first.right - first.left) / 2) {
|
|
255
|
+
return { item: first.item, index: first.index };
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (direction > 0) {
|
|
259
|
+
const lastVisibleWidth = Math.min(last.right, viewportRight) - Math.max(last.left, viewportLeft);
|
|
260
|
+
if (lastVisibleWidth > 0 && lastVisibleWidth >= (last.right - last.left) / 2) {
|
|
261
|
+
return { item: last.item, index: last.index };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
getSwipeTarget(direction) {
|
|
267
|
+
const assigned = this.getSlotElements();
|
|
268
|
+
if (!assigned || assigned.length === 0)
|
|
269
|
+
return null;
|
|
270
|
+
const edgeSnapTarget = this.getEdgeSnapTarget(direction);
|
|
271
|
+
if (edgeSnapTarget) {
|
|
272
|
+
return edgeSnapTarget;
|
|
273
|
+
}
|
|
274
|
+
const firstVisible = this.getFirstVisibleItemInViewport();
|
|
275
|
+
let targetIndex = firstVisible?.index ?? this.dragStartActiveItem;
|
|
276
|
+
if (direction > 0 && targetIndex <= this.dragStartActiveItem) {
|
|
277
|
+
targetIndex = this.dragStartActiveItem + 1;
|
|
278
|
+
}
|
|
279
|
+
if (direction < 0 && targetIndex >= this.dragStartActiveItem) {
|
|
280
|
+
targetIndex = this.dragStartActiveItem - 1;
|
|
281
|
+
}
|
|
282
|
+
targetIndex = Math.max(0, Math.min(assigned.length - 1, targetIndex));
|
|
283
|
+
const targetItem = assigned[targetIndex];
|
|
284
|
+
if (!targetItem)
|
|
285
|
+
return null;
|
|
286
|
+
return { item: targetItem, index: targetIndex };
|
|
287
|
+
}
|
|
154
288
|
getRealDragOffset() {
|
|
155
289
|
return this.dragOffset + this.getCurrentNudgeTranslateX();
|
|
156
290
|
}
|
|
291
|
+
applyEdgeDragResistance(offset, minDragOffset) {
|
|
292
|
+
if (offset > 0) {
|
|
293
|
+
return Math.min(TetCarousel.EDGE_DRAG_MAX_PX, offset * TetCarousel.EDGE_DRAG_RESISTANCE);
|
|
294
|
+
}
|
|
295
|
+
if (offset < minDragOffset) {
|
|
296
|
+
const overscrollPastEnd = offset - minDragOffset;
|
|
297
|
+
return minDragOffset + Math.max(-TetCarousel.EDGE_DRAG_MAX_PX, overscrollPastEnd * TetCarousel.EDGE_DRAG_RESISTANCE);
|
|
298
|
+
}
|
|
299
|
+
return offset;
|
|
300
|
+
}
|
|
157
301
|
getCurrentNudgeTranslateX() {
|
|
158
302
|
if (!this.isNudgeAnimating || !this.trackContentElement)
|
|
159
303
|
return 0;
|
|
@@ -172,53 +316,53 @@ const TetCarousel = class {
|
|
|
172
316
|
if (!assigned) {
|
|
173
317
|
this.dotCount = 1;
|
|
174
318
|
this.totalItems = 0;
|
|
175
|
-
|
|
319
|
+
this.activeDotIndex = 0;
|
|
320
|
+
return;
|
|
176
321
|
}
|
|
177
322
|
this.totalItems = assigned.length;
|
|
178
323
|
const viewportWidth = this.getViewportWidth();
|
|
179
324
|
const totalWidth = this.getSlotClientWidth();
|
|
180
325
|
// Precise: add a dot whenever there's any overflow beyond a full viewport
|
|
181
326
|
const exactScreens = Math.ceil(totalWidth / Math.max(1, viewportWidth));
|
|
182
|
-
|
|
327
|
+
const maxDots = Number.isFinite(this.maxDots) ? this.maxDots : exactScreens;
|
|
328
|
+
this.dotCount = Math.max(1, Math.min(maxDots, exactScreens));
|
|
329
|
+
this.activeDotIndex = this.clampDotIndex(this.activeDotIndex);
|
|
183
330
|
}
|
|
184
331
|
handleMove = () => {
|
|
185
332
|
const assigned = this.getSlotElements();
|
|
186
333
|
if (!assigned)
|
|
187
|
-
return
|
|
334
|
+
return;
|
|
188
335
|
const item = assigned[this.activeItem];
|
|
189
336
|
if (item) {
|
|
190
337
|
this.moveToItem(item);
|
|
191
338
|
}
|
|
192
339
|
};
|
|
193
|
-
|
|
340
|
+
navigateByStep(direction) {
|
|
194
341
|
this.registerUserInteraction();
|
|
195
|
-
|
|
342
|
+
const assigned = this.getSlotElements();
|
|
343
|
+
if (!assigned || assigned.length === 0)
|
|
196
344
|
return;
|
|
197
|
-
this.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
345
|
+
const previousDotIndex = this.activeDotIndex;
|
|
346
|
+
const viewportFirstVisible = this.getFirstVisibleItemInViewport();
|
|
347
|
+
const baseIndex = viewportFirstVisible?.index ?? this.activeItem;
|
|
348
|
+
const visibleItems = this.getVisibleItemCountFromIndex(baseIndex);
|
|
349
|
+
const targetIndex = Math.max(0, Math.min(assigned.length - 1, baseIndex + direction * visibleItems));
|
|
350
|
+
if (targetIndex === baseIndex)
|
|
351
|
+
return;
|
|
352
|
+
const targetItem = assigned[targetIndex];
|
|
353
|
+
if (!targetItem)
|
|
354
|
+
return;
|
|
355
|
+
this.moveToItem(targetItem, targetIndex);
|
|
356
|
+
// Keep arrow-driven dot navigation stable: one arrow press must not skip more than one dot.
|
|
357
|
+
if (Math.abs(this.activeDotIndex - previousDotIndex) > 1) {
|
|
358
|
+
this.moveToDotIndex(previousDotIndex + direction);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
handlePrev = () => {
|
|
362
|
+
this.navigateByStep(-1);
|
|
207
363
|
};
|
|
208
364
|
handleNext = () => {
|
|
209
|
-
this.
|
|
210
|
-
if (this.activeItem >= this.totalItems - 1)
|
|
211
|
-
return;
|
|
212
|
-
this.afterLayout(() => {
|
|
213
|
-
const visibleItems = Math.max(1, this.getFullyVisibleItemCount());
|
|
214
|
-
if (this.totalItems - this.activeItem < visibleItems) {
|
|
215
|
-
this.activeItem = this.totalItems - 1;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.activeItem += visibleItems;
|
|
219
|
-
}
|
|
220
|
-
this.handleMove();
|
|
221
|
-
});
|
|
365
|
+
this.navigateByStep(1);
|
|
222
366
|
};
|
|
223
367
|
moveToLastScreen = () => {
|
|
224
368
|
const wrapperWidth = this.getViewportWidth();
|
|
@@ -239,9 +383,9 @@ const TetCarousel = class {
|
|
|
239
383
|
const assigned = this.getSlotElements();
|
|
240
384
|
if (!assigned)
|
|
241
385
|
return null;
|
|
386
|
+
const trackRect = this.trackElement.getBoundingClientRect();
|
|
242
387
|
for (const [index, item] of assigned.entries()) {
|
|
243
388
|
const rect = item.getBoundingClientRect();
|
|
244
|
-
const trackRect = this.trackElement.getBoundingClientRect();
|
|
245
389
|
let relativeLeft = rect.left - trackRect.left;
|
|
246
390
|
const gradientOffset = this.calculateGradient(item, relativeLeft);
|
|
247
391
|
if (relativeLeft >= target - this.swipeThreshold + gradientOffset) {
|
|
@@ -250,33 +394,94 @@ const TetCarousel = class {
|
|
|
250
394
|
}
|
|
251
395
|
return { item: assigned[0], index: 0 };
|
|
252
396
|
};
|
|
397
|
+
moveToDotIndex(idx) {
|
|
398
|
+
this.activeDotIndex = this.clampDotIndex(idx);
|
|
399
|
+
const maxScrollableOffset = this.getMaxScrollableOffset();
|
|
400
|
+
const isLastDot = this.dotCount - 1 === this.activeDotIndex && !this.isDragging;
|
|
401
|
+
const unclampedTargetOffset = isLastDot ? maxScrollableOffset : this.activeDotIndex * this.getDotScreenLength();
|
|
402
|
+
const targetOffset = Math.max(0, Math.min(unclampedTargetOffset, maxScrollableOffset));
|
|
403
|
+
const lastScreenElement = this.calcLastScreenElement(targetOffset);
|
|
404
|
+
if (!lastScreenElement) {
|
|
405
|
+
this.activeItem = 0;
|
|
406
|
+
this.dragOffset = 0;
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const { index } = lastScreenElement;
|
|
410
|
+
this.activeItem = index;
|
|
411
|
+
this.dragOffset = -targetOffset;
|
|
412
|
+
}
|
|
253
413
|
handleDotClick = (idx) => {
|
|
254
414
|
this.registerUserInteraction();
|
|
255
|
-
this.
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
if (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
415
|
+
this.moveToDotIndex(idx);
|
|
416
|
+
};
|
|
417
|
+
focusDot = (idx) => {
|
|
418
|
+
if (!this.container)
|
|
419
|
+
return;
|
|
420
|
+
const dots = Array.from(this.container.querySelectorAll('.tet-carousel__dot'));
|
|
421
|
+
dots[idx]?.focus();
|
|
422
|
+
};
|
|
423
|
+
getKeyboardTargetIndex(key, currentIndex, maxIndex) {
|
|
424
|
+
if (maxIndex < 1)
|
|
425
|
+
return null;
|
|
426
|
+
switch (key) {
|
|
427
|
+
case 'ArrowRight':
|
|
428
|
+
case 'ArrowDown':
|
|
429
|
+
return Math.min(maxIndex, currentIndex + 1);
|
|
430
|
+
case 'ArrowLeft':
|
|
431
|
+
case 'ArrowUp':
|
|
432
|
+
return Math.max(0, currentIndex - 1);
|
|
433
|
+
case 'Home':
|
|
434
|
+
return 0;
|
|
435
|
+
case 'End':
|
|
436
|
+
return maxIndex;
|
|
437
|
+
default:
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
handleNavigationKeyDown(event, currentIndex, maxIndex, onNavigate, onFocus) {
|
|
442
|
+
const targetIndex = this.getKeyboardTargetIndex(event.key, currentIndex, maxIndex);
|
|
443
|
+
if (targetIndex === null)
|
|
444
|
+
return;
|
|
445
|
+
event.preventDefault();
|
|
446
|
+
event.stopPropagation();
|
|
447
|
+
if (!onNavigate(targetIndex))
|
|
448
|
+
return;
|
|
449
|
+
this.afterLayout(() => onFocus(targetIndex));
|
|
450
|
+
}
|
|
451
|
+
handleDotKeyDown = (event, idx) => {
|
|
452
|
+
if (event.key === 'Tab' && event.shiftKey) {
|
|
453
|
+
if (this.hasVisibleMobileBackButtonTarget())
|
|
268
454
|
return;
|
|
269
|
-
this.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
275
|
-
this.moveToLastScreen();
|
|
455
|
+
this.registerUserInteraction();
|
|
456
|
+
event.preventDefault();
|
|
457
|
+
event.stopPropagation();
|
|
458
|
+
this.afterLayout(() => this.focusSlideByIndex(this.activeItem));
|
|
459
|
+
return;
|
|
276
460
|
}
|
|
461
|
+
this.handleNavigationKeyDown(event, idx, this.dotCount - 1, (targetIdx) => {
|
|
462
|
+
this.handleDotClick(targetIdx);
|
|
463
|
+
return true;
|
|
464
|
+
}, (targetIdx) => this.focusDot(targetIdx));
|
|
277
465
|
};
|
|
466
|
+
isElementVisible(element) {
|
|
467
|
+
if (!element.isConnected)
|
|
468
|
+
return false;
|
|
469
|
+
if (element.hidden || element.hasAttribute('hidden'))
|
|
470
|
+
return false;
|
|
471
|
+
if (element.getClientRects().length === 0)
|
|
472
|
+
return false;
|
|
473
|
+
const style = getComputedStyle(element);
|
|
474
|
+
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
475
|
+
}
|
|
476
|
+
hasVisibleMobileBackButtonTarget() {
|
|
477
|
+
if (this.isLeftNavigationDisabled())
|
|
478
|
+
return false;
|
|
479
|
+
const wrapper = this.mobileBackButtonWrapper;
|
|
480
|
+
return !!wrapper && this.isElementVisible(wrapper);
|
|
481
|
+
}
|
|
278
482
|
onPointerDown = (e) => {
|
|
279
483
|
this.registerUserInteraction();
|
|
484
|
+
this.dragPointerType = e.pointerType || 'mouse';
|
|
280
485
|
e.preventDefault();
|
|
281
486
|
e.stopPropagation();
|
|
282
487
|
e.stopImmediatePropagation();
|
|
@@ -284,9 +489,11 @@ const TetCarousel = class {
|
|
|
284
489
|
this.dragStartX = e.screenX;
|
|
285
490
|
this.dragMoved = false;
|
|
286
491
|
this.dragPointerStartX = e.screenX;
|
|
492
|
+
this.dragStartActiveItem = this.activeItem;
|
|
287
493
|
document.body.style.userSelect = 'none';
|
|
288
494
|
document.addEventListener('pointermove', this.onPointerMove);
|
|
289
495
|
document.addEventListener('pointerup', this.onPointerUp);
|
|
496
|
+
document.addEventListener('pointercancel', this.onPointerUp);
|
|
290
497
|
let el = e.target;
|
|
291
498
|
this.draggedAnchor = null;
|
|
292
499
|
while (el) {
|
|
@@ -300,7 +507,6 @@ const TetCarousel = class {
|
|
|
300
507
|
onPointerMove = (e) => {
|
|
301
508
|
if (!this.isDragging)
|
|
302
509
|
return;
|
|
303
|
-
this.registerUserInteraction();
|
|
304
510
|
// Only consider this a move (and prevent clicks) when movement exceeds a small threshold.
|
|
305
511
|
const moveDistanceFromStart = Math.abs(e.screenX - this.dragPointerStartX);
|
|
306
512
|
if (!this.dragMoved && moveDistanceFromStart > 5) {
|
|
@@ -318,84 +524,117 @@ const TetCarousel = class {
|
|
|
318
524
|
this.dragStartX = e.screenX;
|
|
319
525
|
const wrapperWidth = this.getViewportWidth();
|
|
320
526
|
const totalWidth = this.getSlotClientWidth();
|
|
321
|
-
const
|
|
322
|
-
|
|
323
|
-
|
|
527
|
+
const minDragOffset = -(totalWidth - wrapperWidth);
|
|
528
|
+
this.dragOffset = this.applyEdgeDragResistance(_dragOffset, minDragOffset);
|
|
529
|
+
const firstVisible = this.getFirstVisibleItemInViewport();
|
|
530
|
+
if (firstVisible && this.activeItem !== firstVisible.index) {
|
|
531
|
+
this.activeItem = firstVisible.index;
|
|
324
532
|
}
|
|
325
533
|
};
|
|
326
|
-
|
|
327
|
-
|
|
534
|
+
releaseTrackPointerCapture(pointerId) {
|
|
535
|
+
try {
|
|
536
|
+
this.trackElement?.releasePointerCapture?.(pointerId);
|
|
537
|
+
}
|
|
538
|
+
catch { }
|
|
539
|
+
}
|
|
540
|
+
getMinDragOffset() {
|
|
541
|
+
const wrapperWidth = this.getViewportWidth();
|
|
542
|
+
const totalWidth = this.getSlotClientWidth();
|
|
543
|
+
return -(totalWidth - wrapperWidth);
|
|
544
|
+
}
|
|
545
|
+
snapToEdge(minDragOffset) {
|
|
546
|
+
const hitStartEdge = this.dragOffset > 0;
|
|
547
|
+
this.activeItem = hitStartEdge ? 0 : Math.max(0, this.totalItems - 1);
|
|
548
|
+
this.activeDotIndex = hitStartEdge ? 0 : Math.max(0, this.dotCount - 1);
|
|
549
|
+
this.dragOffset = hitStartEdge ? 0 : minDragOffset;
|
|
550
|
+
}
|
|
551
|
+
moveBySwipeDelta(delta) {
|
|
552
|
+
if (Math.abs(delta) <= this.swipeThreshold) {
|
|
553
|
+
this.activeItem = this.dragStartActiveItem;
|
|
554
|
+
this.afterLayout(() => this.handleMove());
|
|
328
555
|
return;
|
|
329
|
-
this.registerUserInteraction();
|
|
330
|
-
if (this.trackElement) {
|
|
331
|
-
try {
|
|
332
|
-
this.trackElement.releasePointerCapture?.(e.pointerId);
|
|
333
|
-
}
|
|
334
|
-
catch { }
|
|
335
556
|
}
|
|
557
|
+
const direction = delta < 0 ? 1 : -1;
|
|
558
|
+
const swipeTarget = this.getSwipeTarget(direction);
|
|
559
|
+
if (swipeTarget) {
|
|
560
|
+
this.moveToItem(swipeTarget.item, swipeTarget.index);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
finalizePointerDrag() {
|
|
564
|
+
document.body.style.userSelect = '';
|
|
565
|
+
document.removeEventListener('pointermove', this.onPointerMove);
|
|
566
|
+
document.removeEventListener('pointerup', this.onPointerUp);
|
|
567
|
+
document.removeEventListener('pointercancel', this.onPointerUp);
|
|
568
|
+
this.dragPointerType = '';
|
|
569
|
+
}
|
|
570
|
+
preventClickAfterDrag() {
|
|
571
|
+
if (!this.draggedAnchor || !this.dragMoved)
|
|
572
|
+
return;
|
|
573
|
+
const preventClick = (ev) => {
|
|
574
|
+
ev.preventDefault();
|
|
575
|
+
ev.stopPropagation();
|
|
576
|
+
this.draggedAnchor?.removeEventListener('click', preventClick, true);
|
|
577
|
+
};
|
|
578
|
+
this.draggedAnchor.addEventListener('click', preventClick, true);
|
|
579
|
+
}
|
|
580
|
+
onPointerUp = (e) => {
|
|
336
581
|
if (!this.isDragging)
|
|
337
582
|
return;
|
|
338
|
-
|
|
583
|
+
this.registerUserInteraction();
|
|
584
|
+
this.releaseTrackPointerCapture(e.pointerId);
|
|
339
585
|
this.isDragging = false;
|
|
340
|
-
|
|
586
|
+
const minDragOffset = this.getMinDragOffset();
|
|
587
|
+
const isOutOfBounds = this.dragOffset > 0 || this.dragOffset < minDragOffset;
|
|
341
588
|
const delta = e.screenX - this.dragPointerStartX;
|
|
342
|
-
if (
|
|
343
|
-
|
|
344
|
-
this.handleNext();
|
|
345
|
-
}
|
|
346
|
-
if (delta > 0) {
|
|
347
|
-
this.handlePrev();
|
|
348
|
-
}
|
|
589
|
+
if (isOutOfBounds) {
|
|
590
|
+
this.snapToEdge(minDragOffset);
|
|
349
591
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
document.removeEventListener('pointerup', this.onPointerUp);
|
|
353
|
-
if (this.draggedAnchor && this.dragMoved) {
|
|
354
|
-
const preventClick = (ev) => {
|
|
355
|
-
ev.preventDefault();
|
|
356
|
-
ev.stopPropagation();
|
|
357
|
-
this.draggedAnchor?.removeEventListener('click', preventClick, true);
|
|
358
|
-
};
|
|
359
|
-
this.draggedAnchor.addEventListener('click', preventClick, true);
|
|
592
|
+
else {
|
|
593
|
+
this.moveBySwipeDelta(delta);
|
|
360
594
|
}
|
|
595
|
+
this.finalizePointerDrag();
|
|
596
|
+
this.preventClickAfterDrag();
|
|
361
597
|
};
|
|
362
|
-
_showButtons() {
|
|
598
|
+
_showButtons(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
|
|
363
599
|
if (!this.showButtons) {
|
|
364
600
|
return false;
|
|
365
601
|
}
|
|
366
|
-
if (
|
|
602
|
+
if (fullyVisibleItemCount >= this.totalItems) {
|
|
367
603
|
return false;
|
|
368
604
|
}
|
|
369
605
|
return true;
|
|
370
606
|
}
|
|
371
|
-
_showDots() {
|
|
607
|
+
_showDots(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
|
|
372
608
|
if (!this.showDots) {
|
|
373
609
|
return false;
|
|
374
610
|
}
|
|
375
|
-
if (this.
|
|
611
|
+
if (this.totalItems <= 0 || fullyVisibleItemCount >= this.totalItems) {
|
|
376
612
|
return false;
|
|
377
613
|
}
|
|
378
614
|
return true;
|
|
379
615
|
}
|
|
380
616
|
componentDidLoad() {
|
|
381
617
|
this.getDotCount();
|
|
382
|
-
window.addEventListener('resize', this.
|
|
383
|
-
this.addAnchorFocusListeners();
|
|
618
|
+
window.addEventListener('resize', this.handleResize);
|
|
384
619
|
this.checkGradient();
|
|
385
620
|
this.initSlotListeners();
|
|
386
621
|
this.syncNudgeSchedule();
|
|
622
|
+
this.refreshSlideFocusableElements();
|
|
387
623
|
}
|
|
388
624
|
handleSlotChange() {
|
|
389
625
|
this.getDotCount();
|
|
626
|
+
const maxItemIndex = Math.max(0, this.totalItems - 1);
|
|
627
|
+
this.activeItem = Math.max(0, Math.min(this.activeItem, maxItemIndex));
|
|
628
|
+
this.refreshSlideFocusableElements();
|
|
390
629
|
this.checkGradient();
|
|
391
|
-
|
|
630
|
+
this.safeForceUpdate();
|
|
392
631
|
}
|
|
393
632
|
initSlotListeners() {
|
|
394
633
|
const slot = this.container?.querySelector('slot');
|
|
395
634
|
if (!slot)
|
|
396
635
|
return;
|
|
397
636
|
// add listeners for slot elements
|
|
398
|
-
slot.addEventListener('slotchange',
|
|
637
|
+
slot.addEventListener('slotchange', this.handleSlotChangeListener);
|
|
399
638
|
// add listeners for slot element children
|
|
400
639
|
if (typeof slot.assignedElements !== 'function')
|
|
401
640
|
return;
|
|
@@ -409,32 +648,105 @@ const TetCarousel = class {
|
|
|
409
648
|
subtree: false
|
|
410
649
|
});
|
|
411
650
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
651
|
+
isTabbableElement(element) {
|
|
652
|
+
if (element.tagName === 'A') {
|
|
653
|
+
return element.hasAttribute('href');
|
|
654
|
+
}
|
|
655
|
+
const tabIndexValue = element.getAttribute('tabindex');
|
|
656
|
+
return tabIndexValue !== null && tabIndexValue.trim() !== '-1';
|
|
657
|
+
}
|
|
658
|
+
getSlideFocusableElements(slide) {
|
|
659
|
+
const focusableElements = new Set();
|
|
660
|
+
if (this.isTabbableElement(slide)) {
|
|
661
|
+
focusableElements.add(slide);
|
|
662
|
+
}
|
|
663
|
+
const descendants = Array.from(slide.querySelectorAll(this.focusableSelector));
|
|
664
|
+
descendants.forEach((element) => {
|
|
665
|
+
if (this.isTabbableElement(element)) {
|
|
666
|
+
focusableElements.add(element);
|
|
420
667
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
668
|
+
});
|
|
669
|
+
if (slide.shadowRoot) {
|
|
670
|
+
const shadowDescendants = Array.from(slide.shadowRoot.querySelectorAll(this.focusableSelector));
|
|
671
|
+
shadowDescendants.forEach((element) => {
|
|
672
|
+
if (this.isTabbableElement(element)) {
|
|
673
|
+
focusableElements.add(element);
|
|
674
|
+
}
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
return Array.from(focusableElements);
|
|
678
|
+
}
|
|
679
|
+
clearManagedSlideFocusableElements() {
|
|
680
|
+
this.managedSlideFocusWithinListeners.forEach(({ slide, onFocusWithin }) => {
|
|
681
|
+
slide.removeEventListener('focusin', onFocusWithin);
|
|
682
|
+
});
|
|
683
|
+
this.managedSlideFocusWithinListeners = [];
|
|
684
|
+
this.managedFocusableElements.forEach(({ element, originalTabIndex, onKeyDown }) => {
|
|
685
|
+
element.removeEventListener('keydown', onKeyDown);
|
|
686
|
+
if (originalTabIndex === null) {
|
|
687
|
+
element.removeAttribute('tabindex');
|
|
424
688
|
}
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
if (el.shadowRoot) {
|
|
428
|
-
const deepTabIndexElements = Array.from(el.shadowRoot.querySelectorAll('[tabindex="0"]'));
|
|
429
|
-
anchors = anchors.concat(deepTabIndexElements);
|
|
689
|
+
else {
|
|
690
|
+
element.setAttribute('tabindex', originalTabIndex);
|
|
430
691
|
}
|
|
431
692
|
});
|
|
432
|
-
|
|
433
|
-
|
|
693
|
+
this.managedFocusableElements = [];
|
|
694
|
+
}
|
|
695
|
+
updateSlideFocusableTabIndexes() {
|
|
696
|
+
if (!this.managedFocusableElements.length)
|
|
697
|
+
return;
|
|
698
|
+
this.managedFocusableElements.forEach(({ element, slideIndex }) => {
|
|
699
|
+
element.setAttribute('tabindex', slideIndex === this.activeItem ? '0' : '-1');
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
focusSlideByIndex(index) {
|
|
703
|
+
const focusable = this.managedFocusableElements.find((element) => element.slideIndex === index);
|
|
704
|
+
const element = focusable?.element;
|
|
705
|
+
if (!element)
|
|
706
|
+
return;
|
|
707
|
+
try {
|
|
708
|
+
element.focus({ preventScroll: true });
|
|
709
|
+
}
|
|
710
|
+
catch { }
|
|
711
|
+
}
|
|
712
|
+
handleSlideKeyDown(event, idx) {
|
|
713
|
+
this.handleNavigationKeyDown(event, idx, this.totalItems - 1, (targetIdx) => {
|
|
714
|
+
const assigned = this.getSlotElements();
|
|
715
|
+
if (!assigned?.[targetIdx])
|
|
716
|
+
return false;
|
|
717
|
+
this.registerUserInteraction();
|
|
718
|
+
this.moveToItem(assigned[targetIdx], targetIdx);
|
|
719
|
+
return true;
|
|
720
|
+
}, (targetIdx) => this.focusSlideByIndex(targetIdx));
|
|
721
|
+
}
|
|
722
|
+
refreshSlideFocusableElements() {
|
|
723
|
+
this.clearManagedSlideFocusableElements();
|
|
724
|
+
const assigned = this.getSlotElements();
|
|
725
|
+
if (!assigned?.length)
|
|
726
|
+
return;
|
|
727
|
+
assigned.forEach((slide, slideIndex) => {
|
|
728
|
+
const onFocusWithin = () => {
|
|
434
729
|
this.registerUserInteraction();
|
|
435
|
-
this.moveToItem(
|
|
730
|
+
this.moveToItem(slide, slideIndex);
|
|
731
|
+
};
|
|
732
|
+
this.managedSlideFocusWithinListeners.push({
|
|
733
|
+
slide,
|
|
734
|
+
onFocusWithin
|
|
735
|
+
});
|
|
736
|
+
slide.addEventListener('focusin', onFocusWithin);
|
|
737
|
+
const focusableElements = this.getSlideFocusableElements(slide);
|
|
738
|
+
focusableElements.forEach((element) => {
|
|
739
|
+
const onKeyDown = (event) => this.handleSlideKeyDown(event, slideIndex);
|
|
740
|
+
this.managedFocusableElements.push({
|
|
741
|
+
element,
|
|
742
|
+
slideIndex,
|
|
743
|
+
originalTabIndex: element.getAttribute('tabindex'),
|
|
744
|
+
onKeyDown
|
|
745
|
+
});
|
|
746
|
+
element.addEventListener('keydown', onKeyDown);
|
|
436
747
|
});
|
|
437
748
|
});
|
|
749
|
+
this.updateSlideFocusableTabIndexes();
|
|
438
750
|
}
|
|
439
751
|
startNudgeGradientLoop() {
|
|
440
752
|
if (this.nudgeGradientRafId)
|
|
@@ -477,8 +789,16 @@ const TetCarousel = class {
|
|
|
477
789
|
isRightNavigationDisabled() {
|
|
478
790
|
return this.dotCount <= 1 || this.activeItem === this.totalItems - 1 || this.isLastViewport(-this.dragOffset);
|
|
479
791
|
}
|
|
792
|
+
isLeftNavigationDisabled() {
|
|
793
|
+
return this.dotCount <= 1 || this.activeItem === 0;
|
|
794
|
+
}
|
|
480
795
|
isNudgeEligible() {
|
|
481
|
-
return !!this.trackElement &&
|
|
796
|
+
return (!!this.trackElement &&
|
|
797
|
+
!this.isDragging &&
|
|
798
|
+
!this.isNudgeAnimating &&
|
|
799
|
+
!this.hasRecentInteraction() &&
|
|
800
|
+
!this.isRightNavigationDisabled() &&
|
|
801
|
+
this.dragOffset === 0);
|
|
482
802
|
}
|
|
483
803
|
scheduleNextNudge() {
|
|
484
804
|
if (this.nudgeAnimationInterval <= 0)
|
|
@@ -530,7 +850,7 @@ const TetCarousel = class {
|
|
|
530
850
|
dotIndex = this.dotCount - 1;
|
|
531
851
|
}
|
|
532
852
|
else {
|
|
533
|
-
dotIndex = Math.
|
|
853
|
+
dotIndex = Math.round((position + gradientOffset) / dotScreenLength);
|
|
534
854
|
}
|
|
535
855
|
this.activeDotIndex = this.clampDotIndex(dotIndex);
|
|
536
856
|
}
|
|
@@ -553,47 +873,54 @@ const TetCarousel = class {
|
|
|
553
873
|
disconnectedCallback() {
|
|
554
874
|
this.stopNudgeSchedule();
|
|
555
875
|
this.stopNudgeGradientLoop();
|
|
556
|
-
window.removeEventListener('resize', this.
|
|
876
|
+
window.removeEventListener('resize', this.handleResize);
|
|
877
|
+
this.clearManagedSlideFocusableElements();
|
|
557
878
|
const slot = this.container?.querySelector('slot');
|
|
558
879
|
if (slot) {
|
|
559
|
-
slot.removeEventListener('slotchange',
|
|
880
|
+
slot.removeEventListener('slotchange', this.handleSlotChangeListener);
|
|
560
881
|
}
|
|
561
882
|
if (this.slotObserver) {
|
|
562
|
-
this.slotObserver
|
|
883
|
+
this.slotObserver.disconnect();
|
|
563
884
|
this.slotObserver = null;
|
|
564
885
|
}
|
|
565
886
|
document.removeEventListener('pointermove', this.onPointerMove);
|
|
566
887
|
document.removeEventListener('pointerup', this.onPointerUp);
|
|
888
|
+
document.removeEventListener('pointercancel', this.onPointerUp);
|
|
567
889
|
}
|
|
568
890
|
render() {
|
|
569
|
-
|
|
891
|
+
const fullyVisibleItemCount = this.getFullyVisibleItemCount();
|
|
892
|
+
const showButtons = this._showButtons(fullyVisibleItemCount);
|
|
893
|
+
const showDots = this._showDots(fullyVisibleItemCount);
|
|
894
|
+
const showControls = showButtons || showDots;
|
|
895
|
+
let trackTransition = `transform ${this.transitionDuration}ms ${this.transitionTiming}`;
|
|
896
|
+
if (this.isDragging) {
|
|
897
|
+
if (this.dragPointerType === 'mouse') {
|
|
898
|
+
trackTransition = `transform ${TetCarousel.MOUSE_DRAG_SMOOTHING_MS}ms linear`;
|
|
899
|
+
}
|
|
900
|
+
else {
|
|
901
|
+
trackTransition = 'none';
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
return (index.h(index.Host, { key: '9767de8c2faf3b0e4830a392c9ba0d86c613646e' }, index.h("div", { key: 'fa87bbfcf929287a5440accd922698d4ad1f6d4b', class: { 'tet-carousel': true, [`${this.theme}`]: true }, ref: (el) => (this.container = el), part: "carousel" }, index.h("div", { key: 'f5650393d39f906e8c47fd299680b09f82b00a07', class: "tet-carousel__container" }, index.h("div", { key: 'f6bd47326c58ef355d35e33c037025e1d5a7b5a8', class: "tet-carousel__gradient-left", ref: (el) => {
|
|
570
905
|
this.leftGradientRef = el;
|
|
571
|
-
} }), index.h("div", { key: '
|
|
906
|
+
} }), index.h("div", { key: '685cad2d917518a83c6db28ef451563fe349c218', class: "tet-carousel__gradient-right", ref: (el) => {
|
|
572
907
|
this.rightGradientRef = el;
|
|
573
|
-
} }), index.h("div", { key: '
|
|
574
|
-
transform: `
|
|
575
|
-
transition:
|
|
576
|
-
|
|
908
|
+
} }), index.h("div", { key: '2f5acf14605c82e42c845766bd50e61a644a6fe6', class: `tet-carousel__track ${showControls ? '' : 'tet-carousel__track--center'}`, ref: (el) => (this.trackElement = el), style: {
|
|
909
|
+
transform: `translate3d(${this.dragOffset}px, 0, 0)`,
|
|
910
|
+
transition: trackTransition,
|
|
911
|
+
willChange: 'transform'
|
|
912
|
+
}, onPointerDown: this.onPointerDown, onPointerUp: this.onPointerUp }, index.h("div", { key: '84bcc48d810f6cd0d15022cdc6d48841187613ad', class: {
|
|
577
913
|
'tet-carousel__track-content': true,
|
|
578
914
|
'tet-carousel__track-content--nudge': this.isNudgeAnimating
|
|
579
915
|
}, ref: (el) => (this.trackContentElement = el), style: {
|
|
580
916
|
'--tet-carousel-nudge-distance': `${TetCarousel.NUDGE_DISTANCE_PX}px`
|
|
581
|
-
}, onAnimationEnd: this.onNudgeAnimationEnd }, index.h("slot", { key: '
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
}, "aria-label": translations.translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }))), this._showDots() && (index.h("div", { key: 'e205c6a0354ab7a66985759dd95f6f0aa086bba0', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (index.h("button", { type: "button", tabIndex: -1, class: `tet-carousel__dot${idx === this.activeDotIndex ? ' active' : ''}`, key: idx, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
|
|
585
|
-
if (!this.isDragging)
|
|
586
|
-
this.handleDotClick(idx);
|
|
587
|
-
}, onClick: () => this.handleDotClick(idx) }))))), this._showButtons() && (index.h("div", { key: 'ff9081c15d417e870db6e5e82f030bc031310027', class: "tet-carousel__buttons" }, index.h("tet-button", { key: '279bac2814813a2ce35308d556bca341f1b4a3bb', class: "tet-carousel__buttons--desktop", theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, tabIndex: -1, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
|
|
588
|
-
if (!this.isDragging)
|
|
589
|
-
this.handlePrev();
|
|
590
|
-
}, accessibilityLabel: translations.translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }), index.h("tet-button", { key: '320adc13d425ca84c26ef2d1cc7001220ce7d9c4', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconRight, "icon-mode": true, tabIndex: -1, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
|
|
591
|
-
if (!this.isDragging)
|
|
592
|
-
this.handleNext();
|
|
593
|
-
}, accessibilityLabel: translations.translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
|
|
917
|
+
}, onAnimationEnd: this.onNudgeAnimationEnd }, index.h("slot", { key: '008187ecc9d482ffd1565aaa2c6da818a7bf34ed' })))), !!this.label && index.h("div", { key: 'd040796e5dc156331fdb2356cd7bb20e7900f460', class: "tet-carousel__label" }, this.label), showControls && (index.h("div", { key: '4446a2194185bae6fef623d21790f89346378194', class: "tet-carousel__controls" }, showButtons && (index.h("div", { key: '6c3c10f149b11f9b6503392f16d2d74b526d74c8', class: "tet-carousel__buttons tet-carousel__buttons--mobile", ref: (el) => (this.mobileBackButtonWrapper = el) }, index.h("tet-button", { key: 'e8f3dad8e0978add649e844149b94072e366f4d8', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handlePrev(), accessibilityLabel: translations.translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }))), showDots && (index.h("div", { key: 'a747eb625e0bf36603a279f29f17ccac16c2e84c', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (index.h("button", { type: "button", tabIndex: idx === this.activeDotIndex ? 0 : -1, class: `tet-carousel__dot${idx === this.activeDotIndex ? ' active' : ''}`, key: idx, "aria-label": `${idx === this.activeDotIndex
|
|
918
|
+
? translations.translate('components-carousel-indicator-button-active')
|
|
919
|
+
: translations.translate('components-carousel-indicator-button')} ${idx + 1}/${this.dotCount}`, "aria-current": idx === this.activeDotIndex ? 'true' : undefined, onPointerDown: (e) => e.stopPropagation(), onKeyDown: (event) => this.handleDotKeyDown(event, idx), onClick: () => this.handleDotClick(idx) }))))), showButtons && (index.h("div", { key: '4ffa948621436b96fb9b8d6b10308ec9aa98dff3', class: "tet-carousel__buttons" }, index.h("tet-button", { key: '43de7d0b8e92e6b1e0e2b7f1ff5f851c4fc75ead', class: "tet-carousel__buttons--desktop", theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handlePrev(), accessibilityLabel: translations.translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }), index.h("tet-button", { key: 'eb7b1f82803e0bc39ffb41721a1a906dd5fc6d55', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconRight, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handleNext(), accessibilityLabel: translations.translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
|
|
594
920
|
}
|
|
595
921
|
static get watchers() { return {
|
|
596
922
|
"language": ["onLanguageChange"],
|
|
923
|
+
"activeItem": ["onActiveItemChange"],
|
|
597
924
|
"showGradient": ["checkGradient"],
|
|
598
925
|
"dragOffset": ["checkGradient"],
|
|
599
926
|
"nudgeAnimationInterval": ["onNudgeAnimIntervalChange"],
|