@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.
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/card.module.css +1 -1
- package/assets/css/components/card.module.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/carousel.config.css +1 -1
- package/assets/css/components/carousel.config.css.map +1 -1
- package/assets/css/components/collapsible-side.css +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/config.component.css +1 -1
- package/assets/css/components/config.component.css.map +1 -1
- package/assets/css/components/filter-card.component.css +1 -1
- package/assets/css/components/filter-card.component.css.map +1 -1
- package/assets/css/components/header.component.css +1 -1
- package/assets/css/components/header.component.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.css.map +1 -1
- package/assets/css/components/nav.global.css +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/rank.component.css +1 -1
- package/assets/css/components/rank.component.css.map +1 -1
- package/assets/css/components/rankings.component.css +1 -1
- package/assets/css/components/rankings.component.css.map +1 -1
- package/assets/css/components/rankings.global.css +1 -1
- package/assets/css/components/rankings.global.css.map +1 -1
- package/assets/css/components/record-card.component.css +1 -1
- package/assets/css/components/record-card.component.css.map +1 -1
- package/assets/css/components/std-nav-standalone.component.css +1 -1
- package/assets/css/components/std-nav-standalone.component.css.map +1 -1
- package/assets/css/components/video-card.component.css +1 -1
- package/assets/css/components/video-card.component.css.map +1 -1
- package/assets/css/components/video-modal.component.css +1 -1
- package/assets/css/components/video-modal.component.css.map +1 -1
- package/assets/css/components/video.component.css +1 -1
- package/assets/css/components/video.component.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/elements/type.css +1 -1
- package/assets/css/elements/type.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/button/button.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.js +1 -0
- package/assets/js/components/card/card.component.min.js +6 -5
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +4 -4
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
- package/assets/js/components/config/config.component.min.js +2 -2
- package/assets/js/components/content/content.component.js +29 -2
- package/assets/js/components/content/content.component.min.js +3 -3
- package/assets/js/components/content/content.component.min.js.map +1 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/form/form.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +2 -2
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/input/input.component.min.js +1 -1
- package/assets/js/components/input-range/input-range.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/modal/modal.component.js +3 -3
- package/assets/js/components/modal/modal.component.min.js +2 -2
- package/assets/js/components/modal/modal.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
- package/assets/js/components/nav/nav.component.js +0 -1
- package/assets/js/components/nav/nav.component.min.js +3 -4
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/password/password.component.min.js +1 -1
- package/assets/js/components/popover/popover.component.min.js +1 -1
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +6 -6
- package/assets/js/components/rating/rating.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +2 -2
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/split-button/split-button.component.min.js +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +1 -1
- package/assets/js/components/std-nav/std-nav.component.js +24 -118
- package/assets/js/components/std-nav/std-nav.component.min.js +15 -21
- package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.js +6 -1
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +8 -8
- package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/components/tag/tag.component.min.js +1 -1
- package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
- package/assets/js/components/video/video.component.min.js +5 -5
- package/assets/js/components/video-card/video-card.component.min.js +2 -2
- package/assets/js/components/video-modal/video-modal.component.min.js +2 -2
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/nav.js +56 -21
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/components/card.component.scss +27 -0
- package/assets/sass/components/card.module.scss +3 -2
- package/assets/sass/components/carousel.component.scss +14 -0
- package/assets/sass/components/carousel.config.scss +1 -1
- package/assets/sass/components/header.component.scss +5 -0
- package/assets/sass/components/nav.component.scss +7 -6
- package/assets/sass/components/nav.global.scss +54 -5
- package/assets/sass/elements/type.css +31 -1
- package/assets/sass/utilities/colours.scss +4 -1
- package/assets/ts/components/card/card.component.ts +1 -0
- package/assets/ts/components/content/content.component.ts +45 -4
- package/assets/ts/components/modal/modal.component.ts +3 -3
- package/assets/ts/components/nav/nav.component.ts +0 -1
- package/assets/ts/components/std-nav/std-nav.component.ts +33 -151
- package/assets/ts/components/std-nav-standalone/std-nav-standalone.component.ts +10 -1
- package/assets/ts/modules/nav.ts +65 -21
- package/dist/components.es.js +24 -24
- package/dist/components.umd.js +146 -152
- 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:
|
|
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:
|
|
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(
|
|
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 {
|
|
@@ -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
|
-
|
|
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
|
|
|
@@ -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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
225
|
-
|
|
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
|
|