@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,12 +1,11 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import { zeroPad, isNumeric, ucfirst, resolvePath } from './helpers';
|
|
3
2
|
|
|
4
3
|
// Basic functionality needed
|
|
5
|
-
export const addDataAttributes = (table) => {
|
|
4
|
+
export const addDataAttributes = (table): void => {
|
|
6
5
|
const colHeadings = Array.from(table.querySelectorAll('thead th'));
|
|
7
6
|
const colRows = Array.from(table.querySelectorAll('tbody tr'));
|
|
8
7
|
|
|
9
|
-
colRows.forEach((row
|
|
8
|
+
colRows.forEach((row) => {
|
|
10
9
|
const cells = Array.from(row.querySelectorAll('th, td'));
|
|
11
10
|
const statuses = [
|
|
12
11
|
'0',
|
|
@@ -55,10 +54,10 @@ export const addDataAttributes = (table) => {
|
|
|
55
54
|
});
|
|
56
55
|
};
|
|
57
56
|
|
|
58
|
-
export const getLargestLastColWidth = (table) => {
|
|
57
|
+
export const getLargestLastColWidth = (table): number => {
|
|
59
58
|
let largestWidth = 0;
|
|
60
59
|
|
|
61
|
-
Array.from(table.querySelectorAll('tbody tr')).forEach((row
|
|
60
|
+
Array.from(table.querySelectorAll('tbody tr')).forEach((row) => {
|
|
62
61
|
const htmlStyles = window.getComputedStyle(document.querySelector('html'));
|
|
63
62
|
const lastColChild = row.querySelector(':scope > *:last-child > *:first-child');
|
|
64
63
|
|
|
@@ -73,19 +72,19 @@ export const getLargestLastColWidth = (table) => {
|
|
|
73
72
|
return largestWidth;
|
|
74
73
|
};
|
|
75
74
|
|
|
76
|
-
export const createMobileButton = (table, wrapper) => {
|
|
75
|
+
export const createMobileButton = (table, wrapper): void => {
|
|
77
76
|
if (wrapper.classList.contains('table--fullwidth') && !wrapper.hasAttribute('data-expandable')) return false;
|
|
78
77
|
|
|
79
78
|
if (table.querySelectorAll('thead tr th').length < 4 && !wrapper.hasAttribute('data-expandable')) return false;
|
|
80
79
|
|
|
81
80
|
//If the expand column already exists we don't need to add a new one.
|
|
82
|
-
Array.from(table.querySelectorAll('thead tr')).forEach((row
|
|
81
|
+
Array.from(table.querySelectorAll('thead tr')).forEach((row) => {
|
|
83
82
|
if (!table.querySelectorAll('thead tr th.expand-button-heading').length) {
|
|
84
83
|
row.insertAdjacentHTML('afterbegin', `<th class="th--fixed expand-button-heading"></th>`);
|
|
85
84
|
}
|
|
86
85
|
});
|
|
87
86
|
|
|
88
|
-
Array.from(table.querySelectorAll('tbody tr')).forEach((row
|
|
87
|
+
Array.from(table.querySelectorAll('tbody tr')).forEach((row) => {
|
|
89
88
|
const preExpanded = row.getAttribute('data-view') === 'full' ? 'aria-expanded' : '';
|
|
90
89
|
row.insertAdjacentHTML(
|
|
91
90
|
'afterbegin',
|
|
@@ -94,7 +93,7 @@ export const createMobileButton = (table, wrapper) => {
|
|
|
94
93
|
});
|
|
95
94
|
};
|
|
96
95
|
|
|
97
|
-
export const addTableEventListeners = (table) => {
|
|
96
|
+
export const addTableEventListeners = (table, wrapper): void => {
|
|
98
97
|
table.addEventListener('click', (event) => {
|
|
99
98
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-expand-button]')) {
|
|
100
99
|
const button = event.target.closest('[data-expand-button]');
|
|
@@ -106,12 +105,50 @@ export const addTableEventListeners = (table) => {
|
|
|
106
105
|
else tableRow.setAttribute('data-view', 'full');
|
|
107
106
|
|
|
108
107
|
button.blur();
|
|
108
|
+
} else if (event && event.target instanceof HTMLElement && event.target.closest('[data-sort]')) {
|
|
109
|
+
const heading = event.target.closest('[data-sort]');
|
|
110
|
+
heading.setAttribute('data-sort', 'true');
|
|
111
|
+
|
|
112
|
+
// Turn other headings off
|
|
113
|
+
Array.from(table.querySelectorAll('th[data-sort]')).forEach((element) => {
|
|
114
|
+
if (element != heading) {
|
|
115
|
+
element.setAttribute('data-sort', '');
|
|
116
|
+
element.removeAttribute('data-order-by');
|
|
117
|
+
heading.setAttribute('title', 'Click to sort ascending');
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
if (heading.hasAttribute('data-order-by') && heading.getAttribute('data-order-by') == 'asc') {
|
|
122
|
+
heading.setAttribute('data-order-by', 'desc');
|
|
123
|
+
heading.setAttribute('title', 'Click to sort ascending');
|
|
124
|
+
} else {
|
|
125
|
+
heading.setAttribute('data-order-by', 'asc');
|
|
126
|
+
heading.setAttribute('title', 'Click to sort descending');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// dispath event
|
|
130
|
+
const dispatchedEvent = new CustomEvent('sort-by-heading', {
|
|
131
|
+
detail: {
|
|
132
|
+
heading: heading.textContent,
|
|
133
|
+
sortBy: heading.getAttribute('data-order-by'),
|
|
134
|
+
ref: heading.getAttribute('data-ref'),
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
const component = heading.closest('iam-table');
|
|
138
|
+
component.dispatchEvent(dispatchedEvent);
|
|
139
|
+
|
|
140
|
+
const sortBy = heading.textContent.trim();
|
|
141
|
+
const order = heading.getAttribute('data-order-by');
|
|
142
|
+
|
|
143
|
+
if (!wrapper.hasAttribute('data-submit')) {
|
|
144
|
+
sortTableByValues(table, sortBy, order);
|
|
145
|
+
}
|
|
109
146
|
}
|
|
110
147
|
});
|
|
111
148
|
};
|
|
112
149
|
|
|
113
150
|
// Filters
|
|
114
|
-
export const createSearchDataList = (table, form) => {
|
|
151
|
+
export const createSearchDataList = (table, form): void => {
|
|
115
152
|
const searchInput = form.querySelector('input[data-search]');
|
|
116
153
|
|
|
117
154
|
if (!searchInput) return false;
|
|
@@ -121,8 +158,8 @@ export const createSearchDataList = (table, form) => {
|
|
|
121
158
|
const inputWrapper = searchInput.parentNode;
|
|
122
159
|
|
|
123
160
|
const searchableTerms = {};
|
|
124
|
-
searchableColumns.forEach((columnHeading
|
|
125
|
-
Array.from(table.querySelectorAll('td[data-label="' + columnHeading.trim() + '"]')).forEach((td
|
|
161
|
+
searchableColumns.forEach((columnHeading) => {
|
|
162
|
+
Array.from(table.querySelectorAll('td[data-label="' + columnHeading.trim() + '"]')).forEach((td) => {
|
|
126
163
|
if (td.querySelector('.td__content'))
|
|
127
164
|
searchableTerms[td.querySelector('.td__content').textContent] = td.querySelector('.td__content').textContent;
|
|
128
165
|
else searchableTerms[td.textContent] = td.textContent;
|
|
@@ -139,18 +176,18 @@ export const createSearchDataList = (table, form) => {
|
|
|
139
176
|
.join('')}`;
|
|
140
177
|
};
|
|
141
178
|
|
|
142
|
-
export const addFilterEventListeners = (table, form, pagination, wrapper, savedTableBody) => {
|
|
179
|
+
export const addFilterEventListeners = (table, form, pagination, wrapper, savedTableBody): void => {
|
|
143
180
|
let timer;
|
|
144
181
|
|
|
145
182
|
// Check what conditions are set on the table to see what the form actions are
|
|
146
|
-
const formSubmit = function (event, paginate = false) {
|
|
183
|
+
const formSubmit = function (event, paginate = false): void | boolean {
|
|
147
184
|
if (wrapper.hasAttribute('data-no-submit')) {
|
|
148
185
|
return false;
|
|
149
186
|
}
|
|
150
187
|
|
|
151
188
|
if (form.classList.contains('processing')) return false;
|
|
152
189
|
|
|
153
|
-
Array.from(form.querySelectorAll('iam-applied-filters')).forEach((element
|
|
190
|
+
Array.from(form.querySelectorAll('iam-applied-filters')).forEach((element) => {
|
|
154
191
|
const event = new Event('tags-set');
|
|
155
192
|
element.dispatchEvent(event);
|
|
156
193
|
});
|
|
@@ -158,7 +195,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
158
195
|
// Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input
|
|
159
196
|
if (event.type == 'submit') {
|
|
160
197
|
form.classList.add('processing');
|
|
161
|
-
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element
|
|
198
|
+
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element) => {
|
|
162
199
|
const id = element.getAttribute('data-duplicate');
|
|
163
200
|
const input = document.getElementById(id);
|
|
164
201
|
const card = document.querySelector(`[for="${id}"] iam-card`);
|
|
@@ -299,7 +336,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
299
336
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-clear]')) {
|
|
300
337
|
form.classList.add('processing');
|
|
301
338
|
// Make sure any applied filters have been removed
|
|
302
|
-
Array.from(form.querySelectorAll('.applied-filters')).forEach((filters
|
|
339
|
+
Array.from(form.querySelectorAll('.applied-filters')).forEach((filters) => {
|
|
303
340
|
filters.innerHTML = '';
|
|
304
341
|
});
|
|
305
342
|
|
|
@@ -373,10 +410,10 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
373
410
|
const fields = [];
|
|
374
411
|
|
|
375
412
|
// Collect the forms that we need to add an event listener for.
|
|
376
|
-
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input
|
|
413
|
+
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
377
414
|
const mimicField = input.getAttribute('data-mimic');
|
|
378
415
|
|
|
379
|
-
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput
|
|
416
|
+
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput) => {
|
|
380
417
|
const parentForm = mimicInput.closest('form');
|
|
381
418
|
|
|
382
419
|
if (!forms.includes(parentForm)) {
|
|
@@ -390,8 +427,8 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
390
427
|
});
|
|
391
428
|
|
|
392
429
|
// For each form add change listener
|
|
393
|
-
forms.forEach((parentForm
|
|
394
|
-
const updateMimicInput = function () {
|
|
430
|
+
forms.forEach((parentForm) => {
|
|
431
|
+
const updateMimicInput = function (): void {
|
|
395
432
|
const mimickedAlready = [];
|
|
396
433
|
const formData = new FormData(parentForm);
|
|
397
434
|
|
|
@@ -422,17 +459,17 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
422
459
|
}
|
|
423
460
|
};
|
|
424
461
|
|
|
425
|
-
parentForm.addEventListener('force', (
|
|
462
|
+
parentForm.addEventListener('force', () => {
|
|
426
463
|
updateMimicInput();
|
|
427
464
|
});
|
|
428
465
|
|
|
429
|
-
parentForm.addEventListener('change', (
|
|
466
|
+
parentForm.addEventListener('change', () => {
|
|
430
467
|
updateMimicInput();
|
|
431
468
|
});
|
|
432
469
|
});
|
|
433
470
|
};
|
|
434
471
|
|
|
435
|
-
export const sortTable = (table, form, savedTableBody) => {
|
|
472
|
+
export const sortTable = (table, form, savedTableBody): void | boolean => {
|
|
436
473
|
if (form.getAttribute('data-ajax')) {
|
|
437
474
|
return false;
|
|
438
475
|
}
|
|
@@ -456,6 +493,12 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
456
493
|
return false;
|
|
457
494
|
}
|
|
458
495
|
|
|
496
|
+
sortTableByValues(table, sortBy, order, format);
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
export const sortTableByValues = (table, sortBy, order, format = ''): void => {
|
|
500
|
+
const tbody = table.querySelector('tbody');
|
|
501
|
+
|
|
459
502
|
let orderArray = [];
|
|
460
503
|
if (!['asc', 'desc', 'descending'].includes(order)) {
|
|
461
504
|
orderArray = order.split(',');
|
|
@@ -463,7 +506,7 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
463
506
|
|
|
464
507
|
// Create an array from the table rows, the index created is then used to sort the array
|
|
465
508
|
let tableArr = [];
|
|
466
|
-
Array.from(tbody.querySelectorAll('tr')).forEach((tableRow
|
|
509
|
+
Array.from(tbody.querySelectorAll('tr')).forEach((tableRow) => {
|
|
467
510
|
let rowIndex = tableRow
|
|
468
511
|
.querySelector('td[data-label="' + sortBy + '"], th[data-label="' + sortBy + '"]')
|
|
469
512
|
.textContent.trim();
|
|
@@ -503,13 +546,13 @@ export const sortTable = (table, form, savedTableBody) => {
|
|
|
503
546
|
|
|
504
547
|
// Create a string to return and populate the tbody
|
|
505
548
|
let strTbody = '';
|
|
506
|
-
tableArr.forEach((tableRow
|
|
549
|
+
tableArr.forEach((tableRow) => {
|
|
507
550
|
strTbody += tableRow.row.outerHTML;
|
|
508
551
|
});
|
|
509
552
|
tbody.innerHTML = strTbody;
|
|
510
553
|
};
|
|
511
554
|
|
|
512
|
-
export const filterTable = (table, form, wrapper) => {
|
|
555
|
+
export const filterTable = (table, form, wrapper): void => {
|
|
513
556
|
table.classList.remove('table--filtered');
|
|
514
557
|
|
|
515
558
|
const filters = filterFilters(form);
|
|
@@ -519,7 +562,7 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
519
562
|
const showRows = form.querySelector('[data-show]') ? parseInt(form.querySelector('[data-show]').value) : 15;
|
|
520
563
|
|
|
521
564
|
// Reset
|
|
522
|
-
Array.from(table.querySelectorAll('tbody tr')).forEach((row
|
|
565
|
+
Array.from(table.querySelectorAll('tbody tr')).forEach((row) => {
|
|
523
566
|
row.classList.remove('filtered');
|
|
524
567
|
row.classList.remove('filtered--matched');
|
|
525
568
|
row.classList.remove('filtered--show');
|
|
@@ -532,19 +575,19 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
532
575
|
const searchInput = form.querySelector('input[data-search]');
|
|
533
576
|
const searchColumns = form.querySelector('input[data-search]').getAttribute('data-search').split(',');
|
|
534
577
|
|
|
535
|
-
searchColumns.forEach((column
|
|
578
|
+
searchColumns.forEach((column) => {
|
|
536
579
|
searches.push({ column: `${column.trim()}`, value: `${searchInput.value}` });
|
|
537
580
|
});
|
|
538
581
|
}
|
|
539
582
|
|
|
540
583
|
//Display the filter count
|
|
541
|
-
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element
|
|
584
|
+
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element) => {
|
|
542
585
|
element.innerHTML = '';
|
|
543
586
|
element.parentNode.classList.remove('hover');
|
|
544
587
|
});
|
|
545
588
|
|
|
546
589
|
let filterCount = 0;
|
|
547
|
-
Object.values(filters).forEach((filter
|
|
590
|
+
Object.values(filters).forEach((filter) => {
|
|
548
591
|
if (typeof filter == 'object' && Object.values(filter).length) {
|
|
549
592
|
filterCount += Object.values(filter).length;
|
|
550
593
|
} else {
|
|
@@ -553,7 +596,7 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
553
596
|
});
|
|
554
597
|
|
|
555
598
|
if (filterCount) {
|
|
556
|
-
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element
|
|
599
|
+
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element) => {
|
|
557
600
|
element.innerHTML += `(${filterCount})`;
|
|
558
601
|
element.parentNode.classList.add('hover');
|
|
559
602
|
});
|
|
@@ -562,9 +605,9 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
562
605
|
// Filter the table
|
|
563
606
|
table.classList.add('table--filtered');
|
|
564
607
|
for (const [key, filterValue] of Object.entries(filters)) {
|
|
565
|
-
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row
|
|
608
|
+
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row) => {
|
|
566
609
|
let isMatched = false;
|
|
567
|
-
filterValue.forEach((filter
|
|
610
|
+
filterValue.forEach((filter) => {
|
|
568
611
|
const filterTd = row.querySelector(`[data-label="${key}"]`);
|
|
569
612
|
|
|
570
613
|
if (filter.includes('-date-from')) {
|
|
@@ -672,10 +715,10 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
672
715
|
});
|
|
673
716
|
}
|
|
674
717
|
// Search whats left of the table after filtering
|
|
675
|
-
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row
|
|
718
|
+
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row) => {
|
|
676
719
|
let isSearched = searches.length > 0 && searches[0].value.length >= 3 ? false : true;
|
|
677
720
|
|
|
678
|
-
searches.forEach((search
|
|
721
|
+
searches.forEach((search) => {
|
|
679
722
|
const searchTd = row.querySelector(`[data-label="${search.column}"]`);
|
|
680
723
|
|
|
681
724
|
if (
|
|
@@ -693,7 +736,7 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
693
736
|
});
|
|
694
737
|
|
|
695
738
|
// Work out what to display after pagination
|
|
696
|
-
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row
|
|
739
|
+
Array.from(table.querySelectorAll('tbody tr:not(.filtered)')).forEach((row) => {
|
|
697
740
|
matched++;
|
|
698
741
|
|
|
699
742
|
row.classList.add('filtered--matched');
|
|
@@ -712,10 +755,10 @@ export const filterTable = (table, form, wrapper) => {
|
|
|
712
755
|
}
|
|
713
756
|
};
|
|
714
757
|
|
|
715
|
-
export const populateDataQueries = (table, form, wrapper) => {
|
|
758
|
+
export const populateDataQueries = (table, form, wrapper): void | boolean => {
|
|
716
759
|
const dataQueries = Array.from(form.querySelectorAll('[data-query]'));
|
|
717
760
|
|
|
718
|
-
dataQueries.forEach((queryElement
|
|
761
|
+
dataQueries.forEach((queryElement) => {
|
|
719
762
|
const query = queryElement.getAttribute('data-query');
|
|
720
763
|
let numberOfMatchedRows = 0;
|
|
721
764
|
|
|
@@ -742,7 +785,7 @@ export const populateDataQueries = (table, form, wrapper) => {
|
|
|
742
785
|
numberOfMatchedRows = Array.from(table.querySelectorAll(`tbody tr:not(.filtered)`)).filter(function (row) {
|
|
743
786
|
let matched = true;
|
|
744
787
|
|
|
745
|
-
for (const
|
|
788
|
+
for (const value of Object.entries(queries)) {
|
|
746
789
|
const queryParts = value.split(' == ');
|
|
747
790
|
|
|
748
791
|
if (
|
|
@@ -774,7 +817,7 @@ export const populateDataQueries = (table, form, wrapper) => {
|
|
|
774
817
|
};
|
|
775
818
|
|
|
776
819
|
// Pagination
|
|
777
|
-
export const addPaginationEventListeners = function (table, form, pagination, wrapper) {
|
|
820
|
+
export const addPaginationEventListeners = function (table, form, pagination, wrapper): void | boolean {
|
|
778
821
|
if (wrapper.hasAttribute('data-no-submit')) {
|
|
779
822
|
return false;
|
|
780
823
|
}
|
|
@@ -814,17 +857,17 @@ export const addPaginationEventListeners = function (table, form, pagination, wr
|
|
|
814
857
|
};
|
|
815
858
|
|
|
816
859
|
// Export CSV Data
|
|
817
|
-
export const addExportEventListeners = (button, table) => {
|
|
860
|
+
export const addExportEventListeners = (button, table): void | boolean => {
|
|
818
861
|
if (!button) {
|
|
819
862
|
return false;
|
|
820
863
|
}
|
|
821
864
|
|
|
822
|
-
button.addEventListener('click', (
|
|
865
|
+
button.addEventListener('click', () => {
|
|
823
866
|
exportAsCSV(table);
|
|
824
867
|
});
|
|
825
868
|
};
|
|
826
869
|
|
|
827
|
-
export const exportAsCSV = function (table) {
|
|
870
|
+
export const exportAsCSV = function (table): void {
|
|
828
871
|
let csvData = [];
|
|
829
872
|
// Get each row data
|
|
830
873
|
const rows = table.getElementsByTagName('tr');
|
|
@@ -867,7 +910,7 @@ export const exportAsCSV = function (table) {
|
|
|
867
910
|
};
|
|
868
911
|
|
|
869
912
|
// After table is loaded
|
|
870
|
-
export const makeTableFunctional = function (table, form, pagination, wrapper) {
|
|
913
|
+
export const makeTableFunctional = function (table, form, pagination, wrapper): void {
|
|
871
914
|
addDataAttributes(table);
|
|
872
915
|
createMobileButton(table, wrapper);
|
|
873
916
|
populateDataQueries(table, form, wrapper);
|
|
@@ -877,8 +920,8 @@ export const makeTableFunctional = function (table, form, pagination, wrapper) {
|
|
|
877
920
|
const largestWidth = getLargestLastColWidth(table);
|
|
878
921
|
wrapper.style.setProperty('--cta-width', `${largestWidth}rem`);
|
|
879
922
|
|
|
880
|
-
function outputsize() {
|
|
881
|
-
Array.from(table.querySelectorAll('tr')).forEach((row
|
|
923
|
+
function outputsize(): void {
|
|
924
|
+
Array.from(table.querySelectorAll('tr')).forEach((row) => {
|
|
882
925
|
const rowHeight = row.offsetHeight;
|
|
883
926
|
row.style.setProperty('--row-height', `${rowHeight}px`);
|
|
884
927
|
});
|
|
@@ -888,13 +931,13 @@ export const makeTableFunctional = function (table, form, pagination, wrapper) {
|
|
|
888
931
|
}
|
|
889
932
|
};
|
|
890
933
|
|
|
891
|
-
const filterFilters = function (form) {
|
|
934
|
+
const filterFilters = function (form): object {
|
|
892
935
|
const filters = new Object();
|
|
893
936
|
|
|
894
937
|
// Filter
|
|
895
938
|
const filterInputs = Array.from(form.querySelectorAll('[data-filter]'));
|
|
896
939
|
|
|
897
|
-
filterInputs.forEach((filterInput
|
|
940
|
+
filterInputs.forEach((filterInput) => {
|
|
898
941
|
// Ignore uncked radio inputs
|
|
899
942
|
if (filterInput.type == 'radio' && !filterInput.checked) {
|
|
900
943
|
return;
|
|
@@ -921,7 +964,7 @@ const filterFilters = function (form) {
|
|
|
921
964
|
return filters;
|
|
922
965
|
};
|
|
923
966
|
|
|
924
|
-
export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
967
|
+
export const loadAjaxTable = async function (table, form, pagination, wrapper): void {
|
|
925
968
|
const formData = new FormData(form);
|
|
926
969
|
const queryString = new URLSearchParams(formData).toString();
|
|
927
970
|
const columns = table.querySelectorAll('thead tr th:not(.expand-button-heading)');
|
|
@@ -933,19 +976,19 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
|
933
976
|
// Display the filter count
|
|
934
977
|
const filters = filterFilters(form);
|
|
935
978
|
|
|
936
|
-
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element
|
|
979
|
+
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element) => {
|
|
937
980
|
element.innerHTML = '';
|
|
938
981
|
element.parentNode.classList.remove('hover');
|
|
939
982
|
});
|
|
940
983
|
|
|
941
984
|
let filterCount = 0;
|
|
942
|
-
Object.values(filters).forEach((filter
|
|
985
|
+
Object.values(filters).forEach((filter) => {
|
|
943
986
|
if (typeof filter == 'object' && Object.values(filter).length) filterCount += Object.values(filter).length;
|
|
944
987
|
else filterCount++;
|
|
945
988
|
});
|
|
946
989
|
|
|
947
990
|
if (filterCount) {
|
|
948
|
-
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element
|
|
991
|
+
Array.from(form.querySelectorAll('[data-filter-count]')).forEach((element) => {
|
|
949
992
|
element.innerHTML += `(${filterCount})`;
|
|
950
993
|
element.parentNode.classList.add('hover');
|
|
951
994
|
});
|
|
@@ -996,17 +1039,17 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
|
996
1039
|
if (data) {
|
|
997
1040
|
tbody.innerHTML = '';
|
|
998
1041
|
|
|
999
|
-
data.forEach((row
|
|
1042
|
+
data.forEach((row) => {
|
|
1000
1043
|
const table_row = document.createElement('tr');
|
|
1001
1044
|
|
|
1002
|
-
columns.forEach((col
|
|
1045
|
+
columns.forEach((col) => {
|
|
1003
1046
|
let cellOutput = '';
|
|
1004
1047
|
const table_cell = document.createElement('td');
|
|
1005
1048
|
// Add some data to help with the mobile layout design
|
|
1006
1049
|
table_cell.setAttribute('data-label', col.innerText);
|
|
1007
1050
|
|
|
1008
1051
|
if (col.getAttribute('data-output')) {
|
|
1009
|
-
|
|
1052
|
+
const cellTemplate = col.getAttribute('data-output');
|
|
1010
1053
|
// Use a regex to replace {var} with actual values from the json data
|
|
1011
1054
|
cellOutput = cellTemplate.replace(new RegExp(/{(.*?)}/, 'gm'), function (matched) {
|
|
1012
1055
|
return resolvePath(row, matched.replace('{', '').replace('}', ''));
|
|
@@ -1015,11 +1058,11 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
|
1015
1058
|
|
|
1016
1059
|
// If an output array is defined then the content is going to made of of multiple values from an array
|
|
1017
1060
|
if (col.hasAttribute('data-output-array')) {
|
|
1018
|
-
|
|
1061
|
+
const cellTemplate = col.getAttribute('data-output');
|
|
1019
1062
|
const arrValue = resolvePath(row, cellTemplate.replace('{', '').replace('}', ''));
|
|
1020
1063
|
|
|
1021
1064
|
cellOutput = '';
|
|
1022
|
-
arrValue.forEach((rowValue
|
|
1065
|
+
arrValue.forEach((rowValue) => {
|
|
1023
1066
|
const cellTemplateValue = col.getAttribute('data-output-array');
|
|
1024
1067
|
let cellOutputValue = '';
|
|
1025
1068
|
|
|
@@ -1066,7 +1109,7 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
|
1066
1109
|
|
|
1067
1110
|
makeTableFunctional(table, form, pagination, wrapper);
|
|
1068
1111
|
|
|
1069
|
-
Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement
|
|
1112
|
+
Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement) => {
|
|
1070
1113
|
const totalNumber = resolvePath(response, queryElement.getAttribute('data-ajax-query'), '');
|
|
1071
1114
|
|
|
1072
1115
|
if (queryElement.hasAttribute('data-total')) queryElement.setAttribute('data-total', totalNumber);
|
|
@@ -1098,7 +1141,7 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper) {
|
|
|
1098
1141
|
}
|
|
1099
1142
|
};
|
|
1100
1143
|
|
|
1101
|
-
export const formatCell = (format, cellOutput) => {
|
|
1144
|
+
export const formatCell = (format, cellOutput): any => {
|
|
1102
1145
|
switch (format) {
|
|
1103
1146
|
case 'datetime':
|
|
1104
1147
|
return (
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import { getSwipeDirection } from './helpers';
|
|
3
2
|
|
|
4
|
-
export const createTabsLinks = function (tabsElement: Element) {
|
|
5
|
-
const details = tabsElement.querySelectorAll(':scope > details');
|
|
3
|
+
export const createTabsLinks = function (tabsElement: Element): void {
|
|
6
4
|
const detailsORLinks = tabsElement.querySelectorAll(':scope > details, :scope > a');
|
|
7
|
-
const summaries = tabsElement.querySelectorAll(':scope > details > summary');
|
|
8
5
|
let tabLinks = tabsElement.querySelector(':scope > .tabs__links');
|
|
9
6
|
|
|
10
7
|
if (tabsElement.shadowRoot && tabsElement.shadowRoot.querySelector('.tabs__links'))
|
|
@@ -23,7 +20,7 @@ export const createTabsLinks = function (tabsElement: Element) {
|
|
|
23
20
|
|
|
24
21
|
// Create the tab buttons from the summary titles
|
|
25
22
|
let tabindex = 0;
|
|
26
|
-
detailsORLinks.forEach((element
|
|
23
|
+
detailsORLinks.forEach((element) => {
|
|
27
24
|
let button = document.createElement('button');
|
|
28
25
|
|
|
29
26
|
if (element.matches('details')) {
|
|
@@ -57,7 +54,7 @@ export const createTabsLinks = function (tabsElement: Element) {
|
|
|
57
54
|
});
|
|
58
55
|
};
|
|
59
56
|
|
|
60
|
-
export const setTabsEventHandlers = function (tabsElement: Element) {
|
|
57
|
+
export const setTabsEventHandlers = function (tabsElement: Element): void {
|
|
61
58
|
const details = tabsElement.querySelectorAll(':scope > details');
|
|
62
59
|
const summaries = tabsElement.querySelectorAll(':scope > details > summary');
|
|
63
60
|
let buttonWrapper = tabsElement.querySelector(':scope .tabs__links');
|
|
@@ -65,7 +62,7 @@ export const setTabsEventHandlers = function (tabsElement: Element) {
|
|
|
65
62
|
|
|
66
63
|
let nextButton = tabsElement.querySelector(':scope .tabs__next');
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
let scrollTimeout;
|
|
69
66
|
window.isClicked = false;
|
|
70
67
|
window.isScrolling = false;
|
|
71
68
|
|
|
@@ -117,12 +114,10 @@ export const setTabsEventHandlers = function (tabsElement: Element) {
|
|
|
117
114
|
});
|
|
118
115
|
});
|
|
119
116
|
|
|
120
|
-
buttonWrapper.addEventListener('scrollend', (
|
|
121
|
-
|
|
117
|
+
buttonWrapper.addEventListener('scrollend', () => {
|
|
122
118
|
clearTimeout(scrollTimeout);
|
|
123
119
|
|
|
124
120
|
scrollTimeout = setTimeout(function () {
|
|
125
|
-
|
|
126
121
|
let buttonToClick = buttons[0];
|
|
127
122
|
let closestOffset = Math.abs(buttonToClick.getBoundingClientRect().left);
|
|
128
123
|
|
|
@@ -136,13 +131,10 @@ export const setTabsEventHandlers = function (tabsElement: Element) {
|
|
|
136
131
|
if (window.isClicked) {
|
|
137
132
|
window.isClicked = false;
|
|
138
133
|
return false;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
|
|
134
|
+
} else {
|
|
142
135
|
buttonToClick.click();
|
|
143
136
|
}
|
|
144
137
|
buttonToClick.focus();
|
|
145
|
-
|
|
146
138
|
}, 500);
|
|
147
139
|
});
|
|
148
140
|
|
package/assets/ts/scripts.ts
CHANGED
|
@@ -1,10 +1,40 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
// Modules
|
|
3
|
-
import * as helpers from '
|
|
4
|
-
import extendDialogs from '
|
|
5
|
-
import createDataLayer from '
|
|
6
|
-
import extendInputs from '
|
|
7
|
-
import createDynamicEvents from '
|
|
2
|
+
import * as helpers from './modules/helpers';
|
|
3
|
+
import extendDialogs from './modules/dialogs';
|
|
4
|
+
import createDataLayer from './modules/data-layer';
|
|
5
|
+
import extendInputs from './modules/inputs';
|
|
6
|
+
import createDynamicEvents from './modules/dynamicEvents';
|
|
7
|
+
|
|
8
|
+
const components = [
|
|
9
|
+
'accordion',
|
|
10
|
+
'header',
|
|
11
|
+
'table',
|
|
12
|
+
'tabs',
|
|
13
|
+
'card',
|
|
14
|
+
'filter-card',
|
|
15
|
+
'video-card',
|
|
16
|
+
'record-card',
|
|
17
|
+
'filterlist',
|
|
18
|
+
'applied-filters',
|
|
19
|
+
'pagination',
|
|
20
|
+
'notification',
|
|
21
|
+
'actionbar',
|
|
22
|
+
'nav',
|
|
23
|
+
'collapsible-side',
|
|
24
|
+
'address-lookup',
|
|
25
|
+
'fileupload',
|
|
26
|
+
'search',
|
|
27
|
+
'inline-edit',
|
|
28
|
+
'multiselect',
|
|
29
|
+
'multi-step',
|
|
30
|
+
'menu',
|
|
31
|
+
'slider',
|
|
32
|
+
'carousel',
|
|
33
|
+
'marketing',
|
|
34
|
+
'barchart',
|
|
35
|
+
'doughnutchart',
|
|
36
|
+
'bento-grid',
|
|
37
|
+
];
|
|
8
38
|
|
|
9
39
|
// Attach classes to dom elements
|
|
10
40
|
document.addEventListener('DOMContentLoaded', function () {
|
|
@@ -17,4 +47,38 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
17
47
|
|
|
18
48
|
extendDialogs(document.body);
|
|
19
49
|
extendInputs(document.body);
|
|
50
|
+
|
|
51
|
+
const prefix = 'iam';
|
|
52
|
+
const options = {
|
|
53
|
+
rootMargin: '50px',
|
|
54
|
+
threshold: 0.1,
|
|
55
|
+
};
|
|
56
|
+
const componentExt = '.component.min.js';
|
|
57
|
+
|
|
58
|
+
// Load components - Each component will load once the first of its type has been loaded
|
|
59
|
+
components.forEach((component) => {
|
|
60
|
+
if (document.getElementsByTagName(`${prefix}-${component}`).length === 0) return;
|
|
61
|
+
|
|
62
|
+
const callback = (entries: any): void => {
|
|
63
|
+
entries.forEach((entry: any) => {
|
|
64
|
+
if (entry.intersectionRatio > 0) {
|
|
65
|
+
console.log(component);
|
|
66
|
+
|
|
67
|
+
import(/* @vite-ignore */ `../js/components/${component}/${component}${componentExt}`)
|
|
68
|
+
.then((module) => {
|
|
69
|
+
if (!window.customElements.get(`${prefix}-${component}`))
|
|
70
|
+
window.customElements.define(`${prefix}-${component}`, module.default);
|
|
71
|
+
})
|
|
72
|
+
.catch((err) => {
|
|
73
|
+
console.log(err.message);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
intObserver.unobserve(entry.target);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const intObserver = new IntersectionObserver(callback, options);
|
|
82
|
+
intObserver.observe(document.getElementsByTagName(`${prefix}-${component}`)[0]);
|
|
83
|
+
});
|
|
20
84
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import '@testing-library/jest-dom';
|
|
3
|
+
import { getChartData } from '../modules/chart.module';
|
|
4
|
+
import puppeteer from 'puppeteer';
|
|
5
|
+
import 'expect-puppeteer';
|
|
6
|
+
|
|
7
|
+
import iamCard from '../components/card/card.component';
|
|
8
|
+
|
|
9
|
+
describe('The card component', () => {
|
|
10
|
+
if (!window.customElements.get(`iam-card`)) window.customElements.define(`iam-card`, iamCard);
|
|
11
|
+
|
|
12
|
+
document.body.innerHTML = `
|
|
13
|
+
<iam-card>Financial preparation <span>Here would be the top level description of the task</span></iam-card>`;
|
|
14
|
+
|
|
15
|
+
test('should have the class of card added to it', () => {
|
|
16
|
+
let component = document.querySelector('iam-card');
|
|
17
|
+
expect(component.classList).toContain('card');
|
|
18
|
+
});
|
|
19
|
+
});
|