@iamproperty/components 7.5.0 → 7.5.1--beta1

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 (226) 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/address-lookup.component.css +1 -1
  4. package/assets/css/components/address-lookup.component.css.map +1 -1
  5. package/assets/css/components/applied-filters.css +1 -1
  6. package/assets/css/components/applied-filters.css.map +1 -1
  7. package/assets/css/components/barchart.component.css +1 -1
  8. package/assets/css/components/barchart.component.css.map +1 -1
  9. package/assets/css/components/calendar.component.css +1 -1
  10. package/assets/css/components/calendar.component.css.map +1 -1
  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 -1
  18. package/assets/css/components/content.component.css.map +1 -1
  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 +1 -1
  22. package/assets/css/components/fileupload.css.map +1 -1
  23. package/assets/css/components/header.css +1 -1
  24. package/assets/css/components/header.css.map +1 -1
  25. package/assets/css/components/inline-edit.css +1 -1
  26. package/assets/css/components/inline-edit.css.map +1 -1
  27. package/assets/css/components/inline-edit.preload.css +1 -1
  28. package/assets/css/components/inline-edit.preload.css.map +1 -1
  29. package/assets/css/components/multiselect.css +1 -1
  30. package/assets/css/components/multiselect.css.map +1 -1
  31. package/assets/css/components/multiselect.preload.css +1 -1
  32. package/assets/css/components/multiselect.preload.css.map +1 -1
  33. package/assets/css/components/nav.component.css +1 -1
  34. package/assets/css/components/nav.component.css.map +1 -1
  35. package/assets/css/components/notification.css +1 -1
  36. package/assets/css/components/notification.css.map +1 -1
  37. package/assets/css/components/pagination.css +1 -1
  38. package/assets/css/components/pagination.css.map +1 -1
  39. package/assets/css/components/rank.component.css +1 -1
  40. package/assets/css/components/rank.component.css.map +1 -1
  41. package/assets/css/components/rankings.component.css +1 -1
  42. package/assets/css/components/rankings.component.css.map +1 -1
  43. package/assets/css/components/rankings.global.css +1 -1
  44. package/assets/css/components/rankings.global.css.map +1 -1
  45. package/assets/css/components/slider.css +1 -1
  46. package/assets/css/components/slider.css.map +1 -1
  47. package/assets/css/components/split-button.component.css +1 -1
  48. package/assets/css/components/split-button.component.css.map +1 -1
  49. package/assets/css/components/table-basic.global.css +1 -1
  50. package/assets/css/components/table-basic.global.css.map +1 -1
  51. package/assets/css/components/table.global.css +1 -1
  52. package/assets/css/components/table.global.css.map +1 -1
  53. package/assets/css/components/tabs.component.css +1 -1
  54. package/assets/css/components/tabs.component.css.map +1 -1
  55. package/assets/css/components/tabs.config.css +1 -1
  56. package/assets/css/components/tabs.config.css.map +1 -1
  57. package/assets/css/core.min.css +1 -1
  58. package/assets/css/core.min.css.map +1 -1
  59. package/assets/css/mobile-core.min.css +1 -1
  60. package/assets/css/mobile-core.min.css.map +1 -1
  61. package/assets/css/mobile.min.css +1 -1
  62. package/assets/css/mobile.min.css.map +1 -1
  63. package/assets/css/style.min.css +1 -1
  64. package/assets/css/style.min.css.map +1 -1
  65. package/assets/js/components/accordion/accordion.component.js +0 -7
  66. package/assets/js/components/accordion/accordion.component.min.js +3 -4
  67. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  68. package/assets/js/components/actionbar/actionbar.component.js +8 -9
  69. package/assets/js/components/actionbar/actionbar.component.min.js +12 -5
  70. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  71. package/assets/js/components/address-lookup/address-lookup.component.js +0 -3
  72. package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
  73. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  74. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  75. package/assets/js/components/applied-filters/applied-filters.component.js +2 -5
  76. package/assets/js/components/applied-filters/applied-filters.component.min.js +7 -7
  77. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  78. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  79. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  80. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  81. package/assets/js/components/card/card.component.min.js +2 -2
  82. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  83. package/assets/js/components/collapsible-side/collapsible-side.component.js +0 -5
  84. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -6
  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/darkmode/darkmode.component.min.js +1 -1
  88. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  89. package/assets/js/components/fileupload/fileupload.component.js +1 -5
  90. package/assets/js/components/fileupload/fileupload.component.min.js +5 -6
  91. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  92. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  93. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  94. package/assets/js/components/header/header.component.js +0 -5
  95. package/assets/js/components/header/header.component.min.js +4 -6
  96. package/assets/js/components/header/header.component.min.js.map +1 -1
  97. package/assets/js/components/inline-edit/inline-edit.component.js +61 -60
  98. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  99. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  100. package/assets/js/components/marketing/marketing.component.js +0 -4
  101. package/assets/js/components/marketing/marketing.component.min.js +3 -4
  102. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  103. package/assets/js/components/menu/menu.component.min.js +1 -1
  104. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  105. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  106. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  107. package/assets/js/components/multiselect/multiselect.component.js +88 -11
  108. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  109. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  110. package/assets/js/components/nav/nav.component.js +2 -4
  111. package/assets/js/components/nav/nav.component.min.js +8 -7
  112. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  113. package/assets/js/components/notification/notification.component.js +1 -4
  114. package/assets/js/components/notification/notification.component.min.js +6 -6
  115. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  116. package/assets/js/components/pagination/pagination.component.js +3 -8
  117. package/assets/js/components/pagination/pagination.component.min.js +7 -8
  118. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  119. package/assets/js/components/password-indicator/password-indicator.component.js +19 -0
  120. package/assets/js/components/password-indicator/password-indicator.component.min.js +7 -0
  121. package/assets/js/components/password-indicator/password-indicator.component.min.js.map +1 -0
  122. package/assets/js/components/rank/rank.component.js +2 -2
  123. package/assets/js/components/rank/rank.component.min.js +4 -5
  124. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  125. package/assets/js/components/rankings/rankings.component.js +3 -0
  126. package/assets/js/components/rankings/rankings.component.min.js +364 -5
  127. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  128. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  129. package/assets/js/components/search/search.component.js +0 -4
  130. package/assets/js/components/search/search.component.min.js +5 -6
  131. package/assets/js/components/search/search.component.min.js.map +1 -1
  132. package/assets/js/components/slider/slider.component.js +0 -4
  133. package/assets/js/components/slider/slider.component.min.js +4 -5
  134. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  135. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  136. package/assets/js/components/table/table.component.min.js +4 -4
  137. package/assets/js/components/table/table.component.min.js.map +1 -1
  138. package/assets/js/components/table-ajax/table-ajax.component.js +11 -9
  139. package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
  140. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  141. package/assets/js/components/table-basic/table-basic.component.min.js +4 -4
  142. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  143. package/assets/js/components/table-no-submit/table-no-submit.component.js +15 -30
  144. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
  145. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  146. package/assets/js/components/table-submit/table-submit.component.min.js +4 -4
  147. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  148. package/assets/js/components/tabs/tabs.component.js +1 -4
  149. package/assets/js/components/tabs/tabs.component.min.js +5 -5
  150. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  151. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  152. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  153. package/assets/js/modules/inputs.js +0 -8
  154. package/assets/js/modules/password-indicator.js +21 -0
  155. package/assets/js/modules/table.js +28 -2
  156. package/assets/js/scripts.bundle.js +3 -3
  157. package/assets/js/scripts.bundle.js.map +1 -1
  158. package/assets/js/scripts.bundle.min.js +2 -2
  159. package/assets/js/scripts.bundle.min.js.map +1 -1
  160. package/assets/js/scripts.js +1 -0
  161. package/assets/sass/_components.scss +2 -1
  162. package/assets/sass/_elements.scss +5 -0
  163. package/assets/sass/_functions/utility-mixins.scss +21 -0
  164. package/assets/sass/_functions/variables.scss +14 -0
  165. package/assets/sass/components/actionbar.component.scss +16 -1
  166. package/assets/sass/components/applied-filters.scss +1 -0
  167. package/assets/sass/components/collapsible-side.scss +2 -0
  168. package/assets/sass/components/fileupload.scss +18 -0
  169. package/assets/sass/components/header.scss +9 -0
  170. package/assets/sass/components/inline-edit.preload.scss +68 -2
  171. package/assets/sass/components/inline-edit.scss +7 -0
  172. package/assets/sass/components/multiselect.preload.scss +10 -0
  173. package/assets/sass/components/multiselect.scss +62 -4
  174. package/assets/sass/components/nav.component.scss +15 -0
  175. package/assets/sass/components/notification.scss +6 -4
  176. package/assets/sass/components/pagination.scss +6 -0
  177. package/assets/sass/components/slider.scss +1 -0
  178. package/assets/sass/components/table-basic.global.scss +1 -1
  179. package/assets/sass/components/table.global.scss +9 -4
  180. package/assets/sass/components/tabs.component.scss +4 -0
  181. package/assets/sass/components/tabs.config.scss +231 -4
  182. package/assets/sass/elements/admin-panel.scss +37 -9
  183. package/assets/sass/elements/buttons--global.scss +3 -3
  184. package/assets/sass/elements/forms.scss +7 -0
  185. package/assets/sass/elements/hr.scss +50 -0
  186. package/assets/sass/elements/icons.scss +5 -0
  187. package/assets/sass/elements/links.scss +2 -2
  188. package/assets/sass/elements/modal.scss +1 -5
  189. package/assets/sass/elements/type.scss +6 -9
  190. package/assets/sass/foundations/reboot.scss +6 -17
  191. package/assets/sass/foundations/root.scss +2 -0
  192. package/assets/sass/templates/form.scss +5 -0
  193. package/assets/ts/components/accordion/accordion.component.ts +0 -8
  194. package/assets/ts/components/actionbar/actionbar.component.ts +19 -10
  195. package/assets/ts/components/address-lookup/address-lookup.component.ts +1 -3
  196. package/assets/ts/components/applied-filters/applied-filters.component.ts +2 -5
  197. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +1 -5
  198. package/assets/ts/components/fileupload/fileupload.component.ts +2 -5
  199. package/assets/ts/components/header/header.component.ts +1 -5
  200. package/assets/ts/components/inline-edit/inline-edit.component.ts +74 -75
  201. package/assets/ts/components/marketing/marketing.component.ts +0 -4
  202. package/assets/ts/components/multiselect/multiselect.component.ts +97 -12
  203. package/assets/ts/components/nav/nav.component.ts +2 -4
  204. package/assets/ts/components/notification/notification.component.ts +2 -4
  205. package/assets/ts/components/pagination/pagination.component.ts +6 -8
  206. package/assets/ts/components/password-indicator/password-indicator.component.ts +24 -0
  207. package/assets/ts/components/rank/rank.component.ts +2 -2
  208. package/assets/ts/components/rankings/rankings.component.ts +4 -0
  209. package/assets/ts/components/search/search.component.ts +0 -4
  210. package/assets/ts/components/slider/slider.component.ts +1 -4
  211. package/assets/ts/components/table-ajax/table-ajax.component.ts +5 -5
  212. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +10 -21
  213. package/assets/ts/components/tabs/tabs.component.ts +2 -4
  214. package/assets/ts/modules/inputs.ts +1 -7
  215. package/assets/ts/modules/password-indicator.ts +29 -0
  216. package/assets/ts/modules/table.ts +41 -3
  217. package/assets/ts/scripts.ts +2 -0
  218. package/dist/components.es.js +47 -49
  219. package/dist/components.umd.js +557 -201
  220. package/package.json +3 -3
  221. package/src/components/PasswordIndicator/PasswordIndicator.vue +23 -0
  222. package/assets/css/components/tabs.css +0 -1
  223. package/assets/css/components/tabs.css.map +0 -1
  224. package/assets/sass/components/tabs.scss +0 -254
  225. package/assets/ts/components/accordion/README.md +0 -31
  226. package/assets/ts/components/fileupload/README.md +0 -28
