@iamproperty/components 7.4.0 → 7.5.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 (260) hide show
  1. package/README.md +1 -1
  2. package/assets/css/components/actionbar.component.css +1 -1
  3. package/assets/css/components/actionbar.component.css.map +1 -1
  4. package/assets/css/components/actionbar.global.css +1 -1
  5. package/assets/css/components/actionbar.global.css.map +1 -1
  6. package/assets/css/components/address-lookup.component.css +1 -0
  7. package/assets/css/components/address-lookup.component.css.map +1 -0
  8. package/assets/css/components/barchart.component.css +1 -1
  9. package/assets/css/components/barchart.component.css.map +1 -1
  10. package/assets/css/components/calendar.component.css +1 -1
  11. package/assets/css/components/calendar.component.css.map +1 -1
  12. package/assets/css/components/calendar.config.css.map +1 -1
  13. package/assets/css/components/card.component.css +1 -1
  14. package/assets/css/components/card.component.css.map +1 -1
  15. package/assets/css/components/carousel.component.css +1 -1
  16. package/assets/css/components/carousel.component.css.map +1 -1
  17. package/assets/css/components/charts.css +1 -1
  18. package/assets/css/components/charts.css.map +1 -1
  19. package/assets/css/components/collapsible-side.css +1 -1
  20. package/assets/css/components/collapsible-side.css.map +1 -1
  21. package/assets/css/components/content.component.css +1 -1
  22. package/assets/css/components/content.component.css.map +1 -1
  23. package/assets/css/components/darkmode.component.css +1 -0
  24. package/assets/css/components/darkmode.component.css.map +1 -0
  25. package/assets/css/components/doughnutchart.component.css +1 -1
  26. package/assets/css/components/doughnutchart.component.css.map +1 -1
  27. package/assets/css/components/inline-edit.css.map +1 -1
  28. package/assets/css/components/{menu.css → menu.global.css} +1 -1
  29. package/assets/css/components/menu.global.css.map +1 -0
  30. package/assets/css/components/milestone.css +1 -1
  31. package/assets/css/components/milestone.css.map +1 -1
  32. package/assets/css/components/multi-step.component.css +1 -1
  33. package/assets/css/components/multi-step.component.css.map +1 -1
  34. package/assets/css/components/multiselect.css.map +1 -1
  35. package/assets/css/components/multiselect.preload.css +1 -1
  36. package/assets/css/components/multiselect.preload.css.map +1 -1
  37. package/assets/css/components/nav.component.css +1 -1
  38. package/assets/css/components/nav.component.css.map +1 -1
  39. package/assets/css/components/nav.global.css +1 -1
  40. package/assets/css/components/nav.global.css.map +1 -1
  41. package/assets/css/components/notification.css +1 -1
  42. package/assets/css/components/notification.css.map +1 -1
  43. package/assets/css/components/pagination.css.map +1 -1
  44. package/assets/css/components/property-searchbar.css +1 -1
  45. package/assets/css/components/property-searchbar.css.map +1 -1
  46. package/assets/css/components/split-button.component.css +1 -1
  47. package/assets/css/components/split-button.component.css.map +1 -1
  48. package/assets/css/components/word-count.component.css +1 -0
  49. package/assets/css/components/word-count.component.css.map +1 -0
  50. package/assets/css/core.min.css +1 -1
  51. package/assets/css/core.min.css.map +1 -1
  52. package/assets/css/mobile-core.min.css +1 -1
  53. package/assets/css/mobile-core.min.css.map +1 -1
  54. package/assets/css/mobile.min.css +1 -1
  55. package/assets/css/mobile.min.css.map +1 -1
  56. package/assets/css/style.min.css +1 -1
  57. package/assets/css/style.min.css.map +1 -1
  58. package/assets/js/components/accordion/accordion.component.js +40 -19
  59. package/assets/js/components/accordion/accordion.component.min.js +15 -15
  60. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  61. package/assets/js/components/actionbar/actionbar.component.js +8 -0
  62. package/assets/js/components/actionbar/actionbar.component.min.js +6 -5
  63. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  64. package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
  65. package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
  66. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  67. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  68. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -1
  69. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  70. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  71. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  72. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  73. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  74. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  75. package/assets/js/components/calendar/calendar.component.js +153 -136
  76. package/assets/js/components/calendar/calendar.component.min.js +3 -3
  77. package/assets/js/components/calendar/calendar.component.min.js.map +1 -1
  78. package/assets/js/components/card/card.component.js +3 -9
  79. package/assets/js/components/card/card.component.min.js +13 -7
  80. package/assets/js/components/card/card.component.min.js.map +1 -1
  81. package/assets/js/components/carousel/carousel.component.js +17 -19
  82. package/assets/js/components/carousel/carousel.component.min.js +17 -19
  83. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  84. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  85. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  86. package/assets/js/components/content/content.component.min.js +2 -2
  87. package/assets/js/components/content/content.component.min.js.map +1 -1
  88. package/assets/js/components/darkmode/darkmode.component.js +70 -0
  89. package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
  90. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
  91. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  92. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  93. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  94. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  95. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  96. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  97. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  98. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  99. package/assets/js/components/header/header.component.min.js +1 -1
  100. package/assets/js/components/header/header.component.min.js.map +1 -1
  101. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  102. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  103. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  104. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  105. package/assets/js/components/menu/menu.component.js +2 -2
  106. package/assets/js/components/menu/menu.component.min.js +4 -5
  107. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  108. package/assets/js/components/milestone/milestone.component.js +12 -14
  109. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  110. package/assets/js/components/milestone/milestone.component.min.js.map +1 -1
  111. package/assets/js/components/milestone-group/milestone-group.component.js +10 -12
  112. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  113. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -1
  114. package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
  115. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  116. package/assets/js/components/multiselect/multiselect.component.js +2 -2
  117. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  118. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  119. package/assets/js/components/nav/nav.component.js +2 -3
  120. package/assets/js/components/nav/nav.component.min.js +5 -5
  121. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  122. package/assets/js/components/notification/notification.component.js +1 -3
  123. package/assets/js/components/notification/notification.component.min.js +5 -5
  124. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  125. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  126. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  127. package/assets/js/components/rank/rank.component.min.js +1 -1
  128. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  129. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  130. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  131. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  132. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  133. package/assets/js/components/search/search.component.min.js +1 -1
  134. package/assets/js/components/search/search.component.min.js.map +1 -1
  135. package/assets/js/components/slider/slider.component.min.js +1 -1
  136. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  137. package/assets/js/components/split-button/split-button.component.js +1 -3
  138. package/assets/js/components/split-button/split-button.component.min.js +8 -11
  139. package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
  140. package/assets/js/components/table/table.component.min.js +1 -1
  141. package/assets/js/components/table/table.component.min.js.map +1 -1
  142. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  143. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  144. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  145. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  146. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  147. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  148. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  149. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  150. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  151. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  152. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  153. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  154. package/assets/js/components/word-count/word-count.component.js +81 -0
  155. package/assets/js/components/word-count/word-count.component.min.js +12 -0
  156. package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
  157. package/assets/js/components.js +1 -0
  158. package/assets/js/modules/advanced-select.js +1 -1
  159. package/assets/js/modules/dynamicEvents.js +3 -3
  160. package/assets/js/modules/inputs.js +0 -18
  161. package/assets/js/modules/milestone.js +2 -2
  162. package/assets/js/scripts.bundle.js +3 -3
  163. package/assets/js/scripts.bundle.js.map +1 -1
  164. package/assets/js/scripts.bundle.min.js +2 -2
  165. package/assets/js/scripts.bundle.min.js.map +1 -1
  166. package/assets/js/scripts.js +2 -1
  167. package/assets/sass/_components.scss +4 -4
  168. package/assets/sass/_example.scss +1 -1
  169. package/assets/sass/_functions/utility-mixins.scss +0 -1
  170. package/assets/sass/components/actionbar.component.scss +22 -0
  171. package/assets/sass/components/actionbar.global.scss +1 -1
  172. package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
  173. package/assets/sass/components/calendar.component.scss +163 -271
  174. package/assets/sass/components/calendar.config.scss +69 -122
  175. package/assets/sass/components/darkmode.component.scss +22 -0
  176. package/assets/sass/components/milestone.scss +69 -60
  177. package/assets/sass/components/multi-step.component.scss +1 -1
  178. package/assets/sass/components/multiselect.preload.scss +1 -1
  179. package/assets/sass/components/multiselect.scss +1 -2
  180. package/assets/sass/components/nav.component.scss +16 -6
  181. package/assets/sass/components/nav.global.scss +8 -12
  182. package/assets/sass/components/notification.scss +32 -13
  183. package/assets/sass/components/split-button.component.scss +3 -1
  184. package/assets/sass/components/table-basic.global.scss +32 -32
  185. package/assets/sass/components/word-count.component.scss +26 -0
  186. package/assets/sass/elements/admin-panel.scss +1 -1
  187. package/assets/sass/elements/buttons--compact.scss +1 -1
  188. package/assets/sass/elements/details.scss +33 -6
  189. package/assets/sass/elements/forms.scss +18 -33
  190. package/assets/sass/elements/lists.scss +1 -1
  191. package/assets/sass/elements/toggle-button.scss +1 -0
  192. package/assets/sass/foundations/colours.scss +0 -0
  193. package/assets/sass/foundations/reboot.scss +8 -1
  194. package/assets/sass/foundations/root.scss +41 -51
  195. package/assets/ts/components/accordion/accordion.component.ts +47 -26
  196. package/assets/ts/components/actionbar/actionbar.component.ts +10 -0
  197. package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
  198. package/assets/ts/components/calendar/calendar.component.ts +368 -498
  199. package/assets/ts/components/card/card.component.ts +2 -9
  200. package/assets/ts/components/carousel/carousel.component.ts +17 -19
  201. package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
  202. package/assets/ts/components/menu/menu.component.ts +2 -2
  203. package/assets/ts/components/milestone/milestone.component.ts +43 -45
  204. package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -41
  205. package/assets/ts/components/multiselect/multiselect.component.ts +6 -15
  206. package/assets/ts/components/nav/nav.component.ts +8 -15
  207. package/assets/ts/components/notification/notification.component.ts +1 -5
  208. package/assets/ts/components/split-button/split-button.component.ts +1 -3
  209. package/assets/ts/components/word-count/word-count.component.ts +91 -0
  210. package/assets/ts/components.ts +1 -0
  211. package/assets/ts/modules/advanced-select.ts +11 -16
  212. package/assets/ts/modules/data-layer.md +0 -5
  213. package/assets/ts/modules/dynamicEvents.ts +6 -7
  214. package/assets/ts/modules/inputs.ts +0 -25
  215. package/assets/ts/modules/milestone-group.ts +39 -42
  216. package/assets/ts/modules/milestone.ts +119 -122
  217. package/assets/ts/scripts.ts +2 -1
  218. package/dist/components.es.js +1693 -41
  219. package/dist/components.umd.js +1032 -221
  220. package/package.json +6 -6
  221. package/src/components/Accordion/Accordion.vue +14 -23
  222. package/src/components/Accordion/AccordionItem.vue +27 -43
  223. package/src/components/Actionbar/Actionbar.vue +17 -19
  224. package/src/components/AddressLookup/AddressLookup.vue +17 -18
  225. package/src/components/AdvancedSelect/AdvancedSelect.vue +17 -18
  226. package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
  227. package/src/components/Banner/Banner.vue +18 -21
  228. package/src/components/BarChart/BarChart.vue +17 -18
  229. package/src/components/Calendar/Calendar.vue +14 -20
  230. package/src/components/Card/Card.vue +17 -17
  231. package/src/components/Carousel/Carousel.vue +17 -20
  232. package/src/components/Content/Content.vue +17 -18
  233. package/src/components/DarkMode/DarkMode.vue +19 -0
  234. package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
  235. package/src/components/FileUpload/FileUpload.vue +22 -28
  236. package/src/components/FilterCard/FilterCard.vue +17 -18
  237. package/src/components/Filterlist/Filterlist.vue +17 -0
  238. package/src/components/Header/Header.vue +28 -29
  239. package/src/components/InlineEdit/InlineEdit.vue +11 -19
  240. package/src/components/Menu/Menu.vue +17 -17
  241. package/src/components/Milestones/Milestone.vue +22 -27
  242. package/src/components/Milestones/MilestoneGroup.vue +24 -27
  243. package/src/components/Multiselect/Multiselect.vue +17 -18
  244. package/src/components/Nav/Nav.vue +17 -19
  245. package/src/components/Notification/Notification.vue +17 -15
  246. package/src/components/Pagination/Pagination.vue +16 -16
  247. package/src/components/Rank/Rank.vue +17 -18
  248. package/src/components/Rankings/Rankings.vue +17 -27
  249. package/src/components/RecordCard/RecordCard.vue +17 -18
  250. package/src/components/Search/Search.vue +17 -17
  251. package/src/components/Slider/Slider.vue +17 -17
  252. package/src/components/SplitButton/SplitButton.vue +17 -20
  253. package/src/components/Tabs/Tabs.vue +17 -17
  254. package/src/components/VideoCard/VideoCard.vue +17 -18
  255. package/src/components/WordCount/WordCount.vue +22 -0
  256. package/src/index.js +43 -44
  257. package/assets/css/components/address-lookup.css +0 -1
  258. package/assets/css/components/address-lookup.css.map +0 -1
  259. package/assets/css/components/menu.css.map +0 -1
  260. /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
