@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
|
@@ -8,20 +8,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
// @ts-nocheck
|
|
11
|
-
import { zeroPad, isNumeric, ucfirst, resolvePath } from
|
|
11
|
+
import { zeroPad, isNumeric, ucfirst, resolvePath } from './helpers.js';
|
|
12
12
|
// Basic functionality needed
|
|
13
13
|
export const addDataAttributes = (table) => {
|
|
14
14
|
const colHeadings = Array.from(table.querySelectorAll('thead th'));
|
|
15
15
|
const colRows = Array.from(table.querySelectorAll('tbody tr'));
|
|
16
16
|
colRows.forEach((row, index) => {
|
|
17
17
|
const cells = Array.from(row.querySelectorAll('th, td'));
|
|
18
|
-
const statuses = [
|
|
18
|
+
const statuses = [
|
|
19
|
+
'0',
|
|
20
|
+
'low',
|
|
21
|
+
'medium',
|
|
22
|
+
'high',
|
|
23
|
+
'unknown',
|
|
24
|
+
'n/a',
|
|
25
|
+
'pending',
|
|
26
|
+
'verified',
|
|
27
|
+
'due',
|
|
28
|
+
'overdue',
|
|
29
|
+
'incomplete',
|
|
30
|
+
'complete',
|
|
31
|
+
'completed',
|
|
32
|
+
'approval required',
|
|
33
|
+
'upcoming',
|
|
34
|
+
'requires approval',
|
|
35
|
+
'to do',
|
|
36
|
+
'on track',
|
|
37
|
+
'not started',
|
|
38
|
+
'warning',
|
|
39
|
+
'error',
|
|
40
|
+
];
|
|
19
41
|
cells.forEach((cell, cellIndex) => {
|
|
20
42
|
const heading = colHeadings[cellIndex];
|
|
21
|
-
if (typeof heading !=
|
|
22
|
-
|
|
43
|
+
if (typeof heading != 'undefined') {
|
|
44
|
+
const tempDiv = document.createElement('div');
|
|
23
45
|
tempDiv.innerHTML = heading.innerHTML;
|
|
24
|
-
|
|
46
|
+
const headingText = tempDiv.textContent || tempDiv.innerText || '';
|
|
25
47
|
cell.setAttribute('data-label', headingText);
|
|
26
48
|
if (heading.hasAttribute('data-td-class'))
|
|
27
49
|
cell.setAttribute('class', heading.getAttribute('data-td-class'));
|
|
@@ -39,8 +61,8 @@ export const addDataAttributes = (table) => {
|
|
|
39
61
|
export const getLargestLastColWidth = (table) => {
|
|
40
62
|
let largestWidth = 0;
|
|
41
63
|
Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {
|
|
42
|
-
|
|
43
|
-
|
|
64
|
+
const htmlStyles = window.getComputedStyle(document.querySelector('html'));
|
|
65
|
+
const lastColChild = row.querySelector(':scope > *:last-child > *:first-child');
|
|
44
66
|
if (lastColChild) {
|
|
45
67
|
lastColChild.classList.add('text-nowrap');
|
|
46
68
|
let responsiveWidth = lastColChild.offsetWidth / parseFloat(htmlStyles.fontSize);
|
|
@@ -69,27 +91,26 @@ export const createMobileButton = (table, wrapper) => {
|
|
|
69
91
|
export const addTableEventListeners = (table) => {
|
|
70
92
|
table.addEventListener('click', (event) => {
|
|
71
93
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-expand-button]')) {
|
|
72
|
-
|
|
73
|
-
|
|
94
|
+
const button = event.target.closest('[data-expand-button]');
|
|
95
|
+
const tableRow = button.closest('tr');
|
|
74
96
|
button.toggleAttribute('aria-expanded');
|
|
75
|
-
if (tableRow.getAttribute('data-view') ==
|
|
97
|
+
if (tableRow.getAttribute('data-view') == 'full')
|
|
76
98
|
tableRow.setAttribute('data-view', 'default');
|
|
77
99
|
else
|
|
78
100
|
tableRow.setAttribute('data-view', 'full');
|
|
79
101
|
button.blur();
|
|
80
102
|
}
|
|
81
|
-
;
|
|
82
103
|
});
|
|
83
104
|
};
|
|
84
105
|
// Filters
|
|
85
106
|
export const createSearchDataList = (table, form) => {
|
|
86
|
-
|
|
107
|
+
const searchInput = form.querySelector('input[data-search]');
|
|
87
108
|
if (!searchInput)
|
|
88
109
|
return false;
|
|
89
110
|
const searchID = searchInput.getAttribute('id');
|
|
90
111
|
const searchableColumns = searchInput.getAttribute('data-search').split(',');
|
|
91
|
-
|
|
92
|
-
|
|
112
|
+
const inputWrapper = searchInput.parentNode;
|
|
113
|
+
const searchableTerms = {};
|
|
93
114
|
searchableColumns.forEach((columnHeading, index) => {
|
|
94
115
|
Array.from(table.querySelectorAll('td[data-label="' + columnHeading.trim() + '"]')).forEach((td, index) => {
|
|
95
116
|
if (td.querySelector('.td__content'))
|
|
@@ -102,23 +123,25 @@ export const createSearchDataList = (table, form) => {
|
|
|
102
123
|
searchInput.setAttribute('autocomplete', 'off');
|
|
103
124
|
if (!inputWrapper.querySelector('datalist'))
|
|
104
125
|
inputWrapper.innerHTML += `<datalist id="${searchID}_list"></datalist>`;
|
|
105
|
-
inputWrapper.querySelector('datalist').innerHTML = `${Object.keys(searchableTerms)
|
|
126
|
+
inputWrapper.querySelector('datalist').innerHTML = `${Object.keys(searchableTerms)
|
|
127
|
+
.map((term) => `<option value="${term}"></option>`)
|
|
128
|
+
.join('')}`;
|
|
106
129
|
};
|
|
107
130
|
export const addFilterEventListeners = (table, form, pagination, wrapper, savedTableBody) => {
|
|
108
|
-
|
|
131
|
+
let timer;
|
|
109
132
|
// Check what conditions are set on the table to see what the form actions are
|
|
110
|
-
|
|
133
|
+
const formSubmit = function (event, paginate = false) {
|
|
111
134
|
if (wrapper.hasAttribute('data-no-submit')) {
|
|
112
135
|
return false;
|
|
113
136
|
}
|
|
114
137
|
if (form.classList.contains('processing'))
|
|
115
138
|
return false;
|
|
116
139
|
Array.from(form.querySelectorAll('iam-applied-filters')).forEach((element, index) => {
|
|
117
|
-
|
|
140
|
+
const event = new Event('tags-set');
|
|
118
141
|
element.dispatchEvent(event);
|
|
119
142
|
});
|
|
120
143
|
// Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input
|
|
121
|
-
if (event.type ==
|
|
144
|
+
if (event.type == 'submit') {
|
|
122
145
|
form.classList.add('processing');
|
|
123
146
|
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element, index) => {
|
|
124
147
|
const id = element.getAttribute('data-duplicate');
|
|
@@ -126,7 +149,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
126
149
|
const card = document.querySelector(`[for="${id}"] iam-card`);
|
|
127
150
|
if (input.checked != element.checked) {
|
|
128
151
|
if (card) {
|
|
129
|
-
|
|
152
|
+
const clickEvent = new Event('click');
|
|
130
153
|
card.dispatchEvent(clickEvent);
|
|
131
154
|
}
|
|
132
155
|
else {
|
|
@@ -139,7 +162,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
139
162
|
if (form.hasAttribute('data-ajax')) {
|
|
140
163
|
// Default back to page 1
|
|
141
164
|
if (!paginate) {
|
|
142
|
-
|
|
165
|
+
const paginationInput = form.querySelector('[data-pagination]');
|
|
143
166
|
paginationInput.value = 1;
|
|
144
167
|
wrapper.setAttribute('data-page', 1);
|
|
145
168
|
}
|
|
@@ -154,8 +177,8 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
154
177
|
}
|
|
155
178
|
// Pass post data back to the page
|
|
156
179
|
if (form.hasAttribute('data-ajax-post')) {
|
|
157
|
-
|
|
158
|
-
|
|
180
|
+
const formData = new FormData(form);
|
|
181
|
+
const queryString = new URLSearchParams(formData).toString();
|
|
159
182
|
const http = new XMLHttpRequest();
|
|
160
183
|
http.open('GET', `${window.location.href}?ajax=true&${queryString}`);
|
|
161
184
|
http.send();
|
|
@@ -180,7 +203,6 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
180
203
|
formSubmit(event);
|
|
181
204
|
}, 500);
|
|
182
205
|
}
|
|
183
|
-
;
|
|
184
206
|
});
|
|
185
207
|
form.addEventListener('change', (event) => {
|
|
186
208
|
clearTimeout(timer);
|
|
@@ -193,14 +215,21 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
193
215
|
if (event && event.target instanceof HTMLElement && event.target.closest('input[data-search]')) {
|
|
194
216
|
formSubmit(event);
|
|
195
217
|
}
|
|
196
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')) {
|
|
218
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')) {
|
|
219
|
+
// Allow for input fields to filter the current results without a new ajax call
|
|
197
220
|
filterTable(table, form, wrapper);
|
|
198
221
|
populateDataQueries(table, form);
|
|
199
222
|
}
|
|
200
|
-
else if (event &&
|
|
223
|
+
else if (event &&
|
|
224
|
+
event.target instanceof HTMLElement &&
|
|
225
|
+
event.target.closest('[data-filter]') &&
|
|
226
|
+
event.target.closest('form .dialog__wrapper > dialog')) {
|
|
201
227
|
formSubmit(event);
|
|
202
228
|
}
|
|
203
|
-
else if (event &&
|
|
229
|
+
else if (event &&
|
|
230
|
+
event.target instanceof HTMLElement &&
|
|
231
|
+
event.target.closest('[data-filter]') &&
|
|
232
|
+
!event.target.closest('form dialog')) {
|
|
204
233
|
formSubmit(event);
|
|
205
234
|
}
|
|
206
235
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {
|
|
@@ -210,7 +239,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
210
239
|
formSubmit(event);
|
|
211
240
|
}
|
|
212
241
|
if (event && event.target instanceof HTMLElement && event.target.hasAttribute('id')) {
|
|
213
|
-
|
|
242
|
+
const id = event.target.getAttribute('id');
|
|
214
243
|
if (document.querySelector(`[data-duplicate="${id}"]`)) {
|
|
215
244
|
document.querySelector(`[data-duplicate="${id}"]`).checked = event.target.checked;
|
|
216
245
|
}
|
|
@@ -219,8 +248,8 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
219
248
|
form.addEventListener('click', (event) => {
|
|
220
249
|
clearTimeout(timer);
|
|
221
250
|
if (event && event.target instanceof HTMLElement && event.target.closest('dialog button:not([type="button"])')) {
|
|
222
|
-
|
|
223
|
-
|
|
251
|
+
const button = event.target.closest('dialog button:not([type="button"])');
|
|
252
|
+
const modal = button.closest('dialog');
|
|
224
253
|
modal.close();
|
|
225
254
|
}
|
|
226
255
|
// Prevent the form from submitting
|
|
@@ -232,37 +261,37 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
232
261
|
form.classList.add('processing');
|
|
233
262
|
// Make sure any applied filters have been removed
|
|
234
263
|
Array.from(form.querySelectorAll('.applied-filters')).forEach((filters, index) => {
|
|
235
|
-
filters.innerHTML =
|
|
264
|
+
filters.innerHTML = '';
|
|
236
265
|
});
|
|
237
266
|
// Make sure cards are unlicked
|
|
238
|
-
|
|
267
|
+
const frm_elements = form.elements;
|
|
239
268
|
for (let i = 0; i < frm_elements.length; i++) {
|
|
240
|
-
|
|
269
|
+
const field_type = frm_elements[i].type.toLowerCase() ? frm_elements[i].type.toLowerCase() : 'text';
|
|
241
270
|
switch (field_type) {
|
|
242
|
-
case
|
|
243
|
-
case
|
|
244
|
-
case
|
|
245
|
-
frm_elements[i].value =
|
|
271
|
+
case 'text':
|
|
272
|
+
case 'password':
|
|
273
|
+
case 'textarea':
|
|
274
|
+
frm_elements[i].value = '';
|
|
246
275
|
break;
|
|
247
|
-
case
|
|
248
|
-
case
|
|
276
|
+
case 'radio':
|
|
277
|
+
case 'checkbox':
|
|
249
278
|
if (frm_elements[i].checked) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
279
|
+
const input = frm_elements[i];
|
|
280
|
+
const id = input.getAttribute('id');
|
|
281
|
+
const label = document.querySelector(`[for="${id}"`);
|
|
253
282
|
if (label.querySelector('iam-card')) {
|
|
254
|
-
|
|
255
|
-
|
|
283
|
+
const card = label.querySelector('iam-card');
|
|
284
|
+
const clickEvent = new Event('click');
|
|
256
285
|
card.dispatchEvent(clickEvent);
|
|
257
286
|
}
|
|
258
287
|
input.checked = false;
|
|
259
288
|
}
|
|
260
289
|
break;
|
|
261
|
-
case
|
|
262
|
-
case
|
|
290
|
+
case 'select-one':
|
|
291
|
+
case 'select-multi':
|
|
263
292
|
frm_elements[i].selectedIndex = -1;
|
|
264
293
|
break;
|
|
265
|
-
case
|
|
294
|
+
case 'hidden':
|
|
266
295
|
default:
|
|
267
296
|
break;
|
|
268
297
|
}
|
|
@@ -288,13 +317,13 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
288
317
|
formSubmit(event, true);
|
|
289
318
|
});
|
|
290
319
|
// Mmimic fields
|
|
291
|
-
|
|
292
|
-
|
|
320
|
+
const forms = [];
|
|
321
|
+
const fields = [];
|
|
293
322
|
// Collect the forms that we need to add an event listener for.
|
|
294
323
|
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input, index) => {
|
|
295
|
-
|
|
324
|
+
const mimicField = input.getAttribute('data-mimic');
|
|
296
325
|
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput, index) => {
|
|
297
|
-
|
|
326
|
+
const parentForm = mimicInput.closest('form');
|
|
298
327
|
if (!forms.includes(parentForm)) {
|
|
299
328
|
forms.push(parentForm);
|
|
300
329
|
}
|
|
@@ -306,8 +335,8 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
306
335
|
// For each form add change listener
|
|
307
336
|
forms.forEach((parentForm, index) => {
|
|
308
337
|
const updateMimicInput = function () {
|
|
309
|
-
|
|
310
|
-
|
|
338
|
+
const mimickedAlready = [];
|
|
339
|
+
const formData = new FormData(parentForm);
|
|
311
340
|
let i = 1;
|
|
312
341
|
for (const [key, value] of formData) {
|
|
313
342
|
if (document.querySelector(`[data-mimic="${key}"]`) && !mimickedAlready.includes(key)) {
|
|
@@ -315,18 +344,18 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
315
344
|
document.querySelector(`[data-mimic="${key}"]`).value = value;
|
|
316
345
|
}
|
|
317
346
|
else if (document.querySelector(`[data-mimic="${key}"]`))
|
|
318
|
-
document.querySelector(`[data-mimic="${key}"]`).value +=
|
|
347
|
+
document.querySelector(`[data-mimic="${key}"]`).value += ',' + value;
|
|
319
348
|
i++;
|
|
320
349
|
}
|
|
321
350
|
for (const value of mimickedAlready) {
|
|
322
|
-
const event = new Event(
|
|
351
|
+
const event = new Event('force');
|
|
323
352
|
form.dispatchEvent(event);
|
|
324
353
|
}
|
|
325
354
|
// Check for empties
|
|
326
355
|
for (const field of fields) {
|
|
327
356
|
if (!formData.has(field) && parentForm.querySelector(`[name="${field}"]`)) {
|
|
328
|
-
document.querySelector(`[data-mimic="${field}"]`).value =
|
|
329
|
-
const event = new Event(
|
|
357
|
+
document.querySelector(`[data-mimic="${field}"]`).value = '';
|
|
358
|
+
const event = new Event('force');
|
|
330
359
|
form.dispatchEvent(event);
|
|
331
360
|
}
|
|
332
361
|
}
|
|
@@ -343,15 +372,15 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
343
372
|
if (form.getAttribute('data-ajax')) {
|
|
344
373
|
return false;
|
|
345
374
|
}
|
|
346
|
-
|
|
375
|
+
const tbody = table.querySelector('tbody');
|
|
347
376
|
let selectedOption = form.querySelector(`input[type="radio"][data-sort]:checked`);
|
|
348
377
|
if (form.querySelector('select[data-sort]')) {
|
|
349
|
-
|
|
378
|
+
const select = form.querySelector('select[data-sort]');
|
|
350
379
|
selectedOption = form.querySelector(`select[data-sort] option:nth-child(${select.selectedIndex + 1})`);
|
|
351
380
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
381
|
+
const sortBy = selectedOption.getAttribute('data-sort');
|
|
382
|
+
const order = selectedOption.getAttribute('data-order');
|
|
383
|
+
const format = selectedOption.getAttribute('data-format');
|
|
355
384
|
if (!sortBy) {
|
|
356
385
|
tbody.innerHTML = savedTableBody.innerHTML;
|
|
357
386
|
addDataAttributes(table);
|
|
@@ -364,7 +393,9 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
364
393
|
// Create an array from the table rows, the index created is then used to sort the array
|
|
365
394
|
let tableArr = [];
|
|
366
395
|
Array.from(tbody.querySelectorAll('tr')).forEach((tableRow, index) => {
|
|
367
|
-
let rowIndex = tableRow
|
|
396
|
+
let rowIndex = tableRow
|
|
397
|
+
.querySelector('td[data-label="' + sortBy + '"], th[data-label="' + sortBy + '"]')
|
|
398
|
+
.textContent.trim();
|
|
368
399
|
if (tableRow.querySelector('[data-label="' + sortBy + '"] .td__content')) {
|
|
369
400
|
rowIndex = tableRow.querySelector('[data-label="' + sortBy + '"] .td__content').textContent.trim();
|
|
370
401
|
}
|
|
@@ -376,19 +407,19 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
376
407
|
rowIndex = zeroPad(rowIndex, 10);
|
|
377
408
|
}
|
|
378
409
|
// If the sort format is date then lets transform the index to a sortable date (this is never displayed)
|
|
379
|
-
if (format && format ==
|
|
410
|
+
if (format && format == 'date') {
|
|
380
411
|
rowIndex = new Date(rowIndex);
|
|
381
412
|
}
|
|
382
413
|
const dataRow = {
|
|
383
414
|
index: rowIndex,
|
|
384
|
-
row: tableRow
|
|
415
|
+
row: tableRow,
|
|
385
416
|
};
|
|
386
417
|
tableArr.push(dataRow);
|
|
387
418
|
});
|
|
388
419
|
// Sort array alphabetically
|
|
389
|
-
tableArr.sort((a, b) => (a.index > b.index
|
|
420
|
+
tableArr.sort((a, b) => (a.index > b.index ? 1 : -1));
|
|
390
421
|
// Reverse if descending
|
|
391
|
-
if (order ==
|
|
422
|
+
if (order == 'descending' || order == 'desc') {
|
|
392
423
|
tableArr = tableArr.reverse();
|
|
393
424
|
}
|
|
394
425
|
// Create a string to return and populate the tbody
|
|
@@ -400,11 +431,11 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
400
431
|
};
|
|
401
432
|
export const filterTable = (table, form, wrapper) => {
|
|
402
433
|
table.classList.remove('table--filtered');
|
|
403
|
-
|
|
404
|
-
|
|
434
|
+
const filters = filterFilters(form);
|
|
435
|
+
const searches = [];
|
|
405
436
|
let matched = 0;
|
|
406
|
-
|
|
407
|
-
|
|
437
|
+
const page = form.querySelector('[data-pagination]') ? parseInt(form.querySelector('[data-pagination]').value) : 1;
|
|
438
|
+
const showRows = form.querySelector('[data-show]') ? parseInt(form.querySelector('[data-show]').value) : 15;
|
|
408
439
|
// Reset
|
|
409
440
|
Array.from(table.querySelectorAll('tbody tr')).forEach((row, index) => {
|
|
410
441
|
row.classList.remove('filtered');
|
|
@@ -414,10 +445,10 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
414
445
|
});
|
|
415
446
|
// Add search columns too
|
|
416
447
|
if (form.querySelector('input[data-search]')) {
|
|
417
|
-
|
|
418
|
-
|
|
448
|
+
const searchInput = form.querySelector('input[data-search]');
|
|
449
|
+
const searchColumns = form.querySelector('input[data-search]').getAttribute('data-search').split(',');
|
|
419
450
|
searchColumns.forEach((column, index) => {
|
|
420
|
-
searches.push({
|
|
451
|
+
searches.push({ column: `${column.trim()}`, value: `${searchInput.value}` });
|
|
421
452
|
});
|
|
422
453
|
}
|
|
423
454
|
//Display the filter count
|
|
@@ -427,7 +458,7 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
427
458
|
});
|
|
428
459
|
let filterCount = 0;
|
|
429
460
|
Object.values(filters).forEach((filter, index) => {
|
|
430
|
-
if (typeof filter ==
|
|
461
|
+
if (typeof filter == 'object' && Object.values(filter).length) {
|
|
431
462
|
filterCount += Object.values(filter).length;
|
|
432
463
|
}
|
|
433
464
|
else {
|
|
@@ -446,81 +477,83 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
446
477
|
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
|
|
447
478
|
let isMatched = false;
|
|
448
479
|
filterValue.forEach((filter, index) => {
|
|
449
|
-
|
|
480
|
+
const filterTd = row.querySelector(`[data-label="${key}"]`);
|
|
450
481
|
if (filter.includes('-date-from')) {
|
|
451
|
-
|
|
452
|
-
|
|
482
|
+
const fromDate = new Date(filter.replace('-date-from', ''));
|
|
483
|
+
const checkDate = new Date(filterTd.textContent.toLowerCase());
|
|
453
484
|
fromDate.setHours(0, 0, 0, 0);
|
|
454
485
|
checkDate.setHours(0, 0, 0, 0);
|
|
455
486
|
if (checkDate < fromDate) {
|
|
456
487
|
row.classList.add('less-than-from-date');
|
|
457
488
|
isMatched = false;
|
|
458
489
|
}
|
|
459
|
-
else if (!row.classList.contains('less-than-from-date') &&
|
|
490
|
+
else if (!row.classList.contains('less-than-from-date') &&
|
|
491
|
+
!row.classList.contains('greater-than-to-date')) {
|
|
460
492
|
isMatched = true;
|
|
461
493
|
}
|
|
462
494
|
}
|
|
463
495
|
else if (filter.includes('-date-to')) {
|
|
464
|
-
|
|
465
|
-
|
|
496
|
+
const toDate = new Date(filter.replace('-date-to', ''));
|
|
497
|
+
const checkDate = new Date(filterTd.textContent.toLowerCase());
|
|
466
498
|
toDate.setHours(0, 0, 0, 0);
|
|
467
499
|
checkDate.setHours(0, 0, 0, 0);
|
|
468
500
|
if (checkDate > toDate) {
|
|
469
501
|
row.classList.add('greater-than-to-date');
|
|
470
502
|
isMatched = false;
|
|
471
503
|
}
|
|
472
|
-
else if (!row.classList.contains('less-than-from-date') &&
|
|
504
|
+
else if (!row.classList.contains('less-than-from-date') &&
|
|
505
|
+
!row.classList.contains('greater-than-to-date')) {
|
|
473
506
|
isMatched = true;
|
|
474
507
|
}
|
|
475
508
|
}
|
|
476
509
|
// Dynamic values
|
|
477
|
-
if (filter && filter ==
|
|
510
|
+
if (filter && filter == '$today') {
|
|
478
511
|
filter = formatCell('date', new Date());
|
|
479
512
|
}
|
|
480
|
-
else if (filter && filter ==
|
|
481
|
-
|
|
513
|
+
else if (filter && filter == '$yesterday') {
|
|
514
|
+
const yesterday = new Date();
|
|
482
515
|
yesterday.setDate(yesterday.getDate() - 1);
|
|
483
516
|
filter = formatCell('date', yesterday);
|
|
484
517
|
}
|
|
485
|
-
else if (filter && (filter ==
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
518
|
+
else if (filter && (filter == '$thisWeek' || filter == '$lastWeek')) {
|
|
519
|
+
const today = new Date();
|
|
520
|
+
const mondayThisWeek = new Date(today.setDate(today.getDate() - (today.getDay() - 1)));
|
|
521
|
+
const sundayThisWeek = new Date(today.setDate(today.getDate() - today.getDay() + 7));
|
|
522
|
+
const checkDate = new Date(filterTd.textContent.toLowerCase());
|
|
490
523
|
today.setHours(0, 0, 0, 0);
|
|
491
524
|
mondayThisWeek.setHours(0, 0, 0, 0);
|
|
492
525
|
sundayThisWeek.setHours(0, 0, 0, 0);
|
|
493
526
|
checkDate.setHours(0, 0, 0, 0);
|
|
494
|
-
if (filter ==
|
|
495
|
-
isMatched =
|
|
527
|
+
if (filter == '$thisWeek') {
|
|
528
|
+
isMatched = checkDate >= mondayThisWeek && checkDate <= sundayThisWeek;
|
|
496
529
|
}
|
|
497
530
|
else {
|
|
498
|
-
|
|
499
|
-
|
|
531
|
+
const mondayLastWeek = new Date(mondayThisWeek.setDate(mondayThisWeek.getDate() - 7));
|
|
532
|
+
const sundayLastWeek = new Date(sundayThisWeek.setDate(sundayThisWeek.getDate() - 7));
|
|
500
533
|
mondayLastWeek.setHours(0, 0, 0, 0);
|
|
501
534
|
sundayLastWeek.setHours(0, 0, 0, 0);
|
|
502
|
-
isMatched =
|
|
535
|
+
isMatched = checkDate >= mondayLastWeek && checkDate <= sundayLastWeek;
|
|
503
536
|
}
|
|
504
537
|
}
|
|
505
|
-
else if (filter && filter ==
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
538
|
+
else if (filter && filter == '$thisMonth') {
|
|
539
|
+
const today = new Date(), year = today.getFullYear(), month = today.getMonth();
|
|
540
|
+
const firstDayMonth = new Date(year, month, 1);
|
|
541
|
+
const lastDayMonth = new Date(year, month + 1, 0);
|
|
542
|
+
const checkDate = new Date(filterTd.textContent.toLowerCase());
|
|
510
543
|
firstDayMonth.setHours(0, 0, 0, 0);
|
|
511
544
|
lastDayMonth.setHours(0, 0, 0, 0);
|
|
512
545
|
checkDate.setHours(0, 0, 0, 0);
|
|
513
|
-
isMatched =
|
|
546
|
+
isMatched = checkDate >= firstDayMonth && checkDate <= lastDayMonth;
|
|
514
547
|
}
|
|
515
|
-
else if (filter && filter ==
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
548
|
+
else if (filter && filter == '$lastMonth') {
|
|
549
|
+
const today = new Date(), year = today.getFullYear(), month = today.getMonth();
|
|
550
|
+
const firstDayLastMonth = new Date(year, month - 1, 1);
|
|
551
|
+
const lastDayLastMonth = new Date(year, month, 0);
|
|
552
|
+
const checkDate = new Date(filterTd.textContent.toLowerCase());
|
|
520
553
|
firstDayLastMonth.setHours(0, 0, 0, 0);
|
|
521
554
|
lastDayLastMonth.setHours(0, 0, 0, 0);
|
|
522
555
|
checkDate.setHours(0, 0, 0, 0);
|
|
523
|
-
isMatched =
|
|
556
|
+
isMatched = checkDate >= firstDayLastMonth && checkDate <= lastDayLastMonth;
|
|
524
557
|
}
|
|
525
558
|
if (filterTd && filterTd.textContent.toLowerCase().includes(filter.replace('-', ' ').toLowerCase())) {
|
|
526
559
|
isMatched = true;
|
|
@@ -536,8 +569,10 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
536
569
|
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
|
|
537
570
|
let isSearched = searches.length > 0 && searches[0].value.length >= 3 ? false : true;
|
|
538
571
|
searches.forEach((search, index) => {
|
|
539
|
-
|
|
540
|
-
if (searchTd &&
|
|
572
|
+
const searchTd = row.querySelector(`[data-label="${search.column}"]`);
|
|
573
|
+
if (searchTd &&
|
|
574
|
+
search.value.length >= 3 &&
|
|
575
|
+
searchTd.textContent.toLowerCase().includes(search.value.toLowerCase())) {
|
|
541
576
|
isSearched = true;
|
|
542
577
|
}
|
|
543
578
|
});
|
|
@@ -549,8 +584,8 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
549
584
|
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row, index) => {
|
|
550
585
|
matched++;
|
|
551
586
|
row.classList.add('filtered--matched');
|
|
552
|
-
// pagination bit
|
|
553
|
-
|
|
587
|
+
// pagination bit
|
|
588
|
+
const matchesPage = Math.ceil(matched / showRows);
|
|
554
589
|
if (matchesPage == parseInt(page)) {
|
|
555
590
|
row.classList.add('filtered--show');
|
|
556
591
|
}
|
|
@@ -564,18 +599,20 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
564
599
|
export const populateDataQueries = (table, form, wrapper) => {
|
|
565
600
|
const dataQueries = Array.from(form.querySelectorAll('[data-query]'));
|
|
566
601
|
dataQueries.forEach((queryElement, index) => {
|
|
567
|
-
|
|
602
|
+
const query = queryElement.getAttribute('data-query');
|
|
568
603
|
let numberOfMatchedRows = 0;
|
|
569
604
|
if (query == 'total') {
|
|
570
605
|
if (wrapper.hasAttribute('data-total'))
|
|
571
606
|
numberOfMatchedRows = wrapper.getAttribute('data-total');
|
|
572
607
|
else
|
|
573
|
-
numberOfMatchedRows = table.classList.contains('table--filtered')
|
|
608
|
+
numberOfMatchedRows = table.classList.contains('table--filtered')
|
|
609
|
+
? table.querySelectorAll('tbody tr').length
|
|
610
|
+
: table.querySelectorAll('tbody tr').length;
|
|
574
611
|
}
|
|
575
612
|
else if (!query.includes(' == ') && query.includes(' & ')) {
|
|
576
|
-
|
|
613
|
+
const queries = query.split(' & ');
|
|
577
614
|
let selector = '';
|
|
578
|
-
queries.forEach(element => {
|
|
615
|
+
queries.forEach((element) => {
|
|
579
616
|
selector += `:not([data-filtered-by="${element}"])`;
|
|
580
617
|
});
|
|
581
618
|
numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr${selector}`)).length;
|
|
@@ -584,19 +621,20 @@ export const populateDataQueries = (table, form, wrapper) => {
|
|
|
584
621
|
numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not([data-filtered-by="${query}"])`)).length;
|
|
585
622
|
}
|
|
586
623
|
else if (query.includes(' && ')) {
|
|
587
|
-
|
|
624
|
+
const queries = query.split(' && ');
|
|
588
625
|
numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not(.filtered)`)).filter(function (row) {
|
|
589
626
|
let matched = true;
|
|
590
627
|
for (const [index, value] of Object.entries(queries)) {
|
|
591
|
-
|
|
592
|
-
if (!row.querySelector(`td[data-label="${queryParts[0]}"]`) ||
|
|
628
|
+
const queryParts = value.split(' == ');
|
|
629
|
+
if (!row.querySelector(`td[data-label="${queryParts[0]}"]`) ||
|
|
630
|
+
row.querySelector(`td[data-label="${queryParts[0]}"]`).textContent != `${queryParts[1]}`)
|
|
593
631
|
matched = false;
|
|
594
632
|
}
|
|
595
633
|
return matched;
|
|
596
634
|
}).length;
|
|
597
635
|
}
|
|
598
636
|
else {
|
|
599
|
-
|
|
637
|
+
const queryParts = query.split(' == ');
|
|
600
638
|
numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr.filtered--matched td[data-label="${queryParts[0]}"], tbody tr[data-filtered-by="${queryParts[0]}"] td[data-label="${queryParts[0]}"]`)).filter(function (element) {
|
|
601
639
|
return element.textContent === queryParts[1];
|
|
602
640
|
}).length;
|
|
@@ -615,17 +653,17 @@ export const addPaginationEventListeners = function (table, form, pagination, wr
|
|
|
615
653
|
return false;
|
|
616
654
|
}
|
|
617
655
|
pagination.addEventListener('update-page', (event) => {
|
|
618
|
-
|
|
619
|
-
|
|
656
|
+
const paginationInput = form.querySelector('[data-pagination]');
|
|
657
|
+
const newPage = event.detail.page;
|
|
620
658
|
// Set the filter value
|
|
621
659
|
paginationInput.value = newPage;
|
|
622
|
-
form.dispatchEvent(new Event(
|
|
660
|
+
form.dispatchEvent(new Event('paginate'));
|
|
623
661
|
// Reset the data attribute
|
|
624
662
|
wrapper.setAttribute('data-page', newPage);
|
|
625
663
|
if (table.hasAttribute('data-show-history')) {
|
|
626
664
|
const url = new URL(location);
|
|
627
|
-
url.searchParams.set(
|
|
628
|
-
history.pushState({
|
|
665
|
+
url.searchParams.set('page', newPage);
|
|
666
|
+
history.pushState({ type: 'pagination', form: form.getAttribute('id'), page: newPage }, '', url);
|
|
629
667
|
}
|
|
630
668
|
// scroll back to the top of the table
|
|
631
669
|
if (!wrapper.hasAttribute('data-no-scroll')) {
|
|
@@ -635,11 +673,11 @@ export const addPaginationEventListeners = function (table, form, pagination, wr
|
|
|
635
673
|
}
|
|
636
674
|
});
|
|
637
675
|
pagination.addEventListener('update-show', (event) => {
|
|
638
|
-
|
|
639
|
-
|
|
676
|
+
const showInput = form.querySelector('[data-show]');
|
|
677
|
+
const showRows = event.detail.show;
|
|
640
678
|
showInput.value = showRows;
|
|
641
679
|
wrapper.setAttribute('data-show', showRows);
|
|
642
|
-
form.dispatchEvent(new Event(
|
|
680
|
+
form.dispatchEvent(new Event('submit'));
|
|
643
681
|
});
|
|
644
682
|
};
|
|
645
683
|
// Export CSV Data
|
|
@@ -652,34 +690,34 @@ export const addExportEventListeners = (button, table) => {
|
|
|
652
690
|
});
|
|
653
691
|
};
|
|
654
692
|
export const exportAsCSV = function (table) {
|
|
655
|
-
|
|
693
|
+
let csvData = [];
|
|
656
694
|
// Get each row data
|
|
657
|
-
|
|
658
|
-
for (
|
|
695
|
+
const rows = table.getElementsByTagName('tr');
|
|
696
|
+
for (let i = 0; i < rows.length; i++) {
|
|
659
697
|
// Get each column data
|
|
660
|
-
|
|
698
|
+
const cols = rows[i].querySelectorAll('td,th');
|
|
661
699
|
// Stores each csv row data
|
|
662
|
-
|
|
663
|
-
for (
|
|
700
|
+
const csvRow = [];
|
|
701
|
+
for (let j = 0; j < cols.length; j++) {
|
|
664
702
|
// Get the text data of each cell of a row and push it to csvrow
|
|
665
703
|
csvRow.push(`"${cols[j].textContent}"`);
|
|
666
704
|
}
|
|
667
705
|
// Combine each column value with comma
|
|
668
|
-
csvData.push(csvRow.join(
|
|
706
|
+
csvData.push(csvRow.join(','));
|
|
669
707
|
}
|
|
670
708
|
// Combine each row data with new line character
|
|
671
709
|
csvData = csvData.join('\n');
|
|
672
710
|
// Create CSV file object and feed our csvData into it
|
|
673
|
-
|
|
674
|
-
type:
|
|
711
|
+
const CSVFile = new Blob([csvData], {
|
|
712
|
+
type: 'text/csv',
|
|
675
713
|
});
|
|
676
714
|
// Create to temporary link to initiate download process
|
|
677
|
-
|
|
678
|
-
tempLink.download =
|
|
679
|
-
|
|
715
|
+
const tempLink = document.createElement('a');
|
|
716
|
+
tempLink.download = 'export.csv';
|
|
717
|
+
const url = window.URL.createObjectURL(CSVFile);
|
|
680
718
|
tempLink.href = url;
|
|
681
719
|
// This link should not be displayed
|
|
682
|
-
tempLink.style.display =
|
|
720
|
+
tempLink.style.display = 'none';
|
|
683
721
|
document.body.appendChild(tempLink);
|
|
684
722
|
// Automatically click the link to trigger download
|
|
685
723
|
tempLink.click();
|
|
@@ -693,20 +731,20 @@ export const makeTableFunctional = function (table, form, pagination, wrapper) {
|
|
|
693
731
|
// Work out the largest width of the CTA's in the last column
|
|
694
732
|
if (wrapper && wrapper.classList.contains('table--cta')) {
|
|
695
733
|
const largestWidth = getLargestLastColWidth(table);
|
|
696
|
-
wrapper.style.setProperty(
|
|
734
|
+
wrapper.style.setProperty('--cta-width', `${largestWidth}rem`);
|
|
697
735
|
function outputsize() {
|
|
698
736
|
Array.from(table.querySelectorAll('tr')).forEach((row, index) => {
|
|
699
|
-
|
|
700
|
-
row.style.setProperty(
|
|
737
|
+
const rowHeight = row.offsetHeight;
|
|
738
|
+
row.style.setProperty('--row-height', `${rowHeight}px`);
|
|
701
739
|
});
|
|
702
740
|
}
|
|
703
741
|
new ResizeObserver(outputsize).observe(table);
|
|
704
742
|
}
|
|
705
743
|
};
|
|
706
744
|
const filterFilters = function (form) {
|
|
707
|
-
|
|
745
|
+
const filters = new Object();
|
|
708
746
|
// Filter
|
|
709
|
-
|
|
747
|
+
const filterInputs = Array.from(form.querySelectorAll('[data-filter]'));
|
|
710
748
|
filterInputs.forEach((filterInput, index) => {
|
|
711
749
|
// Ignore uncked radio inputs
|
|
712
750
|
if (filterInput.type == 'radio' && !filterInput.checked) {
|
|
@@ -716,14 +754,14 @@ const filterFilters = function (form) {
|
|
|
716
754
|
return;
|
|
717
755
|
}
|
|
718
756
|
if (filterInput && filterInput.value) {
|
|
719
|
-
|
|
757
|
+
const dataFilter = filterInput.getAttribute('data-filter');
|
|
720
758
|
let filterValue = filterInput.value;
|
|
721
759
|
if (filterInput.hasAttribute('data-date-from'))
|
|
722
760
|
filterValue += '-date-from';
|
|
723
761
|
if (filterInput.hasAttribute('data-date-to'))
|
|
724
762
|
filterValue += '-date-to';
|
|
725
763
|
if (!filters[dataFilter])
|
|
726
|
-
filters[dataFilter] =
|
|
764
|
+
filters[dataFilter] = [];
|
|
727
765
|
filters[dataFilter].push(filterValue);
|
|
728
766
|
}
|
|
729
767
|
});
|
|
@@ -731,21 +769,21 @@ const filterFilters = function (form) {
|
|
|
731
769
|
};
|
|
732
770
|
export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
733
771
|
return __awaiter(this, void 0, void 0, function* () {
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
772
|
+
const formData = new FormData(form);
|
|
773
|
+
const queryString = new URLSearchParams(formData).toString();
|
|
774
|
+
const columns = table.querySelectorAll('thead tr th:not(.expand-button-heading)');
|
|
775
|
+
const tbody = table.querySelector('tbody');
|
|
776
|
+
const ajaxURL = form.getAttribute('data-ajax');
|
|
739
777
|
wrapper.classList.add('table--loading');
|
|
740
778
|
// Display the filter count
|
|
741
|
-
|
|
779
|
+
const filters = filterFilters(form);
|
|
742
780
|
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element, index) => {
|
|
743
781
|
element.innerHTML = '';
|
|
744
782
|
element.parentNode.classList.remove('hover');
|
|
745
783
|
});
|
|
746
784
|
let filterCount = 0;
|
|
747
785
|
Object.values(filters).forEach((filter, index) => {
|
|
748
|
-
if (typeof filter ==
|
|
786
|
+
if (typeof filter == 'object' && Object.values(filter).length)
|
|
749
787
|
filterCount += Object.values(filter).length;
|
|
750
788
|
else
|
|
751
789
|
filterCount++;
|
|
@@ -776,47 +814,59 @@ export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
|
776
814
|
headers: new Headers({
|
|
777
815
|
'Content-Type': 'application/json',
|
|
778
816
|
Accept: 'application/json',
|
|
779
|
-
'X-Requested-With': 'XMLHttpRequest'
|
|
780
|
-
})
|
|
817
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
818
|
+
}),
|
|
781
819
|
})
|
|
782
|
-
.then((response) => response.json())
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
820
|
+
.then((response) => response.json())
|
|
821
|
+
.then((response) => {
|
|
822
|
+
const schema = form.hasAttribute('data-schema') ? form.getAttribute('data-schema') : 'data';
|
|
823
|
+
const totalNumberSchema = form.hasAttribute('data-schema-total')
|
|
824
|
+
? form.getAttribute('data-schema-total')
|
|
825
|
+
: 'meta.total';
|
|
826
|
+
const currentPageSchema = form.hasAttribute('data-schema-page')
|
|
827
|
+
? form.getAttribute('data-schema-page')
|
|
828
|
+
: 'meta.current_page';
|
|
829
|
+
const totalNumber = resolvePath(response, totalNumberSchema, 15);
|
|
830
|
+
const currentPage = resolvePath(response, currentPageSchema, 1);
|
|
831
|
+
const data = resolvePath(response, schema);
|
|
832
|
+
const emptyMsg = wrapper.hasAttribute('data-empty-msg')
|
|
833
|
+
? wrapper.getAttribute('data-empty-msg')
|
|
834
|
+
: 'No results found';
|
|
790
835
|
if (data) {
|
|
791
836
|
tbody.innerHTML = '';
|
|
792
837
|
data.forEach((row, index) => {
|
|
793
|
-
|
|
838
|
+
const table_row = document.createElement('tr');
|
|
794
839
|
columns.forEach((col, index) => {
|
|
795
840
|
let cellOutput = '';
|
|
796
|
-
|
|
841
|
+
const table_cell = document.createElement('td');
|
|
797
842
|
// Add some data to help with the mobile layout design
|
|
798
843
|
table_cell.setAttribute('data-label', col.innerText);
|
|
799
844
|
if (col.getAttribute('data-output')) {
|
|
800
845
|
var cellTemplate = col.getAttribute('data-output');
|
|
801
846
|
// Use a regex to replace {var} with actual values from the json data
|
|
802
|
-
cellOutput = cellTemplate.replace(new RegExp(/{(.*?)}/,
|
|
847
|
+
cellOutput = cellTemplate.replace(new RegExp(/{(.*?)}/, 'gm'), function (matched) {
|
|
848
|
+
return resolvePath(row, matched.replace('{', '').replace('}', ''));
|
|
849
|
+
});
|
|
803
850
|
}
|
|
804
851
|
// If an output array is defined then the content is going to made of of multiple values from an array
|
|
805
852
|
if (col.hasAttribute('data-output-array')) {
|
|
806
853
|
var cellTemplate = col.getAttribute('data-output');
|
|
807
|
-
|
|
808
|
-
cellOutput =
|
|
854
|
+
const arrValue = resolvePath(row, cellTemplate.replace('{', '').replace('}', ''));
|
|
855
|
+
cellOutput = '';
|
|
809
856
|
arrValue.forEach((rowValue, i) => {
|
|
810
|
-
|
|
811
|
-
let cellOutputValue =
|
|
857
|
+
const cellTemplateValue = col.getAttribute('data-output-array');
|
|
858
|
+
let cellOutputValue = '';
|
|
812
859
|
// If we need to transform some of the data
|
|
813
|
-
if (col.hasAttribute('data-output-array-property') &&
|
|
860
|
+
if (col.hasAttribute('data-output-array-property') &&
|
|
861
|
+
col.hasAttribute('data-output-array-transform')) {
|
|
814
862
|
const propertyValue = resolvePath(rowValue, col.getAttribute('data-output-array-property'));
|
|
815
863
|
const transforms = JSON.parse(col.getAttribute('data-output-array-transform'));
|
|
816
864
|
const transformValue = transforms[propertyValue];
|
|
817
865
|
cellOutputValue = cellTemplateValue.replace(`{${col.getAttribute('data-output-array-property')}}`, transformValue);
|
|
818
866
|
}
|
|
819
|
-
cellOutputValue = cellOutputValue.replace(new RegExp(/{(.*?)}/,
|
|
867
|
+
cellOutputValue = cellOutputValue.replace(new RegExp(/{(.*?)}/, 'gm'), function (matched) {
|
|
868
|
+
return resolvePath(rowValue, matched.replace('{', '').replace('}', ''));
|
|
869
|
+
});
|
|
820
870
|
cellOutput += cellOutputValue;
|
|
821
871
|
});
|
|
822
872
|
}
|
|
@@ -832,12 +882,12 @@ export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
|
832
882
|
tbody.appendChild(table_row);
|
|
833
883
|
});
|
|
834
884
|
createSearchDataList(table, form);
|
|
835
|
-
// Add data to the pagination
|
|
885
|
+
// Add data to the pagination
|
|
836
886
|
wrapper.setAttribute('data-total', parseInt(totalNumber));
|
|
837
887
|
wrapper.setAttribute('data-page', parseInt(currentPage));
|
|
838
888
|
makeTableFunctional(table, form, pagination, wrapper);
|
|
839
889
|
Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement, index) => {
|
|
840
|
-
|
|
890
|
+
const totalNumber = resolvePath(response, queryElement.getAttribute('data-ajax-query'), '');
|
|
841
891
|
if (queryElement.hasAttribute('data-total'))
|
|
842
892
|
queryElement.setAttribute('data-total', totalNumber);
|
|
843
893
|
else
|
|
@@ -849,9 +899,9 @@ export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
|
849
899
|
wrapper.classList.remove('table--loading');
|
|
850
900
|
window.dataLayer = window.dataLayer || [];
|
|
851
901
|
window.dataLayer.push({
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
902
|
+
event: 'Ajax table loaded',
|
|
903
|
+
url: ajaxURL,
|
|
904
|
+
formData: queryString,
|
|
855
905
|
});
|
|
856
906
|
}
|
|
857
907
|
else {
|
|
@@ -870,10 +920,21 @@ export const loadAjaxTable = function (table, form, pagination, wrapper) {
|
|
|
870
920
|
export const formatCell = (format, cellOutput) => {
|
|
871
921
|
switch (format) {
|
|
872
922
|
case 'datetime':
|
|
873
|
-
return new Date(cellOutput).toLocaleDateString('en-gb', {
|
|
923
|
+
return (new Date(cellOutput).toLocaleDateString('en-gb', {
|
|
924
|
+
weekday: 'short',
|
|
925
|
+
year: '2-digit',
|
|
926
|
+
month: 'long',
|
|
927
|
+
day: 'numeric',
|
|
928
|
+
}) +
|
|
929
|
+
' ' +
|
|
930
|
+
new Date(cellOutput).toLocaleTimeString('en-gb', { hour: '2-digit', minute: '2-digit' }));
|
|
874
931
|
case 'date':
|
|
875
|
-
return new Date(cellOutput).toLocaleDateString('en-gb', {
|
|
932
|
+
return new Date(cellOutput).toLocaleDateString('en-gb', {
|
|
933
|
+
day: 'numeric',
|
|
934
|
+
month: 'long',
|
|
935
|
+
year: '2-digit',
|
|
936
|
+
});
|
|
876
937
|
case 'capitalise':
|
|
877
|
-
return cellOutput = ucfirst(cellOutput);
|
|
938
|
+
return (cellOutput = ucfirst(cellOutput));
|
|
878
939
|
}
|
|
879
940
|
};
|