@iamproperty/components 7.7.1--beta16 → 7.7.1--beta18

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 (137) hide show
  1. package/assets/css/components/calendar.component.css +1 -1
  2. package/assets/css/components/calendar.component.css.map +1 -1
  3. package/assets/css/components/card.component.css +1 -1
  4. package/assets/css/components/card.component.css.map +1 -1
  5. package/assets/css/components/card.module.css +1 -1
  6. package/assets/css/components/card.module.css.map +1 -1
  7. package/assets/css/components/carousel.component.css +1 -1
  8. package/assets/css/components/carousel.component.css.map +1 -1
  9. package/assets/css/components/carousel.config.css +1 -1
  10. package/assets/css/components/carousel.config.css.map +1 -1
  11. package/assets/css/components/collapsible-side.css +1 -1
  12. package/assets/css/components/collapsible-side.css.map +1 -1
  13. package/assets/css/components/config.component.css +1 -1
  14. package/assets/css/components/config.component.css.map +1 -1
  15. package/assets/css/components/filter-card.component.css +1 -1
  16. package/assets/css/components/filter-card.component.css.map +1 -1
  17. package/assets/css/components/header.component.css +1 -1
  18. package/assets/css/components/header.component.css.map +1 -1
  19. package/assets/css/components/nav.component.css +1 -1
  20. package/assets/css/components/nav.component.css.map +1 -1
  21. package/assets/css/components/nav.global.css +1 -1
  22. package/assets/css/components/nav.global.css.map +1 -1
  23. package/assets/css/components/rank.component.css +1 -1
  24. package/assets/css/components/rank.component.css.map +1 -1
  25. package/assets/css/components/rankings.component.css +1 -1
  26. package/assets/css/components/rankings.component.css.map +1 -1
  27. package/assets/css/components/rankings.global.css +1 -1
  28. package/assets/css/components/rankings.global.css.map +1 -1
  29. package/assets/css/components/record-card.component.css +1 -1
  30. package/assets/css/components/record-card.component.css.map +1 -1
  31. package/assets/css/components/std-nav-standalone.component.css +1 -1
  32. package/assets/css/components/std-nav-standalone.component.css.map +1 -1
  33. package/assets/css/components/video-card.component.css +1 -1
  34. package/assets/css/components/video-card.component.css.map +1 -1
  35. package/assets/css/components/video-modal.component.css +1 -1
  36. package/assets/css/components/video-modal.component.css.map +1 -1
  37. package/assets/css/components/video.component.css +1 -1
  38. package/assets/css/components/video.component.css.map +1 -1
  39. package/assets/css/core.min.css +1 -1
  40. package/assets/css/core.min.css.map +1 -1
  41. package/assets/css/elements/type.css +1 -1
  42. package/assets/css/elements/type.css.map +1 -1
  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 +1 -1
  47. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  48. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  49. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  50. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  51. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  52. package/assets/js/components/button/button.component.min.js +1 -1
  53. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  54. package/assets/js/components/card/card.component.js +1 -0
  55. package/assets/js/components/card/card.component.min.js +6 -5
  56. package/assets/js/components/card/card.component.min.js.map +1 -1
  57. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  58. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
  59. package/assets/js/components/config/config.component.min.js +2 -2
  60. package/assets/js/components/content/content.component.js +29 -2
  61. package/assets/js/components/content/content.component.min.js +3 -3
  62. package/assets/js/components/content/content.component.min.js.map +1 -1
  63. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  64. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  65. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  66. package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
  67. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  68. package/assets/js/components/form/form.component.min.js +1 -1
  69. package/assets/js/components/header/header.component.min.js +2 -2
  70. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  71. package/assets/js/components/input/input.component.min.js +1 -1
  72. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  73. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  74. package/assets/js/components/menu/menu.component.min.js +1 -1
  75. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  76. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  77. package/assets/js/components/modal/modal.component.js +3 -3
  78. package/assets/js/components/modal/modal.component.min.js +2 -2
  79. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  80. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  81. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
  82. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  83. package/assets/js/components/nav/nav.component.js +0 -1
  84. package/assets/js/components/nav/nav.component.min.js +3 -4
  85. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  86. package/assets/js/components/notification/notification.component.min.js +1 -1
  87. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  88. package/assets/js/components/password/password.component.min.js +1 -1
  89. package/assets/js/components/popover/popover.component.min.js +1 -1
  90. package/assets/js/components/rank/rank.component.min.js +1 -1
  91. package/assets/js/components/rankings/rankings.component.min.js +6 -6
  92. package/assets/js/components/rating/rating.component.min.js +1 -1
  93. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  94. package/assets/js/components/search/search.component.min.js +1 -1
  95. package/assets/js/components/slider/slider.component.min.js +1 -1
  96. package/assets/js/components/split-button/split-button.component.min.js +1 -1
  97. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +1 -1
  98. package/assets/js/components/std-nav/std-nav.component.js +24 -118
  99. package/assets/js/components/std-nav/std-nav.component.min.js +15 -21
  100. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  101. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +6 -1
  102. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +8 -8
  103. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -1
  104. package/assets/js/components/table/table.component.min.js +1 -1
  105. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  106. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  107. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  108. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  109. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  110. package/assets/js/components/tag/tag.component.min.js +1 -1
  111. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  112. package/assets/js/components/video/video.component.min.js +5 -5
  113. package/assets/js/components/video-card/video-card.component.min.js +2 -2
  114. package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
  115. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  116. package/assets/js/modules/nav.js +56 -21
  117. package/assets/js/scripts.bundle.js +1 -1
  118. package/assets/js/scripts.bundle.min.js +1 -1
  119. package/assets/sass/components/card.component.scss +27 -0
  120. package/assets/sass/components/card.module.scss +3 -2
  121. package/assets/sass/components/carousel.component.scss +14 -0
  122. package/assets/sass/components/carousel.config.scss +1 -1
  123. package/assets/sass/components/header.component.scss +5 -0
  124. package/assets/sass/components/nav.component.scss +7 -6
  125. package/assets/sass/components/nav.global.scss +54 -5
  126. package/assets/sass/elements/type.css +31 -1
  127. package/assets/sass/utilities/colours.scss +4 -1
  128. package/assets/ts/components/card/card.component.ts +1 -0
  129. package/assets/ts/components/content/content.component.ts +45 -4
  130. package/assets/ts/components/modal/modal.component.ts +3 -3
  131. package/assets/ts/components/nav/nav.component.ts +0 -1
  132. package/assets/ts/components/std-nav/std-nav.component.ts +33 -151
  133. package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +10 -1
  134. package/assets/ts/modules/nav.ts +65 -21
  135. package/dist/components.es.js +24 -24
  136. package/dist/components.umd.js +146 -152
  137. package/package.json +1 -1
