@iamproperty/components 7.7.1--beta19 → 7.7.1--beta21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/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/advanced-select.component.css +1 -1
  6. package/assets/css/components/advanced-select.component.css.map +1 -1
  7. package/assets/css/components/applied-filters.css +1 -1
  8. package/assets/css/components/applied-filters.css.map +1 -1
  9. package/assets/css/components/banner.component.css +1 -0
  10. package/assets/css/components/banner.component.css.map +1 -0
  11. package/assets/css/components/calendar.component.css +1 -1
  12. package/assets/css/components/calendar.component.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.config.css +1 -1
  16. package/assets/css/components/carousel.config.css.map +1 -1
  17. package/assets/css/components/multiselect.css +1 -1
  18. package/assets/css/components/multiselect.css.map +1 -1
  19. package/assets/css/components/search.component.css +1 -1
  20. package/assets/css/components/search.component.css.map +1 -1
  21. package/assets/css/components/skeleton.component.css +1 -0
  22. package/assets/css/components/skeleton.component.css.map +1 -0
  23. package/assets/css/components/skeleton.global.css +1 -0
  24. package/assets/css/components/skeleton.global.css.map +1 -0
  25. package/assets/css/components/split-button.component.css +1 -1
  26. package/assets/css/components/split-button.component.css.map +1 -1
  27. package/assets/css/components/std-nav-standalone.component.css +1 -1
  28. package/assets/css/components/std-nav-standalone.component.css.map +1 -1
  29. package/assets/css/components/tabs.component.css +1 -1
  30. package/assets/css/components/tabs.component.css.map +1 -1
  31. package/assets/css/components/tabs.config.css +1 -1
  32. package/assets/css/components/tabs.config.css.map +1 -1
  33. package/assets/css/components/tag.component.css +1 -1
  34. package/assets/css/components/tag.component.css.map +1 -1
  35. package/assets/css/core.min.css +1 -1
  36. package/assets/css/core.min.css.map +1 -1
  37. package/assets/css/elements/badge-tag.css +1 -1
  38. package/assets/css/elements/badge-tag.css.map +1 -1
  39. package/assets/css/elements/dropdown.css +1 -1
  40. package/assets/css/elements/dropdown.css.map +1 -1
  41. package/assets/css/elements/spinner.css +1 -0
  42. package/assets/css/elements/spinner.css.map +1 -0
  43. package/assets/css/style.min.css +1 -1
  44. package/assets/css/style.min.css.map +1 -1
  45. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  46. package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
  47. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  48. package/assets/js/components/advanced-select/advanced-select.component.min.js +2 -2
  49. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  50. package/assets/js/components/banner/banner.component.js +44 -0
  51. package/assets/js/components/banner/banner.component.min.js +20 -0
  52. package/assets/js/components/banner/banner.component.min.js.map +1 -0
  53. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  54. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  55. package/assets/js/components/bone/bone.component.js +20 -0
  56. package/assets/js/components/bone/bone.component.min.js +9 -0
  57. package/assets/js/components/bone/bone.component.min.js.map +1 -0
  58. package/assets/js/components/button/button.component.min.js +1 -1
  59. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  60. package/assets/js/components/card/card.component.js +2 -0
  61. package/assets/js/components/card/card.component.min.js +5 -5
  62. package/assets/js/components/card/card.component.min.js.map +1 -1
  63. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  64. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  65. package/assets/js/components/config/config.component.min.js +1 -1
  66. package/assets/js/components/content/content.component.js +9 -5
  67. package/assets/js/components/content/content.component.min.js +3 -3
  68. package/assets/js/components/content/content.component.min.js.map +1 -1
  69. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  70. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  71. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  72. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  73. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  74. package/assets/js/components/form/form.component.js +40 -1
  75. package/assets/js/components/form/form.component.min.js +3 -3
  76. package/assets/js/components/form/form.component.min.js.map +1 -1
  77. package/assets/js/components/header/header.component.min.js +1 -1
  78. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  79. package/assets/js/components/input/input.component.min.js +1 -1
  80. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  81. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  82. package/assets/js/components/menu/menu.component.min.js +1 -1
  83. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  84. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  85. package/assets/js/components/modal/modal.component.min.js +1 -1
  86. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  87. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
  88. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  89. package/assets/js/components/nav/nav.component.min.js +1 -1
  90. package/assets/js/components/notification/notification.component.min.js +1 -1
  91. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  92. package/assets/js/components/password/password.component.min.js +1 -1
  93. package/assets/js/components/popover/popover.component.min.js +1 -1
  94. package/assets/js/components/rank/rank.component.min.js +1 -1
  95. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  96. package/assets/js/components/rating/rating.component.min.js +1 -1
  97. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  98. package/assets/js/components/search/search.component.js +6 -2
  99. package/assets/js/components/search/search.component.min.js +5 -5
  100. package/assets/js/components/search/search.component.min.js.map +1 -1
  101. package/assets/js/components/skeleton/skeleton.component.js +34 -0
  102. package/assets/js/components/skeleton/skeleton.component.min.js +11 -0
  103. package/assets/js/components/skeleton/skeleton.component.min.js.map +1 -0
  104. package/assets/js/components/slider/slider.component.min.js +1 -1
  105. package/assets/js/components/split-button/split-button.component.min.js +2 -2
  106. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +2 -2
  107. package/assets/js/components/std-nav/std-nav.component.min.js +1 -1
  108. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +2 -2
  109. package/assets/js/components/table/table.component.min.js +1 -1
  110. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  111. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  112. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  113. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  114. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  115. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  116. package/assets/js/components/tag/tag.component.min.js +2 -2
  117. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  118. package/assets/js/components/video/video.component.min.js +1 -1
  119. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  120. package/assets/js/components/video-modal/video-modal.component.min.js +1 -1
  121. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  122. package/assets/js/modules/tabs.js +6 -2
  123. package/assets/js/scripts.bundle.js +1 -1
  124. package/assets/js/scripts.bundle.min.js +1 -1
  125. package/assets/sass/_components.scss +1 -0
  126. package/assets/sass/_elements.scss +1 -0
  127. package/assets/sass/components/banner.component.scss +100 -0
  128. package/assets/sass/components/card.component.scss +1 -1
  129. package/assets/sass/components/carousel.config.scss +27 -18
  130. package/assets/sass/components/search.component.scss +46 -1
  131. package/assets/sass/components/skeleton.component.scss +104 -0
  132. package/assets/sass/components/skeleton.global.scss +27 -0
  133. package/assets/sass/components/tabs.component.scss +1 -0
  134. package/assets/sass/components/tabs.config.scss +21 -0
  135. package/assets/sass/elements/badge-tag.css +2 -2
  136. package/assets/sass/elements/dropdown.css +0 -5
  137. package/assets/sass/elements/spinner.css +29 -0
  138. package/assets/sass/foundations/root.scss +7 -5
  139. package/assets/sass/utilities/shadow.css +4 -0
  140. package/assets/sass/utilities/text.css +6 -6
  141. package/assets/ts/components/banner/banner.component.ts +57 -0
  142. package/assets/ts/components/bone/bone.component.ts +25 -0
  143. package/assets/ts/components/card/card.component.ts +4 -0
  144. package/assets/ts/components/content/content.component.ts +14 -6
  145. package/assets/ts/components/form/form.component.ts +58 -1
  146. package/assets/ts/components/search/search.component.ts +7 -1
  147. package/assets/ts/components/skeleton/skeleton.component.ts +46 -0
  148. package/assets/ts/modules/tabs.ts +10 -2
  149. package/dist/components.es.js +443 -471
  150. package/dist/components.umd.js +149 -124
  151. package/package.json +1 -1
  152. package/src/components/Banner/Banner.vue +14 -29
  153. package/src/components/Skeleton/Bone.vue +19 -0
  154. package/src/components/Skeleton/Skeleton.vue +19 -0
  155. package/src/components/Banner/Banner.spec.js +0 -26
