@iamproperty/components 7.7.1--beta13 → 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.
- package/assets/css/components/actionbar.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/applied-filters.css +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/button.component.css +1 -0
- package/assets/css/components/button.component.css.map +1 -0
- 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/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.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/content.component.css +1 -1
- package/assets/css/components/content.component.css.map +1 -1
- package/assets/css/components/doughnutchart.component.css +1 -1
- package/assets/css/components/doughnutchart.component.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/menu.component.css +1 -1
- package/assets/css/components/menu.component.css.map +1 -1
- package/assets/css/components/menu.global.css +1 -1
- package/assets/css/components/menu.global.css.map +1 -1
- package/assets/css/components/modal.component.css +1 -1
- package/assets/css/components/modal.component.css.map +1 -1
- package/assets/css/components/multi-step-modal.component.css +1 -1
- package/assets/css/components/multi-step-modal.component.css.map +1 -1
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.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/pagination.css +1 -1
- package/assets/css/components/pagination.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/split-button.component.css +1 -1
- package/assets/css/components/split-button.component.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tabs.config.css +1 -1
- package/assets/css/components/tabs.config.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/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/elements/badge-tag.css +1 -1
- package/assets/css/elements/badge-tag.css.map +1 -1
- package/assets/css/elements/buttons--special.css +1 -1
- package/assets/css/elements/buttons--special.css.map +1 -1
- package/assets/css/elements/buttons.css +1 -1
- package/assets/css/elements/buttons.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 +3 -3
- package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/button/button.component.js +49 -0
- package/assets/js/components/button/button.component.min.js +13 -0
- package/assets/js/components/button/button.component.min.js.map +1 -0
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +3 -3
- package/assets/js/components/carousel/carousel.component.js +12 -1
- package/assets/js/components/carousel/carousel.component.min.js +4 -4
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- 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 +9 -3
- package/assets/js/components/content/content.component.min.js +5 -7
- 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 +2 -2
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- 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 +1 -1
- 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 +4 -4
- 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.min.js +2 -2
- 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 +2 -2
- package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
- package/assets/js/components/nav/nav.component.js +1 -1
- package/assets/js/components/nav/nav.component.min.js +4 -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 +2 -2
- 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 +3 -3
- package/assets/js/components/rating/rating.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.js +1 -0
- package/assets/js/components/search/search.component.min.js +2 -2
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/split-button/split-button.component.min.js +4 -4
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +2 -2
- package/assets/js/components/std-nav/std-nav.component.js +137 -0
- package/assets/js/components/std-nav/std-nav.component.min.js +63 -0
- package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -0
- package/assets/js/components/table/table.component.min.js +2 -2
- package/assets/js/components/table-ajax/table-ajax.component.min.js +2 -2
- 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 +2 -2
- package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
- package/assets/js/components/tabs/tabs.component.min.js +4 -4
- package/assets/js/components/tabs/tabs.component.min.js.map +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 +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +2 -2
- package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/carousel.js +16 -0
- package/assets/js/modules/tabs.js +8 -1
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/components/button.component.scss +5 -0
- package/assets/sass/components/menu.component.scss +5 -5
- package/assets/sass/components/menu.global.scss +7 -0
- package/assets/sass/components/nav.global.scss +2 -2
- package/assets/sass/components/tabs.config.scss +2 -2
- package/assets/sass/elements/badge-tag.css +4 -0
- package/assets/sass/elements/buttons--special.css +1 -1
- package/assets/sass/elements/type.css +10 -0
- package/assets/sass/foundations/colours.scss +0 -1
- package/assets/sass/foundations/root.scss +1 -1
- package/assets/ts/components/button/button.component.ts +66 -0
- package/assets/ts/components/carousel/carousel.component.ts +15 -0
- package/assets/ts/components/content/content.component.ts +15 -3
- package/assets/ts/components/nav/nav.component.ts +1 -1
- package/assets/ts/components/search/search.component.ts +1 -0
- package/assets/ts/components/std-nav/std-nav.component.ts +179 -0
- package/assets/ts/modules/carousel.ts +24 -0
- package/assets/ts/modules/tabs.ts +10 -1
- package/dist/components.es.js +26 -26
- package/dist/components.umd.js +213 -149
- package/package.json +1 -1
- package/src/components/Button/Button.vue +20 -0
- package/src/components/STDNav/STDNav.vue +22 -0
|
@@ -59,6 +59,16 @@
|
|
|
59
59
|
padding-bottom: 1.5rem;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/* #region CMS support */
|
|
63
|
+
p:empty {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
p:has(a:first-child:last-child){
|
|
68
|
+
/* display: contents; */
|
|
69
|
+
}
|
|
70
|
+
/* #endregion */
|
|
71
|
+
|
|
62
72
|
:is(.lead, .strapline) {
|
|
63
73
|
font-size: 1.125rem; /* 18/16 */
|
|
64
74
|
line-height: 1.75rem; /* 28/16 */
|
|
@@ -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:
|
|
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;
|
|
@@ -79,6 +79,21 @@ class iamCarousel extends HTMLElement {
|
|
|
79
79
|
|
|
80
80
|
carousel(carouselComponent);
|
|
81
81
|
|
|
82
|
+
const observer = new MutationObserver(function (mutations) {
|
|
83
|
+
mutations.forEach(function (mutationRecord) {
|
|
84
|
+
const targetElement = mutationRecord.target as HTMLElement;
|
|
85
|
+
|
|
86
|
+
updateCarousel(targetElement);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
observer.observe(carouselComponent, {
|
|
91
|
+
attributes: false,
|
|
92
|
+
childList: true,
|
|
93
|
+
subtree: true,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
|
|
82
97
|
trackComponent(carouselComponent, 'iam-carousel', [
|
|
83
98
|
'pip-clicked',
|
|
84
99
|
'next-clicked',
|
|
@@ -15,18 +15,28 @@ class iamContent extends HTMLElement {
|
|
|
15
15
|
|
|
16
16
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
17
17
|
</style>
|
|
18
|
-
<
|
|
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);
|
|
@@ -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;
|
|
@@ -272,6 +272,30 @@ export const carousel = function (carouselComponent): void {
|
|
|
272
272
|
|
|
273
273
|
export const updateCarousel = function (carouselComponent): void {
|
|
274
274
|
|
|
275
|
+
const carouselElement = carouselComponent.shadowRoot.querySelector('.carousel');
|
|
276
|
+
const carouselInner = carouselElement.querySelector('.carousel__inner');
|
|
277
|
+
const carouselControls = carouselElement.querySelector('.carousel__controls');
|
|
278
|
+
const carouselProgress = carouselElement.querySelector('.carousel__progress [type="range"]');
|
|
279
|
+
const itemCount = carouselComponent.querySelectorAll(':scope > div').length;
|
|
280
|
+
|
|
281
|
+
let scrollArea = carouselInner.clientWidth;
|
|
282
|
+
let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
|
|
283
|
+
let visibleItems = Math.round(scrollArea / itemWidth);
|
|
284
|
+
|
|
285
|
+
carouselProgress.setAttribute('min', 1);
|
|
286
|
+
carouselProgress.setAttribute('step', visibleItems);
|
|
287
|
+
|
|
288
|
+
let progressMax = getProgressMax(itemCount, visibleItems);
|
|
289
|
+
|
|
290
|
+
carouselProgress.setAttribute('max', progressMax);
|
|
291
|
+
carouselProgress.value = 1;
|
|
292
|
+
|
|
293
|
+
let percent = getProgressPercent(1, progressMax);
|
|
294
|
+
|
|
295
|
+
carouselProgress.style.setProperty('--percent', percent + '%');
|
|
296
|
+
|
|
297
|
+
carouselControls.innerHTML = generatePipsHTML(carouselComponent, []);
|
|
298
|
+
|
|
275
299
|
}
|
|
276
300
|
|
|
277
301
|
export default carousel;
|
|
@@ -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)
|
|
223
|
+
if (detailsOpen) {
|
|
224
|
+
detail.setAttribute('open', detailsOpen);
|
|
225
|
+
}
|
|
217
226
|
else detail.removeAttribute('open');
|
|
218
227
|
});
|
|
219
228
|
};
|