@iamproperty/components 7.7.1--beta14 → 7.7.1--beta15

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 (163) 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/button.component.css +1 -0
  10. package/assets/css/components/button.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.component.css +1 -1
  16. package/assets/css/components/carousel.component.css.map +1 -1
  17. package/assets/css/components/collapsible-side.css +1 -1
  18. package/assets/css/components/collapsible-side.css.map +1 -1
  19. package/assets/css/components/config.component.css +1 -1
  20. package/assets/css/components/config.component.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/doughnutchart.component.css +1 -1
  24. package/assets/css/components/doughnutchart.component.css.map +1 -1
  25. package/assets/css/components/fileupload.css +1 -1
  26. package/assets/css/components/fileupload.css.map +1 -1
  27. package/assets/css/components/menu.component.css +1 -1
  28. package/assets/css/components/menu.component.css.map +1 -1
  29. package/assets/css/components/menu.global.css +1 -1
  30. package/assets/css/components/menu.global.css.map +1 -1
  31. package/assets/css/components/modal.component.css +1 -1
  32. package/assets/css/components/modal.component.css.map +1 -1
  33. package/assets/css/components/multi-step-modal.component.css +1 -1
  34. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  35. package/assets/css/components/multiselect.css +1 -1
  36. package/assets/css/components/multiselect.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/pagination.css +1 -1
  42. package/assets/css/components/pagination.css.map +1 -1
  43. package/assets/css/components/rank.component.css +1 -1
  44. package/assets/css/components/rank.component.css.map +1 -1
  45. package/assets/css/components/rankings.component.css +1 -1
  46. package/assets/css/components/rankings.component.css.map +1 -1
  47. package/assets/css/components/rankings.global.css +1 -1
  48. package/assets/css/components/rankings.global.css.map +1 -1
  49. package/assets/css/components/split-button.component.css +1 -1
  50. package/assets/css/components/split-button.component.css.map +1 -1
  51. package/assets/css/components/tabs.component.css +1 -1
  52. package/assets/css/components/tabs.component.css.map +1 -1
  53. package/assets/css/components/tabs.config.css +1 -1
  54. package/assets/css/components/tabs.config.css.map +1 -1
  55. package/assets/css/components/video-card.component.css +1 -1
  56. package/assets/css/components/video-card.component.css.map +1 -1
  57. package/assets/css/components/video-modal.component.css +1 -1
  58. package/assets/css/components/video-modal.component.css.map +1 -1
  59. package/assets/css/core.min.css +1 -1
  60. package/assets/css/core.min.css.map +1 -1
  61. package/assets/css/elements/badge-tag.css +1 -1
  62. package/assets/css/elements/badge-tag.css.map +1 -1
  63. package/assets/css/elements/buttons--special.css +1 -1
  64. package/assets/css/elements/buttons--special.css.map +1 -1
  65. package/assets/css/elements/buttons.css +1 -1
  66. package/assets/css/elements/buttons.css.map +1 -1
  67. package/assets/css/elements/type.css +1 -1
  68. package/assets/css/elements/type.css.map +1 -1
  69. package/assets/css/style.min.css +1 -1
  70. package/assets/css/style.min.css.map +1 -1
  71. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  72. package/assets/js/components/actionbar/actionbar.component.min.js +3 -3
  73. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  74. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  75. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  76. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  77. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  78. package/assets/js/components/button/button.component.js +49 -0
  79. package/assets/js/components/button/button.component.min.js +13 -0
  80. package/assets/js/components/button/button.component.min.js.map +1 -0
  81. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  82. package/assets/js/components/card/card.component.min.js +3 -3
  83. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  84. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  85. package/assets/js/components/config/config.component.min.js +2 -2
  86. package/assets/js/components/content/content.component.js +9 -3
  87. package/assets/js/components/content/content.component.min.js +5 -7
  88. package/assets/js/components/content/content.component.min.js.map +1 -1
  89. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  90. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  91. package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
  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/form/form.component.min.js +1 -1
  95. package/assets/js/components/header/header.component.min.js +1 -1
  96. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  97. package/assets/js/components/input/input.component.min.js +1 -1
  98. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  99. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  100. package/assets/js/components/menu/menu.component.min.js +4 -4
  101. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  102. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  103. package/assets/js/components/modal/modal.component.min.js +2 -2
  104. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  105. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +2 -2
  106. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  107. package/assets/js/components/nav/nav.component.js +1 -1
  108. package/assets/js/components/nav/nav.component.min.js +4 -4
  109. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  110. package/assets/js/components/notification/notification.component.min.js +1 -1
  111. package/assets/js/components/pagination/pagination.component.min.js +2 -2
  112. package/assets/js/components/password/password.component.min.js +1 -1
  113. package/assets/js/components/popover/popover.component.min.js +1 -1
  114. package/assets/js/components/rank/rank.component.min.js +1 -1
  115. package/assets/js/components/rankings/rankings.component.min.js +3 -3
  116. package/assets/js/components/rating/rating.component.min.js +1 -1
  117. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  118. package/assets/js/components/search/search.component.js +1 -0
  119. package/assets/js/components/search/search.component.min.js +2 -2
  120. package/assets/js/components/search/search.component.min.js.map +1 -1
  121. package/assets/js/components/slider/slider.component.min.js +1 -1
  122. package/assets/js/components/split-button/split-button.component.min.js +4 -4
  123. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +2 -2
  124. package/assets/js/components/std-nav/std-nav.component.js +137 -0
  125. package/assets/js/components/std-nav/std-nav.component.min.js +63 -0
  126. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -0
  127. package/assets/js/components/table/table.component.min.js +2 -2
  128. package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
  129. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  130. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +2 -2
  131. package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
  132. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  133. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  134. package/assets/js/components/tag/tag.component.min.js +1 -1
  135. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  136. package/assets/js/components/video/video.component.min.js +1 -1
  137. package/assets/js/components/video-card/video-card.component.min.js +2 -2
  138. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  139. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  140. package/assets/js/modules/tabs.js +8 -1
  141. package/assets/js/scripts.bundle.js +1 -1
  142. package/assets/js/scripts.bundle.min.js +1 -1
  143. package/assets/sass/components/button.component.scss +5 -0
  144. package/assets/sass/components/menu.component.scss +5 -5
  145. package/assets/sass/components/menu.global.scss +7 -0
  146. package/assets/sass/components/nav.global.scss +2 -2
  147. package/assets/sass/components/tabs.config.scss +2 -2
  148. package/assets/sass/elements/badge-tag.css +4 -0
  149. package/assets/sass/elements/buttons--special.css +1 -1
  150. package/assets/sass/elements/type.css +10 -0
  151. package/assets/sass/foundations/colours.scss +0 -1
  152. package/assets/sass/foundations/root.scss +1 -1
  153. package/assets/ts/components/button/button.component.ts +66 -0
  154. package/assets/ts/components/content/content.component.ts +15 -3
  155. package/assets/ts/components/nav/nav.component.ts +1 -1
  156. package/assets/ts/components/search/search.component.ts +1 -0
  157. package/assets/ts/components/std-nav/std-nav.component.ts +179 -0
  158. package/assets/ts/modules/tabs.ts +10 -1
  159. package/dist/components.es.js +26 -26
  160. package/dist/components.umd.js +213 -149
  161. package/package.json +1 -1
  162. package/src/components/Button/Button.vue +20 -0
  163. package/src/components/STDNav/STDNav.vue +22 -0