@@ -119,7 +119,7 @@ nav:has(:is(iam-nav,.iam-nav)) {
119
119
  position: absolute;
120
120
  top: 0;
121
121
  left: 0;
122
- width: 100%;
122
+ width: 100svw;
123
123
  z-index: var(--index-menu);
124
124
  }
125
125
  }
@@ -242,9 +242,52 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
242
242
  &[aria-current='page'] {
243
243
  text-decoration-color: var(--colour-info) !important;
244
244
  }
245
+
246
+ &[data-product][data-feature]:not([data-is-enabled="true"]) {
247
+ &:before {
248
+ content: "! ";
249
+ }
250
+ }
251
+
252
+ &[data-product][data-feature]:not([data-is-enabled="true"]) {
253
+ &:before {
254
+ content: "! ";
255
+ }
256
+ }
257
+
258
+ }
259
+
260
+ /* #region standard nav sections */
261
+ .section [data-title].section-title {
262
+
263
+ display: block;
264
+ }
265
+ .section [data-product].section-desc {
266
+
267
+ display: none;
268
+ }
269
+
270
+ .section:not(:has([data-product][data-feature][data-is-enabled="true"])):has([data-product].section-desc) {
271
+
272
+ [data-product].section-title {
273
+
274
+ display: none;
275
+ }
276
+ [data-product].section-desc {
277
+
278
+ display: block;
279
+ }
245
280
  }
