@tet/tet-components 1.3.146-testing → 1.3.147-testing

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.
Files changed (155) hide show
  1. package/dist/cjs/index-f559cb2e.js +24 -36
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/{tet-notification.cjs.entry.js → tet-accordion_2.cjs.entry.js} +131 -0
  4. package/dist/cjs/tet-address-offers-filters-products_2.cjs.entry.js +1 -1
  5. package/dist/cjs/{tet-autocomplete_2.cjs.entry.js → tet-autocomplete.cjs.entry.js} +0 -65
  6. package/dist/cjs/tet-b2b-check-out-form_5.cjs.entry.js +647 -0
  7. package/dist/cjs/tet-b2b-configurator.cjs.entry.js +536 -0
  8. package/dist/cjs/tet-b2b-service-calculator.cjs.entry.js +1 -1
  9. package/dist/cjs/tet-border-radius.cjs.entry.js +1 -1
  10. package/dist/cjs/tet-business-lines.cjs.entry.js +1 -1
  11. package/dist/cjs/tet-colors.cjs.entry.js +4 -4
  12. package/dist/cjs/tet-compare-card-v2.cjs.entry.js +1 -1
  13. package/dist/cjs/tet-components.cjs.js +1 -1
  14. package/dist/cjs/tet-font-weight.cjs.entry.js +1 -1
  15. package/dist/cjs/tet-fonts.cjs.entry.js +1 -1
  16. package/dist/cjs/tet-grid.cjs.entry.js +1 -1
  17. package/dist/cjs/tet-layout.cjs.entry.js +1 -1
  18. package/dist/cjs/tet-link.cjs.entry.js +1 -1
  19. package/dist/cjs/tet-spacing.cjs.entry.js +1 -1
  20. package/dist/cjs/tet-spinner.cjs.entry.js +71 -0
  21. package/dist/cjs/tet-text-list.cjs.entry.js +1 -1
  22. package/dist/collection/collection-manifest.json +1 -0
  23. package/dist/collection/components/advanced/cards/tet-b2b-compare-card/test/tet-b2b-compare-card.spec.js +0 -1
  24. package/dist/collection/components/advanced/cards/tet-b2b-compare-card/tet-b2b-compare-card.js +8 -8
  25. package/dist/collection/components/advanced/cards/tet-business-summary-card/tet-business-summary-card.css +7 -0
  26. package/dist/collection/components/advanced/cards/tet-business-summary-card/tet-business-summary-card.js +31 -7
  27. package/dist/collection/components/advanced/cards/tet-compare-card/tet-compare-card.css +1 -0
  28. package/dist/collection/components/advanced/cards/tet-compare-card-v2/tet-compare-card-v2.css +1 -0
  29. package/dist/collection/components/advanced/forms/tet-b2b-check-out-form/tet-b2b-check-out-form.css +0 -2
  30. package/dist/collection/components/advanced/forms/tet-b2b-check-out-form/tet-b2b-check-out-form.js +24 -4
  31. package/dist/collection/components/simple/lists/tet-text-list/tet-text-list.css +1 -0
  32. package/dist/collection/components/simple/menu/tet-business-navigation/tet-business-navigation.css +15 -5
  33. package/dist/collection/components/simple/structural/tet-accordion/tet-accordion.css +4 -2
  34. package/dist/collection/components/simple/structural/tet-accordion/tet-accordion.js +27 -5
  35. package/dist/collection/components/views/tet-b2b-configurator/b2b-configurator.store.js +47 -0
  36. package/dist/collection/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/test/tet-b2b-configurator-cart.spec.js +10 -1
  37. package/dist/collection/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/tet-b2b-configurator-cart.css +54 -9
  38. package/dist/collection/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/tet-b2b-configurator-cart.js +106 -8
  39. package/dist/collection/components/views/tet-b2b-configurator/tet-b2b-configurator.css +472 -0
  40. package/dist/collection/components/views/tet-b2b-configurator/tet-b2b-configurator.js +612 -0
  41. package/dist/collection/components/views/tet-b2b-service-calculator/tet-b2b-service-calculator.js +1 -1
  42. package/dist/collection/components/views/tet-business-lines/tet-business-lines.js +1 -1
  43. package/dist/collection/docs/styling/border-radius/tet-border-radius.js +1 -1
  44. package/dist/collection/docs/styling/colors/tet-colors.js +4 -4
  45. package/dist/collection/docs/styling/font-weight/tet-font-weight.js +1 -1
  46. package/dist/collection/docs/styling/fonts/tet-fonts.js +1 -1
  47. package/dist/collection/docs/styling/layout/tet-layout.js +1 -1
  48. package/dist/collection/docs/styling/link/tet-link.js +1 -1
  49. package/dist/collection/docs/styling/spacing/tet-spacing.js +1 -1
  50. package/dist/collection/docs/styling/tet-grid/tet-grid.js +1 -1
  51. package/dist/collection/services/utils/minimum-duration-time.js +14 -0
  52. package/dist/components/index.js +2 -0
  53. package/dist/components/{p-08cb8e8b.js → p-401be6d8.js} +8 -6
  54. package/dist/components/{p-b3266df2.js → p-42c3311c.js} +1 -1
  55. package/dist/components/{p-c15aec6f.js → p-4a4c9b2c.js} +1 -1
  56. package/dist/{esm/tet-business-navigation.entry.js → components/p-5541195e.js} +35 -8
  57. package/dist/components/{p-e735af9c.js → p-8dd212bd.js} +1 -1
  58. package/dist/{esm/tet-b2b-compare-card.entry.js → components/p-922171da.js} +68 -20
  59. package/dist/{esm/tet-b2b-check-out-form.entry.js → components/p-b74f5470.js} +69 -16
  60. package/dist/components/p-cbf2c238.js +227 -0
  61. package/dist/components/{p-18778346.js → p-e72ea31d.js} +1 -1
  62. package/dist/{esm/tet-business-summary-card.entry.js → components/p-f68a8deb.js} +66 -14
  63. package/dist/components/tet-accordion.js +1 -1
  64. package/dist/components/tet-address-offers-view.js +2 -2
  65. package/dist/components/tet-address-offers.js +1 -1
  66. package/dist/components/tet-b2b-check-out-form.js +1 -207
  67. package/dist/components/tet-b2b-compare-card.js +1 -206
  68. package/dist/components/tet-b2b-configurator-cart.js +1 -167
  69. package/dist/components/tet-b2b-configurator.d.ts +11 -0
  70. package/dist/components/tet-b2b-configurator.js +661 -0
  71. package/dist/components/tet-b2b-service-calculator.js +1 -1
  72. package/dist/components/tet-border-radius.js +1 -1
  73. package/dist/components/tet-business-compare-card.js +1 -1
  74. package/dist/components/tet-business-lines.js +1 -1
  75. package/dist/components/tet-business-navigation.js +1 -103
  76. package/dist/components/tet-business-summary-card.js +1 -116
  77. package/dist/components/tet-colors.js +4 -4
  78. package/dist/components/tet-compare-card-v2.js +1 -1
  79. package/dist/components/tet-compare-card.js +1 -1
  80. package/dist/components/tet-compare-cards-tab.js +2 -2
  81. package/dist/components/tet-compare-cards.js +1 -1
  82. package/dist/components/tet-font-weight.js +1 -1
  83. package/dist/components/tet-fonts.js +1 -1
  84. package/dist/components/tet-grid.js +1 -1
  85. package/dist/components/tet-layout.js +1 -1
  86. package/dist/components/tet-link.js +1 -1
  87. package/dist/components/tet-spacing.js +1 -1
  88. package/dist/components/tet-text-list.js +1 -1
  89. package/dist/esm/index-7f1e2a22.js +24 -36
  90. package/dist/esm/loader.js +1 -1
  91. package/dist/esm/{tet-notification.entry.js → tet-accordion_2.entry.js} +132 -2
  92. package/dist/esm/tet-address-offers-filters-products_2.entry.js +1 -1
  93. package/dist/esm/{tet-autocomplete_2.entry.js → tet-autocomplete.entry.js} +1 -65
  94. package/dist/esm/tet-b2b-check-out-form_5.entry.js +639 -0
  95. package/dist/esm/tet-b2b-configurator.entry.js +532 -0
  96. package/dist/esm/tet-b2b-service-calculator.entry.js +1 -1
  97. package/dist/esm/tet-border-radius.entry.js +1 -1
  98. package/dist/esm/tet-business-lines.entry.js +1 -1
  99. package/dist/esm/tet-colors.entry.js +4 -4
  100. package/dist/esm/tet-compare-card-v2.entry.js +1 -1
  101. package/dist/esm/tet-components.js +1 -1
  102. package/dist/esm/tet-font-weight.entry.js +1 -1
  103. package/dist/esm/tet-fonts.entry.js +1 -1
  104. package/dist/esm/tet-grid.entry.js +1 -1
  105. package/dist/esm/tet-layout.entry.js +1 -1
  106. package/dist/esm/tet-link.entry.js +1 -1
  107. package/dist/esm/tet-spacing.entry.js +1 -1
  108. package/dist/esm/tet-spinner.entry.js +67 -0
  109. package/dist/esm/tet-text-list.entry.js +1 -1
  110. package/dist/tet-components/{p-0121cef5.entry.js → p-067c2f1b.entry.js} +1 -1
  111. package/dist/tet-components/{p-bb6387c6.entry.js → p-0738afc0.entry.js} +1 -1
  112. package/dist/tet-components/{p-f476f61c.entry.js → p-07aee8d0.entry.js} +1 -1
  113. package/dist/tet-components/p-0d818b7e.entry.js +1 -0
  114. package/dist/tet-components/{p-56460d2d.entry.js → p-4c9e742f.entry.js} +1 -1
  115. package/dist/tet-components/{p-9c274191.entry.js → p-4e0a24ba.entry.js} +1 -1
  116. package/dist/tet-components/p-4ea127f4.entry.js +1 -0
  117. package/dist/tet-components/{p-9bfcf2cc.entry.js → p-62eb4fe0.entry.js} +1 -1
  118. package/dist/tet-components/{p-38c3b247.entry.js → p-662d9457.entry.js} +1 -1
  119. package/dist/tet-components/{p-1ddb9e3c.entry.js → p-677b8bf7.entry.js} +1 -1
  120. package/dist/tet-components/{p-7f00f463.entry.js → p-6a4a979c.entry.js} +1 -1
  121. package/dist/tet-components/p-6d2c4b16.entry.js +1 -0
  122. package/dist/tet-components/{p-6782340f.entry.js → p-9513c8f6.entry.js} +1 -1
  123. package/dist/tet-components/p-af917a8f.entry.js +1 -0
  124. package/dist/tet-components/{p-597e234a.entry.js → p-dcb66405.entry.js} +1 -1
  125. package/dist/tet-components/{p-4838a00a.entry.js → p-e311eb7d.entry.js} +1 -1
  126. package/dist/tet-components/p-ed67bd52.entry.js +1 -0
  127. package/dist/tet-components/{p-bd8a0449.entry.js → p-eed6163a.entry.js} +1 -1
  128. package/dist/tet-components/tet-components.css +1 -1
  129. package/dist/tet-components/tet-components.esm.js +1 -1
  130. package/dist/types/components/advanced/cards/tet-business-summary-card/tet-business-summary-card.d.ts +4 -2
  131. package/dist/types/components/advanced/forms/tet-b2b-check-out-form/tet-b2b-check-out-form.d.ts +2 -1
  132. package/dist/types/components/simple/structural/tet-accordion/tet-accordion.d.ts +5 -0
  133. package/dist/types/components/views/tet-b2b-configurator/b2b-configurator.store.d.ts +22 -0
  134. package/dist/types/components.d.ts +100 -4
  135. package/dist/types/services/api/interfaces/property.interface.d.ts +2 -2
  136. package/dist/types/services/api/services/b2b-configurator/b2b-configurator.d.ts +4 -4
  137. package/dist/types/services/utils/minimum-duration-time.d.ts +9 -0
  138. package/package.json +1 -1
  139. package/dist/cjs/tet-accordion.cjs.entry.js +0 -136
  140. package/dist/cjs/tet-b2b-check-out-form.cjs.entry.js +0 -164
  141. package/dist/cjs/tet-b2b-compare-card.cjs.entry.js +0 -164
  142. package/dist/cjs/tet-b2b-configurator-cart.cjs.entry.js +0 -129
  143. package/dist/cjs/tet-business-navigation.cjs.entry.js +0 -82
  144. package/dist/cjs/tet-business-summary-card.cjs.entry.js +0 -77
  145. package/dist/esm/tet-accordion.entry.js +0 -132
  146. package/dist/esm/tet-b2b-configurator-cart.entry.js +0 -125
  147. package/dist/tet-components/p-05fc6443.entry.js +0 -1
  148. package/dist/tet-components/p-319c29e9.entry.js +0 -1
  149. package/dist/tet-components/p-47618056.entry.js +0 -1
  150. package/dist/tet-components/p-4eb386f5.entry.js +0 -1
  151. package/dist/tet-components/p-62419a1f.entry.js +0 -1
  152. package/dist/tet-components/p-a9499bbb.entry.js +0 -1
  153. package/dist/tet-components/p-d0d39e88.entry.js +0 -1
  154. package/dist/tet-components/p-ff5dba0e.entry.js +0 -1
  155. package/dist/types/components/views/tet-b2b-configurator/partials/tet-b2b-configurator-cart/tet-b2b-configurator-cart.d.ts +0 -67
