@iamproperty/components 7.3.0 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/calendar.component.css +1 -0
  8. package/assets/css/components/calendar.component.css.map +1 -0
  9. package/assets/css/components/calendar.config.css +1 -0
  10. package/assets/css/components/calendar.config.css.map +1 -0
  11. package/assets/css/components/card.component.css +1 -1
  12. package/assets/css/components/card.component.css.map +1 -1
  13. package/assets/css/components/carousel.component.css +1 -1
  14. package/assets/css/components/carousel.component.css.map +1 -1
  15. package/assets/css/components/collapsible-side.css +1 -1
  16. package/assets/css/components/collapsible-side.css.map +1 -1
  17. package/assets/css/components/content.component.css +1 -0
  18. package/assets/css/components/content.component.css.map +1 -0
  19. package/assets/css/components/doughnutchart.component.css +1 -1
  20. package/assets/css/components/doughnutchart.component.css.map +1 -1
  21. package/assets/css/components/fileupload.css.map +1 -1
  22. package/assets/css/components/inline-edit.css +1 -1
  23. package/assets/css/components/inline-edit.css.map +1 -1
  24. package/assets/css/components/marketing.component.css +1 -0
  25. package/assets/css/components/marketing.component.css.map +1 -0
  26. package/assets/css/components/menu.component.css.map +1 -1
  27. package/assets/css/components/milestone.css +1 -0
  28. package/assets/css/components/milestone.css.map +1 -0
  29. package/assets/css/components/multiselect.css +1 -1
  30. package/assets/css/components/multiselect.css.map +1 -1
  31. package/assets/css/components/nav.component.css +1 -1
  32. package/assets/css/components/nav.component.css.map +1 -1
  33. package/assets/css/components/nav.global.css +1 -1
  34. package/assets/css/components/nav.global.css.map +1 -1
  35. package/assets/css/components/pagination.css.map +1 -1
  36. package/assets/css/components/rank.component.css +1 -1
  37. package/assets/css/components/rank.component.css.map +1 -1
  38. package/assets/css/components/rankings.component.css +1 -1
  39. package/assets/css/components/rankings.component.css.map +1 -1
  40. package/assets/css/components/rankings.global.css +1 -1
  41. package/assets/css/components/rankings.global.css.map +1 -1
  42. package/assets/css/components/slider.css.map +1 -1
  43. package/assets/css/components/split-button.component.css +1 -0
  44. package/assets/css/components/split-button.component.css.map +1 -0
  45. package/assets/css/core.min.css +1 -1
  46. package/assets/css/core.min.css.map +1 -1
  47. package/assets/css/mobile-core.min.css +1 -1
  48. package/assets/css/mobile-core.min.css.map +1 -1
  49. package/assets/css/mobile.min.css +1 -1
  50. package/assets/css/mobile.min.css.map +1 -1
  51. package/assets/css/style.min.css +1 -1
  52. package/assets/css/style.min.css.map +1 -1
  53. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  54. package/assets/js/components/actionbar/actionbar.component.js +51 -31
  55. package/assets/js/components/actionbar/actionbar.component.min.js +17 -17
  56. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  57. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  58. package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
  59. package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
  60. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
  61. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  62. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  63. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  64. package/assets/js/components/calendar/calendar.component.js +1083 -0
  65. package/assets/js/components/calendar/calendar.component.min.js +170 -0
  66. package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
  67. package/assets/js/components/card/card.component.js +20 -8
  68. package/assets/js/components/card/card.component.min.js +10 -10
  69. package/assets/js/components/card/card.component.min.js.map +1 -1
  70. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  71. package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
  72. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
  73. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  74. package/assets/js/components/content/content.component.js +66 -0
  75. package/assets/js/components/content/content.component.min.js +15 -0
  76. package/assets/js/components/content/content.component.min.js.map +1 -0
  77. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  78. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  79. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  80. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  81. package/assets/js/components/header/header.component.min.js +1 -1
  82. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  83. package/assets/js/components/marketing/marketing.component.js +1 -1
  84. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  85. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  86. package/assets/js/components/menu/menu.component.js +10 -2
  87. package/assets/js/components/menu/menu.component.min.js +2 -2
  88. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  89. package/assets/js/components/milestone/milestone.component.js +38 -0
  90. package/assets/js/components/milestone/milestone.component.min.js +15 -0
  91. package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
  92. package/assets/js/components/milestone-group/milestone-group.component.js +35 -0
  93. package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
  94. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
  95. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  96. package/assets/js/components/multiselect/multiselect.component.js +54 -2
  97. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  98. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  99. package/assets/js/components/nav/nav.component.js +19 -0
  100. package/assets/js/components/nav/nav.component.min.js +6 -6
  101. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  102. package/assets/js/components/notification/notification.component.js +17 -11
  103. package/assets/js/components/notification/notification.component.min.js +4 -4
  104. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  105. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  106. package/assets/js/components/rank/rank.component.js +346 -210
  107. package/assets/js/components/rank/rank.component.min.js +346 -211
  108. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  109. package/assets/js/components/rankings/rankings.component.js +17 -8
  110. package/assets/js/components/rankings/rankings.component.min.js +14 -8
  111. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  112. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  113. package/assets/js/components/search/search.component.js +5 -3
  114. package/assets/js/components/search/search.component.min.js +6 -6
  115. package/assets/js/components/search/search.component.min.js.map +1 -1
  116. package/assets/js/components/slider/slider.component.min.js +1 -1
  117. package/assets/js/components/split-button/split-button.component.js +60 -0
  118. package/assets/js/components/split-button/split-button.component.min.js +34 -0
  119. package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
  120. package/assets/js/components/table/table.component.js +12 -0
  121. package/assets/js/components/table/table.component.min.js +3 -3
  122. package/assets/js/components/table/table.component.min.js.map +1 -1
  123. package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
  124. package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
  125. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  126. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  127. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  128. package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
  129. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
  130. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  131. package/assets/js/components/table-submit/table-submit.component.js +12 -0
  132. package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
  133. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  134. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  135. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  136. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  137. package/assets/js/components.js +58 -0
  138. package/assets/js/modules/advanced-select.js +106 -0
  139. package/assets/js/modules/dialogs.js +53 -51
  140. package/assets/js/modules/dynamicEvents.js +7 -0
  141. package/assets/js/modules/milestone-group.js +30 -0
  142. package/assets/js/modules/milestone.js +89 -0
  143. package/assets/js/modules/table.js +11 -1
  144. package/assets/js/modules/videos.js +1 -1
  145. package/assets/js/scripts.bundle.js +3 -3
  146. package/assets/js/scripts.bundle.js.map +1 -1
  147. package/assets/js/scripts.bundle.min.js +2 -2
  148. package/assets/js/scripts.bundle.min.js.map +1 -1
  149. package/assets/js/scripts.js +4 -0
  150. package/assets/sass/_components.scss +11 -0
  151. package/assets/sass/_functions/utility-mixins.scss +41 -0
  152. package/assets/sass/_functions/variables.scss +11 -5
  153. package/assets/sass/components/actionbar.component.scss +1 -1
  154. package/assets/sass/components/actionbar.global.scss +4 -4
  155. package/assets/sass/components/calendar.component.scss +1380 -0
  156. package/assets/sass/components/calendar.config.scss +476 -0
  157. package/assets/sass/components/card.component.scss +4 -34
  158. package/assets/sass/components/carousel.component.scss +5 -0
  159. package/assets/sass/components/collapsible-side.scss +91 -95
  160. package/assets/sass/components/content.component.scss +18 -0
  161. package/assets/sass/components/inline-edit.scss +2 -0
  162. package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
  163. package/assets/sass/components/menu.component.scss +3 -8
  164. package/assets/sass/components/milestone.scss +207 -0
  165. package/assets/sass/components/multiselect.scss +3 -0
  166. package/assets/sass/components/nav.component.scss +1 -0
  167. package/assets/sass/components/nav.global.scss +30 -0
  168. package/assets/sass/components/rank.component.scss +197 -24
  169. package/assets/sass/components/rankings.component.scss +38 -28
  170. package/assets/sass/components/rankings.global.scss +64 -2
  171. package/assets/sass/components/split-button.component.scss +77 -0
  172. package/assets/sass/elements/badge-tag.scss +5 -1
  173. package/assets/sass/elements/buttons--compact.scss +4 -0
  174. package/assets/sass/elements/details.scss +0 -1
  175. package/assets/sass/elements/forms.scss +130 -8
  176. package/assets/sass/elements/links.scss +132 -4
  177. package/assets/sass/elements/lists.scss +61 -0
  178. package/assets/sass/elements/popover.scss +64 -10
  179. package/assets/sass/elements/toggle-button.scss +7 -8
  180. package/assets/sass/elements/type.scss +7 -10
  181. package/assets/sass/templates/form.scss +0 -2
  182. package/assets/ts/components/actionbar/actionbar.component.ts +49 -23
  183. package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
  184. package/assets/ts/components/calendar/calendar.component.ts +1460 -0
  185. package/assets/ts/components/card/card.component.ts +22 -14
  186. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
  187. package/assets/ts/components/content/content.component.ts +78 -0
  188. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  189. package/assets/ts/components/menu/menu.component.ts +16 -8
  190. package/assets/ts/components/milestone/milestone.component.ts +45 -0
  191. package/assets/ts/components/milestone-group/milestone-group.component.ts +41 -0
  192. package/assets/ts/components/multiselect/multiselect.component.ts +69 -3
  193. package/assets/ts/components/nav/nav.component.ts +25 -0
  194. package/assets/ts/components/notification/notification.component.ts +34 -11
  195. package/assets/ts/components/rank/rank.component.ts +345 -209
  196. package/assets/ts/components/rankings/rankings.component.ts +27 -8
  197. package/assets/ts/components/search/search.component.ts +6 -4
  198. package/assets/ts/components/split-button/split-button.component.ts +69 -0
  199. package/assets/ts/components/table/table.component.ts +14 -0
  200. package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
  201. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
  202. package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
  203. package/assets/ts/components/video-card/video-card.component.ts +2 -3
  204. package/assets/ts/components.ts +63 -0
  205. package/assets/ts/modules/advanced-select.ts +125 -0
  206. package/assets/ts/modules/dialogs.ts +64 -61
  207. package/assets/ts/modules/dynamicEvents.ts +12 -1
  208. package/assets/ts/modules/milestone-group.ts +42 -0
  209. package/assets/ts/modules/milestone.ts +122 -0
  210. package/assets/ts/modules/table.ts +15 -1
  211. package/assets/ts/modules/videos.ts +19 -37
  212. package/assets/ts/scripts.ts +5 -3
  213. package/dist/components.es.js +41 -1923
  214. package/dist/components.umd.js +126 -105
  215. package/package.json +1 -1
  216. package/src/components/AdvancedSelect/AdvancedSelect.vue +23 -0
  217. package/src/components/Calendar/Calendar.vue +26 -0
  218. package/src/components/Card/Card.vue +1 -1
  219. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
  220. package/src/components/Content/Content.vue +23 -0
  221. package/src/components/Milestones/Milestone.vue +27 -0
  222. package/src/components/Milestones/MilestoneGroup.vue +27 -0
  223. package/src/components/SplitButton/README.md +19 -0
  224. package/src/components/SplitButton/SplitButton.vue +26 -0
  225. package/src/index.js +44 -41
  226. package/assets/css/components/marketing.css +0 -1
  227. package/assets/css/components/marketing.css.map +0 -1
  228. package/assets/css/components/nav.old.css +0 -1
  229. package/assets/css/components/nav.old.css.map +0 -1
  230. package/assets/sass/components/nav.old.scss +0 -891
