@iamproperty/components 7.3.0 → 7.5.0
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/README.md +1 -1
- package/assets/css/components/actionbar.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/actionbar.global.css +1 -1
- package/assets/css/components/actionbar.global.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -0
- package/assets/css/components/address-lookup.component.css.map +1 -0
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -0
- package/assets/css/components/calendar.component.css.map +1 -0
- package/assets/css/components/calendar.config.css +1 -0
- package/assets/css/components/calendar.config.css.map +1 -0
- 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/charts.css +1 -1
- package/assets/css/components/charts.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/content.component.css +1 -0
- package/assets/css/components/content.component.css.map +1 -0
- package/assets/css/components/darkmode.component.css +1 -0
- package/assets/css/components/darkmode.component.css.map +1 -0
- 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.map +1 -1
- package/assets/css/components/inline-edit.css +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/marketing.component.css +1 -0
- package/assets/css/components/marketing.component.css.map +1 -0
- package/assets/css/components/menu.component.css.map +1 -1
- package/assets/css/components/{menu.css → menu.global.css} +1 -1
- package/assets/css/components/menu.global.css.map +1 -0
- package/assets/css/components/milestone.css +1 -0
- package/assets/css/components/milestone.css.map +1 -0
- package/assets/css/components/multi-step.component.css +1 -1
- package/assets/css/components/multi-step.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/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.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/notification.css +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 +1 -1
- package/assets/css/components/property-searchbar.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/slider.css.map +1 -1
- package/assets/css/components/split-button.component.css +1 -0
- package/assets/css/components/split-button.component.css.map +1 -0
- package/assets/css/components/word-count.component.css +1 -0
- package/assets/css/components/word-count.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/mobile-core.min.css +1 -1
- package/assets/css/mobile-core.min.css.map +1 -1
- package/assets/css/mobile.min.css +1 -1
- package/assets/css/mobile.min.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.js +40 -19
- package/assets/js/components/accordion/accordion.component.min.js +15 -15
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +59 -31
- package/assets/js/components/actionbar/actionbar.component.min.js +18 -17
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +6 -8
- package/assets/js/components/address-lookup/address-lookup.component.min.js +10 -12
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
- package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +2 -2
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
- package/assets/js/components/calendar/calendar.component.js +1100 -0
- package/assets/js/components/calendar/calendar.component.min.js +170 -0
- package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
- package/assets/js/components/card/card.component.js +14 -8
- package/assets/js/components/card/card.component.min.js +16 -10
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +17 -19
- package/assets/js/components/carousel/carousel.component.min.js +17 -19
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/content/content.component.js +66 -0
- package/assets/js/components/content/content.component.min.js +15 -0
- package/assets/js/components/content/content.component.min.js.map +1 -0
- package/assets/js/components/darkmode/darkmode.component.js +70 -0
- package/assets/js/components/darkmode/darkmode.component.min.js +10 -0
- package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -0
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +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/menu/menu.component.js +12 -4
- package/assets/js/components/menu/menu.component.min.js +4 -5
- package/assets/js/components/menu/menu.component.min.js.map +1 -1
- package/assets/js/components/milestone/milestone.component.js +36 -0
- package/assets/js/components/milestone/milestone.component.min.js +15 -0
- package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
- package/assets/js/components/milestone-group/milestone-group.component.js +33 -0
- package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
- package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
- package/assets/js/components/multi-step/multi-step.component.min.js +3 -3
- package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +54 -2
- package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +18 -0
- package/assets/js/components/nav/nav.component.min.js +6 -6
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +15 -11
- package/assets/js/components/notification/notification.component.min.js +4 -4
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/rank/rank.component.js +346 -210
- package/assets/js/components/rank/rank.component.min.js +346 -211
- package/assets/js/components/rank/rank.component.min.js.map +1 -1
- package/assets/js/components/rankings/rankings.component.js +17 -8
- package/assets/js/components/rankings/rankings.component.min.js +14 -8
- package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
- package/assets/js/components/search/search.component.js +5 -3
- package/assets/js/components/search/search.component.min.js +6 -6
- 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/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/split-button/split-button.component.js +58 -0
- package/assets/js/components/split-button/split-button.component.min.js +31 -0
- package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
- package/assets/js/components/table/table.component.js +12 -0
- 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/table-ajax/table-ajax.component.js +12 -0
- package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.js +12 -0
- package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
- package/assets/js/components/word-count/word-count.component.js +81 -0
- package/assets/js/components/word-count/word-count.component.min.js +12 -0
- package/assets/js/components/word-count/word-count.component.min.js.map +1 -0
- package/assets/js/components.js +59 -0
- package/assets/js/modules/advanced-select.js +106 -0
- package/assets/js/modules/dialogs.js +53 -51
- package/assets/js/modules/dynamicEvents.js +7 -0
- package/assets/js/modules/inputs.js +0 -18
- package/assets/js/modules/milestone-group.js +30 -0
- package/assets/js/modules/milestone.js +89 -0
- package/assets/js/modules/table.js +11 -1
- package/assets/js/modules/videos.js +1 -1
- package/assets/js/scripts.bundle.js +3 -3
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +5 -0
- package/assets/sass/_components.scss +15 -4
- package/assets/sass/_example.scss +1 -1
- package/assets/sass/_functions/utility-mixins.scss +40 -0
- package/assets/sass/_functions/variables.scss +11 -5
- package/assets/sass/components/actionbar.component.scss +23 -1
- package/assets/sass/components/actionbar.global.scss +5 -5
- package/assets/sass/components/{address-lookup.scss → address-lookup.component.scss} +10 -0
- package/assets/sass/components/calendar.component.scss +1272 -0
- package/assets/sass/components/calendar.config.scss +423 -0
- package/assets/sass/components/card.component.scss +4 -34
- package/assets/sass/components/carousel.component.scss +5 -0
- package/assets/sass/components/collapsible-side.scss +91 -95
- package/assets/sass/components/content.component.scss +18 -0
- package/assets/sass/components/darkmode.component.scss +22 -0
- package/assets/sass/components/inline-edit.scss +2 -0
- package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
- package/assets/sass/components/menu.component.scss +3 -8
- package/assets/sass/components/milestone.scss +216 -0
- package/assets/sass/components/multi-step.component.scss +1 -1
- package/assets/sass/components/multiselect.preload.scss +1 -1
- package/assets/sass/components/multiselect.scss +2 -0
- package/assets/sass/components/nav.component.scss +17 -6
- package/assets/sass/components/nav.global.scss +29 -3
- package/assets/sass/components/notification.scss +32 -13
- package/assets/sass/components/rank.component.scss +197 -24
- package/assets/sass/components/rankings.component.scss +38 -28
- package/assets/sass/components/rankings.global.scss +64 -2
- package/assets/sass/components/split-button.component.scss +79 -0
- package/assets/sass/components/table-basic.global.scss +32 -32
- package/assets/sass/components/word-count.component.scss +26 -0
- package/assets/sass/elements/admin-panel.scss +1 -1
- package/assets/sass/elements/badge-tag.scss +5 -1
- package/assets/sass/elements/buttons--compact.scss +4 -0
- package/assets/sass/elements/details.scss +33 -7
- package/assets/sass/elements/forms.scss +135 -28
- package/assets/sass/elements/links.scss +132 -4
- package/assets/sass/elements/lists.scss +62 -1
- package/assets/sass/elements/popover.scss +64 -10
- package/assets/sass/elements/toggle-button.scss +8 -8
- package/assets/sass/elements/type.scss +7 -10
- package/assets/sass/foundations/colours.scss +0 -0
- package/assets/sass/foundations/reboot.scss +8 -1
- package/assets/sass/foundations/root.scss +41 -51
- package/assets/sass/templates/form.scss +0 -2
- package/assets/ts/components/accordion/accordion.component.ts +47 -26
- package/assets/ts/components/actionbar/actionbar.component.ts +58 -22
- package/assets/ts/components/address-lookup/address-lookup.component.ts +6 -8
- package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
- package/assets/ts/components/calendar/calendar.component.ts +1330 -0
- package/assets/ts/components/card/card.component.ts +15 -14
- package/assets/ts/components/carousel/carousel.component.ts +17 -19
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
- package/assets/ts/components/content/content.component.ts +78 -0
- package/assets/ts/components/darkmode/darkmode.component.ts +85 -0
- package/assets/ts/components/marketing/marketing.component.ts +1 -1
- package/assets/ts/components/menu/menu.component.ts +18 -10
- package/assets/ts/components/milestone/milestone.component.ts +43 -0
- package/assets/ts/components/milestone-group/milestone-group.component.ts +39 -0
- package/assets/ts/components/multiselect/multiselect.component.ts +60 -3
- package/assets/ts/components/nav/nav.component.ts +18 -0
- package/assets/ts/components/notification/notification.component.ts +30 -11
- package/assets/ts/components/rank/rank.component.ts +345 -209
- package/assets/ts/components/rankings/rankings.component.ts +27 -8
- package/assets/ts/components/search/search.component.ts +6 -4
- package/assets/ts/components/split-button/split-button.component.ts +67 -0
- package/assets/ts/components/table/table.component.ts +14 -0
- package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
- package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
- package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
- package/assets/ts/components/video-card/video-card.component.ts +2 -3
- package/assets/ts/components/word-count/word-count.component.ts +91 -0
- package/assets/ts/components.ts +64 -0
- package/assets/ts/modules/advanced-select.ts +120 -0
- package/assets/ts/modules/data-layer.md +0 -5
- package/assets/ts/modules/dialogs.ts +64 -61
- package/assets/ts/modules/dynamicEvents.ts +10 -0
- package/assets/ts/modules/inputs.ts +0 -25
- package/assets/ts/modules/milestone-group.ts +39 -0
- package/assets/ts/modules/milestone.ts +119 -0
- package/assets/ts/modules/table.ts +15 -1
- package/assets/ts/modules/videos.ts +19 -37
- package/assets/ts/scripts.ts +6 -3
- package/dist/components.es.js +849 -1079
- package/dist/components.umd.js +1052 -220
- package/package.json +6 -6
- package/src/components/Accordion/Accordion.vue +14 -23
- package/src/components/Accordion/AccordionItem.vue +27 -43
- package/src/components/Actionbar/Actionbar.vue +17 -19
- package/src/components/AddressLookup/AddressLookup.vue +17 -18
- package/src/components/AdvancedSelect/AdvancedSelect.vue +22 -0
- package/src/components/AppliedFilters/AppliedFilters.vue +16 -18
- package/src/components/Banner/Banner.vue +18 -21
- package/src/components/BarChart/BarChart.vue +17 -18
- package/src/components/Calendar/Calendar.vue +20 -0
- package/src/components/Card/Card.vue +17 -17
- package/src/components/Carousel/Carousel.vue +17 -20
- package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
- package/src/components/Content/Content.vue +22 -0
- package/src/components/DarkMode/DarkMode.vue +19 -0
- package/src/components/DoughnutChart/DoughnutChart.vue +17 -18
- package/src/components/FileUpload/FileUpload.vue +22 -28
- package/src/components/FilterCard/FilterCard.vue +17 -18
- package/src/components/Filterlist/Filterlist.vue +17 -0
- package/src/components/Header/Header.vue +28 -29
- package/src/components/InlineEdit/InlineEdit.vue +11 -19
- package/src/components/Menu/Menu.vue +17 -17
- package/src/components/Milestones/Milestone.vue +22 -0
- package/src/components/Milestones/MilestoneGroup.vue +24 -0
- package/src/components/Multiselect/Multiselect.vue +17 -18
- package/src/components/Nav/Nav.vue +17 -19
- package/src/components/Notification/Notification.vue +17 -15
- package/src/components/Pagination/Pagination.vue +16 -16
- package/src/components/Rank/Rank.vue +17 -18
- package/src/components/Rankings/Rankings.vue +17 -27
- package/src/components/RecordCard/RecordCard.vue +17 -18
- package/src/components/Search/Search.vue +17 -17
- package/src/components/Slider/Slider.vue +17 -17
- package/src/components/SplitButton/README.md +19 -0
- package/src/components/SplitButton/SplitButton.vue +23 -0
- package/src/components/Tabs/Tabs.vue +17 -17
- package/src/components/VideoCard/VideoCard.vue +17 -18
- package/src/components/WordCount/WordCount.vue +22 -0
- package/src/index.js +2 -0
- package/assets/css/components/address-lookup.css +0 -1
- package/assets/css/components/address-lookup.css.map +0 -1
- package/assets/css/components/marketing.css +0 -1
- package/assets/css/components/marketing.css.map +0 -1
- package/assets/css/components/menu.css.map +0 -1
- package/assets/css/components/nav.old.css +0 -1
- package/assets/css/components/nav.old.css.map +0 -1
- package/assets/sass/components/nav.old.scss +0 -891
- /package/assets/sass/components/{menu.scss → menu.global.scss} +0 -0
|
@@ -132,80 +132,83 @@ const extendDialogs = (body): void => {
|
|
|
132
132
|
|
|
133
133
|
// Popover
|
|
134
134
|
if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')) {
|
|
135
|
-
event.stopPropagation();
|
|
136
|
-
|
|
137
135
|
const btn = event.target.closest('.dialog__wrapper > button');
|
|
138
136
|
const parent = btn.parentNode;
|
|
139
|
-
let dataEvent = 'openPopover';
|
|
140
|
-
const popover = parent.querySelector(':scope > dialog');
|
|
141
|
-
|
|
142
|
-
// close open dialogs
|
|
143
|
-
if (
|
|
144
|
-
document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
|
|
145
|
-
document.querySelector('*:not([data-keep-open]) > dialog[open]') != popover
|
|
146
|
-
) {
|
|
147
|
-
// Check that the ope dialog isn't a parent of the dialog being opened
|
|
148
|
-
if (btn.closest('dialog[open]') != document.querySelector('*:not([data-keep-open]) > dialog[open]')) {
|
|
149
|
-
document.querySelector('*:not([data-keep-open]) > dialog[open]').close();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Remove active class from exiting active buttons
|
|
154
|
-
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
|
|
155
|
-
btnElement.removeAttribute('aria-expanded');
|
|
156
|
-
});
|
|
157
137
|
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
dataEvent = 'closePopover';
|
|
138
|
+
if (parent.querySelector('dialog')) {
|
|
139
|
+
event.stopPropagation();
|
|
161
140
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
} else {
|
|
165
|
-
popover.show();
|
|
166
|
-
btn.setAttribute('aria-expanded', true);
|
|
141
|
+
let dataEvent = 'openPopover';
|
|
142
|
+
const popover = parent.querySelector(':scope > dialog');
|
|
167
143
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
144
|
+
// close open dialogs
|
|
145
|
+
if (
|
|
146
|
+
document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
|
|
147
|
+
document.querySelector('*:not([data-keep-open]) > dialog[open]') != popover
|
|
148
|
+
) {
|
|
149
|
+
// Check that the ope dialog isn't a parent of the dialog being opened
|
|
150
|
+
if (btn.closest('dialog[open]') != document.querySelector('*:not([data-keep-open]) > dialog[open]')) {
|
|
151
|
+
document.querySelector('*:not([data-keep-open]) > dialog[open]').close();
|
|
152
|
+
}
|
|
177
153
|
}
|
|
178
154
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
155
|
+
// Remove active class from exiting active buttons
|
|
156
|
+
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
|
|
157
|
+
btnElement.removeAttribute('aria-expanded');
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
if (popover.hasAttribute('open')) {
|
|
161
|
+
popover.close();
|
|
162
|
+
dataEvent = 'closePopover';
|
|
163
|
+
|
|
164
|
+
popover.removeAttribute('style');
|
|
165
|
+
btn.removeAttribute('aria-expanded');
|
|
166
|
+
} else {
|
|
167
|
+
popover.show();
|
|
168
|
+
btn.setAttribute('aria-expanded', true);
|
|
169
|
+
|
|
170
|
+
const position = btn.getBoundingClientRect();
|
|
171
|
+
let topOffset = position.top;
|
|
172
|
+
let leftOffset = position.left;
|
|
173
|
+
|
|
174
|
+
if (btn.closest('iam-table')) {
|
|
175
|
+
const container = btn.closest('iam-table').parentNode.getBoundingClientRect();
|
|
176
|
+
|
|
177
|
+
topOffset -= container.top;
|
|
178
|
+
leftOffset -= container.left;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (popover.classList.contains('dialog--fix')) {
|
|
182
|
+
popover.setAttribute(
|
|
183
|
+
'style',
|
|
184
|
+
`position:fixed;top: ${topOffset}px; left: ${leftOffset}px; margin: 3rem 0 0 0;`
|
|
185
|
+
);
|
|
186
|
+
}
|
|
184
187
|
}
|
|
185
|
-
}
|
|
186
188
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
189
|
+
// When the dialog is fixed it could dip under the viewport
|
|
190
|
+
// Lets check the dimensions and transform it to appear above
|
|
191
|
+
let boundingRec = popover.getBoundingClientRect();
|
|
192
|
+
const popoverBottom = boundingRec.bottom - window.scrollY;
|
|
193
|
+
const windowPos = window.innerHeight - window.scrollY;
|
|
194
|
+
if (popoverBottom > windowPos) {
|
|
195
|
+
const currentStyle = popover.hasAttribute('style') ? popover.getAttribute('style') + ' ' : '';
|
|
196
|
+
popover.setAttribute('style', currentStyle + `transform: translate(0, calc(-100% - 4rem))`);
|
|
195
197
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
198
|
+
// Check that the dialog doesn't go over the top of the page
|
|
199
|
+
boundingRec = popover.getBoundingClientRect();
|
|
200
|
+
const popoverTop = boundingRec.top - window.scrollY;
|
|
199
201
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
+
if (popoverTop < 100) popover.removeAttribute('style');
|
|
203
|
+
}
|
|
202
204
|
|
|
203
|
-
|
|
205
|
+
window.dataLayer = window.dataLayer || [];
|
|
204
206
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
window.dataLayer.push({
|
|
208
|
+
event: dataEvent,
|
|
209
|
+
id: btn.textContent,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
209
212
|
}
|
|
210
213
|
|
|
211
214
|
// Close popovers when clicked away
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
// Create the event listeners
|
|
2
|
+
window.triggerDynamicEvent = (element, event = 'change'): void => {
|
|
3
|
+
console.log('event');
|
|
4
|
+
|
|
5
|
+
if (element.hasAttribute('data-change-events') && event == 'change')
|
|
6
|
+
splitEvents(element, element.getAttribute('data-change-events'));
|
|
7
|
+
|
|
8
|
+
if (element.hasAttribute('data-click-events') && event == 'click')
|
|
9
|
+
splitEvents(element, element.getAttribute('data-click-events'));
|
|
10
|
+
};
|
|
11
|
+
|
|
2
12
|
const createDynamicEvents = (): void => {
|
|
3
13
|
// Change event
|
|
4
14
|
document.addEventListener('change', (event) => {
|
|
@@ -2,12 +2,6 @@ import hibpCheck from '../vendor/hibp.js';
|
|
|
2
2
|
|
|
3
3
|
const extendInputs = (body): void => {
|
|
4
4
|
function loadInput(): void {
|
|
5
|
-
// maxlength counter init
|
|
6
|
-
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
|
|
7
|
-
const wrapper = input.parentElement;
|
|
8
|
-
setMaxlengthVars(input, wrapper);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
5
|
Array.from(document.querySelectorAll('label input')).forEach((input) => {
|
|
12
6
|
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
13
7
|
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
@@ -76,9 +70,6 @@ const extendInputs = (body): void => {
|
|
|
76
70
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
|
|
77
71
|
input.nextElementSibling.value = input.value;
|
|
78
72
|
|
|
79
|
-
if (input.hasAttribute('maxlength') && input.nextElementSibling)
|
|
80
|
-
input.nextElementSibling.setAttribute('data-count', input.value.length);
|
|
81
|
-
|
|
82
73
|
if (input.hasAttribute('data-strength-checker')) checkPWDStrength(input);
|
|
83
74
|
}
|
|
84
75
|
});
|
|
@@ -129,22 +120,6 @@ const extendInputs = (body): void => {
|
|
|
129
120
|
});
|
|
130
121
|
};
|
|
131
122
|
|
|
132
|
-
export const setMaxlengthVars = (input): void => {
|
|
133
|
-
const wrapper = input.parentElement;
|
|
134
|
-
const maxlength = input.getAttribute('maxlength');
|
|
135
|
-
|
|
136
|
-
wrapper.style.setProperty('--maxlength', maxlength);
|
|
137
|
-
|
|
138
|
-
let span = input.nextElementSibling;
|
|
139
|
-
|
|
140
|
-
if (!span || (span && span.classList.contains('invalid-feedback'))) {
|
|
141
|
-
span = document.createElement('span');
|
|
142
|
-
wrapper.insertBefore(span, input.nextSibling);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
span.setAttribute('data-count', input.value.length);
|
|
146
|
-
};
|
|
147
|
-
|
|
148
123
|
export const changeType = (input, type): void => {
|
|
149
124
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'password')
|
|
150
125
|
input.setAttribute('data-password-type', true);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const showFuture = function (milestoneGroupElement: Element): void {
|
|
2
|
+
const futureToggle = milestoneGroupElement.dataset.showAllToggle;
|
|
3
|
+
|
|
4
|
+
if (!futureToggle) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const toggleBtn = document.createElement('button');
|
|
9
|
+
toggleBtn.innerHTML = 'Show next steps';
|
|
10
|
+
toggleBtn.classList.add('btn', 'btn-tertiary', 'show-all-toggle');
|
|
11
|
+
|
|
12
|
+
milestoneGroupElement.appendChild(toggleBtn);
|
|
13
|
+
|
|
14
|
+
toggleBtn.addEventListener('click', () => {
|
|
15
|
+
if (milestoneGroupElement.classList.contains('show-all')) {
|
|
16
|
+
toggleBtn.innerHTML = 'Show next steps';
|
|
17
|
+
|
|
18
|
+
milestoneGroupElement.classList.remove('show-all');
|
|
19
|
+
toggleInteractionEvent('hide-future-items', milestoneGroupElement);
|
|
20
|
+
} else {
|
|
21
|
+
toggleBtn.innerHTML = 'Hide next steps';
|
|
22
|
+
|
|
23
|
+
milestoneGroupElement.classList.add('show-all');
|
|
24
|
+
toggleInteractionEvent('show-future-items', milestoneGroupElement);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const toggleInteractionEvent = function (eventName: string, element: Element): void {
|
|
30
|
+
const customEvent = new CustomEvent(eventName, {});
|
|
31
|
+
|
|
32
|
+
element.dispatchEvent(customEvent);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const milestoneGroup = function (milestoneGroupElement: Element): void {
|
|
36
|
+
showFuture(milestoneGroupElement);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default milestoneGroup;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export const setStatus = function (milestoneElement: Element): void {
|
|
2
|
+
const status = milestoneElement.dataset.status;
|
|
3
|
+
|
|
4
|
+
if (!status) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const milestoneWrap = milestoneElement.shadowRoot.querySelector('.milestone-wrap');
|
|
9
|
+
const statusTag = document.createElement('span');
|
|
10
|
+
statusTag.setAttribute('part', 'status');
|
|
11
|
+
statusTag.classList.add('milestone-status');
|
|
12
|
+
statusTag.innerHTML = `${status} Step`;
|
|
13
|
+
|
|
14
|
+
if (status === 'Current') {
|
|
15
|
+
milestoneElement.classList.add('current');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
milestoneWrap.insertAdjacentElement('afterbegin', statusTag);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const getMilestoneTasks = function (milestoneElement: Element): void {
|
|
22
|
+
const taskWrap = milestoneElement.shadowRoot.querySelector('.task-wrap');
|
|
23
|
+
const tasks = milestoneElement.dataset.items ? JSON.parse(milestoneElement.dataset.items) : [];
|
|
24
|
+
|
|
25
|
+
if (!tasks.length) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
tasks.forEach((task) => {
|
|
30
|
+
const taskItem = document.createElement('details');
|
|
31
|
+
const taskName = document.createElement('summary');
|
|
32
|
+
const detailsWrap = document.createElement('div');
|
|
33
|
+
const taskDescription = document.createElement('p');
|
|
34
|
+
|
|
35
|
+
detailsWrap.classList.add('task-details');
|
|
36
|
+
|
|
37
|
+
taskName.innerHTML = task.name;
|
|
38
|
+
|
|
39
|
+
if (task.date_completed) {
|
|
40
|
+
taskName.classList.add('complete');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
taskItem.appendChild(taskName);
|
|
44
|
+
|
|
45
|
+
if (task.description) {
|
|
46
|
+
taskDescription.innerHTML = task.description;
|
|
47
|
+
detailsWrap.appendChild(taskDescription);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (task.actions.length) {
|
|
51
|
+
detailsWrap.appendChild(getSubtasks(task.actions, taskName));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
taskItem.appendChild(detailsWrap);
|
|
55
|
+
|
|
56
|
+
taskWrap.insertAdjacentElement('beforeend', taskItem);
|
|
57
|
+
|
|
58
|
+
// Fire tracking events
|
|
59
|
+
taskItem.addEventListener('click', () => {
|
|
60
|
+
if (taskItem?.hasAttribute('open')) {
|
|
61
|
+
itemInteractionEvent('milestone-item-closed', task.name, milestoneElement);
|
|
62
|
+
} else {
|
|
63
|
+
itemInteractionEvent('milestone-item-opened', task.name, milestoneElement);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
milestoneElement.appendChild(taskWrap);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const itemInteractionEvent = function (eventName: string, taskName: string, element: Element): void {
|
|
72
|
+
const customEvent = new CustomEvent(eventName, {
|
|
73
|
+
detail: {
|
|
74
|
+
title: taskName,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
element.dispatchEvent(customEvent);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const getSubtasks = function (actions: Array, taskName: Element): void {
|
|
82
|
+
const actionsWrap = document.createElement('ul');
|
|
83
|
+
const totalCount = actions.length;
|
|
84
|
+
const completed = actions.filter((action) => action.date_completed);
|
|
85
|
+
const completedCount = completed.length || 0;
|
|
86
|
+
|
|
87
|
+
if (totalCount < 1) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
taskName.innerHTML += ` (${completedCount}/${totalCount})`;
|
|
92
|
+
|
|
93
|
+
actions.forEach((action) => {
|
|
94
|
+
const actionItem = document.createElement('li');
|
|
95
|
+
const actionCompletedDate = document.createElement('span');
|
|
96
|
+
|
|
97
|
+
if (action.date_completed) {
|
|
98
|
+
actionItem.classList.add('complete');
|
|
99
|
+
|
|
100
|
+
actionCompletedDate.classList.add('action-date');
|
|
101
|
+
actionCompletedDate.innerHTML = action.date_completed;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
actionItem.innerHTML = action.action;
|
|
105
|
+
|
|
106
|
+
actionItem.appendChild(actionCompletedDate);
|
|
107
|
+
|
|
108
|
+
actionsWrap.appendChild(actionItem);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return actionsWrap;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const milestone = function (milestoneElement: Element): void {
|
|
115
|
+
setStatus(milestoneElement);
|
|
116
|
+
getMilestoneTasks(milestoneElement);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export default milestone;
|
|
@@ -343,7 +343,21 @@ export const setupAdvancedTable = (component, table): void => {
|
|
|
343
343
|
addSelectboxes(component, table, actionbar);
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
component.querySelectorAll('.dialog__wrapper .btn-compact').forEach((btn) => {
|
|
346
|
+
component.querySelectorAll('.dialog__wrapper .btn-compact').forEach((btn, index) => {
|
|
347
|
+
const wrapper = btn.closest('.dialog__wrapper');
|
|
348
|
+
const dialog = wrapper.querySelector('dialog');
|
|
349
|
+
|
|
350
|
+
// Transform dialog into a menu custom element
|
|
351
|
+
if (dialog) {
|
|
352
|
+
const id = `menu${uniqueID(index)}`;
|
|
353
|
+
|
|
354
|
+
dialog.setAttribute('id', id);
|
|
355
|
+
dialog.setAttribute('popover', 'auto');
|
|
356
|
+
btn.setAttribute('popovertarget', id);
|
|
357
|
+
|
|
358
|
+
dialog.outerHTML = dialog.outerHTML.replace(/<dialog/g, '<iam-menu').replace(/<\/dialog>/g, '</iam-menu>');
|
|
359
|
+
}
|
|
360
|
+
|
|
347
361
|
btn.classList.add('btn-sm');
|
|
348
362
|
btn.classList.add('m-0');
|
|
349
363
|
|
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
const videoSupport = async(body): void => {
|
|
2
|
-
|
|
3
|
-
if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
const loaded = await loadYouTubeScripts();
|
|
6
|
-
}
|
|
7
|
-
setTimeout(async() => {
|
|
8
|
-
|
|
1
|
+
const videoSupport = async (body): void => {
|
|
9
2
|
if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {
|
|
10
3
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
4
|
const loaded = await loadYouTubeScripts();
|
|
12
5
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
setTimeout(async () => {
|
|
7
|
+
if (document.querySelector('.youtube-link[data-youtube]') && !document.body.classList.contains('youtubeLoaded')) {
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
9
|
+
const loaded = await loadYouTubeScripts();
|
|
10
|
+
}
|
|
11
|
+
}, '2000');
|
|
17
12
|
|
|
13
|
+
body.addEventListener('click', async (event) => {
|
|
18
14
|
let target = (event.target as HTMLElement).closest<HTMLElement>('.youtube-link[data-youtube]');
|
|
19
15
|
|
|
20
|
-
if(!target){
|
|
16
|
+
if (!target) {
|
|
21
17
|
target = (event.target as HTMLElement).closest<HTMLElement>('.vimeo-link[data-vimeo]');
|
|
22
18
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if(target && target.hasAttribute('data-youtube')){
|
|
26
|
-
|
|
27
19
|
|
|
20
|
+
if (target && target.hasAttribute('data-youtube')) {
|
|
28
21
|
event.preventDefault();
|
|
29
22
|
|
|
30
23
|
if (!document.body.classList.contains('youtubeLoaded')) {
|
|
@@ -33,7 +26,7 @@ setTimeout(async() => {
|
|
|
33
26
|
}
|
|
34
27
|
|
|
35
28
|
const link_id = 'youtube-' + target.getAttribute('data-youtube');
|
|
36
|
-
|
|
29
|
+
|
|
37
30
|
if (!document.getElementById(`${link_id}-dialog`)) {
|
|
38
31
|
document.body.insertAdjacentHTML(
|
|
39
32
|
'beforeend',
|
|
@@ -49,7 +42,7 @@ setTimeout(async() => {
|
|
|
49
42
|
});
|
|
50
43
|
target.dispatchEvent(customEvent);
|
|
51
44
|
window.dataLayer.push(customEvent.detail);
|
|
52
|
-
|
|
45
|
+
|
|
53
46
|
createYoutTubeVideo(embed, target.getAttribute('data-youtube'));
|
|
54
47
|
dialog.showModal();
|
|
55
48
|
|
|
@@ -67,14 +60,11 @@ setTimeout(async() => {
|
|
|
67
60
|
target.dispatchEvent(customEvent);
|
|
68
61
|
window.dataLayer.push(customEvent.detail);
|
|
69
62
|
});
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
else if(target && target.hasAttribute('data-vimeo')){
|
|
73
|
-
|
|
63
|
+
} else if (target && target.hasAttribute('data-vimeo')) {
|
|
74
64
|
event.preventDefault();
|
|
75
65
|
|
|
76
66
|
const link_id = 'vimeo-' + target.getAttribute('data-youtube');
|
|
77
|
-
|
|
67
|
+
|
|
78
68
|
if (!document.getElementById(`${link_id}-dialog`)) {
|
|
79
69
|
document.body.insertAdjacentHTML(
|
|
80
70
|
'beforeend',
|
|
@@ -85,7 +75,6 @@ setTimeout(async() => {
|
|
|
85
75
|
const dialog = document.getElementById(`${link_id}-dialog`);
|
|
86
76
|
const embed = document.getElementById(link_id);
|
|
87
77
|
|
|
88
|
-
|
|
89
78
|
const videoId = target.getAttribute('data-vimeo');
|
|
90
79
|
|
|
91
80
|
const customEvent = new CustomEvent('play-video', {
|
|
@@ -99,7 +88,6 @@ setTimeout(async() => {
|
|
|
99
88
|
|
|
100
89
|
dialog.showModal();
|
|
101
90
|
|
|
102
|
-
|
|
103
91
|
dialog.addEventListener('close', () => {
|
|
104
92
|
embed.innerHTML = ``; // Remove the video since we cant pause it
|
|
105
93
|
|
|
@@ -110,16 +98,11 @@ setTimeout(async() => {
|
|
|
110
98
|
window.dataLayer.push(customEvent.detail);
|
|
111
99
|
});
|
|
112
100
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
101
|
});
|
|
102
|
+
};
|
|
116
103
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
export const loadYouTubeScripts = async(): any => {
|
|
104
|
+
export const loadYouTubeScripts = async (): any => {
|
|
121
105
|
return new Promise((resolve, reject) => {
|
|
122
|
-
|
|
123
106
|
const image = new Image();
|
|
124
107
|
image.onload = function (): any {
|
|
125
108
|
// This code loads the IFrame Player API code asynchronously.
|
|
@@ -135,10 +118,9 @@ export const loadYouTubeScripts = async(): any => {
|
|
|
135
118
|
};
|
|
136
119
|
image.src = 'https://youtube.com/favicon.ico';
|
|
137
120
|
});
|
|
138
|
-
}
|
|
139
|
-
|
|
121
|
+
};
|
|
140
122
|
|
|
141
|
-
export const createYoutTubeVideo = async(target, video_id): void | boolean => {
|
|
123
|
+
export const createYoutTubeVideo = async (target, video_id): void | boolean => {
|
|
142
124
|
if (typeof window.player == 'undefined') {
|
|
143
125
|
window.player = [];
|
|
144
126
|
}
|
|
@@ -189,6 +171,6 @@ export const createYoutTubeVideo = async(target, video_id): void | boolean => {
|
|
|
189
171
|
done = true;
|
|
190
172
|
}
|
|
191
173
|
}
|
|
192
|
-
}
|
|
174
|
+
};
|
|
193
175
|
|
|
194
176
|
export default videoSupport;
|
package/assets/ts/scripts.ts
CHANGED
|
@@ -14,6 +14,8 @@ const components = [
|
|
|
14
14
|
'table-no-submit',
|
|
15
15
|
'tabs',
|
|
16
16
|
'card',
|
|
17
|
+
'calendar',
|
|
18
|
+
'content',
|
|
17
19
|
'filter-card',
|
|
18
20
|
'video-card',
|
|
19
21
|
'record-card',
|
|
@@ -37,10 +39,13 @@ const components = [
|
|
|
37
39
|
'barchart',
|
|
38
40
|
'doughnutchart',
|
|
39
41
|
'bento-grid',
|
|
42
|
+
'milestone-group',
|
|
43
|
+
'milestone',
|
|
44
|
+
'darkmode',
|
|
40
45
|
];
|
|
41
46
|
|
|
42
47
|
// Attach classes to dom elements
|
|
43
|
-
document.addEventListener('DOMContentLoaded', async():void => {
|
|
48
|
+
document.addEventListener('DOMContentLoaded', async (): void => {
|
|
44
49
|
createDataLayer();
|
|
45
50
|
createDynamicEvents();
|
|
46
51
|
|
|
@@ -53,8 +58,6 @@ document.addEventListener('DOMContentLoaded', async():void => {
|
|
|
53
58
|
|
|
54
59
|
videoSupport(document.body);
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
61
|
/*
|
|
59
62
|
const prefix = 'iam';
|
|
60
63
|
const options = {
|