@@ -70,7 +70,7 @@
70
70
  --colour-activeLink: light-dark(#e8f9fd,#173c45);
71
71
  --colour-activeLinkBorder: light-dark(#1dbde6,#1dbde6);
72
72
 
73
- --colour-underline: var(--colour-secondary-theme);
73
+ --colour-underline: light-dark(#b4e6a5, #fcfcfc);
74
74
  --colour-selected: var(--colour-info-theme);
75
75
 
76
76
  --colour-inverted: #fcfcfc;
@@ -0,0 +1,66 @@
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: 'button',
11
+ });
12
+
13
+ class iamButton 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/button.component.css";`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ ${loadCSS}
27
+ </style>
28
+ <div class="wrapper">
29
+ <slot></slot>
30
+ </div>
31
+ `;
32
+ this.shadowRoot?.appendChild(template.content.cloneNode(true));
33
+ }
34
+
35
+ connectedCallback(): void {
36
+
37
+ const button = this.querySelector('button');
38
+ let originalHTML = '';
39
+
40
+ if(!button)
41
+ return false;
42
+
43
+ button?.addEventListener('click', (event) => {
44
+
45
+ if(this.hasAttribute('data-copy-text')){
46
+ navigator.clipboard.writeText(this.getAttribute('data-copy-text'));
47
+
48
+ originalHTML = button.innerHTML;
49
+ button.innerHTML = originalHTML.toLowerCase().includes('copy') ? originalHTML.replace('Copy','Copied').replace('copy','copied') : 'Copied';
50
+ button.classList.add('pressed');
51
+ button.classList.add('active');
52
+ button.blur();
53
+
54
+ setTimeout(() => {
55
+ button.innerHTML = originalHTML;
56
+ originalHTML = '';
57
+ button.classList.remove('pressed');
58
+ button.classList.remove('active');
59
+ }, 1500);
60
+ }
61
+ });
62
+
63
+ }
64
+ }
65
+
66
+ export default iamButton;
@@ -15,18 +15,28 @@ class iamContent extends HTMLElement {
15
15
 
16
16
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
17
17
  </style>
18
- <div class="content__container">
19
- <slot></slot>
20
- </div>
18
+ <slot></slot>
21
19
  `;
22
20
  this.shadowRoot.appendChild(template.content.cloneNode(true));
23
21
  }
