@iamproperty/components 7.1.0--beta7 → 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.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 +8 -9
- 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 +3 -3
- 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 +108 -1
- 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 +4 -1
- package/assets/sass/_components.scss +323 -100
- package/assets/sass/_corefiles.scss +42 -18
- package/assets/sass/_elements.scss +98 -18
- package/assets/sass/_example.scss +61 -0
- package/assets/sass/_func.scss +5 -13
- package/assets/sass/_functions/bs_utilities.scss +43 -39
- package/assets/sass/_functions/functions.scss +66 -52
- package/assets/sass/_functions/mixins.scss +84 -100
- package/assets/sass/_functions/utility-mixins.scss +56 -44
- package/assets/sass/_functions/variables.scss +90 -1659
- package/assets/sass/_functions/variables_old.scss +1701 -0
- package/assets/sass/_grid.scss +19 -5
- 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 +15 -5
- package/assets/sass/_utility-mixins.scss +6 -1
- 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 +7 -20
- 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 +128 -97
- 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 +7 -3
- package/assets/sass/components/testimonial.scss +7 -7
- package/assets/sass/components/timeline.scss +1 -1
- package/assets/sass/core.scss +13 -4
- package/assets/sass/elements/admin-panel.scss +199 -185
- 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 +157 -151
- 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 +0 -1
- package/assets/sass/error.scss +15 -13
- package/assets/sass/foundations/reboot.scss +176 -170
- package/assets/sass/foundations/root.scss +136 -125
- package/assets/sass/helpers/max-height.scss +2 -2
- package/assets/sass/main.scss +14 -6
- 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 +14 -16
- 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 +152 -19
- 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 +5 -8
- 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/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,3 +1,4 @@
|
|
|
1
|
+
import { ucfirst, unsnake } from './helpers.js';
|
|
1
2
|
// #region Functions that setup and trigger other functions
|
|
2
3
|
export const addClasses = (chartElement, chartOuter) => {
|
|
3
4
|
// add colour classes
|
|
@@ -16,6 +17,10 @@ export const addClasses = (chartElement, chartOuter) => {
|
|
|
16
17
|
return true;
|
|
17
18
|
};
|
|
18
19
|
export const setupChart = (chartElement, chartOuter, tableElement) => {
|
|
20
|
+
if (chartElement.tagName == 'IAM-DOUGHNUTCHART') {
|
|
21
|
+
setupDoughnutChart(chartElement, chartOuter, tableElement);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
19
24
|
// #region Reset the chart
|
|
20
25
|
// empty divs to re-populate
|
|
21
26
|
const chartKey = chartOuter.querySelector('.chart__key');
|
|
@@ -39,6 +44,21 @@ export const setupChart = (chartElement, chartOuter, tableElement) => {
|
|
|
39
44
|
}
|
|
40
45
|
return true;
|
|
41
46
|
};
|
|
47
|
+
export const setupDoughnutChart = (chartElement, chartOuter, tableElement) => {
|
|
48
|
+
// #region Reset the chart
|
|
49
|
+
// empty divs to re-populate
|
|
50
|
+
const chartKey = chartOuter.querySelector('.chart__key');
|
|
51
|
+
chartKey.innerHTML = '';
|
|
52
|
+
// Remove old input fields
|
|
53
|
+
Array.from(chartOuter.querySelectorAll(':scope > input[type="checkbox"],:scope > input[type="radio"]')).map((element) => {
|
|
54
|
+
element.remove();
|
|
55
|
+
});
|
|
56
|
+
// #endregion
|
|
57
|
+
setCellData(chartElement, tableElement);
|
|
58
|
+
createChartKey(chartOuter, tableElement, chartKey);
|
|
59
|
+
createdoughnuts(chartOuter);
|
|
60
|
+
return true;
|
|
61
|
+
};
|
|
42
62
|
// #endregion
|
|
43
63
|
// #region Event handlers and observers
|
|
44
64
|
export const setEventListener = function (chartElement, chartOuter) {
|
|
@@ -81,6 +101,9 @@ export const setEventListener = function (chartElement, chartOuter) {
|
|
|
81
101
|
});
|
|
82
102
|
shadowTable.innerHTML = table.innerHTML;
|
|
83
103
|
setCellData(chartElement, shadowTable);
|
|
104
|
+
if (chartElement.tagName == 'IAM-DOUGHNUTCHART') {
|
|
105
|
+
createdoughnuts(chartOuter);
|
|
106
|
+
}
|
|
84
107
|
});
|
|
85
108
|
};
|
|
86
109
|
export const setEventObservers = function (chartElement, chartOuter) {
|
|
@@ -116,6 +139,14 @@ export const setEventObservers = function (chartElement, chartOuter) {
|
|
|
116
139
|
observer2.observe(chartElement, { attributes: true });
|
|
117
140
|
return true;
|
|
118
141
|
};
|
|
142
|
+
function getCoordinatesForPercent(percent, doughnutCount) {
|
|
143
|
+
// This moves the start point to the top middle point like a clock
|
|
144
|
+
if (doughnutCount > 1)
|
|
145
|
+
percent = percent - 0.25;
|
|
146
|
+
const x = Math.cos(2 * Math.PI * percent);
|
|
147
|
+
const y = Math.sin(2 * Math.PI * percent);
|
|
148
|
+
return [x * 100, y * 100];
|
|
149
|
+
}
|
|
119
150
|
// #endregion
|
|
120
151
|
// #region GET functions
|
|
121
152
|
export const getChartData = function (chartElement) {
|
|
@@ -293,6 +324,7 @@ export const createChartKey = function (chartOuter, tableElement, chartKey) {
|
|
|
293
324
|
return true;
|
|
294
325
|
};
|
|
295
326
|
function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previousInput) {
|
|
327
|
+
var _a;
|
|
296
328
|
const input = document.createElement('input');
|
|
297
329
|
input.setAttribute('name', `${chartID}-dataset-${index}`);
|
|
298
330
|
input.setAttribute('id', `${chartID}-dataset-${index}`);
|
|
@@ -310,12 +342,15 @@ function createChartKeyItem(chartID, index, text, chartKey, chartOuter, previous
|
|
|
310
342
|
label.setAttribute('for', `${chartID}-dataset-${index}`);
|
|
311
343
|
label.setAttribute('data-label', `${text}`);
|
|
312
344
|
label.setAttribute('part', `key`);
|
|
345
|
+
const total = (_a = chartOuter.querySelector(`tbody tr td:nth-child(${index + 1})`)) === null || _a === void 0 ? void 0 : _a.getAttribute('data-numeric');
|
|
346
|
+
label.setAttribute('data-numeric', total);
|
|
313
347
|
label.innerHTML = `${text}`;
|
|
314
348
|
chartKey.append(label);
|
|
315
349
|
return previousInput;
|
|
316
350
|
}
|
|
317
351
|
export const createChartGuidelines = function (chartElement, chartGuidelines) {
|
|
318
|
-
|
|
352
|
+
const { min, max, yaxis } = getChartData(chartElement);
|
|
353
|
+
let { guidelines } = getChartData(chartElement);
|
|
319
354
|
if (!guidelines.length)
|
|
320
355
|
guidelines = yaxis;
|
|
321
356
|
chartGuidelines.innerHTML = '';
|
|
@@ -351,5 +386,77 @@ export const createTooltips = function (chartOuter) {
|
|
|
351
386
|
//title.removeAttribute('title'); // TODO add a supports query for anchor positioning
|
|
352
387
|
});
|
|
353
388
|
};
|
|
389
|
+
export const createdoughnuts = function (chartOuter) {
|
|
390
|
+
let returnString = '';
|
|
391
|
+
const chartInner = chartOuter.querySelector('.chart');
|
|
392
|
+
let doughnutWrapper = chartOuter.querySelector('.doughnuts');
|
|
393
|
+
if (!doughnutWrapper) {
|
|
394
|
+
doughnutWrapper = document.createElement('div');
|
|
395
|
+
doughnutWrapper.setAttribute('class', 'doughnuts');
|
|
396
|
+
chartInner.append(doughnutWrapper);
|
|
397
|
+
}
|
|
398
|
+
Array.from(chartInner.querySelectorAll('tbody tr')).forEach((item, index) => {
|
|
399
|
+
let paths = '';
|
|
400
|
+
let tooltips = '';
|
|
401
|
+
let cumulativePercent = 0;
|
|
402
|
+
let total = 0;
|
|
403
|
+
const titleKey = item.querySelectorAll('td')[0];
|
|
404
|
+
const title = titleKey.innerHTML;
|
|
405
|
+
let doughnutCount = 0;
|
|
406
|
+
const rowTotal = item.getAttribute('data-numeric');
|
|
407
|
+
// Work out the total amount
|
|
408
|
+
Array.from(item.querySelectorAll('td')).forEach((td, subindex) => {
|
|
409
|
+
const display = getComputedStyle(td).display;
|
|
410
|
+
if (subindex != 0 && display != 'none') {
|
|
411
|
+
let value = td.getAttribute('data-numeric');
|
|
412
|
+
value = value.replace('£', '');
|
|
413
|
+
value = value.replace('%', '');
|
|
414
|
+
value = value.replace(',', '');
|
|
415
|
+
value = Number.parseInt(value);
|
|
416
|
+
total += value;
|
|
417
|
+
doughnutCount++;
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
// Create the paths
|
|
421
|
+
Array.from(item.querySelectorAll('td')).forEach((td, subindex) => {
|
|
422
|
+
var _a, _b;
|
|
423
|
+
const display = getComputedStyle(td).display;
|
|
424
|
+
if (subindex != 0 && doughnutCount == 1 && display != 'none') {
|
|
425
|
+
const pathData = `M 0 0 L 100 0 A 100 100 0 1 1 100 -0.01 L 0 0`;
|
|
426
|
+
paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};"></path>`;
|
|
427
|
+
tooltips += `<span class="h5 mb-0" part="popover">${ucfirst(unsnake(td.getAttribute('data-label'))).trim()}<br/>${td.hasAttribute('data-second') ? `${td.getAttribute('data-second-label')}: ${td.getAttribute('data-second')}<br/>` : ''}${(_a = td.querySelector('[part="popover"]')) === null || _a === void 0 ? void 0 : _a.innerHTML}</span>`;
|
|
428
|
+
}
|
|
429
|
+
else if (subindex != 0) {
|
|
430
|
+
let value = td.getAttribute('data-numeric');
|
|
431
|
+
const hide = display == 'none' ? 'display: none;' : '';
|
|
432
|
+
value = value.replace('£', '');
|
|
433
|
+
value = value.replace('%', '');
|
|
434
|
+
value = value.replace(',', '');
|
|
435
|
+
value = Number.parseInt(value);
|
|
436
|
+
const percent = value / total;
|
|
437
|
+
const [startX, startY] = getCoordinatesForPercent(cumulativePercent, doughnutCount);
|
|
438
|
+
const [endX, endY] = getCoordinatesForPercent(cumulativePercent + percent, doughnutCount);
|
|
439
|
+
const largeArcFlag = percent > 0.5 ? 1 : 0; // if the slice is more than 50%, take the large arc (the long way around)
|
|
440
|
+
const pathData = [
|
|
441
|
+
`M 0 0`,
|
|
442
|
+
`L ${startX ? startX.toFixed(0) : 0} ${startY ? startY.toFixed(0) : 0}`, // Move
|
|
443
|
+
`A 100 100 0 ${largeArcFlag} 1 ${endX ? endX.toFixed(0) : 0} ${endY ? endY.toFixed(0) : 0}`, // Arc
|
|
444
|
+
`L 0 0`, // Line
|
|
445
|
+
].join(' ');
|
|
446
|
+
paths += `<path d="${pathData}" style="${td.getAttribute('style')} --path-index: ${subindex};${hide}"></path>`;
|
|
447
|
+
tooltips += `<span class="h5 mb-0" part="popover">${ucfirst(unsnake(td.getAttribute('data-label'))).trim()}<br/>${td.hasAttribute('data-second') ? `${td.getAttribute('data-second-label')}: ${td.getAttribute('data-second')}<br/>` : ''}${(_b = td.querySelector('[part="popover"]')) === null || _b === void 0 ? void 0 : _b.innerHTML}</span>`;
|
|
448
|
+
// each slice starts where the last slice ended, so keep a cumulative percent
|
|
449
|
+
if (display != 'none')
|
|
450
|
+
cumulativePercent += percent;
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
returnString += `<div class="doughnut">
|
|
454
|
+
<svg viewBox="-105 -105 210 210" preserveAspectRatio="none" style="--row-index: ${index + 1};">${paths}</svg>
|
|
455
|
+
<div class="doughnut__title" data-numeric="${rowTotal}"><span class="h5 mb-0">${title}</span></div>
|
|
456
|
+
<div class="tooltips">${tooltips}</div>
|
|
457
|
+
</div>`;
|
|
458
|
+
});
|
|
459
|
+
doughnutWrapper.innerHTML = returnString;
|
|
460
|
+
};
|
|
354
461
|
// #endregion
|
|
355
462
|
export default setupChart;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
const extendDialogs = (body) => {
|
|
3
|
-
Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog
|
|
2
|
+
Array.from(body.querySelectorAll('dialog[open]')).forEach((dialog) => {
|
|
4
3
|
const parent = dialog.closest('.dialog__wrapper');
|
|
5
4
|
if (!parent) {
|
|
6
5
|
dialog.removeAttribute('open');
|
|
@@ -29,7 +28,7 @@ const extendDialogs = (body) => {
|
|
|
29
28
|
dialog.setAttribute('style', `max-width: ${firstWidth}px;`);
|
|
30
29
|
}
|
|
31
30
|
// When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
|
|
32
|
-
Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element
|
|
31
|
+
Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element) => {
|
|
33
32
|
const id = element.getAttribute('data-duplicate');
|
|
34
33
|
const originalInput = document.getElementById(id);
|
|
35
34
|
if (element.checked != originalInput.checked) {
|
|
@@ -50,7 +49,7 @@ const extendDialogs = (body) => {
|
|
|
50
49
|
event.preventDefault();
|
|
51
50
|
dialog.close();
|
|
52
51
|
// Remove active class from exiting active buttons
|
|
53
|
-
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement
|
|
52
|
+
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
|
|
54
53
|
btnElement.classList.remove('active');
|
|
55
54
|
});
|
|
56
55
|
const closeEvent = new CustomEvent('dialog-closed', {
|
|
@@ -69,7 +68,7 @@ const extendDialogs = (body) => {
|
|
|
69
68
|
if (event && event.target instanceof HTMLElement && event.target.closest('button[formmethod="dialog"]')) {
|
|
70
69
|
const dialog = event.target.closest('dialog[open]');
|
|
71
70
|
// Remove active class from exiting active buttons
|
|
72
|
-
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement
|
|
71
|
+
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
|
|
73
72
|
btnElement.classList.remove('active');
|
|
74
73
|
});
|
|
75
74
|
window.dataLayer = window.dataLayer || [];
|
|
@@ -120,7 +119,7 @@ const extendDialogs = (body) => {
|
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
121
|
// Remove active class from exiting active buttons
|
|
123
|
-
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement
|
|
122
|
+
Array.from(document.querySelectorAll('.dialog__wrapper > button')).forEach((btnElement) => {
|
|
124
123
|
btnElement.removeAttribute('aria-expanded');
|
|
125
124
|
});
|
|
126
125
|
if (popover.hasAttribute('open')) {
|
|
@@ -171,7 +170,7 @@ const extendDialogs = (body) => {
|
|
|
171
170
|
!event.target.closest('.dialog__wrapper > button')) {
|
|
172
171
|
if (document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]'))
|
|
173
172
|
document.querySelector('.dialog__wrapper:not([data-keep-open]) > dialog[open]').close();
|
|
174
|
-
Array.from(document.querySelectorAll('.dialog__wrapper:not([data-keep-open]) > button')).forEach((btnElement
|
|
173
|
+
Array.from(document.querySelectorAll('.dialog__wrapper:not([data-keep-open]) > button')).forEach((btnElement) => {
|
|
175
174
|
btnElement.removeAttribute('aria-expanded');
|
|
176
175
|
});
|
|
177
176
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
// Create the event listeners
|
|
3
2
|
const createDynamicEvents = () => {
|
|
4
3
|
// Change event
|
|
@@ -26,7 +25,7 @@ const splitEvents = (element, events) => {
|
|
|
26
25
|
if (!events)
|
|
27
26
|
return false;
|
|
28
27
|
// Split out each event
|
|
29
|
-
Array.from(JSON.parse(events)).forEach((event
|
|
28
|
+
Array.from(JSON.parse(events)).forEach((event) => {
|
|
30
29
|
checkConditions(element, event);
|
|
31
30
|
});
|
|
32
31
|
};
|
|
@@ -62,7 +61,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
62
61
|
if (document.querySelector(event['target'])) {
|
|
63
62
|
const hideElement = document.querySelector(event['target']);
|
|
64
63
|
hideElement.classList.add('js-hide');
|
|
65
|
-
Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input
|
|
64
|
+
Array.from(hideElement.querySelectorAll('[data-required]')).forEach((input) => {
|
|
66
65
|
input.removeAttribute('required');
|
|
67
66
|
});
|
|
68
67
|
}
|
|
@@ -71,7 +70,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
71
70
|
if (document.querySelector(event['target'])) {
|
|
72
71
|
const showElement = document.querySelector(event['target']);
|
|
73
72
|
showElement.classList.remove('js-hide');
|
|
74
|
-
Array.from(showElement.querySelectorAll('[data-required]')).forEach((input
|
|
73
|
+
Array.from(showElement.querySelectorAll('[data-required]')).forEach((input) => {
|
|
75
74
|
if (!input.closest('.js-hide'))
|
|
76
75
|
input.setAttribute('required', 'true');
|
|
77
76
|
});
|
|
@@ -85,7 +84,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
85
84
|
document.querySelector(`${event['target']}`).dispatchEvent(theEvent);
|
|
86
85
|
break;
|
|
87
86
|
case 'setAttribute':
|
|
88
|
-
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element
|
|
87
|
+
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {
|
|
89
88
|
element.setAttribute(event['attribute'], event['value']);
|
|
90
89
|
});
|
|
91
90
|
break;
|
|
@@ -93,7 +92,7 @@ const runEvent = (element, event, eventType) => {
|
|
|
93
92
|
document.querySelector(`${event['target']}`).focus();
|
|
94
93
|
break;
|
|
95
94
|
case 'removeAttribute':
|
|
96
|
-
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element
|
|
95
|
+
Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function (element) {
|
|
97
96
|
element.removeAttribute(event['attribute']);
|
|
98
97
|
});
|
|
99
98
|
break;
|
|
@@ -118,7 +117,7 @@ const populateForm = function (element, event) {
|
|
|
118
117
|
const form = document.querySelector(event['target']);
|
|
119
118
|
if (!values)
|
|
120
119
|
return false;
|
|
121
|
-
Object.keys(values).forEach((field
|
|
120
|
+
Object.keys(values).forEach((field) => {
|
|
122
121
|
if (document.getElementById(field) && document.getElementById(field).tagName == 'SPAN')
|
|
123
122
|
document.getElementById(field).innerHTML = values[field];
|
|
124
123
|
if (form.querySelector(`select[name="${field}"] [value="${values[field]}"]`)) {
|
|
@@ -127,7 +126,7 @@ const populateForm = function (element, event) {
|
|
|
127
126
|
form.querySelector(`select[name="${field}"]`).disabled = true;
|
|
128
127
|
}
|
|
129
128
|
else if (form.querySelector(`input[name="${field}"][type="radio"][value="${values[field]}"]`)) {
|
|
130
|
-
Array.from(form.querySelectorAll(`input[name="${field}"][type="radio"]`)).forEach(function (input
|
|
129
|
+
Array.from(form.querySelectorAll(`input[name="${field}"][type="radio"]`)).forEach(function (input) {
|
|
131
130
|
input.disabled = true;
|
|
132
131
|
});
|
|
133
132
|
form.querySelector(`input[name="${field}"][type="radio"][value="${values[field]}"]`).checked = true;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
function fileupload(fileupload, wrapper) {
|
|
3
2
|
const filesWrapper = wrapper.querySelector('.files');
|
|
4
3
|
const dropArea = wrapper.querySelector('.drop-area');
|
|
@@ -20,7 +19,6 @@ function fileupload(fileupload, wrapper) {
|
|
|
20
19
|
};
|
|
21
20
|
wrapper.addEventListener('click', (event) => {
|
|
22
21
|
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {
|
|
23
|
-
const button = event.target.closest('.btn-primary');
|
|
24
22
|
// If the input allows multiples then use the buffer clone input
|
|
25
23
|
errorMsgExt.classList.remove('d-block');
|
|
26
24
|
errorMsgSize.classList.remove('d-block');
|
|
@@ -41,10 +39,12 @@ function fileupload(fileupload, wrapper) {
|
|
|
41
39
|
input.files = dt.files; // Assign the updates list
|
|
42
40
|
const changeEvent = new Event('change');
|
|
43
41
|
input.dispatchEvent(changeEvent);
|
|
42
|
+
const fileRemovedEvent = new CustomEvent('fileRemoved', { detail: { removedFile: button === null || button === void 0 ? void 0 : button.dataset.file } });
|
|
43
|
+
fileupload.dispatchEvent(fileRemovedEvent);
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
// Buffer input change event
|
|
47
|
-
cloneInput.addEventListener('change', (
|
|
47
|
+
cloneInput.addEventListener('change', () => {
|
|
48
48
|
if (input.hasAttribute('multiple')) {
|
|
49
49
|
const filesArray = [...input.files, ...cloneInput.files];
|
|
50
50
|
const fileNames = [];
|
|
@@ -70,16 +70,16 @@ function fileupload(fileupload, wrapper) {
|
|
|
70
70
|
const changeEvent = new Event('change');
|
|
71
71
|
input.dispatchEvent(changeEvent);
|
|
72
72
|
});
|
|
73
|
-
cloneInput.addEventListener('dragenter', (
|
|
73
|
+
cloneInput.addEventListener('dragenter', () => {
|
|
74
74
|
cloneInput.classList.add('focus');
|
|
75
75
|
});
|
|
76
|
-
cloneInput.addEventListener('dragleave', (
|
|
76
|
+
cloneInput.addEventListener('dragleave', () => {
|
|
77
77
|
cloneInput.classList.remove('focus');
|
|
78
78
|
});
|
|
79
|
-
cloneInput.addEventListener('drop', (
|
|
79
|
+
cloneInput.addEventListener('drop', () => {
|
|
80
80
|
cloneInput.classList.remove('focus');
|
|
81
81
|
});
|
|
82
|
-
input.addEventListener('change', (
|
|
82
|
+
input.addEventListener('change', () => {
|
|
83
83
|
if (input.files.length == 1) {
|
|
84
84
|
const file = input.files[0];
|
|
85
85
|
const size = file.size / 1000;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
function filterlist(list, input) {
|
|
3
2
|
addFilterlistEventListeners(list, input);
|
|
4
3
|
}
|
|
5
4
|
function addFilterlistEventListeners(list, input) {
|
|
6
5
|
let timer;
|
|
7
|
-
input.addEventListener('keyup', (
|
|
6
|
+
input.addEventListener('keyup', () => {
|
|
8
7
|
clearTimeout(timer);
|
|
9
8
|
timer = setTimeout(function () {
|
|
10
9
|
filterTheList(list, input.value);
|
|
11
10
|
}, 500);
|
|
12
11
|
});
|
|
13
|
-
input.addEventListener('change', (
|
|
12
|
+
input.addEventListener('change', () => {
|
|
14
13
|
clearTimeout(timer);
|
|
15
14
|
filterTheList(list, input.value);
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
export const filterTheList = function (list, searchTerm) {
|
|
19
|
-
Array.from(list.querySelectorAll(':scope > li')).forEach((item
|
|
18
|
+
Array.from(list.querySelectorAll(':scope > li')).forEach((item) => {
|
|
20
19
|
const content = item.textContent.toLowerCase();
|
|
21
20
|
item.classList.add('d-none');
|
|
22
21
|
if (content.includes(searchTerm.toLowerCase()))
|
|
@@ -1,25 +1,24 @@
|
|
|
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
3
|
function inputRange(inputWrapper) {
|
|
5
|
-
inputWrapper.addEventListener('change', function (
|
|
4
|
+
inputWrapper.addEventListener('change', function () {
|
|
6
5
|
const min = parseInt(inputWrapper.querySelector('[data-min] select,[data-min] input').value);
|
|
7
6
|
const max = parseInt(inputWrapper.querySelector('[data-max] select,[data-max] input').value);
|
|
8
7
|
// Set attributes for input fields
|
|
9
|
-
Array.from(inputWrapper.querySelectorAll('[data-min] input')).forEach((input
|
|
8
|
+
Array.from(inputWrapper.querySelectorAll('[data-min] input')).forEach((input) => {
|
|
10
9
|
input.setAttribute('max', max);
|
|
11
10
|
});
|
|
12
|
-
Array.from(inputWrapper.querySelectorAll('[data-max] input')).forEach((input
|
|
11
|
+
Array.from(inputWrapper.querySelectorAll('[data-max] input')).forEach((input) => {
|
|
13
12
|
input.setAttribute('min', min);
|
|
14
13
|
});
|
|
15
14
|
// Hide select options if they are higher or lower than the min and max values
|
|
16
|
-
Array.from(inputWrapper.querySelectorAll('[data-min] select option')).forEach((option
|
|
15
|
+
Array.from(inputWrapper.querySelectorAll('[data-min] select option')).forEach((option) => {
|
|
17
16
|
if (parseInt(option.getAttribute('value')) > max)
|
|
18
17
|
option.classList.add('d-none');
|
|
19
18
|
else
|
|
20
19
|
option.classList.remove('d-none');
|
|
21
20
|
});
|
|
22
|
-
Array.from(inputWrapper.querySelectorAll('[data-max] select option')).forEach((option
|
|
21
|
+
Array.from(inputWrapper.querySelectorAll('[data-max] select option')).forEach((option) => {
|
|
23
22
|
if (parseInt(option.getAttribute('value')) < min)
|
|
24
23
|
option.classList.add('d-none');
|
|
25
24
|
else
|
|
@@ -28,7 +27,7 @@ function inputRange(inputWrapper) {
|
|
|
28
27
|
}, false);
|
|
29
28
|
}
|
|
30
29
|
function inputRedirect(inputWrapper) {
|
|
31
|
-
inputWrapper.addEventListener('change', function (
|
|
30
|
+
inputWrapper.addEventListener('change', function () {
|
|
32
31
|
if (inputWrapper.matches('[data-value-if]')) {
|
|
33
32
|
const url = inputWrapper.getAttribute('data-redirect');
|
|
34
33
|
const desiredValue = inputWrapper.getAttribute('data-value-if');
|
|
@@ -72,13 +71,13 @@ function multipleFileUploads(wrapper) {
|
|
|
72
71
|
// Acts as an overall initialise function to trigger other functions.
|
|
73
72
|
function form(formElement) {
|
|
74
73
|
// Check for input range groups
|
|
75
|
-
Array.from(formElement.querySelectorAll('[data-input-range]')).forEach((arrayElement
|
|
74
|
+
Array.from(formElement.querySelectorAll('[data-input-range]')).forEach((arrayElement) => {
|
|
76
75
|
inputRange(arrayElement);
|
|
77
76
|
});
|
|
78
|
-
Array.from(formElement.querySelectorAll('[data-redirect]')).forEach((arrayElement
|
|
77
|
+
Array.from(formElement.querySelectorAll('[data-redirect]')).forEach((arrayElement) => {
|
|
79
78
|
inputRedirect(arrayElement);
|
|
80
79
|
});
|
|
81
|
-
Array.from(formElement.querySelectorAll('.multiple-file-uploads')).forEach((arrayElement
|
|
80
|
+
Array.from(formElement.querySelectorAll('.multiple-file-uploads')).forEach((arrayElement) => {
|
|
82
81
|
multipleFileUploads(arrayElement);
|
|
83
82
|
});
|
|
84
83
|
// Check the file size of a file when uploaded in case it exceeds the max file size set
|
|
@@ -95,9 +94,9 @@ function form(formElement) {
|
|
|
95
94
|
}
|
|
96
95
|
}, false);
|
|
97
96
|
// When a form is updated we may want to update some of the existing input fields; setting active fields when some data is selected.
|
|
98
|
-
formElement.addEventListener('change', function (
|
|
97
|
+
formElement.addEventListener('change', function () {
|
|
99
98
|
// Remove disabled attribute when a pre-selected input field equals a certain value
|
|
100
|
-
Array.from(formElement.querySelectorAll('select[data-activeif][data-equals],input[data-activeif][data-equals]')).forEach((arrayElement
|
|
99
|
+
Array.from(formElement.querySelectorAll('select[data-activeif][data-equals],input[data-activeif][data-equals]')).forEach((arrayElement) => {
|
|
101
100
|
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
102
101
|
const selector = arrayElement.dataset.activeif;
|
|
103
102
|
const value = arrayElement.dataset.equals;
|
|
@@ -111,7 +110,7 @@ function form(formElement) {
|
|
|
111
110
|
}
|
|
112
111
|
});
|
|
113
112
|
// Show this input wrapper when a pre-selected input field equals a certain value
|
|
114
|
-
Array.from(formElement.querySelectorAll('.form-control__wrapper[data-displayif][data-equals]')).forEach((arrayElement
|
|
113
|
+
Array.from(formElement.querySelectorAll('.form-control__wrapper[data-displayif][data-equals]')).forEach((arrayElement) => {
|
|
115
114
|
const group = arrayElement.closest('[data-group]') ? arrayElement.closest('[data-group]') : formElement;
|
|
116
115
|
const selector = arrayElement.dataset.activeif;
|
|
117
116
|
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
|
|
@@ -12,7 +11,6 @@ export const addBodyClasses = (body) => {
|
|
|
12
11
|
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
|
|
13
12
|
body.classList.add('ie');
|
|
14
13
|
}
|
|
15
|
-
return null;
|
|
16
14
|
};
|
|
17
15
|
/**
|
|
18
16
|
* Add global events.
|
|
@@ -53,7 +51,7 @@ export const addGlobalEvents = (body) => {
|
|
|
53
51
|
if (event && event.target instanceof HTMLElement && event.target.matches('form')) {
|
|
54
52
|
const form = event.target;
|
|
55
53
|
// Reset password types
|
|
56
|
-
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input
|
|
54
|
+
Array.from(form.querySelectorAll('[data-password-type]')).forEach((input) => {
|
|
57
55
|
input.setAttribute('type', 'password');
|
|
58
56
|
});
|
|
59
57
|
if (form.querySelector(':invalid') ||
|
|
@@ -76,11 +74,10 @@ export const addGlobalEvents = (body) => {
|
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
});
|
|
79
|
-
Array.from(document.querySelectorAll('label progress')).forEach((progress
|
|
77
|
+
Array.from(document.querySelectorAll('label progress')).forEach((progress) => {
|
|
80
78
|
const label = progress.closest('label');
|
|
81
79
|
label.setAttribute('data-percent', progress.getAttribute('value'));
|
|
82
80
|
});
|
|
83
|
-
return null;
|
|
84
81
|
};
|
|
85
82
|
export const isNumeric = function (str) {
|
|
86
83
|
if (typeof str != 'string')
|
|
@@ -120,6 +117,7 @@ export const numberOfDays = function (startDateString, endDateString) {
|
|
|
120
117
|
};
|
|
121
118
|
// Used to get values from nested json objects
|
|
122
119
|
export const resolvePath = (object, path, defaultValue) => path
|
|
120
|
+
// eslint-disable-next-line no-useless-escape
|
|
123
121
|
.split(/[\.\[\]\'\"]/)
|
|
124
122
|
.filter((p) => p)
|
|
125
123
|
.reduce((o, p) => (o ? o[p] : defaultValue), object);
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import hibpCheck from '../vendor/hibp.js';
|
|
3
2
|
const extendInputs = (body) => {
|
|
4
3
|
function loadInput() {
|
|
5
4
|
// maxlength counter init
|
|
6
|
-
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input
|
|
5
|
+
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input) => {
|
|
7
6
|
const wrapper = input.parentElement;
|
|
8
7
|
setMaxlengthVars(input, wrapper);
|
|
9
8
|
});
|
|
10
|
-
Array.from(document.querySelectorAll('label input')).forEach((input
|
|
9
|
+
Array.from(document.querySelectorAll('label input')).forEach((input) => {
|
|
11
10
|
if (!input.closest('label').querySelector('.optional-text') && !input.hasAttribute('required')) {
|
|
12
11
|
if (input.parentNode.tagName.toLowerCase() == 'span')
|
|
13
12
|
input.parentElement.insertAdjacentHTML('beforebegin', `<span class="optional-text"></span>`);
|
|
@@ -24,7 +23,7 @@ const extendInputs = (body) => {
|
|
|
24
23
|
const day = String(date.getDate()).padStart(2, '0');
|
|
25
24
|
return `${year}-${month}-${day}`;
|
|
26
25
|
}
|
|
27
|
-
Array.from(document.querySelectorAll('input[type="date"]')).forEach((input
|
|
26
|
+
Array.from(document.querySelectorAll('input[type="date"]')).forEach((input) => {
|
|
28
27
|
const startDate = today;
|
|
29
28
|
if (input.hasAttribute('data-start')) {
|
|
30
29
|
startDate.setDate(startDate.getDate() + parseInt(input.getAttribute('data-start')));
|
|
@@ -38,7 +37,7 @@ const extendInputs = (body) => {
|
|
|
38
37
|
}
|
|
39
38
|
if (input.hasAttribute('data-allowed-days')) {
|
|
40
39
|
const allowedDays = JSON.parse(`[${input.getAttribute('data-allowed-days')}]`);
|
|
41
|
-
input.addEventListener('input', function (
|
|
40
|
+
input.addEventListener('input', function () {
|
|
42
41
|
const day = new Date(this.value).getUTCDay();
|
|
43
42
|
if (allowedDays.includes(day))
|
|
44
43
|
input.setCustomValidity('');
|
|
@@ -60,7 +59,6 @@ const extendInputs = (body) => {
|
|
|
60
59
|
body.addEventListener('input', (event) => {
|
|
61
60
|
if (event && event.target instanceof HTMLElement && event.target.closest('input,textarea,select')) {
|
|
62
61
|
const input = event.target.closest('input,textarea,select');
|
|
63
|
-
const wrapper = input.parentElement;
|
|
64
62
|
// Output the color hex
|
|
65
63
|
if (input.hasAttribute('type') && input.getAttribute('type') == 'color')
|
|
66
64
|
input.nextElementSibling.value = input.value;
|
|
@@ -81,11 +79,10 @@ const extendInputs = (body) => {
|
|
|
81
79
|
}
|
|
82
80
|
if (event && event.target instanceof HTMLElement && event.target.closest('dialog [type="radio"]')) {
|
|
83
81
|
const dialog = event.target.closest('dialog');
|
|
84
|
-
|
|
85
|
-
Array.from(dialog.querySelectorAll('[type="radio"][autofocus]')).forEach((input, index) => {
|
|
82
|
+
Array.from(dialog.querySelectorAll('[type="radio"][autofocus]')).forEach((input) => {
|
|
86
83
|
input.removeAttribute('autofocus');
|
|
87
84
|
});
|
|
88
|
-
Array.from(dialog.querySelectorAll('[type="radio"]:checked')).forEach((input
|
|
85
|
+
Array.from(dialog.querySelectorAll('[type="radio"]:checked')).forEach((input) => {
|
|
89
86
|
input.setAttribute('autofocus', true);
|
|
90
87
|
});
|
|
91
88
|
}
|
package/assets/js/modules/nav.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
const navbar = (element) => {
|
|
3
|
-
Array.from(element.querySelectorAll('details')).forEach((detail
|
|
4
|
-
detail.addEventListener('mouseenter', function (
|
|
2
|
+
Array.from(element.querySelectorAll('details')).forEach((detail) => {
|
|
3
|
+
detail.addEventListener('mouseenter', function () {
|
|
5
4
|
if (window.matchMedia('(min-width: 62em)').matches)
|
|
6
5
|
detail.setAttribute('open', 'true');
|
|
7
6
|
}, false);
|
|
8
|
-
detail.addEventListener('mouseleave', function (
|
|
7
|
+
detail.addEventListener('mouseleave', function () {
|
|
9
8
|
if (window.matchMedia('(min-width: 62em)').matches)
|
|
10
9
|
detail.removeAttribute('open');
|
|
11
10
|
}, false);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
function setupNotification(element) {
|
|
3
2
|
// Add toast to notification holder
|
|
4
3
|
if (element.hasAttribute('data-type') && element.getAttribute('data-type') == 'toast') {
|
|
@@ -28,10 +27,10 @@ function setupNotification(element) {
|
|
|
28
27
|
const timer = new Timer(function () {
|
|
29
28
|
closeNotification(element);
|
|
30
29
|
}, timeOut);
|
|
31
|
-
element.addEventListener('mouseenter', (
|
|
30
|
+
element.addEventListener('mouseenter', () => {
|
|
32
31
|
timer.pause();
|
|
33
32
|
});
|
|
34
|
-
element.addEventListener('mouseleave', (
|
|
33
|
+
element.addEventListener('mouseleave', () => {
|
|
35
34
|
timer.resume();
|
|
36
35
|
});
|
|
37
36
|
}
|