@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,5 +1,6 @@
1
1
  import { trackComponent, trackComponentRegistered } from '../_global';
2
2
  import { cardHTML, setupCard } from '../../modules/card.module';
3
+ import iamMenu from '../menu/menu.component';
3
4
 
4
5
  trackComponentRegistered('iam-card');
5
6
 
@@ -36,15 +37,7 @@ class iamCard extends HTMLElement {
36
37
  ? document.body.getAttribute('data-assets-location')
37
38
  : '/assets';
38
39
 
39
- if (!window.customElements.get(`iam-menu`)) {
40
- import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
41
- .then((module) => {
42
- window.customElements.define(`iam-menu`, module.default);
43
- })
44
- .catch((err) => {
45
- console.log(err.message);
46
- });
47
- }
40
+ if (!window.customElements.get(`iam-menu`)) window.customElements.define(`iam-menu`, iamMenu);
48
41
 
49
42
  setupCard(cardComponent);
50
43
 
@@ -15,34 +15,32 @@ class iamCarousel extends HTMLElement {
15
15
  const loadCSS = `@import "${assetLocation}/css/components/carousel.component.css";`;
16
16
 
17
17
  const template = document.createElement('template');
18
- template.innerHTML = `
19
- <style>
20
- ${loadCSS}
21
- ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
22
- </style>
23
- <div class="carousel" part="carousel">
24
- <div class="carousel__wrapper">
25
- <div class="carousel__inner">
26
- <div class="carousel__content" part="content">
27
- <slot></slot>
18
+ template.innerHTML = /* HTML */ `
19
+ <style>
20
+ ${loadCSS}
21
+ ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
22
+ </style>
23
+ <div class="carousel" part="carousel">
24
+ <div class="carousel__wrapper">
25
+ <div class="carousel__inner">
26
+ <div class="carousel__content" part="content">
27
+ <slot></slot>
28
+ </div>
28
29
  </div>
29
30
  </div>
30
-
31
- </div>
32
31
  <div class="carousel__btns" part="btns">
33
- <button class="btn btn-secondary btn-compact fa-plus-large btn-prev" data-go="0" disabled part="prev">Prev</button>
32
+ <button class="btn btn-secondary btn-compact fa-plus-large btn-prev" data-go="0" disabled part="prev">
33
+ Prev
34
+ </button>
34
35
  <button class="btn btn-secondary btn-compact fa-plus-large btn-next" data-go="2" part="next">Next</button>
35
36
  </div>
36
37
 
37
- <div class="carousel__controls" part="controls">
38
-
39
- </div>
38
+ <div class="carousel__controls" part="controls"></div>
40
39
 
41
40
  <div class="carousel__progress" part="progress">
42
- <input type="range" min="0" max="100" value="1" step="1">
41
+ <input type="range" min="0" max="100" value="1" step="1" />
43
42
  </div>
44
-
45
- </div>
43
+ </div>
46
44
  `;
47
45
  this.shadowRoot.appendChild(template.content.cloneNode(true));
48
46
  }
@@ -0,0 +1,85 @@
1
+ // Data layer Web component created
2
+ declare global {
3
+ interface Window {
4
+ dataLayer: Array<object>;
5
+ }
6
+ }
7
+ window.dataLayer = window.dataLayer || [];
8
+ window.dataLayer.push({
9
+ event: 'customElementRegistered',
10
+ element: 'Dark mode button',
11
+ });
12
+
13
+ class iamDarkMode extends HTMLElement {
14
+ constructor() {
15
+ super();
16
+ this.attachShadow({ mode: 'open' });
17
+
18
+ const assetLocation = document.body.hasAttribute('data-assets-location')
19
+ ? document.body.getAttribute('data-assets-location')
20
+ : '/assets';
21
+ const loadCSS = `@import "${assetLocation}/css/components/darkmode.component.css";`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>${loadCSS}
26
+ </style>
27
+ <slot></slot>
28
+ `;
29
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
30
+ }
31
+
32
+ connectedCallback(): void {
33
+ const label = this.querySelector('label');
34
+
35
+ const storedTheme = localStorage.getItem('user-theme');
36
+
37
+ // Work from local storage first then look at the media preferences
38
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
39
+ if (storedTheme == 'dark-theme') {
40
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
41
+ label?.classList.add('dark-theme');
42
+ } else if (storedTheme == 'light-theme') {
43
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
44
+ label?.classList.remove('dark-theme');
45
+ }
46
+
47
+ const hasDarkPreference = window.matchMedia('(prefers-color-scheme: dark)').matches;
48
+ if (hasDarkPreference) {
49
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
50
+ label?.classList.remove('dark-theme');
51
+ }
52
+
53
+ this.addEventListener('click', (event) => {
54
+ console.log(label?.querySelector('input:checked'));
55
+
56
+ if (label?.querySelector('input:checked')) {
57
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
58
+ localStorage.setItem('user-theme', 'dark-theme');
59
+ document.documentElement.className = 'dark-theme';
60
+ label?.classList.add('dark-theme');
61
+ } else {
62
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
63
+ localStorage.setItem('user-theme', 'light-theme');
64
+ document.documentElement.className = 'light-theme';
65
+ label?.classList.remove('dark-theme');
66
+ }
67
+ });
68
+
69
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', ({ matches }) => {
70
+ if (matches) {
71
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
72
+ label?.classList.add('dark-theme');
73
+ }
74
+ });
75
+
76
+ window.matchMedia('(prefers-color-scheme: light)').addEventListener('change', ({ matches }) => {
77
+ if (matches) {
78
+ label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
79
+ label?.classList.remove('dark-theme');
80
+ }
81
+ });
82
+ }
83
+ }
84
+
85
+ export default iamDarkMode;
@@ -6,13 +6,13 @@ class iamMenu extends HTMLElement {
6
6
  const assetLocation = document.body.hasAttribute('data-assets-location')
7
7
  ? document.body.getAttribute('data-assets-location')
8
8
  : '/assets';
9
- const loadCSS = `@import "${assetLocation}/css/components/menu.component.css";`;
9
+ const menuCSS = `@import "${assetLocation}/css/components/menu.component.css";`;
10
10
 
11
11
  const template = document.createElement('template');
12
12
 
13
13
  template.innerHTML = `
14
14
  <style>
15
- ${loadCSS}
15
+ ${menuCSS}
16
16
  </style>
17
17
  <div class="menu--inner" part="inner">
18
18
  <slot></slot>
@@ -1,45 +1,43 @@
1
- import { trackComponent, trackComponentRegistered } from '../_global';
2
- import milestone from '../../modules/milestone';
3
-
4
- trackComponentRegistered('iam-milestone');
5
-
6
- class iamMilestone extends HTMLElement {
7
- constructor() {
8
- super();
9
- this.attachShadow({ mode: 'open' });
10
-
11
- const assetLocation = document.body.hasAttribute('data-assets-location')
12
- ? document.body.getAttribute('data-assets-location')
13
- : '/assets';
14
- const coreCSS = document.body.hasAttribute('data-core-css')
15
- ? document.body.getAttribute('data-core-css')
16
- : `${assetLocation}/css/core.min.css`;
17
-
18
- const template = document.createElement('template');
19
- template.innerHTML = `
20
- <style>
21
- @import "${coreCSS}";
22
- </style>
23
- <div class="milestone-wrap" part="milestone-wrap">
24
- <slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
25
- <slot>
26
- <div class="task-wrap" part="milestone-task-wrap"></div>
27
- </slot>
28
- </div>
29
- `;
30
- this.shadowRoot?.appendChild(template.content.cloneNode(true));
31
- }
32
-
33
- connectedCallback(): void {
34
- const milestoneComponent = this;
35
-
36
- trackComponent(milestoneComponent, 'iam-milestone', [
37
- 'milestone-item-closed',
38
- 'milestone-item-opened',
39
- ]);
40
-
41
- milestone(this);
42
- }
43
- }
44
-
45
- export default iamMilestone;
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+ import milestone from '../../modules/milestone';
3
+
4
+ trackComponentRegistered('iam-milestone');
5
+
6
+ class iamMilestone extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.attachShadow({ mode: 'open' });
10
+
11
+ const assetLocation = document.body.hasAttribute('data-assets-location')
12
+ ? document.body.getAttribute('data-assets-location')
13
+ : '/assets';
14
+ const coreCSS = document.body.hasAttribute('data-core-css')
15
+ ? document.body.getAttribute('data-core-css')
16
+ : `${assetLocation}/css/core.min.css`;
17
+
18
+ const template = document.createElement('template');
19
+ template.innerHTML = `
20
+ <style>
21
+ @import "${coreCSS}";
22
+ </style>
23
+ <div class="milestone-wrap" part="milestone-wrap">
24
+ <slot name="milestone-intro" class="milestone-intro" part="milestone-intro"></slot>
25
+ <slot>
26
+ <div class="task-wrap" part="milestone-task-wrap"></div>
27
+ </slot>
28
+ </div>
29
+ `;
30
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
31
+ }
32
+
33
+ connectedCallback(): void {
34
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
35
+ const milestoneComponent = this;
36
+
37
+ trackComponent(milestoneComponent, 'iam-milestone', ['milestone-item-closed', 'milestone-item-opened']);
38
+
39
+ milestone(this);
40
+ }
41
+ }
42
+
43
+ export default iamMilestone;
@@ -1,41 +1,39 @@
1
- import { trackComponent, trackComponentRegistered } from '../_global';
2
- import milestoneGroup from '../../modules/milestone-group';
3
-
4
- trackComponentRegistered('iam-milestone-group');
5
-
6
- class iamMilestoneGroup extends HTMLElement {
7
- constructor() {
8
- super();
9
- const assetLocation = document.body.hasAttribute('data-assets-location')
10
- ? document.body.getAttribute('data-assets-location')
11
- : '/assets';
12
- const coreCSS = document.body.hasAttribute('data-core-css')
13
- ? document.body.getAttribute('data-core-css')
14
- : `${assetLocation}/css/core.min.css`;
15
-
16
- const template = document.createElement('template');
17
- template.innerHTML = `
18
- <style>
19
- @import "${coreCSS}";
20
- </style>
21
- <div class="milestone-group" part="milestone-group">
22
- <slot>
23
- </slot>
24
- </div>
25
- `;
26
- this.shadowRoot?.appendChild(template.content.cloneNode(true));
27
- }
28
-
29
- connectedCallback(): void {
30
- const milestoneGroupComponent = this;
31
-
32
- trackComponent(milestoneGroupComponent, 'iam-milestone-group', [
33
- 'hide-future-items',
34
- 'show-future-items'
35
- ]);
36
-
37
- milestoneGroup(this);
38
- }
39
- }
40
-
41
- export default iamMilestoneGroup;
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+ import milestoneGroup from '../../modules/milestone-group';
3
+
4
+ trackComponentRegistered('iam-milestone-group');
5
+
6
+ class iamMilestoneGroup extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ const assetLocation = document.body.hasAttribute('data-assets-location')
10
+ ? document.body.getAttribute('data-assets-location')
11
+ : '/assets';
12
+ const coreCSS = document.body.hasAttribute('data-core-css')
13
+ ? document.body.getAttribute('data-core-css')
14
+ : `${assetLocation}/css/core.min.css`;
15
+
16
+ const template = document.createElement('template');
17
+ template.innerHTML = `
18
+ <style>
19
+ @import "${coreCSS}";
20
+ </style>
21
+ <div class="milestone-group" part="milestone-group">
22
+ <slot>
23
+ </slot>
24
+ </div>
25
+ `;
26
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
27
+ }
28
+
29
+ connectedCallback(): void {
30
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
31
+ const milestoneGroupComponent = this;
32
+
33
+ trackComponent(milestoneGroupComponent, 'iam-milestone-group', ['hide-future-items', 'show-future-items']);
34
+
35
+ milestoneGroup(this);
36
+ }
37
+ }
38
+
39
+ export default iamMilestoneGroup;
@@ -148,29 +148,24 @@ class iamMultiselect extends HTMLElement {
148
148
  });
149
149
 
150
150
  search.addEventListener('blur', (event) => {
151
-
152
151
  setTimeout(function () {
153
152
  const activeElement = document.activeElement;
154
-
155
- if(activeElement.getAttribute('type') != 'checkbox'){
156
-
157
- if(multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`)){
158
153
 
154
+ if (activeElement.getAttribute('type') != 'checkbox') {
155
+ if (multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`)) {
159
156
  multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`).checked = true;
160
157
  setItem(multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`));
161
158
  }
162
- search.value = "";
159
+ search.value = '';
163
160
 
164
161
  Array.from(multiselect.querySelectorAll(`label input[type="checkbox"]`)).forEach((checkbox) => {
165
162
  setItem(checkbox);
166
163
  });
167
164
  }
168
-
169
165
  }, 200);
170
166
 
171
167
  clearTimeout(hoverTimeout);
172
168
  hoverTimeout = setTimeout(function () {
173
-
174
169
  multiselect.classList.remove('hover');
175
170
  }, 1000);
176
171
  });
@@ -182,7 +177,7 @@ class iamMultiselect extends HTMLElement {
182
177
 
183
178
  setItem(checkbox);
184
179
 
185
- search.value = "";
180
+ search.value = '';
186
181
  search.focus();
187
182
  clearTimeout(hoverTimeout);
188
183
  multiselect.classList.add('hover');
@@ -222,10 +217,8 @@ class iamMultiselect extends HTMLElement {
222
217
 
223
218
  if (prevCheckbox) prevCheckbox.focus();
224
219
  else search.focus();
225
- }
226
- else if (activeElement == multiselect){
227
-
228
- const options = Array.from(multiselect.querySelectorAll('label[slot="checked"]')).sort(function(a, b) {
220
+ } else if (activeElement == multiselect) {
221
+ const options = Array.from(multiselect.querySelectorAll('label[slot="checked"]')).sort(function (a, b) {
229
222
  return +a.dataset.order - +b.dataset.order;
230
223
  });
231
224
 
@@ -294,7 +287,6 @@ class iamMultiselect extends HTMLElement {
294
287
  break;
295
288
  case 'Backspace':
296
289
  if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {
297
-
298
290
  activeElement.checked = false;
299
291
  setItem(activeElement);
300
292
  search.focus();
@@ -315,7 +307,6 @@ class iamMultiselect extends HTMLElement {
315
307
  return lastTag;
316
308
  }
317
309
 
318
-
319
310
  search.addEventListener('keydown', function (event) {
320
311
  switch (
321
312
  event.key // change to event.key to key to use the above variable
@@ -348,30 +348,23 @@ class iamNav extends HTMLElement {
348
348
  });
349
349
  }
350
350
 
351
- if(this.classList.contains('nav--sticky')){
352
-
353
- console.log('hey');
354
-
351
+ if (this.classList.contains('nav--sticky')) {
355
352
  let oldScrollY = window.scrollY;
356
- window.onscroll = function(e) {
357
- if(oldScrollY < window.scrollY){
358
- document.body.setAttribute('data-direction', "down");
353
+ window.onscroll = function (e): void {
354
+ if (oldScrollY < window.scrollY) {
355
+ document.body.setAttribute('data-direction', 'down');
359
356
  } else {
360
- document.body.setAttribute('data-direction', "up");
357
+ document.body.setAttribute('data-direction', 'up');
361
358
  }
362
359
 
363
- if(window.scrollY > 100){
360
+ if (window.scrollY > 100) {
364
361
  document.body.classList.add('past100');
365
- }
366
- else {
367
-
362
+ } else {
368
363
  document.body.classList.remove('past100');
369
364
  }
370
365
  oldScrollY = window.scrollY;
371
- }
372
-
366
+ };
373
367
  }
374
-
375
368
  }
376
369
  }
377
370
 
@@ -3,7 +3,6 @@ import { trackComponent, trackComponentRegistered } from '../_global';
3
3
 
4
4
  trackComponentRegistered('iam-notification');
5
5
 
6
-
7
6
  class iamNotification extends HTMLElement {
8
7
  constructor() {
9
8
  super();
@@ -110,7 +109,6 @@ class iamNotification extends HTMLElement {
110
109
  });
111
110
 
112
111
  this.dispatchEvent(customEvent);
113
-
114
112
  },
115
113
  false
116
114
  );
@@ -118,9 +116,7 @@ class iamNotification extends HTMLElement {
118
116
 
119
117
  setupNotification(this);
120
118
 
121
- trackComponent(this, 'iam-notification', [
122
- 'dismiss'
123
- ]);
119
+ trackComponent(this, 'iam-notification', ['dismiss']);
124
120
  }
125
121
  }
126
122
 
@@ -35,9 +35,7 @@ class iamSplitButton extends HTMLElement {
35
35
  </button>
36
36
 
37
37
  <iam-menu id="actions" style="position-anchor: --anchor-el;" popover>
38
- <slot name="menu-item">
39
-
40
- </slot>
38
+ <slot name="menu-item"></slot>
41
39
  </iam-menu>
42
40
 
43
41
  </div>
@@ -0,0 +1,91 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+
3
+ trackComponentRegistered('iam-word-count');
4
+
5
+ class iamCard extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.attachShadow({ mode: 'open' });
9
+
10
+ const assetLocation = document.body.hasAttribute('data-assets-location')
11
+ ? document.body.getAttribute('data-assets-location')
12
+ : '/assets';
13
+ const loadCSS = `@import "${assetLocation}/css/components/word-count.component.css";`;
14
+
15
+ const template = document.createElement('template');
16
+ template.innerHTML = `
17
+ <style>
18
+
19
+ ${loadCSS}
20
+ </style>
21
+ <slot></slot>
22
+ `;
23
+
24
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
25
+ }
26
+
27
+ connectedCallback(): void {
28
+ const input = this.querySelector('input,textarea,select');
29
+ let span = this.querySelector('[data-count]');
30
+
31
+ if (!span) {
32
+ span = document.createElement('span');
33
+ this.append(span);
34
+ }
35
+
36
+ console.log(input.value.split(' ').length);
37
+
38
+ if (this.hasAttribute('data-character')) span.setAttribute('data-count', input.value ? input.value.length : '0');
39
+ else span.setAttribute('data-count', input.value ? input.value.split(' ').length : '0');
40
+
41
+ const maxlength = this.getAttribute('data-max');
42
+ this.style.setProperty('--maxlength', maxlength);
43
+ span.setAttribute('data-max', this.getAttribute('data-max'));
44
+
45
+ input.addEventListener('input', (event) => {
46
+ if (this.hasAttribute('data-max') && span && this.hasAttribute('data-character')) {
47
+ input?.setAttribute('maxlength', this.getAttribute('data-max'));
48
+ span.setAttribute('data-count', input?.value.length);
49
+ } else if (this.hasAttribute('data-max') && span) {
50
+ if (input?.value.split(' ').length >= this.getAttribute('data-max')) {
51
+ event?.preventDefault();
52
+ input?.setAttribute('maxlength', input?.value.length);
53
+ } else {
54
+ input?.removeAttribute('maxlength');
55
+ }
56
+
57
+ span.setAttribute('data-count', input?.value.split(' ').length);
58
+ span.setAttribute('data-max', this.getAttribute('data-max'));
59
+ }
60
+ });
61
+
62
+ /*
63
+
64
+ // maxlength counter init
65
+ Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
66
+ const wrapper = input.parentElement;
67
+ setMaxlengthVars(input, wrapper);
68
+ });
69
+
70
+
71
+
72
+ const wrapper = input.parentElement;
73
+ const maxlength = input.getAttribute('maxlength');
74
+
75
+ wrapper.style.setProperty('--maxlength', maxlength);
76
+
77
+ let span = input.nextElementSibling;
78
+
79
+ if (!span || (span && span.classList.contains('invalid-feedback'))) {
80
+ span = document.createElement('span');
81
+ wrapper.insertBefore(span, input.nextSibling);
82
+ }
83
+ v
84
+ span.setAttribute('data-count', input.value.length);
85
+
86
+
87
+ */
88
+ }
89
+ }
90
+
91
+ export default iamCard;
@@ -26,6 +26,7 @@ const components = [
26
26
  'marketing',
27
27
  'barchart',
28
28
  'splitbutton',
29
+ 'word-count',
29
30
  ];
30
31
 
31
32
  const prefix = 'iam';