@@ -27,7 +27,7 @@ class iamContent extends HTMLElement {
27
27
 
28
28
  if(this.hasAttribute('data-title-tag')){
29
29
 
30
- return `<${this.getAttribute('data-title-tag')} class="${this.getAttribute('data-title-class')}">${title}</${this.getAttribute('data-title-tag')}>`;
30
+ return `<${this.getAttribute('data-title-tag')} class="${this.getAttribute('data-title-class')} iam-content--title">${title}</${this.getAttribute('data-title-tag')}>`;
31
31
  }
32
32
 
33
33
  return '';
@@ -83,7 +83,7 @@ class iamContent extends HTMLElement {
83
83
  const addTitle = this.addTitle;
84
84
 
85
85
  const registerComponents = (contentComponent): void => {
86
- const components = ['carousel', 'card', 'marketing', 'notification'];
86
+ const components = ['skeleton','bone','carousel', 'card', 'marketing', 'notification'];
87
87
 
88
88
  const assetLocation = document.body.hasAttribute('data-assets-location')
89
89
  ? document.body.getAttribute('data-assets-location')
@@ -123,23 +123,31 @@ class iamContent extends HTMLElement {
123
123
  if(Array.isArray(response))
124
124
  response = response[0];
125
125
 
126
- component.insertAdjacentHTML('beforebegin',addTitle(response.title.rendered));
126
+ const renderedContent = response.content.rendered.replaceAll(/<p>\[(.*)\]<\/p>/g, "<span data-shortcode=\"$1\"><iam-skeleton><iam-bone class=\"search\"></iam-bone></iam-skeleton></span>");
127
+
128
+
127
129
 
130
+ component.parentElement?.querySelector('.iam-content--title')?.remove();
131
+ component.insertAdjacentHTML('beforebegin',addTitle(response.title.rendered));
132
+
133
+
128
134
 
129
135
  if(transform){
130
136
 
131
- component.innerHTML = `<${transform} ${elementAttributes}>${response.content.rendered}</${transform}>`;
137
+ component.innerHTML = `<${transform} ${elementAttributes}>${renderedContent}</${transform}>`;
132
138
  component.removeAttribute('class');
133
139
  }
134
140
  else {
135
141
 
136
- component.innerHTML = `${response.content.rendered}`;
137
- console.log(response.content);
142
+ component.innerHTML = `${renderedContent}`;
138
143
  }
139
144
 
140
145
  fixContent(component);
141
146
  registerComponents(component);
142
147
  transformButtons(component);
148
+
149
+ const changeEvent = new CustomEvent('loaded', { detail: {triggered: true} });
150
+ component?.dispatchEvent(changeEvent);
143
151
  }
144
152
  };
145
153
 
@@ -138,6 +138,61 @@ class iamForm extends HTMLElement {
138
138
  });
139
139
  }