246
281
 
282
+ .section:has([href="null"]):not(:has(a:not([href="null"]))){
247
283
 
284
+ display: none!important;
285
+ }
286
+
287
+ .section [href="null"]{
288
+ display: none!important;
289
+ }
290
+ /* #endregion */
248
291
  }
249
292
 
250
293
  @container style(--body-theme: dark) {
@@ -548,6 +591,10 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
548
591
  calc((100% - var(--container-max-width)) / 2 + var(--padding-inline))
549
592
  ) !important;
550
593
  box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
594
+ max-height: calc(100vh - var(--nav-height));
595
+ width: 100svw;
596
+ overflow: auto;
597
+ flex-wrap: wrap;
551
598
 
552
599
  .lead {
553
600
 
@@ -670,7 +717,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
670
717
  }
671
718
  }
672
719
 
673
- > span.section.double {
720
+ > span.section.section--double {
674
721
 
675
722
  display: block;
676
723
  width: calc(66.66% - 6.875rem);
@@ -744,7 +791,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
744
791
  nav:has(:is(iam-nav,.iam-nav).open) {
745
792
  min-height: 100vh !important;
746
793
  max-height: 100vh;
747
- overflow: auto;
794
+ overflow: visible;
748
795
 
749
796
  margin-bottom: calc((100vh - var(--nav-height)) * -1);
750
797
  }
@@ -763,6 +810,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
763
810
  display: inline-block;
764
811
  margin-left: 1.5rem;
765
812
  margin-bottom: 0!important;
813
+ font-size: 1rem;
766
814
 
767
815
  &:after {
768
816
  display: none;
@@ -785,6 +833,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
785
833
 
786
834
  .lead {
787
835
  --colour-heading: var(--colour-body);
836
+ color: var(--colour-body);
788
837
  font-size: 0.87rem !important;
789
838
  line-height: 1.5rem !important;
790
839
  margin: 0;
@@ -794,7 +843,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
794
843
  width: 0;
795
844
  }
796
845
 
797
- .section + .section {
846
+ .section:has(a:not([href=null])) + .section {
798
847
  border-top: 1px solid var(--colour-border);
799
848
  display: block;
800
849
  padding-top: 0.5rem;
@@ -991,7 +1040,7 @@ body[data-direction='down'].past100 nav:has(.nav--sticky) .nav--sticky{
991
1040
  }
992
1041
 
993
1042
  &.closed * {
994
- display: none !important;
1043
+ //display: none !important;
995
1044
  }
996
1045
  }
997
1046
 
@@ -38,12 +38,42 @@
38
38
  max-width: var(--content-max-width);
39
39
  }
40
40
 
41
- :is(.h4, h4, .h5, h5, .h6, h6) {
41
+ :is(h4, h5, h6) {
42
42
  font-size: var(--h4-fs);
43
43
  line-height: var(--h4-lh);
44
44
  padding-bottom: var(--h4-pb);
45
45
  max-width: var(--content-max-width);
46
46
  }
47
+
48
+ .h1 {
49
+ font-size: var(--h1-fs);
50
+ line-height: var(--h1-lh);
51
+ padding-bottom: var(--h1-pb);
52
+ font-weight: 900;
53
+ }
54
+
55
+ .h2 {
56
+ font-size: var(--h2-fs);
57
+ line-height: var(--h2-lh);
58
+ padding-bottom: var(--h2-pb);
59
+ font-weight: 900;
60
+ }
61
+
62
+ .h3 {
63
+ font-size: var(--h3-fs);
64
+ line-height: var(--h3-lh);
65
+ padding-bottom: var(--h3-pb);
66
+ max-width: var(--content-max-width);
67
+ }
68
+
69
+ :is(.h4, .h5, .h6) {
70
+ font-size: var(--h4-fs);
71
+ line-height: var(--h4-lh);
72
+ padding-bottom: var(--h4-pb);
73
+ max-width: var(--content-max-width);
74
+ }
75
+
76
+
47
77
  /* #endregion */
48
78
 
49
79
  p {
@@ -39,6 +39,9 @@
39
39
  }
40
40
 
41
41
  .text-body {
42
- color: var(--colour-body);
42
+ color: var(--colour-body) !important;
43
+ }
44
+ .text-muted {
45
+ color: var(--colour-muted) !important;
43
46
  }
44
47
  }
@@ -22,6 +22,7 @@ class iamCard extends HTMLElement {
22
22
  ${loadCSS}
23
23
  </style>
24
24
  ${cardHTML}
25
+ <slot name="link"></slot>
25
26
  <slot name="primary-action"></slot>
26
27
  `;
27
28
 
@@ -20,7 +20,7 @@ class iamContent extends HTMLElement {
20
20
  this.shadowRoot.appendChild(template.content.cloneNode(true));
21
21
  }
22
22
 
23
- addTitle = (title) => {
23
+ addTitle = (title):void => {
24
24
 
25
25
  if(this.hasAttribute('data-title-tag')){
26
26
 
@@ -30,6 +30,37 @@ class iamContent extends HTMLElement {
30
30
  return '';
31
31
  }
32
32
 
33
+ fixContent = (component):void => {
34
+
35
+ const transform = component.getAttribute('data-transform');
36
+ let wrapper = component;
37
+
38
+ if(transform){
39
+
40
+ component.querySelectorAll(`${transform} > *:empty`).forEach((element) => {
41
+ element.remove();
42
+ });
43
+
44
+ wrapper = component.querySelector(`${transform}`);
45
+ }
46
+ else {
47
+
48
+ component.querySelectorAll(`:scope > *:empty`).forEach((element) => {
49
+ element.remove();
50
+ });
51
+ }
52
+
53
+ const itemClass = component.getAttribute('data-items-class');
54
+
55
+ if(itemClass){
56
+
57
+ wrapper.querySelectorAll(`:scope > *`).forEach((element) => {
58
+ element.classList.add(itemClass);
59
+ });
60
+ }
61
+
62
+ }
63
+
33
64
  connectedCallback(): void {
34
65
  // eslint-disable-next-line @typescript-eslint/no-this-alias
35
66
  const component = this;
@@ -37,6 +68,8 @@ class iamContent extends HTMLElement {
37
68
 
38
69
  const transform = this.getAttribute('data-transform');
39
70
 
71
+ const fixContent = this.fixContent;
72
+
40
73
  let elementAttributes = '';
41
74
 
42
75
 
@@ -82,18 +115,26 @@ class iamContent extends HTMLElement {
82
115
 
83
116
  newXHRRequest.onload = function (): void {
84
117
  if (this.status === 200) {
85
- const response = JSON.parse(this.responseText);
118
+ let response = JSON.parse(this.responseText);
119
+
120
+ if(Array.isArray(response))
121
+ response = response[0];
86
122
 
87
123
  component.insertAdjacentHTML('beforebegin',addTitle(response.title.rendered));
88
124
 
125
+
89
126
  if(transform){
90
127
 
91
128
  component.innerHTML = `<${transform} ${elementAttributes}>${response.content.rendered}</${transform}>`;
92
129
  component.removeAttribute('class');
93
130
  }
94
- else
131
+ else {
132
+
95
133
  component.innerHTML = `${response.content.rendered}`;
96
-
134
+ console.log(response.content);
135
+ }
136
+
137
+ fixContent(component);
97
138
  registerComponents(component);
98
139
  }
99
140
  };
@@ -49,14 +49,14 @@ class iamModal extends HTMLElement {
49
49
  const agreedButton = this.querySelector('button[slot="agreed-button"]') ? this.querySelector('button[slot="agreed-button"]') : this.shadowRoot?.querySelector('[data-agreed]');
50
50
  const modalType = this.hasAttribute('data-type') ? this.getAttribute('data-type') : 'passive';
51
51
 
52
- const agreed = () => {
52
+ const agreed = (close = true) => {
53
53
  const agreedEvent = new CustomEvent('agreed', {
54
54
  detail: { modalId: id },
55
55
  });
56
56
 
57
57
  this.dispatchEvent(agreedEvent);
58
58
 
59
- if(!this.querySelector(':invalid'))
59
+ if(!this.querySelector(':invalid') && close)
60
60
  closeModal(this);
61
61
  }
62
62
 
@@ -131,7 +131,7 @@ class iamModal extends HTMLElement {
131
131
  closeModal(this);
132
132
  }
133
133
  else {
134
- agreed();
134
+ agreed(false);
135
135
  }
136
136
  });
137
137
 
@@ -20,7 +20,6 @@ class iamNav extends HTMLElement {
20
20
  template.innerHTML = `
21
21
  <style class="styles">
22
22
 
23
-
24
23
  ${loadCSS}
25
24
  </style>
26
25
  <style class="doc-styles">
@@ -1,4 +1,5 @@
1
1
  import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
2
+ import {populateNav,loadNavData,loadUserData,setEnabledLinks} from '../../modules/nav';
2
3
  import iamNav from '../nav/nav.component';
3
4
 
4
5
  // Data layer Web component created
@@ -8,134 +9,37 @@ declare global {
8
9
  }
9
10
  }
10
11
 
11
-
12
12
  class iamSTDNav extends HTMLElement {
13
13
  constructor() {
14
14
  super();
15
15
  }
16
16
 
17
- loadNavData = async(): any => {
18
-
19
- const ajaxURL = '/nav.json';
20
-
21
- // Setup controller vars if not already set
22
- if (!window.controller) window.controller = [];
23
-
24
- // Abort if controller already present for this url
25
- if (window.controller[ajaxURL]) window.controller[ajaxURL].abort();
26
-
27
- // Create a new controller so it can be aborted if new fetch made
28
- window.controller[ajaxURL] = new AbortController();
29
- const { signal } = window.controller[ajaxURL];
30
-
31
- try {
32
- return await fetch(ajaxURL, {
33
- signal: signal,
34
- method: 'get',
35
- credentials: 'same-origin',
36
- headers: new Headers({
37
- 'Content-Type': 'application/json',
38
- Accept: 'application/json',
39
- 'X-Requested-With': 'XMLHttpRequest',
40
- 'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
41
- }),
42
- })
43
- .then((response) => response.json())
44
- .then((response) => {
45
- // populate datalist
46
- let listString = '';
47
-
48
- const data = response['data'] ? response['data'] : response;
49
-
50
-
51
- return data;
52
- });
53
- } catch (error) {
54
- if (error?.name === 'AbortError') {
55
- return true;
56
- }
57
- console.log(error);
58
- return 'There has been a problem. Please try again in a few moments.';
59
- }
60
- }
61
-
62
- defaultToSecondary = (): void => {
63
-
64
- // Set links and details to secondary slot
65
- Array.from(this.querySelectorAll(':scope > a, :scope > details')).forEach((element) => {
66
-
67
- element.setAttribute('slot','secondary');
68
- });
69
-
70
- const defaultContent = this.innerHTML;
71
- this.outerHTML = `${defaultContent}`;
72
- }
73
-
74
17
  defaultToNav = ():void => {
75
18
 
76
19
  const defaultContent = this.innerHTML;
77
20
  this.innerHTML = `<iam-nav>
78
- ${defaultContent}
21
+ ${defaultContent}
79
22
  </iam-nav>`;
80
23
  }
81
24
 
82
- defaultToStandalone = ():void => {
83
- const defaultContent = this.innerHTML;
84
- this.wrapper.innerHTML = `<div class="container">${defaultContent}</div>`;
85
- }
86
-
87
- populateLinks = (data):void => {
88
-
89
- let html = ``;
90
-
91
- data.forEach((link) => {
92
-
93
- html += `
94
- <a href="${link.url}">${link.title}</a>`;
95
-
96
- });
97
-
98
- return html;
99
- }
100
-
101
- populateSections = (data):void => {
102
-
103
- let html = ``;
104
-
105
- data.forEach((section) => {
25
+ transformToNav = (data):void => {
26
+
27
+ // Remove current links
28
+ this.querySelector('iam-nav').querySelectorAll(`:scope > *`).forEach((element) => {
106
29
 
107
- html += `<span class="section ${section.class}">
108
- <span class="lead text-heading d-block">${section.enabled == "false" && section.marketing ? section.marketing : section.title}</span>
109
- ${this.populateLinks(section.links)}
110
- </span>`;
30
+ if(!element.hasAttribute('slot'))
31
+ element.remove();
111
32
  });
112
33
 
34
+ const defaultContent = this.querySelector('iam-nav').innerHTML;
113
35
 
114
-
115
-
116
- return html;
117
- }
118
-
119
- populateNav = (data):void => {
120
-
121
- let html = ``;
122
-
123
- data.forEach((feature) => {
124
-
125
- if(feature.attributes.sections)
126
- html += `<details name="megamenu"><summary>${feature.attributes.title}</summary><div data-title="${feature.attributes.title}">${this.populateSections(feature.attributes.sections)}</div></details>`;
127
- else if(feature.attributes.links)
128
- html += `<details name="megamenu"><summary>${feature.attributes.title}</summary><div data-title="${feature.attributes.title}">${this.populateLinks(feature.attributes.links)}</div></details>`;
129
- else
130
- html += `<a href="/">${feature.attributes.title}</a>`;
131
- });
132
-
133
- return html;
36
+ this.innerHTML = `<iam-nav ${(this.hasAttribute('class') ? `class="${this.getAttribute('class')}"`:'')}>
37
+ ${defaultContent}
38
+ ${populateNav(data)}
39
+ </iam-nav>`;
134
40
  }
135
41
 
136
- transformToSecondary = (data):void => {
137
-
138
- this.innerHTML = this.populateNav(data);
42
+ defaultToSecondary = (): void => {
139
43
 
140
44
  // Set links and details to secondary slot
141
45
  Array.from(this.querySelectorAll(':scope > a, :scope > details')).forEach((element) => {
@@ -147,50 +51,40 @@ class iamSTDNav extends HTMLElement {
147
51
  this.outerHTML = `${defaultContent}`;
148
52
  }
149
53
 
150
- transformToStandalone = (data):void => {
54
+ transformToSecondary = (data):void => {
55
+
56
+ this.innerHTML = populateNav(data);
151
57
 
152
- this.wrapper.innerHTML = `<div class="container"><details><summary>Products</summary><div class="iam-nav">${this.populateNav(data)}</div></details></div>`;
153
-
154
58
  // Set links and details to secondary slot
155
- Array.from(this.wrapper.querySelectorAll('.iam-nav > a, .iam-nav > details')).forEach((element) => {
59
+ Array.from(this.querySelectorAll(':scope > a, :scope > details')).forEach((element) => {
156
60
 
157
61
  element.setAttribute('slot','secondary');
158
62
  });
159
63
 
160
- }
161
-
162
- transformToNav = (data):void => {
163
- this.innerHTML = `<iam-nav>
164
- <a href="/" class="brand brand--property" slot="logo">
165
- <svg>
166
- <title>iam key</title>
167
- <use xlink:href="/svg/logo.svg#logo-property"></use>
168
- </svg>
169
- </a>
170
- ${this.populateNav(data)}
171
- </iam-nav>`;
64
+ const defaultContent = this.innerHTML;
65
+ this.outerHTML = `${defaultContent}`;
172
66
  }
173
67
 
174
68
  async connectedCallback(): void {
175
69
 
70
+ const component = this;
176
71
  this.wrapper = this.shadowRoot?.querySelector('.wrapper');
177
72
 
178
73
  if (!window.customElements.get(`iam-nav`))
179
74
  window.customElements.define(`iam-nav`, iamNav);
180
-
181
-
75
+
182
76
  if(this.hasAttribute('data-hub')){
183
77
  this.defaultToNav();
184
78
  }
185
- else if (!this.closest('iam-nav')){
186
- this.defaultToStandalone();
187
- }
188
79
  else {
189
80
  //this.defaultToSecondary(); TODO: change this to show default content but still be able to update
190
81
  }
191
82
 
192
- const data = await this.loadNavData().then(
83
+
84
+ const data = await loadNavData(Cookies).then(
193
85
  (data) => {
86
+
87
+
194
88
  if(typeof data == 'string'){
195
89
 
196
90
  return data;
@@ -200,36 +94,24 @@ class iamSTDNav extends HTMLElement {
200
94
  if(this.hasAttribute('data-hub')){
201
95
  this.transformToNav(data);
202
96
  }
203
- else if(!this.closest('iam-nav')){
204
- this.transformToStandalone(data);
205
- }
206
97
  else {
207
98
  this.transformToSecondary(data);
208
- //this.transformToNav(data);
209
99
  }
210
100
 
211
101
  return true;
212
102
  }
213
103
  );
214
104
 
215
- }
216
-
217
- static get observedAttributes(): any {
218
- return [];
219
- }
220
-
221
- attributeChangedCallback(attrName, oldVal, newVal): void {
222
- const addressComponent = this.querySelector('iam-address-lookup');
105
+ const userData = await loadUserData(Cookies).then(
106
+ (data) => {
223
107
 
224
- switch (attrName) {
225
- case 'data-url': {
226
- if (oldVal != newVal && addressComponent) {
227
- addressComponent.setAttribute('data-url', newVal + '?search_string=');
228
- }
229
- break;
108
+ setEnabledLinks(component,data);
109
+ return true;
230
110
  }
231
- }
111
+ );
112
+
232
113
  }
114
+
233
115
  }
234
116
 
235
117
  export default iamSTDNav;
@@ -1,4 +1,4 @@
1
- import {populateNav,loadNavData} from '../../modules/nav';
1
+ import {populateNav,loadNavData,loadUserData,setEnabledLinks} from '../../modules/nav';
2
2
  import Cookies from '../../../../node_modules/js-cookie/dist/js.cookie.mjs';
3
3
 
4
4
  // Data layer Web component created
@@ -55,6 +55,7 @@ class iamSTDNavStandalone extends HTMLElement {
55
55
 
56
56
  async connectedCallback(): void {
57
57
 
58
+ const component = this;
58
59
  this.wrapper = this.shadowRoot?.querySelector('.wrapper');
59
60
  this.defaultToStandalone();
60
61
 
@@ -70,6 +71,14 @@ class iamSTDNavStandalone extends HTMLElement {
70
71
  return true;
71
72
  }
72
73
  );
74
+
75
+ const userData = await loadUserData(Cookies).then(
76
+ (data) => {
77
+
78
+ setEnabledLinks(component,data);
79
+ return true;
80
+ }
81
+ );
73
82
  }
74
83
  }
75
84