@@ -1,7 +1,7 @@
1
1
  function advancedSelect(advancedSelect, displayInputField, datalist, isSearch = false): boolean | void {
2
2
  let currentFocus = -1;
3
3
 
4
- if(!isSearch){
4
+ if (!isSearch) {
5
5
  displayInputField.addEventListener('focus', function () {
6
6
  displayInputField.setAttribute('placeholder', displayInputField.value);
7
7
  displayInputField.setAttribute('data-value', displayInputField.value);
@@ -12,10 +12,8 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
12
12
 
13
13
  datalist.style.display = 'block';
14
14
  });
15
- }
16
- else {
15
+ } else {
17
16
  displayInputField.addEventListener('focus', function () {
18
-
19
17
  displayInputField.setAttribute('data-list', displayInputField.getAttribute('list'));
20
18
  displayInputField.setAttribute('list', '');
21
19
 
@@ -37,29 +35,24 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
37
35
  if (option.innerHTML == '') option.innerHTML = option.value;
38
36
  }
39
37
 
40
-
41
38
  advancedSelect.addEventListener('click', function () {
42
-
43
39
  if (event && event.target instanceof HTMLElement && event.target.closest('datalist option')) {
44
40
  const option = event.target.closest('datalist option');
45
-
41
+
46
42
  displayInputField.value = option.value;
47
43
 
48
- if(typeof window.triggerDynamicEvent == "function")
49
- window.triggerDynamicEvent(displayInputField);
44
+ if (typeof window.triggerDynamicEvent == 'function') window.triggerDynamicEvent(displayInputField);
50
45
 
51
46
  datalist.style.display = 'none';
52
47
 
53
48
  for (const optionInner of datalist.options) {
54
- optionInner.classList.remove('active')
49
+ optionInner.classList.remove('active');
55
50
  }
56
51
 
57
52
  option.classList.add('active');
58
53
  }
59
-
60
54
  });
61
55
 
62
-
63
56
  displayInputField.addEventListener('input', function () {
64
57
  displayInputField.removeAttribute('data-value');
65
58
  currentFocus = -1;
@@ -103,20 +96,22 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
103
96
  }
104
97
  }
105
98
 
106
-
107
99
  // Add the empty button
108
100
  displayInputField
109
101
  .closest('label')
110
- .insertAdjacentHTML('beforeend', '<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>');
102
+ .insertAdjacentHTML(
103
+ 'beforeend',
104
+ '<button class="empty btn btn-action"><i class="fa-light fa-times me-0"></i></button>'
105
+ );
111
106
  const closeBtn = advancedSelect.querySelector('.empty');
112
107
 
113
108
  closeBtn.addEventListener('click', function (e) {
114
109
  displayInputField.removeAttribute('placeholder');
115
110
  displayInputField.removeAttribute('data-value');
116
111
  displayInputField.value = '';
117
-
112
+
118
113
  for (const optionInner of datalist.options) {
119
- optionInner.classList.remove('active')
114
+ optionInner.classList.remove('active');
120
115
  optionInner.removeAttribute('style');
121
116
  }
122
117
  });
@@ -13,28 +13,24 @@ The `createDataLayer()` function should be called in the JavaScript code of the
13
13
  ## Events Tracked
14
14
 
15
15
  1. **"Pageview" Event**
16
-
17
16
  - Description: This event is automatically pushed to the `window.dataLayer` array during the function's execution, representing the initial pageview with the current document title.
18
17
  - Event Data:
19
18
  - `event`: "Pageview"
20
19
  - `pageTitle`: The title of the current document.
21
20
 
22
21
  2. **"closeDetails" Event**
23
-
24
22
  - Description: This event is triggered when a click occurs on an element with the attribute `[open] summary`, indicating that a summary element with the `[open]` attribute is being closed.
25
23
  - Event Data:
26
24
  - `event`: "closeDetails"
27
25
  - `detailsTitle`: The text content of the `summary` element associated with the clicked element. If the `summary` element doesn't have any text content, an empty string is used.
28
26
 
29
27
  3. **"openDetails" Event**
30
-
31
28
  - Description: This event is triggered when a click occurs on a `summary` element (not associated with `[open]` attribute), indicating that a summary element is being opened.
32
29
  - Event Data:
33
30
  - `event`: "openDetails"
34
31
  - `detailsTitle`: The text content of the clicked `summary` element. If the `summary` element doesn't have any text content, an empty string is used.
35
32
 
36
33
  4. **"linkClicked" Event**
37
-
38
34
  - Description: This event is triggered when a click occurs on an `a` (anchor) element.
39
35
  - Event Data:
40
36
  - `event`: "linkClicked"
@@ -43,7 +39,6 @@ The `createDataLayer()` function should be called in the JavaScript code of the
43
39
  - `href`: The value of the `href` attribute of the `a` element. If the `a` element doesn't have an `href` attribute, an empty string is used.
44
40
 
45
41
  5. **"buttonClicked" Event**
46
-
47
42
  - Description: This event is triggered when a click occurs on a `button` element.
48
43
  - Event Data:
49
44
  - `event`: "buttonClicked"
@@ -1,13 +1,13 @@
1
1
  // Create the event listeners
2
- window.triggerDynamicEvent = (element, event = "change"): void => {
2
+ window.triggerDynamicEvent = (element, event = 'change'): void => {
3
3
  console.log('event');
4
4
 
5
- if(element.hasAttribute('data-change-events') && event == "change")
5
+ if (element.hasAttribute('data-change-events') && event == 'change')
6
6
  splitEvents(element, element.getAttribute('data-change-events'));
7
-
8
- if(element.hasAttribute('data-click-events') && event == "click")
7
+
8
+ if (element.hasAttribute('data-click-events') && event == 'click')
9
9
  splitEvents(element, element.getAttribute('data-click-events'));
10
- }
10
+ };
11
11
 
12
12
  const createDynamicEvents = (): void => {
13
13
  // Change event
@@ -56,8 +56,7 @@ const checkConditions = (element, event): void | boolean => {
56
56
 
57
57
  if (document.querySelector(`${event['in-list']} option[value="${element.value}"]`)) {
58
58
  runEvent(match, event, 'if');
59
- }
60
- else runEvent(match, event, 'else');
59
+ } else runEvent(match, event, 'else');
61
60
 
62
61
  return false;
63
62
  } else if ('event' in event) {
@@ -2,12 +2,6 @@ import hibpCheck from '../vendor/hibp.js';
2
2
 
3
3
  const extendInputs = (body): void => {
4
4
  function loadInput(): void {
5
- // maxlength counter init
6
- Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
7
- const wrapper = input.parentElement;
8
- setMaxlengthVars(input, wrapper);
9
- });
10
-
11
5
  Array.from(document.querySelectorAll('label input')).forEach((input) => {
12
6
  if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
13
7
  if (input.parentNode.tagName.toLowerCase() == 'span')
@@ -76,9 +70,6 @@ const extendInputs = (body): void => {
76
70
  if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
77
71
  input.nextElementSibling.value = input.value;
78
72
 
79
- if (input.hasAttribute('maxlength') && input.nextElementSibling)
80
- input.nextElementSibling.setAttribute('data-count', input.value.length);
81
-
82
73
  if (input.hasAttribute('data-strength-checker')) checkPWDStrength(input);
83
74
  }
84
75
  });
@@ -129,22 +120,6 @@ const extendInputs = (body): void => {
129
120
  });
130
121
  };
131
122
 
132
- export const setMaxlengthVars = (input): void => {
133
- const wrapper = input.parentElement;
134
- const maxlength = input.getAttribute('maxlength');
135
-
136
- wrapper.style.setProperty('--maxlength', maxlength);
137
-
138
- let span = input.nextElementSibling;
139
-
140
- if (!span || (span && span.classList.contains('invalid-feedback'))) {
141
- span = document.createElement('span');
142
- wrapper.insertBefore(span, input.nextSibling);
143
- }
144
-
145
- span.setAttribute('data-count', input.value.length);
146
- };
147
-
148
123
  export const changeType = (input, type): void => {
149
124
  if (input.hasAttribute('type') && input.getAttribute('type') == 'password')
150
125
  input.setAttribute('data-password-type', true);
@@ -1,42 +1,39 @@
1
- export const showFuture = function (milestoneGroupElement: Element): void {
2
- const futureToggle = milestoneGroupElement.dataset.showAllToggle;
3
-
4
- if (!futureToggle) {
5
- return;
6
- }
7
-
8
- const toggleBtn = document.createElement('button');
9
- toggleBtn.innerHTML = 'Show next steps';
10
- toggleBtn.classList.add('btn', 'btn-tertiary', 'show-all-toggle');
11
-
12
- milestoneGroupElement.appendChild(toggleBtn)
13
-
14
- toggleBtn.addEventListener('click', () => {
15
- if(milestoneGroupElement.classList.contains('show-all')) {
16
- toggleBtn.innerHTML = 'Show next steps';
17
-
18
- milestoneGroupElement.classList.remove('show-all');
19
- toggleInteractionEvent('hide-future-items', milestoneGroupElement)
20
- } else {
21
- toggleBtn.innerHTML = 'Hide next steps';
22
-
23
- milestoneGroupElement.classList.add('show-all');
24
- toggleInteractionEvent('show-future-items', milestoneGroupElement)
25
- }
26
-
27
- });
28
-
29
- }
30
-
31
- const toggleInteractionEvent = function (eventName: string, element: Element): void {
32
- const customEvent = new CustomEvent(eventName, {});
33
-
34
- element.dispatchEvent(customEvent);
35
- }
36
-
37
-
38
- const milestoneGroup = function (milestoneGroupElement: Element): void {
39
- showFuture(milestoneGroupElement);
40
- };
41
-
42
- export default milestoneGroup;
1
+ export const showFuture = function (milestoneGroupElement: Element): void {
2
+ const futureToggle = milestoneGroupElement.dataset.showAllToggle;
3
+
4
+ if (!futureToggle) {
5
+ return;
6
+ }
7
+
8
+ const toggleBtn = document.createElement('button');
9
+ toggleBtn.innerHTML = 'Show next steps';
10
+ toggleBtn.classList.add('btn', 'btn-tertiary', 'show-all-toggle');
11
+
12
+ milestoneGroupElement.appendChild(toggleBtn);
13
+
14
+ toggleBtn.addEventListener('click', () => {
15
+ if (milestoneGroupElement.classList.contains('show-all')) {
16
+ toggleBtn.innerHTML = 'Show next steps';
17
+
18
+ milestoneGroupElement.classList.remove('show-all');
19
+ toggleInteractionEvent('hide-future-items', milestoneGroupElement);
20
+ } else {
21
+ toggleBtn.innerHTML = 'Hide next steps';
22
+
23
+ milestoneGroupElement.classList.add('show-all');
24
+ toggleInteractionEvent('show-future-items', milestoneGroupElement);
25
+ }
26
+ });
27
+ };
28
+
29
+ const toggleInteractionEvent = function (eventName: string, element: Element): void {
30
+ const customEvent = new CustomEvent(eventName, {});
31
+
32
+ element.dispatchEvent(customEvent);
33
+ };
34
+
35
+ const milestoneGroup = function (milestoneGroupElement: Element): void {
36
+ showFuture(milestoneGroupElement);
37
+ };
38
+
39
+ export default milestoneGroup;
@@ -1,122 +1,119 @@
1
- export const setStatus = function (milestoneElement: Element): void {
2
- const status = milestoneElement.dataset.status;
3
-
4
- if(!status) {
5
- return;
6
- }
7
-
8
- const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap')
9
- const statusTag = document.createElement('span');
10
- statusTag.setAttribute('part', 'status');
11
- statusTag.classList.add('milestone-status');
12
- statusTag.innerHTML = `${status} Step`;
13
-
14
- if(status === 'Current') {
15
- milestoneElement.classList.add('current');
16
- }
17
-
18
- milestoneWrap.insertAdjacentElement('afterbegin', statusTag)
19
- }
20
-
21
- export const getMilestoneTasks = function (milestoneElement: Element): void {
22
- const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');
23
- const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];
24
-
25
- if(!tasks.length) {
26
- return;
27
- }
28
-
29
- tasks.forEach(task => {
30
- const taskItem = document.createElement('details');
31
- const taskName = document.createElement('summary');
32
- const detailsWrap = document.createElement('div');
33
- const taskDescription = document.createElement('p');
34
-
35
- detailsWrap.classList.add('task-details');
36
-
37
- taskName.innerHTML = task.name;
38
-
39
- if (task.date_completed) {
40
- taskName.classList.add('complete');
41
- }
42
-
43
- taskItem.appendChild(taskName);
44
-
45
- if (task.description) {
46
- taskDescription.innerHTML = task.description;
47
- detailsWrap.appendChild(taskDescription)
48
- }
49
-
50
- if (task.actions.length) {
51
- detailsWrap.appendChild(getSubtasks(task.actions, taskName));
52
- }
53
-
54
- taskItem.appendChild(detailsWrap);
55
-
56
- taskWrap.insertAdjacentElement('beforeend', taskItem)
57
-
58
- // Fire tracking events
59
- taskItem.addEventListener('click', () => {
60
-
61
- if (taskItem?.hasAttribute('open')) {
62
- itemInteractionEvent('milestone-item-closed', task.name, milestoneElement)
63
- } else {
64
- itemInteractionEvent('milestone-item-opened', task.name, milestoneElement)
65
- }
66
- });
67
-
68
- });
69
-
70
- milestoneElement.appendChild(taskWrap)
71
- }
72
-
73
- const itemInteractionEvent = function (eventName: string, taskName: string, element: Element): void {
74
- const customEvent = new CustomEvent(eventName, {
75
- detail: {
76
- title: taskName,
77
- },
78
- });
79
-
80
- element.dispatchEvent(customEvent);
81
-
82
- }
83
-
84
- const getSubtasks = function (actions: Array, taskName: Element): void {
85
- const actionsWrap = document.createElement('ul');
86
- const totalCount = actions.length;
87
- const completed = actions.filter((action) => action.date_completed);
88
- const completedCount = completed.length || 0;
89
-
90
- if (totalCount < 1) {
91
- return;
92
- }
93
-
94
- taskName.innerHTML += ` (${completedCount}/${totalCount})`;
95
-
96
- actions.forEach(action => {
97
- const actionItem = document.createElement('li');
98
- const actionCompletedDate = document.createElement('span');
99
-
100
- if(action.date_completed) {
101
- actionItem.classList.add('complete')
102
-
103
- actionCompletedDate.classList.add('action-date');
104
- actionCompletedDate.innerHTML = action.date_completed;
105
- }
106
-
107
- actionItem.innerHTML = action.action;
108
-
109
- actionItem.appendChild(actionCompletedDate);
110
-
111
- actionsWrap.appendChild(actionItem);
112
- });
113
-
114
- return actionsWrap;
115
- }
116
-
117
- const milestone = function (milestoneElement: Element): void {
118
- setStatus(milestoneElement)
119
- getMilestoneTasks(milestoneElement);
120
- };
121
-
122
- export default milestone;
1
+ export const setStatus = function (milestoneElement: Element): void {
2
+ const status = milestoneElement.dataset.status;
3
+
4
+ if (!status) {
5
+ return;
6
+ }
7
+
8
+ const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap');
9
+ const statusTag = document.createElement('span');
10
+ statusTag.setAttribute('part', 'status');
11
+ statusTag.classList.add('milestone-status');
12
+ statusTag.innerHTML = `${status} Step`;
13
+
14
+ if (status === 'Current') {
15
+ milestoneElement.classList.add('current');
16
+ }
17
+
18
+ milestoneWrap.insertAdjacentElement('afterbegin', statusTag);
19
+ };
20
+
21
+ export const getMilestoneTasks = function (milestoneElement: Element): void {
22
+ const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');
23
+ const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];
24
+
25
+ if (!tasks.length) {
26
+ return;
27
+ }
28
+
29
+ tasks.forEach((task) => {
30
+ const taskItem = document.createElement('details');
31
+ const taskName = document.createElement('summary');
32
+ const detailsWrap = document.createElement('div');
33
+ const taskDescription = document.createElement('p');
34
+
35
+ detailsWrap.classList.add('task-details');
36
+
37
+ taskName.innerHTML = task.name;
38
+
39
+ if (task.date_completed) {
40
+ taskName.classList.add('complete');
41
+ }
42
+
43
+ taskItem.appendChild(taskName);
44
+
45
+ if (task.description) {
46
+ taskDescription.innerHTML = task.description;
47
+ detailsWrap.appendChild(taskDescription);
48
+ }
49
+
50
+ if (task.actions.length) {
51
+ detailsWrap.appendChild(getSubtasks(task.actions, taskName));
52
+ }
53
+
54
+ taskItem.appendChild(detailsWrap);
55
+
56
+ taskWrap.insertAdjacentElement('beforeend', taskItem);
57
+
58
+ // Fire tracking events
59
+ taskItem.addEventListener('click', () => {
60
+ if (taskItem?.hasAttribute('open')) {
61
+ itemInteractionEvent('milestone-item-closed', task.name, milestoneElement);
62
+ } else {
63
+ itemInteractionEvent('milestone-item-opened', task.name, milestoneElement);
64
+ }
65
+ });
66
+ });
67
+
68
+ milestoneElement.appendChild(taskWrap);
69
+ };
70
+
71
+ const itemInteractionEvent = function (eventName: string, taskName: string, element: Element): void {
72
+ const customEvent = new CustomEvent(eventName, {
73
+ detail: {
74
+ title: taskName,
75
+ },
76
+ });
77
+
78
+ element.dispatchEvent(customEvent);
79
+ };
80
+
81
+ const getSubtasks = function (actions: Array, taskName: Element): void {
82
+ const actionsWrap = document.createElement('ul');
83
+ const totalCount = actions.length;
84
+ const completed = actions.filter((action) => action.date_completed);
85
+ const completedCount = completed.length || 0;
86
+
87
+ if (totalCount < 1) {
88
+ return;
89
+ }
90
+
91
+ taskName.innerHTML += ` (${completedCount}/${totalCount})`;
92
+
93
+ actions.forEach((action) => {
94
+ const actionItem = document.createElement('li');
95
+ const actionCompletedDate = document.createElement('span');
96
+
97
+ if (action.date_completed) {
98
+ actionItem.classList.add('complete');
99
+
100
+ actionCompletedDate.classList.add('action-date');
101
+ actionCompletedDate.innerHTML = action.date_completed;
102
+ }
103
+
104
+ actionItem.innerHTML = action.action;
105
+
106
+ actionItem.appendChild(actionCompletedDate);
107
+
108
+ actionsWrap.appendChild(actionItem);
109
+ });
110
+
111
+ return actionsWrap;
112
+ };
113
+
114
+ const milestone = function (milestoneElement: Element): void {
115
+ setStatus(milestoneElement);
116
+ getMilestoneTasks(milestoneElement);
117
+ };
118
+
119
+ export default milestone;
@@ -40,7 +40,8 @@ const components = [
40
40
  'doughnutchart',
41
41
  'bento-grid',
42
42
  'milestone-group',
43
- 'milestone'
43
+ 'milestone',
44
+ 'darkmode',
44
45
  ];
45
46
 
46
47
  // Attach classes to dom elements