@iamproperty/components 7.0.0 → 7.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/address-lookup.css.map +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/card.module.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/carousel.config.css.map +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.map +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/inline-edit.preload.css.map +1 -1
- package/assets/css/components/marketing.css.map +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.map +1 -1
- package/assets/css/components/nav.css +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 +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/nav.old.css +1 -1
- package/assets/css/components/nav.old.css.map +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/notification.global.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/record-card.component.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.css +1 -1
- package/assets/css/components/table.css.map +1 -1
- package/assets/css/components/table.global.css +1 -1
- package/assets/css/components/table.global.css.map +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.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/js/components/_global.js +8 -8
- package/assets/js/components/accordion/accordion.component.js +13 -10
- package/assets/js/components/accordion/accordion.component.min.js +4 -4
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +97 -83
- package/assets/js/components/actionbar/actionbar.component.min.js +5 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +30 -26
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.js +10 -6
- package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.js +8 -7
- package/assets/js/components/barchart/barchart.component.min.js +4 -4
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/card/card.component.js +27 -12
- package/assets/js/components/card/card.component.min.js +3 -3
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +18 -12
- package/assets/js/components/carousel/carousel.component.min.js +4 -4
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- package/assets/js/components/chart/chart.component.js +9 -8
- package/assets/js/components/collapsible-side/collapsible-side.component.js +20 -8
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.js +11 -7
- 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 +19 -9
- package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.js +10 -6
- package/assets/js/components/filterlist/filterlist.component.min.js +3 -3
- package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
- package/assets/js/components/header/header.component.js +8 -4
- 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.js +43 -23
- package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +11 -5
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.js +22 -19
- package/assets/js/components/multiselect/multiselect.component.js +62 -45
- 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 +57 -38
- package/assets/js/components/nav/nav.component.min.js +5 -5
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +9 -5
- package/assets/js/components/notification/notification.component.min.js +5 -5
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.js +18 -14
- 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 +10 -8
- package/assets/js/components/record-card/record-card.component.min.js +2 -2
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
- package/assets/js/components/search/search.component.js +22 -17
- package/assets/js/components/search/search.component.min.js +4 -4
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.js +25 -21
- package/assets/js/components/slider/slider.component.min.js +3 -3
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.js +30 -24
- package/assets/js/components/table/table.component.min.js +7 -7
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.js +10 -6
- 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 +45 -33
- package/assets/js/components/video-card/video-card.component.min.js +3 -3
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
- package/assets/js/components.bundle.js +1 -1
- package/assets/js/components.bundle.js.map +1 -1
- package/assets/js/components.js +35 -8
- package/assets/js/modules/applied-filters.js +20 -20
- package/assets/js/modules/carousel.js +65 -60
- package/assets/js/modules/chart.js +184 -134
- package/assets/js/modules/chart.module.js +74 -63
- package/assets/js/modules/data-layer.js +17 -17
- package/assets/js/modules/dialogs.js +47 -38
- package/assets/js/modules/drawer.js +1 -1
- package/assets/js/modules/dynamicEvents.js +24 -24
- package/assets/js/modules/file-upload.js +8 -9
- package/assets/js/modules/fileupload.js +5 -5
- package/assets/js/modules/filterlist.js +4 -4
- package/assets/js/modules/form.js +22 -18
- package/assets/js/modules/helpers.js +54 -44
- package/assets/js/modules/inputs.js +25 -21
- package/assets/js/modules/nav.js +3 -1
- package/assets/js/modules/notification.js +6 -6
- package/assets/js/modules/orderablelist.js +12 -12
- package/assets/js/modules/pagination.js +5 -5
- package/assets/js/modules/table.js +242 -181
- package/assets/js/modules/tabs.js +71 -60
- package/assets/js/modules/testimonial.js +11 -12
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +1 -1
- package/assets/js/tests/chart.spec.js +5 -5
- package/assets/js/tests/filterlist.spec.js +2 -2
- package/assets/js/tests/slider.spec.js +2 -2
- package/assets/js/tests/table.spec.js +2 -2
- package/assets/js/vendor/hibp.js +4 -4
- package/assets/sass/_components.scss +28 -40
- package/assets/sass/_corefiles.scss +22 -29
- package/assets/sass/_elements.scss +19 -19
- package/assets/sass/_fonts.scss +10 -7
- package/assets/sass/_func.scss +14 -14
- package/assets/sass/_functions/functions.scss +115 -90
- package/assets/sass/_functions/mixins.scss +72 -112
- package/assets/sass/_functions/utilities.scss +447 -393
- package/assets/sass/_functions/variables.scss +1357 -1371
- package/assets/sass/_print.scss +18 -16
- package/assets/sass/_tests/colours.spec.scss +15 -14
- package/assets/sass/_tests/func.spec.scss +1 -2
- package/assets/sass/_tests/mixins.spec.scss +9 -14
- package/assets/sass/_tests/typography.spec.scss +1 -2
- package/assets/sass/_utilities.scss +8 -12
- package/assets/sass/components/actionbar.global.scss +45 -64
- package/assets/sass/components/actionbar.scss +58 -84
- package/assets/sass/components/address-lookup.scss +9 -11
- package/assets/sass/components/applied-filters.scss +3 -7
- package/assets/sass/components/barchart.component.scss +68 -99
- package/assets/sass/components/card.component.scss +35 -50
- package/assets/sass/components/card.module.scss +34 -37
- package/assets/sass/components/carousel.component.scss +198 -177
- package/assets/sass/components/carousel.config.scss +13 -19
- package/assets/sass/components/charts.config.scss +16 -23
- package/assets/sass/components/charts.module.scss +139 -178
- package/assets/sass/components/charts.scss +173 -232
- package/assets/sass/components/collapsible-side.scss +65 -98
- package/assets/sass/components/fileupload.scss +17 -23
- package/assets/sass/components/filter-card.component.scss +21 -28
- package/assets/sass/components/header.scss +24 -37
- package/assets/sass/components/inline-edit.preload.scss +24 -45
- package/assets/sass/components/inline-edit.scss +4 -5
- package/assets/sass/components/marketing.scss +19 -14
- package/assets/sass/components/multi-step.component.scss +36 -42
- package/assets/sass/components/multiselect.preload.scss +9 -12
- package/assets/sass/components/multiselect.scss +20 -24
- package/assets/sass/components/nav.docs.scss +7 -15
- package/assets/sass/components/nav.global.scss +123 -177
- package/assets/sass/components/nav.old.scss +64 -135
- package/assets/sass/components/nav.preload.scss +11 -12
- package/assets/sass/components/nav.scss +126 -173
- package/assets/sass/components/notification.global.scss +2 -3
- package/assets/sass/components/notification.scss +17 -32
- package/assets/sass/components/pagination.scss +32 -44
- package/assets/sass/components/property-searchbar.scss +2 -6
- package/assets/sass/components/record-card.component.scss +42 -55
- package/assets/sass/components/slider.scss +38 -35
- package/assets/sass/components/snapshot.scss +4 -10
- package/assets/sass/components/stepper.scss +14 -22
- package/assets/sass/components/table.global.scss +130 -171
- package/assets/sass/components/table.scss +17 -27
- package/assets/sass/components/tabs.scss +23 -32
- package/assets/sass/components/testimonial.scss +6 -14
- package/assets/sass/components/timeline.scss +8 -12
- package/assets/sass/components/video-card.component.scss +9 -14
- package/assets/sass/components.reset.scss +5 -5
- package/assets/sass/core.scss +3 -3
- package/assets/sass/elements/admin-panel.scss +41 -45
- package/assets/sass/elements/badge-tag.scss +16 -26
- package/assets/sass/elements/brand.scss +13 -16
- package/assets/sass/elements/buttons.scss +80 -106
- package/assets/sass/elements/container.scss +24 -133
- package/assets/sass/elements/details.scss +30 -50
- package/assets/sass/elements/dialog.scss +4 -6
- package/assets/sass/elements/forms.scss +421 -437
- package/assets/sass/elements/icons.scss +3 -4
- package/assets/sass/elements/links.scss +17 -25
- package/assets/sass/elements/lists.scss +30 -47
- package/assets/sass/elements/media.scss +1 -4
- package/assets/sass/elements/modal.scss +54 -80
- package/assets/sass/elements/popover.scss +28 -45
- package/assets/sass/elements/progress.scss +30 -40
- package/assets/sass/elements/table.element.scss +10 -15
- package/assets/sass/elements/tooltips.scss +27 -49
- package/assets/sass/elements/type.scss +47 -53
- package/assets/sass/email.scss +7 -9
- package/assets/sass/error.scss +23 -20
- package/assets/sass/foundations/bs_grid.scss +0 -1
- package/assets/sass/foundations/grid.scss +120 -122
- package/assets/sass/foundations/reboot.scss +27 -35
- package/assets/sass/foundations/root.scss +21 -31
- package/assets/sass/helpers/dynamic.scss +5 -5
- package/assets/sass/helpers/line-clamp.scss +1 -2
- package/assets/sass/helpers/max-height.scss +28 -36
- package/assets/sass/helpers/wider-colours.scss +2 -5
- package/assets/sass/main.scss +4 -4
- package/assets/sass/templates/auth.scss +11 -18
- package/assets/sass/templates/form.scss +16 -29
- package/assets/ts/components/_global.ts +14 -17
- package/assets/ts/components/accordion/accordion.component.ts +23 -19
- package/assets/ts/components/actionbar/README.md +8 -7
- package/assets/ts/components/actionbar/actionbar.component.ts +170 -220
- package/assets/ts/components/address-lookup/address-lookup.component.ts +94 -130
- package/assets/ts/components/applied-filters/README.md +1 -1
- package/assets/ts/components/applied-filters/applied-filters.component.ts +16 -15
- package/assets/ts/components/barchart/barchart.component.ts +29 -26
- package/assets/ts/components/card/card.component.ts +56 -57
- package/assets/ts/components/carousel/README.md +8 -9
- package/assets/ts/components/carousel/carousel.component.ts +30 -33
- package/assets/ts/components/chart/README.md +1 -3
- package/assets/ts/components/chart/chart.component.ts +24 -36
- package/assets/ts/components/collapsible-side/README.md +1 -1
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +44 -57
- package/assets/ts/components/fileupload/README.md +3 -3
- package/assets/ts/components/fileupload/fileupload.component.ts +23 -28
- package/assets/ts/components/filter-card/filter-card.component.ts +32 -33
- package/assets/ts/components/filterlist/README.md +3 -3
- package/assets/ts/components/filterlist/filterlist.component.ts +18 -16
- package/assets/ts/components/header/README.md +8 -9
- package/assets/ts/components/header/header.component.ts +15 -16
- package/assets/ts/components/inline-edit/README.md +1 -0
- package/assets/ts/components/inline-edit/inline-edit.component.ts +71 -71
- package/assets/ts/components/marketing/marketing.component.ts +17 -16
- package/assets/ts/components/multi-step/multi-step.component.ts +114 -156
- package/assets/ts/components/multiselect/README.md +5 -5
- package/assets/ts/components/multiselect/multiselect.component.ts +116 -133
- package/assets/ts/components/nav/README.md +13 -13
- package/assets/ts/components/nav/nav.component.ts +171 -167
- package/assets/ts/components/notification/README.md +9 -9
- package/assets/ts/components/notification/notification.component.ts +33 -32
- package/assets/ts/components/pagination/README.md +12 -12
- package/assets/ts/components/pagination/pagination.component.ts +51 -69
- package/assets/ts/components/record-card/record-card.component.ts +24 -34
- package/assets/ts/components/search/README.md +6 -7
- package/assets/ts/components/search/search.component.ts +75 -91
- package/assets/ts/components/slider/slider.component.ts +62 -77
- package/assets/ts/components/table/README.md +8 -8
- package/assets/ts/components/table/table.component.ts +97 -134
- package/assets/ts/components/tabs/README.md +4 -4
- package/assets/ts/components/tabs/tabs.component.ts +16 -14
- package/assets/ts/components/video-card/video-card.component.ts +89 -93
- package/assets/ts/components.ts +44 -20
- package/assets/ts/html.d.ts +1 -7
- package/assets/ts/modules/applied-filters.ts +104 -135
- package/assets/ts/modules/card.module.ts +13 -18
- package/assets/ts/modules/carousel.ts +194 -195
- package/assets/ts/modules/chart.module.ts +201 -246
- package/assets/ts/modules/chart.ts +454 -472
- package/assets/ts/modules/data-layer.md +35 -31
- package/assets/ts/modules/data-layer.ts +18 -18
- package/assets/ts/modules/dialogs.ts +113 -117
- package/assets/ts/modules/drawer.ts +7 -9
- package/assets/ts/modules/dynamicEvents.ts +67 -100
- package/assets/ts/modules/file-upload.ts +43 -40
- package/assets/ts/modules/fileupload.ts +38 -60
- package/assets/ts/modules/filterlist.ts +14 -20
- package/assets/ts/modules/form.ts +126 -128
- package/assets/ts/modules/helpers.ts +114 -120
- package/assets/ts/modules/inputs.ts +88 -120
- package/assets/ts/modules/nav.ts +19 -18
- package/assets/ts/modules/notification.ts +28 -32
- package/assets/ts/modules/orderablelist.ts +90 -82
- package/assets/ts/modules/pagination.ts +14 -19
- package/assets/ts/modules/table.ts +516 -599
- package/assets/ts/modules/tabs.ts +120 -145
- package/assets/ts/modules/testimonial.ts +59 -64
- package/assets/ts/scripts.ts +7 -9
- package/assets/ts/tests/chart.spec.ts +11 -20
- package/assets/ts/tests/data-layer.spec.js +3 -4
- package/assets/ts/tests/filterlist.spec.ts +3 -6
- package/assets/ts/tests/slider.spec.ts +9 -15
- package/assets/ts/tests/table.spec.ts +7 -24
- package/assets/ts/vendor/hibp.ts +43 -43
- package/dist/components.es.js +280 -270
- package/dist/components.umd.js +67 -67
- package/dist/style.css +1 -1
- package/package.json +14 -4
- package/src/components/Accordion/Accordion.spec.js +25 -31
- package/src/components/Accordion/Accordion.vue +16 -19
- package/src/components/Accordion/AccordionItem.vue +39 -37
- package/src/components/Accordion/README.md +10 -12
- package/src/components/Actionbar/Actionbar.vue +15 -18
- package/src/components/Actionbar/README.md +8 -7
- package/src/components/AddressLookup/AddressLookup.vue +14 -16
- package/src/components/AppliedFilters/AppliedFilters.vue +14 -16
- package/src/components/Banner/Banner.spec.js +13 -15
- package/src/components/Banner/Banner.vue +19 -19
- package/src/components/Banner/README.md +8 -10
- package/src/components/BarChart/BarChart.vue +14 -16
- package/src/components/Card/Card.vue +13 -16
- package/src/components/Card/README.md +8 -8
- package/src/components/Carousel/Carousel.vue +15 -18
- package/src/components/Carousel/README.md +7 -7
- package/src/components/Chart/Chart.spec.js +64 -87
- package/src/components/Chart/Chart.vue +41 -40
- package/src/components/Chart/README.md +8 -9
- package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +8 -10
- package/src/components/CollapsibleSideMenu/README.md +1 -1
- package/src/components/FileUpload/FileUpload.vue +35 -40
- package/src/components/FileUpload/README.md +3 -3
- package/src/components/FilterCard/FilterCard.vue +14 -16
- package/src/components/Filterlist/Filterlist.vue +7 -9
- package/src/components/Filterlist/README.md +3 -3
- package/src/components/Header/Header.vue +23 -26
- package/src/components/Header/README.md +8 -9
- package/src/components/InlineEdit/InlineEdit.vue +26 -32
- package/src/components/Input/Input.vue +323 -233
- package/src/components/Input/README.md +11 -11
- package/src/components/Marketing/Marketing.vue +24 -27
- package/src/components/Marketing/README.md +7 -7
- package/src/components/MultiStep/MultiStep.vue +13 -15
- package/src/components/Multiselect/Multiselect.vue +14 -17
- package/src/components/Nav/Nav.vue +15 -29
- package/src/components/Nav/README.md +12 -12
- package/src/components/Nav-old/Nav.vue +88 -93
- package/src/components/Nav-old/README.md +11 -12
- package/src/components/NoteFeed/NoteFeed.vue +59 -56
- package/src/components/NoteFeed/README.md +6 -6
- package/src/components/Notification/Notification.vue +11 -15
- package/src/components/Notification/README.md +9 -9
- package/src/components/Pagination/Pagination.vue +14 -24
- package/src/components/Pagination/README.md +12 -12
- package/src/components/PropertySearchbar/PropertySearchbar.vue +191 -160
- package/src/components/PropertySearchbar/README.md +14 -15
- package/src/components/RecordCard/RecordCard.vue +14 -16
- package/src/components/Search/README.md +1 -1
- package/src/components/Search/Search.vue +13 -16
- package/src/components/Slider/Slider.vue +13 -16
- package/src/components/Snapshot/README.md +9 -10
- package/src/components/Snapshot/Snapshot.vue +15 -17
- package/src/components/Stepper/README.md +12 -13
- package/src/components/Stepper/Step.vue +22 -18
- package/src/components/Stepper/Stepper.spec.js +41 -46
- package/src/components/Stepper/Stepper.vue +17 -18
- package/src/components/Table/README.md +12 -11
- package/src/components/Table/Table.spec.js +17 -28
- package/src/components/Table/Table.vue +49 -48
- package/src/components/Tabs/README.md +8 -8
- package/src/components/Tabs/Tab.vue +21 -21
- package/src/components/Tabs/Tabs.vue +14 -17
- package/src/components/Testimonial/README.md +11 -12
- package/src/components/Testimonial/Testimonial.spec.js +22 -26
- package/src/components/Testimonial/Testimonial.vue +31 -25
- package/src/components/Timeline/README.md +3 -3
- package/src/components/Timeline/Timeline.spec.js +9 -11
- package/src/components/Timeline/Timeline.vue +10 -10
- package/src/components/VideoCard/VideoCard.vue +14 -16
- package/src/foundations/Logo/Logo.spec.js +30 -30
- package/src/foundations/Logo/Logo.vue +28 -28
- package/src/foundations/Logo/README.md +5 -4
- package/src/helpers/strings.js +11 -8
- package/src/index.js +27 -28
- package/src/vue-shim.d.ts +4 -4
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
// #region Functions that setup and trigger other functions
|
|
1
|
+
// #region Functions that setup and trigger other functions
|
|
2
2
|
export const addClasses = (chartElement, chartOuter) => {
|
|
3
3
|
// add colour classes
|
|
4
4
|
for (let i = 1; i <= 10; i++) {
|
|
5
5
|
if (chartElement.hasAttribute(`data-colour-${i}`)) {
|
|
6
|
-
|
|
6
|
+
const colour = chartElement.getAttribute(`data-colour-${i}`);
|
|
7
7
|
chartElement.style.setProperty(`--chart-colour-${i}`, `var(--chart-colour-${colour})`);
|
|
8
8
|
chartElement.style.setProperty(`--chart-colour-${i}-hover`, `var(--chart-colour-${colour}-hover)`);
|
|
9
9
|
}
|
|
10
10
|
Array.from(chartOuter.querySelectorAll(`[data-colour-${i}]`)).forEach((element) => {
|
|
11
|
-
|
|
11
|
+
const colour = element.getAttribute(`data-colour-${i}`);
|
|
12
12
|
element.style.setProperty(`--chart-colour-${i}-set`, `var(--chart-colour-${colour})`);
|
|
13
13
|
element.style.setProperty(`--chart-colour-${i}-hover`, `var(--chart-colour-${colour}-hover)`);
|
|
14
14
|
});
|
|
@@ -25,9 +25,11 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
|
|
|
25
25
|
const chartYaxis = chartOuter.querySelector('.chart__yaxis');
|
|
26
26
|
chartYaxis.innerHTML = ``;
|
|
27
27
|
// Remove old input fields
|
|
28
|
-
Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map((element) => {
|
|
28
|
+
Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map((element) => {
|
|
29
|
+
element.remove();
|
|
30
|
+
});
|
|
29
31
|
// #endregion
|
|
30
|
-
|
|
32
|
+
const { xaxis } = getChartData(chartElement);
|
|
31
33
|
setCellData(chartElement, tableElement);
|
|
32
34
|
createChartKey(chartOuter, tableElement, chartKey);
|
|
33
35
|
createChartGuidelines(chartElement, chartGuidelines);
|
|
@@ -40,33 +42,34 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
|
|
|
40
42
|
// #endregion
|
|
41
43
|
// #region Event handlers and observers
|
|
42
44
|
export const setEventListener = function (chartElement, chartOuter) {
|
|
43
|
-
|
|
45
|
+
const chart = chartOuter.querySelector('.chart');
|
|
44
46
|
chart.addEventListener('mousemove', (event) => {
|
|
45
47
|
if (event && event.target instanceof HTMLElement && event.target.closest('td:not(:first-child')) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
const column = event.target.closest('td:not(:first-child');
|
|
49
|
+
const rect = column.getBoundingClientRect();
|
|
50
|
+
const x = event.clientX - rect.left;
|
|
51
|
+
const y = event.clientY - rect.top;
|
|
50
52
|
chart.setAttribute('style', `--cursor-x: ${x}px; --cursor-y: ${y}px;`);
|
|
51
53
|
}
|
|
52
54
|
});
|
|
53
55
|
// Use the part for the chart items to pass through states to the pages CSS
|
|
54
|
-
|
|
56
|
+
const labels = chartOuter.querySelectorAll('label');
|
|
55
57
|
Array.from(labels).forEach((label) => {
|
|
56
58
|
if (chartOuter.querySelector(`input#${label.getAttribute('for')}`).checked)
|
|
57
59
|
label.setAttribute('part', 'key-checked');
|
|
58
60
|
else
|
|
59
61
|
label.setAttribute('part', 'key-unchecked');
|
|
60
62
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
const table = chartElement.querySelector('table');
|
|
64
|
+
const shadowTable = chartOuter.querySelector('table');
|
|
63
65
|
chartOuter.addEventListener('change', function (event) {
|
|
64
|
-
|
|
65
|
-
const customEvent = new CustomEvent(
|
|
66
|
+
const eventTarget = event.target;
|
|
67
|
+
const customEvent = new CustomEvent('view-change', {
|
|
68
|
+
detail: {
|
|
66
69
|
'data-dataset': eventTarget.getAttribute('data-dataset'),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
+
label: eventTarget.getAttribute('data-label'),
|
|
71
|
+
checked: eventTarget.checked,
|
|
72
|
+
},
|
|
70
73
|
});
|
|
71
74
|
chartElement.dispatchEvent(customEvent);
|
|
72
75
|
Array.from(labels).forEach((label) => {
|
|
@@ -81,13 +84,13 @@ export const setEventListener = function (chartElement, chartOuter) {
|
|
|
81
84
|
});
|
|
82
85
|
};
|
|
83
86
|
export const setEventObservers = function (chartElement, chartOuter) {
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
const table = chartElement.querySelector('table');
|
|
88
|
+
const shadowTable = chartOuter.querySelector('table');
|
|
86
89
|
const attributesUpdated = (mutationList, observer) => {
|
|
87
90
|
observer.disconnect();
|
|
88
91
|
observer2.disconnect();
|
|
89
92
|
for (const mutation of mutationList) {
|
|
90
|
-
if (mutation.attributeName == 'class' ||
|
|
93
|
+
if (mutation.attributeName == 'class' || mutation.type === 'attributes' || mutation.type === 'attributes') {
|
|
91
94
|
shadowTable.innerHTML = table.innerHTML;
|
|
92
95
|
setupChart(chartElement, chartOuter, shadowTable);
|
|
93
96
|
}
|
|
@@ -99,7 +102,7 @@ export const setEventObservers = function (chartElement, chartOuter) {
|
|
|
99
102
|
observer.disconnect();
|
|
100
103
|
observer2.disconnect();
|
|
101
104
|
for (const mutation of mutationList) {
|
|
102
|
-
if (mutation.type ==
|
|
105
|
+
if (mutation.type == 'characterData' || (mutation.type == 'childList' && mutation.addedNodes.length)) {
|
|
103
106
|
shadowTable.innerHTML = table.innerHTML;
|
|
104
107
|
setupChart(chartElement, chartOuter, shadowTable);
|
|
105
108
|
}
|
|
@@ -107,8 +110,8 @@ export const setEventObservers = function (chartElement, chartOuter) {
|
|
|
107
110
|
observer.observe(table, { characterData: true, subtree: true });
|
|
108
111
|
observer2.observe(chartElement, { attributes: true });
|
|
109
112
|
};
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
const observer = new MutationObserver(tableUpdated);
|
|
114
|
+
const observer2 = new MutationObserver(attributesUpdated);
|
|
112
115
|
observer.observe(table, { characterData: true, subtree: true });
|
|
113
116
|
observer2.observe(chartElement, { attributes: true });
|
|
114
117
|
return true;
|
|
@@ -116,15 +119,21 @@ export const setEventObservers = function (chartElement, chartOuter) {
|
|
|
116
119
|
// #endregion
|
|
117
120
|
// #region GET functions
|
|
118
121
|
export const getChartData = function (chartElement) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
const table = chartElement.shadowRoot.querySelector('.chart__wrapper table');
|
|
123
|
+
const min = chartElement.hasAttribute('data-min') ? chartElement.getAttribute('data-min') : 0;
|
|
124
|
+
const max = chartElement.hasAttribute('data-max')
|
|
125
|
+
? chartElement.getAttribute('data-max')
|
|
126
|
+
: getLargestValue(chartElement, table);
|
|
122
127
|
//let type:string = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
const yaxis = chartElement.hasAttribute('data-yaxis') ? chartElement.getAttribute('data-yaxis').split(',') : [];
|
|
129
|
+
const guidelines = chartElement.hasAttribute('data-guidelines')
|
|
130
|
+
? chartElement.getAttribute('data-guidelines').split(',')
|
|
131
|
+
: [];
|
|
125
132
|
//let targets:any = chartElement.hasAttribute('data-targets') ? JSON.parse(chartElement.getAttribute('data-targets')) : null;
|
|
126
133
|
//let events:any = chartElement.hasAttribute('data-events') ? JSON.parse(chartElement.getAttribute('data-events')) : null;
|
|
127
|
-
|
|
134
|
+
const xaxis = chartElement.hasAttribute('data-xaxis')
|
|
135
|
+
? chartElement.getAttribute('data-xaxis').split(',')
|
|
136
|
+
: null;
|
|
128
137
|
//let increment = chartElement.hasAttribute('data-increment') ? chartElement.getAttribute('data-increment'): null;
|
|
129
138
|
//let start:any = chartElement.hasAttribute('data-start') ? chartElement.getAttribute('data-start') : 0;
|
|
130
139
|
//let end:any = chartElement.hasAttribute('data-end') ? chartElement.getAttribute('data-end') : getLargestValue(chartElement,table); // TODO - get largest value from the data-xaxis
|
|
@@ -134,11 +143,11 @@ export const getChartData = function (chartElement) {
|
|
|
134
143
|
};
|
|
135
144
|
function getLargestValue(chartElement, table) {
|
|
136
145
|
const selector = chartElement.classList.contains('chart--stacked') ? 'tbody tr' : 'tbody td:not(:first-child)';
|
|
137
|
-
|
|
138
|
-
|
|
146
|
+
const values = Array.from(table.querySelectorAll(selector)).map((element) => {
|
|
147
|
+
const currentValue = element.getAttribute('data-numeric');
|
|
139
148
|
return currentValue;
|
|
140
149
|
});
|
|
141
|
-
|
|
150
|
+
const largestValue = Math.max(...values);
|
|
142
151
|
// TO DO round to the nearest 10, 100, 1000 and so on
|
|
143
152
|
return Math.ceil(largestValue);
|
|
144
153
|
}
|
|
@@ -156,7 +165,7 @@ const getValues = function (value, min, max, start) {
|
|
|
156
165
|
}
|
|
157
166
|
// If the value is negative the position below the 0 line
|
|
158
167
|
if (min < 0) {
|
|
159
|
-
bottom = Math.abs((
|
|
168
|
+
bottom = Math.abs((min / (max - min)) * 100);
|
|
160
169
|
if (cleanValue < 0) {
|
|
161
170
|
percent = bottom - percent;
|
|
162
171
|
bottom = bottom - percent;
|
|
@@ -176,20 +185,22 @@ export const setCellData = function (chartElement, table) {
|
|
|
176
185
|
let rowValue = 0;
|
|
177
186
|
// Set the data numeric value if not set
|
|
178
187
|
Array.from(tr.querySelectorAll('td:not(:first-child)')).forEach((td) => {
|
|
179
|
-
|
|
188
|
+
const value = parseFloat(td.textContent.replace('£', '').replace('%', '').replace(',', ''));
|
|
180
189
|
td.setAttribute('data-numeric', value);
|
|
181
190
|
td.setAttribute('data-value', td.textContent);
|
|
182
|
-
|
|
191
|
+
const display = getComputedStyle(td).display;
|
|
183
192
|
if (display != 'none')
|
|
184
193
|
rowValue += value;
|
|
185
194
|
});
|
|
186
195
|
tr.setAttribute('data-numeric', rowValue);
|
|
187
196
|
});
|
|
188
|
-
|
|
197
|
+
const { min, max } = getChartData(chartElement);
|
|
189
198
|
Array.from(table.querySelectorAll('tbody tr')).forEach((tr, index) => {
|
|
190
|
-
|
|
199
|
+
const group = tr.querySelector('td:first-child, th:first-child')
|
|
200
|
+
? tr.querySelector('td:first-child, th:first-child').textContent
|
|
201
|
+
: '';
|
|
191
202
|
tr.setAttribute('part', 'group');
|
|
192
|
-
|
|
203
|
+
const percent = ((tr.getAttribute('data-numeric') - min) / (max - min)) * 100;
|
|
193
204
|
tr.style.setProperty('--percent', `${percent}%`);
|
|
194
205
|
// Set the data label value if not set
|
|
195
206
|
Array.from(tr.querySelectorAll('td:not([data-label])')).forEach((td, index) => {
|
|
@@ -200,17 +211,17 @@ export const setCellData = function (chartElement, table) {
|
|
|
200
211
|
if (tr.querySelectorAll('td').length > 2)
|
|
201
212
|
td.setAttribute('data-label', table.querySelectorAll('thead th')[index].textContent);
|
|
202
213
|
});
|
|
203
|
-
|
|
204
|
-
|
|
214
|
+
const rowMin = tr.hasAttribute('data-min') ? tr.getAttribute('data-min') : min;
|
|
215
|
+
const rowMax = tr.hasAttribute('data-max') ? tr.getAttribute('data-max') : max;
|
|
205
216
|
if (rowMin < 0) {
|
|
206
|
-
|
|
217
|
+
const minBottom = Math.abs((rowMin / (rowMax - rowMin)) * 100);
|
|
207
218
|
chartElement.setAttribute('style', `--min-bottom: ${minBottom}%;`);
|
|
208
219
|
}
|
|
209
220
|
// Add a useful index css var for the use of animatons.
|
|
210
221
|
tr.style.setProperty('--row-index', index + 1);
|
|
211
222
|
// Add css vars to cells
|
|
212
223
|
Array.from(tr.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')).forEach((td) => {
|
|
213
|
-
|
|
224
|
+
const display = getComputedStyle(td).display;
|
|
214
225
|
if (display == 'none')
|
|
215
226
|
return;
|
|
216
227
|
const content = td.innerHTML;
|
|
@@ -219,21 +230,21 @@ export const setCellData = function (chartElement, table) {
|
|
|
219
230
|
if (!td.querySelector('span[data-group]'))
|
|
220
231
|
td.innerHTML = `<span data-group="${group}" ${td.hasAttribute('data-label') ? `data-label="${td.getAttribute('data-label')}"` : ''} part="popover">${content}</span>`;
|
|
221
232
|
if (!td.hasAttribute('style')) {
|
|
222
|
-
|
|
233
|
+
const { percent, bottom, axis } = getValues(value, rowMin, rowMax, start);
|
|
223
234
|
td.setAttribute('data-percent', percent);
|
|
224
|
-
td.setAttribute(
|
|
235
|
+
td.setAttribute('style', `--bottom:${bottom}%;--percent:${percent}%;--axis:${axis}%;`);
|
|
225
236
|
}
|
|
226
237
|
});
|
|
227
238
|
});
|
|
228
239
|
};
|
|
229
240
|
export const setLongestLabel = function (chartOuter) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
241
|
+
const chartWrapper = chartOuter.querySelector('.chart__wrapper');
|
|
242
|
+
const chartSpacer = chartOuter.querySelector('.chart__spacer span');
|
|
243
|
+
const table = chartOuter.querySelector('.chart table');
|
|
233
244
|
// set the longest label attr so that the bar chart knows what margin to set on the left
|
|
234
245
|
let longestLabel = '';
|
|
235
246
|
Array.from(table.querySelectorAll('tbody tr td:first-child')).forEach((td) => {
|
|
236
|
-
if (typeof td.textContent !=
|
|
247
|
+
if (typeof td.textContent != 'undefined' && td.textContent.length > longestLabel.length) {
|
|
237
248
|
longestLabel = td.textContent;
|
|
238
249
|
}
|
|
239
250
|
});
|
|
@@ -241,11 +252,11 @@ export const setLongestLabel = function (chartOuter) {
|
|
|
241
252
|
chartSpacer.innerHTML = longestLabel;
|
|
242
253
|
};
|
|
243
254
|
export const setLongestValue = function (chartOuter) {
|
|
244
|
-
|
|
245
|
-
|
|
255
|
+
const chartWrapper = chartOuter.querySelector('.chart__wrapper');
|
|
256
|
+
const table = chartOuter.querySelector('.chart table');
|
|
246
257
|
let longestValue = '';
|
|
247
258
|
Array.from(table.querySelectorAll('tbody tr td:not(:first-child) span')).forEach((td) => {
|
|
248
|
-
if (typeof td.textContent !=
|
|
259
|
+
if (typeof td.textContent != 'undefined' && td.textContent.length > longestValue.length)
|
|
249
260
|
longestValue = td.textContent;
|
|
250
261
|
});
|
|
251
262
|
chartWrapper.setAttribute('data-longest-value', longestValue);
|
|
@@ -256,7 +267,7 @@ export const createChartKey = function (chartOuter, tableElement, chartKey) {
|
|
|
256
267
|
const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
|
|
257
268
|
//const chartOuter = chartElement.querySelector('.chart__outer');
|
|
258
269
|
let previousInput;
|
|
259
|
-
|
|
270
|
+
const headings = Array.from(tableElement.querySelectorAll('thead th'));
|
|
260
271
|
headings.forEach((arrayElement, index) => {
|
|
261
272
|
if (index != 0) {
|
|
262
273
|
previousInput = createChartKeyItem(chartID, index, arrayElement.textContent, chartKey, chartOuter, previousInput);
|
|
@@ -268,7 +279,7 @@ export const createChartKey = function (chartOuter, tableElement, chartKey) {
|
|
|
268
279
|
return true;
|
|
269
280
|
};
|
|
270
281
|
function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previousInput) {
|
|
271
|
-
|
|
282
|
+
const input = document.createElement('input');
|
|
272
283
|
input.setAttribute('name', `${chartID}-dataset-${index}`);
|
|
273
284
|
input.setAttribute('id', `${chartID}-dataset-${index}`);
|
|
274
285
|
input.setAttribute('data-dataset', `${index}`);
|
|
@@ -280,7 +291,7 @@ function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previous
|
|
|
280
291
|
else
|
|
281
292
|
chartOuter.insertBefore(input, previousInput.nextSibling);
|
|
282
293
|
previousInput = input;
|
|
283
|
-
|
|
294
|
+
const label = document.createElement('label');
|
|
284
295
|
label.setAttribute('class', `key btn btn-action`);
|
|
285
296
|
label.setAttribute('for', `${chartID}-dataset-${index}`);
|
|
286
297
|
label.setAttribute('data-label', `${text}`);
|
|
@@ -294,18 +305,18 @@ export const createChartGuidelines = function (chartElement, chartGuidelines) {
|
|
|
294
305
|
if (!guidelines.length)
|
|
295
306
|
guidelines = yaxis;
|
|
296
307
|
chartGuidelines.innerHTML = '';
|
|
297
|
-
for (
|
|
298
|
-
|
|
299
|
-
|
|
308
|
+
for (let i = 0; i < guidelines.length; i++) {
|
|
309
|
+
const value = parseFloat(guidelines[i].replace('£', '').replace('%', '').replace(',', ''));
|
|
310
|
+
const { axis } = getValues(value, min, max);
|
|
300
311
|
chartGuidelines.innerHTML += `<div class="guideline" style="--percent:${axis}%;">${yaxis.indexOf(guidelines[i]) != -1 ? `<span>${guidelines[i]}</span>` : ''}</div>`;
|
|
301
312
|
}
|
|
302
313
|
};
|
|
303
314
|
export const createChartYaxis = function (chartElement, chartYaxis) {
|
|
304
|
-
|
|
315
|
+
const { min, max, yaxis } = getChartData(chartElement);
|
|
305
316
|
chartYaxis.innerHTML = '';
|
|
306
|
-
for (
|
|
307
|
-
|
|
308
|
-
|
|
317
|
+
for (let i = 0; i < yaxis.length; i++) {
|
|
318
|
+
const value = parseFloat(yaxis[i].replace('£', '').replace('%', ''));
|
|
319
|
+
const { axis } = getValues(value, min, max);
|
|
309
320
|
chartYaxis.innerHTML += `<div class="axis__point" style="--percent:${axis}%;"><span>${yaxis[i]}</span></div>`;
|
|
310
321
|
}
|
|
311
322
|
};
|
|
@@ -321,7 +332,7 @@ export const createXaxis = function (chartOuter) {
|
|
|
321
332
|
export const createTooltips = function (chartOuter) {
|
|
322
333
|
const titles = chartOuter.querySelectorAll('thead th[title], tbody th[title]:first-child, tbody td[title]:first-child');
|
|
323
334
|
Array.from(titles).forEach((title) => {
|
|
324
|
-
|
|
335
|
+
const tooltipId = `tooltip-${Date.now()}-${Math.floor(Math.random() * 100)}`;
|
|
325
336
|
title.innerHTML = `<button class="tooltip" popovertarget="${tooltipId}" part="tooltip" style="anchor-name: --${tooltipId};">${title.textContent}</button><span id="${tooltipId}" style="position-anchor: --${tooltipId};" popover part="tooltip__content" class="tooltip__content">${title.getAttribute('title')}</span>`;
|
|
326
337
|
//title.removeAttribute('title'); // TODO add a supports query for anchor positioning
|
|
327
338
|
});
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
function createDataLayer() {
|
|
2
2
|
window.dataLayer = window.dataLayer || [];
|
|
3
3
|
window.dataLayer.push({
|
|
4
|
-
event:
|
|
4
|
+
event: 'Pageview',
|
|
5
5
|
pageTitle: document.title,
|
|
6
6
|
});
|
|
7
|
-
document.addEventListener(
|
|
8
|
-
const target = event.target.closest(
|
|
7
|
+
document.addEventListener('click', (event) => {
|
|
8
|
+
const target = event.target.closest('[open] summary');
|
|
9
9
|
if (target) {
|
|
10
10
|
window.dataLayer.push({
|
|
11
|
-
event:
|
|
12
|
-
detailsTitle: target.textContent ||
|
|
11
|
+
event: 'closeDetails',
|
|
12
|
+
detailsTitle: target.textContent || '',
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
|
-
const summary = event.target.closest(
|
|
17
|
-
const link = event.target.closest(
|
|
18
|
-
const button = event.target.closest(
|
|
16
|
+
const summary = event.target.closest('summary');
|
|
17
|
+
const link = event.target.closest('a');
|
|
18
|
+
const button = event.target.closest('button');
|
|
19
19
|
if (summary) {
|
|
20
20
|
window.dataLayer.push({
|
|
21
|
-
event:
|
|
22
|
-
detailsTitle: summary.textContent ||
|
|
21
|
+
event: 'openDetails',
|
|
22
|
+
detailsTitle: summary.textContent || '',
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
if (link) {
|
|
26
26
|
window.dataLayer.push({
|
|
27
|
-
event:
|
|
28
|
-
linkText: link.hasAttribute(
|
|
29
|
-
class: link.hasAttribute(
|
|
30
|
-
href: link.getAttribute(
|
|
27
|
+
event: 'linkClicked',
|
|
28
|
+
linkText: link.hasAttribute('title') ? link.getAttribute('title') || '' : link.textContent || '',
|
|
29
|
+
class: link.hasAttribute('class') ? link.getAttribute('class') || '' : '',
|
|
30
|
+
href: link.getAttribute('href') || '',
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
if (button) {
|
|
34
34
|
window.dataLayer.push({
|
|
35
|
-
event:
|
|
36
|
-
buttonText: button.textContent ||
|
|
37
|
-
class: button.hasAttribute(
|
|
35
|
+
event: 'buttonClicked',
|
|
36
|
+
buttonText: button.textContent || '',
|
|
37
|
+
class: button.hasAttribute('class') ? button.getAttribute('class') || '' : '',
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
const extendDialogs = (body) => {
|
|
3
3
|
Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog, index) => {
|
|
4
|
-
|
|
4
|
+
const parent = dialog.closest('.dialog__wrapper');
|
|
5
5
|
if (!parent) {
|
|
6
6
|
dialog.removeAttribute('open');
|
|
7
7
|
dialog.showModal();
|
|
@@ -16,14 +16,16 @@ const extendDialogs = (body) => {
|
|
|
16
16
|
// Modal
|
|
17
17
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-modal]')) {
|
|
18
18
|
const button = event.target.closest('[data-modal]');
|
|
19
|
-
const modalID = button.hasAttribute('data-modal')
|
|
19
|
+
const modalID = button.hasAttribute('data-modal')
|
|
20
|
+
? button.getAttribute('data-modal')
|
|
21
|
+
: button.getAttribute('data-filter');
|
|
20
22
|
const dialog = document.querySelector(`dialog#${modalID}`);
|
|
21
23
|
createDialog(dialog);
|
|
22
24
|
// Open the modal!
|
|
23
25
|
dialog.showModal();
|
|
24
26
|
dialog.focus();
|
|
25
27
|
if (!dialog.querySelector('iam-multi-step')) {
|
|
26
|
-
|
|
28
|
+
const firstWidth = dialog.offsetWidth;
|
|
27
29
|
dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
|
|
28
30
|
}
|
|
29
31
|
// When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
|
|
@@ -32,17 +34,16 @@ const extendDialogs = (body) => {
|
|
|
32
34
|
const originalInput = document.getElementById(id);
|
|
33
35
|
if (element.checked != originalInput.checked) {
|
|
34
36
|
element.checked = originalInput.checked;
|
|
35
|
-
|
|
37
|
+
const changeEvent = new Event('change');
|
|
36
38
|
element.dispatchEvent(changeEvent);
|
|
37
39
|
}
|
|
38
40
|
});
|
|
39
41
|
window.dataLayer = window.dataLayer || [];
|
|
40
42
|
window.dataLayer.push({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
event: 'openModal',
|
|
44
|
+
id: modalID,
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
|
-
;
|
|
46
47
|
// Close modal
|
|
47
48
|
if (event && event.target instanceof HTMLElement && event.target.closest('button.dialog__close')) {
|
|
48
49
|
const dialog = event.target.closest('dialog[open]');
|
|
@@ -52,16 +53,16 @@ const extendDialogs = (body) => {
|
|
|
52
53
|
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement, index) => {
|
|
53
54
|
btnElement.classList.remove('active');
|
|
54
55
|
});
|
|
55
|
-
|
|
56
|
+
const closeEvent = new CustomEvent('dialog-closed', {
|
|
56
57
|
bubbles: true,
|
|
57
58
|
cancelable: true,
|
|
58
|
-
detail: { modalId: dialog.id }
|
|
59
|
+
detail: { modalId: dialog.id },
|
|
59
60
|
});
|
|
60
61
|
event.target.dispatchEvent(closeEvent);
|
|
61
62
|
window.dataLayer = window.dataLayer || [];
|
|
62
63
|
window.dataLayer.push({
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
event: 'closeModal',
|
|
65
|
+
id: dialog.getAttribute('id'),
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
// Track default close buttons
|
|
@@ -73,27 +74,32 @@ const extendDialogs = (body) => {
|
|
|
73
74
|
});
|
|
74
75
|
window.dataLayer = window.dataLayer || [];
|
|
75
76
|
window.dataLayer.push({
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
event: 'closeModal',
|
|
78
|
+
id: dialog.getAttribute('id'),
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
81
|
// Close the modal when clicked on the backdrop
|
|
81
82
|
if (event && event.target instanceof HTMLElement && event.target.closest('dialog[open]')) {
|
|
82
83
|
let dialog = event.target.closest('dialog[open]');
|
|
83
84
|
// Small fix to make sure the dialog isn't a dialog inside of a dialog.
|
|
84
|
-
|
|
85
|
+
const style = window.getComputedStyle(dialog);
|
|
85
86
|
if (style.display === 'contents')
|
|
86
87
|
dialog = dialog.parentNode.closest('dialog[open]');
|
|
87
88
|
// Dont allow the backdrop to be clicked when transactional
|
|
88
|
-
if (!dialog.classList.contains('dialog--transactional') &&
|
|
89
|
+
if (!dialog.classList.contains('dialog--transactional') &&
|
|
90
|
+
!dialog.classList.contains('dialog--acknowledgement')) {
|
|
89
91
|
const dialogDimensions = dialog.getBoundingClientRect();
|
|
90
|
-
if (event.clientX < dialogDimensions.left ||
|
|
91
|
-
|
|
92
|
+
if (event.clientX < dialogDimensions.left ||
|
|
93
|
+
event.clientX > dialogDimensions.right ||
|
|
94
|
+
event.clientY < dialogDimensions.top ||
|
|
95
|
+
event.clientY > dialogDimensions.bottom) {
|
|
96
|
+
if (!event.target.closest('dialog *'))
|
|
97
|
+
// Weird bug when interacting with radio input fields within dialogs cuases it to close
|
|
92
98
|
dialog.close();
|
|
93
99
|
window.dataLayer = window.dataLayer || [];
|
|
94
100
|
window.dataLayer.push({
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
event: 'closeModal',
|
|
102
|
+
id: dialog.getAttribute('id'),
|
|
97
103
|
});
|
|
98
104
|
}
|
|
99
105
|
}
|
|
@@ -101,12 +107,13 @@ const extendDialogs = (body) => {
|
|
|
101
107
|
// Popover
|
|
102
108
|
if (event && event.target instanceof HTMLElement && event.target.closest('.dialog__wrapper > button')) {
|
|
103
109
|
event.stopPropagation();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
let dataEvent =
|
|
107
|
-
|
|
110
|
+
const btn = event.target.closest('.dialog__wrapper > button');
|
|
111
|
+
const parent = btn.parentNode;
|
|
112
|
+
let dataEvent = 'openPopover';
|
|
113
|
+
const popover = parent.querySelector(':scope > dialog');
|
|
108
114
|
// close open dialogs
|
|
109
|
-
if (document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
|
|
115
|
+
if (document.querySelector('*:not([data-keep-open]) > dialog[open]') &&
|
|
116
|
+
document.querySelector('*:not([data-keep-open]) > dialog[open]') != popover) {
|
|
110
117
|
// Check that the ope dialog isn't a parent of the dialog being opened
|
|
111
118
|
if (btn.closest('dialog[open]') != document.querySelector('*:not([data-keep-open]) > dialog[open]')) {
|
|
112
119
|
document.querySelector('*:not([data-keep-open]) > dialog[open]').close();
|
|
@@ -118,18 +125,18 @@ const extendDialogs = (body) => {
|
|
|
118
125
|
});
|
|
119
126
|
if (popover.hasAttribute('open')) {
|
|
120
127
|
popover.close();
|
|
121
|
-
dataEvent =
|
|
128
|
+
dataEvent = 'closePopover';
|
|
122
129
|
popover.removeAttribute('style');
|
|
123
130
|
btn.removeAttribute('aria-expanded');
|
|
124
131
|
}
|
|
125
132
|
else {
|
|
126
133
|
popover.show();
|
|
127
134
|
btn.setAttribute('aria-expanded', true);
|
|
128
|
-
|
|
135
|
+
const position = btn.getBoundingClientRect();
|
|
129
136
|
let topOffset = position.top;
|
|
130
137
|
let leftOffset = position.left;
|
|
131
138
|
if (btn.closest('iam-table')) {
|
|
132
|
-
|
|
139
|
+
const container = btn.closest('iam-table').parentNode.getBoundingClientRect();
|
|
133
140
|
topOffset -= container.top;
|
|
134
141
|
leftOffset -= container.left;
|
|
135
142
|
}
|
|
@@ -140,26 +147,28 @@ const extendDialogs = (body) => {
|
|
|
140
147
|
// When the dialog is fixed it could dip under the viewport
|
|
141
148
|
// Lets check the dimensions and transform it to appear above
|
|
142
149
|
let boundingRec = popover.getBoundingClientRect();
|
|
143
|
-
|
|
144
|
-
|
|
150
|
+
const popoverBottom = boundingRec.bottom - window.scrollY;
|
|
151
|
+
const windowPos = window.innerHeight - window.scrollY;
|
|
145
152
|
if (popoverBottom > windowPos) {
|
|
146
|
-
|
|
153
|
+
const currentStyle = popover.hasAttribute('style') ? popover.getAttribute('style') + ' ' : '';
|
|
147
154
|
popover.setAttribute('style', currentStyle + `transform: translate(0, calc(-100% - 4rem))`);
|
|
148
155
|
// Check that the dialog doesn't go over the top of the page
|
|
149
156
|
boundingRec = popover.getBoundingClientRect();
|
|
150
|
-
|
|
157
|
+
const popoverTop = boundingRec.top - window.scrollY;
|
|
151
158
|
if (popoverTop < 100)
|
|
152
159
|
popover.removeAttribute('style');
|
|
153
160
|
}
|
|
154
161
|
window.dataLayer = window.dataLayer || [];
|
|
155
162
|
window.dataLayer.push({
|
|
156
|
-
|
|
157
|
-
|
|
163
|
+
event: dataEvent,
|
|
164
|
+
id: btn.textContent,
|
|
158
165
|
});
|
|
159
166
|
}
|
|
160
|
-
;
|
|
161
167
|
// Close popovers when clicked away
|
|
162
|
-
if (event &&
|
|
168
|
+
if (event &&
|
|
169
|
+
event.target instanceof HTMLElement &&
|
|
170
|
+
!event.target.closest('dialog[open]') &&
|
|
171
|
+
!event.target.closest('.dialog__wrapper > button')) {
|
|
163
172
|
if (document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]'))
|
|
164
173
|
document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]').close();
|
|
165
174
|
Array.from(document.querySelectorAll('.dialog__wrapper:not([data-keep-open]) > button')).forEach((btnElement, index) => {
|
|
@@ -173,10 +182,10 @@ export const createDialog = (dialog) => {
|
|
|
173
182
|
// If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
|
|
174
183
|
if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
|
|
175
184
|
dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
|
|
176
|
-
|
|
177
|
-
|
|
185
|
+
const dialogContent = dialog.querySelector('.mh-lg');
|
|
186
|
+
const titleElement = dialog.querySelector('.mh-lg :is(.h1,.h2,.h3,.h4,.h5,.h6)');
|
|
178
187
|
if (titleElement) {
|
|
179
|
-
|
|
188
|
+
const optionalElement = titleElement.previousSibling;
|
|
180
189
|
dialogContent.before(titleElement);
|
|
181
190
|
if (optionalElement)
|
|
182
191
|
titleElement.before(optionalElement);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
const drawer = (element) => {
|
|
3
3
|
const observer = new IntersectionObserver(function ([e]) {
|
|
4
|
-
e.target.classList.toggle(
|
|
4
|
+
e.target.classList.toggle('in-view', e.intersectionRatio > 0);
|
|
5
5
|
document.getElementById('showDrawer').checked = false;
|
|
6
6
|
}, { threshold: [1] });
|
|
7
7
|
const el = document.getElementById('drawer-end');
|