@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,79 +1,88 @@
|
|
|
1
|
-
@use '
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use 'sass:math';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
@include light-mode() {
|
|
5
|
-
background-color: #e9f9fd;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
4
|
+
@use '../_func' as *;
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
$layers: 'true' !default;
|
|
7
|
+
$mobileOnly: 'false' !default;
|
|
8
|
+
$darkMode: 'true' !default;
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
div:has(> :is(.suffix, .prefix)) {
|
|
19
|
-
--input-max-width: #{rem(500)};
|
|
20
|
-
max-width: var(--input-max-width);
|
|
10
|
+
@include layer('templates', $layers) {
|
|
11
|
+
body:has(.template--form) {
|
|
12
|
+
@include light-mode($darkMode) {
|
|
13
|
+
background-color: #e9f9fd;
|
|
21
14
|
}
|
|
22
15
|
}
|
|
23
16
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
line-height: rem(map-get($heading-sizes, 'h3_lh'));
|
|
28
|
-
padding-bottom: rem(map-get($heading-sizes, 'h3_pb'));
|
|
29
|
-
max-width: var(--content-max-width);
|
|
17
|
+
.template--form {
|
|
18
|
+
--input-max-width: #{rem(450)};
|
|
19
|
+
--select-max-width: #{rem(500)};
|
|
30
20
|
|
|
31
|
-
@
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
21
|
+
@supports selector(:has(*)) {
|
|
22
|
+
label:has(> :is(.suffix, .prefix)) {
|
|
23
|
+
--input-max-width: #{rem(500)};
|
|
24
|
+
max-width: var(--input-max-width);
|
|
25
|
+
}
|
|
26
|
+
div:has(> :is(.suffix, .prefix)) {
|
|
27
|
+
--input-max-width: #{rem(500)};
|
|
28
|
+
max-width: var(--input-max-width);
|
|
29
|
+
}
|
|
35
30
|
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@include light-mode() {
|
|
39
|
-
background-color: #e9f9fd;
|
|
40
|
-
}
|
|
41
31
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
outline: var(--contrast-outline-width, 0px) solid var(--colour-primary);
|
|
49
|
-
width: 100%;
|
|
32
|
+
// Make H2's look like H3's
|
|
33
|
+
:is(h2, .h2) {
|
|
34
|
+
font-size: rem(map.get($heading-sizes, 'h3_fs'));
|
|
35
|
+
line-height: rem(map.get($heading-sizes, 'h3_lh'));
|
|
36
|
+
padding-bottom: rem(map.get($heading-sizes, 'h3_pb'));
|
|
37
|
+
max-width: var(--content-max-width);
|
|
50
38
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
@include media-breakpoint-up(sm, $mobileOnly) {
|
|
40
|
+
font-size: rem(map.get($heading-sizes, 'h3_fs_sm'));
|
|
41
|
+
line-height: rem(map.get($heading-sizes, 'h3_lh_sm'));
|
|
42
|
+
padding-bottom: rem(map.get($heading-sizes, 'h3_pb_sm'));
|
|
43
|
+
}
|
|
54
44
|
}
|
|
55
45
|
|
|
56
|
-
@include
|
|
57
|
-
|
|
58
|
-
border-radius: 0.5rem;
|
|
59
|
-
padding-inline: rem(94);
|
|
60
|
-
padding-block: rem(40);
|
|
61
|
-
margin-bottom: rem(32);
|
|
46
|
+
@include light-mode($darkMode) {
|
|
47
|
+
background-color: #e9f9fd;
|
|
62
48
|
}
|
|
63
49
|
|
|
64
|
-
|
|
65
|
-
|
|
50
|
+
.form-panel {
|
|
51
|
+
display: block;
|
|
52
|
+
padding: 2rem;
|
|
53
|
+
box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
|
|
54
|
+
background-color: var(--colour-canvas-2);
|
|
55
|
+
margin-bottom: 1.5rem;
|
|
56
|
+
outline: var(--contrast-outline-width, 0px) solid var(--colour-primary);
|
|
57
|
+
width: 100%;
|
|
58
|
+
|
|
59
|
+
@include media-breakpoint-up(sm, $mobileOnly) {
|
|
60
|
+
max-width: calc(100% - 5rem); // Guess
|
|
61
|
+
margin-inline: auto;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@include media-breakpoint-up(md, $mobileOnly) {
|
|
65
|
+
max-width: rem(924); // Guess
|
|
66
|
+
border-radius: 0.5rem;
|
|
67
|
+
padding-inline: rem(94);
|
|
68
|
+
padding-block: rem(40);
|
|
69
|
+
margin-bottom: rem(32);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
> *:last-child {
|
|
73
|
+
margin-bottom: 0 !important;
|
|
74
|
+
}
|
|
66
75
|
}
|
|
67
|
-
}
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
@include media-breakpoint-up(md, $mobileOnly) {
|
|
78
|
+
.container--form {
|
|
79
|
+
padding-inline: 0;
|
|
80
|
+
max-width: rem(924) !important;
|
|
81
|
+
}
|
|
73
82
|
}
|
|
74
|
-
}
|
|
75
83
|
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
[data-loading] {
|
|
85
|
+
opacity: 0.5;
|
|
86
|
+
}
|
|
78
87
|
}
|
|
79
88
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export const trackComponentRegistered = (componentName: string) => {
|
|
1
|
+
export const trackComponentRegistered = (componentName: string): void => {
|
|
3
2
|
// Data layer Web component created
|
|
4
3
|
window.dataLayer = window.dataLayer || [];
|
|
5
4
|
window.dataLayer.push({
|
|
@@ -8,7 +7,7 @@ export const trackComponentRegistered = (componentName: string) => {
|
|
|
8
7
|
});
|
|
9
8
|
};
|
|
10
9
|
|
|
11
|
-
export const trackComponent = (component: any, componentName: string, trackEvents: any) => {
|
|
10
|
+
export const trackComponent = (component: any, componentName: string, trackEvents: any): boolean => {
|
|
12
11
|
// Data layer Web component created
|
|
13
12
|
window.dataLayer = window.dataLayer || [];
|
|
14
13
|
window.dataLayer.push({
|
|
@@ -43,7 +43,7 @@ class iamActionbar extends HTMLElement {
|
|
|
43
43
|
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
44
44
|
? document.body.getAttribute('data-core-css')
|
|
45
45
|
: `${assetLocation}/css/core.min.css`;
|
|
46
|
-
const loadCSS = `@import "${assetLocation}/css/components/actionbar.css";`;
|
|
46
|
+
const loadCSS = `@import "${assetLocation}/css/components/actionbar.component.css";`;
|
|
47
47
|
const loadExtraCSS = `@import "${assetLocation}/css/components/actionbar.global.css";`;
|
|
48
48
|
|
|
49
49
|
const template = document.createElement('template');
|
|
@@ -68,6 +68,18 @@ class iamActionbar extends HTMLElement {
|
|
|
68
68
|
<slot name="menu"></slot>
|
|
69
69
|
</dialog>
|
|
70
70
|
</div>
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
<div class="dialog__wrapper dialog__wrapper--right filter-columns">
|
|
74
|
+
<button class="btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns" title="Select colums">Filter</button>
|
|
75
|
+
<dialog class="dialog--list">
|
|
76
|
+
<div class="pb-0 mb-0 checklists">
|
|
77
|
+
|
|
78
|
+
</div>
|
|
79
|
+
<div class="text-right checklist-btns"><button id="cancelColumns" class="btn btn-action">Cancel</button><button id="saveColumns" class="btn btn-action btn-secondary">Save</button></div>
|
|
80
|
+
</dialog>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
71
83
|
<button class="btn btn-secondary btn-compact btn-sm fa-search" data-search="" part="search-btn">Search</button>
|
|
72
84
|
</div>
|
|
73
85
|
</div>
|
|
@@ -85,6 +97,7 @@ class iamActionbar extends HTMLElement {
|
|
|
85
97
|
</div>
|
|
86
98
|
</div>
|
|
87
99
|
</div>
|
|
100
|
+
|
|
88
101
|
<div class="actionbar--search">
|
|
89
102
|
<button data-search class="btn btn-compact fa-xmark-large btn-secondary m-0" >Close</button>
|
|
90
103
|
|
|
@@ -106,6 +119,7 @@ class iamActionbar extends HTMLElement {
|
|
|
106
119
|
|
|
107
120
|
connectedCallback(): void {
|
|
108
121
|
const actionbarWrapper = this.shadowRoot?.querySelector('.actionbar__wrapper');
|
|
122
|
+
const checklistHolder = this.shadowRoot?.querySelector('.checklists');
|
|
109
123
|
|
|
110
124
|
// #region select all
|
|
111
125
|
if (this.hasAttribute('data-selectall')) {
|
|
@@ -235,7 +249,7 @@ class iamActionbar extends HTMLElement {
|
|
|
235
249
|
// #endregion
|
|
236
250
|
|
|
237
251
|
// Make sure dialogs created in the shadow dom work
|
|
238
|
-
Array.from(this.shadowRoot.querySelectorAll('.body')).forEach((element
|
|
252
|
+
Array.from(this.shadowRoot.querySelectorAll('.body')).forEach((element) => {
|
|
239
253
|
extendDialogs(element);
|
|
240
254
|
});
|
|
241
255
|
|
|
@@ -387,6 +401,84 @@ class iamActionbar extends HTMLElement {
|
|
|
387
401
|
hideButtons();
|
|
388
402
|
new ResizeObserver(hideButtons).observe(actionbarWrapper);
|
|
389
403
|
// #endregion
|
|
404
|
+
|
|
405
|
+
// #region cloumn filters
|
|
406
|
+
|
|
407
|
+
const setColumnFilters = (): void => {
|
|
408
|
+
let columnsHidden = '';
|
|
409
|
+
Array.from(checklistHolder?.querySelectorAll('label input')).forEach((element, index) => {
|
|
410
|
+
columnsHidden += this.hasAttribute(`data-hide-col${index + 1}`) ? `${index + 1},` : '';
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
const dispatchedEvent = new CustomEvent('columm-filters-set', {
|
|
414
|
+
detail: {
|
|
415
|
+
columnsHidden: columnsHidden.slice(0, -1),
|
|
416
|
+
},
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
this.dispatchEvent(dispatchedEvent);
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
if (this.hasAttribute('data-filter-columns') || this.hasAttribute('data-filter-columns-save')) {
|
|
423
|
+
const columns = this.closest('iam-table').querySelectorAll('thead th');
|
|
424
|
+
|
|
425
|
+
Array.from(columns).forEach((element, index) => {
|
|
426
|
+
if (element.textContent) {
|
|
427
|
+
checklistHolder?.insertAdjacentHTML(
|
|
428
|
+
'beforeend',
|
|
429
|
+
`<label class="m-0" title="Change the display of "><input name="hideCol${index + 1}" value="${index + 1}" type="checkbox" ${this.hasAttribute('data-hide-col' + (index + 1)) ? '' : 'checked'} /> ${element.textContent}</label>`
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
if (this.hasAttribute('data-filter-columns') && !this.hasAttribute('data-filter-columns-save')) {
|
|
436
|
+
checklistHolder?.addEventListener('change', (event) => {
|
|
437
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('input')) {
|
|
438
|
+
const checkbox = event.target.closest('input');
|
|
439
|
+
|
|
440
|
+
if (checkbox?.checked == false) {
|
|
441
|
+
this.setAttribute('data-hide-col' + checkbox?.value, 'true');
|
|
442
|
+
} else {
|
|
443
|
+
this.removeAttribute('data-hide-col' + checkbox?.value);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
setColumnFilters();
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
if (this.hasAttribute('data-filter-columns-save')) {
|
|
452
|
+
const checklistHolder = this.shadowRoot?.querySelector('.checklists');
|
|
453
|
+
const checklistSave = this.shadowRoot?.querySelector('#saveColumns');
|
|
454
|
+
const checklistCancel = this.shadowRoot?.querySelector('#cancelColumns');
|
|
455
|
+
|
|
456
|
+
checklistSave?.addEventListener('click', (event) => {
|
|
457
|
+
Array.from(checklistHolder?.querySelectorAll('label input')).forEach((checkbox) => {
|
|
458
|
+
if (checkbox?.checked == false) {
|
|
459
|
+
this.setAttribute('data-hide-col' + checkbox?.value, 'true');
|
|
460
|
+
} else {
|
|
461
|
+
this.removeAttribute('data-hide-col' + checkbox?.value);
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
setColumnFilters();
|
|
466
|
+
checklistSave.closest('dialog')?.close();
|
|
467
|
+
});
|
|
468
|
+
|
|
469
|
+
// Revert back to what was previously saved
|
|
470
|
+
checklistCancel?.addEventListener('click', (event) => {
|
|
471
|
+
const checklistHolder = this.shadowRoot?.querySelector('.checklists');
|
|
472
|
+
|
|
473
|
+
Array.from(checklistHolder?.querySelectorAll('label input')).forEach((element, index) => {
|
|
474
|
+
element.checked = this.hasAttribute(`data-hide-col${index + 1}`) ? false : true;
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
setColumnFilters();
|
|
478
|
+
checklistSave.closest('dialog')?.close();
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
// #endregion
|
|
390
482
|
}
|
|
391
483
|
|
|
392
484
|
static get observedAttributes(): Array<string> {
|
|
@@ -65,9 +65,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
65
65
|
this.shadowRoot?.appendChild(template.content.cloneNode(true));
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
async connectedCallback() {
|
|
69
|
-
const component = this;
|
|
70
|
-
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
68
|
+
async connectedCallback(): void {
|
|
71
69
|
const lookup = this.shadowRoot.querySelector('[name="postcode"]');
|
|
72
70
|
const lookupWrapper = this.shadowRoot.querySelector('.postcode-lookup');
|
|
73
71
|
const manualWrapper = this.shadowRoot.querySelector('.manual-address');
|
|
@@ -77,19 +75,20 @@ class iamAddressLookup extends HTMLElement {
|
|
|
77
75
|
const switchLookupBtn = this.shadowRoot.querySelector('.switch-to-lookup-btn');
|
|
78
76
|
const title = this.hasAttribute('data-title') ? this.getAttribute('data-title') : 'Property address';
|
|
79
77
|
const preFilledAddressBtn = this.shadowRoot.querySelector('.pre-filled-address + button');
|
|
78
|
+
const dataDisplayText = this.hasAttribute('data-display-text');
|
|
80
79
|
|
|
81
|
-
Array.from(this.shadowRoot.querySelectorAll('.title')).forEach((titleElement
|
|
80
|
+
Array.from(this.shadowRoot.querySelectorAll('.title')).forEach((titleElement) => {
|
|
82
81
|
titleElement.innerHTML = title;
|
|
83
82
|
});
|
|
84
83
|
|
|
85
|
-
function checkFilled(component) {
|
|
84
|
+
function checkFilled(component): void {
|
|
86
85
|
const preFilledAddress = component.shadowRoot.querySelector('.pre-filled-address');
|
|
87
86
|
let preFilled = true;
|
|
88
87
|
preFilledAddress.innerHTML = '';
|
|
89
88
|
|
|
90
89
|
Array.from(
|
|
91
90
|
component.querySelectorAll('input[required],input[data-required],select[required],select[data-required]')
|
|
92
|
-
).forEach((input
|
|
91
|
+
).forEach((input) => {
|
|
93
92
|
const value = input.value;
|
|
94
93
|
|
|
95
94
|
if (!value) preFilled = false;
|
|
@@ -106,7 +105,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
106
105
|
}
|
|
107
106
|
checkFilled(this);
|
|
108
107
|
|
|
109
|
-
this.addEventListener('filled', (
|
|
108
|
+
this.addEventListener('filled', () => {
|
|
110
109
|
checkFilled(this);
|
|
111
110
|
});
|
|
112
111
|
|
|
@@ -126,7 +125,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
126
125
|
|
|
127
126
|
const values = JSON.parse(this.getAttribute('data-use'));
|
|
128
127
|
|
|
129
|
-
Object.keys(values).forEach((key
|
|
128
|
+
Object.keys(values).forEach((key) => {
|
|
130
129
|
const value = values[key];
|
|
131
130
|
if (this.querySelector(`[data-name="${key}"]`)) this.querySelector(`[data-name="${key}"]`).value = value;
|
|
132
131
|
else if (this.querySelector(`[name="${key}"]`)) this.querySelector(`[name="${key}"]`).value = value;
|
|
@@ -140,41 +139,41 @@ class iamAddressLookup extends HTMLElement {
|
|
|
140
139
|
lookupWrapper.classList.add('js-hide');
|
|
141
140
|
manualWrapper.classList.remove('js-hide');
|
|
142
141
|
|
|
143
|
-
Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input
|
|
142
|
+
Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input) => {
|
|
144
143
|
input.setAttribute('required', 'true');
|
|
145
144
|
});
|
|
146
145
|
}
|
|
147
146
|
|
|
148
|
-
function openManualWrapper() {
|
|
147
|
+
function openManualWrapper(): void {
|
|
149
148
|
lookupWrapper.classList.add('js-hide');
|
|
150
149
|
manualWrapper.classList.remove('js-hide');
|
|
151
150
|
|
|
152
|
-
Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input
|
|
151
|
+
Array.from(manualWrapper.querySelectorAll('[data-required]')).forEach((input) => {
|
|
153
152
|
input.setAttribute('required', 'true');
|
|
154
153
|
});
|
|
155
154
|
|
|
156
155
|
manualWrapper.scrollIntoView();
|
|
157
156
|
}
|
|
158
157
|
|
|
159
|
-
preFilledAddressBtn.addEventListener('click', (
|
|
158
|
+
preFilledAddressBtn.addEventListener('click', () => {
|
|
160
159
|
preFilledWrapper.classList.add('js-hide');
|
|
161
160
|
openManualWrapper();
|
|
162
161
|
});
|
|
163
|
-
switchManualBtn.addEventListener('click', (
|
|
162
|
+
switchManualBtn.addEventListener('click', () => {
|
|
164
163
|
openManualWrapper();
|
|
165
164
|
});
|
|
166
|
-
switchLookupBtn.addEventListener('click', (
|
|
165
|
+
switchLookupBtn.addEventListener('click', () => {
|
|
167
166
|
lookupWrapper.classList.remove('js-hide');
|
|
168
167
|
manualWrapper.classList.add('js-hide');
|
|
169
168
|
|
|
170
169
|
lookupWrapper.scrollIntoView();
|
|
171
170
|
});
|
|
172
171
|
|
|
173
|
-
lookup.addEventListener('keyup', (
|
|
172
|
+
lookup.addEventListener('keyup', () => {
|
|
174
173
|
if (lookup.value.length >= 3) search(lookup.value);
|
|
175
174
|
});
|
|
176
175
|
|
|
177
|
-
lookup.addEventListener('change', (
|
|
176
|
+
lookup.addEventListener('change', () => {
|
|
178
177
|
if (lookup.value.length >= 3) {
|
|
179
178
|
search(lookup.value);
|
|
180
179
|
|
|
@@ -184,7 +183,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
184
183
|
|
|
185
184
|
const values = JSON.parse(list.querySelector(`[value="${lookup.value}"]`).getAttribute('data-values'));
|
|
186
185
|
|
|
187
|
-
Object.keys(values).forEach((key
|
|
186
|
+
Object.keys(values).forEach((key) => {
|
|
188
187
|
const value = values[key];
|
|
189
188
|
if (this.querySelector(`[data-name="${key}"]`) && value != '')
|
|
190
189
|
this.querySelector(`[data-name="${key}"]`).value = value;
|
|
@@ -200,7 +199,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
200
199
|
// Focus on first input
|
|
201
200
|
this.querySelector('[name]').focus();
|
|
202
201
|
|
|
203
|
-
Array.from(this.querySelectorAll('[data-required]')).forEach((input
|
|
202
|
+
Array.from(this.querySelectorAll('[data-required]')).forEach((input) => {
|
|
204
203
|
input.setAttribute('required', 'true');
|
|
205
204
|
});
|
|
206
205
|
lookup.removeAttribute('required');
|
|
@@ -211,7 +210,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
211
210
|
}
|
|
212
211
|
});
|
|
213
212
|
|
|
214
|
-
const search = async (postcode) => {
|
|
213
|
+
const search = async (postcode): any => {
|
|
215
214
|
let ajaxURL = this.getAttribute('data-url');
|
|
216
215
|
ajaxURL += `${encodeURI(postcode)}`;
|
|
217
216
|
|
|
@@ -241,7 +240,7 @@ class iamAddressLookup extends HTMLElement {
|
|
|
241
240
|
.then((response) => {
|
|
242
241
|
// populate datalist
|
|
243
242
|
let listString = '';
|
|
244
|
-
response.forEach((address
|
|
243
|
+
response.forEach((address) => {
|
|
245
244
|
// Deal with agent platform response
|
|
246
245
|
if (typeof address.value == 'object') {
|
|
247
246
|
const values = JSON.stringify(address.value);
|
|
@@ -249,8 +248,8 @@ class iamAddressLookup extends HTMLElement {
|
|
|
249
248
|
} else {
|
|
250
249
|
const values = JSON.stringify(address);
|
|
251
250
|
|
|
252
|
-
if (
|
|
253
|
-
listString += `<option value="${address[
|
|
251
|
+
if (dataDisplayText) {
|
|
252
|
+
listString += `<option value="${address[dataDisplayText]}, ${postcode}" data-values='${values}'></option>`;
|
|
254
253
|
} else {
|
|
255
254
|
let itemString = '';
|
|
256
255
|
for (const [key, value] of Object.entries(address)) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import createAppliedFilters from '../../modules/applied-filters';
|
|
3
2
|
|
|
4
3
|
// Data layer Web component created
|
|
@@ -35,7 +34,7 @@ class iamAppliedFilters extends HTMLElement {
|
|
|
35
34
|
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
36
35
|
}
|
|
37
36
|
|
|
38
|
-
connectedCallback() {
|
|
37
|
+
connectedCallback(): void {
|
|
39
38
|
createAppliedFilters(this, this.shadowRoot.querySelector('.applied-filters'));
|
|
40
39
|
}
|
|
41
40
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import {
|
|
3
2
|
addClasses,
|
|
4
3
|
setupChart,
|
|
@@ -43,9 +42,10 @@ class iamBarChart extends HTMLElement {
|
|
|
43
42
|
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
connectedCallback() {
|
|
45
|
+
connectedCallback(): void {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
47
47
|
const chartComponent = this;
|
|
48
|
-
const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
|
|
48
|
+
//const chartID = `chart-${Date.now() + (Math.floor(Math.random() * 100) + 1)}`;
|
|
49
49
|
const orginalTable = this.querySelector('table');
|
|
50
50
|
const clonedTable = orginalTable.cloneNode(true);
|
|
51
51
|
const chart = this.shadowRoot.querySelector('.chart');
|
|
@@ -72,8 +72,6 @@ class iamBarChart extends HTMLElement {
|
|
|
72
72
|
|
|
73
73
|
trackComponent(chartComponent, 'iam-barchart', ['view-change']);
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
attributeChangedCallback(attrName, oldVal, newVal) {}
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
export default iamBarChart;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
**Add the below to your initialise script**
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
import('../node_modules/@iamproperty/components/assets/js/components/accordion/accordion.component.min').then(module => { // Might need to update the path
|
|
5
|
+
|
|
6
|
+
if (!window.customElements.get(`iam-accordion`))
|
|
7
|
+
window.customElements.define(`iam-accordion`, module.default);
|
|
8
|
+
|
|
9
|
+
}).catch((err) => {
|
|
10
|
+
console.log(err.message);
|
|
11
|
+
});
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**Add the below HTML code to where you want the component to live.**
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
<iam-accordion class="container">
|
|
18
|
+
<details id="question1" class="accordion-item">
|
|
19
|
+
<summary class="accordion-header accordion-button h4">Question 1</summary>
|
|
20
|
+
<p>Answer </p>
|
|
21
|
+
</details>
|
|
22
|
+
<details class="accordion-item">
|
|
23
|
+
<summary class="accordion-header accordion-button h4">Question 2</summary>
|
|
24
|
+
<p>Answer </p>
|
|
25
|
+
</details>
|
|
26
|
+
</iam-accordion>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Class modifiers
|
|
30
|
+
|
|
31
|
+
- Adding a class of **.accordion--keep-open** to the accordion will stop the items from closing when another one is opened.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Data layer Web component created
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
dataLayer: Array<object>;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
window.dataLayer = window.dataLayer || [];
|
|
8
|
+
window.dataLayer.push({
|
|
9
|
+
event: 'customElementRegistered',
|
|
10
|
+
element: 'accordion',
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
class iamAccordion extends HTMLElement {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.attachShadow({ mode: 'open' });
|
|
17
|
+
|
|
18
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
19
|
+
? document.body.getAttribute('data-assets-location')
|
|
20
|
+
: '/assets';
|
|
21
|
+
const loadCSS = `@import "${assetLocation}/css/components/bento-grid.component.css";`;
|
|
22
|
+
|
|
23
|
+
const template = document.createElement('template');
|
|
24
|
+
template.innerHTML = `
|
|
25
|
+
<style>
|
|
26
|
+
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
27
|
+
|
|
28
|
+
${loadCSS}
|
|
29
|
+
</style>
|
|
30
|
+
<div class="wrapper">
|
|
31
|
+
<slot></slot>
|
|
32
|
+
</div>
|
|
33
|
+
`;
|
|
34
|
+
this.shadowRoot?.appendChild(template.content.cloneNode(true));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
connectedCallback(): void {
|
|
38
|
+
this.classList.add('loaded');
|
|
39
|
+
|
|
40
|
+
const arrDetails = this.querySelectorAll('details');
|
|
41
|
+
|
|
42
|
+
Array.from(arrDetails).forEach((details: HTMLDetailsElement) => {
|
|
43
|
+
details.classList.add('bg-primary');
|
|
44
|
+
const summary = details.querySelector('summary');
|
|
45
|
+
|
|
46
|
+
summary?.classList.add('h3');
|
|
47
|
+
|
|
48
|
+
if (!summary?.querySelector('[role="presentation"]'))
|
|
49
|
+
summary?.insertAdjacentHTML('beforeend', ` <span role="presentation">Find out more</span>`);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
this.addEventListener('click', (event) => {
|
|
53
|
+
if (event && event.target instanceof HTMLElement && event.target.closest('details summary')) {
|
|
54
|
+
const summary = event.target.closest('details summary');
|
|
55
|
+
const details = summary?.closest('details');
|
|
56
|
+
|
|
57
|
+
details?.classList.add('animating');
|
|
58
|
+
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
details?.classList.remove('animating');
|
|
61
|
+
}, 1100);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default iamAccordion;
|