@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,5 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
// Create the event listeners
|
|
2
|
+
// Create the event listeners
|
|
3
3
|
const createDynamicEvents = () => {
|
|
4
4
|
// Change event
|
|
5
5
|
document.addEventListener('change', (event) => {
|
|
@@ -18,7 +18,7 @@ const createDynamicEvents = () => {
|
|
|
18
18
|
};
|
|
19
19
|
// Parse the JSON and trigger the events, this may be singular or multiple set of events
|
|
20
20
|
const splitEvents = (element, events) => {
|
|
21
|
-
// an empty events will trigger looking up the dom chain for
|
|
21
|
+
// an empty events will trigger looking up the dom chain for
|
|
22
22
|
if (!events) {
|
|
23
23
|
events = element.parentNode.getAttribute('data-change-events');
|
|
24
24
|
}
|
|
@@ -31,7 +31,7 @@ const splitEvents = (element, events) => {
|
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
33
|
const checkConditions = (element, event) => {
|
|
34
|
-
if (
|
|
34
|
+
if ('matches' in event) {
|
|
35
35
|
if (event['matches'] == 'any')
|
|
36
36
|
runEvent(element, event, 'if');
|
|
37
37
|
else if (element.value == event.matches)
|
|
@@ -40,9 +40,9 @@ const checkConditions = (element, event) => {
|
|
|
40
40
|
runEvent(element, event, 'else');
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
else if (
|
|
43
|
+
else if ('in-list' in event) {
|
|
44
44
|
// Pass the matched datalist element instead of the triggered element
|
|
45
|
-
|
|
45
|
+
const match = document.querySelector(`${event['in-list']} option[value="${element.value}"]`);
|
|
46
46
|
if (document.querySelector(`${event['in-list']} option[value="${element.value}"]`)) {
|
|
47
47
|
runEvent(match, event, 'if');
|
|
48
48
|
}
|
|
@@ -50,7 +50,7 @@ const checkConditions = (element, event) => {
|
|
|
50
50
|
runEvent(match, event, 'else');
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
|
-
else if (
|
|
53
|
+
else if ('event' in event) {
|
|
54
54
|
runEvent(element, event, 'event');
|
|
55
55
|
}
|
|
56
56
|
};
|
|
@@ -58,18 +58,18 @@ const runEvent = (element, event, eventType) => {
|
|
|
58
58
|
if (eventType in event == false)
|
|
59
59
|
return false;
|
|
60
60
|
switch (event[eventType]) {
|
|
61
|
-
case
|
|
61
|
+
case 'hide':
|
|
62
62
|
if (document.querySelector(event['target'])) {
|
|
63
|
-
|
|
63
|
+
const hideElement = document.querySelector(event['target']);
|
|
64
64
|
hideElement.classList.add('js-hide');
|
|
65
65
|
Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input, index) => {
|
|
66
66
|
input.removeAttribute('required');
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
break;
|
|
70
|
-
case
|
|
70
|
+
case 'show':
|
|
71
71
|
if (document.querySelector(event['target'])) {
|
|
72
|
-
|
|
72
|
+
const showElement = document.querySelector(event['target']);
|
|
73
73
|
showElement.classList.remove('js-hide');
|
|
74
74
|
Array.from(showElement.querySelectorAll('[data-required]')).forEach((input, index) => {
|
|
75
75
|
if (!input.closest('.js-hide'))
|
|
@@ -77,35 +77,35 @@ const runEvent = (element, event, eventType) => {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
break;
|
|
80
|
-
case
|
|
80
|
+
case 'populate-form':
|
|
81
81
|
populateForm(element, event);
|
|
82
82
|
break;
|
|
83
|
-
case
|
|
84
|
-
|
|
83
|
+
case 'dispatchEvent':
|
|
84
|
+
const theEvent = new Event(event['value']);
|
|
85
85
|
document.querySelector(`${event['target']}`).dispatchEvent(theEvent);
|
|
86
86
|
break;
|
|
87
|
-
case
|
|
87
|
+
case 'setAttribute':
|
|
88
88
|
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element, index) {
|
|
89
89
|
element.setAttribute(event['attribute'], event['value']);
|
|
90
90
|
});
|
|
91
91
|
break;
|
|
92
|
-
case
|
|
92
|
+
case 'focus':
|
|
93
93
|
document.querySelector(`${event['target']}`).focus();
|
|
94
94
|
break;
|
|
95
|
-
case
|
|
95
|
+
case 'removeAttribute':
|
|
96
96
|
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element, index) {
|
|
97
97
|
element.removeAttribute(event['attribute']);
|
|
98
98
|
});
|
|
99
99
|
break;
|
|
100
|
-
case
|
|
101
|
-
document.querySelector(`${event['target']}`).value = event['value'] ? event['value'] :
|
|
102
|
-
|
|
100
|
+
case 'updateValue':
|
|
101
|
+
document.querySelector(`${event['target']}`).value = event['value'] ? event['value'] : '';
|
|
102
|
+
const changeEvent = new Event('change');
|
|
103
103
|
document.querySelector(`${event['target']}`).dispatchEvent(changeEvent);
|
|
104
104
|
break;
|
|
105
|
-
case
|
|
105
|
+
case 'submitForm':
|
|
106
106
|
document.querySelector(`${event['target']}`).submit();
|
|
107
107
|
break;
|
|
108
|
-
case
|
|
108
|
+
case 'openLink':
|
|
109
109
|
if (document.querySelector(`${event['target']}`).value)
|
|
110
110
|
window.location.href = document.querySelector(`${event['target']}`).value;
|
|
111
111
|
break;
|
|
@@ -114,12 +114,12 @@ const runEvent = (element, event, eventType) => {
|
|
|
114
114
|
}
|
|
115
115
|
};
|
|
116
116
|
const populateForm = function (element, event) {
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
const values = JSON.parse(element.getAttribute('data-values'));
|
|
118
|
+
const form = document.querySelector(event['target']);
|
|
119
119
|
if (!values)
|
|
120
120
|
return false;
|
|
121
121
|
Object.keys(values).forEach((field, index) => {
|
|
122
|
-
if (document.getElementById(field) && document.getElementById(field).tagName ==
|
|
122
|
+
if (document.getElementById(field) && document.getElementById(field).tagName == 'SPAN')
|
|
123
123
|
document.getElementById(field).innerHTML = values[field];
|
|
124
124
|
if (form.querySelector(`select[name="${field}"] [value="${values[field]}"]`)) {
|
|
125
125
|
form.querySelector(`select[name="${field}"]`).value = values[field];
|
|
@@ -4,27 +4,26 @@ function fileupload(form, callback) {
|
|
|
4
4
|
const label = form.querySelector(`[for="${input.getAttribute('id')}"]`);
|
|
5
5
|
const add = form.querySelector('.file-upload__add');
|
|
6
6
|
form.querySelector('button').remove();
|
|
7
|
-
input.addEventListener(
|
|
7
|
+
input.addEventListener('change', function (e) {
|
|
8
8
|
// prevent default to allow drop
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const url = form.getAttribute('action');
|
|
10
|
+
const formData = new FormData(form);
|
|
11
11
|
input.setAttribute('disabled', 'disabled');
|
|
12
12
|
fetch(url, {
|
|
13
13
|
method: 'POST',
|
|
14
|
-
body: formData
|
|
15
|
-
})
|
|
16
|
-
.then(() => {
|
|
14
|
+
body: formData,
|
|
15
|
+
}).then(() => {
|
|
17
16
|
form.classList.add('file-uploaded');
|
|
18
17
|
label.innerHTML = 'File uploaded';
|
|
19
|
-
if (typeof callback ==
|
|
18
|
+
if (typeof callback == 'function')
|
|
20
19
|
callback();
|
|
21
20
|
});
|
|
22
21
|
}, false);
|
|
23
|
-
form.addEventListener(
|
|
22
|
+
form.addEventListener('submit', function (e) {
|
|
24
23
|
// prevent default to allow drop
|
|
25
24
|
e.preventDefault();
|
|
26
25
|
}, false);
|
|
27
|
-
add.addEventListener(
|
|
26
|
+
add.addEventListener('click', function (e) {
|
|
28
27
|
form.classList.remove('file-uploaded');
|
|
29
28
|
label.innerHTML = 'Select a file to upload';
|
|
30
29
|
input.removeAttribute('disabled');
|
|
@@ -9,7 +9,7 @@ function fileupload(fileupload, wrapper) {
|
|
|
9
9
|
// We clone the input field to work as a buffer input field, this allows us to add new files without losing the old ones
|
|
10
10
|
const cloneInput = input.cloneNode();
|
|
11
11
|
dropArea.append(cloneInput);
|
|
12
|
-
|
|
12
|
+
const checkFileExt = function (filename) {
|
|
13
13
|
if (!input.hasAttribute('accept'))
|
|
14
14
|
return true;
|
|
15
15
|
const nameExtension = filename.split('.').pop();
|
|
@@ -47,7 +47,7 @@ function fileupload(fileupload, wrapper) {
|
|
|
47
47
|
cloneInput.addEventListener('change', (event) => {
|
|
48
48
|
if (input.hasAttribute('multiple')) {
|
|
49
49
|
const filesArray = [...input.files, ...cloneInput.files];
|
|
50
|
-
|
|
50
|
+
const fileNames = [];
|
|
51
51
|
const dt = new DataTransfer();
|
|
52
52
|
for (let i = 0; i < filesArray.length; i++) {
|
|
53
53
|
const file = filesArray[i];
|
|
@@ -81,7 +81,7 @@ function fileupload(fileupload, wrapper) {
|
|
|
81
81
|
});
|
|
82
82
|
input.addEventListener('change', (event) => {
|
|
83
83
|
if (input.files.length == 1) {
|
|
84
|
-
|
|
84
|
+
const file = input.files[0];
|
|
85
85
|
const size = file.size / 1000;
|
|
86
86
|
if (!checkFileExt(file.name)) {
|
|
87
87
|
errorMsgExt.classList.add('d-block');
|
|
@@ -99,7 +99,7 @@ function fileupload(fileupload, wrapper) {
|
|
|
99
99
|
for (const file of input.files) {
|
|
100
100
|
filesWrapper.innerHTML += `<span class="file" part="file">${file.name} <button data-file="${file.name}">Remove</button></span>`;
|
|
101
101
|
}
|
|
102
|
-
const elementChangeEvent = new CustomEvent('elementchange', { detail: {
|
|
102
|
+
const elementChangeEvent = new CustomEvent('elementchange', { detail: { files: input.files } });
|
|
103
103
|
fileupload.dispatchEvent(elementChangeEvent);
|
|
104
104
|
if (input.files.length == 0) {
|
|
105
105
|
const emptyEvent = new CustomEvent('empty');
|
|
@@ -107,7 +107,7 @@ function fileupload(fileupload, wrapper) {
|
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
109
|
if (fileupload.hasAttribute('data-filename')) {
|
|
110
|
-
|
|
110
|
+
const filename = fileupload.getAttribute('data-filename');
|
|
111
111
|
if (filename)
|
|
112
112
|
filesWrapper.innerHTML = `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
|
|
113
113
|
}
|
|
@@ -3,7 +3,7 @@ function filterlist(list, input) {
|
|
|
3
3
|
addFilterlistEventListeners(list, input);
|
|
4
4
|
}
|
|
5
5
|
function addFilterlistEventListeners(list, input) {
|
|
6
|
-
|
|
6
|
+
let timer;
|
|
7
7
|
input.addEventListener('keyup', (event) => {
|
|
8
8
|
clearTimeout(timer);
|
|
9
9
|
timer = setTimeout(function () {
|
|
@@ -17,7 +17,7 @@ function addFilterlistEventListeners(list, input) {
|
|
|
17
17
|
}
|
|
18
18
|
export const filterTheList = function (list, searchTerm) {
|
|
19
19
|
Array.from(list.querySelectorAll(':scope > li')).forEach((item, index) => {
|
|
20
|
-
|
|
20
|
+
const content = item.textContent.toLowerCase();
|
|
21
21
|
item.classList.add('d-none');
|
|
22
22
|
if (content.includes(searchTerm.toLowerCase()))
|
|
23
23
|
item.classList.remove('d-none');
|
|
@@ -25,8 +25,8 @@ export const filterTheList = function (list, searchTerm) {
|
|
|
25
25
|
// Data layer Web component created
|
|
26
26
|
window.dataLayer = window.dataLayer || [];
|
|
27
27
|
window.dataLayer.push({
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
event: 'Filtered list',
|
|
29
|
+
value: searchTerm,
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
32
|
export default filterlist;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// The link between the two will prevent the max input field form setting a lower value than the min and vice versa
|
|
4
4
|
function inputRange(inputWrapper) {
|
|
5
5
|
inputWrapper.addEventListener('change', function (e) {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const min = parseInt(inputWrapper.querySelector('[data-min] select,[data-min] input').value);
|
|
7
|
+
const max = parseInt(inputWrapper.querySelector('[data-max] select,[data-max] input').value);
|
|
8
8
|
// Set attributes for input fields
|
|
9
9
|
Array.from(inputWrapper.querySelectorAll('[data-min] input')).forEach((input, index) => {
|
|
10
10
|
input.setAttribute('max', max);
|
|
@@ -36,7 +36,7 @@ function inputRedirect(inputWrapper) {
|
|
|
36
36
|
document.location.href = url;
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
if (typeof inputWrapper.value !=
|
|
39
|
+
if (typeof inputWrapper.value != 'undefined')
|
|
40
40
|
document.location.href = inputWrapper.value;
|
|
41
41
|
}
|
|
42
42
|
}, false);
|
|
@@ -47,18 +47,22 @@ function multipleFileUploads(wrapper) {
|
|
|
47
47
|
const clone = fileTenplate.cloneNode(true);
|
|
48
48
|
const addButton = wrapper.querySelector('[data-add]');
|
|
49
49
|
wrapper.addEventListener('click', function (e) {
|
|
50
|
-
for (
|
|
51
|
-
if (target.matches('[data-add]')) {
|
|
50
|
+
for (let target = e.target; target && target != this; target = target.parentNode) {
|
|
51
|
+
if (target.matches('[data-add]')) {
|
|
52
|
+
// Add a new row upload file input fields
|
|
52
53
|
const tempClone = clone.cloneNode(true);
|
|
53
54
|
wrapper.insertBefore(tempClone, target);
|
|
54
|
-
if (addButton.matches('[data-maxfiles]') &&
|
|
55
|
+
if (addButton.matches('[data-maxfiles]') &&
|
|
56
|
+
Array.from(wrapper.querySelectorAll(':scope > .row')).length >= addButton.dataset.maxfiles)
|
|
55
57
|
addButton.setAttribute('disabled', 'disabled');
|
|
56
58
|
break;
|
|
57
59
|
}
|
|
58
|
-
if (target.matches('[data-delete]')) {
|
|
59
|
-
|
|
60
|
+
if (target.matches('[data-delete]')) {
|
|
61
|
+
// Delete the current row
|
|
62
|
+
const row = target.closest('.row');
|
|
60
63
|
row.remove();
|
|
61
|
-
if (addButton.matches('[data-maxfiles]') &&
|
|
64
|
+
if (addButton.matches('[data-maxfiles]') &&
|
|
65
|
+
Array.from(wrapper.querySelectorAll(':scope > .row')).length < addButton.dataset.maxfiles)
|
|
62
66
|
addButton.removeAttribute('disabled');
|
|
63
67
|
break;
|
|
64
68
|
}
|
|
@@ -79,7 +83,7 @@ function form(formElement) {
|
|
|
79
83
|
});
|
|
80
84
|
// Check the file size of a file when uploaded in case it exceeds the max file size set
|
|
81
85
|
formElement.addEventListener('change', function (e) {
|
|
82
|
-
for (
|
|
86
|
+
for (let target = e.target; target && target != this; target = target.parentNode) {
|
|
83
87
|
if (target.matches('[type="file"][data-filesize]') && target.files && target.files[0]) {
|
|
84
88
|
const maxAllowedSize = target.dataset.filesize;
|
|
85
89
|
if (target.files[0].size > maxAllowedSize) {
|
|
@@ -94,10 +98,10 @@ function form(formElement) {
|
|
|
94
98
|
formElement.addEventListener('change', function (e) {
|
|
95
99
|
// Remove disabled attribute when a pre-selected input field equals a certain value
|
|
96
100
|
Array.from(formElement.querySelectorAll('select[data-activeif][data-equals],input[data-activeif][data-equals]')).forEach((arrayElement, index) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
102
|
+
const selector = arrayElement.dataset.activeif;
|
|
103
|
+
const value = arrayElement.dataset.equals;
|
|
104
|
+
const testElement = group.querySelector(`select[data-id="${selector}"],input[data-id="${selector}"]`);
|
|
101
105
|
if (testElement.value == value) {
|
|
102
106
|
arrayElement.removeAttribute('disabled');
|
|
103
107
|
}
|
|
@@ -108,10 +112,10 @@ function form(formElement) {
|
|
|
108
112
|
});
|
|
109
113
|
// Show this input wrapper when a pre-selected input field equals a certain value
|
|
110
114
|
Array.from(formElement.querySelectorAll('.form-control__wrapper[data-displayif][data-equals]')).forEach((arrayElement, index) => {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
116
|
+
const selector = arrayElement.dataset.activeif;
|
|
117
|
+
const value = arrayElement.dataset.equals;
|
|
118
|
+
const testElement = group.querySelector(`select[data-id="${selector}"],input[data-id="${selector}"]`);
|
|
115
119
|
if (testElement.value == value)
|
|
116
120
|
arrayElement.classList.remove('d-none');
|
|
117
121
|
else
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.
|
|
9
9
|
*/
|
|
10
10
|
export const addBodyClasses = (body) => {
|
|
11
|
-
body.classList.add(
|
|
11
|
+
body.classList.add('js-enabled');
|
|
12
12
|
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
|
|
13
|
-
body.classList.add(
|
|
13
|
+
body.classList.add('ie');
|
|
14
14
|
}
|
|
15
15
|
return null;
|
|
16
16
|
};
|
|
@@ -35,26 +35,30 @@ export const addGlobalEvents = (body) => {
|
|
|
35
35
|
};
|
|
36
36
|
if (location.hash)
|
|
37
37
|
checkElements(location.hash);
|
|
38
|
-
window.addEventListener('hashchange', function () {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
window.addEventListener('hashchange', function () {
|
|
39
|
+
checkElements(location.hash);
|
|
40
|
+
}, false);
|
|
41
|
+
addEventListener('popstate', (event) => {
|
|
42
|
+
if (event && event.state && event.state.type && event.state.type == 'pagination') {
|
|
43
|
+
const form = document.querySelector(`#${event.state.form}`);
|
|
44
|
+
const pageInput = document.querySelector(`#${event.state.form} [data-pagination]`);
|
|
43
45
|
if (pageInput)
|
|
44
46
|
pageInput.value = event.state.page;
|
|
45
47
|
else
|
|
46
48
|
form.innerHTML += `<input name="page" type="hidden" data-pagination="true" value="${event.state.page}" />`;
|
|
47
|
-
form.dispatchEvent(new Event(
|
|
49
|
+
form.dispatchEvent(new Event('submit'));
|
|
48
50
|
}
|
|
49
51
|
});
|
|
50
|
-
document.addEventListener(
|
|
52
|
+
document.addEventListener('submit', (event) => {
|
|
51
53
|
if (event && event.target instanceof HTMLElement && event.target.matches('form')) {
|
|
52
|
-
|
|
54
|
+
const form = event.target;
|
|
53
55
|
// Reset password types
|
|
54
56
|
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input, index) => {
|
|
55
57
|
input.setAttribute('type', 'password');
|
|
56
58
|
});
|
|
57
|
-
if (form.querySelector(':invalid') ||
|
|
59
|
+
if (form.querySelector(':invalid') ||
|
|
60
|
+
form.querySelector('.pwd-checker[data-strength="1"]') ||
|
|
61
|
+
form.querySelector('.pwd-checker[data-strength="2"]')) {
|
|
58
62
|
form.classList.add('was-validated');
|
|
59
63
|
event.preventDefault();
|
|
60
64
|
}
|
|
@@ -64,8 +68,8 @@ export const addGlobalEvents = (body) => {
|
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
});
|
|
67
|
-
document.addEventListener(
|
|
68
|
-
if (e.key ===
|
|
71
|
+
document.addEventListener('keydown', (e) => {
|
|
72
|
+
if (e.key === 'Escape') {
|
|
69
73
|
if (document.querySelector('.dialog--transactional[open], .dialog--acknowledgement[open]')) {
|
|
70
74
|
e.preventDefault();
|
|
71
75
|
e.stopPropagation();
|
|
@@ -73,20 +77,23 @@ export const addGlobalEvents = (body) => {
|
|
|
73
77
|
}
|
|
74
78
|
});
|
|
75
79
|
Array.from(document.querySelectorAll('label progress')).forEach((progress, index) => {
|
|
76
|
-
|
|
80
|
+
const label = progress.closest('label');
|
|
77
81
|
label.setAttribute('data-percent', progress.getAttribute('value'));
|
|
78
82
|
});
|
|
79
83
|
return null;
|
|
80
84
|
};
|
|
81
85
|
export const isNumeric = function (str) {
|
|
82
|
-
if (typeof str !=
|
|
83
|
-
return false; // we only process strings!
|
|
84
|
-
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
|
85
|
-
!isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail
|
|
86
|
+
if (typeof str != 'string')
|
|
87
|
+
return false; // we only process strings!
|
|
88
|
+
return (!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
|
89
|
+
!isNaN(parseFloat(str))); // ...and ensure strings of whitespace fail
|
|
86
90
|
};
|
|
87
91
|
export const zeroPad = (num, places) => String(num).padStart(places, '0');
|
|
88
92
|
export const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
89
|
-
export const ucwords = (str) => str
|
|
93
|
+
export const ucwords = (str) => str
|
|
94
|
+
.split(' ')
|
|
95
|
+
.map((s) => ucfirst(s))
|
|
96
|
+
.join(' ');
|
|
90
97
|
export const unsnake = (str) => str.replace(/_/g, ' ');
|
|
91
98
|
export const snake = (str) => str.replace(/ /g, '_');
|
|
92
99
|
export const safeID = function (str) {
|
|
@@ -96,51 +103,54 @@ export const safeID = function (str) {
|
|
|
96
103
|
return str;
|
|
97
104
|
};
|
|
98
105
|
export const numberOfDays = function (startDateString, endDateString) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (dateStart ==
|
|
104
|
-
throw
|
|
105
|
-
if (dateEnd ==
|
|
106
|
-
throw
|
|
106
|
+
const convertStart = startDateString.split('/');
|
|
107
|
+
const convertEnd = endDateString.split('/');
|
|
108
|
+
const dateStart = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);
|
|
109
|
+
const dateEnd = new Date(convertEnd[1] + '/' + convertEnd[0] + '/' + convertEnd[2]);
|
|
110
|
+
if (dateStart == 'Invalid Date')
|
|
111
|
+
throw 'Start date is not a valid date';
|
|
112
|
+
if (dateEnd == 'Invalid Date')
|
|
113
|
+
throw 'End date is not a valid date';
|
|
107
114
|
// To calculate the time difference of two dates
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
const diffTime = dateEnd.getTime() - dateStart.getTime();
|
|
116
|
+
const numberOfDays = diffTime / (1000 * 3600 * 24) + 1;
|
|
110
117
|
if (numberOfDays < 0)
|
|
111
|
-
throw
|
|
118
|
+
throw 'The start date should be before the end date';
|
|
112
119
|
return numberOfDays;
|
|
113
120
|
};
|
|
114
121
|
// Used to get values from nested json objects
|
|
115
|
-
export const resolvePath = (object, path, defaultValue) => path
|
|
116
|
-
|
|
122
|
+
export const resolvePath = (object, path, defaultValue) => path
|
|
123
|
+
.split(/[\.\[\]\'\"]/)
|
|
124
|
+
.filter((p) => p)
|
|
125
|
+
.reduce((o, p) => (o ? o[p] : defaultValue), object);
|
|
126
|
+
export const isTraversable = (o) => Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));
|
|
117
127
|
export const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {
|
|
118
|
-
const limit = Math.tan(45 * 1.5 / 180 * Math.PI);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);
|
|
129
|
+
const pageWidth = window.innerWidth || document.body.clientWidth;
|
|
130
|
+
const treshold = Math.max(1, Math.floor(0.01 * pageWidth));
|
|
131
|
+
const x = touchendX - touchstartX;
|
|
132
|
+
const y = touchendY - touchstartY;
|
|
133
|
+
const xy = Math.abs(x / y);
|
|
134
|
+
const yx = Math.abs(y / x);
|
|
125
135
|
if (Math.abs(x) > treshold || Math.abs(y) > treshold) {
|
|
126
136
|
if (yx <= limit) {
|
|
127
137
|
if (x < 0) {
|
|
128
|
-
return
|
|
138
|
+
return 'left';
|
|
129
139
|
}
|
|
130
140
|
else {
|
|
131
|
-
return
|
|
141
|
+
return 'right';
|
|
132
142
|
}
|
|
133
143
|
}
|
|
134
144
|
if (xy <= limit) {
|
|
135
145
|
if (y < 0) {
|
|
136
|
-
return
|
|
146
|
+
return 'top';
|
|
137
147
|
}
|
|
138
148
|
else {
|
|
139
|
-
return
|
|
149
|
+
return 'bottom';
|
|
140
150
|
}
|
|
141
151
|
}
|
|
142
152
|
}
|
|
143
153
|
else {
|
|
144
|
-
return
|
|
154
|
+
return 'tap';
|
|
145
155
|
}
|
|
146
156
|
};
|
|
@@ -4,18 +4,18 @@ const extendInputs = (body) => {
|
|
|
4
4
|
function loadInput() {
|
|
5
5
|
// maxlength counter init
|
|
6
6
|
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input, index) => {
|
|
7
|
-
|
|
7
|
+
const wrapper = input.parentElement;
|
|
8
8
|
setMaxlengthVars(input, wrapper);
|
|
9
9
|
});
|
|
10
10
|
Array.from(document.querySelectorAll('label input')).forEach((input, index) => {
|
|
11
11
|
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
12
12
|
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
13
|
-
input.parentElement.insertAdjacentHTML(
|
|
13
|
+
input.parentElement.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
14
14
|
else
|
|
15
|
-
input.insertAdjacentHTML(
|
|
15
|
+
input.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
// Date restrictions
|
|
18
|
+
// Date restrictions
|
|
19
19
|
if (document.querySelector('input[type="date"]')) {
|
|
20
20
|
const today = new Date();
|
|
21
21
|
function formatDate(date) {
|
|
@@ -25,25 +25,25 @@ const extendInputs = (body) => {
|
|
|
25
25
|
return `${year}-${month}-${day}`;
|
|
26
26
|
}
|
|
27
27
|
Array.from(document.querySelectorAll('input[type="date"]')).forEach((input, index) => {
|
|
28
|
-
|
|
28
|
+
const startDate = today;
|
|
29
29
|
if (input.hasAttribute('data-start')) {
|
|
30
30
|
startDate.setDate(startDate.getDate() + parseInt(input.getAttribute('data-start')));
|
|
31
31
|
input.setAttribute('min', formatDate(startDate));
|
|
32
32
|
}
|
|
33
33
|
if (input.hasAttribute('data-period')) {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const timePeriod = parseInt(input.getAttribute('data-period'));
|
|
35
|
+
const endDate = new Date();
|
|
36
36
|
endDate.setDate(startDate.getDate() + timePeriod);
|
|
37
37
|
input.setAttribute('max', formatDate(endDate));
|
|
38
38
|
}
|
|
39
39
|
if (input.hasAttribute('data-allowed-days')) {
|
|
40
|
-
|
|
40
|
+
const allowedDays = JSON.parse(`[${input.getAttribute('data-allowed-days')}]`);
|
|
41
41
|
input.addEventListener('input', function (e) {
|
|
42
|
-
|
|
42
|
+
const day = new Date(this.value).getUTCDay();
|
|
43
43
|
if (allowedDays.includes(day))
|
|
44
|
-
input.setCustomValidity(
|
|
44
|
+
input.setCustomValidity('');
|
|
45
45
|
else
|
|
46
|
-
input.setCustomValidity(
|
|
46
|
+
input.setCustomValidity('That day of the week is not allowed');
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
});
|
|
@@ -53,7 +53,7 @@ const extendInputs = (body) => {
|
|
|
53
53
|
loadInput();
|
|
54
54
|
}
|
|
55
55
|
document.onreadystatechange = () => {
|
|
56
|
-
if (document.readyState ===
|
|
56
|
+
if (document.readyState === 'complete') {
|
|
57
57
|
loadInput();
|
|
58
58
|
}
|
|
59
59
|
};
|
|
@@ -65,7 +65,7 @@ const extendInputs = (body) => {
|
|
|
65
65
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
|
|
66
66
|
input.nextElementSibling.value = input.value;
|
|
67
67
|
if (input.hasAttribute('maxlength') && input.nextElementSibling)
|
|
68
|
-
input.nextElementSibling.setAttribute(
|
|
68
|
+
input.nextElementSibling.setAttribute('data-count', input.value.length);
|
|
69
69
|
if (input.hasAttribute('data-strength-checker'))
|
|
70
70
|
checkPWDStrength(input);
|
|
71
71
|
}
|
|
@@ -91,7 +91,9 @@ const extendInputs = (body) => {
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
body.addEventListener('click', (event) => {
|
|
94
|
-
if (event &&
|
|
94
|
+
if (event &&
|
|
95
|
+
event.target instanceof HTMLElement &&
|
|
96
|
+
event.target.closest('[data-change-type][data-input]:not(select)')) {
|
|
95
97
|
const button = event.target.closest('[data-change-type]');
|
|
96
98
|
const input = document.getElementById(button.getAttribute('data-input'));
|
|
97
99
|
const newType = button.getAttribute('data-change-type');
|
|
@@ -106,9 +108,9 @@ const extendInputs = (body) => {
|
|
|
106
108
|
});
|
|
107
109
|
};
|
|
108
110
|
export const setMaxlengthVars = (input) => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
wrapper.style.setProperty(
|
|
111
|
+
const wrapper = input.parentElement;
|
|
112
|
+
const maxlength = input.getAttribute('maxlength');
|
|
113
|
+
wrapper.style.setProperty('--maxlength', maxlength);
|
|
112
114
|
let span = input.nextElementSibling;
|
|
113
115
|
if (!span || (span && span.classList.contains('invalid-feedback'))) {
|
|
114
116
|
span = document.createElement('span');
|
|
@@ -126,7 +128,7 @@ export const checkPWDStrength = (input, check = 'no') => {
|
|
|
126
128
|
const password = input.value;
|
|
127
129
|
const minChars = input.hasAttribute('minlength') ? input.getAttribute('minlength') : 12;
|
|
128
130
|
let strength = 1;
|
|
129
|
-
|
|
131
|
+
const strengthName = ['Very weak', 'Weak', 'Average', 'Strong', 'Very strong'];
|
|
130
132
|
let extraMsg = '';
|
|
131
133
|
//has number
|
|
132
134
|
if (password.match(/(?=.*[0-9])/))
|
|
@@ -151,13 +153,15 @@ export const checkPWDStrength = (input, check = 'no') => {
|
|
|
151
153
|
checkhibpCheck(event, input);
|
|
152
154
|
});
|
|
153
155
|
function checkhibpCheck(event, input) {
|
|
154
|
-
if (event.detail) {
|
|
156
|
+
if (event.detail) {
|
|
157
|
+
// found
|
|
155
158
|
checkPWDStrength(input, 'danger');
|
|
156
159
|
}
|
|
157
|
-
else {
|
|
160
|
+
else {
|
|
161
|
+
// not found
|
|
158
162
|
checkPWDStrength(input, 'success');
|
|
159
163
|
}
|
|
160
|
-
input.removeEventListener(
|
|
164
|
+
input.removeEventListener('hibpCheck', checkhibpCheck); // Succeeds
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
167
|
else if (strength >= 3 && check == 'danger') {
|
package/assets/js/modules/nav.js
CHANGED
|
@@ -11,7 +11,9 @@ const navbar = (element) => {
|
|
|
11
11
|
}, false);
|
|
12
12
|
});
|
|
13
13
|
if ('IntersectionObserver' in window) {
|
|
14
|
-
const observer = new IntersectionObserver(([e]) => e.target.classList.toggle(
|
|
14
|
+
const observer = new IntersectionObserver(([e]) => e.target.classList.toggle('is-stuck', e.intersectionRatio < 1), {
|
|
15
|
+
threshold: [1],
|
|
16
|
+
});
|
|
15
17
|
observer.observe(element);
|
|
16
18
|
}
|
|
17
19
|
};
|