@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,32 +1,25 @@
|
|
|
1
|
+
// #region Functions that setup and trigger other functions
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export const addClasses = (chartElement:any, chartOuter:any) => {
|
|
5
|
-
|
|
3
|
+
export const addClasses = (chartElement: any, chartOuter: any) => {
|
|
6
4
|
// add colour classes
|
|
7
5
|
for (let i = 1; i <= 10; i++) {
|
|
8
|
-
if(chartElement.hasAttribute(`data-colour-${i}`)){
|
|
9
|
-
|
|
10
|
-
let colour = chartElement.getAttribute(`data-colour-${i}`);
|
|
6
|
+
if (chartElement.hasAttribute(`data-colour-${i}`)) {
|
|
7
|
+
const colour = chartElement.getAttribute(`data-colour-${i}`);
|
|
11
8
|
chartElement.style.setProperty(`--chart-colour-${i}`, `var(--chart-colour-${colour})`);
|
|
12
9
|
chartElement.style.setProperty(`--chart-colour-${i}-hover`, `var(--chart-colour-${colour}-hover)`);
|
|
13
10
|
}
|
|
14
11
|
|
|
15
|
-
Array.from(chartOuter.querySelectorAll(`[data-colour-${i}]`)).forEach((element:HTMLElement) => {
|
|
16
|
-
|
|
17
|
-
let colour = element.getAttribute(`data-colour-${i}`);
|
|
12
|
+
Array.from(chartOuter.querySelectorAll(`[data-colour-${i}]`)).forEach((element: HTMLElement) => {
|
|
13
|
+
const colour = element.getAttribute(`data-colour-${i}`);
|
|
18
14
|
element.style.setProperty(`--chart-colour-${i}-set`, `var(--chart-colour-${colour})`);
|
|
19
15
|
element.style.setProperty(`--chart-colour-${i}-hover`, `var(--chart-colour-${colour}-hover)`);
|
|
20
16
|
});
|
|
21
|
-
|
|
22
17
|
}
|
|
23
18
|
|
|
24
19
|
return true;
|
|
25
20
|
};
|
|
26
21
|
|
|
27
|
-
|
|
28
|
-
export const setupChart = (chartElement:any,chartOuter:any,tableElement:any) => {
|
|
29
|
-
|
|
22
|
+
export const setupChart = (chartElement: any, chartOuter: any, tableElement: any) => {
|
|
30
23
|
// #region Reset the chart
|
|
31
24
|
// empty divs to re-populate
|
|
32
25
|
const chartKey = chartOuter.querySelector('.chart__key');
|
|
@@ -37,18 +30,22 @@ export const setupChart = (chartElement:any,chartOuter:any,tableElement:any) =>
|
|
|
37
30
|
chartYaxis.innerHTML = ``;
|
|
38
31
|
|
|
39
32
|
// Remove old input fields
|
|
40
|
-
Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(
|
|
33
|
+
Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map(
|
|
34
|
+
(element: any) => {
|
|
35
|
+
element.remove();
|
|
36
|
+
}
|
|
37
|
+
);
|
|
41
38
|
// #endregion
|
|
42
39
|
|
|
43
|
-
|
|
40
|
+
const { xaxis } = getChartData(chartElement);
|
|
44
41
|
|
|
45
|
-
setCellData(chartElement,tableElement);
|
|
42
|
+
setCellData(chartElement, tableElement);
|
|
46
43
|
|
|
47
|
-
createChartKey(chartOuter,tableElement,chartKey);
|
|
48
|
-
createChartGuidelines(chartElement,chartGuidelines);
|
|
49
|
-
createChartYaxis(chartElement,chartYaxis);
|
|
44
|
+
createChartKey(chartOuter, tableElement, chartKey);
|
|
45
|
+
createChartGuidelines(chartElement, chartGuidelines);
|
|
46
|
+
createChartYaxis(chartElement, chartYaxis);
|
|
50
47
|
|
|
51
|
-
if(xaxis){
|
|
48
|
+
if (xaxis) {
|
|
52
49
|
createXaxis(chartOuter);
|
|
53
50
|
}
|
|
54
51
|
|
|
@@ -57,82 +54,68 @@ export const setupChart = (chartElement:any,chartOuter:any,tableElement:any) =>
|
|
|
57
54
|
// #endregion
|
|
58
55
|
|
|
59
56
|
// #region Event handlers and observers
|
|
60
|
-
export const setEventListener = function(chartElement:any, chartOuter:any) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('td:not(:first-child')){
|
|
57
|
+
export const setEventListener = function (chartElement: any, chartOuter: any) {
|
|
58
|
+
const chart = chartOuter.querySelector('.chart');
|
|
59
|
+
chart.addEventListener('mousemove', (event: any) => {
|
|
60
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('td:not(:first-child')) {
|
|
61
|
+
const column = event.target.closest('td:not(:first-child');
|
|
66
62
|
|
|
67
|
-
|
|
63
|
+
const rect = column.getBoundingClientRect();
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
let y = event.clientY - rect.top;
|
|
73
|
-
chart.setAttribute('style', `--cursor-x: ${x}px; --cursor-y: ${y}px;`)
|
|
65
|
+
const x = event.clientX - rect.left;
|
|
66
|
+
const y = event.clientY - rect.top;
|
|
67
|
+
chart.setAttribute('style', `--cursor-x: ${x}px; --cursor-y: ${y}px;`);
|
|
74
68
|
}
|
|
75
69
|
});
|
|
76
70
|
|
|
77
71
|
// Use the part for the chart items to pass through states to the pages CSS
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Array.from(labels).forEach((label:HTMLElement) => {
|
|
81
|
-
|
|
82
|
-
if(chartOuter.querySelector(`input#${label.getAttribute('for')}`).checked)
|
|
83
|
-
label.setAttribute('part','key-checked');
|
|
84
|
-
else
|
|
85
|
-
label.setAttribute('part','key-unchecked');
|
|
86
|
-
});
|
|
72
|
+
const labels = chartOuter.querySelectorAll('label');
|
|
87
73
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
Array.from(labels).forEach((label: HTMLElement) => {
|
|
75
|
+
if (chartOuter.querySelector(`input#${label.getAttribute('for')}`).checked)
|
|
76
|
+
label.setAttribute('part', 'key-checked');
|
|
77
|
+
else label.setAttribute('part', 'key-unchecked');
|
|
78
|
+
});
|
|
91
79
|
|
|
92
|
-
|
|
80
|
+
const table = chartElement.querySelector('table');
|
|
81
|
+
const shadowTable = chartOuter.querySelector('table');
|
|
93
82
|
|
|
94
|
-
|
|
83
|
+
chartOuter.addEventListener('change', function (event: any) {
|
|
84
|
+
const eventTarget = event.target;
|
|
95
85
|
|
|
96
|
-
const customEvent = new CustomEvent(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
86
|
+
const customEvent = new CustomEvent('view-change', {
|
|
87
|
+
detail: {
|
|
88
|
+
'data-dataset': eventTarget.getAttribute('data-dataset'),
|
|
89
|
+
label: eventTarget.getAttribute('data-label'),
|
|
90
|
+
checked: eventTarget.checked,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
102
93
|
|
|
103
94
|
chartElement.dispatchEvent(customEvent);
|
|
104
95
|
|
|
105
|
-
Array.from(labels).forEach((label:HTMLElement) => {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
else
|
|
110
|
-
label.setAttribute('part','key-unchecked');
|
|
96
|
+
Array.from(labels).forEach((label: HTMLElement) => {
|
|
97
|
+
if (chartOuter.querySelector(`input#${label.getAttribute('for')}`)?.checked)
|
|
98
|
+
label.setAttribute('part', 'key-checked');
|
|
99
|
+
else label.setAttribute('part', 'key-unchecked');
|
|
111
100
|
});
|
|
112
101
|
|
|
113
|
-
|
|
114
102
|
shadowTable.innerHTML = table.innerHTML;
|
|
115
|
-
setCellData(chartElement,shadowTable);
|
|
116
|
-
|
|
103
|
+
setCellData(chartElement, shadowTable);
|
|
117
104
|
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export const setEventObservers = function(chartElement:any,chartOuter:any) {
|
|
121
|
-
|
|
122
|
-
let table = chartElement.querySelector('table');
|
|
123
|
-
let shadowTable = chartOuter.querySelector('table');
|
|
105
|
+
};
|
|
124
106
|
|
|
125
|
-
|
|
107
|
+
export const setEventObservers = function (chartElement: any, chartOuter: any) {
|
|
108
|
+
const table = chartElement.querySelector('table');
|
|
109
|
+
const shadowTable = chartOuter.querySelector('table');
|
|
126
110
|
|
|
111
|
+
const attributesUpdated = (mutationList: any, observer: any) => {
|
|
127
112
|
observer.disconnect();
|
|
128
113
|
observer2.disconnect();
|
|
129
114
|
|
|
130
115
|
for (const mutation of mutationList) {
|
|
131
|
-
|
|
132
|
-
if(mutation.attributeName == 'class' || (mutation.type === 'attributes') || mutation.type === 'attributes') {
|
|
133
|
-
|
|
116
|
+
if (mutation.attributeName == 'class' || mutation.type === 'attributes' || mutation.type === 'attributes') {
|
|
134
117
|
shadowTable.innerHTML = table.innerHTML;
|
|
135
|
-
setupChart(chartElement,chartOuter,shadowTable);
|
|
118
|
+
setupChart(chartElement, chartOuter, shadowTable);
|
|
136
119
|
}
|
|
137
120
|
}
|
|
138
121
|
|
|
@@ -140,17 +123,14 @@ export const setEventObservers = function(chartElement:any,chartOuter:any) {
|
|
|
140
123
|
observer2.observe(chartElement, { attributes: true });
|
|
141
124
|
};
|
|
142
125
|
|
|
143
|
-
const tableUpdated = (mutationList:any, observer:any) => {
|
|
144
|
-
|
|
126
|
+
const tableUpdated = (mutationList: any, observer: any) => {
|
|
145
127
|
observer.disconnect();
|
|
146
128
|
observer2.disconnect();
|
|
147
129
|
|
|
148
130
|
for (const mutation of mutationList) {
|
|
149
|
-
|
|
150
|
-
if(mutation.type == "characterData" || (mutation.type == "childList" && mutation.addedNodes.length)){
|
|
151
|
-
|
|
131
|
+
if (mutation.type == 'characterData' || (mutation.type == 'childList' && mutation.addedNodes.length)) {
|
|
152
132
|
shadowTable.innerHTML = table.innerHTML;
|
|
153
|
-
setupChart(chartElement,chartOuter,shadowTable);
|
|
133
|
+
setupChart(chartElement, chartOuter, shadowTable);
|
|
154
134
|
}
|
|
155
135
|
}
|
|
156
136
|
|
|
@@ -158,9 +138,8 @@ export const setEventObservers = function(chartElement:any,chartOuter:any) {
|
|
|
158
138
|
observer2.observe(chartElement, { attributes: true });
|
|
159
139
|
};
|
|
160
140
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
let observer2 = new MutationObserver(attributesUpdated);
|
|
141
|
+
const observer = new MutationObserver(tableUpdated);
|
|
142
|
+
const observer2 = new MutationObserver(attributesUpdated);
|
|
164
143
|
|
|
165
144
|
observer.observe(table, { characterData: true, subtree: true });
|
|
166
145
|
observer2.observe(chartElement, { attributes: true });
|
|
@@ -170,318 +149,294 @@ export const setEventObservers = function(chartElement:any,chartOuter:any) {
|
|
|
170
149
|
// #endregion
|
|
171
150
|
|
|
172
151
|
// #region GET functions
|
|
173
|
-
export const getChartData = function(chartElement:any){
|
|
152
|
+
export const getChartData = function (chartElement: any) {
|
|
153
|
+
const table = chartElement.shadowRoot.querySelector('.chart__wrapper table');
|
|
174
154
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
let max:any = chartElement.hasAttribute('data-max') ? chartElement.getAttribute('data-max') : getLargestValue(chartElement,table);
|
|
155
|
+
const min: any = chartElement.hasAttribute('data-min') ? chartElement.getAttribute('data-min') : 0;
|
|
156
|
+
const max: any = chartElement.hasAttribute('data-max')
|
|
157
|
+
? chartElement.getAttribute('data-max')
|
|
158
|
+
: getLargestValue(chartElement, table);
|
|
180
159
|
//let type:string = chartElement.hasAttribute('data-type') ? chartElement.getAttribute('data-type') : 'column';
|
|
181
|
-
|
|
182
|
-
|
|
160
|
+
const yaxis: any = chartElement.hasAttribute('data-yaxis') ? chartElement.getAttribute('data-yaxis').split(',') : [];
|
|
161
|
+
const guidelines: any = chartElement.hasAttribute('data-guidelines')
|
|
162
|
+
? chartElement.getAttribute('data-guidelines').split(',')
|
|
163
|
+
: [];
|
|
183
164
|
//let targets:any = chartElement.hasAttribute('data-targets') ? JSON.parse(chartElement.getAttribute('data-targets')) : null;
|
|
184
165
|
//let events:any = chartElement.hasAttribute('data-events') ? JSON.parse(chartElement.getAttribute('data-events')) : null;
|
|
185
|
-
|
|
166
|
+
const xaxis: any = chartElement.hasAttribute('data-xaxis')
|
|
167
|
+
? chartElement.getAttribute('data-xaxis').split(',')
|
|
168
|
+
: null;
|
|
186
169
|
//let increment = chartElement.hasAttribute('data-increment') ? chartElement.getAttribute('data-increment'): null;
|
|
187
|
-
|
|
170
|
+
|
|
188
171
|
//let start:any = chartElement.hasAttribute('data-start') ? chartElement.getAttribute('data-start') : 0;
|
|
189
172
|
//let end:any = chartElement.hasAttribute('data-end') ? chartElement.getAttribute('data-end') : getLargestValue(chartElement,table); // TODO - get largest value from the data-xaxis
|
|
190
173
|
|
|
191
|
-
|
|
192
174
|
//let slope:any = chartElement.hasAttribute('data-slope') ? chartElement.getAttribute('data-slope') : null;
|
|
193
175
|
//let yInt:any = chartElement.hasAttribute('data-yint') ? chartElement.getAttribute('data-yint') : null;
|
|
194
176
|
|
|
195
|
-
return {min,max,yaxis,xaxis,guidelines};
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function getLargestValue(chartElement:any,table:any){
|
|
177
|
+
return { min, max, yaxis, xaxis, guidelines };
|
|
178
|
+
};
|
|
199
179
|
|
|
180
|
+
function getLargestValue(chartElement: any, table: any) {
|
|
200
181
|
const selector = chartElement.classList.contains('chart--stacked') ? 'tbody tr' : 'tbody td:not(:first-child)';
|
|
201
182
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
let currentValue = element.getAttribute('data-numeric');
|
|
183
|
+
const values = Array.from(table.querySelectorAll(selector)).map((element: any) => {
|
|
184
|
+
const currentValue = element.getAttribute('data-numeric');
|
|
205
185
|
|
|
206
186
|
return currentValue;
|
|
207
187
|
});
|
|
208
188
|
|
|
209
|
-
|
|
189
|
+
const largestValue: number = Math.max(...values);
|
|
210
190
|
|
|
211
191
|
// TO DO round to the nearest 10, 100, 1000 and so on
|
|
212
192
|
return Math.ceil(largestValue);
|
|
213
193
|
}
|
|
214
194
|
|
|
215
|
-
const getValues = function(value:number,min:any,max:any,start?:number){
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
cleanValue = cleanValue.replace('
|
|
219
|
-
cleanValue = cleanValue.replace('
|
|
220
|
-
cleanValue = cleanValue.replace(',','');
|
|
195
|
+
const getValues = function (value: number, min: any, max: any, start?: number) {
|
|
196
|
+
let cleanValue: string | number = String(value);
|
|
197
|
+
cleanValue = cleanValue.replace('£', '');
|
|
198
|
+
cleanValue = cleanValue.replace('%', '');
|
|
199
|
+
cleanValue = cleanValue.replace(',', '');
|
|
221
200
|
cleanValue = Number.parseFloat(cleanValue);
|
|
222
201
|
|
|
223
|
-
let percent = ((cleanValue - min)/(max - min)) * 100;
|
|
202
|
+
let percent = ((cleanValue - min) / (max - min)) * 100;
|
|
224
203
|
let axis = percent;
|
|
225
204
|
let bottom = 0;
|
|
226
205
|
|
|
227
|
-
if (start && start != 0){
|
|
228
|
-
bottom = ((start - min)/(max - min)) * 100;
|
|
206
|
+
if (start && start != 0) {
|
|
207
|
+
bottom = ((start - min) / (max - min)) * 100;
|
|
229
208
|
}
|
|
230
209
|
|
|
231
210
|
// If the value is negative the position below the 0 line
|
|
232
|
-
if(min < 0){
|
|
233
|
-
bottom = Math.abs((
|
|
211
|
+
if (min < 0) {
|
|
212
|
+
bottom = Math.abs((min / (max - min)) * 100);
|
|
234
213
|
|
|
235
|
-
if(cleanValue < 0){
|
|
214
|
+
if (cleanValue < 0) {
|
|
236
215
|
percent = bottom - percent;
|
|
237
216
|
bottom = bottom - percent;
|
|
238
217
|
axis = bottom;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
218
|
+
} else {
|
|
241
219
|
percent = percent - bottom;
|
|
242
220
|
axis = percent + bottom;
|
|
243
221
|
}
|
|
244
222
|
}
|
|
245
223
|
|
|
246
|
-
return { percent, axis, bottom};
|
|
247
|
-
}
|
|
224
|
+
return { percent, axis, bottom };
|
|
225
|
+
};
|
|
248
226
|
|
|
249
227
|
// #endregion
|
|
250
228
|
|
|
251
229
|
// #region SET functions - set data attributes and classes
|
|
252
|
-
export const setCellData = function(chartElement:any,table:any){
|
|
253
|
-
|
|
254
|
-
Array.from(table.querySelectorAll('tbody tr')).forEach((tr:any) => {
|
|
255
|
-
|
|
230
|
+
export const setCellData = function (chartElement: any, table: any) {
|
|
231
|
+
Array.from(table.querySelectorAll('tbody tr')).forEach((tr: any) => {
|
|
256
232
|
let rowValue = 0;
|
|
257
233
|
// Set the data numeric value if not set
|
|
258
|
-
Array.from(tr.querySelectorAll('td:not(:first-child)')).forEach((td:any) => {
|
|
234
|
+
Array.from(tr.querySelectorAll('td:not(:first-child)')).forEach((td: any) => {
|
|
235
|
+
const value = parseFloat(td.textContent.replace('£', '').replace('%', '').replace(',', ''));
|
|
259
236
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
td.setAttribute('data-numeric',value);
|
|
263
|
-
td.setAttribute('data-value',td.textContent);
|
|
237
|
+
td.setAttribute('data-numeric', value);
|
|
238
|
+
td.setAttribute('data-value', td.textContent);
|
|
264
239
|
|
|
265
|
-
|
|
240
|
+
const display = getComputedStyle(td).display;
|
|
266
241
|
|
|
267
|
-
if(display != 'none')
|
|
268
|
-
rowValue += value;
|
|
242
|
+
if (display != 'none') rowValue += value;
|
|
269
243
|
});
|
|
270
244
|
|
|
271
|
-
tr.setAttribute('data-numeric',rowValue);
|
|
245
|
+
tr.setAttribute('data-numeric', rowValue);
|
|
272
246
|
});
|
|
273
247
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
Array.from(table.querySelectorAll('tbody tr')).forEach((tr:any, index) => {
|
|
248
|
+
const { min, max } = getChartData(chartElement);
|
|
277
249
|
|
|
278
|
-
|
|
250
|
+
Array.from(table.querySelectorAll('tbody tr')).forEach((tr: any, index) => {
|
|
251
|
+
const group = tr.querySelector('td:first-child, th:first-child')
|
|
252
|
+
? tr.querySelector('td:first-child, th:first-child').textContent
|
|
253
|
+
: '';
|
|
279
254
|
|
|
280
|
-
tr.setAttribute('part','group');
|
|
255
|
+
tr.setAttribute('part', 'group');
|
|
281
256
|
|
|
282
|
-
|
|
283
|
-
let percent = ((tr.getAttribute('data-numeric') - min)/(max - min)) * 100;
|
|
257
|
+
const percent = ((tr.getAttribute('data-numeric') - min) / (max - min)) * 100;
|
|
284
258
|
|
|
285
|
-
tr.style.setProperty('--percent'
|
|
259
|
+
tr.style.setProperty('--percent', `${percent}%`);
|
|
286
260
|
|
|
287
261
|
// Set the data label value if not set
|
|
288
|
-
Array.from(tr.querySelectorAll('td:not([data-label])')).forEach((td:any, index) => {
|
|
289
|
-
|
|
290
|
-
if(index == 0)
|
|
262
|
+
Array.from(tr.querySelectorAll('td:not([data-label])')).forEach((td: any, index) => {
|
|
263
|
+
if (index == 0)
|
|
291
264
|
td.setAttribute('part', 'xaxis-label'); // PART
|
|
292
|
-
else
|
|
293
|
-
td.setAttribute('part', 'value');
|
|
265
|
+
else td.setAttribute('part', 'value');
|
|
294
266
|
|
|
295
|
-
if(tr.querySelectorAll('td').length > 2)
|
|
296
|
-
td.setAttribute('data-label',table.querySelectorAll('thead th')[index].textContent);
|
|
267
|
+
if (tr.querySelectorAll('td').length > 2)
|
|
268
|
+
td.setAttribute('data-label', table.querySelectorAll('thead th')[index].textContent);
|
|
297
269
|
});
|
|
298
270
|
|
|
271
|
+
const rowMin = tr.hasAttribute('data-min') ? tr.getAttribute('data-min') : min;
|
|
272
|
+
const rowMax = tr.hasAttribute('data-max') ? tr.getAttribute('data-max') : max;
|
|
299
273
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
if(rowMin < 0){
|
|
304
|
-
let minBottom = Math.abs(((rowMin)/(rowMax - rowMin))*100);
|
|
305
|
-
chartElement.setAttribute('style',`--min-bottom: ${minBottom}%;`);
|
|
274
|
+
if (rowMin < 0) {
|
|
275
|
+
const minBottom = Math.abs((rowMin / (rowMax - rowMin)) * 100);
|
|
276
|
+
chartElement.setAttribute('style', `--min-bottom: ${minBottom}%;`);
|
|
306
277
|
}
|
|
307
278
|
|
|
308
279
|
// Add a useful index css var for the use of animatons.
|
|
309
|
-
tr.style.setProperty('--row-index', index+1);
|
|
310
|
-
|
|
280
|
+
tr.style.setProperty('--row-index', index + 1);
|
|
311
281
|
|
|
312
282
|
// Add css vars to cells
|
|
313
|
-
Array.from(
|
|
283
|
+
Array.from(
|
|
284
|
+
tr.querySelectorAll('td[data-numeric]:not([data-label="Min"]):not([data-label="Max"]):not(:first-child)')
|
|
285
|
+
).forEach((td: any) => {
|
|
286
|
+
const display = getComputedStyle(td).display;
|
|
287
|
+
if (display == 'none') return;
|
|
314
288
|
|
|
315
|
-
let display = getComputedStyle(td).display;
|
|
316
|
-
if(display == 'none')
|
|
317
|
-
return;
|
|
318
|
-
|
|
319
289
|
const content = td.innerHTML;
|
|
320
290
|
const value = Number.parseFloat(td.getAttribute('data-numeric'));
|
|
321
291
|
const start = Number.parseFloat(td.getAttribute('data-start'));
|
|
322
292
|
|
|
323
|
-
if(!td.querySelector('span[data-group]'))
|
|
324
|
-
td.innerHTML = `<span data-group="${group}" ${td.hasAttribute('data-label') ? `data-label="${td.getAttribute('data-label')}"
|
|
293
|
+
if (!td.querySelector('span[data-group]'))
|
|
294
|
+
td.innerHTML = `<span data-group="${group}" ${td.hasAttribute('data-label') ? `data-label="${td.getAttribute('data-label')}"` : ''} part="popover">${content}</span>`;
|
|
325
295
|
|
|
326
|
-
if(!td.hasAttribute('style')){
|
|
327
|
-
|
|
328
|
-
let { percent, bottom, axis } = getValues(value,rowMin,rowMax,start);
|
|
296
|
+
if (!td.hasAttribute('style')) {
|
|
297
|
+
const { percent, bottom, axis } = getValues(value, rowMin, rowMax, start);
|
|
329
298
|
|
|
330
|
-
td.setAttribute('data-percent',percent)
|
|
331
|
-
td.setAttribute(
|
|
299
|
+
td.setAttribute('data-percent', percent);
|
|
300
|
+
td.setAttribute('style', `--bottom:${bottom}%;--percent:${percent}%;--axis:${axis}%;`);
|
|
332
301
|
}
|
|
333
302
|
});
|
|
334
303
|
});
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
export const setLongestLabel = function(chartOuter:any){
|
|
304
|
+
};
|
|
338
305
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
306
|
+
export const setLongestLabel = function (chartOuter: any) {
|
|
307
|
+
const chartWrapper = chartOuter.querySelector('.chart__wrapper');
|
|
308
|
+
const chartSpacer = chartOuter.querySelector('.chart__spacer span');
|
|
309
|
+
const table = chartOuter.querySelector('.chart table');
|
|
342
310
|
// set the longest label attr so that the bar chart knows what margin to set on the left
|
|
343
311
|
let longestLabel = '';
|
|
344
312
|
Array.from(table.querySelectorAll('tbody tr td:first-child')).forEach((td: any) => {
|
|
345
|
-
if(typeof td.textContent !=
|
|
346
|
-
|
|
313
|
+
if (typeof td.textContent != 'undefined' && td.textContent.length > longestLabel.length) {
|
|
347
314
|
longestLabel = td.textContent;
|
|
348
315
|
}
|
|
349
316
|
});
|
|
350
|
-
chartWrapper.setAttribute('data-longest-label',longestLabel);
|
|
317
|
+
chartWrapper.setAttribute('data-longest-label', longestLabel);
|
|
351
318
|
chartSpacer.innerHTML = longestLabel;
|
|
352
319
|
};
|
|
353
320
|
|
|
354
|
-
export const setLongestValue = function(chartOuter:any){
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
let table = chartOuter.querySelector('.chart table');
|
|
321
|
+
export const setLongestValue = function (chartOuter: any) {
|
|
322
|
+
const chartWrapper = chartOuter.querySelector('.chart__wrapper');
|
|
323
|
+
const table = chartOuter.querySelector('.chart table');
|
|
358
324
|
|
|
359
325
|
let longestValue = '';
|
|
360
326
|
Array.from(table.querySelectorAll('tbody tr td:not(:first-child) span')).forEach((td: any) => {
|
|
361
|
-
if(typeof td.textContent !=
|
|
327
|
+
if (typeof td.textContent != 'undefined' && td.textContent.length > longestValue.length)
|
|
362
328
|
longestValue = td.textContent;
|
|
363
329
|
});
|
|
364
|
-
chartWrapper.setAttribute('data-longest-value',longestValue);
|
|
330
|
+
chartWrapper.setAttribute('data-longest-value', longestValue);
|
|
365
331
|
};
|
|
366
332
|
// #endregion
|
|
367
333
|
|
|
368
334
|
// #region CREATE function
|
|
369
335
|
|
|
370
|
-
export const createChartKey = function(chartOuter:any,tableElement:any,chartKey:any){
|
|
371
|
-
|
|
372
|
-
const chartID = `chart-${Date.now()+(Math.floor(Math.random() * 100) + 1)}`;
|
|
336
|
+
export const createChartKey = function (chartOuter: any, tableElement: any, chartKey: any) {
|
|
337
|
+
const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
|
|
373
338
|
//const chartOuter = chartElement.querySelector('.chart__outer');
|
|
374
339
|
|
|
375
|
-
let previousInput:any;
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
let headings = Array.from(tableElement.querySelectorAll('thead th'));
|
|
379
|
-
|
|
380
|
-
headings.forEach((arrayElement:any , index) => {
|
|
340
|
+
let previousInput: any;
|
|
381
341
|
|
|
382
|
-
|
|
342
|
+
const headings = Array.from(tableElement.querySelectorAll('thead th'));
|
|
383
343
|
|
|
384
|
-
|
|
344
|
+
headings.forEach((arrayElement: any, index) => {
|
|
345
|
+
if (index != 0) {
|
|
346
|
+
previousInput = createChartKeyItem(chartID, index, arrayElement.textContent, chartKey, chartOuter, previousInput);
|
|
385
347
|
}
|
|
386
348
|
|
|
387
|
-
if(index == 50){
|
|
349
|
+
if (index == 50) {
|
|
388
350
|
headings.length = index + 1;
|
|
389
351
|
}
|
|
390
|
-
|
|
391
352
|
});
|
|
392
353
|
|
|
393
354
|
return true;
|
|
394
|
-
}
|
|
355
|
+
};
|
|
395
356
|
|
|
396
|
-
function createChartKeyItem(
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
357
|
+
function createChartKeyItem(
|
|
358
|
+
chartID: string,
|
|
359
|
+
index: number,
|
|
360
|
+
text: Array<string>,
|
|
361
|
+
chartKey: any,
|
|
362
|
+
chartOuter: any,
|
|
363
|
+
previousInput: any
|
|
364
|
+
) {
|
|
365
|
+
const input = document.createElement('input');
|
|
366
|
+
input.setAttribute('name', `${chartID}-dataset-${index}`);
|
|
367
|
+
input.setAttribute('id', `${chartID}-dataset-${index}`);
|
|
368
|
+
input.setAttribute('data-dataset', `${index}`);
|
|
369
|
+
input.setAttribute('data-label', `${text}`);
|
|
402
370
|
input.checked = true;
|
|
403
|
-
input.setAttribute('type'
|
|
404
|
-
|
|
371
|
+
input.setAttribute('type', `checkbox`);
|
|
405
372
|
|
|
406
|
-
if(index == 1)
|
|
407
|
-
|
|
408
|
-
else
|
|
409
|
-
chartOuter.insertBefore(input,previousInput.nextSibling);
|
|
373
|
+
if (index == 1) chartOuter.prepend(input);
|
|
374
|
+
else chartOuter.insertBefore(input, previousInput.nextSibling);
|
|
410
375
|
|
|
411
376
|
previousInput = input;
|
|
412
377
|
|
|
413
|
-
|
|
414
|
-
label.setAttribute('class'
|
|
415
|
-
label.setAttribute('for'
|
|
416
|
-
label.setAttribute('data-label'
|
|
417
|
-
label.setAttribute('part'
|
|
378
|
+
const label = document.createElement('label');
|
|
379
|
+
label.setAttribute('class', `key btn btn-action`);
|
|
380
|
+
label.setAttribute('for', `${chartID}-dataset-${index}`);
|
|
381
|
+
label.setAttribute('data-label', `${text}`);
|
|
382
|
+
label.setAttribute('part', `key`);
|
|
418
383
|
label.innerHTML = `${text}`;
|
|
419
384
|
chartKey.append(label);
|
|
420
385
|
|
|
421
386
|
return previousInput;
|
|
422
387
|
}
|
|
423
388
|
|
|
424
|
-
export const createChartGuidelines = function(chartElement:any,chartGuidelines:any){
|
|
425
|
-
|
|
426
|
-
let {min, max, yaxis, guidelines} = getChartData(chartElement);
|
|
389
|
+
export const createChartGuidelines = function (chartElement: any, chartGuidelines: any) {
|
|
390
|
+
let { min, max, yaxis, guidelines } = getChartData(chartElement);
|
|
427
391
|
|
|
428
|
-
if(!guidelines.length)
|
|
429
|
-
guidelines = yaxis;
|
|
392
|
+
if (!guidelines.length) guidelines = yaxis;
|
|
430
393
|
|
|
431
394
|
chartGuidelines.innerHTML = '';
|
|
432
|
-
for (
|
|
395
|
+
for (let i = 0; i < guidelines.length; i++) {
|
|
396
|
+
const value = parseFloat(guidelines[i].replace('£', '').replace('%', '').replace(',', ''));
|
|
433
397
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
let { axis } = getValues(value,min,max);
|
|
398
|
+
const { axis } = getValues(value, min, max);
|
|
439
399
|
chartGuidelines.innerHTML += `<div class="guideline" style="--percent:${axis}%;">${yaxis.indexOf(guidelines[i]) != -1 ? `<span>${guidelines[i]}</span>` : ''}</div>`;
|
|
440
400
|
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
export const createChartYaxis = function(chartElement:any,chartYaxis:any){
|
|
401
|
+
};
|
|
444
402
|
|
|
445
|
-
|
|
403
|
+
export const createChartYaxis = function (chartElement: any, chartYaxis: any) {
|
|
404
|
+
const { min, max, yaxis } = getChartData(chartElement);
|
|
446
405
|
|
|
447
406
|
chartYaxis.innerHTML = '';
|
|
448
|
-
for (
|
|
449
|
-
|
|
450
|
-
let value = parseFloat(yaxis[i].replace('£','').replace('%',''));
|
|
407
|
+
for (let i = 0; i < yaxis.length; i++) {
|
|
408
|
+
const value = parseFloat(yaxis[i].replace('£', '').replace('%', ''));
|
|
451
409
|
|
|
452
|
-
|
|
410
|
+
const { axis } = getValues(value, min, max);
|
|
453
411
|
chartYaxis.innerHTML += `<div class="axis__point" style="--percent:${axis}%;"><span>${yaxis[i]}</span></div>`;
|
|
454
412
|
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
export const createXaxis = function(chartOuter:any){
|
|
413
|
+
};
|
|
458
414
|
|
|
415
|
+
export const createXaxis = function (chartOuter: any) {
|
|
459
416
|
const chart = chartOuter.querySelector('.chart');
|
|
460
417
|
let chartXaxis = chartOuter.querySelector('.chart__xaxis');
|
|
461
418
|
|
|
462
|
-
if(!chartXaxis){
|
|
419
|
+
if (!chartXaxis) {
|
|
463
420
|
chartXaxis = document.createElement('div');
|
|
464
|
-
chartXaxis.setAttribute('class','chart__xaxis');
|
|
421
|
+
chartXaxis.setAttribute('class', 'chart__xaxis');
|
|
465
422
|
}
|
|
466
423
|
|
|
467
424
|
chart.prepend(chartXaxis);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
export const createTooltips = function(chartOuter:any) {
|
|
425
|
+
};
|
|
471
426
|
|
|
472
|
-
|
|
427
|
+
export const createTooltips = function (chartOuter: any) {
|
|
428
|
+
const titles = chartOuter.querySelectorAll(
|
|
429
|
+
'thead th[title], tbody th[title]:first-child, tbody td[title]:first-child'
|
|
430
|
+
);
|
|
473
431
|
|
|
474
|
-
Array.from(titles).forEach((title:HTMLElement) => {
|
|
475
|
-
|
|
476
|
-
let tooltipId = `tooltip-${Date.now()}-${Math.floor(Math.random() * 100)}`;
|
|
432
|
+
Array.from(titles).forEach((title: HTMLElement) => {
|
|
433
|
+
const tooltipId = `tooltip-${Date.now()}-${Math.floor(Math.random() * 100)}`;
|
|
477
434
|
|
|
478
435
|
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>`;
|
|
479
436
|
|
|
480
437
|
//title.removeAttribute('title'); // TODO add a supports query for anchor positioning
|
|
481
438
|
});
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
}
|
|
439
|
+
};
|
|
485
440
|
// #endregion
|
|
486
441
|
|
|
487
|
-
export default setupChart;
|
|
442
|
+
export default setupChart;
|