@iamproperty/components 6.1.0--beta → 6.1.0--beta2
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.css.map +1 -1
- package/assets/css/components/actionbar.global.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 -0
- package/assets/css/components/carousel.component.css.map +1 -0
- package/assets/css/components/carousel.config.css +1 -0
- package/assets/css/components/carousel.config.css.map +1 -0
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/marketing.css.map +1 -1
- package/assets/css/components/multi-step.component.css +1 -0
- package/assets/css/components/multi-step.component.css.map +1 -0
- package/assets/css/components/multiselect.preload.css.map +1 -1
- package/assets/css/components/nav.css.map +1 -1
- package/assets/css/components/nav.docs.css.map +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/nav.old.css.map +1 -1
- package/assets/css/components/nav.preload.css +1 -1
- package/assets/css/components/nav.preload.css.map +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/property-searchbar.css.map +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/snapshot.css.map +1 -1
- package/assets/css/components/stepper.css.map +1 -1
- package/assets/css/components/table.global.css.map +1 -1
- package/assets/css/components/tabs.css +1 -1
- package/assets/css/components/tabs.css.map +1 -1
- package/assets/css/components/testimonial.css.map +1 -1
- package/assets/css/components/timeline.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/img/illustrations/not-found.png +0 -0
- package/assets/js/components/accordion/accordion.component.min.js +2 -2
- package/assets/js/components/actionbar/actionbar.component.min.js +6 -6
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
- package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +3 -3
- package/assets/js/components/carousel/carousel.component.js +36 -41
- package/assets/js/components/carousel/carousel.component.min.js +18 -12
- 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/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
- package/assets/js/components/filterlist/filterlist.component.min.js +2 -2
- package/assets/js/components/header/header.component.min.js +3 -3
- package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
- package/assets/js/components/marketing/marketing.component.min.js +2 -2
- package/assets/js/components/multi-step/multi-step.component.js +162 -0
- package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
- package/assets/js/components/nav/nav.component.min.js +2 -2
- package/assets/js/components/notification/notification.component.min.js +2 -2
- package/assets/js/components/pagination/pagination.component.min.js +2 -2
- package/assets/js/components/record-card/record-card.component.min.js +2 -2
- package/assets/js/components/search/search.component.min.js +2 -2
- package/assets/js/components/slider/slider.component.min.js +2 -2
- package/assets/js/components/table/table.component.js +1 -1
- package/assets/js/components/table/table.component.min.js +3 -3
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +3 -3
- package/assets/js/components/video-card/video-card.component.min.js +2 -2
- package/assets/js/components.bundle.js +3 -3
- package/assets/js/components.bundle.js.map +1 -1
- package/assets/js/components.js +1 -1
- package/assets/js/modules/carousel.js +110 -8
- package/assets/js/modules/dialogs.js +5 -123
- package/assets/js/scripts.bundle.js +4 -4
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +3 -3
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/sass/_components.scss +3 -19
- package/assets/sass/_corefiles.scss +15 -0
- package/assets/sass/_func.scss +3 -0
- package/assets/sass/_functions/functions.scss +304 -1
- package/assets/sass/_functions/mixins.scss +458 -2
- package/assets/sass/_functions/utilities.scss +647 -2
- package/assets/sass/_functions/variables.scss +1724 -2
- package/assets/sass/_utilities.scss +126 -7
- package/assets/sass/components/carousel.component.scss +605 -0
- package/assets/sass/components/carousel.config.scss +84 -0
- package/assets/sass/components/header.scss +1 -0
- package/assets/sass/components/multi-step.component.scss +148 -0
- package/assets/sass/components/nav.preload.scss +5 -0
- package/assets/sass/components/tabs.scss +1 -1
- package/assets/sass/elements/admin-panel.scss +2 -1
- package/assets/sass/elements/buttons.scss +33 -0
- package/assets/sass/elements/container.scss +16 -6
- package/assets/sass/elements/details.scss +2 -0
- package/assets/sass/elements/forms.scss +236 -24
- package/assets/sass/elements/links.scss +27 -4
- package/assets/sass/elements/lists.scss +46 -0
- package/assets/sass/elements/media.scss +11 -1
- package/assets/sass/elements/modal.scss +138 -238
- package/assets/sass/elements/table.element.scss +35 -0
- package/assets/sass/elements/type.scss +38 -2
- package/assets/sass/error.scss +32 -1
- package/assets/sass/foundations/bs_grid.scss +33 -0
- package/assets/sass/foundations/grid.scss +270 -0
- package/assets/sass/foundations/reboot.scss +71 -49
- package/assets/sass/foundations/root.scss +16 -2
- package/assets/ts/components/carousel/carousel.component.ts +51 -44
- package/assets/ts/components/multi-step/multi-step.component.ts +262 -0
- package/assets/ts/components/table/table.component.ts +2 -1
- package/assets/ts/components.ts +1 -1
- package/assets/ts/modules/carousel.ts +161 -7
- package/assets/ts/modules/dialogs.ts +6 -174
- package/dist/components.es.js +177 -193
- package/dist/components.umd.js +73 -67
- package/dist/style.css +1 -1
- package/package.json +3 -2
- package/src/components/Carousel/Carousel.vue +1 -15
- package/src/components/FilterCard/FilterCard.vue +1 -1
- package/src/components/MultiStep/MultiStep.vue +25 -0
- package/src/components/RecordCard/RecordCard.vue +1 -1
- package/src/components/VideoCard/VideoCard.vue +1 -1
- package/assets/css/components/carousel.css +0 -1
- package/assets/css/components/carousel.css.map +0 -1
- package/assets/css/components/carousel.preload.css +0 -1
- package/assets/css/components/carousel.preload.css.map +0 -1
- package/assets/sass/components/carousel.preload.scss +0 -82
- package/assets/sass/components/carousel.scss +0 -258
- package/assets/ts/tests/dialogs.spec.js +0 -50
|
@@ -1,9 +1,62 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
function
|
|
2
|
+
export const generateThumbnailList = function (carouselComponent) {
|
|
3
|
+
let thumbnailImages = [];
|
|
4
|
+
Array.from(carouselComponent.querySelectorAll(':scope > div')).forEach((slide, index) => {
|
|
5
|
+
if (slide.hasAttribute('data-thumbnail')) {
|
|
6
|
+
thumbnailImages[index] = slide.getAttribute('data-thumbnail');
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
return thumbnailImages;
|
|
10
|
+
};
|
|
11
|
+
export const generatePipsHTML = function (carouselComponent, thumbnailImages) {
|
|
12
|
+
let itemCount = carouselComponent.querySelectorAll(':scope > div').length;
|
|
13
|
+
let pips = "";
|
|
14
|
+
for (let i = 1; i <= itemCount; i++) {
|
|
15
|
+
let pipContent = null;
|
|
16
|
+
let pipClass = '';
|
|
17
|
+
if (thumbnailImages.length && thumbnailImages[i - 1]) {
|
|
18
|
+
pipClass = 'has-thumbnail';
|
|
19
|
+
pipContent = `<img src="${thumbnailImages[i - 1]}" alt="Slide ${i}" height="148"/>`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
pipContent = `Slide ${i}`;
|
|
23
|
+
}
|
|
24
|
+
pips += `<button class="control-${i} ${pipClass}" data-slide="${i}" ${i == 1 ? "aria-current" : ""}>${pipContent}</button>`;
|
|
25
|
+
}
|
|
26
|
+
return pips;
|
|
27
|
+
};
|
|
28
|
+
const getProgressMax = function (itemCount, visibleItems) {
|
|
29
|
+
if (visibleItems == 1) {
|
|
30
|
+
return itemCount;
|
|
31
|
+
}
|
|
32
|
+
let max = (Math.ceil(itemCount / visibleItems) * visibleItems) - visibleItems;
|
|
33
|
+
return max + 1;
|
|
34
|
+
};
|
|
35
|
+
const getProgressPercent = function (value, max) {
|
|
36
|
+
return (((value - 1) / (max - 1)) * 100);
|
|
37
|
+
};
|
|
38
|
+
export const carousel = function (carouselComponent) {
|
|
3
39
|
var scrollTimeout;
|
|
40
|
+
const carouselElement = carouselComponent.shadowRoot.querySelector('.carousel');
|
|
4
41
|
let carouselInner = carouselElement.querySelector('.carousel__inner');
|
|
5
42
|
let carouselControls = carouselElement.querySelector('.carousel__controls');
|
|
6
|
-
let
|
|
43
|
+
let carouselProgress = carouselElement.querySelector('.carousel__progress [type="range"]');
|
|
44
|
+
let itemCount = carouselComponent.querySelectorAll(':scope > div').length;
|
|
45
|
+
let scrollArea = carouselInner.clientWidth;
|
|
46
|
+
let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
|
|
47
|
+
let visibleItems = Math.round(scrollArea / itemWidth);
|
|
48
|
+
carouselProgress.setAttribute('min', 1);
|
|
49
|
+
carouselProgress.setAttribute('step', visibleItems);
|
|
50
|
+
let progressMax = getProgressMax(itemCount, visibleItems);
|
|
51
|
+
carouselProgress.setAttribute('max', progressMax);
|
|
52
|
+
carouselProgress.value = 1;
|
|
53
|
+
let percent = getProgressPercent(1, progressMax);
|
|
54
|
+
carouselProgress.style.setProperty('--percent', percent + "%");
|
|
55
|
+
let stepperInterval, stepperEvent = "mouseup", stepperStart = "mousedown";
|
|
56
|
+
if ("ontouchstart" in document.documentElement) {
|
|
57
|
+
stepperEvent = "touchend";
|
|
58
|
+
stepperStart = "touchstart";
|
|
59
|
+
}
|
|
7
60
|
// On scroll we need to make sure the buttons get corrected and the next testimonial is shown
|
|
8
61
|
carouselInner.addEventListener('scroll', function (e) {
|
|
9
62
|
clearTimeout(scrollTimeout);
|
|
@@ -12,13 +65,14 @@ function carousel(carouselElement, row) {
|
|
|
12
65
|
let scrollWidth = carouselInner.scrollWidth;
|
|
13
66
|
let scrollLeft = carouselInner.scrollLeft;
|
|
14
67
|
let targetSlide = Math.round((scrollLeft / scrollWidth) * itemCount) + 1;
|
|
15
|
-
let itemWidth =
|
|
16
|
-
let lastItemOffset =
|
|
68
|
+
let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
|
|
69
|
+
let lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
|
|
17
70
|
//+60px here is to account for when the next offscreen slide is visible beneath the next arrow
|
|
18
71
|
let lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= (lastItemOffset + 60);
|
|
19
72
|
let visibleItems = Math.round(scrollArea / itemWidth);
|
|
20
73
|
//Check if theres room for more slides than we have
|
|
21
74
|
let leftOverSpace = (Math.ceil(itemCount / visibleItems) * visibleItems) - itemCount;
|
|
75
|
+
carouselProgress.setAttribute('step', visibleItems);
|
|
22
76
|
if (leftOverSpace > 0 && lastItemInView) {
|
|
23
77
|
targetSlide = (Math.floor(itemCount / visibleItems) * visibleItems) + 1;
|
|
24
78
|
}
|
|
@@ -36,6 +90,12 @@ function carousel(carouselElement, row) {
|
|
|
36
90
|
carouselElement.querySelector('.btn-next').setAttribute('disabled', 'disabled');
|
|
37
91
|
else
|
|
38
92
|
carouselElement.querySelector('.btn-next').removeAttribute('disabled');
|
|
93
|
+
carouselProgress.value = targetSlide;
|
|
94
|
+
progressMax = getProgressMax(itemCount, visibleItems);
|
|
95
|
+
carouselProgress.setAttribute('max', progressMax);
|
|
96
|
+
percent = (targetSlide / progressMax) * 100;
|
|
97
|
+
percent = getProgressPercent(targetSlide, progressMax);
|
|
98
|
+
carouselProgress.style.setProperty('--percent', percent + "%");
|
|
39
99
|
}, 100);
|
|
40
100
|
}, false);
|
|
41
101
|
// when the buttons are used we need to make sure the carousel scrolls to the correct place
|
|
@@ -47,7 +107,12 @@ function carousel(carouselElement, row) {
|
|
|
47
107
|
button.removeAttribute('aria-current');
|
|
48
108
|
});
|
|
49
109
|
target.setAttribute('aria-current', true);
|
|
50
|
-
const
|
|
110
|
+
const customEvent = new CustomEvent("pip-clicked", { detail: {
|
|
111
|
+
'slide': target.getAttribute('data-slide')
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
carouselComponent.dispatchEvent(customEvent);
|
|
115
|
+
const el = carouselComponent.querySelector(`:scope > *:nth-child(${target.getAttribute('data-slide')})`);
|
|
51
116
|
carouselInner.scroll({
|
|
52
117
|
top: 0,
|
|
53
118
|
left: el.offsetLeft - carouselInner.getBoundingClientRect().left,
|
|
@@ -60,9 +125,9 @@ function carousel(carouselElement, row) {
|
|
|
60
125
|
carouselElement.addEventListener('click', function (e) {
|
|
61
126
|
let scrollArea = carouselInner.clientWidth;
|
|
62
127
|
let scrollWidth = carouselInner.scrollWidth;
|
|
63
|
-
let itemWidth =
|
|
128
|
+
let itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
|
|
64
129
|
let visibleItems = Math.round(scrollArea / itemWidth);
|
|
65
|
-
let lastItemOffset =
|
|
130
|
+
let lastItemOffset = carouselComponent.querySelector(':scope > div:last-child').offsetLeft;
|
|
66
131
|
let lastItemInView = carouselInner.scrollLeft + scrollArea + carouselInner.getBoundingClientRect().left >= (lastItemOffset + 60);
|
|
67
132
|
//Check if theres room for more slides than we have
|
|
68
133
|
let leftOverSpace = (Math.ceil(itemCount / visibleItems) * visibleItems) - itemCount;
|
|
@@ -75,6 +140,12 @@ function carousel(carouselElement, row) {
|
|
|
75
140
|
let movement = lastItemInView && leftOverSpace > 0 ? spacesToMove * itemWidth : carouselInner.clientWidth;
|
|
76
141
|
for (var target = e.target; target && target != this; target = target.parentNode) {
|
|
77
142
|
if (typeof target.matches == "function" && target.matches('.btn-next, .btn-prev')) {
|
|
143
|
+
let direction = target.matches('.btn-next') ? 'next' : 'prev';
|
|
144
|
+
const customEvent = new CustomEvent(`${direction}-clicked`, { detail: {
|
|
145
|
+
'slide': target.getAttribute('data-go')
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
carouselComponent.dispatchEvent(customEvent);
|
|
78
149
|
e.preventDefault();
|
|
79
150
|
let scrollTo = target.classList.contains('btn-prev') ? carouselInner.scrollLeft - movement : carouselInner.scrollLeft + carouselInner.clientWidth;
|
|
80
151
|
carouselInner.scroll({
|
|
@@ -86,5 +157,36 @@ function carousel(carouselElement, row) {
|
|
|
86
157
|
}
|
|
87
158
|
}
|
|
88
159
|
}, false);
|
|
89
|
-
|
|
160
|
+
carouselProgress.addEventListener(stepperStart, function (event) {
|
|
161
|
+
clearInterval(stepperInterval);
|
|
162
|
+
stepperInterval = setInterval(function () {
|
|
163
|
+
scrollArea = carouselInner.clientWidth;
|
|
164
|
+
itemWidth = carouselComponent.querySelector(':scope > div').scrollWidth;
|
|
165
|
+
visibleItems = Math.round(scrollArea / itemWidth);
|
|
166
|
+
carouselProgress.setAttribute('step', visibleItems);
|
|
167
|
+
progressMax = getProgressMax(itemCount, visibleItems);
|
|
168
|
+
carouselProgress.setAttribute('max', progressMax);
|
|
169
|
+
percent = getProgressPercent(carouselProgress.value, progressMax);
|
|
170
|
+
carouselProgress.style.setProperty('--percent', percent + "%");
|
|
171
|
+
}, 10);
|
|
172
|
+
});
|
|
173
|
+
carouselProgress.addEventListener(stepperEvent, function (event) {
|
|
174
|
+
clearInterval(stepperInterval);
|
|
175
|
+
});
|
|
176
|
+
carouselProgress.addEventListener('change', function (e) {
|
|
177
|
+
clearInterval(stepperInterval);
|
|
178
|
+
let target = carouselComponent.querySelector(`:scope > *:nth-child(${carouselProgress.value})`);
|
|
179
|
+
carouselInner.scroll({
|
|
180
|
+
top: 0,
|
|
181
|
+
left: target ? target.offsetLeft - carouselInner.getBoundingClientRect().left : 0,
|
|
182
|
+
behavior: 'smooth'
|
|
183
|
+
});
|
|
184
|
+
let direction = target.matches('.btn-next') ? 'next' : 'prev';
|
|
185
|
+
const customEvent = new CustomEvent(`slider-changed`, { detail: {
|
|
186
|
+
'slide': carouselProgress.value
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
carouselComponent.dispatchEvent(customEvent);
|
|
190
|
+
}, false);
|
|
191
|
+
};
|
|
90
192
|
export default carousel;
|
|
@@ -22,8 +22,10 @@ const extendDialogs = (body) => {
|
|
|
22
22
|
// Open the modal!
|
|
23
23
|
dialog.showModal();
|
|
24
24
|
dialog.focus();
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
if (!dialog.querySelector('iam-multi-step')) {
|
|
26
|
+
let firstWidth = dialog.offsetWidth;
|
|
27
|
+
dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
|
|
28
|
+
}
|
|
27
29
|
// When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
|
|
28
30
|
Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element, index) => {
|
|
29
31
|
const id = element.getAttribute('data-duplicate');
|
|
@@ -168,12 +170,8 @@ const extendDialogs = (body) => {
|
|
|
168
170
|
return null;
|
|
169
171
|
};
|
|
170
172
|
export const createDialog = (dialog) => {
|
|
171
|
-
// Multi dialog
|
|
172
|
-
if (dialog.classList.contains('dialog--multi') && !dialog.querySelector(':scope > .steps')) {
|
|
173
|
-
createMultiFormDialog(dialog);
|
|
174
|
-
}
|
|
175
173
|
// If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
|
|
176
|
-
if (!dialog.querySelector(':scope .mh-lg') && !dialog.
|
|
174
|
+
if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
|
|
177
175
|
dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
|
|
178
176
|
let dialogContent = dialog.querySelector('.mh-lg');
|
|
179
177
|
let titleElement = dialog.querySelector('.mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)');
|
|
@@ -188,120 +186,4 @@ export const createDialog = (dialog) => {
|
|
|
188
186
|
if (!dialog.querySelector(':scope > button:first-child'))
|
|
189
187
|
dialog.insertAdjacentHTML('afterbegin', `<button class="dialog__close">Close</button>`);
|
|
190
188
|
};
|
|
191
|
-
export const createMultiFormDialog = (dialog) => {
|
|
192
|
-
let buttons = "";
|
|
193
|
-
let fieldsets = Array.from(dialog.querySelectorAll('fieldset[data-title]'));
|
|
194
|
-
let form = dialog.querySelector('form');
|
|
195
|
-
fieldsets.forEach((fieldset, index) => {
|
|
196
|
-
buttons += `<button data-title="${fieldset.getAttribute('data-title')}" type="button" class="${index == 0 ? "active" : ""}" tabindex="-1">${fieldset.getAttribute('data-title')}</button>`;
|
|
197
|
-
const btnWrapper = document.createElement("div");
|
|
198
|
-
btnWrapper.classList.add('btn--wrapper');
|
|
199
|
-
fieldset.appendChild(btnWrapper);
|
|
200
|
-
if (index != 0)
|
|
201
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index - 1].getAttribute('data-title')}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`;
|
|
202
|
-
if (index != fieldsets.length - 1)
|
|
203
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index + 1].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="button">Next</button>`;
|
|
204
|
-
// Last fieldset
|
|
205
|
-
if (index == fieldsets.length - 1) {
|
|
206
|
-
if (form && form.querySelector(':scope > button[type="submit"]')) {
|
|
207
|
-
let existingButton = form.querySelector(':scope > button[type="submit"]');
|
|
208
|
-
existingButton.classList.add('mb-0');
|
|
209
|
-
btnWrapper.insertAdjacentElement('beforeend', existingButton);
|
|
210
|
-
}
|
|
211
|
-
else
|
|
212
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`;
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
dialog.insertAdjacentHTML('afterbegin', `<div class="steps bg-primary">${buttons}</div>`);
|
|
216
|
-
// Open the fieldset with an error inside
|
|
217
|
-
let validatedFieldsets = Array.from(dialog.querySelectorAll('fieldset.was-validated'));
|
|
218
|
-
for (let i = 0; i < validatedFieldsets.length; i++) {
|
|
219
|
-
let fieldset = validatedFieldsets[i];
|
|
220
|
-
let fieldsetID = fieldset.getAttribute('data-title');
|
|
221
|
-
if (fieldset.querySelector('.is-invalid')) {
|
|
222
|
-
Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
|
|
223
|
-
element.classList.add('active');
|
|
224
|
-
});
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
|
|
229
|
-
element.classList.add('valid');
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
// Prevent the bubble messages
|
|
234
|
-
dialog.addEventListener('invalid', (function () {
|
|
235
|
-
return function (e) {
|
|
236
|
-
e.preventDefault();
|
|
237
|
-
};
|
|
238
|
-
})(), true);
|
|
239
|
-
function validateFieldset(button) {
|
|
240
|
-
const currentFieldset = dialog.querySelector(`fieldset.active`) ? dialog.querySelector(`fieldset.active`) : dialog.querySelector(`fieldset[data-title]`);
|
|
241
|
-
const currentFieldsetID = currentFieldset.getAttribute('data-title');
|
|
242
|
-
let isFieldsetValid = true;
|
|
243
|
-
currentFieldset.classList.add('was-validated');
|
|
244
|
-
Array.from(currentFieldset.querySelectorAll('input')).forEach((input, index) => {
|
|
245
|
-
if (!input.checkValidity())
|
|
246
|
-
isFieldsetValid = false;
|
|
247
|
-
});
|
|
248
|
-
// If valid mode to next field set
|
|
249
|
-
if (!isFieldsetValid) {
|
|
250
|
-
Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
|
|
251
|
-
element.classList.remove('valid');
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
|
|
256
|
-
element.classList.add('valid');
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
// Allow the previous button to navigate
|
|
260
|
-
if (isFieldsetValid || !button.hasAttribute('data-next')) {
|
|
261
|
-
const fieldset = dialog.querySelector(`fieldset[data-title="${button.getAttribute('data-title')}"]`);
|
|
262
|
-
const step = dialog.querySelector(`.steps button[data-title="${button.getAttribute('data-title')}"]`);
|
|
263
|
-
Array.from(dialog.querySelectorAll('button')).forEach((button, index) => {
|
|
264
|
-
button.classList.remove('active');
|
|
265
|
-
});
|
|
266
|
-
Array.from(dialog.querySelectorAll('fieldset')).forEach((button, index) => {
|
|
267
|
-
button.classList.remove('active');
|
|
268
|
-
});
|
|
269
|
-
step.classList.add('active');
|
|
270
|
-
fieldset.classList.add('active');
|
|
271
|
-
}
|
|
272
|
-
let fieldsetCount = Array.from(dialog.querySelectorAll(`fieldset`)).length;
|
|
273
|
-
let validFieldsetCount = Array.from(dialog.querySelectorAll(`fieldset.valid`)).length;
|
|
274
|
-
// update the progress bar
|
|
275
|
-
dialog.style.setProperty('--progress', `${(validFieldsetCount / (fieldsetCount - 1) * 100)}%`);
|
|
276
|
-
}
|
|
277
|
-
// remove error messages from server
|
|
278
|
-
dialog.addEventListener('keydown', (event) => {
|
|
279
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('button')) {
|
|
280
|
-
const button = event.target.closest('button');
|
|
281
|
-
if (event.keyCode == 13 && button.getAttribute('type') != "submit") {
|
|
282
|
-
event.preventDefault();
|
|
283
|
-
validateFieldset(button);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('input')) {
|
|
287
|
-
const input = event.target.closest('input');
|
|
288
|
-
input.classList.remove('is-invalid');
|
|
289
|
-
if (event.keyCode == 13) {
|
|
290
|
-
event.preventDefault();
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
dialog.addEventListener('click', (event) => {
|
|
295
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('button[type="submit"]')) {
|
|
296
|
-
const form = event.target.closest('form');
|
|
297
|
-
form.classList.add('was-validated');
|
|
298
|
-
}
|
|
299
|
-
else if (event && event.target instanceof HTMLElement && event.target.closest('button[data-title]')) {
|
|
300
|
-
const button = event.target.closest('button[data-title]');
|
|
301
|
-
validateFieldset(button);
|
|
302
|
-
}
|
|
303
|
-
;
|
|
304
|
-
return null;
|
|
305
|
-
});
|
|
306
|
-
};
|
|
307
189
|
export default extendDialogs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* iamKey v6.1.0--
|
|
3
|
-
* Copyright 2022-
|
|
4
|
-
*/(function(b){typeof define=="function"&&define.amd?define(b):b()})(function(){"use strict";var b=a=>(a.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&a.classList.add("ie"),null),C=a=>{var t=function(e){var c=document.querySelector('label[for="'.concat(e.replace("#",""),'"]')),s=document.querySelector(e+" summary"),i=document.querySelector("dialog".concat(e)),n=document.querySelector("detail".concat(e));c instanceof HTMLElement?c.click():s instanceof HTMLElement?s.click():i instanceof HTMLElement?i.showModal():n instanceof HTMLElement&&n.addAttribute("open")};return location.hash&&t(location.hash),window.addEventListener("hashchange",function(){t(location.hash)},!1),addEventListener("popstate",r=>{if(r&&r.state&&r.state.type&&r.state.type=="pagination"){var e=document.querySelector("#".concat(r.state.form)),c=document.querySelector("#".concat(r.state.form," [data-pagination]"));c?c.value=r.state.page:e.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(r.state.page,'" />'),e.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",r=>{if(r&&r.target instanceof HTMLElement&&r.target.matches("form")){var e=r.target;Array.from(e.querySelectorAll("[data-password-type]")).forEach((c,s)=>{c.setAttribute("type","password")}),(e.querySelector(":invalid")||e.querySelector('.pwd-checker[data-strength="1"]')||e.querySelector('.pwd-checker[data-strength="2"]'))&&(e.classList.add("was-validated"),r.preventDefault()),e.querySelector("iam-multiselect[data-is-required][data-error]")&&(e.classList.add("was-validated"),r.preventDefault())}}),document.addEventListener("keydown",r=>{r.key==="Escape"&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(r.preventDefault(),r.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach((r,e)=>{var c=r.closest("label");c.setAttribute("data-percent",r.getAttribute("value"))}),null},H=a=>(Array.from(a.querySelectorAll("dialog[open]")).forEach((t,r)=>{var e=t.closest(".dialog__wrapper");e||(t.removeAttribute("open"),t.showModal(),t.focus(),k(t))}),a.addEventListener("click",t=>{if(t.target.tagName=="IAM-ACTIONBAR")return!1;if(t&&t.target instanceof HTMLElement&&t.target.closest("[data-modal]")){var r=t.target.closest("[data-modal]"),e=r.hasAttribute("data-modal")?r.getAttribute("data-modal"):r.getAttribute("data-filter"),c=document.querySelector("dialog#".concat(e));k(c),c.showModal(),c.focus();var s=c.offsetWidth;c.setAttribute("style","max-width: ".concat(s,"px;")),Array.from(c.querySelectorAll("[data-duplicate]")).forEach((y,w)=>{var J=y.getAttribute("data-duplicate"),T=document.getElementById(J);if(y.checked!=T.checked){y.checked=T.checked;var U=new Event("change");y.dispatchEvent(U)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:e})}if(t&&t.target instanceof HTMLElement&&t.target.closest("button.dialog__close")){var i=t.target.closest("dialog[open]");t.preventDefault(),i.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((y,w)=>{y.classList.remove("active")});var n=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:i.id}});t.target.dispatchEvent(n),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest('button[formmethod="dialog"]')){var u=t.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((y,w)=>{y.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:u.getAttribute("id")})}if(t&&t.target instanceof HTMLElement&&t.target.closest("dialog[open]")){var o=t.target.closest("dialog[open]"),l=window.getComputedStyle(o);if(l.display==="contents"&&(o=o.parentNode.closest("dialog[open]")),!o.classList.contains("dialog--transactional")&&!o.classList.contains("dialog--acknowledgement")){var d=o.getBoundingClientRect();(t.clientX<d.left||t.clientX>d.right||t.clientY<d.top||t.clientY>d.bottom)&&(t.target.closest("dialog *")||o.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:o.getAttribute("id")}))}}if(t&&t.target instanceof HTMLElement&&t.target.closest(".dialog__wrapper > button")){t.stopPropagation();var f=t.target.closest(".dialog__wrapper > button"),E=f.parentNode,A="openPopover",g=E.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=g&&f.closest("dialog[open]")!=document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((y,w)=>{y.removeAttribute("aria-expanded")}),g.hasAttribute("open"))g.close(),A="closePopover",g.removeAttribute("style"),f.removeAttribute("aria-expanded");else{g.show(),f.setAttribute("aria-expanded",!0);var v=f.getBoundingClientRect(),m=v.top,p=v.left;if(f.closest("iam-table")){var M=f.closest("iam-table").parentNode.getBoundingClientRect();m-=M.top,p-=M.left}g.classList.contains("dialog--fix")&&g.setAttribute("style","position:fixed;top: ".concat(m,"px; left: ").concat(p,"px; margin: 3rem 0 0 0;"))}var q=g.getBoundingClientRect(),O=q.bottom-window.scrollY,Y=window.innerHeight-window.scrollY;if(O>Y){var R=g.hasAttribute("style")?g.getAttribute("style")+" ":"";g.setAttribute("style",R+"transform: translate(0, calc(-100% - 4rem))"),q=g.getBoundingClientRect();var W=q.top-window.scrollY;W<100&&g.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:A,id:f.textContent})}t&&t.target instanceof HTMLElement&&!t.target.closest("dialog[open]")&&!t.target.closest(".dialog__wrapper > button")&&(document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]")&&document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper:not([data-keep-open]) > button")).forEach((y,w)=>{y.removeAttribute("aria-expanded")}))}),null),k=a=>{if(a.classList.contains("dialog--multi")&&!a.querySelector(":scope > .steps")&&D(a),!a.querySelector(":scope .mh-lg")&&!a.classList.contains("dialog--multi")){a.innerHTML='<div class="mh-lg">'.concat(a.innerHTML,"</div>");var t=a.querySelector(".mh-lg"),r=a.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(r){var e=r.previousSibling;t.before(r),e&&r.before(e)}}a.querySelector(":scope > button:first-child")||a.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')},D=a=>{var t="",r=Array.from(a.querySelectorAll("fieldset[data-title]")),e=a.querySelector("form");r.forEach((o,l)=>{t+='<button data-title="'.concat(o.getAttribute("data-title"),'" type="button" class="').concat(l==0?"active":"",'" tabindex="-1">').concat(o.getAttribute("data-title"),"</button>");var d=document.createElement("div");if(d.classList.add("btn--wrapper"),o.appendChild(d),l!=0&&(d.innerHTML+='<button data-title="'.concat(r[l-1].getAttribute("data-title"),'" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>')),l!=r.length-1&&(d.innerHTML+='<button data-title="'.concat(r[l+1].getAttribute("data-title"),'" class="btn btn-primary mb-0" data-next type="button">Next</button>')),l==r.length-1)if(e&&e.querySelector(':scope > button[type="submit"]')){var f=e.querySelector(':scope > button[type="submit"]');f.classList.add("mb-0"),d.insertAdjacentElement("beforeend",f)}else d.innerHTML+='<button data-title="'.concat(r[l].getAttribute("data-title"),'" class="btn btn-primary mb-0" data-next type="submit">Submit</button>')}),a.insertAdjacentHTML("afterbegin",'<div class="steps bg-primary">'.concat(t,"</div>"));for(var c=Array.from(a.querySelectorAll("fieldset.was-validated")),s=0;s<c.length;s++){var i=c[s],n=i.getAttribute("data-title");if(i.querySelector(".is-invalid")){Array.from(a.querySelectorAll('[data-title="'.concat(n,'"]'))).forEach((o,l)=>{o.classList.add("active")});break}else Array.from(a.querySelectorAll('[data-title="'.concat(n,'"]'))).forEach((o,l)=>{o.classList.add("valid")})}a.addEventListener("invalid",function(){return function(o){o.preventDefault()}}(),!0);function u(o){var l=a.querySelector("fieldset.active")?a.querySelector("fieldset.active"):a.querySelector("fieldset[data-title]"),d=l.getAttribute("data-title"),f=!0;if(l.classList.add("was-validated"),Array.from(l.querySelectorAll("input")).forEach((m,p)=>{m.checkValidity()||(f=!1)}),f?Array.from(a.querySelectorAll('[data-title="'.concat(d,'"]'))).forEach((m,p)=>{m.classList.add("valid")}):Array.from(a.querySelectorAll('[data-title="'.concat(d,'"]'))).forEach((m,p)=>{m.classList.remove("valid")}),f||!o.hasAttribute("data-next")){var E=a.querySelector('fieldset[data-title="'.concat(o.getAttribute("data-title"),'"]')),A=a.querySelector('.steps button[data-title="'.concat(o.getAttribute("data-title"),'"]'));Array.from(a.querySelectorAll("button")).forEach((m,p)=>{m.classList.remove("active")}),Array.from(a.querySelectorAll("fieldset")).forEach((m,p)=>{m.classList.remove("active")}),A.classList.add("active"),E.classList.add("active")}var g=Array.from(a.querySelectorAll("fieldset")).length,v=Array.from(a.querySelectorAll("fieldset.valid")).length;a.style.setProperty("--progress","".concat(v/(g-1)*100,"%"))}a.addEventListener("keydown",o=>{if(o&&o.target instanceof HTMLElement&&o.target.closest("button")){var l=o.target.closest("button");o.keyCode==13&&l.getAttribute("type")!="submit"&&(o.preventDefault(),u(l))}if(o&&o.target instanceof HTMLElement&&o.target.closest("input")){var d=o.target.closest("input");d.classList.remove("is-invalid"),o.keyCode==13&&o.preventDefault()}}),a.addEventListener("click",o=>{if(o&&o.target instanceof HTMLElement&&o.target.closest('button[type="submit"]')){var l=o.target.closest("form");l.classList.add("was-validated")}else if(o&&o.target instanceof HTMLElement&&o.target.closest("button[data-title]")){var d=o.target.closest("button[data-title]");u(d)}return null})};function _(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",a=>{var t=a.target.closest("[open] summary");if(t)window.dataLayer.push({event:"closeDetails",detailsTitle:t.textContent||""});else{var r=a.target.closest("summary"),e=a.target.closest("a"),c=a.target.closest("button");r&&window.dataLayer.push({event:"openDetails",detailsTitle:r.textContent||""}),e&&window.dataLayer.push({event:"linkClicked",linkText:e.hasAttribute("title")?e.getAttribute("title")||"":e.textContent||"",class:e.hasAttribute("class")&&e.getAttribute("class")||"",href:e.getAttribute("href")||""}),c&&window.dataLayer.push({event:"buttonClicked",buttonText:c.textContent||"",class:c.hasAttribute("class")&&c.getAttribute("class")||""})}})}function N(a){var t=new TextEncoder("utf-8").encode(a);return crypto.subtle.digest("SHA-1",t).then(function(r){for(var e=[],c=new DataView(r),s=0;s<c.byteLength;s+=4){var i=c.getUint32(s),n=i.toString(16),u="00000000",o=(u+n).slice(-u.length);e.push(o)}return e.join("")})}var B=(a,t)=>{N(a).then(function(r){var e=new XMLHttpRequest;e.addEventListener("load",function(){var c=this.responseText.split(`
|
|
5
|
-
`),
|
|
2
|
+
* iamKey v6.1.0--beta2
|
|
3
|
+
* Copyright 2022-2025 iamproperty
|
|
4
|
+
*/(function(h){typeof define=="function"&&define.amd?define(h):h()})(function(){"use strict";var h=r=>(r.classList.add("js-enabled"),(navigator.userAgent.indexOf("MSIE")!==-1||navigator.appVersion.indexOf("Trident/")>0)&&r.classList.add("ie"),null),T=r=>{var e=function(t){var o=document.querySelector('label[for="'.concat(t.replace("#",""),'"]')),c=document.querySelector(t+" summary"),s=document.querySelector("dialog".concat(t)),n=document.querySelector("detail".concat(t));o instanceof HTMLElement?o.click():c instanceof HTMLElement?c.click():s instanceof HTMLElement?s.showModal():n instanceof HTMLElement&&n.addAttribute("open")};return location.hash&&e(location.hash),window.addEventListener("hashchange",function(){e(location.hash)},!1),addEventListener("popstate",a=>{if(a&&a.state&&a.state.type&&a.state.type=="pagination"){var t=document.querySelector("#".concat(a.state.form)),o=document.querySelector("#".concat(a.state.form," [data-pagination]"));o?o.value=a.state.page:t.innerHTML+='<input name="page" type="hidden" data-pagination="true" value="'.concat(a.state.page,'" />'),t.dispatchEvent(new Event("submit"))}}),document.addEventListener("submit",a=>{if(a&&a.target instanceof HTMLElement&&a.target.matches("form")){var t=a.target;Array.from(t.querySelectorAll("[data-password-type]")).forEach((o,c)=>{o.setAttribute("type","password")}),(t.querySelector(":invalid")||t.querySelector('.pwd-checker[data-strength="1"]')||t.querySelector('.pwd-checker[data-strength="2"]'))&&(t.classList.add("was-validated"),a.preventDefault()),t.querySelector("iam-multiselect[data-is-required][data-error]")&&(t.classList.add("was-validated"),a.preventDefault())}}),document.addEventListener("keydown",a=>{a.key==="Escape"&&document.querySelector(".dialog--transactional[open], .dialog--acknowledgement[open]")&&(a.preventDefault(),a.stopPropagation())}),Array.from(document.querySelectorAll("label progress")).forEach((a,t)=>{var o=a.closest("label");o.setAttribute("data-percent",a.getAttribute("value"))}),null},C=r=>(Array.from(r.querySelectorAll("dialog[open]")).forEach((e,a)=>{var t=e.closest(".dialog__wrapper");t||(e.removeAttribute("open"),e.showModal(),e.focus(),v(e))}),r.addEventListener("click",e=>{if(e.target.tagName=="IAM-ACTIONBAR")return!1;if(e&&e.target instanceof HTMLElement&&e.target.closest("[data-modal]")){var a=e.target.closest("[data-modal]"),t=a.hasAttribute("data-modal")?a.getAttribute("data-modal"):a.getAttribute("data-filter"),o=document.querySelector("dialog#".concat(t));if(v(o),o.showModal(),o.focus(),!o.querySelector("iam-multi-step")){var c=o.offsetWidth;o.setAttribute("style","max-width: ".concat(c,"px;"))}Array.from(o.querySelectorAll("[data-duplicate]")).forEach((u,p)=>{var W=u.getAttribute("data-duplicate"),M=document.getElementById(W);if(u.checked!=M.checked){u.checked=M.checked;var J=new Event("change");u.dispatchEvent(J)}}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"openModal",id:t})}if(e&&e.target instanceof HTMLElement&&e.target.closest("button.dialog__close")){var s=e.target.closest("dialog[open]");e.preventDefault(),s.close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,p)=>{u.classList.remove("active")});var n=new CustomEvent("dialog-closed",{bubbles:!0,cancelable:!0,detail:{modalId:s.id}});e.target.dispatchEvent(n),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:s.getAttribute("id")})}if(e&&e.target instanceof HTMLElement&&e.target.closest('button[formmethod="dialog"]')){var i=e.target.closest("dialog[open]");Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,p)=>{u.classList.remove("active")}),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:i.getAttribute("id")})}if(e&&e.target instanceof HTMLElement&&e.target.closest("dialog[open]")){var l=e.target.closest("dialog[open]"),y=window.getComputedStyle(l);if(y.display==="contents"&&(l=l.parentNode.closest("dialog[open]")),!l.classList.contains("dialog--transactional")&&!l.classList.contains("dialog--acknowledgement")){var g=l.getBoundingClientRect();(e.clientX<g.left||e.clientX>g.right||e.clientY<g.top||e.clientY>g.bottom)&&(e.target.closest("dialog *")||l.close(),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"closeModal",id:l.getAttribute("id")}))}}if(e&&e.target instanceof HTMLElement&&e.target.closest(".dialog__wrapper > button")){e.stopPropagation();var f=e.target.closest(".dialog__wrapper > button"),V=f.parentNode,E="openPopover",d=V.querySelector(":scope > dialog");if(document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]")!=d&&f.closest("dialog[open]")!=document.querySelector("*:not([data-keep-open]) > dialog[open]")&&document.querySelector("*:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper > button")).forEach((u,p)=>{u.removeAttribute("aria-expanded")}),d.hasAttribute("open"))d.close(),E="closePopover",d.removeAttribute("style"),f.removeAttribute("aria-expanded");else{d.show(),f.setAttribute("aria-expanded",!0);var L=f.getBoundingClientRect(),q=L.top,x=L.left;if(f.closest("iam-table")){var k=f.closest("iam-table").parentNode.getBoundingClientRect();q-=k.top,x-=k.left}d.classList.contains("dialog--fix")&&d.setAttribute("style","position:fixed;top: ".concat(q,"px; left: ").concat(x,"px; margin: 3rem 0 0 0;"))}var w=d.getBoundingClientRect(),O=w.bottom-window.scrollY,Y=window.innerHeight-window.scrollY;if(O>Y){var R=d.hasAttribute("style")?d.getAttribute("style")+" ":"";d.setAttribute("style",R+"transform: translate(0, calc(-100% - 4rem))"),w=d.getBoundingClientRect();var F=w.top-window.scrollY;F<100&&d.removeAttribute("style")}window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:E,id:f.textContent})}e&&e.target instanceof HTMLElement&&!e.target.closest("dialog[open]")&&!e.target.closest(".dialog__wrapper > button")&&(document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]")&&document.querySelector(".dialog__wrapper:not([data-keep-open]) > dialog[open]").close(),Array.from(document.querySelectorAll(".dialog__wrapper:not([data-keep-open]) > button")).forEach((u,p)=>{u.removeAttribute("aria-expanded")}))}),null),v=r=>{if(!r.querySelector(":scope .mh-lg")&&!r.querySelector("iam-multi-step")){r.innerHTML='<div class="mh-lg">'.concat(r.innerHTML,"</div>");var e=r.querySelector(".mh-lg"),a=r.querySelector(".mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)");if(a){var t=a.previousSibling;e.before(a),t&&a.before(t)}}r.querySelector(":scope > button:first-child")||r.insertAdjacentHTML("afterbegin",'<button class="dialog__close">Close</button>')};function H(){window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Pageview",pageTitle:document.title}),document.addEventListener("click",r=>{var e=r.target.closest("[open] summary");if(e)window.dataLayer.push({event:"closeDetails",detailsTitle:e.textContent||""});else{var a=r.target.closest("summary"),t=r.target.closest("a"),o=r.target.closest("button");a&&window.dataLayer.push({event:"openDetails",detailsTitle:a.textContent||""}),t&&window.dataLayer.push({event:"linkClicked",linkText:t.hasAttribute("title")?t.getAttribute("title")||"":t.textContent||"",class:t.hasAttribute("class")&&t.getAttribute("class")||"",href:t.getAttribute("href")||""}),o&&window.dataLayer.push({event:"buttonClicked",buttonText:o.textContent||"",class:o.hasAttribute("class")&&o.getAttribute("class")||""})}})}function D(r){var e=new TextEncoder("utf-8").encode(r);return crypto.subtle.digest("SHA-1",e).then(function(a){for(var t=[],o=new DataView(a),c=0;c<o.byteLength;c+=4){var s=o.getUint32(c),n=s.toString(16),i="00000000",l=(i+n).slice(-i.length);t.push(l)}return t.join("")})}var _=(r,e)=>{D(r).then(function(a){var t=new XMLHttpRequest;t.addEventListener("load",function(){var o=this.responseText.split(`
|
|
5
|
+
`),c=a.slice(5).toUpperCase(),s=!1;for(var n in o)if(o[n].substring(0,35)==c){s=!0;break}var i=new CustomEvent("hibpCheck",{detail:s});e.dispatchEvent(i)}),t.open("GET","https://api.pwnedpasswords.com/range/"+a.substr(0,5)),t.send()})},B=r=>{function e(){if(Array.from(document.querySelectorAll("input[maxlength],textarea[maxlength]")).forEach((t,o)=>{t.parentElement,I(t)}),Array.from(document.querySelectorAll("label input")).forEach((t,o)=>{!t.closest("label").querySelector(".optional-text")&&!t.hasAttribute("required")&&(t.parentNode.tagName.toLowerCase()=="span"?t.parentElement.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'):t.insertAdjacentHTML("beforebegin",'<span class="optional-text"></span>'))}),document.querySelector('input[type="date"]')){let t=function(o){var c=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),n=String(o.getDate()).padStart(2,"0");return"".concat(c,"-").concat(s,"-").concat(n)};var a=new Date;Array.from(document.querySelectorAll('input[type="date"]')).forEach((o,c)=>{var s=a;if(o.hasAttribute("data-start")&&(s.setDate(s.getDate()+parseInt(o.getAttribute("data-start"))),o.setAttribute("min",t(s))),o.hasAttribute("data-period")){var n=parseInt(o.getAttribute("data-period")),i=new Date;i.setDate(s.getDate()+n),o.setAttribute("max",t(i))}if(o.hasAttribute("data-allowed-days")){var l=JSON.parse("[".concat(o.getAttribute("data-allowed-days"),"]"));o.addEventListener("input",function(y){var g=new Date(this.value).getUTCDay();l.includes(g)?o.setCustomValidity(""):o.setCustomValidity("That day of the week is not allowed")})}})}}document.readyState==="complete"&&e(),document.onreadystatechange=()=>{document.readyState==="complete"&&e()},r.addEventListener("input",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("input,textarea,select")){var t=a.target.closest("input,textarea,select");t.parentElement,t.hasAttribute("type")&&t.getAttribute("type")=="color"&&(t.nextElementSibling.value=t.value),t.hasAttribute("maxlength")&&t.nextElementSibling&&t.nextElementSibling.setAttribute("data-count",t.value.length),t.hasAttribute("data-strength-checker")&&b(t)}}),r.addEventListener("change",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("select")){var t=a.target.closest("select");if(t.hasAttribute("data-change-type")&&t.hasAttribute("data-input")){var o=document.getElementById(t.getAttribute("data-input")),c=t.value;S(o,c)}}if(a&&a.target instanceof HTMLElement&&a.target.closest('dialog [type="radio"]')){var s=a.target.closest("dialog");a.target.closest('dialog [type="radio"]'),Array.from(s.querySelectorAll('[type="radio"][autofocus]')).forEach((n,i)=>{n.removeAttribute("autofocus")}),Array.from(s.querySelectorAll('[type="radio"]:checked')).forEach((n,i)=>{n.setAttribute("autofocus",!0)})}}),r.addEventListener("click",a=>{if(a&&a.target instanceof HTMLElement&&a.target.closest("[data-change-type][data-input]:not(select)")){var t=a.target.closest("[data-change-type]"),o=document.getElementById(t.getAttribute("data-input")),c=t.getAttribute("data-change-type");if(t.setAttribute("data-change-type",o.getAttribute("type")),S(o,c),t.hasAttribute("data-alt-class")){var s=t.getAttribute("data-alt-class");t.setAttribute("data-alt-class",t.getAttribute("class")),t.setAttribute("class",s)}}})},I=r=>{var e=r.parentElement,a=r.getAttribute("maxlength");e.style.setProperty("--maxlength",a);var t=r.nextElementSibling;(!t||t&&t.classList.contains("invalid-feedback"))&&(t=document.createElement("span"),e.insertBefore(t,r.nextSibling)),t.setAttribute("data-count",r.value.length)},S=(r,e)=>{r.hasAttribute("type")&&r.getAttribute("type")=="password"&&r.setAttribute("data-password-type",!0),r.setAttribute("type",e)},b=function(e){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"no",t=document.getElementById(e.getAttribute("data-strength-checker")),o=e.value,c=e.hasAttribute("minlength")?e.getAttribute("minlength"):12,s=1,n=["Very weak","Weak","Average","Strong","Very strong"],i="";if(o.match(/(?=.*[0-9])/)&&(s+=1),o.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)&&(s+=1),o.match(/(?=.*[a-z])/)&&(s+=1),o.match(/(?=.*[A-Z])/)&&(s+=1),o.length<c&&(s=1,i="(must be at least ".concat(c," characters.)")),s>=3&&a=="no"){let l=function(y,g){y.detail?b(g,"danger"):b(g,"success"),g.removeEventListener("hibpCheck",l)};_(o,e),e.addEventListener("hibpCheck",function(y){l(y,e)})}else s>=3&&a=="danger"&&(s=3,i="(this password is very common)");t&&(s<=3?t.classList.add("invalid-feedback"):t.classList.remove("invalid-feedback"),t.setAttribute("data-strength",s),t.innerHTML="Password strength: ".concat(n[s-1]," ").concat(i))},N=()=>{document.addEventListener("change",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&A(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("keyup",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-change-events]")&&A(r.target,r.target.closest("[data-change-events]").getAttribute("data-change-events"))}),document.addEventListener("click",r=>{r&&r.target instanceof HTMLElement&&r.target.closest("[data-click-events]")&&A(r.target,r.target.closest("[data-click-events]").getAttribute("data-click-events"))})},A=(r,e)=>{if(e||(e=r.parentNode.getAttribute("data-change-events")),!e)return!1;Array.from(JSON.parse(e)).forEach((a,t)=>{P(r,a)})},P=(r,e)=>{if("matches"in e)return e.matches=="any"||r.value==e.matches?m(r,e,"if"):m(r,e,"else"),!1;if("in-list"in e){var a=document.querySelector("".concat(e["in-list"],' option[value="').concat(r.value,'"]'));return document.querySelector("".concat(e["in-list"],' option[value="').concat(r.value,'"]'))?m(a,e,"if"):m(a,e,"else"),!1}else"event"in e&&m(r,e,"event")},m=(r,e,a)=>{if(!(a in e))return!1;switch(e[a]){case"hide":if(document.querySelector(e.target)){var t=document.querySelector(e.target);t.classList.add("js-hide"),Array.from(t.querySelectorAll("[data-required]")).forEach((n,i)=>{n.removeAttribute("required")})}break;case"show":if(document.querySelector(e.target)){var o=document.querySelector(e.target);o.classList.remove("js-hide"),Array.from(o.querySelectorAll("[data-required]")).forEach((n,i)=>{n.closest(".js-hide")||n.setAttribute("required","true")})}break;case"populate-form":j(r,e);break;case"dispatchEvent":var c=new Event(e.value);document.querySelector("".concat(e.target)).dispatchEvent(c);break;case"setAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(n,i){n.setAttribute(e.attribute,e.value)});break;case"focus":document.querySelector("".concat(e.target)).focus();break;case"removeAttribute":Array.from(document.querySelectorAll("".concat(e.target))).forEach(function(n,i){n.removeAttribute(e.attribute)});break;case"updateValue":document.querySelector("".concat(e.target)).value=e.value?e.value:"";var s=new Event("change");document.querySelector("".concat(e.target)).dispatchEvent(s);break;case"submitForm":document.querySelector("".concat(e.target)).submit();break;case"openLink":document.querySelector("".concat(e.target)).value&&(window.location.href=document.querySelector("".concat(e.target)).value);break}},j=function(e,a){var t=JSON.parse(e.getAttribute("data-values")),o=document.querySelector(a.target);if(!t)return!1;Object.keys(t).forEach((c,s)=>{document.getElementById(c)&&document.getElementById(c).tagName=="SPAN"&&(document.getElementById(c).innerHTML=t[c]),o.querySelector('select[name="'.concat(c,'"] [value="').concat(t[c],'"]'))?(o.querySelector('select[name="'.concat(c,'"]')).value=t[c],e.hasAttribute("data-lock-fields")&&(o.querySelector('select[name="'.concat(c,'"]')).disabled=!0)):o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]'))?(Array.from(o.querySelectorAll('input[name="'.concat(c,'"][type="radio"]'))).forEach(function(n,i){n.disabled=!0}),o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]')).checked=!0,o.querySelector('input[name="'.concat(c,'"][type="radio"][value="').concat(t[c],'"]')).disabled=!1):o.querySelector('input[name="'.concat(c,'"]'))&&(o.querySelector('input[name="'.concat(c,'"]')).value=t[c],e.hasAttribute("data-lock-fields")&&o.querySelector('input[name="'.concat(c,'"]')).setAttribute("readonly","true"))})};document.addEventListener("DOMContentLoaded",function(){H(),N(),h(document.body),T(),C(document.body),B(document.body)})});
|
|
6
6
|
//# sourceMappingURL=scripts.bundle.js.map
|