@@ -0,0 +1,612 @@
1
+ import { b2bConfigurator } from "../../../services/api/services/b2b-configurator/b2b-configurator";
2
+ import { ensureMinDuration } from "../../../services/utils/minimum-duration-time";
3
+ import { Host, h } from "@stencil/core";
4
+ import { addToCart, b2bState, getCart, initData, removeFromCart, resetCart } from "./b2b-configurator.store";
5
+ import { t } from "../../../services/translations/index";
6
+ /** Constant with value X, that will be used to show skeleton fox >=X ms amount of time. */
7
+ const MIN_LOAD_TIME = 500;
8
+ /** Constant to use in desktop resolution checker. Should be same as one used in SCSS media query */
9
+ const DESKTOP_BREAKPOINT = 1024;
10
+ export class TetB2bConfigurator {
11
+ constructor() {
12
+ /** @private The suffix for the price displayed - "€/mēn."). */
13
+ this.priceSuffix = '€/mēn.';
14
+ /** Syncs desktop resolution with state variable */
15
+ this.checkDesktopResolution = () => {
16
+ this.isDesktopResolution = window.innerWidth >= DESKTOP_BREAKPOINT;
17
+ };
18
+ /** Fetches the data and passes it to Stencil store */
19
+ this.fetchData = async () => {
20
+ const data = await b2bConfigurator();
21
+ initData(data);
22
+ };
23
+ /** Renders the placeholdes/skeleton */
24
+ this.renderPlaceholder = () => {
25
+ const darkTheme = this.theme === 'dark';
26
+ return [
27
+ h("div", { class: "offer placeholder" }, h("div", { style: { padding: this.isDesktopResolution ? '1.5rem' : '1rem' } }, h("tet-placeholder", { class: "placeholder", height: this.isDesktopResolution ? '2rem' : '1.5rem', darkTheme: darkTheme })), h("div", { class: "offer__content" }, h("tet-placeholder", { class: "placeholder offer__navigation", height: this.isDesktopResolution ? '48rem' : ' 2.25rem', darkTheme: darkTheme, style: { margin: '0' } }), h("div", { class: "offer__cards" }, h("div", { class: "offer__cards-list" }, h("tet-placeholder", { class: "placeholder", height: "3rem", darkTheme: darkTheme }), h("tet-placeholder", { class: "placeholder", height: "10.25rem", darkTheme: darkTheme }), h("tet-placeholder", { class: "placeholder", height: "10.25rem", darkTheme: darkTheme }), h("tet-placeholder", { class: "placeholder", height: "10.25rem", darkTheme: darkTheme }), h("tet-placeholder", { class: "placeholder", height: "10.25rem", darkTheme: darkTheme }))))),
28
+ h("div", { class: "cart cart--empty", style: {
29
+ 'padding': '1.5rem 1rem 1rem',
30
+ 'background-color': `var(--b2b-background-color)`
31
+ } }, h("tet-placeholder", { class: "placeholder", height: "12.75rem", darkTheme: darkTheme }))
32
+ ];
33
+ };
34
+ /**
35
+ * Handles event form navigation and sets currently active categories
36
+ * @param e
37
+ * @returns
38
+ */
39
+ this.categoryClickHandler = (e) => {
40
+ const { id } = e.detail;
41
+ const category = this.getCategoryById(id);
42
+ if (!category) {
43
+ return;
44
+ }
45
+ if (category.type === 'primary') {
46
+ this.activePrimaryCategoryId = id;
47
+ }
48
+ else {
49
+ this.activeSecondaryCategoryId = id;
50
+ }
51
+ };
52
+ /** Renders the offer section */
53
+ this.renderOffer = () => {
54
+ const blocks = [
55
+ { name: t('components-b2b-offer-primary-title'), type: 'primary' },
56
+ { name: t('components-b2b-offer-secondary-title'), type: 'secondary' }
57
+ ];
58
+ return (h("div", { class: { offer: true, [`offer--${this.theme}`]: true } }, blocks.map((block) => {
59
+ const menuItems = b2bState.data
60
+ .filter((item) => item.type === block.type)
61
+ .map((category) => {
62
+ const { id, name, icon } = category;
63
+ const selected = id === this.activePrimaryCategoryId || id === this.activeSecondaryCategoryId;
64
+ return { id, name, icon, selected };
65
+ });
66
+ const accRefCallback = (el) => {
67
+ if (block.type === 'primary') {
68
+ this.primaryAccordionEl = el;
69
+ }
70
+ else {
71
+ this.secondaryAccordionEl = el;
72
+ }
73
+ };
74
+ const navRefCallback = (el) => {
75
+ if (block.type === 'primary') {
76
+ this.primaryNavEl = el;
77
+ }
78
+ else {
79
+ this.secondaryNavEl = el;
80
+ }
81
+ };
82
+ return (h("tet-accordion", { ref: accRefCallback, key: block.type, class: "offer__block", isOpen: block.type === 'primary', header: block.name, withBorder: true, theme: this.theme, transparentBackground: true }, h("div", { class: "offer__content" }, h("div", { class: "offer__navigation" }, h("tet-business-navigation", { ref: navRefCallback, menuItems: menuItems, theme: this.theme, "onMenu-click-event": this.categoryClickHandler })), this.renderCards(block.type))));
83
+ })));
84
+ };
85
+ /**
86
+ * Finds category by id. Returns category or undefined.
87
+ * @param categoryId
88
+ * @returns
89
+ */
90
+ this.getCategoryById = (categoryId) => {
91
+ return b2bState.data.find((category) => category.id === categoryId);
92
+ };
93
+ /**
94
+ * Event, emitted on compare link click with the relevant modal Id
95
+ * @param categoryId
96
+ * @returns
97
+ */
98
+ this.onCompareLinkClick = (categoryId) => {
99
+ const category = this.getCategoryById(categoryId);
100
+ if (!category || !category.modalScreenId) {
101
+ return;
102
+ }
103
+ this.compareLinkClick.emit(category.modalScreenId);
104
+ };
105
+ /**
106
+ * Handles card selection (aka. oepen state). Checks for single|multi choice
107
+ * @param cardId
108
+ * @param categoryId
109
+ * @returns
110
+ */
111
+ this.handleCardSelected = (cardId, categoryId) => {
112
+ const category = this.getCategoryById(categoryId);
113
+ if (!category) {
114
+ return;
115
+ }
116
+ const { type, allowMultipleChoice } = category;
117
+ if (type === 'primary') {
118
+ if (this.selectedPrimaryCards.includes(cardId)) {
119
+ return;
120
+ }
121
+ this.selectedPrimaryCards = allowMultipleChoice ? [...this.selectedPrimaryCards, cardId] : [cardId];
122
+ }
123
+ else {
124
+ if (this.selectedSecondaryCards.includes(cardId)) {
125
+ return;
126
+ }
127
+ this.selectedSecondaryCards = allowMultipleChoice ? [...this.selectedSecondaryCards, cardId] : [cardId];
128
+ }
129
+ };
130
+ /**
131
+ * Updates product in cart (add, edit, remove)
132
+ * In desktop mode - changes state of summary cart's accordions
133
+ * @param e
134
+ * @param categoryId
135
+ */
136
+ this.handleProductCountChanged = async (e, categoryId) => {
137
+ const { cardId, count } = e.detail;
138
+ const productCategory = this.getCategoryById(categoryId);
139
+ if (!productCategory || b2bState.cart.get(cardId) === count) {
140
+ return;
141
+ }
142
+ if (!count) {
143
+ this.itemToRemove = cardId;
144
+ this.confirmationDialogEl.open();
145
+ return;
146
+ }
147
+ if (!productCategory.allowMultipleChoice) {
148
+ productCategory.products.forEach((product) => product.productCode !== cardId && removeFromCart(product.productCode));
149
+ }
150
+ addToCart(cardId, count);
151
+ if (this.isDesktopResolution) {
152
+ this.cartEl.changeBlockState(productCategory.type, 'open');
153
+ this.cartEl.changeBlockState(productCategory.type === 'primary' ? 'secondary' : 'primary', 'close');
154
+ }
155
+ };
156
+ /** Resets itemId to be removed when confirmation dialog is closed */
157
+ this.onConfirmationClose = () => {
158
+ this.itemToRemove = null;
159
+ };
160
+ /** Renders confirmation dialog, shown on product removal action */
161
+ this.renderConfirmationDialog = () => {
162
+ return (h("tet-dialog", { ref: (el) => (this.confirmationDialogEl = el), class: this.theme, closeOnOverlayClick: false, onCloseDialog: this.onConfirmationClose, theme: this.theme }, h("div", { class: "action-dialog" }, h("tet-icon", { class: "action-dialog__icon action-dialog__attention-icon", name: "attention" }), h("div", { class: "action-dialog__title" }, t('components-b2b-item-remove-confirmation-title'))), h("div", { slot: "footer", class: "action-dialog__footer" }, h("tet-button", { type: "secondary", theme: this.theme, size: "large", onClick: () => this.confirmationDialogEl.close() }, t('components-b2b-item-remove-confirmation-decline')), h("tet-button", { type: "primary", theme: this.theme, size: "large", iconName: "tc-trash", iconPosition: "left", onClick: () => {
163
+ removeFromCart(this.itemToRemove);
164
+ this.confirmationDialogEl.close();
165
+ } }, t('components-b2b-item-remove-confirmation-accept')))));
166
+ };
167
+ /** Performs action to start again */
168
+ this.resetState = () => {
169
+ resetCart();
170
+ this.checkoutAttempted = false;
171
+ this.primaryAccordionEl.open();
172
+ this.secondaryAccordionEl.close();
173
+ };
174
+ /** Renders dialog, shown after form submit */
175
+ this.renderSubmissionStateDialog = () => {
176
+ const isFormSubmitLoading = this.formState === 'loading';
177
+ const successClose = () => {
178
+ this.resetState();
179
+ this.successCloseClick.emit();
180
+ this.submissionStateDialogEl.close();
181
+ };
182
+ const content = isFormSubmitLoading ? (h("div", { class: "action-dialog" }, h("tet-spinner", { theme: this.theme }), h("div", { class: "action-dialog__title" }, t('components-b2b-loading-dialog-title')), h("div", { class: "action-dialog__description" }, t('components-b2b-loading-dialog-description')))) : ([
183
+ h("div", { class: "action-dialog" }, h("tet-icon", { class: "action-dialog__icon action-dialog__success-icon", name: "tc-check-circle" }), h("div", { class: "action-dialog__title" }, t('components-b2b-success-dialog-title')), h("div", { class: "action-dialog__description" }, t('components-b2b-success-dialog-description'))),
184
+ h("div", { slot: "footer", class: "action-dialog__footer" }, h("tet-button", { type: "secondary", theme: this.theme, size: "large", onClick: successClose }, h("div", { class: "action-dialog__button-text" }, t('components-b2b-success-dialog-close'))), h("tet-button", { type: "primary", theme: this.theme, size: "large", onClick: () => {
185
+ this.resetState();
186
+ this.submissionStateDialogEl.close();
187
+ } }, h("div", { class: "action-dialog__button-text" }, t('components-b2b-success-dialog-start-again'))))
188
+ ]);
189
+ return (h("tet-dialog", { ref: (el) => (this.submissionStateDialogEl = el), class: { [this.theme]: true, 'action-dialog--loading': isFormSubmitLoading }, closeOnOverlayClick: false, closeOnEscape: !isFormSubmitLoading, hideCloseButton: isFormSubmitLoading, theme: this.theme, onCloseDialog: this.formState === 'success' ? successClose : this.submissionStateDialogEl.close }, content));
190
+ };
191
+ /**
192
+ * Renders offer section cards for the given category type
193
+ * @param categoryType The type of category block to render
194
+ * @returns
195
+ */
196
+ this.renderCards = (categoryType) => {
197
+ var _a;
198
+ const activeCategoryId = categoryType === 'primary' ? this.activePrimaryCategoryId : this.activeSecondaryCategoryId;
199
+ const selectedCards = categoryType === 'primary' ? this.selectedPrimaryCards : this.selectedSecondaryCards;
200
+ const products = ((_a = this.getCategoryById(activeCategoryId)) === null || _a === void 0 ? void 0 : _a.products) || [];
201
+ const cards = products.map((product) => {
202
+ var _a, _b;
203
+ const { productCode: id, name: { lv: title }, description: { lv: subtitle }, amount: price, b2bConfiguratorProduct: { discountAmount: discountPrice, selectionType, defaultValue, minValue, maxValue, translationKey: label }, benefits: { lv: benefits }, contracts } = product;
204
+ const isBestChoice = !!((_a = product.attributes.find((attribute) => attribute.key === 'isBestChoice')) === null || _a === void 0 ? void 0 : _a.value);
205
+ const counterOptions = selectionType === 'single'
206
+ ? undefined
207
+ : {
208
+ defaultValue,
209
+ minValue,
210
+ maxValue,
211
+ label
212
+ };
213
+ const options = {
214
+ id,
215
+ title,
216
+ subtitle,
217
+ isBestChoice,
218
+ price,
219
+ discountPrice,
220
+ benefits: benefits.split('\n'),
221
+ contract: (_b = contracts[0]) === null || _b === void 0 ? void 0 : _b.contract,
222
+ counterOptions
223
+ };
224
+ const isSelected = selectedCards.includes(id);
225
+ return (h("tet-b2b-compare-card", { options: options, theme: this.theme, key: id, isSelected: isSelected, onSelectedChange: () => this.handleCardSelected(id, activeCategoryId), count: b2bState.cart.get(id), onCountChange: (e) => this.handleProductCountChanged(e, activeCategoryId) }));
226
+ });
227
+ return (h("div", { class: "offer__cards" }, h("div", { class: "offer__cards-header" }, h("div", { class: "offer__cards-title" }, t('components-b2b-offer-product-list-title')), h("button", { class: { 'button-reset': true, 'compare__button': true, [`${this.theme}`]: true }, onClick: () => {
228
+ this.onCompareLinkClick(activeCategoryId);
229
+ } }, h("span", { class: { 'compare__text': true, 'tet-link': true, [`${this.theme}`]: true } }, t('components-b2b-offer-compare-link-text')), h("div", { class: "compare__icon-wrapper" }, h("tet-icon", { class: "compare__icon", name: "tc-info-circle-outline", theme: this.theme })))), h("div", { class: "offer__cards-list" }, cards)));
230
+ };
231
+ /**
232
+ * Translates Cart "count change" event and uses in the general "count change" handler
233
+ * @param cardId
234
+ * @param count
235
+ * @param categoryId
236
+ */
237
+ this.handleCartProductCountChange = (cardId, count, categoryId) => {
238
+ const updateEvent = { detail: { cardId, count } };
239
+ this.handleProductCountChanged(updateEvent, categoryId);
240
+ };
241
+ /**
242
+ * Navigates user in offer section by opening accordion and selecting the specific product which was clicked in cart component
243
+ * @param categoryId
244
+ * @param productCode
245
+ * @returns
246
+ */
247
+ this.goToProduct = async (categoryId, productCode) => {
248
+ const category = this.getCategoryById(categoryId);
249
+ if (!category) {
250
+ return;
251
+ }
252
+ if (category.type === 'primary') {
253
+ await this.primaryAccordionEl.open();
254
+ await this.primaryNavEl.selectMenuItem(categoryId);
255
+ this.primaryAccordionEl.scrollIntoView({ behavior: 'smooth' });
256
+ }
257
+ else if (category.type === 'secondary') {
258
+ await this.secondaryAccordionEl.open();
259
+ await this.secondaryNavEl.selectMenuItem(categoryId);
260
+ this.secondaryAccordionEl.scrollIntoView({ behavior: 'smooth' });
261
+ }
262
+ setTimeout(() => {
263
+ this.handleCardSelected(productCode, categoryId);
264
+ }, 0);
265
+ };
266
+ /**
267
+ * Renders list of Cards in Cart depending on context
268
+ * @param context
269
+ * @returns
270
+ */
271
+ this.renderCartCardsList = (context) => {
272
+ const categoryTypes = ['primary', 'secondary'];
273
+ const productCodeToSummaryCard = (productCode) => {
274
+ const count = b2bState.cart.get(productCode);
275
+ const details = b2bState.productDetails.get(productCode);
276
+ if (count === undefined || !details) {
277
+ return null;
278
+ }
279
+ const { name, amount, description, discountAmount, categoryName, categoryType, categoryId, b2bConfiguratorProduct } = details;
280
+ const productDescription = categoryType === 'primary' ? description : categoryName;
281
+ const { selectionType, term, minValue, maxValue, translationKey } = b2bConfiguratorProduct;
282
+ const activeCategoryId = categoryType === 'primary' ? this.activePrimaryCategoryId : this.activeSecondaryCategoryId;
283
+ return (h("tet-business-summary-card", { key: productCode, productName: name, price: amount, productDescription: productDescription, discountPrice: discountAmount, currency: this.priceSuffix, contractTerm: term, theme: this.theme, withStepper: selectionType === 'number', value: count, minValue: minValue, maxValue: maxValue, stepperLabel: t(translationKey || ''), context: context, onAmountChange: (e) => this.handleCartProductCountChange(productCode, e.detail, activeCategoryId), onDeleteButtonClick: () => this.handleCartProductCountChange(productCode, 0, activeCategoryId), onEditButtonClick: () => this.goToProduct(categoryId, productCode) }));
284
+ };
285
+ return categoryTypes.map((type) => {
286
+ const summaryCards = [...b2bState.cart]
287
+ .filter(([productCode]) => {
288
+ const details = b2bState.productDetails.get(productCode);
289
+ return details && details.categoryType === type;
290
+ })
291
+ .map(([productCode]) => productCodeToSummaryCard(productCode));
292
+ return summaryCards.length ? (h("div", { class: "cart__card-list", slot: type }, summaryCards)) : null;
293
+ });
294
+ };
295
+ /** Adjusts the top position variable for the sticky cart element */
296
+ this.positionStickyCartEl = () => {
297
+ if (this.referenceElement) {
298
+ if (this.isDesktopResolution) {
299
+ this.hostElement.style.setProperty('--b2b-cart-sticky-top', `${this.referenceElement.offsetTop}px`);
300
+ }
301
+ else {
302
+ this.hostElement.style.removeProperty('--b2b-cart-sticky-top');
303
+ }
304
+ }
305
+ };
306
+ /**
307
+ * Renders Cart content depending on context
308
+ * @param context
309
+ * @returns
310
+ */
311
+ this.renderCart = (context = 'edit') => {
312
+ var _a;
313
+ const isCartEmpty = !b2bState.cart.size;
314
+ let summaryAmounts = { primary: 0, secondary: 0 };
315
+ let summaryCounts = { primary: 0, secondary: 0 };
316
+ let summaryWouldBeAmount = 0;
317
+ for (const [key, count] of b2bState.cart) {
318
+ const details = b2bState.productDetails.get(key);
319
+ if (!details) {
320
+ continue;
321
+ }
322
+ summaryAmounts[details.categoryType] += ((_a = details.discountAmount) !== null && _a !== void 0 ? _a : details.amount) * count;
323
+ summaryCounts[details.categoryType] += 1;
324
+ summaryWouldBeAmount += details.amount * count;
325
+ }
326
+ const { primary: primaryAmount, secondary: secondaryAmount } = summaryAmounts;
327
+ const summaryAmount = primaryAmount + secondaryAmount;
328
+ const summarySavings = summaryWouldBeAmount - summaryAmount;
329
+ const { primary, secondary } = this.areProductsAddedToCart();
330
+ const hasPrimaryNotification = context === 'edit' && this.checkoutAttempted && !primary;
331
+ const hasSecondaryNotification = context === 'edit' && this.checkoutAttempted && !secondary;
332
+ const data = {
333
+ summaryAmount: summaryAmount.toFixed(2),
334
+ primaryAmount: primaryAmount.toFixed(2),
335
+ secondaryAmount: secondaryAmount.toFixed(2),
336
+ primaryCount: summaryCounts.primary,
337
+ secondaryCount: summaryCounts.secondary,
338
+ summarySavings: summarySavings.toFixed(2),
339
+ hasPrimaryNotification,
340
+ hasSecondaryNotification
341
+ };
342
+ const ctaButton = context === 'edit' ? (h("tet-button", { onClick: this.checkout, slot: "cta", class: "cart__cta", type: "primary", size: this.isDesktopResolution ? 'large' : 'medium', theme: this.theme }, t('components-b2b-cart-cta-button-title'))) : null;
343
+ return (h("tet-b2b-configurator-cart", { ref: (el) => (context === 'edit' ? (this.cartEl = el) : null), context: context, class: { 'cart': true, 'cart--empty': isCartEmpty, [`cart--${context}`]: true }, data: data, theme: this.theme, isCartEmpty: isCartEmpty, isDesktopResolution: this.isDesktopResolution }, this.renderCartCardsList(context), ctaButton));
344
+ };
345
+ /** Checks if both primary and secondary products are currently in cart */
346
+ this.areProductsAddedToCart = () => {
347
+ const productsInCart = { primary: false, secondary: false };
348
+ for (const [key, _] of b2bState.cart) {
349
+ const details = b2bState.productDetails.get(key);
350
+ if (!details) {
351
+ continue;
352
+ }
353
+ productsInCart[details.categoryType] = true;
354
+ }
355
+ return productsInCart;
356
+ };
357
+ /** Cart checkout handler. Opens Checkout component*/
358
+ this.checkout = () => {
359
+ this.checkoutAttempted = true;
360
+ const { primary, secondary } = this.areProductsAddedToCart();
361
+ if (primary && secondary) {
362
+ this.checkoutFormEl.open();
363
+ }
364
+ };
365
+ /**
366
+ * Catches emitted checkout form data
367
+ * Combines with cart data and re-emits
368
+ * @param e
369
+ */
370
+ this.submit = ({ detail }) => {
371
+ const data = {
372
+ cart: getCart(),
373
+ contactInfo: detail
374
+ };
375
+ this.formState = 'loading';
376
+ this.b2bConfiguratorSubmit.emit(data);
377
+ this.checkoutFormEl.close();
378
+ this.submissionStateDialogEl.open();
379
+ };
380
+ this.renderCheckoutForm = () => {
381
+ return (h("tet-b2b-check-out-form", { ref: (el) => (this.checkoutFormEl = el), theme: this.theme, "onSubmit-check-out-form": this.submit }, h("div", { slot: "cart" }, this.renderCart('checkout'))));
382
+ };
383
+ this.referenceElement = undefined;
384
+ this.isLoading = true;
385
+ this.itemToRemove = null;
386
+ this.checkoutAttempted = false;
387
+ this.formState = 'success';
388
+ this.activePrimaryCategoryId = null;
389
+ this.activeSecondaryCategoryId = null;
390
+ this.selectedPrimaryCards = [];
391
+ this.selectedSecondaryCards = [];
392
+ this.isDesktopResolution = undefined;
393
+ this.theme = 'light';
394
+ this.stickyRefEl = '';
395
+ }
396
+ /** Resets selected (open) primary cards on category change */
397
+ resetSelectedPrimaryCards() {
398
+ this.selectedPrimaryCards = [];
399
+ }
400
+ /** Resets selected (open) secondary cards on category change */
401
+ resetSelectedSecondaryCards() {
402
+ this.selectedSecondaryCards = [];
403
+ }
404
+ /** Checks for desktop resolution and intializes the sticky element's reference using the provided prop or the host's parent */
405
+ async componentWillLoad() {
406
+ this.checkDesktopResolution();
407
+ this.referenceElement = this.stickyRefEl
408
+ ? document.querySelector(this.stickyRefEl)
409
+ : this.hostElement.parentElement;
410
+ }
411
+ /**
412
+ * Initiates:
413
+ * - data (with minimum load time to reduce flickering)
414
+ * - selected categories for each type
415
+ * - sticky elements position
416
+ */
417
+ async componentDidLoad() {
418
+ var _a, _b;
419
+ this.isLoading = true;
420
+ await ensureMinDuration(this.fetchData, MIN_LOAD_TIME);
421
+ this.isLoading = false;
422
+ this.activePrimaryCategoryId = ((_a = b2bState.data.find((category) => category.type === 'primary')) === null || _a === void 0 ? void 0 : _a.id) || null;
423
+ this.activeSecondaryCategoryId = ((_b = b2bState.data.find((category) => category.type === 'secondary')) === null || _b === void 0 ? void 0 : _b.id) || null;
424
+ this.positionStickyCartEl();
425
+ }
426
+ /**
427
+ * Initiates desktop resolution listener and sticky adjustement on window resize
428
+ */
429
+ onResize() {
430
+ this.checkDesktopResolution();
431
+ this.positionStickyCartEl();
432
+ }
433
+ /** Sets the value of form submission status*/
434
+ async setSubmitFormState(value) {
435
+ this.formState = value;
436
+ }
437
+ render() {
438
+ return (h(Host, { key: 'e7d2ab1d76e8ad347393bde30d0d71a7425ca2f7' }, h("div", { key: 'af251291fbb1cdf8c6eb1c3928f1fcd99181fa25', class: { configurator: true, [`${this.theme}`]: true } }, this.isLoading ? this.renderPlaceholder() : b2bState.data && [this.renderOffer(), this.renderCart()]), this.renderCheckoutForm(), this.renderConfirmationDialog(), this.renderSubmissionStateDialog()));
439
+ }
440
+ static get is() { return "tet-b2b-configurator"; }
441
+ static get encapsulation() { return "shadow"; }
442
+ static get originalStyleUrls() {
443
+ return {
444
+ "$": ["tet-b2b-configurator.scss"]
445
+ };
446
+ }
447
+ static get styleUrls() {
448
+ return {
449
+ "$": ["tet-b2b-configurator.css"]
450
+ };
451
+ }
452
+ static get properties() {
453
+ return {
454
+ "theme": {
455
+ "type": "string",
456
+ "mutable": false,
457
+ "complexType": {
458
+ "original": "'light' | 'dark'",
459
+ "resolved": "\"dark\" | \"light\"",
460
+ "references": {}
461
+ },
462
+ "required": false,
463
+ "optional": false,
464
+ "docs": {
465
+ "tags": [{
466
+ "name": "default",
467
+ "text": "'light'"
468
+ }],
469
+ "text": "The theme used for the component's styling."
470
+ },
471
+ "attribute": "theme",
472
+ "reflect": false,
473
+ "defaultValue": "'light'"
474
+ },
475
+ "stickyRefEl": {
476
+ "type": "string",
477
+ "mutable": false,
478
+ "complexType": {
479
+ "original": "string",
480
+ "resolved": "string",
481
+ "references": {}
482
+ },
483
+ "required": false,
484
+ "optional": false,
485
+ "docs": {
486
+ "tags": [],
487
+ "text": "Id or class of refenrece element in parent component. The header sticky position will be set to the top of this container."
488
+ },
489
+ "attribute": "sticky-ref-el",
490
+ "reflect": false,
491
+ "defaultValue": "''"
492
+ }
493
+ };
494
+ }
495
+ static get states() {
496
+ return {
497
+ "referenceElement": {},
498
+ "isLoading": {},
499
+ "itemToRemove": {},
500
+ "checkoutAttempted": {},
501
+ "formState": {},
502
+ "activePrimaryCategoryId": {},
503
+ "activeSecondaryCategoryId": {},
504
+ "selectedPrimaryCards": {},
505
+ "selectedSecondaryCards": {},
506
+ "isDesktopResolution": {}
507
+ };
508
+ }
509
+ static get events() {
510
+ return [{
511
+ "method": "compareLinkClick",
512
+ "name": "compareLinkClick",
513
+ "bubbles": true,
514
+ "cancelable": true,
515
+ "composed": true,
516
+ "docs": {
517
+ "tags": [],
518
+ "text": "Emitted when the compare link for a category is clicked."
519
+ },
520
+ "complexType": {
521
+ "original": "string",
522
+ "resolved": "string",
523
+ "references": {}
524
+ }
525
+ }, {
526
+ "method": "b2bConfiguratorSubmit",
527
+ "name": "b2bConfiguratorSubmit",
528
+ "bubbles": true,
529
+ "cancelable": true,
530
+ "composed": true,
531
+ "docs": {
532
+ "tags": [],
533
+ "text": "The submit event of the B2B configurator."
534
+ },
535
+ "complexType": {
536
+ "original": "B2BSubmit",
537
+ "resolved": "{ cart: Record<string, number>; contactInfo: Record<string, string>; }",
538
+ "references": {
539
+ "B2BSubmit": {
540
+ "location": "local",
541
+ "path": "/__w/internal-tet-web-components-tet-components/internal-tet-web-components-tet-components/src/src/components/views/tet-b2b-configurator/tet-b2b-configurator.tsx",
542
+ "id": "src/components/views/tet-b2b-configurator/tet-b2b-configurator.tsx::B2BSubmit"
543
+ }
544
+ }
545
+ }
546
+ }, {
547
+ "method": "successCloseClick",
548
+ "name": "successCloseClick",
549
+ "bubbles": true,
550
+ "cancelable": true,
551
+ "composed": true,
552
+ "docs": {
553
+ "tags": [],
554
+ "text": "Emitted when the close button of success modal is clicked."
555
+ },
556
+ "complexType": {
557
+ "original": "any",
558
+ "resolved": "any",
559
+ "references": {}
560
+ }
561
+ }];
562
+ }
563
+ static get methods() {
564
+ return {
565
+ "setSubmitFormState": {
566
+ "complexType": {
567
+ "signature": "(value: FormState) => Promise<void>",
568
+ "parameters": [{
569
+ "name": "value",
570
+ "type": "\"error\" | \"success\" | \"loading\"",
571
+ "docs": ""
572
+ }],
573
+ "references": {
574
+ "Promise": {
575
+ "location": "global",
576
+ "id": "global::Promise"
577
+ },
578
+ "FormState": {
579
+ "location": "local",
580
+ "path": "/__w/internal-tet-web-components-tet-components/internal-tet-web-components-tet-components/src/src/components/views/tet-b2b-configurator/tet-b2b-configurator.tsx",
581
+ "id": "src/components/views/tet-b2b-configurator/tet-b2b-configurator.tsx::FormState"
582
+ }
583
+ },
584
+ "return": "Promise<void>"
585
+ },
586
+ "docs": {
587
+ "text": "Sets the value of form submission status",
588
+ "tags": []
589
+ }
590
+ }
591
+ };
592
+ }
593
+ static get elementRef() { return "hostElement"; }
594
+ static get watchers() {
595
+ return [{
596
+ "propName": "activePrimaryCategoryId",
597
+ "methodName": "resetSelectedPrimaryCards"
598
+ }, {
599
+ "propName": "activeSecondaryCategoryId",
600
+ "methodName": "resetSelectedSecondaryCards"
601
+ }];
602
+ }
603
+ static get listeners() {
604
+ return [{
605
+ "name": "resize",
606
+ "method": "onResize",
607
+ "target": "window",
608
+ "capture": false,
609
+ "passive": true
610
+ }];
611
+ }
612
+ }
@@ -51,7 +51,7 @@ export class TetB2bServiceCalculator {
51
51
  processTranslations('tet-components', this.language).then(() => forceUpdate(this));
52
52
  }
