@tet/tet-components 1.3.157-testing → 1.4.0-production
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{address-5271d3aa.js → address-ac89cbf7.js} +1 -1
- package/dist/cjs/{assets-e3bb045c.js → assets-d8d3b4a0.js} +1 -1
- package/dist/cjs/{async-request-29b32d63.js → async-request-5585e750.js} +27 -26
- package/dist/cjs/compare-cards-tab-products-filters-10b06fe0.js +100 -0
- package/dist/cjs/{http-codes-2f72a8b2.js → http-codes-910040e7.js} +25 -19
- package/dist/cjs/{index-f559cb2e.js → index-4daaccaa.js} +1672 -1598
- package/dist/cjs/{index-84ede372.js → index-f89f05b8.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{phone-d414fe5a.js → phone-ed64bd26.js} +8 -6
- package/dist/cjs/{product-comparison-f784fb1b.js → product-comparison-e7afcafb.js} +1 -1
- package/dist/cjs/{tasks-af99ad61.js → tasks-807b08d3.js} +2 -2
- package/dist/cjs/tet-accordion_2.cjs.entry.js +62 -46
- package/dist/cjs/tet-address-offers-filters-products_2.cjs.entry.js +249 -232
- package/dist/cjs/tet-address-offers-view.cjs.entry.js +43 -35
- package/dist/cjs/tet-address-offers_4.cjs.entry.js +343 -313
- package/dist/cjs/tet-address-search.cjs.entry.js +175 -167
- package/dist/cjs/tet-asset-addresses.cjs.entry.js +106 -95
- package/dist/cjs/tet-autocomplete-dropdown.cjs.entry.js +40 -30
- package/dist/cjs/tet-autocomplete.cjs.entry.js +203 -190
- package/dist/cjs/tet-b2b-check-out-form_5.cjs.entry.js +280 -241
- package/dist/cjs/tet-b2b-configurator.cjs.entry.js +396 -378
- package/dist/cjs/tet-b2b-service-calculator.cjs.entry.js +28 -28
- package/dist/cjs/tet-banner-nav.cjs.entry.js +23 -11
- package/dist/cjs/tet-bar-graph.cjs.entry.js +222 -215
- package/dist/cjs/tet-border-radius.cjs.entry.js +1 -1
- package/dist/cjs/tet-business-card.cjs.entry.js +38 -32
- package/dist/cjs/tet-business-compare-card.cjs.entry.js +18 -11
- package/dist/cjs/tet-business-lines.cjs.entry.js +25 -26
- package/dist/cjs/tet-business-round-stepper.cjs.entry.js +10 -10
- package/dist/cjs/tet-button.cjs.entry.js +9 -9
- package/dist/cjs/tet-card-list.cjs.entry.js +557 -530
- package/dist/cjs/tet-carousel.cjs.entry.js +180 -184
- package/dist/cjs/tet-checkbox.cjs.entry.js +15 -11
- package/dist/cjs/tet-cloud-application-form-dialog.cjs.entry.js +30 -4
- package/dist/cjs/tet-cloud-configurator.cjs.entry.js +132 -124
- package/dist/cjs/tet-colors.cjs.entry.js +42 -42
- package/dist/cjs/tet-compare-card-v2.cjs.entry.js +51 -49
- package/dist/cjs/tet-compare-cards-tab.cjs.entry.js +29 -28
- package/dist/cjs/tet-compare-cards_2.cjs.entry.js +41 -34
- package/dist/cjs/tet-components.cjs.js +3 -3
- package/dist/cjs/tet-contact-form.cjs.entry.js +55 -46
- package/dist/cjs/tet-contact-info.cjs.entry.js +1 -1
- package/dist/cjs/tet-container_2.cjs.entry.js +62 -58
- package/dist/cjs/tet-customer-assets.cjs.entry.js +90 -85
- package/dist/cjs/tet-datepicker-header_4.cjs.entry.js +202 -187
- package/dist/cjs/tet-datepicker.cjs.entry.js +35 -30
- package/dist/cjs/tet-dialog.cjs.entry.js +41 -35
- package/dist/cjs/tet-dropdown_2.cjs.entry.js +137 -115
- package/dist/cjs/tet-dynamic-card.cjs.entry.js +68 -71
- package/dist/cjs/tet-expandable-input.cjs.entry.js +97 -80
- package/dist/cjs/tet-expansion-panel.cjs.entry.js +17 -19
- package/dist/cjs/tet-filter.cjs.entry.js +26 -11
- 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 +25 -24
- package/dist/cjs/tet-inline-message.cjs.entry.js +7 -7
- package/dist/cjs/tet-input.cjs.entry.js +47 -37
- 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.cjs.entry.js +1 -1
- package/dist/cjs/tet-loader.cjs.entry.js +1 -1
- package/dist/cjs/tet-macd-view.cjs.entry.js +50 -23
- package/dist/cjs/tet-menu-mobile.cjs.entry.js +13 -14
- package/dist/cjs/tet-menu.cjs.entry.js +4 -5
- package/dist/cjs/tet-multi-step-dialog.cjs.entry.js +86 -72
- package/dist/cjs/tet-navigation-mobile.cjs.entry.js +19 -15
- package/dist/cjs/tet-news-card-list.cjs.entry.js +35 -36
- package/dist/cjs/tet-number-input.cjs.entry.js +56 -42
- package/dist/cjs/tet-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/tet-price-view.cjs.entry.js +4 -4
- package/dist/cjs/tet-radio.cjs.entry.js +11 -7
- package/dist/cjs/tet-range-slider.cjs.entry.js +632 -620
- package/dist/cjs/tet-referral.cjs.entry.js +30 -26
- package/dist/cjs/tet-round-stepper.cjs.entry.js +2 -2
- package/dist/cjs/tet-spacing.cjs.entry.js +1 -1
- package/dist/cjs/tet-spinner.cjs.entry.js +16 -16
- package/dist/cjs/tet-stepper-input.cjs.entry.js +32 -26
- package/dist/cjs/tet-stepper-v2.cjs.entry.js +28 -29
- package/dist/cjs/tet-stepper-v3.cjs.entry.js +20 -21
- package/dist/cjs/tet-stepper.cjs.entry.js +62 -63
- package/dist/cjs/tet-switch.cjs.entry.js +4 -2
- package/dist/cjs/tet-tab-header.cjs.entry.js +68 -65
- package/dist/cjs/tet-table.cjs.entry.js +132 -138
- package/dist/cjs/tet-tag_2.cjs.entry.js +11 -11
- package/dist/cjs/tet-text-list.cjs.entry.js +12 -4
- package/dist/cjs/tet-textarea.cjs.entry.js +14 -14
- package/dist/cjs/tet-thank-you-view-v2.cjs.entry.js +36 -33
- package/dist/cjs/tet-thank-you-view-v3.cjs.entry.js +36 -33
- package/dist/cjs/tet-thank-you-view.cjs.entry.js +52 -46
- package/dist/cjs/tet-tv-gift-block.cjs.entry.js +15 -15
- package/dist/cjs/tet-tv-gift-list.cjs.entry.js +15 -15
- package/dist/cjs/{theme-wrapper-a5bbadf6.js → theme-wrapper-3f7c73ee.js} +2 -2
- package/dist/cjs/{translations-ed68775f.js → translations-62fb6b1c.js} +52 -51
- package/dist/cjs/{utils-ac9be2ff.js → utils-1f67c4b7.js} +23 -8
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/advanced/address/tet-address-offers/tet-address-offers.js +108 -101
- package/dist/collection/components/advanced/address/tet-address-offers-filters/address-offers-filters.js +128 -129
- package/dist/collection/components/advanced/address/tet-address-offers-filters/tet-address-offers-filters.js +17 -17
- package/dist/collection/components/advanced/address/tet-address-offers-filters-products/address-offers-products-filters.js +90 -89
- package/dist/collection/components/advanced/address/tet-address-offers-filters-products/tet-address-offers-filters-products.js +33 -19
- package/dist/collection/components/advanced/address/tet-address-search/tet-address-search.js +171 -163
- package/dist/collection/components/advanced/address/tet-autocomplete/tet-autocomplete.js +203 -206
- package/dist/collection/components/advanced/address/tet-autocomplete-dropdown/tet-autocomplete-dropdown.js +39 -29
- package/dist/collection/components/advanced/cards/tet-b2b-compare-card/tet-b2b-compare-card.js +75 -62
- package/dist/collection/components/advanced/cards/tet-business-card/tet-business-card.js +40 -30
- package/dist/collection/components/advanced/cards/tet-business-compare-card/tet-business-compare-card.js +17 -10
- package/dist/collection/components/advanced/cards/tet-business-summary-card/tet-business-summary-card.js +38 -32
- package/dist/collection/components/advanced/cards/tet-card-list/tet-card-list.js +356 -337
- package/dist/collection/components/advanced/cards/tet-compare-card/tet-compare-card.js +125 -119
- package/dist/collection/components/advanced/cards/tet-compare-card-v2/tet-compare-card-v2.js +51 -45
- package/dist/collection/components/advanced/cards/tet-compare-cards/tet-compare-cards.js +21 -15
- package/dist/collection/components/advanced/cards/tet-compare-cards-tab/compare-cards-tab-products-filters.js +89 -88
- package/dist/collection/components/advanced/cards/tet-compare-cards-tab/tet-compare-cards-tab.js +25 -22
- package/dist/collection/components/advanced/cards/tet-dynamic-card/tet-dynamic-card.js +67 -70
- package/dist/collection/components/advanced/cards/utils.js +23 -8
- package/dist/collection/components/advanced/customer/tet-asset-addresses/tet-asset-addresses.js +103 -92
- package/dist/collection/components/advanced/customer/tet-asset-availability-addresses/tet-asset-availability-addresses.js +29 -14
- package/dist/collection/components/advanced/customer/tet-customer-assets/tet-customer-assets.js +87 -82
- package/dist/collection/components/advanced/customer/tet-referral/tet-referral.js +24 -19
- package/dist/collection/components/advanced/dialog/tet-multi-step-dialog/tet-multi-step-dialog.js +83 -69
- package/dist/collection/components/advanced/forms/tet-availability-contact-form/tet-availability-contact-form.js +54 -43
- package/dist/collection/components/advanced/forms/tet-b2b-check-out-form/tet-b2b-check-out-form.js +11 -3
- package/dist/collection/components/advanced/forms/tet-contact-form/tet-contact-form.js +49 -40
- package/dist/collection/components/advanced/promotions/tv-gift/tet-tv-gift-block/tet-tv-gift-block.js +14 -13
- package/dist/collection/components/advanced/promotions/tv-gift/tet-tv-gift-list/tet-tv-gift-list.js +15 -13
- package/dist/collection/components/basic/buttons/tet-button/tet-button.js +8 -8
- package/dist/collection/components/basic/buttons/tet-checkbox/tet-checkbox.js +14 -10
- package/dist/collection/components/basic/buttons/tet-radio/tet-radio.js +10 -6
- package/dist/collection/components/basic/buttons/tet-switch/tet-switch.js +3 -1
- package/dist/collection/components/basic/buttons/tet-tabs/tet-tab-content/tet-tab-content.js +17 -13
- package/dist/collection/components/basic/buttons/tet-tabs/tet-tab-header/tet-tab-header.js +67 -63
- package/dist/collection/components/basic/buttons/tet-tag-group/tet-tag-group.js +8 -8
- package/dist/collection/components/basic/carousel/tet-carousel/tet-carousel.js +177 -181
- package/dist/collection/components/basic/icon/tet-icon.js +23 -22
- package/dist/collection/components/basic/loaders/tet-spinner/tet-spinner.js +15 -14
- package/dist/collection/components/basic/steppers/tet-banner-nav/tet-banner-nav.js +20 -8
- package/dist/collection/components/basic/steppers/tet-business-round-stepper/tet-business-round-stepper.js +9 -9
- package/dist/collection/components/basic/steppers/tet-round-stepper/tet-round-stepper.js +4 -0
- package/dist/collection/components/basic/steppers/tet-stepper/tet-stepper.js +61 -62
- package/dist/collection/components/basic/steppers/tet-stepper-v2/tet-stepper-v2.js +27 -28
- package/dist/collection/components/basic/steppers/tet-stepper-v3/tet-stepper-v3.js +19 -20
- package/dist/collection/components/simple/filter/tet-filter/tet-filter.js +25 -10
- package/dist/collection/components/simple/inputs/tet-datepicker/partials/tet-datepicker-header/tet-datepicker-header.js +20 -16
- package/dist/collection/components/simple/inputs/tet-datepicker/partials/tet-datepicker-month-view/tet-datepicker-month-view.js +135 -132
- package/dist/collection/components/simple/inputs/tet-datepicker/partials/tet-datepicker-multi-year-view/tet-datepicker-multi-year-view.js +20 -17
- package/dist/collection/components/simple/inputs/tet-datepicker/partials/tet-datepicker-year-view/tet-datepicker-year-view.js +26 -21
- package/dist/collection/components/simple/inputs/tet-datepicker/tet-datepicker.js +34 -28
- package/dist/collection/components/simple/inputs/tet-dropdown/tet-dropdown.js +20 -8
- package/dist/collection/components/simple/inputs/tet-expandable-input/tet-expandable-input.js +99 -78
- package/dist/collection/components/simple/inputs/tet-input/tet-input.js +44 -34
- package/dist/collection/components/simple/inputs/tet-number-input/tet-number-input.js +55 -41
- package/dist/collection/components/simple/inputs/tet-range-slider/tet-range-slider.js +631 -618
- package/dist/collection/components/simple/inputs/tet-stepper-input/tet-stepper-input.js +29 -23
- package/dist/collection/components/simple/inputs/tet-textarea/tet-textarea.js +13 -13
- package/dist/collection/components/simple/lists/tet-news-card-list/tet-news-card-list.js +37 -34
- package/dist/collection/components/simple/lists/tet-selection-list/tet-selection-list.js +61 -57
- package/dist/collection/components/simple/lists/tet-text-list/tet-text-list.js +14 -2
- package/dist/collection/components/simple/menu/tet-business-navigation/tet-business-navigation.js +48 -45
- package/dist/collection/components/simple/menu/tet-menu/tet-menu.js +3 -4
- package/dist/collection/components/simple/menu/tet-menu-mobile/tet-menu-mobile.js +15 -12
- package/dist/collection/components/simple/menu/tet-navigation-mobile/tet-navigation-mobile.js +18 -14
- package/dist/collection/components/simple/structural/tet-accordion/tet-accordion.js +37 -20
- package/dist/collection/components/simple/structural/tet-expansion-panel/tet-expansion-panel.js +16 -17
- package/dist/collection/components/simple/tables-and-graphs/tet-bar-graph/tet-bar-graph.js +222 -213
- package/dist/collection/components/simple/tables-and-graphs/tet-table/tet-table.js +132 -136
- package/dist/collection/components/simple/text-blocks/tet-cloud-application-form-dialog/tet-cloud-application-form-dialog.js +27 -1
- package/dist/collection/components/simple/text-blocks/tet-dialog/tet-dialog.js +39 -31
- package/dist/collection/components/simple/text-blocks/tet-inline-message/tet-inline-message.js +6 -6
- package/dist/collection/components/simple/text-blocks/tet-notification/tet-notification.js +27 -23
- package/dist/collection/components/simple/text-blocks/tet-tooltip/tet-tooltip.js +119 -105
- package/dist/collection/components/views/tet-address-offers-view/tet-address-offers-view.js +40 -32
- package/dist/collection/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/tet-b2b-configurator-cart.js +99 -88
- package/dist/collection/components/views/tet-b2b-configurator/tet-b2b-configurator.js +392 -373
- package/dist/collection/components/views/tet-b2b-service-calculator/tet-b2b-service-calculator.js +25 -25
- package/dist/collection/components/views/tet-business-lines/tet-business-lines.js +21 -22
- package/dist/collection/components/views/tet-cloud-configurator/tet-cloud-configurator.js +130 -120
- package/dist/collection/components/views/tet-macd-view/tet-macd-view.js +42 -13
- package/dist/collection/components/views/tet-price-view/tet-price-view.js +4 -2
- package/dist/collection/components/views/tet-thank-you-view/tet-thank-you-view.js +52 -44
- package/dist/collection/components/views/tet-thank-you-view-v2/tet-thank-you-view-v2.js +34 -29
- package/dist/collection/components/views/tet-thank-you-view-v3/tet-thank-you-view-v3.js +34 -29
- package/dist/collection/config/bradcasting.js +1 -2
- package/dist/collection/config/endpoints.js +7 -5
- package/dist/collection/config/forms-portal.js +1 -2
- package/dist/collection/config/landing-pages.js +1 -2
- package/dist/collection/config/mytet-portal.js +1 -2
- package/dist/collection/docs/styling/colors/tet-colors.js +41 -41
- package/dist/collection/services/api/async-request.js +26 -25
- package/dist/collection/services/api/request.js +16 -11
- package/dist/collection/services/api/services/tv/tv-channel-count-parser.js +73 -74
- package/dist/collection/services/translations/translations-manager.js +46 -47
- package/dist/collection/services/translations/translations.js +1 -2
- package/dist/collection/services/translations/translations.store.js +2 -3
- package/dist/collection/services/utils/inertia-scroll.js +203 -191
- package/dist/collection/services/utils/object.js +5 -3
- package/dist/collection/services/validators/validators/e-mail.js +6 -5
- package/dist/collection/services/validators/validators/phone.js +6 -5
- package/dist/collection/services/validators/validators/required.js +2 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-045bec85.js → p-03f68fa0.js} +16 -16
- package/dist/components/{p-4d33055f.js → p-04a30e22.js} +117 -107
- package/dist/components/{p-5dc5e13c.js → p-065e8f8b.js} +2 -2
- package/dist/components/{p-f18e5ae3.js → p-06650222.js} +28 -23
- package/dist/components/{p-ca66b4b1.js → p-12649d6e.js} +8 -6
- package/dist/components/{p-856695a3.js → p-13bb64a3.js} +43 -37
- package/dist/components/{p-489ae3a0.js → p-1c466832.js} +27 -26
- package/dist/components/{p-639c9d1a.js → p-1cccc456.js} +80 -69
- package/dist/components/{p-bb324278.js → p-220f3eef.js} +1 -1
- package/dist/components/{p-df1fe72c.js → p-2426d691.js} +47 -37
- package/dist/components/{p-04fe59fc.js → p-25756e4c.js} +50 -47
- package/dist/components/{p-aca28e71.js → p-2627300f.js} +53 -52
- package/dist/components/{p-144dffdc.js → p-31662bf6.js} +1 -1
- package/dist/components/{p-6b7e73c0.js → p-33725ec2.js} +218 -202
- package/dist/components/{p-9a47b95f.js → p-3a80e93a.js} +26 -26
- package/dist/components/p-3daf3627.js +869 -0
- package/dist/components/{p-cec65d0a.js → p-405417ba.js} +121 -116
- package/dist/components/{p-530ef38b.js → p-429b72d5.js} +4 -4
- package/dist/components/{p-9573f82c.js → p-496e41f5.js} +41 -35
- package/dist/components/{p-a188f09e.js → p-57c53319.js} +11 -7
- package/dist/components/{p-a81e545d.js → p-581edb37.js} +1 -1
- package/dist/components/{p-3fd7310f.js → p-5d56e6e5.js} +1 -1
- package/dist/components/{p-7ddd71bd.js → p-5e206e34.js} +3 -3
- package/dist/components/{p-965cea5b.js → p-5fd443f5.js} +137 -134
- package/dist/components/{p-6847eb2d.js → p-64ca3cec.js} +62 -63
- package/dist/components/{p-0088d040.js → p-7530ef19.js} +16 -12
- package/dist/components/{p-eb54f5b9.js → p-78a44de3.js} +21 -18
- package/dist/components/{p-7b3c7bf1.js → p-7beec5f2.js} +4 -2
- package/dist/components/{p-c1876db7.js → p-7dff5fe9.js} +36 -21
- package/dist/components/{p-68f0e894.js → p-7e8270ec.js} +10 -10
- package/dist/components/{p-bd3402f6.js → p-7fb96f10.js} +17 -15
- package/dist/components/{p-35e72a2b.js → p-8101b09a.js} +58 -44
- package/dist/components/{p-37ed3ebb.js → p-88af3744.js} +190 -135
- package/dist/components/{p-42ff76b5.js → p-8db05f15.js} +22 -18
- package/dist/components/{p-881093d4.js → p-9372e619.js} +206 -194
- package/dist/components/{p-9fe57fd0.js → p-962b13ba.js} +68 -65
- package/dist/components/{p-b0d6ed2e.js → p-a9b1c410.js} +25 -24
- package/dist/components/{p-029ff2b3.js → p-b3001877.js} +24 -24
- package/dist/components/{p-00e689fb.js → p-ba709868.js} +1 -1
- package/dist/components/{p-50f207fd.js → p-bc84eb7d.js} +54 -34
- package/dist/components/{p-91651432.js → p-bfcce1dd.js} +1 -1
- package/dist/{esm/http-codes-7faa9f6e.js → components/p-c1f5b99f.js} +66 -59
- package/dist/components/{p-e707e73a.js → p-c217775d.js} +13 -5
- package/dist/components/{p-cb2daf20.js → p-c62a7fa3.js} +25 -16
- package/dist/components/{p-88b42c67.js → p-c7c47790.js} +63 -59
- package/dist/components/{p-00c91e96.js → p-c8b44baa.js} +2 -2
- package/dist/components/{p-6a2a81d8.js → p-c956b246.js} +104 -94
- package/dist/components/{p-53ca0a91.js → p-d3939d35.js} +39 -23
- package/dist/components/{p-5c8c2d8d.js → p-d4192716.js} +1 -1
- package/dist/components/{p-163de6e2.js → p-d73512b2.js} +23 -11
- package/dist/components/{p-e04716ac.js → p-dfee3bd7.js} +29 -30
- package/dist/components/{p-9bf262a8.js → p-e474903b.js} +33 -27
- package/dist/components/p-ea401595.js +169 -0
- package/dist/components/{p-03177920.js → p-ecf59431.js} +181 -173
- package/dist/components/{p-818742ad.js → p-ee3bdb7a.js} +21 -22
- package/dist/components/{p-817bee22.js → p-f05feebd.js} +12 -12
- package/dist/components/{p-21c5cfc4.js → p-f7be6960.js} +64 -53
- package/dist/components/{p-616c71e1.js → p-f82069f3.js} +559 -532
- package/dist/components/{p-a0d406ca.js → p-f8ac52c6.js} +117 -72
- package/dist/components/{p-7790eae2.js → p-f97fa8ff.js} +128 -126
- 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 +65 -57
- 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 +116 -105
- package/dist/components/tet-asset-availability-addresses.js +1 -1
- package/dist/components/tet-autocomplete-dropdown.js +44 -34
- 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 +411 -393
- package/dist/components/tet-b2b-service-calculator.js +33 -33
- package/dist/components/tet-banner-nav.js +23 -11
- package/dist/components/tet-bar-graph.js +222 -215
- package/dist/components/tet-border-radius.js +1 -1
- package/dist/components/tet-business-card.js +38 -32
- package/dist/components/tet-business-compare-card.js +20 -13
- package/dist/components/tet-business-lines.js +26 -27
- package/dist/components/tet-business-navigation.js +1 -1
- package/dist/components/tet-business-round-stepper.js +11 -11
- 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 +181 -185
- package/dist/components/tet-checkbox.js +1 -1
- package/dist/components/tet-cloud-application-form-dialog.js +35 -9
- package/dist/components/tet-cloud-configurator.js +140 -132
- package/dist/components/tet-colors.js +42 -42
- package/dist/components/tet-compare-card-v2.js +57 -55
- package/dist/components/tet-compare-card.js +1 -1
- package/dist/components/tet-compare-cards-tab.js +40 -39
- package/dist/components/tet-compare-cards.js +1 -1
- package/dist/components/tet-contact-form.js +59 -50
- package/dist/components/tet-contact-info.js +1 -1
- package/dist/components/tet-container.js +1 -1
- package/dist/components/tet-customer-assets.js +95 -90
- 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 +41 -36
- package/dist/components/tet-dialog.js +1 -1
- package/dist/components/tet-dropdown.js +1 -1
- package/dist/components/tet-dynamic-card.js +71 -74
- package/dist/components/tet-expandable-input.js +99 -82
- package/dist/components/tet-expansion-panel.js +17 -19
- package/dist/components/tet-filter.js +29 -14
- 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 +8 -8
- 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.js +1 -1
- package/dist/components/tet-loader.js +1 -1
- package/dist/components/tet-macd-view.js +55 -28
- package/dist/components/tet-menu-mobile.js +14 -15
- package/dist/components/tet-menu.js +5 -6
- package/dist/components/tet-multi-step-dialog.js +88 -74
- package/dist/components/tet-navigation-mobile.js +20 -16
- package/dist/components/tet-news-card-list.js +38 -39
- 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-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 +32 -28
- package/dist/components/tet-round-stepper.js +3 -3
- package/dist/components/tet-selection-list.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 +134 -140
- 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-textarea.js +14 -14
- package/dist/components/tet-thank-you-view-v2.js +38 -35
- package/dist/components/tet-thank-you-view-v3.js +38 -35
- package/dist/components/tet-thank-you-view.js +55 -49
- package/dist/components/tet-tooltip.js +1 -1
- package/dist/components/tet-tv-gift-block.js +15 -15
- package/dist/components/tet-tv-gift-list.js +16 -16
- package/dist/esm/{address-979a9993.js → address-483cfa2e.js} +1 -1
- package/dist/esm/{assets-b971f105.js → assets-d6147258.js} +1 -1
- package/dist/esm/{async-request-6675e5f5.js → async-request-21a65bdc.js} +27 -26
- package/dist/esm/compare-cards-tab-products-filters-79b7b7c6.js +98 -0
- package/dist/{components/p-6830b44d.js → esm/http-codes-c2e180c8.js} +65 -60
- package/dist/esm/{index-1bf36cb9.js → index-0c5fef2e.js} +1 -1
- package/dist/esm/{index-7f1e2a22.js → index-209dece3.js} +1672 -1598
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{phone-99c2f297.js → phone-4b016684.js} +8 -6
- package/dist/esm/{product-comparison-830e2764.js → product-comparison-41b334ab.js} +1 -1
- package/dist/esm/{tasks-3dfcc330.js → tasks-24b9f88e.js} +2 -2
- package/dist/esm/tet-accordion_2.entry.js +62 -46
- package/dist/esm/tet-address-offers-filters-products_2.entry.js +250 -233
- package/dist/esm/tet-address-offers-view.entry.js +44 -36
- package/dist/esm/tet-address-offers_4.entry.js +344 -314
- package/dist/esm/tet-address-search.entry.js +176 -168
- package/dist/esm/tet-asset-addresses.entry.js +106 -95
- package/dist/esm/tet-autocomplete-dropdown.entry.js +40 -30
- package/dist/esm/tet-autocomplete.entry.js +204 -191
- package/dist/esm/tet-b2b-check-out-form_5.entry.js +281 -242
- package/dist/esm/tet-b2b-configurator.entry.js +397 -379
- package/dist/esm/tet-b2b-service-calculator.entry.js +29 -29
- package/dist/esm/tet-banner-nav.entry.js +24 -12
- package/dist/esm/tet-bar-graph.entry.js +222 -215
- package/dist/esm/tet-border-radius.entry.js +1 -1
- package/dist/esm/tet-business-card.entry.js +38 -32
- package/dist/esm/tet-business-compare-card.entry.js +18 -11
- package/dist/esm/tet-business-lines.entry.js +26 -27
- package/dist/esm/tet-business-round-stepper.entry.js +10 -10
- package/dist/esm/tet-button.entry.js +9 -9
- package/dist/esm/tet-card-list.entry.js +557 -530
- package/dist/esm/tet-carousel.entry.js +181 -185
- package/dist/esm/tet-checkbox.entry.js +15 -11
- package/dist/esm/tet-cloud-application-form-dialog.entry.js +31 -5
- package/dist/esm/tet-cloud-configurator.entry.js +133 -125
- package/dist/esm/tet-colors.entry.js +42 -42
- package/dist/esm/tet-compare-card-v2.entry.js +51 -49
- package/dist/esm/tet-compare-cards-tab.entry.js +29 -28
- package/dist/esm/tet-compare-cards_2.entry.js +41 -34
- package/dist/esm/tet-components.js +4 -4
- package/dist/esm/tet-contact-form.entry.js +56 -47
- package/dist/esm/tet-contact-info.entry.js +1 -1
- package/dist/esm/tet-container_2.entry.js +63 -59
- package/dist/esm/tet-customer-assets.entry.js +90 -85
- package/dist/esm/tet-datepicker-header_4.entry.js +203 -188
- package/dist/esm/tet-datepicker.entry.js +36 -31
- package/dist/esm/tet-dialog.entry.js +42 -36
- package/dist/esm/tet-dropdown_2.entry.js +137 -115
- package/dist/esm/tet-dynamic-card.entry.js +68 -71
- package/dist/esm/tet-expandable-input.entry.js +97 -80
- package/dist/esm/tet-expansion-panel.entry.js +17 -19
- package/dist/esm/tet-filter.entry.js +26 -11
- 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 +25 -24
- package/dist/esm/tet-inline-message.entry.js +7 -7
- package/dist/esm/tet-input.entry.js +48 -38
- package/dist/esm/tet-label.entry.js +4 -4
- package/dist/esm/tet-layout.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 +51 -24
- package/dist/esm/tet-menu-mobile.entry.js +13 -14
- package/dist/esm/tet-menu.entry.js +4 -5
- package/dist/esm/tet-multi-step-dialog.entry.js +87 -73
- package/dist/esm/tet-navigation-mobile.entry.js +19 -15
- package/dist/esm/tet-news-card-list.entry.js +35 -36
- package/dist/esm/tet-number-input.entry.js +56 -42
- package/dist/esm/tet-placeholder.entry.js +1 -1
- package/dist/esm/tet-price-view.entry.js +4 -4
- package/dist/esm/tet-radio.entry.js +11 -7
- package/dist/esm/tet-range-slider.entry.js +632 -620
- package/dist/esm/tet-referral.entry.js +31 -27
- package/dist/esm/tet-round-stepper.entry.js +2 -2
- package/dist/esm/tet-spacing.entry.js +1 -1
- package/dist/esm/tet-spinner.entry.js +16 -16
- package/dist/esm/tet-stepper-input.entry.js +33 -27
- package/dist/esm/tet-stepper-v2.entry.js +28 -29
- package/dist/esm/tet-stepper-v3.entry.js +20 -21
- package/dist/esm/tet-stepper.entry.js +62 -63
- package/dist/esm/tet-switch.entry.js +4 -2
- package/dist/esm/tet-tab-header.entry.js +68 -65
- package/dist/esm/tet-table.entry.js +132 -138
- package/dist/esm/tet-tag_2.entry.js +12 -12
- package/dist/esm/tet-text-list.entry.js +12 -4
- package/dist/esm/tet-textarea.entry.js +14 -14
- package/dist/esm/tet-thank-you-view-v2.entry.js +37 -34
- package/dist/esm/tet-thank-you-view-v3.entry.js +37 -34
- package/dist/esm/tet-thank-you-view.entry.js +52 -46
- package/dist/esm/tet-tv-gift-block.entry.js +15 -15
- package/dist/esm/tet-tv-gift-list.entry.js +15 -15
- package/dist/esm/{theme-wrapper-6e6b2089.js → theme-wrapper-58ce8dca.js} +2 -2
- package/dist/esm/{translations-eff34607.js → translations-ff21fc65.js} +53 -52
- package/dist/esm/{typecheck-31fd6c02.js → typecheck-4abf0258.js} +1 -1
- package/dist/esm/{utils-f8f08058.js → utils-c110a4b1.js} +23 -8
- package/dist/tet-components/{p-eed2b508.entry.js → p-02441a57.entry.js} +1 -1
- package/dist/tet-components/p-032b5507.js +1 -0
- package/dist/tet-components/{p-de142575.js → p-0449b998.js} +1 -1
- package/dist/tet-components/{p-b680d126.entry.js → p-072fd38b.entry.js} +1 -1
- package/dist/tet-components/p-078fae30.entry.js +1 -0
- package/dist/tet-components/p-087903b8.entry.js +1 -0
- package/dist/tet-components/p-09da9cdb.entry.js +1 -0
- package/dist/tet-components/p-0bd28e46.entry.js +1 -0
- package/dist/tet-components/p-12649d6e.js +1 -0
- package/dist/tet-components/{p-44d068ac.entry.js → p-172f5d46.entry.js} +1 -1
- package/dist/tet-components/p-19d71252.entry.js +1 -0
- package/dist/tet-components/p-1c34c35d.entry.js +1 -0
- package/dist/tet-components/{p-9b027102.entry.js → p-1e637cab.entry.js} +1 -1
- package/dist/tet-components/p-216be909.entry.js +1 -0
- package/dist/tet-components/p-2204320b.entry.js +1 -0
- package/dist/tet-components/p-25c9957d.js +1 -0
- package/dist/tet-components/p-274d6839.entry.js +1 -0
- package/dist/tet-components/p-278ad754.entry.js +1 -0
- package/dist/tet-components/p-2813884f.entry.js +1 -0
- package/dist/tet-components/p-290cc145.entry.js +1 -0
- package/dist/tet-components/p-29a179e7.entry.js +1 -0
- package/dist/tet-components/{p-1a89919e.entry.js → p-2b11b9eb.entry.js} +1 -1
- package/dist/tet-components/p-30fed7c2.entry.js +1 -0
- package/dist/tet-components/{p-5c86ad42.entry.js → p-3176cf46.entry.js} +1 -1
- package/dist/tet-components/{p-46e5b573.entry.js → p-3d60accc.entry.js} +1 -1
- package/dist/tet-components/{p-e263ecdf.js → p-3deb6f3c.js} +1 -1
- package/dist/tet-components/p-41cdb7f9.entry.js +1 -0
- package/dist/tet-components/p-446ae6ef.entry.js +1 -0
- package/dist/tet-components/{p-f9a1fbb2.entry.js → p-451b2a49.entry.js} +1 -1
- package/dist/tet-components/{p-f023f124.entry.js → p-47233208.entry.js} +1 -1
- package/dist/tet-components/p-4c10844d.entry.js +1 -0
- package/dist/tet-components/p-4ecb9094.entry.js +1 -0
- package/dist/tet-components/{p-36d2a380.entry.js → p-4fd6c1ae.entry.js} +1 -1
- package/dist/tet-components/{p-49122f6a.entry.js → p-510150b8.entry.js} +1 -1
- package/dist/tet-components/{p-bc16c07b.js → p-56bfd2a5.js} +1 -1
- package/dist/tet-components/p-585739ce.entry.js +1 -0
- package/dist/tet-components/{p-918e4e84.entry.js → p-5cf65beb.entry.js} +1 -1
- package/dist/tet-components/{p-66dd0ede.entry.js → p-6278a886.entry.js} +1 -1
- package/dist/tet-components/p-646bddab.entry.js +1 -0
- package/dist/tet-components/p-683c2419.entry.js +1 -0
- package/dist/tet-components/{p-8b405467.entry.js → p-68709390.entry.js} +1 -1
- package/dist/tet-components/{p-c7dbb16f.entry.js → p-6910d35c.entry.js} +1 -1
- package/dist/tet-components/p-696f83db.entry.js +1 -0
- package/dist/tet-components/p-6a185f76.js +1 -0
- package/dist/tet-components/p-6ccea165.entry.js +1 -0
- package/dist/tet-components/p-6e166c83.entry.js +1 -0
- package/dist/tet-components/{p-775aa778.entry.js → p-70941fcd.entry.js} +1 -1
- package/dist/tet-components/p-7145ca73.entry.js +1 -0
- package/dist/tet-components/{p-8c964cca.js → p-77d941d8.js} +2 -2
- package/dist/tet-components/{p-a9ed4e2b.entry.js → p-7ae725e1.entry.js} +1 -1
- package/dist/tet-components/p-8148edc9.entry.js +1 -0
- package/dist/tet-components/p-8622e131.entry.js +1 -0
- package/dist/tet-components/p-8907f459.entry.js +1 -0
- package/dist/tet-components/p-8f7629ca.entry.js +1 -0
- package/dist/tet-components/p-94e9a944.js +1 -0
- package/dist/tet-components/p-97c743ab.entry.js +1 -0
- package/dist/tet-components/p-9a2b6ee2.js +1 -0
- package/dist/tet-components/p-9b5cf49f.js +2 -0
- package/dist/tet-components/{p-ed67bd52.entry.js → p-9becad06.entry.js} +1 -1
- package/dist/tet-components/p-9eb8d93b.entry.js +1 -0
- package/dist/tet-components/p-a8091c62.entry.js +1 -0
- package/dist/tet-components/p-a8e16d54.entry.js +1 -0
- package/dist/tet-components/p-ae2e1d5c.entry.js +1 -0
- package/dist/tet-components/{p-ecff869b.entry.js → p-b3598dc1.entry.js} +1 -1
- package/dist/tet-components/p-ba803b83.entry.js +1 -0
- package/dist/tet-components/p-bda674b0.entry.js +1 -0
- package/dist/tet-components/{p-8f545d45.entry.js → p-c07c5b84.entry.js} +1 -1
- package/dist/tet-components/p-c14f1445.entry.js +1 -0
- package/dist/tet-components/{p-9f1a810e.entry.js → p-c24c48e4.entry.js} +1 -1
- package/dist/tet-components/{p-bb9f1a6f.entry.js → p-c3f486bc.entry.js} +1 -1
- package/dist/tet-components/{p-77372984.js → p-c4fc2dd6.js} +1 -1
- package/dist/tet-components/p-c5bc017a.entry.js +1 -0
- package/dist/tet-components/p-c6d7c2b4.entry.js +1 -0
- package/dist/tet-components/p-c9cdf98c.js +1 -0
- package/dist/tet-components/p-cca96c58.entry.js +1 -0
- package/dist/tet-components/p-d4b6b480.entry.js +1 -0
- package/dist/tet-components/p-d5cc4a81.entry.js +1 -0
- package/dist/tet-components/p-d8bebee4.entry.js +1 -0
- package/dist/tet-components/p-d9a826c2.js +1 -0
- package/dist/tet-components/p-dd49b83c.entry.js +1 -0
- package/dist/tet-components/p-dd6c7252.entry.js +1 -0
- package/dist/tet-components/p-ea3ae824.entry.js +1 -0
- package/dist/tet-components/p-eba077c3.entry.js +1 -0
- package/dist/tet-components/p-ebc29130.entry.js +1 -0
- package/dist/tet-components/p-ed09dcf0.entry.js +1 -0
- package/dist/tet-components/p-ed46a069.entry.js +1 -0
- package/dist/tet-components/p-eda15c93.entry.js +1 -0
- package/dist/tet-components/{p-a07cada6.entry.js → p-eeb9d7f5.entry.js} +1 -1
- package/dist/tet-components/p-f262aa6f.entry.js +1 -0
- package/dist/tet-components/p-f6d5af93.entry.js +1 -0
- package/dist/tet-components/p-f704e170.entry.js +1 -0
- package/dist/tet-components/p-f86ab4d3.entry.js +1 -0
- package/dist/tet-components/p-fcaa909d.entry.js +1 -0
- package/dist/tet-components/p-fd1d7955.entry.js +1 -0
- package/dist/tet-components/tet-components.esm.js +1 -1
- package/dist/types/components/advanced/address/tet-autocomplete/tet-autocomplete.d.ts +3 -2
- package/dist/types/components.d.ts +0 -8
- package/dist/types/stencil-public-runtime.d.ts +3 -10
- package/loader/cdn.js +1 -3
- package/loader/index.cjs.js +1 -3
- package/loader/index.d.ts +3 -0
- package/loader/index.es2017.js +1 -3
- package/loader/index.js +1 -3
- package/package.json +6 -12
- package/dist/cjs/compare-cards-tab-products-filters-58410792.js +0 -99
- package/dist/collection/components/advanced/address/tet-address-offers-filters/address-offers-filters.spec.js +0 -105
- package/dist/collection/components/advanced/address/tet-address-offers-filters/test/tet-address-offers-filters.spec.js +0 -23
- package/dist/collection/components/advanced/address/tet-address-offers-filters-products/test/tet-address-offers-filters-products.spec.js +0 -23
- package/dist/collection/components/advanced/address/tet-autocomplete/test/tet-autocomplete.spec.js +0 -110
- package/dist/collection/components/advanced/cards/tet-b2b-compare-card/test/tet-b2b-compare-card.spec.js +0 -86
- package/dist/collection/components/advanced/cards/tet-card-list/test/tet-card-list.spec.js +0 -69
- package/dist/collection/components/advanced/cards/tet-compare-card/test/tet-compare-card.spec.js +0 -292
- package/dist/collection/components/advanced/cards/tet-compare-card-v2/test/tet-compare-card-v2.spec.js +0 -40
- package/dist/collection/components/advanced/cards/tet-compare-cards/test/tet-compare-cards.spec.js +0 -65
- package/dist/collection/components/advanced/cards/tet-compare-cards-tab/test/tet-compare-cards-tab.spec.js +0 -399
- package/dist/collection/components/advanced/customer/tet-asset-addresses/test/tet-asset-addresses.spec.js +0 -30
- package/dist/collection/components/advanced/customer/tet-asset-availability-addresses/test/tet-asset-availability-addresses.spec.js +0 -30
- package/dist/collection/components/advanced/customer/tet-referral/test/tet-referral.spec.js +0 -85
- package/dist/collection/components/advanced/dialog/tet-multi-step-dialog/test/tet-multi-step-dialog.spec.js +0 -53
- package/dist/collection/components/advanced/forms/tet-availability-contact-form/test/tet-availability-contact-form.spec.js +0 -35
- package/dist/collection/components/advanced/promotions/tv-gift/tet-tv-gift-block/test/tet-tv-gift-block.spec.js +0 -61
- package/dist/collection/components/advanced/promotions/tv-gift/tet-tv-gift-list/test/tet-tv-gift-list.spec.js +0 -55
- package/dist/collection/components/basic/buttons/tet-button/test/tet-button.spec.js +0 -131
- package/dist/collection/components/basic/buttons/tet-checkbox/test/tet-checkbox.spec.js +0 -28
- package/dist/collection/components/basic/buttons/tet-radio/test/tet-radio.spec.js +0 -26
- package/dist/collection/components/basic/buttons/tet-switch/test/tet-switch.spec.js +0 -27
- package/dist/collection/components/basic/buttons/tet-tabs/test/tet-tab-content.spec.js +0 -35
- package/dist/collection/components/basic/buttons/tet-tabs/test/tet-tab-header.spec.js +0 -42
- package/dist/collection/components/basic/buttons/tet-tag/test/tet-tag.spec.js +0 -76
- package/dist/collection/components/basic/buttons/tet-tag-group/test/tet-tag-group.spec.js +0 -92
- package/dist/collection/components/basic/carousel/tet-carousel/test/tet-carousel.spec.js +0 -63
- package/dist/collection/components/basic/container/tet-container/test/tet-container.spec.js +0 -50
- package/dist/collection/components/basic/loaders/tet-loader/test/tet-loader.spec.js +0 -19
- package/dist/collection/components/basic/loaders/tet-placeholder/test/tet-placeholder.spec.js +0 -19
- package/dist/collection/components/basic/loaders/tet-spinner/test/tet-spinner.spec.js +0 -52
- package/dist/collection/components/basic/steppers/tet-business-round-stepper/test/tet-business-round-stepper.spec.js +0 -82
- package/dist/collection/components/basic/steppers/tet-round-stepper/test/tet-round-stepper.spec.js +0 -78
- package/dist/collection/components/basic/steppers/tet-stepper/test/tet-stepper.spec.js +0 -110
- package/dist/collection/components/basic/steppers/tet-stepper-v2/test/tet-stepper-v2.spec.js +0 -136
- package/dist/collection/components/basic/steppers/tet-stepper-v3/test/tet-stepper-v3.spec.js +0 -135
- package/dist/collection/components/simple/inputs/tet-dropdown/test/tet-dropdown.spec.js +0 -122
- package/dist/collection/components/simple/inputs/tet-input/test/tet-input.spec.js +0 -110
- package/dist/collection/components/simple/inputs/tet-range-slider/test/tet-range-slider.spec.js +0 -145
- package/dist/collection/components/simple/lists/tet-news-card-list/test/tet-news-card-list.spec.js +0 -111
- package/dist/collection/components/simple/lists/tet-selection-list/test/tet-selection-list.spec.js +0 -64
- package/dist/collection/components/simple/lists/tet-text-list/test/tet-text-list.spec.js +0 -171
- package/dist/collection/components/simple/menu/tet-menu/test/tet-menu.spec.js +0 -231
- package/dist/collection/components/simple/menu/tet-menu-mobile/test/tet-menu-mobile.spec.js +0 -87
- package/dist/collection/components/simple/menu/tet-navigation-mobile/test/tet-navigation-mobile.spec.js +0 -81
- package/dist/collection/components/simple/structural/tet-accordion/test/tet-accordion.spec.js +0 -108
- package/dist/collection/components/simple/structural/tet-expansion-panel/test/tet-expansion-panel.spec.js +0 -42
- package/dist/collection/components/simple/tables-and-graphs/tet-bar-graph/test/tet-bar-graph.spec.js +0 -85
- package/dist/collection/components/simple/tables-and-graphs/tet-table/test/tet-table.spec.js +0 -360
- package/dist/collection/components/simple/text-blocks/tet-dialog/test/tet-dialog.spec.js +0 -84
- package/dist/collection/components/simple/text-blocks/tet-inline-message/test/tet-inline-message.spec.js +0 -22
- package/dist/collection/components/simple/text-blocks/tet-notification/test/tet-notification.spec.js +0 -88
- package/dist/collection/components/simple/text-blocks/tet-tooltip/test/tet-tooltip.spec.js +0 -79
- package/dist/collection/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/test/tet-b2b-configurator-cart.spec.js +0 -50
- package/dist/collection/components/views/tet-b2b-configurator/test/tet-b2b-configurator.spec.js +0 -136
- package/dist/collection/components/views/tet-business-lines/test/tet-business-lines.spec.js +0 -23
- package/dist/collection/components/views/tet-contact-info/test/tet-contact-info.spec.js +0 -44
- package/dist/collection/components/views/tet-macd-view/test/tet-macd-view.spec.js +0 -498
- package/dist/collection/components/views/tet-price-view/test/tet-price-view.spec.js +0 -98
- package/dist/collection/components/views/tet-thank-you-view/test/tet-thank-you-view.spec.js +0 -275
- package/dist/collection/components/views/tet-thank-you-view-v2/test/tet-thank-you-view-v2.spec.js +0 -175
- package/dist/collection/components/views/tet-thank-you-view-v3/test/tet-thank-you-view-v3.spec.js +0 -175
- package/dist/collection/services/api/async-request.spec.js +0 -37
- package/dist/collection/services/api/request.spec.js +0 -32
- package/dist/collection/services/api/services/address.spec.js +0 -39
- package/dist/collection/services/api/services/catalog/product-comparison.spec.js +0 -22
- package/dist/collection/services/api/services/components/component-data.spec.js +0 -20
- package/dist/collection/services/api/services/customer/assets.spec.js +0 -25
- package/dist/collection/services/api/services/customer/query.spec.js +0 -25
- package/dist/collection/services/api/services/macd/macd.spec.js +0 -91
- package/dist/collection/services/api/services/operations/operations.spec.js +0 -19
- package/dist/collection/services/api/services/tasks.spec.js +0 -25
- package/dist/collection/services/api/services/translations.spec.js +0 -20
- package/dist/collection/services/products/product-codes.spec.js +0 -11
- package/dist/collection/services/translations/translations.spec.js +0 -30
- package/dist/collection/services/url/build-url-params.spec.js +0 -11
- package/dist/collection/services/url/url.spec.js +0 -16
- package/dist/collection/services/utils/array.spec.js +0 -10
- package/dist/collection/services/utils/debounce.spec.js +0 -19
- package/dist/collection/services/utils/execute-until.spec.js +0 -10
- package/dist/collection/services/utils/inertia-scroll.spec.js +0 -56
- package/dist/collection/services/utils/isFocusableElementOrChild.spec.js +0 -67
- package/dist/collection/services/utils/object.spec.js +0 -84
- package/dist/collection/services/utils/price.spec.js +0 -18
- package/dist/collection/services/utils/random.spec.js +0 -10
- package/dist/collection/services/utils/reactive.spec.js +0 -15
- package/dist/collection/services/utils/size.spec.js +0 -13
- package/dist/collection/services/utils/string.spec.js +0 -9
- package/dist/collection/services/utils/throttle.spec.js +0 -32
- package/dist/collection/services/utils/typecheck.spec.js +0 -49
- package/dist/collection/services/validators/validator-group.spec.js +0 -30
- package/dist/collection/services/validators/validators/e-mail.spec.js +0 -20
- package/dist/collection/services/validators/validators/phone.spec.js +0 -23
- package/dist/collection/services/validators/validators/required.spec.js +0 -16
- package/dist/components/p-8e19c5da.js +0 -857
- package/dist/components/p-e34bf267.js +0 -170
- package/dist/esm/compare-cards-tab-products-filters-f0fa0712.js +0 -97
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/tet-components/p-021268b7.entry.js +0 -1
- package/dist/tet-components/p-02e548d5.entry.js +0 -1
- package/dist/tet-components/p-06bf08a4.entry.js +0 -1
- package/dist/tet-components/p-0738afc0.entry.js +0 -1
- package/dist/tet-components/p-1b797a96.entry.js +0 -1
- package/dist/tet-components/p-1be23b32.entry.js +0 -1
- package/dist/tet-components/p-1e840eca.entry.js +0 -1
- package/dist/tet-components/p-1ec7f341.js +0 -2
- package/dist/tet-components/p-2e870f4d.entry.js +0 -1
- package/dist/tet-components/p-2f029068.entry.js +0 -1
- package/dist/tet-components/p-34ed0dd7.entry.js +0 -1
- package/dist/tet-components/p-3604bf21.entry.js +0 -1
- package/dist/tet-components/p-3d2dc872.entry.js +0 -1
- package/dist/tet-components/p-48bd3f87.entry.js +0 -1
- package/dist/tet-components/p-4e3c6172.entry.js +0 -1
- package/dist/tet-components/p-4e917b52.entry.js +0 -1
- package/dist/tet-components/p-511680d5.entry.js +0 -1
- package/dist/tet-components/p-5d920c98.entry.js +0 -1
- package/dist/tet-components/p-618134c3.entry.js +0 -1
- package/dist/tet-components/p-695cdc78.entry.js +0 -1
- package/dist/tet-components/p-6a5eca28.js +0 -1
- package/dist/tet-components/p-71cbde0c.entry.js +0 -1
- package/dist/tet-components/p-7751035d.entry.js +0 -1
- package/dist/tet-components/p-78014763.entry.js +0 -1
- package/dist/tet-components/p-78a0c398.entry.js +0 -1
- package/dist/tet-components/p-79255c00.entry.js +0 -1
- package/dist/tet-components/p-7a04bcd7.entry.js +0 -1
- package/dist/tet-components/p-805c9ef3.entry.js +0 -1
- package/dist/tet-components/p-88885ba1.entry.js +0 -1
- package/dist/tet-components/p-8a6831bc.entry.js +0 -1
- package/dist/tet-components/p-8c7c6590.entry.js +0 -1
- package/dist/tet-components/p-8c89d1f5.entry.js +0 -1
- package/dist/tet-components/p-8d644f8b.entry.js +0 -1
- package/dist/tet-components/p-9102c6d9.entry.js +0 -1
- package/dist/tet-components/p-977ea27a.entry.js +0 -1
- package/dist/tet-components/p-9a5b8dbc.entry.js +0 -1
- package/dist/tet-components/p-a15d2b6a.entry.js +0 -1
- package/dist/tet-components/p-a549f1dd.entry.js +0 -1
- package/dist/tet-components/p-a8030923.entry.js +0 -1
- package/dist/tet-components/p-aff1e911.entry.js +0 -1
- package/dist/tet-components/p-b0112dde.entry.js +0 -1
- package/dist/tet-components/p-b14b8531.entry.js +0 -1
- package/dist/tet-components/p-b2b384d2.js +0 -1
- package/dist/tet-components/p-bc2e65ab.entry.js +0 -1
- package/dist/tet-components/p-bfa02c13.entry.js +0 -1
- package/dist/tet-components/p-c4a95bbe.entry.js +0 -1
- package/dist/tet-components/p-c4ed060b.entry.js +0 -1
- package/dist/tet-components/p-ca66b4b1.js +0 -1
- package/dist/tet-components/p-cf7d5c84.js +0 -1
- package/dist/tet-components/p-d0d6a340.js +0 -1
- package/dist/tet-components/p-d2919aae.js +0 -1
- package/dist/tet-components/p-d795f9c3.entry.js +0 -1
- package/dist/tet-components/p-dc12dee9.entry.js +0 -1
- package/dist/tet-components/p-dcbe09b5.js +0 -1
- package/dist/tet-components/p-de040767.entry.js +0 -1
- package/dist/tet-components/p-de4c32ee.entry.js +0 -1
- package/dist/tet-components/p-e423fe76.entry.js +0 -1
- package/dist/tet-components/p-e69056de.entry.js +0 -1
- package/dist/tet-components/p-e86164ef.entry.js +0 -1
- package/dist/tet-components/p-eb66d7b2.js +0 -1
- package/dist/tet-components/p-ecbfde88.entry.js +0 -1
- package/dist/tet-components/p-ed4b8bbe.entry.js +0 -1
- package/dist/tet-components/p-eed7244f.entry.js +0 -1
- package/dist/tet-components/p-f48500fd.entry.js +0 -1
- package/dist/tet-components/p-fab4ab39.entry.js +0 -1
- package/dist/tet-components/p-fd4131ad.entry.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, H as Host
|
|
1
|
+
import { r as registerInstance, c as createEvent, g as getElement, h, H as Host } from './index-209dece3.js';
|
|
2
2
|
import { g as getConvertedPixels } from './size-93cf5335.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -8,195 +8,39 @@ import { g as getConvertedPixels } from './size-93cf5335.js';
|
|
|
8
8
|
* dispatches `content-scroll` and `content-scroll-end` events to the `rootElement`.
|
|
9
9
|
*/
|
|
10
10
|
class InertiaScroll {
|
|
11
|
+
/** Determines whether the scroll logic is enabled. */
|
|
12
|
+
isEnabled = false;
|
|
13
|
+
/** Determines whether the user is currently dragging the content. */
|
|
14
|
+
isDragging = false;
|
|
15
|
+
/** Determines whether the content is currently being scrolled with inertia. */
|
|
16
|
+
isScrolling = false;
|
|
17
|
+
/** The current pointer position on the X asis. */
|
|
18
|
+
pointerX = 0;
|
|
19
|
+
/** The previous pointer position on the X asis from ~50ms ago. */
|
|
20
|
+
pointerXOld = 0;
|
|
21
|
+
/** The speed of the pointer movement for calculating the innertia after the user interaction. */
|
|
22
|
+
pointerSpeedXOld = 0;
|
|
23
|
+
/** The speed of current scroll */
|
|
24
|
+
scrollSpeed = 0;
|
|
25
|
+
/** The root element of the scroll. */
|
|
26
|
+
rootElement = null;
|
|
27
|
+
/** the scroll container created inside of `element` to mimic scroll behaviour. */
|
|
28
|
+
scrollContainer = null;
|
|
29
|
+
/** The reference of the interval timer used for updating pointer related values. */
|
|
30
|
+
timer = null;
|
|
31
|
+
/** The custom class to be applied to the `scrollContainer`. */
|
|
32
|
+
scrollableElementClass = '';
|
|
33
|
+
/** The speed of `animateScroll` scroll animation. */
|
|
34
|
+
animationSpeed = 0;
|
|
35
|
+
/** The amount of horizontal scroll from which to disable vertical scrolling. */
|
|
36
|
+
scrollAmount = 10;
|
|
37
|
+
/** The width of the window beneath witch to disable vertical scroll when scrolling horizontally. */
|
|
38
|
+
mobileBreakpoint = 740;
|
|
11
39
|
/**
|
|
12
40
|
* Attaches the `window` listeners and initialises the
|
|
13
41
|
* @param {IInertiaScroll} configuration
|
|
14
42
|
*/
|
|
15
43
|
constructor({ rootElement, scrollableElementClass, animationSpeed = 200 }) {
|
|
16
|
-
/** Determines whether the scroll logic is enabled. */
|
|
17
|
-
this.isEnabled = false;
|
|
18
|
-
/** Determines whether the user is currently dragging the content. */
|
|
19
|
-
this.isDragging = false;
|
|
20
|
-
/** Determines whether the content is currently being scrolled with inertia. */
|
|
21
|
-
this.isScrolling = false;
|
|
22
|
-
/** The current pointer position on the X asis. */
|
|
23
|
-
this.pointerX = 0;
|
|
24
|
-
/** The previous pointer position on the X asis from ~50ms ago. */
|
|
25
|
-
this.pointerXOld = 0;
|
|
26
|
-
/** The speed of the pointer movement for calculating the innertia after the user interaction. */
|
|
27
|
-
this.pointerSpeedXOld = 0;
|
|
28
|
-
/** The speed of current scroll */
|
|
29
|
-
this.scrollSpeed = 0;
|
|
30
|
-
/** The root element of the scroll. */
|
|
31
|
-
this.rootElement = null;
|
|
32
|
-
/** the scroll container created inside of `element` to mimic scroll behaviour. */
|
|
33
|
-
this.scrollContainer = null;
|
|
34
|
-
/** The reference of the interval timer used for updating pointer related values. */
|
|
35
|
-
this.timer = null;
|
|
36
|
-
/** The custom class to be applied to the `scrollContainer`. */
|
|
37
|
-
this.scrollableElementClass = '';
|
|
38
|
-
/** The speed of `animateScroll` scroll animation. */
|
|
39
|
-
this.animationSpeed = 0;
|
|
40
|
-
/** The amount of horizontal scroll from which to disable vertical scrolling. */
|
|
41
|
-
this.scrollAmount = 10;
|
|
42
|
-
/** The width of the window beneath witch to disable vertical scroll when scrolling horizontally. */
|
|
43
|
-
this.mobileBreakpoint = 740;
|
|
44
|
-
/**
|
|
45
|
-
* Applies required styles to the `rootElement`.
|
|
46
|
-
* Creates `scrollContainer` inside of the `rootElement`.
|
|
47
|
-
* Moves the `rootElement` innerHTML into the `scrollContainer`.
|
|
48
|
-
* Attaches listeners to the `rootElement`.
|
|
49
|
-
*/
|
|
50
|
-
this.makeScrollable = () => {
|
|
51
|
-
this.rootElement.style.display = 'grid';
|
|
52
|
-
this.rootElement.style.gridAutoFlow = 'column';
|
|
53
|
-
this.rootElement.style.position = 'relative';
|
|
54
|
-
this.rootElement.style.overflow = 'hidden';
|
|
55
|
-
this.rootElement.style.width = '100%';
|
|
56
|
-
this.rootElement.style.height = '100%';
|
|
57
|
-
const innerHTML = this.rootElement.innerHTML;
|
|
58
|
-
this.scrollContainer = document.createElement('div');
|
|
59
|
-
this.rootElement.innerHTML = '';
|
|
60
|
-
this.rootElement.appendChild(this.scrollContainer);
|
|
61
|
-
this.scrollContainer.innerHTML = innerHTML;
|
|
62
|
-
this.scrollContainer.setAttribute('part', 'scroll-container');
|
|
63
|
-
this.scrollContainer.classList.add(this.scrollableElementClass);
|
|
64
|
-
this.scrollContainer.style.overflow = 'visible';
|
|
65
|
-
this.scrollContainer.style.position = 'relative';
|
|
66
|
-
this.scrollContainer.style.left = '0px';
|
|
67
|
-
this.scrollContainer.style.display = 'grid';
|
|
68
|
-
this.scrollContainer.style.gridAutoFlow = 'column';
|
|
69
|
-
this.scrollSpeed = 0;
|
|
70
|
-
this.rootElement.addEventListener('mousedown', this.onMouseDown, { passive: false });
|
|
71
|
-
this.rootElement.addEventListener('touchstart', this.onTouchStart);
|
|
72
|
-
};
|
|
73
|
-
/** Mouse down event handler. */
|
|
74
|
-
this.onMouseDown = (event) => {
|
|
75
|
-
this.onPointerDown(event.clientX);
|
|
76
|
-
};
|
|
77
|
-
/** Touch start event handler. */
|
|
78
|
-
this.onTouchStart = (event) => {
|
|
79
|
-
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
80
|
-
const touch = event.changedTouches[i];
|
|
81
|
-
this.onPointerDown(touch.clientX);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
/** Mouse move event handler. */
|
|
85
|
-
this.onMouseMove = (event) => {
|
|
86
|
-
if (this.isDragging) {
|
|
87
|
-
this.onPointerMove(event.clientX);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
/** Touch move event handler. */
|
|
91
|
-
this.onTouchMove = (event) => {
|
|
92
|
-
if (this.isDragging) {
|
|
93
|
-
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
94
|
-
const touch = event.changedTouches[i];
|
|
95
|
-
this.onPointerMove(touch.clientX);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
/** Mouse up event handler. */
|
|
100
|
-
this.onMouseUp = () => {
|
|
101
|
-
this.onPointerRelease();
|
|
102
|
-
};
|
|
103
|
-
/** Touch end event handler. */
|
|
104
|
-
this.onTouchEnd = (event) => {
|
|
105
|
-
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
106
|
-
this.onPointerRelease();
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
/** Sets the scroll parameters to the initial state for scroll start. */
|
|
110
|
-
this.onPointerDown = (x) => {
|
|
111
|
-
if (!this.isEnabled) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
this.scrollSpeed = 0;
|
|
115
|
-
this.pointerSpeedXOld = 0;
|
|
116
|
-
this.isDragging = true;
|
|
117
|
-
this.pointerX = this.pointerXOld = x;
|
|
118
|
-
};
|
|
119
|
-
/** Stops the manual scroll by user and sets the initial state for the inertia scroll. */
|
|
120
|
-
this.onPointerRelease = () => {
|
|
121
|
-
if (!this.isEnabled) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (this.isDragging) {
|
|
125
|
-
this.scrollSpeed = this.pointerSpeedXOld;
|
|
126
|
-
this.isScrolling = true;
|
|
127
|
-
this.isDragging = false;
|
|
128
|
-
this.scrollContainer.style.userSelect = null;
|
|
129
|
-
this.scrollContainer.style.pointerEvents = null;
|
|
130
|
-
document.querySelector('body').style.overflowY = null;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
/** Calculates the distance traveled by the pointer while it's pressed updating the `scrollContainer` position. */
|
|
134
|
-
this.onPointerMove = (x) => {
|
|
135
|
-
if (!this.isEnabled) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (!this.isDragging) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
this.scrollContainer.style.userSelect = 'none';
|
|
142
|
-
this.scrollContainer.style.pointerEvents = 'none';
|
|
143
|
-
// Get the distance the mouse has moved.
|
|
144
|
-
let scrollDelta = x - this.pointerX;
|
|
145
|
-
if (Math.abs(scrollDelta) > this.scrollAmount && window.innerWidth < this.mobileBreakpoint) {
|
|
146
|
-
document.querySelector('body').style.overflowY = 'hidden';
|
|
147
|
-
}
|
|
148
|
-
const { scrollLeft, scrollWidth } = this;
|
|
149
|
-
// Scroll past the end of content, to mimic bounce.
|
|
150
|
-
if ((scrollLeft < 0 && scrollDelta > 0) || (scrollLeft > scrollWidth && scrollDelta < 0)) {
|
|
151
|
-
scrollDelta /= 3;
|
|
152
|
-
}
|
|
153
|
-
// Increase the left position by the amount scrolled.
|
|
154
|
-
this.scrollContainer.style.left = `-${scrollLeft - scrollDelta}px`;
|
|
155
|
-
// Store the position to calculate the next pointer move.
|
|
156
|
-
this.pointerX = x;
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Animation cycle.
|
|
160
|
-
* Handles the inertial scroll after user has stoped the interaction.
|
|
161
|
-
*/
|
|
162
|
-
this.scrollUpdate = () => {
|
|
163
|
-
if (this.isEnabled) {
|
|
164
|
-
requestAnimationFrame(this.scrollUpdate);
|
|
165
|
-
}
|
|
166
|
-
if (!this.isDragging && !this.isScrolling) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
// Continue scrolling after drag end with scroll innertia.
|
|
170
|
-
let { scrollLeft } = this;
|
|
171
|
-
scrollLeft -= this.scrollSpeed;
|
|
172
|
-
// Slow down gradually.
|
|
173
|
-
this.scrollSpeed *= 0.9;
|
|
174
|
-
if (Math.abs(this.scrollSpeed) < 0.1) {
|
|
175
|
-
this.scrollSpeed = 0;
|
|
176
|
-
}
|
|
177
|
-
// Reach content left end. Trigger a bounce effect.
|
|
178
|
-
if (scrollLeft < 0) {
|
|
179
|
-
scrollLeft *= 0.7;
|
|
180
|
-
}
|
|
181
|
-
// Reach content right end. Trigger a bounce effect.
|
|
182
|
-
const { scrollWidth } = this;
|
|
183
|
-
if (scrollLeft > scrollWidth) {
|
|
184
|
-
scrollLeft = scrollWidth + (scrollLeft - scrollWidth) * 0.3;
|
|
185
|
-
}
|
|
186
|
-
// Update scroll position.
|
|
187
|
-
this.scrollContainer.style.left = -scrollLeft + 'px';
|
|
188
|
-
if (this.scrollSpeed === 0 && !this.isDragging && this.isScrolling) {
|
|
189
|
-
this.isScrolling = false;
|
|
190
|
-
this.rootElement.dispatchEvent(new CustomEvent('content-scroll-end', {
|
|
191
|
-
detail: Object.assign({}, this.currentScroll),
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
194
|
-
if (this.isDragging || this.isScrolling) {
|
|
195
|
-
this.rootElement.dispatchEvent(new CustomEvent('content-scroll', {
|
|
196
|
-
detail: Object.assign({}, this.currentScroll),
|
|
197
|
-
}));
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
44
|
this.rootElement = rootElement;
|
|
201
45
|
this.scrollableElementClass = scrollableElementClass;
|
|
202
46
|
this.animationSpeed = animationSpeed;
|
|
@@ -250,13 +94,11 @@ class InertiaScroll {
|
|
|
250
94
|
}
|
|
251
95
|
/** Gets the current `scrollLeft` value of the `scrollableContainer`. */
|
|
252
96
|
get scrollLeft() {
|
|
253
|
-
|
|
254
|
-
return Math.round(Math.abs(parseFloat((_b = (_a = this.scrollContainer) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.left) || 0));
|
|
97
|
+
return Math.round(Math.abs(parseFloat(this.scrollContainer?.style?.left) || 0));
|
|
255
98
|
}
|
|
256
99
|
/** Get the total available `scrollWidth` value of the `scrollableContainer`. */
|
|
257
100
|
get scrollWidth() {
|
|
258
|
-
|
|
259
|
-
return Math.round(((_a = this.scrollContainer) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width) - ((_b = this.rootElement) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) || 0);
|
|
101
|
+
return Math.round(this.scrollContainer?.getBoundingClientRect().width - this.rootElement?.getBoundingClientRect().width || 0);
|
|
260
102
|
}
|
|
261
103
|
/** Enables the scroll. */
|
|
262
104
|
enable() {
|
|
@@ -290,7 +132,10 @@ class InertiaScroll {
|
|
|
290
132
|
return;
|
|
291
133
|
}
|
|
292
134
|
this.rootElement.dispatchEvent(new CustomEvent('content-scroll-end', {
|
|
293
|
-
detail:
|
|
135
|
+
detail: {
|
|
136
|
+
...this.currentScroll,
|
|
137
|
+
scrollSpeed: scrollResult > scrollLeft ? -1 : 1,
|
|
138
|
+
},
|
|
294
139
|
}));
|
|
295
140
|
}
|
|
296
141
|
/** Scrolls the passed element to the center of the viewport if possible.
|
|
@@ -328,7 +173,10 @@ class InertiaScroll {
|
|
|
328
173
|
return;
|
|
329
174
|
}
|
|
330
175
|
this.rootElement.dispatchEvent(new CustomEvent('content-scroll-end', {
|
|
331
|
-
detail:
|
|
176
|
+
detail: {
|
|
177
|
+
...this.currentScroll,
|
|
178
|
+
scrollSpeed: scrollOptions.left > scrollLeft ? -1 : 1,
|
|
179
|
+
},
|
|
332
180
|
}));
|
|
333
181
|
}
|
|
334
182
|
/**
|
|
@@ -359,13 +207,177 @@ class InertiaScroll {
|
|
|
359
207
|
resolve();
|
|
360
208
|
}
|
|
361
209
|
this.rootElement.dispatchEvent(new CustomEvent('content-scroll', {
|
|
362
|
-
detail:
|
|
210
|
+
detail: {
|
|
211
|
+
...this.currentScroll,
|
|
212
|
+
scrollSpeed: scrollAmount < 0 ? -1 : 1,
|
|
213
|
+
isUserScroll: false,
|
|
214
|
+
},
|
|
363
215
|
}));
|
|
364
216
|
};
|
|
365
217
|
animate(currentTime);
|
|
366
218
|
});
|
|
367
219
|
await promise;
|
|
368
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Applies required styles to the `rootElement`.
|
|
223
|
+
* Creates `scrollContainer` inside of the `rootElement`.
|
|
224
|
+
* Moves the `rootElement` innerHTML into the `scrollContainer`.
|
|
225
|
+
* Attaches listeners to the `rootElement`.
|
|
226
|
+
*/
|
|
227
|
+
makeScrollable = () => {
|
|
228
|
+
this.rootElement.style.display = 'grid';
|
|
229
|
+
this.rootElement.style.gridAutoFlow = 'column';
|
|
230
|
+
this.rootElement.style.position = 'relative';
|
|
231
|
+
this.rootElement.style.overflow = 'hidden';
|
|
232
|
+
this.rootElement.style.width = '100%';
|
|
233
|
+
this.rootElement.style.height = '100%';
|
|
234
|
+
const innerHTML = this.rootElement.innerHTML;
|
|
235
|
+
this.scrollContainer = document.createElement('div');
|
|
236
|
+
this.rootElement.innerHTML = '';
|
|
237
|
+
this.rootElement.appendChild(this.scrollContainer);
|
|
238
|
+
this.scrollContainer.innerHTML = innerHTML;
|
|
239
|
+
this.scrollContainer.setAttribute('part', 'scroll-container');
|
|
240
|
+
this.scrollContainer.classList.add(this.scrollableElementClass);
|
|
241
|
+
this.scrollContainer.style.overflow = 'visible';
|
|
242
|
+
this.scrollContainer.style.position = 'relative';
|
|
243
|
+
this.scrollContainer.style.left = '0px';
|
|
244
|
+
this.scrollContainer.style.display = 'grid';
|
|
245
|
+
this.scrollContainer.style.gridAutoFlow = 'column';
|
|
246
|
+
this.scrollSpeed = 0;
|
|
247
|
+
this.rootElement.addEventListener('mousedown', this.onMouseDown, { passive: false });
|
|
248
|
+
this.rootElement.addEventListener('touchstart', this.onTouchStart);
|
|
249
|
+
};
|
|
250
|
+
/** Mouse down event handler. */
|
|
251
|
+
onMouseDown = (event) => {
|
|
252
|
+
this.onPointerDown(event.clientX);
|
|
253
|
+
};
|
|
254
|
+
/** Touch start event handler. */
|
|
255
|
+
onTouchStart = (event) => {
|
|
256
|
+
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
257
|
+
const touch = event.changedTouches[i];
|
|
258
|
+
this.onPointerDown(touch.clientX);
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
/** Mouse move event handler. */
|
|
262
|
+
onMouseMove = (event) => {
|
|
263
|
+
if (this.isDragging) {
|
|
264
|
+
this.onPointerMove(event.clientX);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
/** Touch move event handler. */
|
|
268
|
+
onTouchMove = (event) => {
|
|
269
|
+
if (this.isDragging) {
|
|
270
|
+
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
271
|
+
const touch = event.changedTouches[i];
|
|
272
|
+
this.onPointerMove(touch.clientX);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
/** Mouse up event handler. */
|
|
277
|
+
onMouseUp = () => {
|
|
278
|
+
this.onPointerRelease();
|
|
279
|
+
};
|
|
280
|
+
/** Touch end event handler. */
|
|
281
|
+
onTouchEnd = (event) => {
|
|
282
|
+
for (let i = 0; i < event.changedTouches.length; i++) {
|
|
283
|
+
this.onPointerRelease();
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
/** Sets the scroll parameters to the initial state for scroll start. */
|
|
287
|
+
onPointerDown = (x) => {
|
|
288
|
+
if (!this.isEnabled) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
this.scrollSpeed = 0;
|
|
292
|
+
this.pointerSpeedXOld = 0;
|
|
293
|
+
this.isDragging = true;
|
|
294
|
+
this.pointerX = this.pointerXOld = x;
|
|
295
|
+
};
|
|
296
|
+
/** Stops the manual scroll by user and sets the initial state for the inertia scroll. */
|
|
297
|
+
onPointerRelease = () => {
|
|
298
|
+
if (!this.isEnabled) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (this.isDragging) {
|
|
302
|
+
this.scrollSpeed = this.pointerSpeedXOld;
|
|
303
|
+
this.isScrolling = true;
|
|
304
|
+
this.isDragging = false;
|
|
305
|
+
this.scrollContainer.style.userSelect = null;
|
|
306
|
+
this.scrollContainer.style.pointerEvents = null;
|
|
307
|
+
document.querySelector('body').style.overflowY = null;
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
/** Calculates the distance traveled by the pointer while it's pressed updating the `scrollContainer` position. */
|
|
311
|
+
onPointerMove = (x) => {
|
|
312
|
+
if (!this.isEnabled) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (!this.isDragging) {
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
this.scrollContainer.style.userSelect = 'none';
|
|
319
|
+
this.scrollContainer.style.pointerEvents = 'none';
|
|
320
|
+
// Get the distance the mouse has moved.
|
|
321
|
+
let scrollDelta = x - this.pointerX;
|
|
322
|
+
if (Math.abs(scrollDelta) > this.scrollAmount && window.innerWidth < this.mobileBreakpoint) {
|
|
323
|
+
document.querySelector('body').style.overflowY = 'hidden';
|
|
324
|
+
}
|
|
325
|
+
const { scrollLeft, scrollWidth } = this;
|
|
326
|
+
// Scroll past the end of content, to mimic bounce.
|
|
327
|
+
if ((scrollLeft < 0 && scrollDelta > 0) || (scrollLeft > scrollWidth && scrollDelta < 0)) {
|
|
328
|
+
scrollDelta /= 3;
|
|
329
|
+
}
|
|
330
|
+
// Increase the left position by the amount scrolled.
|
|
331
|
+
this.scrollContainer.style.left = `-${scrollLeft - scrollDelta}px`;
|
|
332
|
+
// Store the position to calculate the next pointer move.
|
|
333
|
+
this.pointerX = x;
|
|
334
|
+
};
|
|
335
|
+
/**
|
|
336
|
+
* Animation cycle.
|
|
337
|
+
* Handles the inertial scroll after user has stoped the interaction.
|
|
338
|
+
*/
|
|
339
|
+
scrollUpdate = () => {
|
|
340
|
+
if (this.isEnabled) {
|
|
341
|
+
requestAnimationFrame(this.scrollUpdate);
|
|
342
|
+
}
|
|
343
|
+
if (!this.isDragging && !this.isScrolling) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
// Continue scrolling after drag end with scroll innertia.
|
|
347
|
+
let { scrollLeft } = this;
|
|
348
|
+
scrollLeft -= this.scrollSpeed;
|
|
349
|
+
// Slow down gradually.
|
|
350
|
+
this.scrollSpeed *= 0.9;
|
|
351
|
+
if (Math.abs(this.scrollSpeed) < 0.1) {
|
|
352
|
+
this.scrollSpeed = 0;
|
|
353
|
+
}
|
|
354
|
+
// Reach content left end. Trigger a bounce effect.
|
|
355
|
+
if (scrollLeft < 0) {
|
|
356
|
+
scrollLeft *= 0.7;
|
|
357
|
+
}
|
|
358
|
+
// Reach content right end. Trigger a bounce effect.
|
|
359
|
+
const { scrollWidth } = this;
|
|
360
|
+
if (scrollLeft > scrollWidth) {
|
|
361
|
+
scrollLeft = scrollWidth + (scrollLeft - scrollWidth) * 0.3;
|
|
362
|
+
}
|
|
363
|
+
// Update scroll position.
|
|
364
|
+
this.scrollContainer.style.left = -scrollLeft + 'px';
|
|
365
|
+
if (this.scrollSpeed === 0 && !this.isDragging && this.isScrolling) {
|
|
366
|
+
this.isScrolling = false;
|
|
367
|
+
this.rootElement.dispatchEvent(new CustomEvent('content-scroll-end', {
|
|
368
|
+
detail: {
|
|
369
|
+
...this.currentScroll,
|
|
370
|
+
},
|
|
371
|
+
}));
|
|
372
|
+
}
|
|
373
|
+
if (this.isDragging || this.isScrolling) {
|
|
374
|
+
this.rootElement.dispatchEvent(new CustomEvent('content-scroll', {
|
|
375
|
+
detail: {
|
|
376
|
+
...this.currentScroll,
|
|
377
|
+
},
|
|
378
|
+
}));
|
|
379
|
+
}
|
|
380
|
+
};
|
|
369
381
|
}
|
|
370
382
|
|
|
371
383
|
const tetCardListCss = "@font-face{font-family:Avenir Next;src:url(assets/fonts/8e7462a9501f48c43c58f870188b3fb2.eot?#iefix);src:url(assets/fonts/8e7462a9501f48c43c58f870188b3fb2.eot?#iefix) format(\"eot\"),url(assets/fonts/3c3e10968ffc97c2a52c5830f9886d1f.woff2) format(\"woff2\"),url(assets/fonts/660fbf858d30d7685fa4b166080f5980.woff) format(\"woff\"),url(assets/fonts/2b7748589092fd1a10b806abdfb562ff.ttf) format(\"truetype\");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Avenir Next;src:url(assets/fonts/d5e25ad69d0ea31f3b8f66d634ca40fe.eot?#iefix);src:url(assets/fonts/d5e25ad69d0ea31f3b8f66d634ca40fe.eot?#iefix) format(\"eot\"),url(assets/fonts/aad36ecead30948bb30fe0ef818b749c.woff2) format(\"woff2\"),url(assets/fonts/c437d7752feaf3f056bbf8613e898d3a.woff) format(\"woff\"),url(assets/fonts/b8df4d02ef5de13a813917a85bc4a9c4.ttf) format(\"truetype\");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Avenir Next;src:url(assets/fonts/046190c9a2f724b925df848737b03819.eot?#iefix);src:url(assets/fonts/046190c9a2f724b925df848737b03819.eot?#iefix) format(\"eot\"),url(assets/fonts/4d52f8276a74ea8efbad833ed790367c.woff2) format(\"woff2\"),url(assets/fonts/a067695dd1b87e927f4056c040d84669.woff) format(\"woff\"),url(assets/fonts/510a664af9771b72d4ce5e637109ca3c.ttf) format(\"truetype\");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Avenir Next;src:url(assets/fonts/0715de188f56c99aa615905f7e06292e.eot?#iefix);src:url(assets/fonts/0715de188f56c99aa615905f7e06292e.eot?#iefix) format(\"eot\"),url(assets/fonts/63f5acc71d9852468683a4bfe824a28f.woff2) format(\"woff2\"),url(assets/fonts/ed94c737da267752ce0abd79bb003ff6.woff) format(\"woff\"),url(assets/fonts/6302f55a6dc6b12365177dc89b7d63cf.ttf) format(\"truetype\");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Avenir Next;src:url(assets/fonts/3f76abc23eef0596c499840db84213bb.eot?#iefix);src:url(assets/fonts/3f76abc23eef0596c499840db84213bb.eot?#iefix) format(\"eot\"),url(assets/fonts/1fe7da97fe9dbe1349aca9b54b5fdf69.woff2) format(\"woff2\"),url(assets/fonts/dacc6a84278e221422902af99579ada5.woff) format(\"woff\"),url(assets/fonts/e530c573663a3a07243d303fbf7db508.ttf) format(\"truetype\");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Avenir Next;src:url(assets/fonts/75f8489ba53f19968feaa3e2eb78c569.eot?#iefix);src:url(assets/fonts/75f8489ba53f19968feaa3e2eb78c569.eot?#iefix) format(\"eot\"),url(assets/fonts/93ec0034623fc696601ab99aba652d4c.woff2) format(\"woff2\"),url(assets/fonts/d73c8eb1c13abe1237366aa3ee829a59.woff) format(\"woff\"),url(assets/fonts/7b6dcef99f3f4b23346e23925ec8678f.ttf) format(\"truetype\");font-weight:600;font-style:italic;font-display:swap}.tet-icon{font-family:Tet Icons;font-weight:400;font-style:normal;font-size:24px;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}@font-face{font-family:Tet Icons;src:url(assets/fonts/d2ce51cdcd0b9707af186f8d50023d23.eot);src:url(assets/fonts/d2ce51cdcd0b9707af186f8d50023d23.eot?#iefix) format(\"embedded-opentype\"),url(assets/fonts/25f10ef322a1220b2e9e11db38b73892.woff2) format(\"woff2\"),url(assets/fonts/fed75ac1edcf1c25cdd8612d2c365f9a.woff) format(\"woff\"),url(assets/fonts/df7fbe67cabb13cb837172a73c46378a.ttf) format(\"truetype\"),url(assets/fonts/5486d8c87e2abc6c13ed952a6cc96658.svg#tet-icons) format(\"svg\");font-weight:400;font-style:normal}.tet-icon:before{content:\"\\E84E\"}.tet-icon--sm{font-size:1.125rem}.tet-icon--md{font-size:1.5rem}.tet-icon--lg{font-size:2.25rem}.tet-icon--xl{font-size:3rem}.tet-icon--xxl{font-size:4rem}.tet-icon--0{font-size:0}.tet-icon--1{font-size:.0625rem}.tet-icon--2{font-size:.125rem}.tet-icon--3{font-size:.1875rem}.tet-icon--4{font-size:.25rem}.tet-icon--5{font-size:.3125rem}.tet-icon--6{font-size:.375rem}.tet-icon--7{font-size:.4375rem}.tet-icon--8{font-size:.5rem}.tet-icon--9{font-size:.5625rem}.tet-icon--10{font-size:.625rem}.tet-icon--11{font-size:.6875rem}.tet-icon--12{font-size:.75rem}.tet-icon--13{font-size:.8125rem}.tet-icon--14{font-size:.875rem}.tet-icon--15{font-size:.9375rem}.tet-icon--16{font-size:1rem}.tet-icon--17{font-size:1.0625rem}.tet-icon--18{font-size:1.125rem}.tet-icon--19{font-size:1.1875rem}.tet-icon--20{font-size:1.25rem}.tet-icon--21{font-size:1.3125rem}.tet-icon--22{font-size:1.375rem}.tet-icon--23{font-size:1.4375rem}.tet-icon--24{font-size:1.5rem}.tet-icon--25{font-size:1.5625rem}.tet-icon--26{font-size:1.625rem}.tet-icon--27{font-size:1.6875rem}.tet-icon--28{font-size:1.75rem}.tet-icon--29{font-size:1.8125rem}.tet-icon--30{font-size:1.875rem}.tet-icon--31{font-size:1.9375rem}.tet-icon--32{font-size:2rem}.tet-icon--33{font-size:2.0625rem}.tet-icon--34{font-size:2.125rem}.tet-icon--35{font-size:2.1875rem}.tet-icon--36{font-size:2.25rem}.tet-icon--37{font-size:2.3125rem}.tet-icon--38{font-size:2.375rem}.tet-icon--39{font-size:2.4375rem}.tet-icon--40{font-size:2.5rem}.tet-icon--41{font-size:2.5625rem}.tet-icon--42{font-size:2.625rem}.tet-icon--43{font-size:2.6875rem}.tet-icon--44{font-size:2.75rem}.tet-icon--45{font-size:2.8125rem}.tet-icon--46{font-size:2.875rem}.tet-icon--47{font-size:2.9375rem}.tet-icon--48{font-size:3rem}.tet-icon--49{font-size:3.0625rem}.tet-icon--50{font-size:3.125rem}.tet-icon--51{font-size:3.1875rem}.tet-icon--52{font-size:3.25rem}.tet-icon--53{font-size:3.3125rem}.tet-icon--54{font-size:3.375rem}.tet-icon--55{font-size:3.4375rem}.tet-icon--56{font-size:3.5rem}.tet-icon--57{font-size:3.5625rem}.tet-icon--58{font-size:3.625rem}.tet-icon--59{font-size:3.6875rem}.tet-icon--60{font-size:3.75rem}.tet-icon--61{font-size:3.8125rem}.tet-icon--62{font-size:3.875rem}.tet-icon--63{font-size:3.9375rem}.tet-icon--64{font-size:4rem}.tet-icon--65{font-size:4.0625rem}.tet-icon--66{font-size:4.125rem}.tet-icon--67{font-size:4.1875rem}.tet-icon--68{font-size:4.25rem}.tet-icon--69{font-size:4.3125rem}.tet-icon--70{font-size:4.375rem}.tet-icon--71{font-size:4.4375rem}.tet-icon--72{font-size:4.5rem}.tet-icon--73{font-size:4.5625rem}.tet-icon--74{font-size:4.625rem}.tet-icon--75{font-size:4.6875rem}.tet-icon--76{font-size:4.75rem}.tet-icon--77{font-size:4.8125rem}.tet-icon--78{font-size:4.875rem}.tet-icon--79{font-size:4.9375rem}.tet-icon--80{font-size:5rem}.tet-icon--81{font-size:5.0625rem}.tet-icon--82{font-size:5.125rem}.tet-icon--83{font-size:5.1875rem}.tet-icon--84{font-size:5.25rem}.tet-icon--85{font-size:5.3125rem}.tet-icon--86{font-size:5.375rem}.tet-icon--87{font-size:5.4375rem}.tet-icon--88{font-size:5.5rem}.tet-icon--89{font-size:5.5625rem}.tet-icon--90{font-size:5.625rem}.tet-icon--91{font-size:5.6875rem}.tet-icon--92{font-size:5.75rem}.tet-icon--93{font-size:5.8125rem}.tet-icon--94{font-size:5.875rem}.tet-icon--95{font-size:5.9375rem}.tet-icon--96{font-size:6rem}.tet-icon--97{font-size:6.0625rem}.tet-icon--98{font-size:6.125rem}.tet-icon--99{font-size:6.1875rem}.tet-icon--100{font-size:6.25rem}.tet-icon--101{font-size:6.3125rem}.tet-icon__add:before{content:\"\\E800\"}.tet-icon__alert-circled:before{content:\"\\E801\"}.tet-icon__alert:before{content:\"\\E802\"}.tet-icon__bank:before{content:\"\\E803\"}.tet-icon__box:before{content:\"\\E804\"}.tet-icon__download:before{content:\"\\E805\"}.tet-icon__burger:before{content:\"\\E806\"}.tet-icon__cancel:before{content:\"\\E807\"}.tet-icon__printer:before{content:\"\\E808\"}.tet-icon__cart-add:before{content:\"\\E809\"}.tet-icon__cart-remove:before{content:\"\\E80A\"}.tet-icon__cart:before{content:\"\\E80B\"}.tet-icon__chat:before{content:\"\\E80C\"}.tet-icon__arrow-up:before{content:\"\\E80D\"}.tet-icon__calendar:before{content:\"\\E80E\"}.tet-icon__help-circled:before{content:\"\\E80F\"}.tet-icon__edit:before{content:\"\\E810\"}.tet-icon__external-link:before{content:\"\\E811\"}.tet-icon__gift:before{content:\"\\E812\"}.tet-icon__person:before{content:\"\\E813\"}.tet-icon__heart:before{content:\"\\E814\"}.tet-icon__language:before{content:\"\\E815\"}.tet-icon__help:before{content:\"\\E816\"}.tet-icon__home-1:before{content:\"\\E817\"}.tet-icon__location:before{content:\"\\E818\"}.tet-icon__home-3:before{content:\"\\E819\"}.tet-icon__chart-even:before{content:\"\\E81A\"}.tet-icon__info-2:before{content:\"\\E81B\"}.tet-icon__key:before{content:\"\\E81C\"}.tet-icon__info:before{content:\"\\E81D\"}.tet-icon__lock-opened:before{content:\"\\E81E\"}.tet-icon__lock-outlined:before{content:\"\\E81F\"}.tet-icon__lock:before{content:\"\\E820\"}.tet-icon__laptop-filled:before{content:\"\\E821\"}.tet-icon__mail:before{content:\"\\E822\"}.tet-icon__options:before{content:\"\\E823\"}.tet-icon__chart-uneven:before{content:\"\\E824\"}.tet-icon__mail-2:before{content:\"\\E825\"}.tet-icon__remove:before{content:\"\\E826\"}.tet-icon__mobile-filled:before{content:\"\\E827\"}.tet-icon__ilu-calendar-check:before{content:\"\\E828\"}.tet-icon__settings-outlined:before{content:\"\\E829\"}.tet-icon__tablet:before{content:\"\\E82A\"}.tet-icon__thumb-up:before{content:\"\\E82B\"}.tet-icon__ilu-purchase:before{content:\"\\E82C\"}.tet-icon__chart-even-outlined:before{content:\"\\E82D\"}.tet-icon__movie:before{content:\"\\E82E\"}.tet-icon__percent:before{content:\"\\E82F\"}.tet-icon__ilu-change-whenever:before{content:\"\\E830\"}.tet-icon__truck:before{content:\"\\E831\"}.tet-icon__zero:before{content:\"\\E832\"}.tet-icon__attach:before{content:\"\\E833\"}.tet-icon__cloud-done:before{content:\"\\E834\"}.tet-icon__cloud-download:before{content:\"\\E835\"}.tet-icon__cloud-upload:before{content:\"\\E836\"}.tet-icon__cloud:before{content:\"\\E837\"}.tet-icon__folder:before{content:\"\\E838\"}.tet-icon__remote:before{content:\"\\E839\"}.tet-icon__router:before{content:\"\\E83A\"}.tet-icon__shield-filled:before{content:\"\\E83B\"}.tet-icon__shield:before{content:\"\\E83C\"}.tet-icon__ilu-devices:before{content:\"\\E83D\"}.tet-icon__ilu-get-points:before{content:\"\\E83E\"}.tet-icon__tv:before{content:\"\\E83F\"}.tet-icon__ilu-internet:before{content:\"\\E840\"}.tet-icon__wifi-outlined:before{content:\"\\E841\"}.tet-icon__wifi:before{content:\"\\E842\"}.tet-icon__description-outlined:before{content:\"\\E843\"}.tet-icon__laptop:before{content:\"\\E844\"}.tet-icon__chart-uneven-outlined:before{content:\"\\E845\"}.tet-icon__meter:before{content:\"\\E846\"}.tet-icon__mobile:before{content:\"\\E847\"}.tet-icon__phone:before{content:\"\\E848\"}.tet-icon__plug-filled:before{content:\"\\E849\"}.tet-icon__plug:before{content:\"\\E84A\"}.tet-icon__print:before{content:\"\\E84B\"}.tet-icon__camera:before{content:\"\\E84C\"}.tet-icon__clock:before{content:\"\\E84D\"}.tet-icon__placeholder:before{content:\"\\E84E\"}.tet-icon__tv-filled:before{content:\"\\E84F\"}.tet-icon__arrow-down:before{content:\"\\E850\"}.tet-icon__arrow-left:before{content:\"\\E851\"}.tet-icon__arrow-right:before{content:\"\\E852\"}.tet-icon__description:before{content:\"\\E853\"}.tet-icon__login:before{content:\"\\E854\"}.tet-icon__check:before{content:\"\\E855\"}.tet-icon__chevron-down:before{content:\"\\E856\"}.tet-icon__chevron-left:before{content:\"\\E857\"}.tet-icon__chevron-right:before{content:\"\\E858\"}.tet-icon__chevron-up:before{content:\"\\E859\"}.tet-icon__close-circled:before{content:\"\\E85A\"}.tet-icon__close:before{content:\"\\E85B\"}.tet-icon__more-horizontal:before{content:\"\\E85C\"}.tet-icon__more-vertical:before{content:\"\\E85D\"}.tet-icon__refresh:before{content:\"\\E85E\"}.tet-icon__facebook:before{content:\"\\E85F\"}.tet-icon__instagram:before{content:\"\\E860\"}.tet-icon__linkedin:before{content:\"\\E861\"}.tet-icon__people:before{content:\"\\E862\"}.tet-icon__logout:before{content:\"\\E863\"}.tet-icon__share:before{content:\"\\E864\"}.tet-icon__twitter:before{content:\"\\E865\"}.tet-icon__cancel-filled:before{content:\"\\E866\"}.tet-icon__done:before{content:\"\\E867\"}.tet-icon__star-filled:before{content:\"\\E868\"}.tet-icon__star:before{content:\"\\E869\"}.tet-icon__clipboard:before{content:\"\\E86A\"}.tet-icon__ilu-calendar:before{content:\"\\E86B\"}.tet-icon__check-circled:before{content:\"\\E86C\"}.tet-icon__ilu-choose-channels:before{content:\"\\E86D\"}.tet-icon__search:before{content:\"\\E86E\"}.tet-icon__warning:before{content:\"\\E86F\"}.tet-icon__ilu-clock-1:before{content:\"\\E870\"}.tet-icon__ilu-fold:before{content:\"\\E871\"}.tet-icon__ilu-letter:before{content:\"\\E872\"}.tet-icon__ilu-pay:before{content:\"\\E873\"}.tet-icon__ilu-meter:before{content:\"\\E874\"}.tet-icon__ilu-sign:before{content:\"\\E875\"}.tet-icon__smart-watch-filled:before{content:\"\\E876\"}.tet-icon__washing-machine-filled:before{content:\"\\E877\"}.tet-icon__bullet:before{content:\"\\E878\"}.tet-icon__sound:before{content:\"\\E879\"}.tet-icon__dropdown:before{content:\"\\E87A\"}.tet-icon__mask-pass:before{content:\"\\E87B\"}.tet-icon__select:before{content:\"\\E87C\"}.tet-icon__text-area-sizing:before{content:\"\\E87D\"}.tet-icon__unmask-pass:before{content:\"\\E87E\"}.tet-icon__bullet-small:before{content:\"\\E882\"}.tet-icon__electric-bolt:before{content:\"\\E880\"}.tet-icon__sun:before{content:\"\\E881\"}: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{--card-list-content-width:100%;--card-list-content-height:100%;--card-list-horizontal-margin:10rem;--card-list-tablet-horizontal-margin:2rem;--card-list-mobile-horizontal-margin:1rem;--card-list-vertical-padding:0;--card-list-control-height:12.5rem;--card-list-control-button-height:3.25rem;--card-list-control-button-width:3.25rem;--card-list-control-horizontal-margin:5rem;--card-list-control-icon-color:var(--tc-button-icon-primary);--card-list-scroll-margin:3.5rem auto 0 auto;--card-list-scroll-background-color:var(--tc-border-quaternary);--card-list-scroll-thumb-background-color:var(--tc-border-secondary);--card-list-gap:1rem}.hidden{display:none}.tet-card-list{display:inline-flex;flex-direction:row;flex-wrap:nowrap;align-items:center;height:var(--card-list-content-height);gap:var(--card-list-gap);overflow:visible;position:relative;box-sizing:border-box;margin:0 auto;-ms-overflow-style:none;scrollbar-width:none}.tet-card-list__container{display:flex;flex-direction:column;align-items:center;position:relative;-webkit-overflow-scrolling:touch}.tet-card-list__container.dark{--card-list-control-icon-color:var(--tc-button-icon-primary-dark);--card-list-scroll-background-color:var(--tc-border-quaternary-dark);--card-list-scroll-thumb-background-color:var(--tc-border-secondary-dark)}.tet-card-list__scroll-container{width:var(--card-list-content-width);height:var(--card-list-content-height);overflow:hidden;display:block;position:relative}.tet-card-list ::slotted(:first-child){margin-left:var(--card-list-mobile-horizontal-margin) !important}.tet-card-list ::slotted(:last-child){margin-right:var(--card-list-mobile-horizontal-margin) !important}.tet-card-list::-webkit-scrollbar{display:none}.tet-card-list__scroll{position:relative;display:flex;height:0.25rem;background-color:var(--card-list-scroll-background-color);width:70%;margin:var(--card-list-scroll-margin);border-radius:0.25rem}.tet-card-list__scroll--thumb{background-color:var(--card-list-scroll-thumb-background-color);border-radius:0.25rem;display:block;height:100%;left:0;position:absolute}.tet-card-list--no-scroll{overflow-x:hidden}.tet-card-list--no-scroll .tet-card-list__scroll{display:none}.tet-card-list__control{--button-padding:0;cursor:pointer;align-items:center;color:rgb(10, 11, 13);display:none;justify-content:center;position:absolute;top:calc(var(--card-list-control-height) / 2 - var(--card-list-control-button-height) / 2);user-select:none;z-index:2}.tet-card-list__control--left{left:var(--card-list-control-horizontal-margin)}.tet-card-list__control--right{right:var(--card-list-control-horizontal-margin)}.tet-card-list__control__icon{--icon-size:1.25rem;--icon-color:var(--card-list-control-icon-color);display:flex;align-items:center;justify-content:center;border-radius:50%;height:var(--card-list-control-button-height);width:var(--card-list-control-button-width)}.tet-card-list--hidden,.tet-card-list__control--hidden{display:none;opacity:0;visibility:hidden}.tet-card-list--dragging{user-select:none;cursor:grabbing}.tet-card-list--dragging *{pointer-events:none}@media all and (min-width: 22.5rem){.tet-card-list__scroll{width:50%}.tet-card-list ::slotted(:first-child){margin-left:var(--card-list-tablet-horizontal-margin) !important}.tet-card-list ::slotted(:last-child){margin-right:var(--card-list-tablet-horizontal-margin) !important}}@media all and (min-width: 48rem){.tet-card-list__scroll{width:min(40%, var(--card-list-content-width) * 0.325)}.tet-card-list__control{display:flex}.tet-card-list ::slotted(:first-child){margin-left:var(--card-list-horizontal-margin) !important}.tet-card-list ::slotted(:last-child){margin-right:var(--card-list-horizontal-margin) !important}}";
|
|
@@ -376,340 +388,6 @@ const TetCardList = class {
|
|
|
376
388
|
registerInstance(this, hostRef);
|
|
377
389
|
this.cardScroll = createEvent(this, "cardScroll", 7);
|
|
378
390
|
this.contentScrollEnd = createEvent(this, "contentScrollEnd", 7);
|
|
379
|
-
/**
|
|
380
|
-
* The arrays containing cloned content elements.
|
|
381
|
-
*/
|
|
382
|
-
this.virtualScrollPrependClones = [];
|
|
383
|
-
this.virtualScrollAppendClones = [];
|
|
384
|
-
/**
|
|
385
|
-
* Stores the content scroll and pointer positions for use with pointer events.
|
|
386
|
-
*/
|
|
387
|
-
this.scrollDetails = null;
|
|
388
|
-
/**
|
|
389
|
-
* Stores the `element` left and width values to limit html reflows.
|
|
390
|
-
*/
|
|
391
|
-
this.dimensions = { element: { left: 0, width: 0 } };
|
|
392
|
-
/**
|
|
393
|
-
* The css gap value set between elements.
|
|
394
|
-
*/
|
|
395
|
-
this.elementGap = 16;
|
|
396
|
-
/**
|
|
397
|
-
* Determines if the content is currently being scrolled.
|
|
398
|
-
*/
|
|
399
|
-
this.isScrolling = false;
|
|
400
|
-
/**
|
|
401
|
-
* Scrolls the element to the horizontal center of the viewport.
|
|
402
|
-
* @param querySelector The query selector of the element that will be scrolled to the center of view.
|
|
403
|
-
* @param isSmooth determines whether the scroll should be animated.
|
|
404
|
-
* @param isQuiet determines wheter scroll events should be triggered.
|
|
405
|
-
*/
|
|
406
|
-
this.scrollToElementCenter = async (querySelector, isSmooth = true, isQuiet = false) => {
|
|
407
|
-
let childNodes = Array.from(this.element.children);
|
|
408
|
-
if (this.withVirtualScroll) {
|
|
409
|
-
childNodes = Array.from(this.element.querySelectorAll('[data-id]'));
|
|
410
|
-
}
|
|
411
|
-
const elementToCenter = childNodes.find(childNode => childNode.matches(querySelector));
|
|
412
|
-
if (elementToCenter === null || elementToCenter === undefined) {
|
|
413
|
-
return;
|
|
414
|
-
}
|
|
415
|
-
await this.inertialScroll.scrollToElement(elementToCenter, isSmooth, isQuiet);
|
|
416
|
-
if (this.withOverflowOpacity) {
|
|
417
|
-
this.updateChildElementOverflowOpacity();
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
|
-
/**
|
|
421
|
-
* Calculates the width of the scroll thumb in percentage relative to the content. Sets up the
|
|
422
|
-
* width parameters of the scroll thumb.
|
|
423
|
-
*/
|
|
424
|
-
this.setupScrollbar = () => {
|
|
425
|
-
const { currentScroll } = this.inertialScroll;
|
|
426
|
-
this.scrollThumbWidth =
|
|
427
|
-
(this.scrollContainerRef.clientWidth / (currentScroll.scrollWidth + this.scrollContainerRef.clientWidth)) * 100;
|
|
428
|
-
if (this.scrollbarRef === undefined) {
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
this.scrollbarRef.style.width = `${this.scrollThumbWidth}%`;
|
|
432
|
-
this.scrollbarRef.style.left = `${this.currentScrollbarScroll}%`;
|
|
433
|
-
};
|
|
434
|
-
/**
|
|
435
|
-
* Prevents the event if scrolling is disabled.
|
|
436
|
-
* @param event Event
|
|
437
|
-
*/
|
|
438
|
-
this.handleDisableScroll = (event) => {
|
|
439
|
-
if (!this.disableScroll) {
|
|
440
|
-
return;
|
|
441
|
-
}
|
|
442
|
-
event.preventDefault();
|
|
443
|
-
};
|
|
444
|
-
/**
|
|
445
|
-
* The scroll event handler. Updates the card item classes as they are scrolled out of view.
|
|
446
|
-
* Updates the control element classes as the content scroll reaches either end of the scroll.
|
|
447
|
-
* Updates the position of the visual scrollbar thumb element.
|
|
448
|
-
*/
|
|
449
|
-
this.handleScroll = () => {
|
|
450
|
-
this.cardScroll.emit({
|
|
451
|
-
totalAvailableScrollWidth: this.scrollDetails.scrollWidth,
|
|
452
|
-
currentScroll: this.scrollDetails.scrollLeft,
|
|
453
|
-
});
|
|
454
|
-
const elementChildren = Array.from(this.element.children);
|
|
455
|
-
if (this.withActiveElement) {
|
|
456
|
-
const activeClone = elementChildren.find(element => element.attributes['data-clone-id'] && element.classList.contains(this.activeElementClass));
|
|
457
|
-
if (activeClone !== undefined) {
|
|
458
|
-
activeClone.classList.remove(this.activeElementClass);
|
|
459
|
-
const cloneOffset = activeClone.getBoundingClientRect().left;
|
|
460
|
-
const activeOriginal = elementChildren.find(element => element.classList.contains(this.activeElementClass));
|
|
461
|
-
if (activeOriginal !== undefined) {
|
|
462
|
-
const originalOffset = activeOriginal.getBoundingClientRect().left;
|
|
463
|
-
const scrollDelta = cloneOffset - originalOffset;
|
|
464
|
-
this.inertialScroll.scrollTo({ left: this.scrollDetails.scrollLeft - scrollDelta }, true);
|
|
465
|
-
this.updateChildElementOverflowOpacity();
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
this.setActiveCenteredElement();
|
|
469
|
-
}
|
|
470
|
-
if (this.withVirtualScroll) {
|
|
471
|
-
this.moveElements();
|
|
472
|
-
this.updateChildElementOverflowOpacity();
|
|
473
|
-
}
|
|
474
|
-
};
|
|
475
|
-
/**
|
|
476
|
-
* Handles toggling of the `activeElementClass` on elements during pointer drag events.
|
|
477
|
-
*/
|
|
478
|
-
this.setActiveCenteredElement = () => {
|
|
479
|
-
let isScrollRight = this.scrollDetails.scrollSpeed > 0;
|
|
480
|
-
let isScrollLeft = this.scrollDetails.scrollSpeed < 0;
|
|
481
|
-
const elementChildren = Array.from(this.element.children);
|
|
482
|
-
const elementPositions = elementChildren.map(child => child.getBoundingClientRect());
|
|
483
|
-
const elementRect = this.element.getBoundingClientRect();
|
|
484
|
-
/** Determine the center point of the bounding element */
|
|
485
|
-
const centerPoint = elementRect.width / 2 + elementRect.left;
|
|
486
|
-
/** Determine the index of the child card overlapping with the `centerPoint` */
|
|
487
|
-
let centeredElementIndex = elementPositions.findIndex(element => element.left <= centerPoint && element.left + element.width >= centerPoint);
|
|
488
|
-
/** Set index to the first element in case list is scrolled to the start */
|
|
489
|
-
if (centeredElementIndex === 1 && isScrollLeft && this.scrollDetails.scrollLeft === 0) {
|
|
490
|
-
centeredElementIndex = 0;
|
|
491
|
-
}
|
|
492
|
-
/** Set index to the last element in case list is scrolled to the end */
|
|
493
|
-
if (centeredElementIndex === elementPositions.length - 2 &&
|
|
494
|
-
isScrollRight &&
|
|
495
|
-
this.scrollDetails.scrollLeft + this.scrollContainerRef.getBoundingClientRect().width >=
|
|
496
|
-
this.scrollDetails.scrollWidth) {
|
|
497
|
-
centeredElementIndex = elementPositions.length - 1;
|
|
498
|
-
}
|
|
499
|
-
/** Calculate the index of the next element in case `centerPoint` is in between two elements */
|
|
500
|
-
if (centeredElementIndex === -1) {
|
|
501
|
-
if (isScrollRight) {
|
|
502
|
-
centeredElementIndex = elementPositions.findIndex(element => element.left - this.elementGap <= centerPoint && element.left + element.width >= centerPoint);
|
|
503
|
-
}
|
|
504
|
-
if (isScrollLeft) {
|
|
505
|
-
centeredElementIndex = elementPositions.findIndex(element => element.left <= centerPoint && element.left + element.width + this.elementGap >= centerPoint);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
const currentActiveElements = elementChildren.filter(element => element.classList.contains(this.activeElementClass));
|
|
509
|
-
currentActiveElements.forEach(element => element.classList.remove(this.activeElementClass));
|
|
510
|
-
const nextElement = elementChildren[centeredElementIndex];
|
|
511
|
-
if (this.withVirtualScroll && (nextElement === null || nextElement === void 0 ? void 0 : nextElement.hasAttribute('data-clone-id'))) {
|
|
512
|
-
const nextOriginalElement = elementChildren.find(element => { var _a; return ((_a = element.attributes['data-id']) === null || _a === void 0 ? void 0 : _a.value) === nextElement.getAttribute('data-clone-id'); });
|
|
513
|
-
nextOriginalElement.classList.add(this.activeElementClass);
|
|
514
|
-
}
|
|
515
|
-
if (nextElement !== undefined) {
|
|
516
|
-
nextElement.classList.add(this.activeElementClass);
|
|
517
|
-
}
|
|
518
|
-
this.updateControlVisibility();
|
|
519
|
-
};
|
|
520
|
-
/**
|
|
521
|
-
* Shifts the elements and scroll position.
|
|
522
|
-
* Gets the first and the last of the original elements and shifts both the original
|
|
523
|
-
* and the cloned elements depending on the scroll direction.
|
|
524
|
-
* Updates the currently set scroll values to hide the shift of the elements.
|
|
525
|
-
*/
|
|
526
|
-
this.moveElements = () => {
|
|
527
|
-
var _a, _b;
|
|
528
|
-
if (!this.withVirtualScroll) {
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
|
-
const { width, left } = this.dimensions.element;
|
|
532
|
-
const firstOriginalElement = this.getFirstOriginal();
|
|
533
|
-
const lastOriginalElement = this.getLastOriginal();
|
|
534
|
-
const firstOriginalRect = firstOriginalElement.getBoundingClientRect();
|
|
535
|
-
const lastOriginalRect = lastOriginalElement.getBoundingClientRect();
|
|
536
|
-
const lastOriginalRight = lastOriginalRect.right - left;
|
|
537
|
-
const isLastOriginalInViewport = lastOriginalRight < width;
|
|
538
|
-
if (isLastOriginalInViewport && ((_a = this.scrollDetails) === null || _a === void 0 ? void 0 : _a.scrollSpeed) < 0) {
|
|
539
|
-
const movedElementDataId = parseInt(firstOriginalElement.getAttribute('data-id'), 10);
|
|
540
|
-
const positionDelta = firstOriginalRect.width + this.elementGap;
|
|
541
|
-
const secondOriginalElement = firstOriginalElement.nextElementSibling;
|
|
542
|
-
this.inertialScroll.scrollBy({ left: -positionDelta }, true);
|
|
543
|
-
lastOriginalElement.insertAdjacentElement('afterend', firstOriginalElement);
|
|
544
|
-
secondOriginalElement.insertAdjacentElement('beforebegin', this.virtualScrollPrependClones[movedElementDataId]);
|
|
545
|
-
this.element.insertAdjacentElement('beforeend', this.virtualScrollAppendClones[movedElementDataId]);
|
|
546
|
-
}
|
|
547
|
-
const firstOriginalLeft = firstOriginalRect.left - left;
|
|
548
|
-
const isFirstOriginalInViewport = firstOriginalLeft > 0;
|
|
549
|
-
if (isFirstOriginalInViewport && ((_b = this.scrollDetails) === null || _b === void 0 ? void 0 : _b.scrollSpeed) > 0) {
|
|
550
|
-
const secondToLastElement = lastOriginalElement.previousElementSibling;
|
|
551
|
-
const positionDelta = lastOriginalRect.width + this.elementGap;
|
|
552
|
-
const movedElementDataId = parseInt(lastOriginalElement.getAttribute('data-id'), 10);
|
|
553
|
-
this.inertialScroll.scrollBy({ left: positionDelta }, true);
|
|
554
|
-
firstOriginalElement.insertAdjacentElement('beforebegin', lastOriginalElement);
|
|
555
|
-
secondToLastElement.insertAdjacentElement('afterend', this.virtualScrollAppendClones[movedElementDataId]);
|
|
556
|
-
this.element.insertAdjacentElement('afterbegin', this.virtualScrollPrependClones[movedElementDataId]);
|
|
557
|
-
}
|
|
558
|
-
};
|
|
559
|
-
/**
|
|
560
|
-
* Stops event propagation bubbling to the `contentElement`
|
|
561
|
-
* @param event PointerEvent
|
|
562
|
-
*/
|
|
563
|
-
this.handleControlPointerDown = (event) => {
|
|
564
|
-
event.preventDefault();
|
|
565
|
-
event.stopPropagation();
|
|
566
|
-
event.stopImmediatePropagation();
|
|
567
|
-
};
|
|
568
|
-
/**
|
|
569
|
-
* Handles the left control click.
|
|
570
|
-
*/
|
|
571
|
-
this.handleLeftControl = async () => {
|
|
572
|
-
if (this.isScrolling) {
|
|
573
|
-
return;
|
|
574
|
-
}
|
|
575
|
-
this.isScrolling = true;
|
|
576
|
-
if (this.withActiveElement) {
|
|
577
|
-
const currentActive = this.element.querySelector(`.${this.activeElementClass}`);
|
|
578
|
-
let previousElement = currentActive.previousElementSibling;
|
|
579
|
-
if (previousElement === null) {
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
currentActive.classList.remove(this.activeElementClass);
|
|
583
|
-
if (previousElement.hasAttribute('data-clone-id')) {
|
|
584
|
-
this.scrollDetails.scrollSpeed = 1;
|
|
585
|
-
this.moveElements();
|
|
586
|
-
previousElement = currentActive.previousElementSibling;
|
|
587
|
-
if (this.withOverflowOpacity) {
|
|
588
|
-
this.updateChildElementOverflowOpacity();
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
previousElement.classList.add(this.activeElementClass);
|
|
592
|
-
await this.scrollToElementCenter(`.${this.activeElementClass}`);
|
|
593
|
-
this.moveElements();
|
|
594
|
-
this.updateControlVisibility();
|
|
595
|
-
}
|
|
596
|
-
else if (this.scrollFullWidth) {
|
|
597
|
-
const scrollRect = this.scrollContainerRef.getBoundingClientRect();
|
|
598
|
-
const scrollWidth = scrollRect.width;
|
|
599
|
-
const scrollStart = scrollRect.left;
|
|
600
|
-
const firstElement = Array.from(this.element.children).find(child => {
|
|
601
|
-
const childRect = child.getBoundingClientRect();
|
|
602
|
-
return childRect.left < scrollStart && childRect.right + this.elementGap > scrollStart;
|
|
603
|
-
});
|
|
604
|
-
if (firstElement !== undefined) {
|
|
605
|
-
const firstElementRight = firstElement.getBoundingClientRect().right;
|
|
606
|
-
const scrollEnd = scrollRect.left + scrollWidth;
|
|
607
|
-
await this.inertialScroll.scrollBy({ left: -(scrollEnd - firstElementRight), behavior: 'smooth' });
|
|
608
|
-
}
|
|
609
|
-
else {
|
|
610
|
-
await this.inertialScroll.scrollBy({ left: -scrollWidth, behavior: 'smooth' });
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
else {
|
|
614
|
-
await this.inertialScroll.scrollBy({ left: -this.controlScrollAmount, behavior: 'smooth' });
|
|
615
|
-
}
|
|
616
|
-
this.isScrolling = false;
|
|
617
|
-
};
|
|
618
|
-
/**
|
|
619
|
-
* Handles the right control click.
|
|
620
|
-
*/
|
|
621
|
-
this.handleRightControl = async () => {
|
|
622
|
-
if (this.isScrolling) {
|
|
623
|
-
return;
|
|
624
|
-
}
|
|
625
|
-
this.isScrolling = true;
|
|
626
|
-
if (this.withActiveElement) {
|
|
627
|
-
const currentActive = this.element.querySelector(`.${this.activeElementClass}`);
|
|
628
|
-
let nextElement = currentActive.nextElementSibling;
|
|
629
|
-
if (nextElement === null) {
|
|
630
|
-
return;
|
|
631
|
-
}
|
|
632
|
-
currentActive.classList.remove(this.activeElementClass);
|
|
633
|
-
if (nextElement.hasAttribute('data-clone-id')) {
|
|
634
|
-
this.scrollDetails.scrollSpeed = -1;
|
|
635
|
-
this.moveElements();
|
|
636
|
-
nextElement = currentActive.nextElementSibling;
|
|
637
|
-
if (this.withOverflowOpacity) {
|
|
638
|
-
this.updateChildElementOverflowOpacity();
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
nextElement.classList.add(this.activeElementClass);
|
|
642
|
-
await this.scrollToElementCenter(`.${this.activeElementClass}`);
|
|
643
|
-
this.moveElements();
|
|
644
|
-
this.updateControlVisibility();
|
|
645
|
-
}
|
|
646
|
-
else if (this.scrollFullWidth) {
|
|
647
|
-
const scrollRect = this.scrollContainerRef.getBoundingClientRect();
|
|
648
|
-
const scrollWidth = scrollRect.width;
|
|
649
|
-
const scrollEnd = scrollWidth + scrollRect.left;
|
|
650
|
-
const lastElement = Array.from(this.element.children).find(child => {
|
|
651
|
-
const childRect = child.getBoundingClientRect();
|
|
652
|
-
return childRect.left - this.elementGap < scrollEnd && childRect.right > scrollEnd;
|
|
653
|
-
});
|
|
654
|
-
if (lastElement !== undefined) {
|
|
655
|
-
const lastElementLeft = lastElement.getBoundingClientRect().left;
|
|
656
|
-
const scrollStart = scrollRect.left;
|
|
657
|
-
await this.inertialScroll.scrollBy({ left: lastElementLeft - scrollStart, behavior: 'smooth' });
|
|
658
|
-
}
|
|
659
|
-
else {
|
|
660
|
-
await this.inertialScroll.scrollBy({ left: scrollWidth, behavior: 'smooth' });
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
else {
|
|
664
|
-
await this.inertialScroll.scrollBy({ left: this.controlScrollAmount, behavior: 'smooth' });
|
|
665
|
-
}
|
|
666
|
-
this.isScrolling = false;
|
|
667
|
-
};
|
|
668
|
-
/**
|
|
669
|
-
* Handles the keyup event on the right control.
|
|
670
|
-
* If the key is "Enter" or "Space", will trigger navigation to the next card.
|
|
671
|
-
* @param e - The keyboard event object.
|
|
672
|
-
*/
|
|
673
|
-
this.handleRightControlKeyUp = (e) => {
|
|
674
|
-
if (e.key === ' ' || e.key === 'Enter') {
|
|
675
|
-
this.handleRightControl();
|
|
676
|
-
}
|
|
677
|
-
};
|
|
678
|
-
/**
|
|
679
|
-
* Handles the keyup event on the left control.
|
|
680
|
-
* If the key is "Enter" or "Space", will trigger navigation to the previous card.
|
|
681
|
-
* @param e - The keyboard event object.
|
|
682
|
-
*/
|
|
683
|
-
this.handleLeftControlKeyUp = (e) => {
|
|
684
|
-
if (e.key === ' ' || e.key === 'Enter') {
|
|
685
|
-
this.handleLeftControl();
|
|
686
|
-
}
|
|
687
|
-
};
|
|
688
|
-
/**
|
|
689
|
-
* Updates the visibility of the control element.
|
|
690
|
-
*/
|
|
691
|
-
this.updateControlVisibility = (scroll = this.scrollDetails) => {
|
|
692
|
-
let controlVisibility = {
|
|
693
|
-
left: false,
|
|
694
|
-
right: false,
|
|
695
|
-
};
|
|
696
|
-
if (this.withControls) {
|
|
697
|
-
if (scroll === null) {
|
|
698
|
-
controlVisibility = {
|
|
699
|
-
left: false,
|
|
700
|
-
right: true,
|
|
701
|
-
};
|
|
702
|
-
}
|
|
703
|
-
else {
|
|
704
|
-
controlVisibility.left = scroll.scrollLeft - 1 <= 0 ? false : true;
|
|
705
|
-
controlVisibility.right = scroll.scrollLeft >= scroll.scrollWidth ? false : true;
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
// Only update if there are changes.
|
|
709
|
-
if (JSON.stringify(controlVisibility) !== JSON.stringify(this.controlVisibility)) {
|
|
710
|
-
this.controlVisibility = controlVisibility;
|
|
711
|
-
}
|
|
712
|
-
};
|
|
713
391
|
this.controlVisibility = { left: true, right: true };
|
|
714
392
|
this.scrollThumbWidth = 0;
|
|
715
393
|
this.isSmallContainer = false;
|
|
@@ -730,6 +408,45 @@ const TetCardList = class {
|
|
|
730
408
|
this.iconPrev = '';
|
|
731
409
|
this.iconNext = '';
|
|
732
410
|
}
|
|
411
|
+
inertialScroll;
|
|
412
|
+
get element() { return getElement(this); }
|
|
413
|
+
/**
|
|
414
|
+
* The DOM element of the scrollable content container.
|
|
415
|
+
*/
|
|
416
|
+
scrollContainerRef;
|
|
417
|
+
/**
|
|
418
|
+
* The DOM element of the scroll thumb.
|
|
419
|
+
*/
|
|
420
|
+
scrollbarRef;
|
|
421
|
+
/**
|
|
422
|
+
* The arrays containing cloned content elements.
|
|
423
|
+
*/
|
|
424
|
+
virtualScrollPrependClones = [];
|
|
425
|
+
virtualScrollAppendClones = [];
|
|
426
|
+
/**
|
|
427
|
+
* Stores the content scroll and pointer positions for use with pointer events.
|
|
428
|
+
*/
|
|
429
|
+
scrollDetails = null;
|
|
430
|
+
/**
|
|
431
|
+
* Stores the `element` left and width values to limit html reflows.
|
|
432
|
+
*/
|
|
433
|
+
dimensions = { element: { left: 0, width: 0 } };
|
|
434
|
+
/**
|
|
435
|
+
* The css gap value set between elements.
|
|
436
|
+
*/
|
|
437
|
+
elementGap = 16;
|
|
438
|
+
/**
|
|
439
|
+
* Determines if the content is currently being scrolled.
|
|
440
|
+
*/
|
|
441
|
+
isScrolling = false;
|
|
442
|
+
/**
|
|
443
|
+
* The event that is emitted when the component is scrolled.
|
|
444
|
+
*/
|
|
445
|
+
cardScroll;
|
|
446
|
+
/**
|
|
447
|
+
* The event that is emitted when the component is scrolled.
|
|
448
|
+
*/
|
|
449
|
+
contentScrollEnd;
|
|
733
450
|
/**
|
|
734
451
|
* Adds and removes event pointer event handles to the `element` on `withMouseDrag` change.
|
|
735
452
|
* @param withMouseDrag boolean
|
|
@@ -788,6 +505,26 @@ const TetCardList = class {
|
|
|
788
505
|
async scrollListToElementCenter(querySelector, isQuiet = false) {
|
|
789
506
|
await this.scrollToElementCenter(querySelector, true, isQuiet);
|
|
790
507
|
}
|
|
508
|
+
/**
|
|
509
|
+
* Scrolls the element to the horizontal center of the viewport.
|
|
510
|
+
* @param querySelector The query selector of the element that will be scrolled to the center of view.
|
|
511
|
+
* @param isSmooth determines whether the scroll should be animated.
|
|
512
|
+
* @param isQuiet determines wheter scroll events should be triggered.
|
|
513
|
+
*/
|
|
514
|
+
scrollToElementCenter = async (querySelector, isSmooth = true, isQuiet = false) => {
|
|
515
|
+
let childNodes = Array.from(this.element.children);
|
|
516
|
+
if (this.withVirtualScroll) {
|
|
517
|
+
childNodes = Array.from(this.element.querySelectorAll('[data-id]'));
|
|
518
|
+
}
|
|
519
|
+
const elementToCenter = childNodes.find(childNode => childNode.matches(querySelector));
|
|
520
|
+
if (elementToCenter === null || elementToCenter === undefined) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
await this.inertialScroll.scrollToElement(elementToCenter, isSmooth, isQuiet);
|
|
524
|
+
if (this.withOverflowOpacity) {
|
|
525
|
+
this.updateChildElementOverflowOpacity();
|
|
526
|
+
}
|
|
527
|
+
};
|
|
791
528
|
/**
|
|
792
529
|
* The lifecycle method that called once just after the component is fully loaded and the first
|
|
793
530
|
* `render()` occurs. Attaches the event listeners to the root element of the component and
|
|
@@ -940,11 +677,148 @@ const TetCardList = class {
|
|
|
940
677
|
* Removes the event listeners.
|
|
941
678
|
*/
|
|
942
679
|
disconnectedCallback() {
|
|
943
|
-
var _a, _b;
|
|
944
680
|
this.inertialScroll.detach();
|
|
945
|
-
|
|
946
|
-
|
|
681
|
+
this.scrollContainerRef?.removeEventListener('mousewheel', this.handleDisableScroll);
|
|
682
|
+
this.scrollContainerRef?.removeEventListener('touchmove', this.handleDisableScroll);
|
|
947
683
|
}
|
|
684
|
+
/**
|
|
685
|
+
* Calculates the width of the scroll thumb in percentage relative to the content. Sets up the
|
|
686
|
+
* width parameters of the scroll thumb.
|
|
687
|
+
*/
|
|
688
|
+
setupScrollbar = () => {
|
|
689
|
+
const { currentScroll } = this.inertialScroll;
|
|
690
|
+
this.scrollThumbWidth =
|
|
691
|
+
(this.scrollContainerRef.clientWidth / (currentScroll.scrollWidth + this.scrollContainerRef.clientWidth)) * 100;
|
|
692
|
+
if (this.scrollbarRef === undefined) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
this.scrollbarRef.style.width = `${this.scrollThumbWidth}%`;
|
|
696
|
+
this.scrollbarRef.style.left = `${this.currentScrollbarScroll}%`;
|
|
697
|
+
};
|
|
698
|
+
/**
|
|
699
|
+
* Prevents the event if scrolling is disabled.
|
|
700
|
+
* @param event Event
|
|
701
|
+
*/
|
|
702
|
+
handleDisableScroll = (event) => {
|
|
703
|
+
if (!this.disableScroll) {
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
706
|
+
event.preventDefault();
|
|
707
|
+
};
|
|
708
|
+
/**
|
|
709
|
+
* The scroll event handler. Updates the card item classes as they are scrolled out of view.
|
|
710
|
+
* Updates the control element classes as the content scroll reaches either end of the scroll.
|
|
711
|
+
* Updates the position of the visual scrollbar thumb element.
|
|
712
|
+
*/
|
|
713
|
+
handleScroll = () => {
|
|
714
|
+
this.cardScroll.emit({
|
|
715
|
+
totalAvailableScrollWidth: this.scrollDetails.scrollWidth,
|
|
716
|
+
currentScroll: this.scrollDetails.scrollLeft,
|
|
717
|
+
});
|
|
718
|
+
const elementChildren = Array.from(this.element.children);
|
|
719
|
+
if (this.withActiveElement) {
|
|
720
|
+
const activeClone = elementChildren.find(element => element.attributes['data-clone-id'] && element.classList.contains(this.activeElementClass));
|
|
721
|
+
if (activeClone !== undefined) {
|
|
722
|
+
activeClone.classList.remove(this.activeElementClass);
|
|
723
|
+
const cloneOffset = activeClone.getBoundingClientRect().left;
|
|
724
|
+
const activeOriginal = elementChildren.find(element => element.classList.contains(this.activeElementClass));
|
|
725
|
+
if (activeOriginal !== undefined) {
|
|
726
|
+
const originalOffset = activeOriginal.getBoundingClientRect().left;
|
|
727
|
+
const scrollDelta = cloneOffset - originalOffset;
|
|
728
|
+
this.inertialScroll.scrollTo({ left: this.scrollDetails.scrollLeft - scrollDelta }, true);
|
|
729
|
+
this.updateChildElementOverflowOpacity();
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
this.setActiveCenteredElement();
|
|
733
|
+
}
|
|
734
|
+
if (this.withVirtualScroll) {
|
|
735
|
+
this.moveElements();
|
|
736
|
+
this.updateChildElementOverflowOpacity();
|
|
737
|
+
}
|
|
738
|
+
};
|
|
739
|
+
/**
|
|
740
|
+
* Handles toggling of the `activeElementClass` on elements during pointer drag events.
|
|
741
|
+
*/
|
|
742
|
+
setActiveCenteredElement = () => {
|
|
743
|
+
let isScrollRight = this.scrollDetails.scrollSpeed > 0;
|
|
744
|
+
let isScrollLeft = this.scrollDetails.scrollSpeed < 0;
|
|
745
|
+
const elementChildren = Array.from(this.element.children);
|
|
746
|
+
const elementPositions = elementChildren.map(child => child.getBoundingClientRect());
|
|
747
|
+
const elementRect = this.element.getBoundingClientRect();
|
|
748
|
+
/** Determine the center point of the bounding element */
|
|
749
|
+
const centerPoint = elementRect.width / 2 + elementRect.left;
|
|
750
|
+
/** Determine the index of the child card overlapping with the `centerPoint` */
|
|
751
|
+
let centeredElementIndex = elementPositions.findIndex(element => element.left <= centerPoint && element.left + element.width >= centerPoint);
|
|
752
|
+
/** Set index to the first element in case list is scrolled to the start */
|
|
753
|
+
if (centeredElementIndex === 1 && isScrollLeft && this.scrollDetails.scrollLeft === 0) {
|
|
754
|
+
centeredElementIndex = 0;
|
|
755
|
+
}
|
|
756
|
+
/** Set index to the last element in case list is scrolled to the end */
|
|
757
|
+
if (centeredElementIndex === elementPositions.length - 2 &&
|
|
758
|
+
isScrollRight &&
|
|
759
|
+
this.scrollDetails.scrollLeft + this.scrollContainerRef.getBoundingClientRect().width >=
|
|
760
|
+
this.scrollDetails.scrollWidth) {
|
|
761
|
+
centeredElementIndex = elementPositions.length - 1;
|
|
762
|
+
}
|
|
763
|
+
/** Calculate the index of the next element in case `centerPoint` is in between two elements */
|
|
764
|
+
if (centeredElementIndex === -1) {
|
|
765
|
+
if (isScrollRight) {
|
|
766
|
+
centeredElementIndex = elementPositions.findIndex(element => element.left - this.elementGap <= centerPoint && element.left + element.width >= centerPoint);
|
|
767
|
+
}
|
|
768
|
+
if (isScrollLeft) {
|
|
769
|
+
centeredElementIndex = elementPositions.findIndex(element => element.left <= centerPoint && element.left + element.width + this.elementGap >= centerPoint);
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
const currentActiveElements = elementChildren.filter(element => element.classList.contains(this.activeElementClass));
|
|
773
|
+
currentActiveElements.forEach(element => element.classList.remove(this.activeElementClass));
|
|
774
|
+
const nextElement = elementChildren[centeredElementIndex];
|
|
775
|
+
if (this.withVirtualScroll && nextElement?.hasAttribute('data-clone-id')) {
|
|
776
|
+
const nextOriginalElement = elementChildren.find(element => element.attributes['data-id']?.value === nextElement.getAttribute('data-clone-id'));
|
|
777
|
+
nextOriginalElement.classList.add(this.activeElementClass);
|
|
778
|
+
}
|
|
779
|
+
if (nextElement !== undefined) {
|
|
780
|
+
nextElement.classList.add(this.activeElementClass);
|
|
781
|
+
}
|
|
782
|
+
this.updateControlVisibility();
|
|
783
|
+
};
|
|
784
|
+
/**
|
|
785
|
+
* Shifts the elements and scroll position.
|
|
786
|
+
* Gets the first and the last of the original elements and shifts both the original
|
|
787
|
+
* and the cloned elements depending on the scroll direction.
|
|
788
|
+
* Updates the currently set scroll values to hide the shift of the elements.
|
|
789
|
+
*/
|
|
790
|
+
moveElements = () => {
|
|
791
|
+
if (!this.withVirtualScroll) {
|
|
792
|
+
return;
|
|
793
|
+
}
|
|
794
|
+
const { width, left } = this.dimensions.element;
|
|
795
|
+
const firstOriginalElement = this.getFirstOriginal();
|
|
796
|
+
const lastOriginalElement = this.getLastOriginal();
|
|
797
|
+
const firstOriginalRect = firstOriginalElement.getBoundingClientRect();
|
|
798
|
+
const lastOriginalRect = lastOriginalElement.getBoundingClientRect();
|
|
799
|
+
const lastOriginalRight = lastOriginalRect.right - left;
|
|
800
|
+
const isLastOriginalInViewport = lastOriginalRight < width;
|
|
801
|
+
if (isLastOriginalInViewport && this.scrollDetails?.scrollSpeed < 0) {
|
|
802
|
+
const movedElementDataId = parseInt(firstOriginalElement.getAttribute('data-id'), 10);
|
|
803
|
+
const positionDelta = firstOriginalRect.width + this.elementGap;
|
|
804
|
+
const secondOriginalElement = firstOriginalElement.nextElementSibling;
|
|
805
|
+
this.inertialScroll.scrollBy({ left: -positionDelta }, true);
|
|
806
|
+
lastOriginalElement.insertAdjacentElement('afterend', firstOriginalElement);
|
|
807
|
+
secondOriginalElement.insertAdjacentElement('beforebegin', this.virtualScrollPrependClones[movedElementDataId]);
|
|
808
|
+
this.element.insertAdjacentElement('beforeend', this.virtualScrollAppendClones[movedElementDataId]);
|
|
809
|
+
}
|
|
810
|
+
const firstOriginalLeft = firstOriginalRect.left - left;
|
|
811
|
+
const isFirstOriginalInViewport = firstOriginalLeft > 0;
|
|
812
|
+
if (isFirstOriginalInViewport && this.scrollDetails?.scrollSpeed > 0) {
|
|
813
|
+
const secondToLastElement = lastOriginalElement.previousElementSibling;
|
|
814
|
+
const positionDelta = lastOriginalRect.width + this.elementGap;
|
|
815
|
+
const movedElementDataId = parseInt(lastOriginalElement.getAttribute('data-id'), 10);
|
|
816
|
+
this.inertialScroll.scrollBy({ left: positionDelta }, true);
|
|
817
|
+
firstOriginalElement.insertAdjacentElement('beforebegin', lastOriginalElement);
|
|
818
|
+
secondToLastElement.insertAdjacentElement('afterend', this.virtualScrollAppendClones[movedElementDataId]);
|
|
819
|
+
this.element.insertAdjacentElement('afterbegin', this.virtualScrollPrependClones[movedElementDataId]);
|
|
820
|
+
}
|
|
821
|
+
};
|
|
948
822
|
/**
|
|
949
823
|
* Returns the current scroll in percentage.
|
|
950
824
|
* @returns number representing the current scroll value in percent.
|
|
@@ -969,6 +843,160 @@ const TetCardList = class {
|
|
|
969
843
|
}
|
|
970
844
|
return scrollThumbPosition;
|
|
971
845
|
}
|
|
846
|
+
/**
|
|
847
|
+
* Stops event propagation bubbling to the `contentElement`
|
|
848
|
+
* @param event PointerEvent
|
|
849
|
+
*/
|
|
850
|
+
handleControlPointerDown = (event) => {
|
|
851
|
+
event.preventDefault();
|
|
852
|
+
event.stopPropagation();
|
|
853
|
+
event.stopImmediatePropagation();
|
|
854
|
+
};
|
|
855
|
+
/**
|
|
856
|
+
* Handles the left control click.
|
|
857
|
+
*/
|
|
858
|
+
handleLeftControl = async () => {
|
|
859
|
+
if (this.isScrolling) {
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
this.isScrolling = true;
|
|
863
|
+
if (this.withActiveElement) {
|
|
864
|
+
const currentActive = this.element.querySelector(`.${this.activeElementClass}`);
|
|
865
|
+
let previousElement = currentActive.previousElementSibling;
|
|
866
|
+
if (previousElement === null) {
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
869
|
+
currentActive.classList.remove(this.activeElementClass);
|
|
870
|
+
if (previousElement.hasAttribute('data-clone-id')) {
|
|
871
|
+
this.scrollDetails.scrollSpeed = 1;
|
|
872
|
+
this.moveElements();
|
|
873
|
+
previousElement = currentActive.previousElementSibling;
|
|
874
|
+
if (this.withOverflowOpacity) {
|
|
875
|
+
this.updateChildElementOverflowOpacity();
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
previousElement.classList.add(this.activeElementClass);
|
|
879
|
+
await this.scrollToElementCenter(`.${this.activeElementClass}`);
|
|
880
|
+
this.moveElements();
|
|
881
|
+
this.updateControlVisibility();
|
|
882
|
+
}
|
|
883
|
+
else if (this.scrollFullWidth) {
|
|
884
|
+
const scrollRect = this.scrollContainerRef.getBoundingClientRect();
|
|
885
|
+
const scrollWidth = scrollRect.width;
|
|
886
|
+
const scrollStart = scrollRect.left;
|
|
887
|
+
const firstElement = Array.from(this.element.children).find(child => {
|
|
888
|
+
const childRect = child.getBoundingClientRect();
|
|
889
|
+
return childRect.left < scrollStart && childRect.right + this.elementGap > scrollStart;
|
|
890
|
+
});
|
|
891
|
+
if (firstElement !== undefined) {
|
|
892
|
+
const firstElementRight = firstElement.getBoundingClientRect().right;
|
|
893
|
+
const scrollEnd = scrollRect.left + scrollWidth;
|
|
894
|
+
await this.inertialScroll.scrollBy({ left: -(scrollEnd - firstElementRight), behavior: 'smooth' });
|
|
895
|
+
}
|
|
896
|
+
else {
|
|
897
|
+
await this.inertialScroll.scrollBy({ left: -scrollWidth, behavior: 'smooth' });
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
else {
|
|
901
|
+
await this.inertialScroll.scrollBy({ left: -this.controlScrollAmount, behavior: 'smooth' });
|
|
902
|
+
}
|
|
903
|
+
this.isScrolling = false;
|
|
904
|
+
};
|
|
905
|
+
/**
|
|
906
|
+
* Handles the right control click.
|
|
907
|
+
*/
|
|
908
|
+
handleRightControl = async () => {
|
|
909
|
+
if (this.isScrolling) {
|
|
910
|
+
return;
|
|
911
|
+
}
|
|
912
|
+
this.isScrolling = true;
|
|
913
|
+
if (this.withActiveElement) {
|
|
914
|
+
const currentActive = this.element.querySelector(`.${this.activeElementClass}`);
|
|
915
|
+
let nextElement = currentActive.nextElementSibling;
|
|
916
|
+
if (nextElement === null) {
|
|
917
|
+
return;
|
|
918
|
+
}
|
|
919
|
+
currentActive.classList.remove(this.activeElementClass);
|
|
920
|
+
if (nextElement.hasAttribute('data-clone-id')) {
|
|
921
|
+
this.scrollDetails.scrollSpeed = -1;
|
|
922
|
+
this.moveElements();
|
|
923
|
+
nextElement = currentActive.nextElementSibling;
|
|
924
|
+
if (this.withOverflowOpacity) {
|
|
925
|
+
this.updateChildElementOverflowOpacity();
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
nextElement.classList.add(this.activeElementClass);
|
|
929
|
+
await this.scrollToElementCenter(`.${this.activeElementClass}`);
|
|
930
|
+
this.moveElements();
|
|
931
|
+
this.updateControlVisibility();
|
|
932
|
+
}
|
|
933
|
+
else if (this.scrollFullWidth) {
|
|
934
|
+
const scrollRect = this.scrollContainerRef.getBoundingClientRect();
|
|
935
|
+
const scrollWidth = scrollRect.width;
|
|
936
|
+
const scrollEnd = scrollWidth + scrollRect.left;
|
|
937
|
+
const lastElement = Array.from(this.element.children).find(child => {
|
|
938
|
+
const childRect = child.getBoundingClientRect();
|
|
939
|
+
return childRect.left - this.elementGap < scrollEnd && childRect.right > scrollEnd;
|
|
940
|
+
});
|
|
941
|
+
if (lastElement !== undefined) {
|
|
942
|
+
const lastElementLeft = lastElement.getBoundingClientRect().left;
|
|
943
|
+
const scrollStart = scrollRect.left;
|
|
944
|
+
await this.inertialScroll.scrollBy({ left: lastElementLeft - scrollStart, behavior: 'smooth' });
|
|
945
|
+
}
|
|
946
|
+
else {
|
|
947
|
+
await this.inertialScroll.scrollBy({ left: scrollWidth, behavior: 'smooth' });
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
else {
|
|
951
|
+
await this.inertialScroll.scrollBy({ left: this.controlScrollAmount, behavior: 'smooth' });
|
|
952
|
+
}
|
|
953
|
+
this.isScrolling = false;
|
|
954
|
+
};
|
|
955
|
+
/**
|
|
956
|
+
* Handles the keyup event on the right control.
|
|
957
|
+
* If the key is "Enter" or "Space", will trigger navigation to the next card.
|
|
958
|
+
* @param e - The keyboard event object.
|
|
959
|
+
*/
|
|
960
|
+
handleRightControlKeyUp = (e) => {
|
|
961
|
+
if (e.key === ' ' || e.key === 'Enter') {
|
|
962
|
+
this.handleRightControl();
|
|
963
|
+
}
|
|
964
|
+
};
|
|
965
|
+
/**
|
|
966
|
+
* Handles the keyup event on the left control.
|
|
967
|
+
* If the key is "Enter" or "Space", will trigger navigation to the previous card.
|
|
968
|
+
* @param e - The keyboard event object.
|
|
969
|
+
*/
|
|
970
|
+
handleLeftControlKeyUp = (e) => {
|
|
971
|
+
if (e.key === ' ' || e.key === 'Enter') {
|
|
972
|
+
this.handleLeftControl();
|
|
973
|
+
}
|
|
974
|
+
};
|
|
975
|
+
/**
|
|
976
|
+
* Updates the visibility of the control element.
|
|
977
|
+
*/
|
|
978
|
+
updateControlVisibility = (scroll = this.scrollDetails) => {
|
|
979
|
+
let controlVisibility = {
|
|
980
|
+
left: false,
|
|
981
|
+
right: false,
|
|
982
|
+
};
|
|
983
|
+
if (this.withControls) {
|
|
984
|
+
if (scroll === null) {
|
|
985
|
+
controlVisibility = {
|
|
986
|
+
left: false,
|
|
987
|
+
right: true,
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
else {
|
|
991
|
+
controlVisibility.left = scroll.scrollLeft - 1 <= 0 ? false : true;
|
|
992
|
+
controlVisibility.right = scroll.scrollLeft >= scroll.scrollWidth ? false : true;
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
// Only update if there are changes.
|
|
996
|
+
if (JSON.stringify(controlVisibility) !== JSON.stringify(this.controlVisibility)) {
|
|
997
|
+
this.controlVisibility = controlVisibility;
|
|
998
|
+
}
|
|
999
|
+
};
|
|
972
1000
|
/**
|
|
973
1001
|
* Adds or removes the transparency effect to the card items as they enter or leave the viewport.
|
|
974
1002
|
*/
|
|
@@ -1028,7 +1056,6 @@ const TetCardList = class {
|
|
|
1028
1056
|
'tet-card-list__control--hidden': !this.controlVisibility.right,
|
|
1029
1057
|
}, onPointerDown: this.handleControlPointerDown, onPointerUp: this.handleRightControl, onKeyUp: this.handleRightControlKeyUp }, h("tet-icon", { key: 'b19ee3803dd3fcf44a11816372555b6be84150f9', name: this.iconNext && this.iconNext !== '' ? this.iconNext : 'chevron-right', class: "tet-card-list__control__icon" })), h("div", { key: '9d93b130142f3675cb2d6436a84ff78df28c092a', class: { 'tet-card-list__scroll': true, 'tet-card-list--hidden': !this.withScrollbar } }, h("div", { key: 'b71a2c641265034396d4b0a350ba3aa57e8d7c49', class: "tet-card-list__scroll--thumb", ref: el => (this.scrollbarRef = el) })))));
|
|
1030
1058
|
}
|
|
1031
|
-
get element() { return getElement(this); }
|
|
1032
1059
|
static get watchers() { return {
|
|
1033
1060
|
"withMouseDrag": ["onWithMouseDragChange"],
|
|
1034
1061
|
"disableScroll": ["onDisableScrollChange"],
|