140
140
 
141
+ getCheckboxLimit = (element):number => {
142
+
143
+ const limit = parseInt(element.getAttribute('data-checkbox-limit') || '10', 10);
144
+
145
+ return !isNaN(limit) && limit > 0 ? limit : 10;
146
+ }
147
+
148
+ limitCheckboxes = (event?:Event):void => {
149
+
150
+
151
+
152
+ const target = event?.target instanceof HTMLInputElement ? event.target : null;
153
+ const changedCheckbox = target?.matches('input[type="checkbox"]') ? target : null;
154
+ const checkboxLimitGroup = changedCheckbox?.closest('[data-checkbox-limit]');
155
+ const checkboxLimitGroups = checkboxLimitGroup
156
+ ? [checkboxLimitGroup]
157
+ : [
158
+ ...(this.hasAttribute('data-checkbox-limit') ? [this] : []),
159
+ ...Array.from(this.querySelectorAll('[data-checkbox-limit]')),
160
+ ];
161
+
162
+ checkboxLimitGroups.forEach((group) => {
163
+
164
+ const limit = this.getCheckboxLimit(group);
165
+ const checked = Array.from(group.querySelectorAll('input[type="checkbox"]:checked'));
166
+ const notChecked = Array.from(group.querySelectorAll('input[type="checkbox"]:not(:checked)'));
167
+
168
+ notChecked.forEach((checkbox) => {
169
+
170
+ checkbox.setAttribute('disabled','disabled');
171
+ });
172
+
173
+ if(checked.length < limit){
174
+ notChecked.forEach((checkbox) => {
175
+
176
+ checkbox.removeAttribute('disabled');
177
+ });
178
+ }
179
+
180
+ if(checked.length <= limit)
181
+ return;
182
+
183
+
184
+ if(changedCheckbox?.checked && group.contains(changedCheckbox)) {
185
+ changedCheckbox.checked = false;
186
+ return;
187
+ }
188
+
189
+ checked.slice(limit).forEach((checkbox) => {
190
+
191
+ checkbox.checked = false;
192
+ });
193
+ });
194
+ }
195
+
141
196
  connectedCallback(): void {
142
197
 
143
198
  const form = this.querySelector('form');
@@ -181,9 +236,10 @@ class iamForm extends HTMLElement {
181
236
  this.readonlyIf();
182
237
  this.writeIf();
183
238
  this.emptyIf();
239
+ this.limitCheckboxes();
184
240
 
185
241
 
186
- form.addEventListener('change', () => {
242
+ form.addEventListener('change', (event) => {
187
243
 
188
244
  this.showIf();
189
245
  this.hideIf();
@@ -193,6 +249,7 @@ class iamForm extends HTMLElement {
193
249
  this.readonlyIf();
194
250
  this.writeIf();
195
251
  this.emptyIf();
252
+ this.limitCheckboxes(event);
196
253
 
197
254
  Array.from(form.querySelectorAll('.conditional [data-conditional-required], .conditional [data-conditional-data-required]')).forEach((input) => {
198
255
 
@@ -37,6 +37,9 @@ class iamSearch extends HTMLElement {
37
37
  // Make the datalist a dropdown
38
38
  this.classList.add('dropdown__wrapper');
39
39
 
40
+ if(this.querySelector('input.input--sm'))
41
+ this.classList.add('hasInputSm');
42
+
40
43
 
41
44
  if(this.querySelector('label'))
42
45
  this.classList.add('has-label');
@@ -79,7 +82,7 @@ class iamSearch extends HTMLElement {
79
82
  advancedSelect(this, displayInputField, datalist, false);
80
83
 
81
84
 
82
- function checkMatch(): void {
85
+ const checkMatch = (): void => {
83
86
  const match = datalist.querySelector(`option[value="${displayInputField.value}" i]`);
84
87
  const subMatch = datalist.querySelector(`option[value*="${displayInputField.value}" i]`);
85
88
 
@@ -105,6 +108,9 @@ class iamSearch extends HTMLElement {
105
108
 
106
109
  const search = async (searchterm): any => {
107
110
 
111
+ if(!this.getAttribute('data-url'))
112
+ return false;
113
+
108
114
  let ajaxURL = this.getAttribute('data-url');
109
115
  ajaxURL += `${encodeURI(searchterm)}`;
110
116
 
@@ -0,0 +1,46 @@
1
+ import { trackComponent, trackComponentRegistered } from '../_global';
2
+
3
+ trackComponentRegistered('iam-skeleton');
4
+
5
+ class iamSkeleton 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
+
14
+ const loadCSS = `@import "${assetLocation}/css/components/skeleton.component.css";`;
15
+
16
+ const template = document.createElement('template');
17
+ template.innerHTML = /* HTML */`
18
+ <style>
19
+ ${loadCSS}
20
+ </style>
21
+ <slot></slot>
22
+ `;
23
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
24
+ }
25
+
26
+ connectedCallback(): void {
27
+
28
+
29
+ if(this.querySelector('.card'))
30
+ this.classList.add('hasCard');
31
+
32
+ if(this.querySelector('.btn'))
33
+ this.classList.add('hasBtn');
34
+
35
+ if(this.querySelector('.tag'))
36
+ this.classList.add('hasTag');
37
+
38
+ if(this.querySelector('.badge'))
39
+ this.classList.add('hasBadge');
40
+
41
+ if(this.querySelector('.spinner'))
42
+ this.classList.add('hasSpinner');
43
+ }
44
+ }
45
+
46
+ export default iamSkeleton;
@@ -45,7 +45,15 @@ export const createTabsLinks = function (tabsElement: Element): void {
45
45
  button.setAttribute('aria-pressed', true);
46
46
  }
47
47
  button.innerHTML = `${summary.innerText}`;
48
- button.classList.add('link');
48
+
49
+ if(tabsElement.classList.contains('tabs--toggle-tags')){
50
+
51
+ button.classList.add('tag');
52
+ button.classList.add('tag--toggle');
53
+ }
54
+ else
55
+ button.classList.add('link');
56
+
49
57
  button.setAttribute('data-index', tabindex);
50
58
  button.setAttribute('part', 'tab-link');
51
59
 
@@ -64,7 +72,7 @@ export const createTabsLinks = function (tabsElement: Element): void {
64
72
  button = element;
65
73
  }
66
74
 
67
- button.classList.add('link');
75
+
68
76
  tabLinks.appendChild(button);
69
77
 
70
78
  tabDropdown.appendChild(dropdownOpt);