53
53
  render() {
54
- return (h("section", { key: '7249b0c2f37af39e860637cfe416182c5227c6d2', class: "container" }, h("div", { key: '89565a9f35411aa6a542582b77df0b9b9da03e0e', class: "title-block" }, t('components-b2b-calculator-title')), h("div", { key: '433eff5a8e863475880f8cf0216d1f604b7f74ce', class: "calculator-block" }, h("p", { key: '1b81e92aa9b7c58543257ea906c2177108b5c3e5', class: "slider-title" }, t('components-b2b-calculator-computer-count')), h("tet-range-slider", { key: 'c5ce8ce5c73329b07f9df3b22aa2f243c56ca1e9', class: "slider", size: "large", type: "primary", defaultValue: 75, maxValue: 100, withControls: false, withInput: false, dataPoints: [1, 20, 40, 60, 80, 100], displayDataPoints: [1, 20, 40, 60, 80, 100], lockToDataPoint: false }), h("div", { key: '69d35eac4899ba24153253d1a70984c60de6ee4f', class: "control-container" }, h("div", { key: '53f8d6355652051ca9e455769a32b1ee127a1a7d', class: "control" }, h("tet-checkbox", { key: 'adfd75a801a68e6ba794d27735d595dddfc9c901', class: "it-admin-checkbox", checked: this.withItAdmin, onCheck: this.handleWithItAdminValueChange }, t('components-b2b-calculator-it-admin-checkbox-label'))), h("div", { key: '000d314c262c7688e1ca5aed97dc84d0c72955e2', class: "control" }, h("tet-switch", { key: '8a423a478675117419a6c2ce02dd37962d4741e0', class: "in-person-support-switch", checked: this.withInPersonServiceSupport, onCheck: this.handleInPersonServiceSupportValueChange }, t('components-b2b-calculator-in-person-support-switch-label')))), h("div", { key: '9d869285131a855b2b9caf6d8ffe6100ab09df8f', class: "monthly-payment-block" }, h("p", { key: '08248a6283d71227e0350b4c0ff092993c86aa56', class: "title" }, t('components-b2b-calculator-potential-monthly-payment')), h("p", { key: 'cf137d3eed20a677c934f1dacdf8624bce437d70' }, h("span", { key: '070d5c3458a67c444c779e62fe522f3cda3dbb2a', class: "price" }, this.totalPrice), h("span", { key: 'f176b1e11123c143f0c63267256ec1484df38eec', class: "currency" }, t('components-euro-per-month')))))));
54
+ return (h("section", { key: '326aaa3f71423e90e2b453e5cc8b1df96689a8bc', class: "container" }, h("div", { key: 'f51769d2182670107b7a43467781160486c0f029', class: "title-block" }, t('components-b2b-calculator-title')), h("div", { key: 'b4ff5d39a203c91ade560be83be338166d8b9ff0', class: "calculator-block" }, h("p", { key: 'c1e8ac5d2b37d8a324acf7b3da046c29e1383c75', class: "slider-title" }, t('components-b2b-calculator-computer-count')), h("tet-range-slider", { key: '81d57baa4df911bbeceb6ba2a6c67bcd07a09a90', class: "slider", size: "large", type: "primary", defaultValue: 75, maxValue: 100, withControls: false, withInput: false, dataPoints: [1, 20, 40, 60, 80, 100], displayDataPoints: [1, 20, 40, 60, 80, 100], lockToDataPoint: false }), h("div", { key: '410efdef7d65e976e94dd7040c4d7faa1d52e32b', class: "control-container" }, h("div", { key: '931c43b16c415ab0075a9fbc9f4710210ed0a5f4', class: "control" }, h("tet-checkbox", { key: '6df1d34cb7670a01213ee83f8c3d33529f13bef6', class: "it-admin-checkbox", checked: this.withItAdmin, onCheck: this.handleWithItAdminValueChange }, t('components-b2b-calculator-it-admin-checkbox-label'))), h("div", { key: '1584213b5b9f61d97be033f37e1e0d82dafedc78', class: "control" }, h("tet-switch", { key: 'd02d94c371e55119eceea25d187346cb13cd2071', class: "in-person-support-switch", checked: this.withInPersonServiceSupport, onCheck: this.handleInPersonServiceSupportValueChange }, t('components-b2b-calculator-in-person-support-switch-label')))), h("div", { key: '4a2b3bd7bdc6f893e644480e4d234f140df41931', class: "monthly-payment-block" }, h("p", { key: '390d38acfbc980da72a405639ff1c5b14bc6402a', class: "title" }, t('components-b2b-calculator-potential-monthly-payment')), h("p", { key: '5c159aef3379a1c4c321959c9512dc733d509ebd' }, h("span", { key: 'd84fc849ac203fc4fe0199759263ee39959a594d', class: "price" }, this.totalPrice), h("span", { key: 'a8cf396d4fa1ea083833dd276fb45b0c6d73e7c2', class: "currency" }, t('components-euro-per-month')))))));
55
55
  }
56
56
  static get is() { return "tet-b2b-service-calculator"; }
57
57
  static get encapsulation() { return "shadow"; }
@@ -46,7 +46,7 @@ export class TetBusinessLines {
46
46
  }
47
47
  render() {
48
48
  var _a;
49
- return (h("div", { key: '662ada195159db350c1c297f8c07a0e344d45cb2', class: "container" }, this.showHeadings && this.renderHeadings(), h("div", { key: 'ae66eb988b9c4f8b78ca265bb30b853cda6b6993', class: "business-line-wrapper" }, (_a = this.businessLines) === null || _a === void 0 ? void 0 : _a.map(this.renderBusinessLineItem))));
49
+ return (h("div", { key: '373ee3335a2e897763556faedda0720e437f5894', class: "container" }, this.showHeadings && this.renderHeadings(), h("div", { key: '1d4b289bcec43264aa7f12d2bd82aa300638b0de', class: "business-line-wrapper" }, (_a = this.businessLines) === null || _a === void 0 ? void 0 : _a.map(this.renderBusinessLineItem))));
50
50
  }
51
51
  static get is() { return "tet-business-lines"; }
52
52
  static get encapsulation() { return "shadow"; }