@@ -13,15 +13,12 @@ class iamInlineEdit extends HTMLElement {
13
13
  const assetLocation = document.body.hasAttribute('data-assets-location')
14
14
  ? document.body.getAttribute('data-assets-location')
15
15
  : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css')
17
- ? document.body.getAttribute('data-core-css')
18
- : `${assetLocation}/css/core.min.css`;
19
16
  const loadCSS = `@import "${assetLocation}/css/components/inline-edit.css";`;
20
17
 
21
18
  const template = document.createElement('template');
22
19
  template.innerHTML = `
23
20
  <style class="styles">
24
- @import "${coreCSS}";
21
+
25
22
  ${loadCSS}
26
23
  </style>
27
24
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
@@ -53,13 +50,16 @@ class iamInlineEdit extends HTMLElement {
53
50
  const statusNotSaved = this.shadowRoot.querySelector('#notsaved');
54
51
 
55
52
  // Save the original value for later
56
- let originalValue = input.value;
53
+ let originalValue = input ? input.value : '';
57
54
 
58
55
  // cancel
59
56
  cancelButton.addEventListener('click', () => {
60
- input.value = originalValue;
57
+ if(input){
58
+
59
+ input.value = originalValue;
60
+ input.blur();
61
+ }
61
62
 
62
- input.blur();
63
63
  inlineEdit.blur();
64
64
 
65
65
  inlineEdit.classList.remove('was-validated');
@@ -86,39 +86,83 @@ class iamInlineEdit extends HTMLElement {
86
86
  detail: { name: input.getAttribute('name'), value: input.value },
87
87
  });
88
88
  inlineEdit.dispatchEvent(saveEvent);
89
-
90
- //inlineEdit.setAttribute('data-saving','true');
91
- input.disabled = true;
92
-
93
- input.blur();
94
89
  inlineEdit.blur();
95
-
96
90
  statusSaving.classList.remove('d-none');
97
91
 
98
- if (preview) {
99
- console.log(input.value);
92
+ if(input){
93
+ input.disabled = true;
94
+
95
+ input.blur();
100
96
 
101
- preview.innerHTML = input.value;
97
+ if (preview) {
98
+ preview.innerHTML = input.value;
99
+ }
102
100
  }
103
101
  });
104
102
 
105
- // Save
106
- if (input.tagName === 'INPUT') {
107
- input.addEventListener('keydown', (event) => {
108
- switch (
109
- event.key // change to event.key to key to use the above variable
110
- ) {
111
- case 'Enter':
112
- event.stopPropagation();
113
- event.preventDefault();
114
-
115
- saveButton.click();
116
-
117
- break;
103
+ if(input){
104
+ // Save
105
+ if (input.tagName === 'INPUT') {
106
+ input.addEventListener('keydown', (event) => {
107
+ switch (
108
+ event.key // change to event.key to key to use the above variable
109
+ ) {
110
+ case 'Enter':
111
+ event.stopPropagation();
112
+ event.preventDefault();
113
+
114
+ saveButton.click();
115
+
116
+ break;
117
+ }
118
+ });
119
+ }
120
+
121
+ // enter key saves
122
+ if (input.tagName === 'SELECT') {
123
+ input.addEventListener('change', () => {
124
+ originalValue = input.value;
125
+
126
+ const saveEvent = new CustomEvent('inline-edit-save', {
127
+ detail: { name: input.getAttribute('name'), value: input.value },
128
+ });
129
+ inlineEdit.dispatchEvent(saveEvent);
130
+
131
+ inlineEdit.setAttribute('data-saving', 'true');
132
+ input.disabled = true;
133
+
134
+ input.blur();
135
+ });
136
+ }
137
+
138
+ if (input.tagName != 'SELECT') {
139
+ input.addEventListener('focus', () => {
140
+ input.select();
141
+ });
142
+ }
143
+
144
+ //blur it should autosave
145
+ input.addEventListener('blur', () => {
146
+ if (input.value != originalValue) {
147
+ if (inlineEdit.hasAttribute('data-autosave')) {
148
+ originalValue = input.value;
149
+
150
+ const saveEvent = new CustomEvent('inline-edit-autosave', {
151
+ detail: { name: input.getAttribute('name'), value: input.value },
152
+ });
153
+ inlineEdit.dispatchEvent(saveEvent);
154
+
155
+ statusSaving.classList.remove('d-none');
156
+
157
+ if (preview) {
158
+ preview.innerHTML = input.value;
159
+ }
160
+ } else if (!inlineEdit.querySelector('.inline-feedback')) {
161
+ statusNotSaved.classList.remove('d-none');
162
+ }
118
163
  }
119
164
  });
120
165
  }
121
-
122
166
  // Saved
123
167
  inlineEdit.addEventListener('inline-edit-saved', () => {
124
168
  setTimeout(() => {
@@ -142,51 +186,6 @@ class iamInlineEdit extends HTMLElement {
142
186
  }, 1000);
143
187
  });
144
188
 
145
- // enter key saves
146
- if (input.tagName === 'SELECT') {
147
- input.addEventListener('change', () => {
148
- originalValue = input.value;
149
-
150
- const saveEvent = new CustomEvent('inline-edit-save', {
151
- detail: { name: input.getAttribute('name'), value: input.value },
152
- });
153
- inlineEdit.dispatchEvent(saveEvent);
154
-
155
- inlineEdit.setAttribute('data-saving', 'true');
156
- input.disabled = true;
157
-
158
- input.blur();
159
- });
160
- }
161
-
162
- if (input.tagName != 'SELECT') {
163
- input.addEventListener('focus', () => {
164
- input.select();
165
- });
166
- }
167
-
168
- //blur it should autosave
169
- input.addEventListener('blur', () => {
170
- if (input.value != originalValue) {
171
- if (inlineEdit.hasAttribute('data-autosave')) {
172
- originalValue = input.value;
173
-
174
- const saveEvent = new CustomEvent('inline-edit-autosave', {
175
- detail: { name: input.getAttribute('name'), value: input.value },
176
- });
177
- inlineEdit.dispatchEvent(saveEvent);
178
-
179
- statusSaving.classList.remove('d-none');
180
-
181
- if (preview) {
182
- preview.innerHTML = input.value;
183
- }
184
- } else if (!inlineEdit.querySelector('.inline-feedback')) {
185
- statusNotSaved.classList.remove('d-none');
186
- }
187
- }
188
- });
189
-
190
189
  // checkboxes
191
190
  inlineEdit.addEventListener('change', (event) => {
192
191
  if (event && event.target instanceof HTMLElement && event.target.closest('input[type="checkbox"]')) {
@@ -13,15 +13,11 @@ class iamMarketing extends HTMLElement {
13
13
  const assetLocation = document.body.hasAttribute('data-assets-location')
14
14
  ? document.body.getAttribute('data-assets-location')
15
15
  : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css')
17
- ? document.body.getAttribute('data-core-css')
18
- : `${assetLocation}/css/core.min.css`;
19
16
  const loadCSS = `@import "${assetLocation}/css/components/marketing.component.css";`;
20
17
 
21
18
  const template = document.createElement('template');
22
19
  template.innerHTML = `
23
20
  <style>
24
- @import "${coreCSS}";
25
21
  ${loadCSS}
26
22
 
27
23
  </style>
@@ -1,3 +1,5 @@
1
+ import Cookies from 'js-cookie';
2
+
1
3
  // Data layer Web component created
2
4
  window.dataLayer = window.dataLayer || [];
3
5
  window.dataLayer.push({
@@ -13,15 +15,13 @@ class iamMultiselect extends HTMLElement {
13
15
  const assetLocation = document.body.hasAttribute('data-assets-location')
14
16
  ? document.body.getAttribute('data-assets-location')
15
17
  : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css')
17
- ? document.body.getAttribute('data-core-css')
18
- : `${assetLocation}/css/core.min.css`;
18
+
19
19
  const loadCSS = `@import "${assetLocation}/css/components/multiselect.css";`;
20
20
 
21
21
  const template = document.createElement('template');
22
22
  template.innerHTML = `
23
23
  <style>
24
- @import "${coreCSS}";
24
+
25
25
  ${loadCSS}
26
26
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
27
27
  </style>
@@ -52,7 +52,7 @@ class iamMultiselect extends HTMLElement {
52
52
  const button = multiselect.shadowRoot.querySelector('#clear');
53
53
  let order = 0;
54
54
  const innerLabel = multiselect.shadowRoot.querySelector('label .inner-label');
55
-
55
+ const ajaxURL = this.getAttribute('data-url');
56
56
  innerLabel.innerHTML = multiselect.getAttribute('data-label');
57
57
 
58
58
  if (multiselect.hasAttribute('placeholder')) {
@@ -99,6 +99,10 @@ class iamMultiselect extends HTMLElement {
99
99
  inputToSet.closest('label').setAttribute('slot', 'checked');
100
100
  inputToSet.closest('label').setAttribute('style', `--order:${order};`);
101
101
  inputToSet.closest('label').setAttribute('data-order', order);
102
+
103
+ if(inputToSet.closest('[data-value]')){
104
+ inputToSet.closest('[data-value]').setAttribute('data-value', inputToSet.closest('label').textContent)
105
+ }
102
106
  }
103
107
 
104
108
  // check for errors
@@ -123,7 +127,8 @@ class iamMultiselect extends HTMLElement {
123
127
  });
124
128
 
125
129
  // Filter list
126
- search.addEventListener('input', () => {
130
+ const filterList = () => {
131
+
127
132
  Array.from(multiselect.querySelectorAll(`label:not([slot="checked"])`)).forEach((label) => {
128
133
  const checkbox = label.querySelector('input');
129
134
  const searchValue = checkbox.value;
@@ -138,6 +143,19 @@ class iamMultiselect extends HTMLElement {
138
143
  label.setAttribute('slot', 'notmatched');
139
144
  }
140
145
  });
146
+ }
147
+
148
+ search.addEventListener('input', () => {
149
+
150
+ if (multiselect.hasAttribute('data-url')) {
151
+
152
+ if (search.value.length == 3) {
153
+ searchAjax(search.value);
154
+ }
155
+ } else {
156
+
157
+ filterList();
158
+ }
141
159
  });
142
160
 
143
161
  // Add a delayed hover effect for non hover devices
@@ -154,6 +172,7 @@ class iamMultiselect extends HTMLElement {
154
172
  if (activeElement.getAttribute('type') != 'checkbox') {
155
173
  if (multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`)) {
156
174
  multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`).checked = true;
175
+
157
176
  setItem(multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`));
158
177
  }