@@ -1,4 +1,4 @@
1
- import extendDialogs from '../../modules/dialogs';
1
+ import { uniqueID } from '../../modules/helpers';
2
2
 
3
3
  // Data layer Web component created
4
4
  declare global {
@@ -58,23 +58,23 @@ class iamActionbar extends HTMLElement {
58
58
  <div class="safe-area">
59
59
  <slot></slot>
60
60
  <div class="body">
61
- <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
62
- <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0">More actions</button>
63
- <dialog class="dialog--list" part="overflow">
61
+ <div class="menu__wrapper menu__wrapper --right dialog-overflow d-none show">
62
+ <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0" popovertarget="overflow" style="anchor-name: --anchor-overflow;">More actions</button>
63
+ <iam-menu class="dialog--list" part="overflow" id="overflow" style="position-anchor: --anchor-overflow;" popover>
64
64
  <slot name="overflow"></slot>
65
65
  <slot name="menu"></slot>
66
- </dialog>
66
+ </iam-menu>
67
67
  </div>
68
68
 
69
69
 
70
- <div class="dialog__wrapper dialog__wrapper--right filter-columns">
71
- <button class="btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns" title="Select colums">Filter</button>
72
- <dialog class="dialog--list">
70
+ <div class="menu__wrapper menu__wrapper --right filter-columns">
71
+ <button class="btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns" title="Select colums" popovertarget="filter" style="anchor-name: --anchor-filter;">Filter</button>
72
+ <iam-menu class="dialog--list" id="filter" style="position-anchor: --anchor-filter;" popover>
73
73
  <div class="pb-0 mb-0 checklists">
74
74
 
75
75
  </div>
76
76
  <div class="text-right checklist-btns"><button id="cancelColumns" class="btn btn-action">Cancel</button><button id="saveColumns" class="btn btn-action btn-secondary">Save</button></div>
77
- </dialog>
77
+ </iam-menu>
78
78
  </div>
79
79
 
80
80
  <button class="btn btn-secondary btn-compact btn-sm fa-search" data-search="" part="search-btn">Search</button>
@@ -85,11 +85,11 @@ class iamActionbar extends HTMLElement {
85
85
  <div class="safe-area">
86
86
  <slot name="selected"></slot>
87
87
  <div class="body">
88
- <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
89
- <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0">More actions</button>
90
- <dialog class="dialog--list" part="selected-overflow">
88
+ <div class="menu__wrapper menu__wrapper --right dialog-overflow d-none show">
89
+ <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0" popovertarget="selected-overflow" style="anchor-name: --anchor-selected-overflow;">More actions</button>
90
+ <iam-menu class="dialog--list" part="selected-overflow" id="selected-overflow" style="position-anchor: --anchor-selected-overflow;" popover>
91
91
  <slot name="selected-overflow"></slot>
92
- </dialog>
92
+ </iam-menu>
93
93
  </div>
94
94
  </div>
95
95
  </div>
@@ -121,6 +121,37 @@ class iamActionbar extends HTMLElement {
121
121
  const actionbarWrapper = this.shadowRoot?.querySelector('.actionbar__wrapper');
122
122
  const checklistHolder = this.shadowRoot?.querySelector('.checklists');
123
123
 
124
+ const assetLocation = document.body.hasAttribute('data-assets-location')
125
+ ? document.body.getAttribute('data-assets-location')
126
+ : '/assets';
127
+
128
+ if (!window.customElements.get(`iam-menu`)) {
129
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
130
+ .then((module) => {
131
+ window.customElements.define(`iam-menu`, module.default);
132
+ })
133
+ .catch((err) => {
134
+ console.log(err.message);
135
+ });
136
+ }
137
+
138
+ const dialog = this.querySelector('.dialog__wrapper dialog');
139
+
140
+ // Transform dialog into a menu custom element
141
+ if (dialog) {
142
+ const btn = dialog.parentElement.querySelector('.btn');
143
+ const id = `menu${uniqueID(1)}`;
144
+
145
+ dialog.setAttribute('id', id);
146
+ dialog.setAttribute('popover', 'auto');
147
+ btn.setAttribute('popovertarget', id);
148
+
149
+ dialog.outerHTML = dialog.outerHTML.replace(/<dialog/g, '<iam-menu').replace(/<\/dialog>/g, '</iam-menu>');
150
+
151
+ dialog.parentElement?.classList.add('menu__wrapper');
152
+ dialog.parentElement?.classList.remove('dialog__wrapper');
153
+ }
154
+
124
155
  // #region select all
125
156
  if (this.hasAttribute('data-selectall')) {
126
157
  actionbarWrapper?.insertAdjacentHTML(
@@ -248,11 +279,6 @@ class iamActionbar extends HTMLElement {
248
279
  });
249
280
  // #endregion
250
281
 
251
- // Make sure dialogs created in the shadow dom work
252
- Array.from(this.shadowRoot.querySelectorAll('.body')).forEach((element) => {
253
- extendDialogs(element);
254
- });
255
-
256
282
  // #region Reponsive safe area
257
283
  const hideButtons = (): void => {
258
284
  const wrapperWidth = actionbarWrapper.scrollWidth;
@@ -294,7 +320,7 @@ class iamActionbar extends HTMLElement {
294
320
  if (wrapperWidth < 576) {
295
321
  Array.from(
296
322
  this.querySelectorAll(
297
- ':scope > .btn:not(.js-updated), :scope > .dialog__wrapper > .btn[class*="fa-"]:first-child:not(.js-updated)'
323
+ ':scope > .btn:not(.js-updated), :scope > .menu__wrapper > .btn[class*="fa-"]:first-child:not(.js-updated)'
298
324
  )
299
325
  ).forEach((element: HTMLElement) => {
300
326
  element.className = element.className.replace(' btn-compact', ' _btn-compact');
@@ -303,7 +329,7 @@ class iamActionbar extends HTMLElement {
303
329
  });
304
330
  } else {
305
331
  Array.from(
306
- this.querySelectorAll(':scope > .btn.js-updated, :scope > .dialog__wrapper > .btn.js-updated:first-child')
332
+ this.querySelectorAll(':scope > .btn.js-updated, :scope > .menu__wrapper > .btn.js-updated:first-child')
307
333
  ).forEach((element: HTMLElement) => {
308
334
  element.classList.remove('btn-compact');
309
335
  element.classList.remove('js-updated');
@@ -342,7 +368,7 @@ class iamActionbar extends HTMLElement {
342
368
 
343
369
  // Foreach element this isn't an action button or dialog wrapper add to the width, these will not be moved into the overflow slot
344
370
  for (let i = 0; i < elements.length; i++) {
345
- if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('dialog__wrapper')) {
371
+ if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('menu__wrapper ')) {
346
372
  tempWidth += elements[i].offsetWidth;
347
373
  tempWidth += elementMargin;
348
374
  }
@@ -350,7 +376,7 @@ class iamActionbar extends HTMLElement {
350
376
 
351
377
  // Foreach dialog wrapper decide if safe in safe area or move into the overflow slot, dialog wrappers have priority over the action buttons
352
378
  for (let i = 0; i < elements.length; i++) {
353
- if (elements[i].classList.contains('dialog__wrapper')) {
379
+ if (elements[i].classList.contains('menu__wrapper ')) {
354
380
  elements[i].classList.add('show');
355
381
  tempWidth += elements[i].offsetWidth;
356
382
  tempWidth += elementMargin / 2;
@@ -384,7 +410,7 @@ class iamActionbar extends HTMLElement {
384
410
 
385
411
  // Decide which elements go into the overflow slot
386
412
  for (let i = 0; i < elements.length; i++) {
387
- if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('dialog__wrapper')) {
413
+ if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('menu__wrapper ')) {
388
414
  if (!elements[i].classList.contains('show')) {
389
415
  // Move to the slot by changing the attribute
390
416
  elements[i].setAttribute('slot', overflowSlot);
@@ -0,0 +1,74 @@
1
+ import advancedSelect from '../../modules/advanced-select';
2
+ import { safeID, resolvePath, isTraversable } from '../../modules/helpers';
3
+
4
+ // Data layer Web component created
5
+ window.dataLayer = window.dataLayer || [];
6
+ window.dataLayer.push({
7
+ event: 'customElementRegistered',
8
+ element: 'Advanced select',
9
+ });
10
+
11
+ class iamAdvancedSelect extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ this.attachShadow({ mode: 'open' });
15
+
16
+ const assetLocation = document.body.hasAttribute('data-assets-location')
17
+ ? document.body.getAttribute('data-assets-location')
18
+ : '/assets';
19
+ const coreCSS = document.body.hasAttribute('data-core-css')
20
+ ? document.body.getAttribute('data-core-css')
21
+ : `${assetLocation}/css/core.min.css`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ @import "${coreCSS}";
27
+ input {
28
+ background: red;
29
+ }
30
+ input:not(.is-invalid):not(:invalid) {
31
+ background: none!important;
32
+ }
33
+ .optional-text {
34
+ display: none;
35
+ }
36
+ .js-hide {
37
+ display: none !important;
38
+ }
39
+ </style>
40
+ <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
41
+ <slot></slot>
42
+ `;
43
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
44
+ }
45
+
46
+ connectedCallback(): void {
47
+ // Clone original input field, re-name and use for display purposes
48
+ const inputField = this.querySelector('input');
49
+ const displayInputField = inputField.cloneNode();
50
+ displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);
51
+ inputField.removeAttribute('data-change-events');
52
+ displayInputField.removeAttribute('id');
53
+ let datalist = this.querySelector('datalist');
54
+
55
+ inputField.after(displayInputField);
56
+
57
+ // Hide original input field
58
+ inputField.setAttribute('type', 'hidden');
59
+
60
+ // if data list does not exist then create one and append
61
+ if (!datalist) {
62
+ datalist = document.createElement('datalist');
63
+ const listID = safeID('list');
64
+ datalist.setAttribute('id', listID);
65
+ searchWrapper.appendChild(datalist);
66
+
67
+ displayInputField.setAttribute('list', listID);
68
+ }
69
+
70
+ advancedSelect(this, displayInputField, datalist);
71
+ }
72
+ }
73
+
74
+ export default iamAdvancedSelect;