24
22
 
23
+ addTitle = (title) => {
24
+
25
+ if(this.hasAttribute('data-title-tag')){
26
+
27
+ return `<${this.getAttribute('data-title-tag')} class="${this.getAttribute('data-title-class')}">${title}</${this.getAttribute('data-title-tag')}>`;
28
+ }
29
+
30
+ return '';
31
+ }
32
+
25
33
  connectedCallback(): void {
26
34
  // eslint-disable-next-line @typescript-eslint/no-this-alias
27
35
  const component = this;
28
36
  const url = this.getAttribute('data-url');
29
37
 
38
+ const addTitle = this.addTitle;
39
+
30
40
  const registerComponents = (contentComponent): void => {
31
41
  const components = ['card', 'marketing', 'notification'];
32
42
 
@@ -64,6 +74,8 @@ class iamContent extends HTMLElement {
64
74
  newXHRRequest.onload = function (): void {
65
75
  if (this.status === 200) {
66
76
  const response = JSON.parse(this.responseText);
77
+
78
+ component.insertAdjacentHTML('beforebegin',addTitle(response.title.rendered));
67
79
  component.innerHTML = `${response.content.rendered}`;
68
80
 
69
81
  registerComponents(component);
@@ -177,7 +177,7 @@ class iamNav extends HTMLElement {
177
177
  });
178
178
 
179
179
  // Has secondary link
180
- if (this.querySelector('a[slot="secondary"]')) {
180
+ if (this.querySelector('[slot="secondary"]')) {
181
181
  menu.classList.add('has-secondary');
182
182
  }
183
183
 
@@ -123,6 +123,7 @@ class iamSearch extends HTMLElement {
123
123
  signal: signal,
124
124
  method: 'get',
125
125
  credentials: 'same-origin',
126
+ mode: 'no-cors',
126
127
  headers: new Headers({
127
128
  'Content-Type': 'application/json',
128
129
  Accept: 'application/json',
@@ -0,0 +1,179 @@
1
+ import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
2
+ import iamNav from '../nav/nav.component';
3
+
4
+ // Data layer Web component created
5
+ declare global {
6
+ interface Window {
7
+ dataLayer: Array<object>;
8
+ }
9
+ }
10
+
11
+
12
+ class iamSTDNav extends HTMLElement {
13
+ constructor() {
14
+ super();
15
+
16
+ }
17
+
18
+
19
+ loadNavData = async(): any => {
20
+
21
+ const ajaxURL = '/nav.json';
22
+
23
+ // Setup controller vars if not already set
24
+ if (!window.controller) window.controller = [];
25
+
26
+ // Abort if controller already present for this url
27
+ if (window.controller[ajaxURL]) window.controller[ajaxURL].abort();
28
+
29
+ // Create a new controller so it can be aborted if new fetch made
30
+ window.controller[ajaxURL] = new AbortController();
31
+ const { signal } = window.controller[ajaxURL];
32
+
33
+ try {
34
+ return await fetch(ajaxURL, {
35
+ signal: signal,
36
+ method: 'get',
37
+ credentials: 'same-origin',
38
+ headers: new Headers({
39
+ 'Content-Type': 'application/json',
40
+ Accept: 'application/json',
41
+ 'X-Requested-With': 'XMLHttpRequest',
42
+ 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
43
+ }),
44
+ })
45
+ .then((response) => response.json())
46
+ .then((response) => {
47
+ // populate datalist
48
+ let listString = '';
49
+
50
+ const data = response['data'] ? response['data'] : response;
51
+
52
+
53
+ return data;
54
+ });
55
+ } catch (error) {
56
+ if (error?.name === 'AbortError') {
57
+ return true;
58
+ }
59
+ console.log(error);
60
+ return 'There has been a problem. Please try again in a few moments.';
61
+ }
62
+ }
63
+
64
+ defaultToSecondary = () => {
65
+
66
+ // Set links and details to secondary slot
67
+ Array.from(this.querySelectorAll(':scope > a, :scope > details')).forEach((element) => {
68
+
69
+ element.setAttribute('slot','secondary');
70
+ });
71
+
72
+ const defaultContent = this.innerHTML;
73
+ this.outerHTML = `${defaultContent}`;
74
+ }
75
+
76
+ defaultToNav = () => {
77
+
78
+ const defaultContent = this.innerHTML;
79
+ this.innerHTML = `<iam-nav>
80
+ ${defaultContent}
81
+ </iam-nav>`;
82
+ }
83
+
84
+ populateNav = (data):void => {
85
+
86
+ let html = ``;
87
+
88
+ data.forEach((feature) => {
89
+
90
+ html += `<a href="/">${feature.attributes.title}</a>`;
91
+ });
92
+
93
+ return html;
94
+ }
95
+
96
+ transformToSecondary = (data) => {
97
+
98
+ this.innerHTML = this.populateNav(data);
99
+
100
+ // Set links and details to secondary slot
101
+ Array.from(this.querySelectorAll(':scope > a, :scope > details')).forEach((element) => {
102
+
103
+ element.setAttribute('slot','secondary');
104
+ });
105
+
106
+ const defaultContent = this.innerHTML;
107
+ this.outerHTML = `${defaultContent}`;
108
+ }
109
+
110
+ transformToNav = (data) => {
111
+ this.innerHTML = `<iam-nav>
112
+ <a href="/" class="brand brand--property" slot="logo">
113
+ <svg>
114
+ <title>iam key</title>
115
+ <use xlink:href="/svg/logo.svg#logo-property"></use>
116
+ </svg>
117
+ </a>
118
+ ${this.populateNav(data)}
119
+ <button class="btn btn-primary fa-user" data-modal="modal-transactional" slot="actions">My account</button>
120
+ </iam-nav>`;
121
+ }
122
+
123
+ async connectedCallback(): void {
124
+
125
+
126
+ if (!window.customElements.get(`iam-nav`))
127
+ window.customElements.define(`iam-nav`, iamNav);
128
+
129
+
130
+ if(!this.closest('iam-nav')){
131
+ this.defaultToNav();
132
+ }
133
+
134
+ const data = await this.loadNavData().then(
135
+ (data) => {
136
+ if(typeof data == 'string'){
137
+
138
+ if(this.closest('iam-nav')){
139
+ this.defaultToSecondary();
140
+ }
141
+
142
+ return data;
143
+ }
144
+
145
+ console.log(data);
146
+
147
+ if(this.closest('iam-nav')){
148
+ this.transformToSecondary(data);
149
+ }
150
+ else {
151
+
152
+ this.transformToNav(data);
153
+ }
154
+
155
+ return true;
156
+ }
157
+ );
158
+
159
+ }
160
+
161
+ static get observedAttributes(): any {
162
+ return [];
163
+ }
164
+
165
+ attributeChangedCallback(attrName, oldVal, newVal): void {
166
+ const addressComponent = this.querySelector('iam-address-lookup');
167
+
168
+ switch (attrName) {
169
+ case 'data-url': {
170
+ if (oldVal != newVal && addressComponent) {
171
+ addressComponent.setAttribute('data-url', newVal + '?search_string=');
172
+ }
173
+ break;
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ export default iamSTDNav;
@@ -162,6 +162,13 @@ export const setTabsEventHandlers = function (tabsElement: Element): void {
162
162
  });
163
163
  });
164
164
 
165
+ details.forEach((detailsElement, index) => {
166
+ detailsElement.addEventListener("toggle", function() {
167
+ if(detailsElement.open)
168
+ detailsElement.querySelector('button,input').focus();
169
+ });
170
+ });
171
+
165
172
  nextButton?.addEventListener('click', (e) => {
166
173
  e.preventDefault();
167
174
 
@@ -213,7 +220,9 @@ export const toggleTab = function (details: Array, button: Element): boolean | v
213
220
  details.forEach((detail, detailsIndex) => {
214
221
  const detailsOpen = button.getAttribute('data-index') == detailsIndex ? true : false;
215
222
 
216
- if (detailsOpen) detail.setAttribute('open', detailsOpen);
223
+ if (detailsOpen) {
224
+ detail.setAttribute('open', detailsOpen);
225
+ }
217
226
  else detail.removeAttribute('open');
218
227
  });
219
228
  };