159
178
  search.value = '';
@@ -162,12 +181,19 @@ class iamMultiselect extends HTMLElement {
162
181
  setItem(checkbox);
163
182
  });
164
183
  }
184
+
185
+ if (multiselect.hasAttribute('data-url')) {
186
+ Array.from(multiselect.querySelectorAll(`label:has(input[type="checkbox"]:not(:checked))`)).forEach((checkbox) => {
187
+
188
+ checkbox.remove();
189
+ });
190
+ }
165
191
  }, 200);
166
192
 
167
193
  clearTimeout(hoverTimeout);
168
194
  hoverTimeout = setTimeout(function () {
169
195
  multiselect.classList.remove('hover');
170
- }, 1000);
196
+ }, 500);
171
197
  });
172
198
 
173
199
  // Set items
@@ -175,15 +201,30 @@ class iamMultiselect extends HTMLElement {
175
201
  if (event && event.target instanceof HTMLElement && event.target.closest('input[type="checkbox"]')) {
176
202
  const checkbox = event.target.closest('input[type="checkbox"]');
177
203
 
204
+ if(multiselect.hasAttribute('data-single')){
205
+ Array.from(multiselect.querySelectorAll(`label[slot="checked"] input`)).forEach((inputToCancel) => {
206
+ inputToCancel.checked = false;
207
+ inputToCancel.closest('label').removeAttribute('slot');
208
+ inputToCancel.closest('label').removeAttribute('style');
209
+ inputToCancel.closest('label').removeAttribute('data-order');
210
+ });
211
+ }
212
+
178
213
  setItem(checkbox);
179
214
 
180
215
  search.value = '';
181
- search.focus();
182
- clearTimeout(hoverTimeout);
183
- multiselect.classList.add('hover');
184
- hoverTimeout = setTimeout(function () {
216
+ if(!multiselect.hasAttribute('data-single')){
217
+ search.focus();
218
+ clearTimeout(hoverTimeout);
219
+ multiselect.classList.add('hover');
220
+ hoverTimeout = setTimeout(function () {
221
+ multiselect.classList.remove('hover');
222
+ }, 5000);
223
+ }
224
+ else{
225
+
185
226
  multiselect.classList.remove('hover');
186
- }, 5000);
227
+ }
187
228
  }
188
229
  });
