@iamproperty/components 6.0.0 → 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/bootstrap/README.md +8 -7
- package/assets/bootstrap/js/index.esm.js +19 -0
- package/assets/bootstrap/js/index.umd.js +34 -0
- package/assets/bootstrap/js/src/alert.js +1 -1
- package/assets/bootstrap/js/src/base-component.js +2 -2
- package/assets/bootstrap/js/src/button.js +1 -1
- package/assets/bootstrap/js/src/carousel.js +1 -1
- package/assets/bootstrap/js/src/collapse.js +1 -1
- package/assets/bootstrap/js/src/dom/data.js +1 -1
- package/assets/bootstrap/js/src/dom/event-handler.js +1 -1
- package/assets/bootstrap/js/src/dom/manipulator.js +1 -1
- package/assets/bootstrap/js/src/dom/selector-engine.js +1 -1
- package/assets/bootstrap/js/src/dropdown.js +3 -12
- package/assets/bootstrap/js/src/modal.js +13 -17
- package/assets/bootstrap/js/src/offcanvas.js +1 -1
- package/assets/bootstrap/js/src/popover.js +1 -1
- package/assets/bootstrap/js/src/scrollspy.js +10 -14
- package/assets/bootstrap/js/src/tab.js +4 -2
- package/assets/bootstrap/js/src/toast.js +4 -9
- package/assets/bootstrap/js/src/tooltip.js +50 -32
- package/assets/bootstrap/js/src/util/backdrop.js +1 -1
- package/assets/bootstrap/js/src/util/component-functions.js +1 -1
- package/assets/bootstrap/js/src/util/config.js +1 -1
- package/assets/bootstrap/js/src/util/focustrap.js +1 -1
- package/assets/bootstrap/js/src/util/index.js +1 -1
- package/assets/bootstrap/js/src/util/sanitizer.js +1 -1
- package/assets/bootstrap/js/src/util/scrollbar.js +1 -1
- package/assets/bootstrap/js/src/util/swipe.js +1 -1
- package/assets/bootstrap/js/src/util/template-factory.js +1 -1
- package/assets/bootstrap/package.json +27 -28
- package/assets/bootstrap/scss/_accordion.scss +4 -7
- package/assets/bootstrap/scss/_button-group.scss +1 -1
- package/assets/bootstrap/scss/_buttons.scss +7 -28
- package/assets/bootstrap/scss/_carousel.scss +3 -0
- package/assets/bootstrap/scss/_dropdown.scss +1 -2
- package/assets/bootstrap/scss/_functions.scss +2 -2
- package/assets/bootstrap/scss/_list-group.scss +5 -6
- package/assets/bootstrap/scss/_modal.scss +1 -1
- package/assets/bootstrap/scss/_nav.scss +2 -2
- package/assets/bootstrap/scss/_navbar.scss +0 -2
- package/assets/bootstrap/scss/_offcanvas.scss +4 -5
- package/assets/bootstrap/scss/_pagination.scss +1 -1
- package/assets/bootstrap/scss/_popover.scss +5 -5
- package/assets/bootstrap/scss/_toasts.scss +2 -5
- package/assets/bootstrap/scss/_variables-dark.scss +87 -0
- package/assets/bootstrap/scss/_variables.scss +17 -18
- package/assets/bootstrap/scss/bootstrap-utilities.scss +0 -3
- package/assets/bootstrap/scss/forms/_floating-labels.scss +0 -1
- package/assets/bootstrap/scss/forms/_input-group.scss +4 -7
- package/assets/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/assets/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/assets/bootstrap/scss/mixins/_banner.scss +2 -2
- package/assets/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/assets/bootstrap/scss/mixins/_forms.scss +10 -10
- package/assets/bootstrap/scss/mixins/_table-variants.scss +2 -2
- package/assets/bootstrap/scss/mixins/_utilities.scss +1 -1
- package/assets/css/components/actionbar.css.map +1 -1
- package/assets/css/components/actionbar.global.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/card.component.css +1 -0
- package/assets/css/components/card.component.css.map +1 -0
- package/assets/css/components/card.module.css +1 -0
- package/assets/css/components/card.module.css.map +1 -0
- 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/charts.config.css +1 -1
- package/assets/css/components/charts.config.css.map +1 -1
- package/assets/css/components/charts.css +1 -1
- package/assets/css/components/charts.css.map +1 -1
- package/assets/css/components/charts.module.css +1 -1
- package/assets/css/components/charts.module.css.map +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/filter-card.component.css +1 -0
- package/assets/css/components/filter-card.component.css.map +1 -0
- 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 +1 -1
- 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/record-card.component.css +1 -0
- package/assets/css/components/record-card.component.css.map +1 -0
- 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 +1 -1
- package/assets/css/components/timeline.css.map +1 -1
- package/assets/css/components/video-card.component.css +1 -0
- package/assets/css/components/video-card.component.css.map +1 -0
- 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/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.js +2 -0
- package/assets/js/components/barchart/barchart.component.min.js +5 -3
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.js +92 -154
- package/assets/js/components/card/card.component.min.js +27 -32
- package/assets/js/components/card/card.component.min.js.map +1 -1
- 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/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.js +71 -0
- package/assets/js/components/filter-card/filter-card.component.min.js +27 -0
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -0
- 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/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +2 -2
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- 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/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +2 -2
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +2 -2
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +2 -2
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.js +69 -0
- package/assets/js/components/record-card/record-card.component.min.js +27 -0
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -0
- 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/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.js +1 -1
- package/assets/js/components/table/table.component.min.js +4 -4
- 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/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.js +176 -0
- package/assets/js/components/video-card/video-card.component.min.js +30 -0
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -0
- package/assets/js/components.bundle.js +5 -0
- package/assets/js/components.bundle.js.map +1 -0
- package/assets/js/components.js +30 -0
- package/assets/js/modules/card.module.js +33 -0
- package/assets/js/modules/carousel.js +110 -8
- package/assets/js/modules/chart.js +2 -2
- package/assets/js/modules/dialogs.js +5 -129
- package/assets/js/modules/table.js +1 -1
- package/assets/js/scripts.bundle.js +4 -195
- 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/js/scripts.js +17 -0
- package/assets/js/tests/filterlist.spec.js +1 -1
- package/assets/sass/_components.scss +76 -12
- package/assets/sass/_corefiles.scss +19 -10
- package/assets/sass/_elements.scss +2 -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/card.component.scss +229 -0
- package/assets/sass/components/card.module.scss +154 -0
- package/assets/sass/components/carousel.component.scss +605 -0
- package/assets/sass/components/carousel.config.scss +84 -0
- package/assets/sass/components/charts.config.scss +3 -0
- package/assets/sass/components/charts.module.scss +5 -3
- package/assets/sass/components/filter-card.component.scss +106 -0
- package/assets/sass/components/header.scss +1 -0
- package/assets/sass/components/multi-step.component.scss +148 -0
- package/assets/sass/components/multiselect.preload.scss +7 -0
- package/assets/sass/components/nav.preload.scss +5 -0
- package/assets/sass/components/record-card.component.scss +204 -0
- package/assets/sass/components/tabs.scss +1 -1
- package/assets/sass/components/video-card.component.scss +80 -0
- package/assets/sass/components.reset.scss +5 -43
- package/assets/sass/elements/admin-panel.scss +2 -1
- package/assets/sass/elements/badge-tag.scss +5 -1
- package/assets/sass/elements/buttons.scss +36 -0
- package/assets/sass/elements/container.scss +16 -6
- package/assets/sass/elements/details.scss +2 -0
- package/assets/sass/elements/dialog.scss +2 -744
- package/assets/sass/elements/forms.scss +241 -24
- package/assets/sass/elements/links.scss +27 -4
- package/assets/sass/elements/lists.scss +46 -0
- package/assets/sass/elements/media.scss +10 -38
- package/assets/sass/elements/modal.scss +453 -0
- package/assets/sass/elements/popover.scss +207 -0
- 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 -3
- package/assets/ts/components/barchart/barchart.component.ts +2 -0
- package/assets/ts/components/card/card.component.ts +94 -192
- package/assets/ts/components/carousel/carousel.component.ts +51 -44
- package/assets/ts/components/filter-card/filter-card.component.ts +81 -0
- package/assets/ts/components/multi-step/multi-step.component.ts +262 -0
- package/assets/ts/components/record-card/record-card.component.ts +82 -0
- package/assets/ts/components/table/table.component.ts +2 -1
- package/assets/ts/components/video-card/video-card.component.ts +227 -0
- package/assets/ts/components.ts +38 -0
- package/assets/ts/modules/card.module.ts +43 -0
- package/assets/ts/modules/carousel.ts +161 -7
- package/assets/ts/modules/dialogs.ts +6 -182
- package/assets/ts/modules/table.ts +1 -1
- package/assets/ts/scripts.ts +22 -0
- package/assets/ts/tests/filterlist.spec.ts +1 -1
- package/dist/components.es.js +227 -243
- package/dist/components.umd.js +105 -104
- package/dist/style.css +1 -1
- package/package.json +9 -7
- package/src/components/BarChart/BarChart.vue +2 -2
- package/src/components/Carousel/Carousel.vue +1 -15
- package/src/components/FilterCard/FilterCard.vue +25 -0
- package/src/components/MultiStep/MultiStep.vue +25 -0
- package/src/components/RecordCard/RecordCard.vue +25 -0
- package/src/components/VideoCard/VideoCard.vue +25 -0
- package/assets/css/components/card.css +0 -1
- package/assets/css/components/card.css.map +0 -1
- package/assets/css/components/card.global.css +0 -1
- package/assets/css/components/card.global.css.map +0 -1
- package/assets/css/components/card.preload.css +0 -1
- package/assets/css/components/card.preload.css.map +0 -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/js/bundle.js +0 -74
- package/assets/js/dynamic.js +0 -80
- package/assets/js/dynamic.min.js +0 -18
- package/assets/js/dynamic.min.js.map +0 -1
- package/assets/js/flat-components.js +0 -84
- package/assets/js/modules/youtubevideo.js +0 -106
- package/assets/sass/components/card.global.scss +0 -102
- package/assets/sass/components/card.preload.scss +0 -8
- package/assets/sass/components/card.scss +0 -606
- package/assets/sass/components/carousel.preload.scss +0 -82
- package/assets/sass/components/carousel.scss +0 -258
- package/assets/ts/bundle.ts +0 -94
- package/assets/ts/components/barchart/README.md +0 -37
- package/assets/ts/components/card/README.md +0 -39
- package/assets/ts/dynamic.ts +0 -107
- package/assets/ts/flat-components.ts +0 -106
- package/assets/ts/modules/youtubevideo.ts +0 -141
- package/assets/ts/tests/dialogs.spec.js +0 -50
- package/src/foundations/YoutubeVideo/README.md +0 -11
- package/src/foundations/YoutubeVideo/YoutubeVideo.vue +0 -24
|
@@ -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;
|
|
@@ -557,8 +557,8 @@ export const createPies = function (chartOuter) {
|
|
|
557
557
|
const largeArcFlag = percent > .5 ? 1 : 0; // if the slice is more than 50%, take the large arc (the long way around)
|
|
558
558
|
const pathData = [
|
|
559
559
|
`M 0 0`,
|
|
560
|
-
`L ${(startX ? startX.toFixed(0) : 0)} ${(startY ? startY.toFixed(0) : 0)}`,
|
|
561
|
-
`A 100 100 0 ${largeArcFlag} 1 ${(endX ? endX.toFixed(0) : 0)} ${(endY ? endY.toFixed(0) : 0)}`,
|
|
560
|
+
`L ${(startX ? startX.toFixed(0) : 0)} ${(startY ? startY.toFixed(0) : 0)}`, // Move
|
|
561
|
+
`A 100 100 0 ${largeArcFlag} 1 ${(endX ? endX.toFixed(0) : 0)} ${(endY ? endY.toFixed(0) : 0)}`, // Arc
|
|
562
562
|
`L 0 0`, // Line
|
|
563
563
|
].join(' ');
|
|
564
564
|
paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};${hide}"></path>`;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { createEmbed } from "./youtubevideo.js";
|
|
3
2
|
const extendDialogs = (body) => {
|
|
4
3
|
Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog, index) => {
|
|
5
4
|
let parent = dialog.closest('.dialog__wrapper');
|
|
@@ -23,8 +22,10 @@ const extendDialogs = (body) => {
|
|
|
23
22
|
// Open the modal!
|
|
24
23
|
dialog.showModal();
|
|
25
24
|
dialog.focus();
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
if (!dialog.querySelector('iam-multi-step')) {
|
|
26
|
+
let firstWidth = dialog.offsetWidth;
|
|
27
|
+
dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
|
|
28
|
+
}
|
|
28
29
|
// When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
|
|
29
30
|
Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element, index) => {
|
|
30
31
|
const id = element.getAttribute('data-duplicate');
|
|
@@ -169,17 +170,8 @@ const extendDialogs = (body) => {
|
|
|
169
170
|
return null;
|
|
170
171
|
};
|
|
171
172
|
export const createDialog = (dialog) => {
|
|
172
|
-
// Create the video embed
|
|
173
|
-
let videoButton = dialog.querySelector('.youtube-embed a');
|
|
174
|
-
if (videoButton) {
|
|
175
|
-
createEmbed(videoButton);
|
|
176
|
-
}
|
|
177
|
-
// Multi dialog
|
|
178
|
-
if (dialog.classList.contains('dialog--multi') && !dialog.querySelector(':scope > .steps')) {
|
|
179
|
-
createMultiFormDialog(dialog);
|
|
180
|
-
}
|
|
181
173
|
// If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
|
|
182
|
-
if (!dialog.querySelector(':scope .mh-lg') && !dialog.
|
|
174
|
+
if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
|
|
183
175
|
dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
|
|
184
176
|
let dialogContent = dialog.querySelector('.mh-lg');
|
|
185
177
|
let titleElement = dialog.querySelector('.mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)');
|
|
@@ -194,120 +186,4 @@ export const createDialog = (dialog) => {
|
|
|
194
186
|
if (!dialog.querySelector(':scope > button:first-child'))
|
|
195
187
|
dialog.insertAdjacentHTML('afterbegin', `<button class="dialog__close">Close</button>`);
|
|
196
188
|
};
|
|
197
|
-
export const createMultiFormDialog = (dialog) => {
|
|
198
|
-
let buttons = "";
|
|
199
|
-
let fieldsets = Array.from(dialog.querySelectorAll('fieldset[data-title]'));
|
|
200
|
-
let form = dialog.querySelector('form');
|
|
201
|
-
fieldsets.forEach((fieldset, index) => {
|
|
202
|
-
buttons += `<button data-title="${fieldset.getAttribute('data-title')}" type="button" class="${index == 0 ? "active" : ""}" tabindex="-1">${fieldset.getAttribute('data-title')}</button>`;
|
|
203
|
-
const btnWrapper = document.createElement("div");
|
|
204
|
-
btnWrapper.classList.add('btn--wrapper');
|
|
205
|
-
fieldset.appendChild(btnWrapper);
|
|
206
|
-
if (index != 0)
|
|
207
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index - 1].getAttribute('data-title')}" class="btn btn-secondary mb-0" data-previous type="button">Previous</button>`;
|
|
208
|
-
if (index != fieldsets.length - 1)
|
|
209
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index + 1].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="button">Next</button>`;
|
|
210
|
-
// Last fieldset
|
|
211
|
-
if (index == fieldsets.length - 1) {
|
|
212
|
-
if (form && form.querySelector(':scope > button[type="submit"]')) {
|
|
213
|
-
let existingButton = form.querySelector(':scope > button[type="submit"]');
|
|
214
|
-
existingButton.classList.add('mb-0');
|
|
215
|
-
btnWrapper.insertAdjacentElement('beforeend', existingButton);
|
|
216
|
-
}
|
|
217
|
-
else
|
|
218
|
-
btnWrapper.innerHTML += `<button data-title="${fieldsets[index].getAttribute('data-title')}" class="btn btn-primary mb-0" data-next type="submit">Submit</button>`;
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
dialog.insertAdjacentHTML('afterbegin', `<div class="steps bg-primary">${buttons}</div>`);
|
|
222
|
-
// Open the fieldset with an error inside
|
|
223
|
-
let validatedFieldsets = Array.from(dialog.querySelectorAll('fieldset.was-validated'));
|
|
224
|
-
for (let i = 0; i < validatedFieldsets.length; i++) {
|
|
225
|
-
let fieldset = validatedFieldsets[i];
|
|
226
|
-
let fieldsetID = fieldset.getAttribute('data-title');
|
|
227
|
-
if (fieldset.querySelector('.is-invalid')) {
|
|
228
|
-
Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
|
|
229
|
-
element.classList.add('active');
|
|
230
|
-
});
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
Array.from(dialog.querySelectorAll(`[data-title="${fieldsetID}"]`)).forEach((element, index) => {
|
|
235
|
-
element.classList.add('valid');
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
// Prevent the bubble messages
|
|
240
|
-
dialog.addEventListener('invalid', (function () {
|
|
241
|
-
return function (e) {
|
|
242
|
-
e.preventDefault();
|
|
243
|
-
};
|
|
244
|
-
})(), true);
|
|
245
|
-
function validateFieldset(button) {
|
|
246
|
-
const currentFieldset = dialog.querySelector(`fieldset.active`) ? dialog.querySelector(`fieldset.active`) : dialog.querySelector(`fieldset[data-title]`);
|
|
247
|
-
const currentFieldsetID = currentFieldset.getAttribute('data-title');
|
|
248
|
-
let isFieldsetValid = true;
|
|
249
|
-
currentFieldset.classList.add('was-validated');
|
|
250
|
-
Array.from(currentFieldset.querySelectorAll('input')).forEach((input, index) => {
|
|
251
|
-
if (!input.checkValidity())
|
|
252
|
-
isFieldsetValid = false;
|
|
253
|
-
});
|
|
254
|
-
// If valid mode to next field set
|
|
255
|
-
if (!isFieldsetValid) {
|
|
256
|
-
Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
|
|
257
|
-
element.classList.remove('valid');
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
Array.from(dialog.querySelectorAll(`[data-title="${currentFieldsetID}"]`)).forEach((element, index) => {
|
|
262
|
-
element.classList.add('valid');
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
// Allow the previous button to navigate
|
|
266
|
-
if (isFieldsetValid || !button.hasAttribute('data-next')) {
|
|
267
|
-
const fieldset = dialog.querySelector(`fieldset[data-title="${button.getAttribute('data-title')}"]`);
|
|
268
|
-
const step = dialog.querySelector(`.steps button[data-title="${button.getAttribute('data-title')}"]`);
|
|
269
|
-
Array.from(dialog.querySelectorAll('button')).forEach((button, index) => {
|
|
270
|
-
button.classList.remove('active');
|
|
271
|
-
});
|
|
272
|
-
Array.from(dialog.querySelectorAll('fieldset')).forEach((button, index) => {
|
|
273
|
-
button.classList.remove('active');
|
|
274
|
-
});
|
|
275
|
-
step.classList.add('active');
|
|
276
|
-
fieldset.classList.add('active');
|
|
277
|
-
}
|
|
278
|
-
let fieldsetCount = Array.from(dialog.querySelectorAll(`fieldset`)).length;
|
|
279
|
-
let validFieldsetCount = Array.from(dialog.querySelectorAll(`fieldset.valid`)).length;
|
|
280
|
-
// update the progress bar
|
|
281
|
-
dialog.style.setProperty('--progress', `${(validFieldsetCount / (fieldsetCount - 1) * 100)}%`);
|
|
282
|
-
}
|
|
283
|
-
// remove error messages from server
|
|
284
|
-
dialog.addEventListener('keydown', (event) => {
|
|
285
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('button')) {
|
|
286
|
-
const button = event.target.closest('button');
|
|
287
|
-
if (event.keyCode == 13 && button.getAttribute('type') != "submit") {
|
|
288
|
-
event.preventDefault();
|
|
289
|
-
validateFieldset(button);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('input')) {
|
|
293
|
-
const input = event.target.closest('input');
|
|
294
|
-
input.classList.remove('is-invalid');
|
|
295
|
-
if (event.keyCode == 13) {
|
|
296
|
-
event.preventDefault();
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
dialog.addEventListener('click', (event) => {
|
|
301
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('button[type="submit"]')) {
|
|
302
|
-
const form = event.target.closest('form');
|
|
303
|
-
form.classList.add('was-validated');
|
|
304
|
-
}
|
|
305
|
-
else if (event && event.target instanceof HTMLElement && event.target.closest('button[data-title]')) {
|
|
306
|
-
const button = event.target.closest('button[data-title]');
|
|
307
|
-
validateFieldset(button);
|
|
308
|
-
}
|
|
309
|
-
;
|
|
310
|
-
return null;
|
|
311
|
-
});
|
|
312
|
-
};
|
|
313
189
|
export default extendDialogs;
|
|
@@ -546,7 +546,7 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
546
546
|
}
|
|
547
547
|
});
|
|
548
548
|
// Work out what to display after pagination
|
|
549
|
-
Array.from(table.querySelectorAll('tbody tr:not(.filtered')).forEach((row, index) => {
|
|
549
|
+
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
|
|
550
550
|
matched++;
|
|
551
551
|
row.classList.add('filtered--matched');
|
|
552
552
|
// pagination bit
|