@iamproperty/components 7.1.0--beta6 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/components/actionbar.component.css +1 -0
- package/assets/css/components/actionbar.component.css.map +1 -0
- package/assets/css/components/actionbar.global.css +1 -1
- package/assets/css/components/actionbar.global.css.map +1 -1
- package/assets/css/components/address-lookup.css +1 -1
- package/assets/css/components/address-lookup.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/bento-grid.component.css +1 -0
- package/assets/css/components/bento-grid.component.css.map +1 -0
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.css.map +1 -1
- package/assets/css/components/carousel.config.css +1 -1
- package/assets/css/components/carousel.config.css.map +1 -1
- package/assets/css/components/charts.config.css +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 +1 -1
- package/assets/css/components/collapsible-side.css.map +1 -1
- package/assets/css/components/doughnutchart.component.css +1 -0
- package/assets/css/components/doughnutchart.component.css.map +1 -0
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/inline-edit.preload.css +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/menu.component.css +1 -0
- package/assets/css/components/menu.component.css.map +1 -0
- package/assets/css/components/menu.css +1 -0
- package/assets/css/components/menu.css.map +1 -0
- package/assets/css/components/multi-step.component.css.map +1 -1
- package/assets/css/components/multiselect.preload.css +1 -1
- package/assets/css/components/multiselect.preload.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -0
- package/assets/css/components/nav.component.css.map +1 -0
- package/assets/css/components/nav.docs.css.map +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 +1 -1
- package/assets/css/components/nav.preload.css.map +1 -1
- package/assets/css/components/notification.css +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/property-searchbar.css.map +1 -1
- package/assets/css/components/slider.css +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 → table.component.css} +1 -1
- package/assets/css/components/table.component.css.map +1 -0
- package/assets/css/components/table.global.css +1 -1
- package/assets/css/components/table.global.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -0
- package/assets/css/components/tabs.component.css.map +1 -0
- package/assets/css/components/tabs.css +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.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/mobile-core.min.css +1 -0
- package/assets/css/mobile-core.min.css.map +1 -0
- package/assets/css/mobile.min.css +1 -0
- package/assets/css/mobile.min.css.map +1 -0
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/_global.js +0 -1
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +86 -8
- package/assets/js/components/actionbar/actionbar.component.min.js +19 -6
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +17 -18
- package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.js +0 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +4 -4
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.js +2 -3
- package/assets/js/components/barchart/barchart.component.min.js +8 -4
- package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.js +50 -0
- package/assets/js/components/bento-grid/bento-grid.component.min.js +15 -0
- package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -0
- package/assets/js/components/card/card.component.js +10 -13
- package/assets/js/components/card/card.component.min.js +7 -7
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +4 -5
- 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 +1 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.js +4 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.js +70 -0
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +25 -0
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -0
- package/assets/js/components/fileupload/fileupload.component.js +2 -3
- package/assets/js/components/fileupload/fileupload.component.min.js +6 -6
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filter-card/filter-card.component.js +3 -4
- package/assets/js/components/filter-card/filter-card.component.min.js +4 -4
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.js +0 -1
- 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 +0 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.js +7 -8
- 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 +0 -1
- 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/menu/menu.component.js +200 -0
- package/assets/js/components/menu/menu.component.min.js +77 -0
- package/assets/js/components/menu/menu.component.min.js.map +1 -0
- package/assets/js/components/multi-step/multi-step.component.js +10 -10
- package/assets/js/components/multi-step/multi-step.component.min.js +13 -0
- package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -0
- package/assets/js/components/multiselect/multiselect.component.js +10 -10
- package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.js +7 -7
- package/assets/js/components/nav/nav.component.min.js +7 -7
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +3 -3
- package/assets/js/components/notification/notification.component.min.js +4 -4
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.js +3 -4
- package/assets/js/components/pagination/pagination.component.min.js +4 -4
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.js +6 -8
- package/assets/js/components/record-card/record-card.component.min.js +4 -4
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
- package/assets/js/components/search/search.component.js +9 -6
- package/assets/js/components/search/search.component.min.js +8 -5
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.js +8 -8
- package/assets/js/components/slider/slider.component.min.js +5 -5
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.js +12 -11
- 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 +1 -2
- package/assets/js/components/tabs/tabs.component.min.js +4 -4
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- package/assets/js/components/video-card/video-card.component.js +4 -3
- 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/modules/applied-filters.js +8 -9
- package/assets/js/modules/carousel.js +9 -10
- package/assets/js/modules/chart.js +5 -3
- package/assets/js/modules/chart.module.js +127 -6
- package/assets/js/modules/dialogs.js +6 -7
- package/assets/js/modules/drawer.js +1 -2
- package/assets/js/modules/dynamicEvents.js +7 -8
- package/assets/js/modules/fileupload.js +7 -7
- package/assets/js/modules/filterlist.js +3 -4
- package/assets/js/modules/form.js +12 -13
- package/assets/js/modules/helpers.js +3 -5
- package/assets/js/modules/inputs.js +6 -9
- package/assets/js/modules/nav.js +3 -4
- package/assets/js/modules/notification.js +2 -3
- package/assets/js/modules/orderablelist.js +0 -1
- package/assets/js/modules/table.js +80 -42
- package/assets/js/modules/tabs.js +3 -6
- package/assets/js/scripts.bundle.js +3 -3
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +64 -6
- package/assets/js/tests/card.spec.js +14 -0
- package/assets/js/tests/carousel.spec.js +60 -0
- package/assets/js/tests/chart.spec.js +7 -5
- package/assets/js/tests/fileupload.spec.js +22 -0
- package/assets/js/tests/multistep.spec.js +68 -0
- package/assets/sass/_bs_grid.scss +39 -0
- package/assets/sass/_components.scss +323 -100
- package/assets/sass/_corefiles.scss +46 -39
- package/assets/sass/_elements.scss +98 -18
- package/assets/sass/_example.scss +61 -0
- package/assets/sass/_func.scss +4 -14
- package/assets/sass/_functions/{utilities.scss → bs_utilities.scss} +43 -39
- package/assets/sass/_functions/functions.scss +66 -52
- package/assets/sass/_functions/mixins.scss +82 -137
- package/assets/sass/_functions/utility-mixins.scss +1445 -0
- package/assets/sass/_functions/variables.scss +90 -1659
- package/assets/sass/_functions/variables_old.scss +1701 -0
- package/assets/sass/{foundations/grid.scss → _grid.scss} +96 -82
- package/assets/sass/_tests/func.spec.scss +1 -37
- package/assets/sass/_tests/mixins.spec.scss +1 -77
- package/assets/sass/_tests/typography.spec.scss +1 -1
- package/assets/sass/_utilities.scss +35 -117
- package/assets/sass/_utility-mixins.scss +37 -0
- package/assets/sass/components/{actionbar.scss → actionbar.component.scss} +82 -16
- package/assets/sass/components/actionbar.global.scss +28 -14
- package/assets/sass/components/address-lookup.scss +6 -0
- package/assets/sass/components/barchart.component.scss +8 -19
- package/assets/sass/components/bento-grid.component.scss +91 -0
- package/assets/sass/components/carousel.config.scss +64 -58
- package/assets/sass/components/charts.config.scss +73 -67
- package/assets/sass/components/charts.module.scss +131 -73
- package/assets/sass/components/charts.scss +43 -42
- package/assets/sass/components/collapsible-side.scss +29 -27
- package/assets/sass/components/doughnutchart.component.scss +205 -0
- package/assets/sass/components/fileupload.scss +4 -3
- package/assets/sass/components/header.scss +5 -5
- package/assets/sass/components/inline-edit.preload.scss +108 -102
- package/assets/sass/components/menu.component.scss +101 -0
- package/assets/sass/components/menu.scss +21 -0
- package/assets/sass/components/multi-step.component.scss +5 -3
- package/assets/sass/components/multiselect.preload.scss +36 -30
- package/assets/sass/components/{nav.scss → nav.component.scss} +41 -21
- package/assets/sass/components/nav.docs.scss +1 -1
- package/assets/sass/components/nav.global.scss +13 -11
- package/assets/sass/components/nav.old.scss +21 -24
- package/assets/sass/components/nav.preload.scss +40 -34
- package/assets/sass/components/notification.scss +9 -5
- package/assets/sass/components/pagination.scss +6 -0
- package/assets/sass/components/property-searchbar.scss +7 -7
- package/assets/sass/components/slider.scss +2 -0
- package/assets/sass/components/snapshot.scss +2 -2
- package/assets/sass/components/stepper.scss +7 -7
- package/assets/sass/components/table.global.scss +57 -1
- package/assets/sass/components/tabs.component.scss +5 -0
- package/assets/sass/components/tabs.scss +9 -6
- package/assets/sass/components/testimonial.scss +7 -7
- package/assets/sass/components/timeline.scss +1 -1
- package/assets/sass/core.scss +13 -2
- package/assets/sass/elements/admin-panel.scss +201 -134
- package/assets/sass/elements/badge-tag.scss +87 -81
- package/assets/sass/elements/brand.scss +67 -61
- package/assets/sass/elements/buttons--action.scss +55 -0
- package/assets/sass/elements/buttons--compact.scss +135 -0
- package/assets/sass/elements/buttons--global.scss +322 -0
- package/assets/sass/elements/buttons--secondary.scss +24 -0
- package/assets/sass/elements/buttons--tertiary.scss +57 -0
- package/assets/sass/elements/buttons.scss +29 -503
- package/assets/sass/elements/container.scss +160 -121
- package/assets/sass/elements/details.scss +147 -138
- package/assets/sass/elements/dialog.scss +36 -30
- package/assets/sass/elements/forms.scss +1061 -1047
- package/assets/sass/elements/icons.scss +23 -17
- package/assets/sass/elements/links.scss +131 -116
- package/assets/sass/elements/lists.scss +270 -264
- package/assets/sass/elements/media.scss +19 -13
- package/assets/sass/elements/modal.scss +336 -330
- package/assets/sass/elements/popover.scss +163 -152
- package/assets/sass/elements/progress.scss +173 -162
- package/assets/sass/elements/table.element.scss +115 -109
- package/assets/sass/elements/tooltips.scss +87 -80
- package/assets/sass/elements/type.scss +172 -160
- package/assets/sass/email.scss +4 -1
- package/assets/sass/error.scss +15 -9
- package/assets/sass/foundations/reboot.scss +176 -170
- package/assets/sass/foundations/root.scss +136 -125
- package/assets/sass/helpers/line-clamp.scss +0 -23
- package/assets/sass/helpers/max-height.scss +2 -2
- package/assets/sass/main.scss +14 -3
- package/assets/sass/mobile-core.scss +14 -0
- package/assets/sass/mobile.scss +16 -0
- package/assets/sass/templates/auth.scss +88 -83
- package/assets/sass/templates/form.scss +68 -59
- package/assets/ts/components/_global.ts +2 -3
- package/assets/ts/components/actionbar/actionbar.component.ts +94 -2
- package/assets/ts/components/address-lookup/address-lookup.component.ts +21 -22
- package/assets/ts/components/applied-filters/applied-filters.component.ts +1 -2
- package/assets/ts/components/barchart/barchart.component.ts +3 -5
- package/assets/ts/components/bento-grid/README.md +31 -0
- package/assets/ts/components/bento-grid/bento-grid.component.ts +67 -0
- package/assets/ts/components/card/card.component.ts +13 -16
- package/assets/ts/components/carousel/carousel.component.ts +5 -7
- package/assets/ts/components/chart/chart.component.ts +4 -9
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +5 -6
- package/assets/ts/components/doughnutchart/doughnutchart.component.ts +85 -0
- package/assets/ts/components/fileupload/fileupload.component.ts +5 -6
- package/assets/ts/components/filter-card/filter-card.component.ts +4 -5
- package/assets/ts/components/filterlist/filterlist.component.ts +1 -2
- package/assets/ts/components/header/header.component.ts +1 -3
- package/assets/ts/components/inline-edit/inline-edit.component.ts +8 -11
- package/assets/ts/components/marketing/marketing.component.ts +1 -3
- package/assets/ts/components/menu/menu.component.ts +222 -0
- package/assets/ts/components/multi-step/multi-step.component.ts +19 -23
- package/assets/ts/components/multiselect/multiselect.component.ts +13 -14
- package/assets/ts/components/nav/nav.component.ts +8 -9
- package/assets/ts/components/notification/notification.component.ts +3 -3
- package/assets/ts/components/pagination/pagination.component.ts +7 -8
- package/assets/ts/components/record-card/record-card.component.ts +9 -11
- package/assets/ts/components/search/search.component.ts +12 -9
- package/assets/ts/components/slider/slider.component.ts +9 -10
- package/assets/ts/components/table/table.component.ts +19 -18
- package/assets/ts/components/tabs/tabs.component.ts +2 -3
- package/assets/ts/components/video-card/video-card.component.ts +13 -12
- package/assets/ts/modules/applied-filters.ts +10 -11
- package/assets/ts/modules/card.module.ts +1 -1
- package/assets/ts/modules/carousel.ts +13 -15
- package/assets/ts/modules/chart.module.ts +176 -24
- package/assets/ts/modules/chart.ts +26 -24
- package/assets/ts/modules/dialogs.ts +10 -13
- package/assets/ts/modules/drawer.ts +1 -2
- package/assets/ts/modules/dynamicEvents.ts +12 -14
- package/assets/ts/modules/fileupload.ts +10 -10
- package/assets/ts/modules/filterlist.ts +6 -7
- package/assets/ts/modules/form.ts +16 -17
- package/assets/ts/modules/helpers.ts +18 -21
- package/assets/ts/modules/inputs.ts +15 -18
- package/assets/ts/modules/nav.ts +4 -5
- package/assets/ts/modules/notification.ts +7 -8
- package/assets/ts/modules/orderablelist.ts +3 -4
- package/assets/ts/modules/pagination.ts +1 -1
- package/assets/ts/modules/table.ts +103 -60
- package/assets/ts/modules/tabs.ts +6 -14
- package/assets/ts/scripts.ts +70 -6
- package/assets/ts/tests/card.spec.ts +19 -0
- package/assets/ts/tests/carousel.spec.ts +66 -0
- package/assets/ts/tests/chart.spec.ts +9 -6
- package/assets/ts/tests/fileupload.spec.ts +30 -0
- package/assets/ts/tests/multistep.spec.ts +78 -0
- package/dist/components.es.js +1258 -1063
- package/dist/components.umd.js +473 -195
- package/package.json +44 -49
- package/src/components/BentoGrid/BentoGrid.vue +20 -0
- package/src/components/DoughnutChart/DoughnutChart.vue +23 -0
- package/src/components/FileUpload/FileUpload.vue +4 -1
- package/src/components/Menu/Menu.vue +22 -0
- package/src/components/Tabs/Tabs.vue +0 -4
- package/src/index.js +25 -19
- package/assets/css/components/actionbar.css +0 -1
- package/assets/css/components/actionbar.css.map +0 -1
- package/assets/css/components/nav.css +0 -1
- package/assets/css/components/nav.css.map +0 -1
- package/assets/css/components/table.css.map +0 -1
- package/assets/js/components.bundle.js +0 -5
- package/assets/js/components.bundle.js.map +0 -1
- package/assets/js/components.js +0 -57
- package/assets/js/modules/file-upload.js +0 -32
- package/assets/sass/components.reset.scss +0 -8
- package/assets/sass/foundations/bs_grid.scss +0 -32
- package/assets/ts/components.ts +0 -62
- package/assets/ts/modules/file-upload.ts +0 -52
- package/dist/style.css +0 -1
- /package/assets/sass/components/{table.scss → table.component.scss} +0 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
|
|
3
1
|
// Create the event listeners
|
|
4
|
-
const createDynamicEvents = () => {
|
|
2
|
+
const createDynamicEvents = (): void => {
|
|
5
3
|
// Change event
|
|
6
4
|
document.addEventListener('change', (event) => {
|
|
7
5
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-change-events]'))
|
|
@@ -20,7 +18,7 @@ const createDynamicEvents = () => {
|
|
|
20
18
|
};
|
|
21
19
|
|
|
22
20
|
// Parse the JSON and trigger the events, this may be singular or multiple set of events
|
|
23
|
-
const splitEvents = (element, events) => {
|
|
21
|
+
const splitEvents = (element, events): void => {
|
|
24
22
|
// an empty events will trigger looking up the dom chain for
|
|
25
23
|
if (!events) {
|
|
26
24
|
events = element.parentNode.getAttribute('data-change-events');
|
|
@@ -30,12 +28,12 @@ const splitEvents = (element, events) => {
|
|
|
30
28
|
if (!events) return false;
|
|
31
29
|
|
|
32
30
|
// Split out each event
|
|
33
|
-
Array.from(JSON.parse(events)).forEach((event
|
|
31
|
+
Array.from(JSON.parse(events)).forEach((event) => {
|
|
34
32
|
checkConditions(element, event);
|
|
35
33
|
});
|
|
36
34
|
};
|
|
37
35
|
|
|
38
|
-
const checkConditions = (element, event) => {
|
|
36
|
+
const checkConditions = (element, event): void | boolean => {
|
|
39
37
|
if ('matches' in event) {
|
|
40
38
|
if (event['matches'] == 'any') runEvent(element, event, 'if');
|
|
41
39
|
else if (element.value == event.matches) runEvent(element, event, 'if');
|
|
@@ -56,7 +54,7 @@ const checkConditions = (element, event) => {
|
|
|
56
54
|
}
|
|
57
55
|
};
|
|
58
56
|
|
|
59
|
-
const runEvent = (element, event, eventType) => {
|
|
57
|
+
const runEvent = (element, event, eventType): void | boolean => {
|
|
60
58
|
if (eventType in event == false) return false;
|
|
61
59
|
|
|
62
60
|
switch (event[eventType]) {
|
|
@@ -65,7 +63,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
65
63
|
const hideElement = document.querySelector(event['target']);
|
|
66
64
|
hideElement.classList.add('js-hide');
|
|
67
65
|
|
|
68
|
-
Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input
|
|
66
|
+
Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input) => {
|
|
69
67
|
input.removeAttribute('required');
|
|
70
68
|
});
|
|
71
69
|
}
|
|
@@ -75,7 +73,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
75
73
|
const showElement = document.querySelector(event['target']);
|
|
76
74
|
showElement.classList.remove('js-hide');
|
|
77
75
|
|
|
78
|
-
Array.from(showElement.querySelectorAll('[data-required]')).forEach((input
|
|
76
|
+
Array.from(showElement.querySelectorAll('[data-required]')).forEach((input) => {
|
|
79
77
|
if (!input.closest('.js-hide')) input.setAttribute('required', 'true');
|
|
80
78
|
});
|
|
81
79
|
}
|
|
@@ -88,7 +86,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
88
86
|
document.querySelector(`${event['target']}`).dispatchEvent(theEvent);
|
|
89
87
|
break;
|
|
90
88
|
case 'setAttribute':
|
|
91
|
-
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element
|
|
89
|
+
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {
|
|
92
90
|
element.setAttribute(event['attribute'], event['value']);
|
|
93
91
|
});
|
|
94
92
|
break;
|
|
@@ -96,7 +94,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
96
94
|
document.querySelector(`${event['target']}`).focus();
|
|
97
95
|
break;
|
|
98
96
|
case 'removeAttribute':
|
|
99
|
-
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element
|
|
97
|
+
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {
|
|
100
98
|
element.removeAttribute(event['attribute']);
|
|
101
99
|
});
|
|
102
100
|
break;
|
|
@@ -119,13 +117,13 @@ const runEvent = (element, event, eventType) => {
|
|
|
119
117
|
}
|
|
120
118
|
};
|
|
121
119
|
|
|
122
|
-
const populateForm = function (element, event) {
|
|
120
|
+
const populateForm = function (element, event): void {
|
|
123
121
|
const values = JSON.parse(element.getAttribute('data-values'));
|
|
124
122
|
const form = document.querySelector(event['target']);
|
|
125
123
|
|
|
126
124
|
if (!values) return false;
|
|
127
125
|
|
|
128
|
-
Object.keys(values).forEach((field
|
|
126
|
+
Object.keys(values).forEach((field) => {
|
|
129
127
|
if (document.getElementById(field) && document.getElementById(field).tagName == 'SPAN')
|
|
130
128
|
document.getElementById(field).innerHTML = values[field];
|
|
131
129
|
|
|
@@ -134,7 +132,7 @@ const populateForm = function (element, event) {
|
|
|
134
132
|
|
|
135
133
|
if (element.hasAttribute('data-lock-fields')) form.querySelector(`select[name="${field}"]`).disabled = true;
|
|
136
134
|
} else if (form.querySelector(`input[name="${field}"][type="radio"][value="${values[field]}"]`)) {
|
|
137
|
-
Array.from(form.querySelectorAll(`input[name="${field}"][type="radio"]`)).forEach(function (input
|
|
135
|
+
Array.from(form.querySelectorAll(`input[name="${field}"][type="radio"]`)).forEach(function (input) {
|
|
138
136
|
input.disabled = true;
|
|
139
137
|
});
|
|
140
138
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
function fileupload(fileupload: Element, wrapper: Element) {
|
|
1
|
+
function fileupload(fileupload: Element, wrapper: Element): void {
|
|
3
2
|
const filesWrapper = wrapper.querySelector('.files');
|
|
4
3
|
const dropArea = wrapper.querySelector('.drop-area');
|
|
5
4
|
const input = fileupload.querySelector('input');
|
|
@@ -11,7 +10,7 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
11
10
|
const cloneInput = input.cloneNode();
|
|
12
11
|
dropArea.append(cloneInput);
|
|
13
12
|
|
|
14
|
-
const checkFileExt = function (filename) {
|
|
13
|
+
const checkFileExt = function (filename): boolean {
|
|
15
14
|
if (!input.hasAttribute('accept')) return true;
|
|
16
15
|
|
|
17
16
|
const nameExtension = filename.split('.').pop();
|
|
@@ -24,8 +23,6 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
24
23
|
|
|
25
24
|
wrapper.addEventListener('click', (event) => {
|
|
26
25
|
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {
|
|
27
|
-
const button = event.target.closest('.btn-primary');
|
|
28
|
-
|
|
29
26
|
// If the input allows multiples then use the buffer clone input
|
|
30
27
|
|
|
31
28
|
errorMsgExt.classList.remove('d-block');
|
|
@@ -52,11 +49,14 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
52
49
|
|
|
53
50
|
const changeEvent = new Event('change');
|
|
54
51
|
input.dispatchEvent(changeEvent);
|
|
52
|
+
|
|
53
|
+
const fileRemovedEvent = new CustomEvent('fileRemoved', { detail: { removedFile: button?.dataset.file } });
|
|
54
|
+
fileupload.dispatchEvent(fileRemovedEvent);
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
// Buffer input change event
|
|
59
|
-
cloneInput.addEventListener('change', (
|
|
59
|
+
cloneInput.addEventListener('change', () => {
|
|
60
60
|
if (input.hasAttribute('multiple')) {
|
|
61
61
|
const filesArray = [...input.files, ...cloneInput.files];
|
|
62
62
|
|
|
@@ -92,19 +92,19 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
92
92
|
input.dispatchEvent(changeEvent);
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
cloneInput.addEventListener('dragenter', (
|
|
95
|
+
cloneInput.addEventListener('dragenter', () => {
|
|
96
96
|
cloneInput.classList.add('focus');
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
-
cloneInput.addEventListener('dragleave', (
|
|
99
|
+
cloneInput.addEventListener('dragleave', () => {
|
|
100
100
|
cloneInput.classList.remove('focus');
|
|
101
101
|
});
|
|
102
102
|
|
|
103
|
-
cloneInput.addEventListener('drop', (
|
|
103
|
+
cloneInput.addEventListener('drop', () => {
|
|
104
104
|
cloneInput.classList.remove('focus');
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
input.addEventListener('change', (
|
|
107
|
+
input.addEventListener('change', () => {
|
|
108
108
|
if (input.files.length == 1) {
|
|
109
109
|
const file = input.files[0];
|
|
110
110
|
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
function filterlist(list: Element, input: Element) {
|
|
1
|
+
function filterlist(list: Element, input: Element): void {
|
|
3
2
|
addFilterlistEventListeners(list, input);
|
|
4
3
|
}
|
|
5
4
|
|
|
6
|
-
function addFilterlistEventListeners(list: Element, input: Element) {
|
|
5
|
+
function addFilterlistEventListeners(list: Element, input: Element): void {
|
|
7
6
|
let timer;
|
|
8
7
|
|
|
9
|
-
input.addEventListener('keyup', (
|
|
8
|
+
input.addEventListener('keyup', () => {
|
|
10
9
|
clearTimeout(timer);
|
|
11
10
|
timer = setTimeout(function () {
|
|
12
11
|
filterTheList(list, input.value);
|
|
13
12
|
}, 500);
|
|
14
13
|
});
|
|
15
14
|
|
|
16
|
-
input.addEventListener('change', (
|
|
15
|
+
input.addEventListener('change', () => {
|
|
17
16
|
clearTimeout(timer);
|
|
18
17
|
|
|
19
18
|
filterTheList(list, input.value);
|
|
20
19
|
});
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
export const filterTheList = function (list: Element, searchTerm) {
|
|
24
|
-
Array.from(list.querySelectorAll(':scope > li')).forEach((item
|
|
22
|
+
export const filterTheList = function (list: Element, searchTerm): void {
|
|
23
|
+
Array.from(list.querySelectorAll(':scope > li')).forEach((item) => {
|
|
25
24
|
const content = item.textContent.toLowerCase();
|
|
26
25
|
|
|
27
26
|
item.classList.add('d-none');
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
// Create a link between two input/selects with one acting as setting a minimum value and the second a maximum
|
|
3
2
|
// The link between the two will prevent the max input field form setting a lower value than the min and vice versa
|
|
4
|
-
function inputRange(inputWrapper) {
|
|
3
|
+
function inputRange(inputWrapper): void {
|
|
5
4
|
inputWrapper.addEventListener(
|
|
6
5
|
'change',
|
|
7
|
-
function (
|
|
6
|
+
function () {
|
|
8
7
|
const min = parseInt(inputWrapper.querySelector('[data-min] select,[data-min] input').value);
|
|
9
8
|
const max = parseInt(inputWrapper.querySelector('[data-max] select,[data-max] input').value);
|
|
10
9
|
|
|
11
10
|
// Set attributes for input fields
|
|
12
|
-
Array.from(inputWrapper.querySelectorAll('[data-min] input')).forEach((input
|
|
11
|
+
Array.from(inputWrapper.querySelectorAll('[data-min] input')).forEach((input) => {
|
|
13
12
|
input.setAttribute('max', max);
|
|
14
13
|
});
|
|
15
14
|
|
|
16
|
-
Array.from(inputWrapper.querySelectorAll('[data-max] input')).forEach((input
|
|
15
|
+
Array.from(inputWrapper.querySelectorAll('[data-max] input')).forEach((input) => {
|
|
17
16
|
input.setAttribute('min', min);
|
|
18
17
|
});
|
|
19
18
|
|
|
20
19
|
// Hide select options if they are higher or lower than the min and max values
|
|
21
|
-
Array.from(inputWrapper.querySelectorAll('[data-min] select option')).forEach((option
|
|
20
|
+
Array.from(inputWrapper.querySelectorAll('[data-min] select option')).forEach((option) => {
|
|
22
21
|
if (parseInt(option.getAttribute('value')) > max) option.classList.add('d-none');
|
|
23
22
|
else option.classList.remove('d-none');
|
|
24
23
|
});
|
|
25
24
|
|
|
26
|
-
Array.from(inputWrapper.querySelectorAll('[data-max] select option')).forEach((option
|
|
25
|
+
Array.from(inputWrapper.querySelectorAll('[data-max] select option')).forEach((option) => {
|
|
27
26
|
if (parseInt(option.getAttribute('value')) < min) option.classList.add('d-none');
|
|
28
27
|
else option.classList.remove('d-none');
|
|
29
28
|
});
|
|
@@ -32,10 +31,10 @@ function inputRange(inputWrapper) {
|
|
|
32
31
|
);
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
function inputRedirect(inputWrapper) {
|
|
34
|
+
function inputRedirect(inputWrapper): void {
|
|
36
35
|
inputWrapper.addEventListener(
|
|
37
36
|
'change',
|
|
38
|
-
function (
|
|
37
|
+
function () {
|
|
39
38
|
if (inputWrapper.matches('[data-value-if]')) {
|
|
40
39
|
const url = inputWrapper.getAttribute('data-redirect');
|
|
41
40
|
const desiredValue = inputWrapper.getAttribute('data-value-if');
|
|
@@ -50,7 +49,7 @@ function inputRedirect(inputWrapper) {
|
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
//
|
|
53
|
-
function multipleFileUploads(wrapper) {
|
|
52
|
+
function multipleFileUploads(wrapper): void {
|
|
54
53
|
const fileTenplate = wrapper.querySelector('.row');
|
|
55
54
|
const clone = fileTenplate.cloneNode(true);
|
|
56
55
|
const addButton = wrapper.querySelector('[data-add]');
|
|
@@ -94,17 +93,17 @@ function multipleFileUploads(wrapper) {
|
|
|
94
93
|
}
|
|
95
94
|
|
|
96
95
|
// Acts as an overall initialise function to trigger other functions.
|
|
97
|
-
function form(formElement) {
|
|
96
|
+
function form(formElement): void {
|
|
98
97
|
// Check for input range groups
|
|
99
|
-
Array.from(formElement.querySelectorAll('[data-input-range]')).forEach((arrayElement
|
|
98
|
+
Array.from(formElement.querySelectorAll('[data-input-range]')).forEach((arrayElement) => {
|
|
100
99
|
inputRange(arrayElement);
|
|
101
100
|
});
|
|
102
101
|
|
|
103
|
-
Array.from(formElement.querySelectorAll('[data-redirect]')).forEach((arrayElement
|
|
102
|
+
Array.from(formElement.querySelectorAll('[data-redirect]')).forEach((arrayElement) => {
|
|
104
103
|
inputRedirect(arrayElement);
|
|
105
104
|
});
|
|
106
105
|
|
|
107
|
-
Array.from(formElement.querySelectorAll('.multiple-file-uploads')).forEach((arrayElement
|
|
106
|
+
Array.from(formElement.querySelectorAll('.multiple-file-uploads')).forEach((arrayElement) => {
|
|
108
107
|
multipleFileUploads(arrayElement);
|
|
109
108
|
});
|
|
110
109
|
|
|
@@ -129,11 +128,11 @@ function form(formElement) {
|
|
|
129
128
|
// When a form is updated we may want to update some of the existing input fields; setting active fields when some data is selected.
|
|
130
129
|
formElement.addEventListener(
|
|
131
130
|
'change',
|
|
132
|
-
function (
|
|
131
|
+
function () {
|
|
133
132
|
// Remove disabled attribute when a pre-selected input field equals a certain value
|
|
134
133
|
Array.from(
|
|
135
134
|
formElement.querySelectorAll('select[data-activeif][data-equals],input[data-activeif][data-equals]')
|
|
136
|
-
).forEach((arrayElement
|
|
135
|
+
).forEach((arrayElement) => {
|
|
137
136
|
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
138
137
|
const selector = arrayElement.dataset.activeif;
|
|
139
138
|
const value = arrayElement.dataset.equals;
|
|
@@ -149,7 +148,7 @@ function form(formElement) {
|
|
|
149
148
|
|
|
150
149
|
// Show this input wrapper when a pre-selected input field equals a certain value
|
|
151
150
|
Array.from(formElement.querySelectorAll('.form-control__wrapper[data-displayif][data-equals]')).forEach(
|
|
152
|
-
(arrayElement
|
|
151
|
+
(arrayElement) => {
|
|
153
152
|
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
154
153
|
const selector = arrayElement.dataset.activeif;
|
|
155
154
|
const value = arrayElement.dataset.equals;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
/**
|
|
3
2
|
* Global helper functions to help maintain and enhance framework elements.
|
|
4
3
|
* @module Helpers
|
|
@@ -8,22 +7,20 @@
|
|
|
8
7
|
* Add global classes used by the CSS and later JavaScript.
|
|
9
8
|
* @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.
|
|
10
9
|
*/
|
|
11
|
-
export const addBodyClasses = (body) => {
|
|
10
|
+
export const addBodyClasses = (body): void => {
|
|
12
11
|
body.classList.add('js-enabled');
|
|
13
12
|
|
|
14
13
|
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
|
|
15
14
|
body.classList.add('ie');
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
return null;
|
|
19
16
|
};
|
|
20
17
|
|
|
21
18
|
/**
|
|
22
19
|
* Add global events.
|
|
23
20
|
* @param {HTMLElement} body Dom element, this doesn't have to be the body but it is recommended.
|
|
24
21
|
*/
|
|
25
|
-
export const addGlobalEvents = (body) => {
|
|
26
|
-
const checkElements = function (hash) {
|
|
22
|
+
export const addGlobalEvents = (body): void => {
|
|
23
|
+
const checkElements = function (hash): void {
|
|
27
24
|
const label = document.querySelector(`label[for="${hash.replace('#', '')}"]`);
|
|
28
25
|
const summary = document.querySelector(hash + ' summary');
|
|
29
26
|
const dialog = document.querySelector(`dialog${hash}`);
|
|
@@ -62,7 +59,7 @@ export const addGlobalEvents = (body) => {
|
|
|
62
59
|
const form = event.target;
|
|
63
60
|
|
|
64
61
|
// Reset password types
|
|
65
|
-
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input
|
|
62
|
+
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {
|
|
66
63
|
input.setAttribute('type', 'password');
|
|
67
64
|
});
|
|
68
65
|
|
|
@@ -91,16 +88,14 @@ export const addGlobalEvents = (body) => {
|
|
|
91
88
|
}
|
|
92
89
|
});
|
|
93
90
|
|
|
94
|
-
Array.from(document.querySelectorAll('label progress')).forEach((progress
|
|
91
|
+
Array.from(document.querySelectorAll('label progress')).forEach((progress) => {
|
|
95
92
|
const label = progress.closest('label');
|
|
96
93
|
|
|
97
94
|
label.setAttribute('data-percent', progress.getAttribute('value'));
|
|
98
95
|
});
|
|
99
|
-
|
|
100
|
-
return null;
|
|
101
96
|
};
|
|
102
97
|
|
|
103
|
-
export const isNumeric = function (str) {
|
|
98
|
+
export const isNumeric = function (str): any {
|
|
104
99
|
if (typeof str != 'string') return false; // we only process strings!
|
|
105
100
|
return (
|
|
106
101
|
!isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
|
|
@@ -108,17 +103,17 @@ export const isNumeric = function (str) {
|
|
|
108
103
|
); // ...and ensure strings of whitespace fail
|
|
109
104
|
};
|
|
110
105
|
|
|
111
|
-
export const zeroPad = (num, places) => String(num).padStart(places, '0');
|
|
106
|
+
export const zeroPad = (num, places): any => String(num).padStart(places, '0');
|
|
112
107
|
|
|
113
|
-
export const ucfirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
114
|
-
export const ucwords = (str) =>
|
|
108
|
+
export const ucfirst = (str): any => str.charAt(0).toUpperCase() + str.slice(1);
|
|
109
|
+
export const ucwords = (str): any =>
|
|
115
110
|
str
|
|
116
111
|
.split(' ')
|
|
117
112
|
.map((s) => ucfirst(s))
|
|
118
113
|
.join(' ');
|
|
119
|
-
export const unsnake = (str) => str.replace(/_/g, ' ');
|
|
120
|
-
export const snake = (str) => str.replace(/ /g, '_');
|
|
121
|
-
export const safeID = function (str) {
|
|
114
|
+
export const unsnake = (str): any => str.replace(/_/g, ' ');
|
|
115
|
+
export const snake = (str): any => str.replace(/ /g, '_');
|
|
116
|
+
export const safeID = function (str): any {
|
|
122
117
|
str = str.toLowerCase();
|
|
123
118
|
str = snake(str);
|
|
124
119
|
str = str.replace(/\W/g, '');
|
|
@@ -126,7 +121,7 @@ export const safeID = function (str) {
|
|
|
126
121
|
return str;
|
|
127
122
|
};
|
|
128
123
|
|
|
129
|
-
export const numberOfDays = function (startDateString: string, endDateString: string) {
|
|
124
|
+
export const numberOfDays = function (startDateString: string, endDateString: string): number {
|
|
130
125
|
const convertStart = startDateString.split('/');
|
|
131
126
|
const convertEnd = endDateString.split('/');
|
|
132
127
|
const dateStart: any = new Date(convertStart[1] + '/' + convertStart[0] + '/' + convertStart[2]);
|
|
@@ -145,15 +140,17 @@ export const numberOfDays = function (startDateString: string, endDateString: st
|
|
|
145
140
|
return numberOfDays;
|
|
146
141
|
};
|
|
147
142
|
// Used to get values from nested json objects
|
|
148
|
-
export const resolvePath = (object, path, defaultValue) =>
|
|
143
|
+
export const resolvePath = (object, path, defaultValue): any =>
|
|
149
144
|
path
|
|
145
|
+
// eslint-disable-next-line no-useless-escape
|
|
150
146
|
.split(/[\.\[\]\'\"]/)
|
|
151
147
|
.filter((p) => p)
|
|
152
148
|
.reduce((o, p) => (o ? o[p] : defaultValue), object);
|
|
153
149
|
|
|
154
|
-
export const isTraversable = (o)
|
|
150
|
+
export const isTraversable = (o): Array =>
|
|
151
|
+
Array.isArray(o) || (o !== null && ['function', 'object'].includes(typeof o));
|
|
155
152
|
|
|
156
|
-
export const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY) => {
|
|
153
|
+
export const getSwipeDirection = (touchstartX, touchstartY, touchendX, touchendY): string => {
|
|
157
154
|
const limit = Math.tan(((45 * 1.5) / 180) * Math.PI);
|
|
158
155
|
const pageWidth = window.innerWidth || document.body.clientWidth;
|
|
159
156
|
const treshold = Math.max(1, Math.floor(0.01 * pageWidth));
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import hibpCheck from '../vendor/hibp';
|
|
1
|
+
import hibpCheck from '../vendor/hibp.js';
|
|
3
2
|
|
|
4
|
-
const extendInputs = (body) => {
|
|
5
|
-
function loadInput() {
|
|
3
|
+
const extendInputs = (body): void => {
|
|
4
|
+
function loadInput(): void {
|
|
6
5
|
// maxlength counter init
|
|
7
|
-
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input
|
|
6
|
+
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
|
|
8
7
|
const wrapper = input.parentElement;
|
|
9
8
|
setMaxlengthVars(input, wrapper);
|
|
10
9
|
});
|
|
11
10
|
|
|
12
|
-
Array.from(document.querySelectorAll('label input')).forEach((input
|
|
11
|
+
Array.from(document.querySelectorAll('label input')).forEach((input) => {
|
|
13
12
|
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
14
13
|
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
15
14
|
input.parentElement.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
@@ -21,14 +20,14 @@ const extendInputs = (body) => {
|
|
|
21
20
|
if (document.querySelector('input[type="date"]')) {
|
|
22
21
|
const today = new Date();
|
|
23
22
|
|
|
24
|
-
function formatDate(date) {
|
|
23
|
+
function formatDate(date): string {
|
|
25
24
|
const year = date.getFullYear();
|
|
26
25
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
27
26
|
const day = String(date.getDate()).padStart(2, '0');
|
|
28
27
|
return `${year}-${month}-${day}`;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
Array.from(document.querySelectorAll('input[type="date"]')).forEach((input
|
|
30
|
+
Array.from(document.querySelectorAll('input[type="date"]')).forEach((input) => {
|
|
32
31
|
const startDate = today;
|
|
33
32
|
|
|
34
33
|
if (input.hasAttribute('data-start')) {
|
|
@@ -48,7 +47,7 @@ const extendInputs = (body) => {
|
|
|
48
47
|
if (input.hasAttribute('data-allowed-days')) {
|
|
49
48
|
const allowedDays = JSON.parse(`[${input.getAttribute('data-allowed-days')}]`);
|
|
50
49
|
|
|
51
|
-
input.addEventListener('input', function (
|
|
50
|
+
input.addEventListener('input', function () {
|
|
52
51
|
const day = new Date(this.value).getUTCDay();
|
|
53
52
|
|
|
54
53
|
if (allowedDays.includes(day)) input.setCustomValidity('');
|
|
@@ -63,7 +62,7 @@ const extendInputs = (body) => {
|
|
|
63
62
|
loadInput();
|
|
64
63
|
}
|
|
65
64
|
|
|
66
|
-
document.onreadystatechange = () => {
|
|
65
|
+
document.onreadystatechange = (): void => {
|
|
67
66
|
if (document.readyState === 'complete') {
|
|
68
67
|
loadInput();
|
|
69
68
|
}
|
|
@@ -72,7 +71,6 @@ const extendInputs = (body) => {
|
|
|
72
71
|
body.addEventListener('input', (event) => {
|
|
73
72
|
if (event && event.target instanceof HTMLElement && event.target.closest('input,textarea,select')) {
|
|
74
73
|
const input = event.target.closest('input,textarea,select');
|
|
75
|
-
const wrapper = input.parentElement;
|
|
76
74
|
|
|
77
75
|
// Output the color hex
|
|
78
76
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
|
|
@@ -98,13 +96,12 @@ const extendInputs = (body) => {
|
|
|
98
96
|
|
|
99
97
|
if (event && event.target instanceof HTMLElement && event.target.closest('dialog [type="radio"]')) {
|
|
100
98
|
const dialog = event.target.closest('dialog');
|
|
101
|
-
const radio = event.target.closest('dialog [type="radio"]');
|
|
102
99
|
|
|
103
|
-
Array.from(dialog.querySelectorAll('[type="radio"][autofocus]')).forEach((input
|
|
100
|
+
Array.from(dialog.querySelectorAll('[type="radio"][autofocus]')).forEach((input) => {
|
|
104
101
|
input.removeAttribute('autofocus');
|
|
105
102
|
});
|
|
106
103
|
|
|
107
|
-
Array.from(dialog.querySelectorAll('[type="radio"]:checked')).forEach((input
|
|
104
|
+
Array.from(dialog.querySelectorAll('[type="radio"]:checked')).forEach((input) => {
|
|
108
105
|
input.setAttribute('autofocus', true);
|
|
109
106
|
});
|
|
110
107
|
}
|
|
@@ -132,7 +129,7 @@ const extendInputs = (body) => {
|
|
|
132
129
|
});
|
|
133
130
|
};
|
|
134
131
|
|
|
135
|
-
export const setMaxlengthVars = (input) => {
|
|
132
|
+
export const setMaxlengthVars = (input): void => {
|
|
136
133
|
const wrapper = input.parentElement;
|
|
137
134
|
const maxlength = input.getAttribute('maxlength');
|
|
138
135
|
|
|
@@ -148,14 +145,14 @@ export const setMaxlengthVars = (input) => {
|
|
|
148
145
|
span.setAttribute('data-count', input.value.length);
|
|
149
146
|
};
|
|
150
147
|
|
|
151
|
-
export const changeType = (input, type) => {
|
|
148
|
+
export const changeType = (input, type): void => {
|
|
152
149
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'password')
|
|
153
150
|
input.setAttribute('data-password-type', true);
|
|
154
151
|
|
|
155
152
|
input.setAttribute('type', type);
|
|
156
153
|
};
|
|
157
154
|
|
|
158
|
-
export const checkPWDStrength = (input, check = 'no') => {
|
|
155
|
+
export const checkPWDStrength = (input, check = 'no'): void => {
|
|
159
156
|
const pwdChecker = document.getElementById(input.getAttribute('data-strength-checker'));
|
|
160
157
|
const password = input.value;
|
|
161
158
|
const minChars = input.hasAttribute('minlength') ? input.getAttribute('minlength') : 12;
|
|
@@ -187,7 +184,7 @@ export const checkPWDStrength = (input, check = 'no') => {
|
|
|
187
184
|
checkhibpCheck(event, input);
|
|
188
185
|
});
|
|
189
186
|
|
|
190
|
-
function checkhibpCheck(event, input) {
|
|
187
|
+
function checkhibpCheck(event, input): void {
|
|
191
188
|
if (event.detail) {
|
|
192
189
|
// found
|
|
193
190
|
checkPWDStrength(input, 'danger');
|
package/assets/ts/modules/nav.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Array.from(element.querySelectorAll('details')).forEach((detail, index) => {
|
|
1
|
+
const navbar = (element): void => {
|
|
2
|
+
Array.from(element.querySelectorAll('details')).forEach((detail) => {
|
|
4
3
|
detail.addEventListener(
|
|
5
4
|
'mouseenter',
|
|
6
|
-
function (
|
|
5
|
+
function () {
|
|
7
6
|
if (window.matchMedia('(min-width: 62em)').matches) detail.setAttribute('open', 'true');
|
|
8
7
|
},
|
|
9
8
|
false
|
|
@@ -11,7 +10,7 @@ const navbar = (element) => {
|
|
|
11
10
|
|
|
12
11
|
detail.addEventListener(
|
|
13
12
|
'mouseleave',
|
|
14
|
-
function (
|
|
13
|
+
function () {
|
|
15
14
|
if (window.matchMedia('(min-width: 62em)').matches) detail.removeAttribute('open');
|
|
16
15
|
},
|
|
17
16
|
false
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
function setupNotification(element) {
|
|
1
|
+
function setupNotification(element): void {
|
|
3
2
|
// Add toast to notification holder
|
|
4
3
|
if (element.hasAttribute('data-type') && element.getAttribute('data-type') == 'toast') {
|
|
5
4
|
let holder = document.querySelector('.notification__holder');
|
|
@@ -40,27 +39,27 @@ function setupNotification(element) {
|
|
|
40
39
|
closeNotification(element);
|
|
41
40
|
}, timeOut);
|
|
42
41
|
|
|
43
|
-
element.addEventListener('mouseenter', (
|
|
42
|
+
element.addEventListener('mouseenter', () => {
|
|
44
43
|
timer.pause();
|
|
45
44
|
});
|
|
46
45
|
|
|
47
|
-
element.addEventListener('mouseleave', (
|
|
46
|
+
element.addEventListener('mouseleave', () => {
|
|
48
47
|
timer.resume();
|
|
49
48
|
});
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
function Timer(callback, delay) {
|
|
52
|
+
function Timer(callback, delay): void {
|
|
54
53
|
let timerId,
|
|
55
54
|
start,
|
|
56
55
|
remaining = delay;
|
|
57
56
|
|
|
58
|
-
this.pause = function () {
|
|
57
|
+
this.pause = function (): void {
|
|
59
58
|
window.clearTimeout(timerId);
|
|
60
59
|
remaining -= new Date() - start;
|
|
61
60
|
};
|
|
62
61
|
|
|
63
|
-
this.resume = function () {
|
|
62
|
+
this.resume = function (): void {
|
|
64
63
|
start = new Date();
|
|
65
64
|
window.clearTimeout(timerId);
|
|
66
65
|
timerId = window.setTimeout(callback, remaining);
|
|
@@ -69,7 +68,7 @@ function Timer(callback, delay) {
|
|
|
69
68
|
this.resume();
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
export const closeNotification = function (element) {
|
|
71
|
+
export const closeNotification = function (element): void {
|
|
73
72
|
element.classList.add('d-none');
|
|
74
73
|
};
|
|
75
74
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
function orderlist(list) {
|
|
1
|
+
function orderlist(list): void {
|
|
3
2
|
const randID = 'list_' + Math.random().toString(36).substr(2, 9);
|
|
4
3
|
const listItems = list.querySelectorAll('li');
|
|
5
4
|
const listCount = listItems.length;
|
|
@@ -23,13 +22,13 @@ function orderlist(list) {
|
|
|
23
22
|
item.setAttribute('aria-label', `${item.innerText}: ${index + 1} of ${listCount} moveable items`);
|
|
24
23
|
});
|
|
25
24
|
|
|
26
|
-
function setDraggedRow(e) {
|
|
25
|
+
function setDraggedRow(e): void {
|
|
27
26
|
e.dataTransfer.setData('text/plain', e.target.id);
|
|
28
27
|
draggedRow = e.target;
|
|
29
28
|
e.target.classList.add('li--dragging');
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
function resetItems() {
|
|
31
|
+
function resetItems(): void {
|
|
33
32
|
// Re label the rows
|
|
34
33
|
Array.from(list.querySelectorAll('li')).forEach((item, index) => {
|
|
35
34
|
item.classList.remove('li--dragging');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const createPaginationButttons = function (controller: any, pagination: any) {
|
|
1
|
+
const createPaginationButttons = function (controller: any, pagination: any): boolean {
|
|
2
2
|
if (!controller.getAttribute('data-pages')) return false;
|
|
3
3
|
|
|
4
4
|
if (!controller.getAttribute('data-page')) controller.setAttribute('data-page', 1);
|