189
230
 
@@ -344,6 +385,50 @@ class iamMultiselect extends HTMLElement {
344
385
  multiselect.addEventListener('mouseup', () => {
345
386
  wrapper.removeAttribute('data-mousedown');
346
387
  });
388
+
389
+ const searchAjax = async (searchterm): any => {
390
+ const searchAjaxURL = `${ajaxURL}${encodeURI(searchterm)}`;
391
+
392
+ // Setup controller vars if not already set
393
+ if (!window.controller) window.controller = [];
394
+
395
+ // Abort if controller already present for this url
396
+ if (window.controller[searchAjaxURL]) window.controller[searchAjaxURL].abort();
397
+
398
+ // Create a new controller so it can be aborted if new fetch made
399
+ window.controller[searchAjaxURL] = new AbortController();
400
+ const { signal } = controller[searchAjaxURL];
401
+
402
+ try {
403
+ await fetch(searchAjaxURL, {
404
+ signal: signal,
405
+ method: 'get',
406
+ credentials: 'same-origin',
407
+ headers: new Headers({
408
+ 'Content-Type': 'application/json',
409
+ Accept: 'application/json',
410
+ 'X-Requested-With': 'XMLHttpRequest',
411
+ 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
412
+ }),
413
+ })
414
+ .then((response) => response.json())
415
+ .then((response) => {
416
+
417
+ let items = '';
418
+
419
+ for (let i = 0; i < response['data'].length; i++) {
420
+ items += `<label class="tag"><input type="checkbox" name="${multiselect.hasAttribute('data-name') ? multiselect.getAttribute('data-name') : 'tags'}" value="${ response['data'][i].value }"/>${ response['data'][i].title }</label>`;
421
+ }
422
+
423
+ multiselect.insertAdjacentHTML('beforeend', `${items}`);
424
+
425
+ filterList();
426
+ return response;
427
+ });
428
+ } catch (error) {
429
+ console.log(error);
430
+ }
431
+ };
347
432
  }
348
433
  }
349
434
 
@@ -13,16 +13,14 @@ class iamNav extends HTMLElement {
13
13
  const assetLocation = document.body.hasAttribute('data-assets-location')
14
14
  ? document.body.getAttribute('data-assets-location')
15
15
  : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css')
17
- ? document.body.getAttribute('data-core-css')
18
- : `${assetLocation}/css/core.min.css`;
19
16
  const loadCSS = `@import "${assetLocation}/css/components/nav.component.css";`;
20
17
  const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
21
18
 
22
19
  const template = document.createElement('template');
23
20
  template.innerHTML = `
24
21
  <style class="styles">
25
- @import "${coreCSS}";
22
+
23
+
26
24
  ${loadCSS}
27
25
  </style>
28
26
  <style class="doc-styles">
@@ -10,16 +10,13 @@ class iamNotification extends HTMLElement {
10
10
  const assetLocation = document.body.hasAttribute('data-assets-location')
11
11
  ? document.body.getAttribute('data-assets-location')
12
12
  : '/assets';
13
- const coreCSS = document.body.hasAttribute('data-core-css')
14
- ? document.body.getAttribute('data-core-css')
15
- : `${assetLocation}/css/core.min.css`;
13
+
16
14
  const loadCSS = `@import "${assetLocation}/css/components/notification.css";`;
17
15
  const loadExtraCSS = `@import "${assetLocation}/css/components/notification.global.css";`;
18
16
 
19
17
  const template = document.createElement('template');
20
18
  template.innerHTML = `
21
19
  <style>
22
- @import "${coreCSS}";
23
20
  ${loadCSS}
24
21
  ${this.hasAttribute('data-css') ? `${this.getAttribute('data-css')}` : ``}
25
22
  </style>
@@ -29,6 +26,7 @@ class iamNotification extends HTMLElement {
29
26
  <div class="notification__inner"><div class="notification__text"><slot></slot></div><div class="notification__btns"><slot name="btns"></slot></div></div>
30
27
  <div class="notification__dismiss"></div>
31
28
  </div>
29
+
32
30
  `;
33
31
  this.shadowRoot.appendChild(template.content.cloneNode(true));
34
32
 
@@ -5,15 +5,12 @@ class iamPagination extends HTMLElement {
5
5
  const assetLocation = document.body.hasAttribute('data-assets-location')
6
6
  ? document.body.getAttribute('data-assets-location')
7
7
  : '/assets';
8
- const coreCSS = document.body.hasAttribute('data-core-css')
9
- ? document.body.getAttribute('data-core-css')
10
- : `${assetLocation}/css/core.min.css`;
8
+
11
9
  const loadCSS = `@import "${assetLocation}/css/components/pagination.css";`;
12
10
 
13
11
  const template = document.createElement('template');
14
12
  template.innerHTML = `
15
13
  <style>
16
- @import "${coreCSS}";
17
14
  ${loadCSS}
18
15
 
19
16
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
@@ -82,14 +79,15 @@ class iamPagination extends HTMLElement {
82
79
 
83
80
  // Next and previous buttons will simply trigger and on change on the select which in turn will dispatch an event
84
81
  next.addEventListener('click', () => {
85
- select.value = parseInt(select.value) + 1;
86
82
 
87
- select.dispatchEvent(new Event('change'));
83
+ console.log(parseInt(this.getAttribute('data-page')))
84
+
85
+ this.setAttribute('data-page', parseInt(this.getAttribute('data-page')) + 1);
88
86
  });
89
87
 
90
88
  prev.addEventListener('click', () => {
91
- select.value = parseInt(select.value) - 1;
92
- select.dispatchEvent(new Event('change'));
89
+
90
+ this.setAttribute('data-page', parseInt(this.getAttribute('data-page')) - 1);
93
91
  });
94
92
 
95
93
  // Update how many is shown
@@ -0,0 +1,24 @@
1
+ import { trackComponentRegistered } from '../_global';
2
+ import passwordIndicator from '../../modules/password-indicator';
3
+
4
+ trackComponentRegistered('iam-password-indicator');
5
+
6
+ class iamPasswordIndicator extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.attachShadow({ mode: 'open' });
10
+
11
+ const template = document.createElement('template');
12
+ template.innerHTML = `
13
+ <slot></slot>
14
+ `;
15
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
16
+ }
17
+
18
+ connectedCallback(): void {
19
+
20
+ passwordIndicator(this);
21
+ }
22
+ }
23
+
24
+ export default iamPasswordIndicator;
@@ -10,13 +10,13 @@ class iamRank extends HTMLElement {
10
10
  ? document.body.getAttribute('data-assets-location')
11
11
  : '/assets';
12
12
 
13
- const loadCSS = `@import "${assetLocation}/css/components/rank.component.css";`;
13
+ const loadRankCSS = `@import "${assetLocation}/css/components/rank.component.css";`;
14
14
  //const loadExtraCSS = `@import "${assetLocation}/css/components/rank.global.css";`;
15
15
 
16
16
  const template = document.createElement('template');
17
17
  template.innerHTML = `
18
18
  <style>
19
- ${loadCSS}
19
+ ${loadRankCSS}
20
20
  </style>
21
21
  <div class="wrapper" part="wrapper">
22
22
  <div class="rank" part="rank">
@@ -1,4 +1,5 @@
1
1
  import { trackComponent, trackComponentRegistered } from '../_global';
2
+ import iamRank from '../rank/rank.component';
2
3
 
3
4
  trackComponentRegistered('iam-rankings');
4
5
  class iamRankings extends HTMLElement {
@@ -69,7 +70,10 @@ class iamRankings extends HTMLElement {
69
70
 
70
71
  firstRow?.insertAdjacentHTML('afterbegin', `<iam-rank class="rank--medal first-position">1st</iam-rank>`);
71
72
  }
73
+
74
+ if (!window.customElements.get(`iam-rank`)) window.customElements.define(`iam-rank`, iamRank);
72
75
  }
73
76
  }
74
77
 
78
+
75
79
  export default iamRankings;
@@ -17,14 +17,10 @@ class iamSearch extends HTMLElement {
17
17
  const assetLocation = document.body.hasAttribute('data-assets-location')
18
18
  ? document.body.getAttribute('data-assets-location')
19
19
  : '/assets';
20
- const coreCSS = document.body.hasAttribute('data-core-css')
21
- ? document.body.getAttribute('data-core-css')
22
- : `${assetLocation}/css/core.min.css`;
23
20
 
24
21
  const template = document.createElement('template');
25
22
  template.innerHTML = `
26
23
  <style>
27
- @import "${coreCSS}";
28
24
  input {
29
25
  background: red;
30
26
  }
@@ -13,15 +13,12 @@ class iamSlider extends HTMLElement {
13
13
  const assetLocation = document.body.hasAttribute('data-assets-location')
14
14
  ? document.body.getAttribute('data-assets-location')
15
15
  : '/assets';
16
- const coreCSS = document.body.hasAttribute('data-core-css')
17
- ? document.body.getAttribute('data-core-css')
18
- : `${assetLocation}/css/core.min.css`;
16
+
19
17
  const loadCSS = `@import "${assetLocation}/css/components/slider.css";`;
20
18
 
21
19
  const template = document.createElement('template');
22
20
  template.innerHTML = `
23
21
  <style>
24
- @import "${coreCSS}";
25
22
  ${loadCSS}
26
23
  </style>
27
24
  <div class="row">
@@ -52,9 +52,9 @@ class iamTableAjax extends HTMLElement {
52
52
  const assetLocation = document.body.hasAttribute('data-assets-location')
53
53
  ? document.body.getAttribute('data-assets-location')
54
54
  : '/assets';
55
-
55
+ /*
56
56
  if (!window.customElements.get(`iam-menu`)) {
57
- import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
57
+ import( `${assetLocation}/js/components/menu/menu.component.js`)
58
58
  .then((module) => {
59
59
  window.customElements.define(`iam-menu`, module.default);
60
60
  })
@@ -62,15 +62,15 @@ class iamTableAjax extends HTMLElement {
62
62
  console.log(err.message);
63
63
  });
64
64
  }
65
-
65
+ */
66
66
  setupBasicTable(this, table, form, pagination);
67
67
 
68
68
  setupAdvancedTable(this, table, form, pagination);
69
69
 
70
70
  setupAjaxTable(this, table, form, pagination);
71
71
 
72
- paginateTable(component, table, form, pagination, () => {
73
- loadAjaxTable(component, table, form, pagination);
72
+ paginateTable(this, table, form, pagination, () => {
73
+ loadAjaxTable(this, table, form, pagination);
74
74
  });
75
75
  }
76
76
  }
@@ -5,6 +5,7 @@ import {
5
5
  setupNoSubmitTable,
6
6
  paginateRows,
7
7
  paginateTable,
8
+ updateAttributes
8
9
  } from '../../modules/table';
9
10
 
10
11
  class iamTableNoSubmit extends HTMLElement {
@@ -66,30 +67,10 @@ class iamTableNoSubmit extends HTMLElement {
66
67
  }
67
68
 
68
69
  setupBasicTable(this, table, form, pagination);
69
-
70
70
  setupAdvancedTable(this, table);
71
-
72
71
  setupNoSubmitTable(this, table, form, pagination, savedTableBody);
73
72
 
74
- paginateRows(this);
75
-
76
- if (pagination) {
77
- paginateTable(this, table, form, pagination, () => {
78
- paginateRows(this);
79
- });
80
- }
81
-
82
- // #region shared advanced functions
83
73
 
84
- //endregion
85
-
86
- // select all
87
- // search
88
- // filter
89
- // sort
90
-
91
- /*
92
- // Push up the pagination events
93
74
  pagination.addEventListener('update-show', (event) => {
94
75
  const show = event.detail.show;
95
76
 
@@ -108,7 +89,15 @@ class iamTableNoSubmit extends HTMLElement {
108
89
  updateAttributes(this, pagination);
109
90
  });
110
91
 
111
- */
92
+
93
+ // For when the table contents is updated with an ajax call
94
+ this.addEventListener('update-table', (event) => {
95
+
96
+ setupBasicTable(this, table, form, pagination);
97
+ setupAdvancedTable(this, table);
98
+ setupNoSubmitTable(this, table, form, pagination, savedTableBody);
99
+ });
100
+
112
101
  }
113
102
  /*
114
103
  static get observedAttributes(): any {