@iamproperty/components 7.5.1--beta5 → 7.5.1--beta7
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 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/applied-filters.css +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/input-range.component.css +1 -0
- package/assets/css/components/input-range.component.css.map +1 -0
- package/assets/css/components/input.component.css +1 -0
- package/assets/css/components/input.component.css.map +1 -0
- package/assets/css/components/modal.component.css +1 -0
- package/assets/css/components/modal.component.css.map +1 -0
- package/assets/css/components/multi-step-modal.component.css +1 -0
- package/assets/css/components/multi-step-modal.component.css.map +1 -0
- package/assets/css/components/multi-step-modal.global.css +1 -0
- package/assets/css/components/multi-step-modal.global.css.map +1 -0
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.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/password.component.css +1 -0
- package/assets/css/components/password.component.css.map +1 -0
- package/assets/css/components/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tabs.config.css +1 -1
- package/assets/css/components/tabs.config.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 -1
- package/assets/css/mobile-core.min.css.map +1 -1
- package/assets/css/mobile.min.css +1 -1
- package/assets/css/mobile.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.js +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +3 -3
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +2 -4
- package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +45 -0
- package/assets/js/components/address-lookup/address-lookup.component.min.js +12 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.js +0 -2
- package/assets/js/components/applied-filters/applied-filters.component.min.js +5 -7
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +5 -5
- package/assets/js/components/card/card.component.min.js +8 -8
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/content/content.component.min.js +1 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
- package/assets/js/components/filter-card/filter-card.component.js +19 -0
- 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.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/input/input.component.js +128 -0
- package/assets/js/components/input/input.component.min.js +16 -0
- package/assets/js/components/input/input.component.min.js.map +1 -0
- package/assets/js/components/input-range/input-range.component.js +62 -0
- package/assets/js/components/input-range/input-range.component.min.js +14 -0
- package/assets/js/components/input-range/input-range.component.min.js.map +1 -0
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/modal/modal.component.js +141 -0
- package/assets/js/components/modal/modal.component.min.js +28 -0
- package/assets/js/components/modal/modal.component.min.js.map +1 -0
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.js +233 -0
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +17 -0
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -0
- package/assets/js/components/multiselect/multiselect.component.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +5 -5
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +3 -3
- package/assets/js/components/password/password.component.js +93 -0
- package/assets/js/components/password/password.component.min.js +17 -0
- package/assets/js/components/password/password.component.min.js.map +1 -0
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +1 -1
- 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 +1 -1
- package/assets/js/components/search/search.component.min.js +5 -5
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +3 -3
- package/assets/js/components/split-button/split-button.component.min.js +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +5 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +22 -9
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
- package/assets/js/components/table/table.component.min.js +3 -3
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- package/assets/js/components/video-card/video-card.component.min.js +4 -4
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/applied-filters.js +78 -61
- package/assets/js/modules/card.module.js +6 -1
- package/assets/js/modules/dialogs.js +6 -2
- package/assets/js/modules/password.js +72 -0
- package/assets/js/modules/table.js +10 -6
- package/assets/js/scripts.bundle.js +2 -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 +0 -2
- package/assets/js/tests/helpers.spec.js +54 -1
- package/assets/sass/_components.scss +2 -0
- package/assets/sass/_elements.scss +2 -0
- package/assets/sass/components/actionbar.component.scss +1 -0
- package/assets/sass/components/address-lookup.component.scss +24 -0
- package/assets/sass/components/applied-filters.scss +10 -14
- package/assets/sass/components/input-range.component.scss +38 -0
- package/assets/sass/components/input.component.scss +102 -0
- package/assets/sass/components/modal.component.scss +269 -0
- package/assets/sass/components/multi-step-modal.component.scss +255 -0
- package/assets/sass/components/multi-step-modal.global.scss +92 -0
- package/assets/sass/components/multiselect.scss +2 -2
- package/assets/sass/components/password.component.scss +60 -0
- package/assets/sass/components/tabs.config.scss +2 -2
- package/assets/sass/elements/badge-tag.scss +0 -1
- package/assets/sass/elements/details.scss +12 -7
- package/assets/sass/elements/dialog.scss +46 -5
- package/assets/sass/elements/forms.scss +41 -177
- package/assets/sass/elements/hr.scss +1 -1
- package/assets/sass/elements/modal.scss +19 -21
- package/assets/sass/elements/prefix.scss +115 -0
- package/assets/ts/components/accordion/accordion.component.ts +1 -1
- package/assets/ts/components/actionbar/actionbar.component.ts +3 -10
- package/assets/ts/components/address-lookup/address-lookup.component.ts +60 -0
- package/assets/ts/components/applied-filters/applied-filters.component.ts +0 -2
- package/assets/ts/components/filter-card/filter-card.component.ts +27 -0
- package/assets/ts/components/input/input.component.ts +168 -0
- package/assets/ts/components/input-range/input-range.component.ts +78 -0
- package/assets/ts/components/modal/modal.component.ts +188 -0
- package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +304 -0
- package/assets/ts/components/multiselect/multiselect.component.ts +1 -1
- package/assets/ts/components/password/password.component.ts +118 -0
- package/assets/ts/components/search/search.component.ts +1 -1
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +5 -3
- package/assets/ts/modules/applied-filters.ts +107 -71
- package/assets/ts/modules/card.module.ts +9 -4
- package/assets/ts/modules/dialogs.ts +6 -2
- package/assets/ts/modules/password.ts +82 -0
- package/assets/ts/modules/table.ts +13 -6
- package/assets/ts/scripts.ts +2 -2
- package/assets/ts/tests/helpers.spec.ts +100 -1
- package/dist/components.es.js +641 -959
- package/dist/components.umd.js +281 -182
- package/package.json +2 -2
- package/src/components/Input/Input.vue +19 -363
- package/src/components/InputRange/InputRange.vue +22 -0
- package/src/components/Modal/Modal.vue +22 -0
- package/src/components/MultiStepModal/MultiStepModal.vue +23 -0
- package/src/components/{PasswordIndicator/PasswordIndicator.vue → Password/Password.vue} +23 -23
- package/assets/js/components/password-indicator/password-indicator.component.js +0 -19
- package/assets/js/components/password-indicator/password-indicator.component.min.js +0 -7
- package/assets/js/components/password-indicator/password-indicator.component.min.js.map +0 -1
- package/assets/js/modules/form.js +0 -125
- package/assets/js/modules/inputs.js +0 -151
- package/assets/js/modules/password-indicator.js +0 -21
- package/assets/ts/components/password-indicator/password-indicator.component.ts +0 -24
- package/assets/ts/modules/form.ts +0 -166
- package/assets/ts/modules/inputs.ts +0 -181
- package/assets/ts/modules/password-indicator.ts +0 -29
|
@@ -8,8 +8,12 @@ $darkMode: 'true' !default;
|
|
|
8
8
|
@include layer('elements', $layers) {
|
|
9
9
|
// #region modal styling
|
|
10
10
|
|
|
11
|
-
*:not(.dialog__wrapper) > dialog[open] {
|
|
12
|
-
|
|
11
|
+
*:not(.dialog__wrapper) > dialog[open] { // change this selector to be a dialog without a popover attribute
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
&:has(.mh-lg){
|
|
15
|
+
overflow-y: hidden!important;
|
|
16
|
+
}
|
|
13
17
|
width: 90vw;
|
|
14
18
|
max-width: rem(324); // col-width*4
|
|
15
19
|
|
|
@@ -17,6 +21,19 @@ $darkMode: 'true' !default;
|
|
|
17
21
|
max-height: min(90vh, #{rem(752)});
|
|
18
22
|
overscroll-behavior: contain;
|
|
19
23
|
|
|
24
|
+
@include media-breakpoint-up(sm, $mobileOnly) {
|
|
25
|
+
--dialog-padding: #{rem(32)};
|
|
26
|
+
min-width: rem(335);
|
|
27
|
+
width: fit-content;
|
|
28
|
+
max-width: rem(686);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@include media-breakpoint-up(md, $mobileOnly) {
|
|
32
|
+
min-width: rem(454);
|
|
33
|
+
width: fit-content;
|
|
34
|
+
max-width: rem(736);
|
|
35
|
+
}
|
|
36
|
+
|
|
20
37
|
// Close button
|
|
21
38
|
> form:first-child {
|
|
22
39
|
position: static;
|
|
@@ -83,19 +100,6 @@ $darkMode: 'true' !default;
|
|
|
83
100
|
}
|
|
84
101
|
}
|
|
85
102
|
|
|
86
|
-
@include media-breakpoint-up(sm, $mobileOnly) {
|
|
87
|
-
--dialog-padding: #{rem(32)};
|
|
88
|
-
min-width: rem(335);
|
|
89
|
-
width: fit-content;
|
|
90
|
-
max-width: rem(686);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
@include media-breakpoint-up(md, $mobileOnly) {
|
|
94
|
-
min-width: rem(454);
|
|
95
|
-
width: fit-content;
|
|
96
|
-
max-width: rem(736);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
103
|
&:has(.youtube-embed) {
|
|
100
104
|
padding: 0 !important;
|
|
101
105
|
}
|
|
@@ -134,12 +138,6 @@ $darkMode: 'true' !default;
|
|
|
134
138
|
}
|
|
135
139
|
}
|
|
136
140
|
}
|
|
137
|
-
|
|
138
|
-
dialog::backdrop {
|
|
139
|
-
background: rgba(0, 0, 0, 0.3);
|
|
140
|
-
backdrop-filter: blur(4px);
|
|
141
|
-
overscroll-behavior: contain;
|
|
142
|
-
}
|
|
143
141
|
// #endregion
|
|
144
142
|
|
|
145
143
|
// #region Transactional
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use 'sass:math';
|
|
3
|
+
|
|
4
|
+
@use '../_func' as *;
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@layer elements{
|
|
8
|
+
:is(.prefix, .suffix) {
|
|
9
|
+
display: none;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:is(.prefix, .suffix) {
|
|
13
|
+
--fa-display: flex;
|
|
14
|
+
display: inline-block;
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
align-items: center;
|
|
19
|
+
width: auto;
|
|
20
|
+
padding: 0 rem(12);
|
|
21
|
+
font-size: var(--input-fs, #{rem(16)});
|
|
22
|
+
line-height: var(--input-lh, #{rem(20)});
|
|
23
|
+
color: var(--colour-body);
|
|
24
|
+
background-color: var(--colour-primary-theme);
|
|
25
|
+
border: 2px solid var(--colour-primary);
|
|
26
|
+
color: var(--colour-white);
|
|
27
|
+
margin: 0 !important;
|
|
28
|
+
//margin-bottom: 1rem;
|
|
29
|
+
border-end-start-radius: rem(8);
|
|
30
|
+
border-start-start-radius: rem(8);
|
|
31
|
+
min-width: calc(#{rem(20 + 12 + 12)} + 4px);
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
text-align: center;
|
|
35
|
+
text-overflow: ellipsis;
|
|
36
|
+
position: relative;
|
|
37
|
+
height: stretch;
|
|
38
|
+
|
|
39
|
+
flex-shrink: 0;
|
|
40
|
+
|
|
41
|
+
&:after {
|
|
42
|
+
display: inline-block;
|
|
43
|
+
max-width: rem(20);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&[class*='fa-'] {
|
|
47
|
+
width: calc(#{rem(20 + 12 + 12)} + 4px);
|
|
48
|
+
padding-inline: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
select {
|
|
52
|
+
position: absolute;
|
|
53
|
+
inset: 0;
|
|
54
|
+
opacity: 0;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
span {
|
|
59
|
+
display: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
select:has(option:nth-child(1):checked) ~ span:nth-of-type(1),
|
|
63
|
+
select:has(option:nth-child(2):checked) ~ span:nth-of-type(2),
|
|
64
|
+
select:has(option:nth-child(3):checked) ~ span:nth-of-type(3),
|
|
65
|
+
select:has(option:nth-child(4):checked) ~ span:nth-of-type(4),
|
|
66
|
+
select:has(option:nth-child(5):checked) ~ span:nth-of-type(5),
|
|
67
|
+
select:has(option:nth-child(6):checked) ~ span:nth-of-type(6),
|
|
68
|
+
select:has(option:nth-child(7):checked) ~ span:nth-of-type(7),
|
|
69
|
+
select:has(option:nth-child(8):checked) ~ span:nth-of-type(8),
|
|
70
|
+
select:has(option:nth-child(9):checked) ~ span:nth-of-type(9),
|
|
71
|
+
select:has(option:nth-child(10):checked) ~ span:nth-of-type(10) {
|
|
72
|
+
display: block;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
select ~ span:after {
|
|
76
|
+
content: ' \f078';
|
|
77
|
+
font-family: 'Font Awesome 6 Pro';
|
|
78
|
+
font-size: 0.8em;
|
|
79
|
+
display: inline-block;
|
|
80
|
+
padding-left: 1em;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
select:focus-visible ~ span:after {
|
|
84
|
+
content: '\f077';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.prefix {
|
|
89
|
+
border-right: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.suffix {
|
|
93
|
+
border-left: none;
|
|
94
|
+
border-end-start-radius: 0;
|
|
95
|
+
border-start-start-radius: 0;
|
|
96
|
+
border-start-end-radius: rem(8) !important;
|
|
97
|
+
border-end-end-radius: rem(8) !important;
|
|
98
|
+
order: 2;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.prefix span {
|
|
102
|
+
display: none;
|
|
103
|
+
|
|
104
|
+
small {
|
|
105
|
+
font-size: 0.8em;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.prefix
|
|
110
|
+
~ :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']), textarea, output) {
|
|
111
|
+
border-end-start-radius: 0 !important;
|
|
112
|
+
border-start-start-radius: 0 !important;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
}
|
|
@@ -34,7 +34,7 @@ class iamAccordion extends HTMLElement {
|
|
|
34
34
|
|
|
35
35
|
const details: NodeListOf<HTMLElement> = this.querySelectorAll(':scope > details');
|
|
36
36
|
|
|
37
|
-
if (!this.classList.contains('accordion--keep-open')) {
|
|
37
|
+
if (!this.classList.contains('accordion--keep-open') && !this.querySelector('details[name]')) {
|
|
38
38
|
// Add the toggle listeners.
|
|
39
39
|
details.forEach((targetDetail) => {
|
|
40
40
|
targetDetail.addEventListener('toggle', () => {
|
|
@@ -266,25 +266,18 @@ class iamActionbar extends HTMLElement {
|
|
|
266
266
|
this.dispatchEvent(changeEvent);
|
|
267
267
|
});
|
|
268
268
|
|
|
269
|
-
console.log(searchBar);
|
|
270
|
-
|
|
271
269
|
searchBar.addEventListener('click', (event) => {
|
|
272
270
|
|
|
273
|
-
console.log(event);
|
|
274
|
-
|
|
275
|
-
console.log(event.target.closest('button.suffix'));
|
|
276
|
-
|
|
277
271
|
if (event && event.target instanceof HTMLElement && event.target.closest('button.suffix')) {
|
|
278
272
|
|
|
279
|
-
|
|
280
|
-
|
|
281
273
|
const submitEvent = new CustomEvent('search-submit', {
|
|
282
274
|
detail: { search: searchBar.querySelector('input').value },
|
|
283
275
|
});
|
|
284
276
|
|
|
285
|
-
console.log(this)
|
|
286
|
-
|
|
287
277
|
this.dispatchEvent(submitEvent);
|
|
278
|
+
|
|
279
|
+
searchBar.classList.toggle('show');
|
|
280
|
+
searchBtn.toggleAttribute('aria-expanded');
|
|
288
281
|
}
|
|
289
282
|
});
|
|
290
283
|
|
|
@@ -34,6 +34,14 @@ class iamAddressLookup extends HTMLElement {
|
|
|
34
34
|
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
|
|
35
35
|
<div class="wrapper">
|
|
36
36
|
|
|
37
|
+
<div class="matched d-none">
|
|
38
|
+
<div class="inner">
|
|
39
|
+
<p><span class="matched-address"></span></p>
|
|
40
|
+
<button class="link use-matched">Yes, use this address</button>
|
|
41
|
+
<button class="link use-entered">No, use the address I entered</button>
|
|
42
|
+
</div>
|
|
43
|
+
<span class="invalid-feedback">We found a matching address based on the details you entered. Is this address correct?</span>
|
|
44
|
+
</div>
|
|
37
45
|
<div class="postcode-lookup was-validated">
|
|
38
46
|
<div>
|
|
39
47
|
<label class="mb-1"><span class="title text-lowercase"></span>
|
|
@@ -101,6 +109,11 @@ class iamAddressLookup extends HTMLElement {
|
|
|
101
109
|
let pageNumber = 1;
|
|
102
110
|
const atleastone = this.querySelector('.atleastone');
|
|
103
111
|
|
|
112
|
+
const matchedAddress = this.shadowRoot.querySelector('.matched-address');
|
|
113
|
+
const matchedAddressWrapper = this.shadowRoot.querySelector('.matched');
|
|
114
|
+
const matchedAddressUse = this.shadowRoot.querySelector('.matched .use-matched');
|
|
115
|
+
const matchedAddressEntered = this.shadowRoot.querySelector('.matched .use-entered');
|
|
116
|
+
|
|
104
117
|
Array.from(this.shadowRoot.querySelectorAll('.title')).forEach((titleElement) => {
|
|
105
118
|
titleElement.innerHTML = title;
|
|
106
119
|
});
|
|
@@ -588,6 +601,53 @@ class iamAddressLookup extends HTMLElement {
|
|
|
588
601
|
});
|
|
589
602
|
// #endregion
|
|
590
603
|
|
|
604
|
+
// #region Matched address
|
|
605
|
+
|
|
606
|
+
if(this.hasAttribute('data-matched')){
|
|
607
|
+
|
|
608
|
+
matchedAddressWrapper?.classList.remove('d-none');
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
if(this.hasAttribute('data-matched-label'))
|
|
612
|
+
matchedAddress?.innerHTML = this.getAttribute('data-matched-label');
|
|
613
|
+
|
|
614
|
+
matchedAddressEntered?.addEventListener('click', () => {
|
|
615
|
+
|
|
616
|
+
matchedAddressWrapper?.remove();
|
|
617
|
+
|
|
618
|
+
const useCheckbox = this.shadowRoot?.querySelector('[name="use"]');
|
|
619
|
+
useCheckbox.checked = true;
|
|
620
|
+
|
|
621
|
+
lookupWrapper.classList.add('js-hide');
|
|
622
|
+
manualWrapper.classList.remove('js-hide');
|
|
623
|
+
|
|
624
|
+
const values = JSON.parse(this.getAttribute('data-use'));
|
|
625
|
+
|
|
626
|
+
Object.keys(values).forEach((key) => {
|
|
627
|
+
const value = values[key];
|
|
628
|
+
if (this.querySelector(`[data-name="${key}"]`)) this.querySelector(`[data-name="${key}"]`).value = value;
|
|
629
|
+
else if (this.querySelector(`[name="${key}"]`)) this.querySelector(`[name="${key}"]`).value = value;
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
checkFilled(this);
|
|
633
|
+
});
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
matchedAddressUse?.addEventListener('click', () => {
|
|
637
|
+
|
|
638
|
+
matchedAddressWrapper?.remove();
|
|
639
|
+
|
|
640
|
+
const values = JSON.parse(this.getAttribute('data-matched'));
|
|
641
|
+
|
|
642
|
+
fillInputs(values);
|
|
643
|
+
checkFilled(this);
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
else {
|
|
647
|
+
matchedAddressWrapper?.remove();
|
|
648
|
+
}
|
|
649
|
+
// #endregion
|
|
650
|
+
|
|
591
651
|
advancedSelect(this, lookup, list, true);
|
|
592
652
|
}
|
|
593
653
|
}
|
|
@@ -74,6 +74,33 @@ class iamFilerCard extends HTMLElement {
|
|
|
74
74
|
|
|
75
75
|
trackComponent(cardComponent, 'iam-filter-card', ['select-card', 'unselect-card']);
|
|
76
76
|
}
|
|
77
|
+
|
|
78
|
+
static get observedAttributes(): any {
|
|
79
|
+
return ['data-total'];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
attributeChangedCallback(attrName, oldVal, newVal): void {
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
switch (attrName) {
|
|
87
|
+
case 'data-total': {
|
|
88
|
+
if (oldVal != newVal) {
|
|
89
|
+
|
|
90
|
+
const cardBody = this.shadowRoot.querySelector('.card__body');
|
|
91
|
+
|
|
92
|
+
if(!cardBody?.querySelector('.card__total'))
|
|
93
|
+
cardBody.insertAdjacentHTML('beforeend',`<div class="card__total">${newVal}</div>`);
|
|
94
|
+
else {
|
|
95
|
+
cardBody?.querySelector('.card__total')?.innerHTML = newVal;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
77
104
|
}
|
|
78
105
|
|
|
79
106
|
export default iamFilerCard;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global';
|
|
2
|
+
|
|
3
|
+
trackComponentRegistered('iam-iamPrefix');
|
|
4
|
+
class iamInput extends HTMLElement {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.attachShadow({ mode: 'open' });
|
|
8
|
+
|
|
9
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
10
|
+
? document.body.getAttribute('data-assets-location')
|
|
11
|
+
: '/assets';
|
|
12
|
+
|
|
13
|
+
const loadCSS = `@import "${assetLocation}/css/components/input.component.css";`;
|
|
14
|
+
|
|
15
|
+
const template = document.createElement('template');
|
|
16
|
+
template.innerHTML = `
|
|
17
|
+
<style>
|
|
18
|
+
${loadCSS}
|
|
19
|
+
</style>
|
|
20
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
|
|
21
|
+
<div class="wrapper" part="wrapper">
|
|
22
|
+
<span part="prefix"><slot name="prefix"></slot></span>
|
|
23
|
+
<slot></slot>
|
|
24
|
+
<slot part="suffix"><slot name="suffix"></slot></slot>
|
|
25
|
+
</div>
|
|
26
|
+
`;
|
|
27
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
connectedCallback(): void {
|
|
31
|
+
|
|
32
|
+
const component = this;
|
|
33
|
+
const input = this.querySelector('input');
|
|
34
|
+
const inputType = input?.hasAttribute('type') ? input?.getAttribute('type') : 'text';
|
|
35
|
+
const prefixIcon = this.shadowRoot?.querySelector('[part="prefix"]');
|
|
36
|
+
const suffixIcon = this.shadowRoot?.querySelector('[part="suffix"]');
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
if(this.closest('label'))
|
|
40
|
+
this.classList.add('mb-0');
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
const setIcon = (inputType) => {
|
|
44
|
+
|
|
45
|
+
// Pre set the icons
|
|
46
|
+
switch (inputType) {
|
|
47
|
+
case "date":
|
|
48
|
+
case "datetime-local":
|
|
49
|
+
case "year":
|
|
50
|
+
case "month":
|
|
51
|
+
case "week":
|
|
52
|
+
this.setAttribute('data-suffix-icon','calendar') ;
|
|
53
|
+
suffixIcon?.setAttribute('role','button');
|
|
54
|
+
break;
|
|
55
|
+
case "time":
|
|
56
|
+
this.setAttribute('data-suffix-icon','clock') ;
|
|
57
|
+
suffixIcon?.setAttribute('role','button');
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
this.removeAttribute('data-suffix-icon') ;
|
|
61
|
+
suffixIcon?.removeAttribute('role');
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
setIcon(inputType);
|
|
66
|
+
|
|
67
|
+
// Colour input field
|
|
68
|
+
if(input?.matches('[type="color"]')){
|
|
69
|
+
this.insertAdjacentHTML('beforeend', `<output></output>`);
|
|
70
|
+
|
|
71
|
+
input.addEventListener('input', () => {
|
|
72
|
+
|
|
73
|
+
input.nextElementSibling.value = input.value;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
if(this.hasAttribute('data-prefix-icon')){
|
|
79
|
+
prefixIcon?.className = `prefix fa-${this.hasAttribute('data-prefix-weight') ? this.getAttribute('data-prefix-weight') : 'regular'} fa-${this.getAttribute('data-prefix-icon')}`;
|
|
80
|
+
this.querySelector('input')?.classList.add('has-prefix');
|
|
81
|
+
}
|
|
82
|
+
if(this.hasAttribute('data-suffix-icon')){
|
|
83
|
+
suffixIcon?.className = `suffix fa-${this.hasAttribute('data-suffix-weight') ? this.getAttribute('data-suffix-weight') : 'regular'} fa-${this.getAttribute('data-suffix-icon')}`;
|
|
84
|
+
this.querySelector('input')?.classList.add('has-suffix');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if(this.shadowRoot.querySelector('[name="prefix"]')?.assignedElements().length){
|
|
88
|
+
this.shadowRoot.querySelector('[name="prefix"]')?.classList.add('prefix');
|
|
89
|
+
this.querySelector('input')?.classList.add('has-prefix');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(this.shadowRoot.querySelector('[name="suffix"]')?.assignedElements().length){
|
|
93
|
+
this.shadowRoot.querySelector('[name="suffix"]')?.classList.add('suffix');
|
|
94
|
+
this.querySelector('input')?.classList.add('has-suffix');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
// Change type
|
|
99
|
+
|
|
100
|
+
if(this.querySelector('[data-change-type]')){
|
|
101
|
+
const select = this.querySelector('[data-change-type]');
|
|
102
|
+
|
|
103
|
+
select.addEventListener('change', () => {
|
|
104
|
+
|
|
105
|
+
input.setAttribute('type', select.value);
|
|
106
|
+
|
|
107
|
+
setIcon(select.value);
|
|
108
|
+
if(this.getAttribute('data-suffix-icon')){
|
|
109
|
+
|
|
110
|
+
suffixIcon?.className = `suffix fa-${this.hasAttribute('data-suffix-weight') ? this.getAttribute('data-suffix-weight') : 'regular'} fa-${this.getAttribute('data-suffix-icon')}`;
|
|
111
|
+
input?.classList.add('has-suffix');
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
suffixIcon?.removeAttribute('class');
|
|
115
|
+
input?.classList.remove('has-suffix');
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
// #region Date restrictions
|
|
123
|
+
const today = new Date();
|
|
124
|
+
|
|
125
|
+
function formatDate(date, type = "date"): string {
|
|
126
|
+
const year = date.getFullYear();
|
|
127
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
128
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
129
|
+
|
|
130
|
+
if(type == "datetime-local")
|
|
131
|
+
return `${year}-${month}-${day}T00:00:00`;
|
|
132
|
+
|
|
133
|
+
return `${year}-${month}-${day}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const checkDayAllowed = (input,allowedDays) => {
|
|
137
|
+
|
|
138
|
+
const day = new Date(input.value).getUTCDay();
|
|
139
|
+
|
|
140
|
+
if (allowedDays.includes(day)) input.setCustomValidity('');
|
|
141
|
+
else input.setCustomValidity('That day of the week is not allowed');
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if(input?.matches('[type="date"], [type="datetime-local"]') && this.hasAttribute('data-allowed-days')){
|
|
145
|
+
const allowedDays = JSON.parse(`[${this.getAttribute('data-allowed-days')}]`);
|
|
146
|
+
|
|
147
|
+
checkDayAllowed(input,allowedDays);
|
|
148
|
+
input.addEventListener('input', () => { checkDayAllowed(input,allowedDays); });
|
|
149
|
+
}
|
|
150
|
+
// #endregion
|
|
151
|
+
|
|
152
|
+
suffixIcon.addEventListener('click', function () {
|
|
153
|
+
|
|
154
|
+
if(!component?.querySelector('select[data-change-type][slot="suffix"]'))
|
|
155
|
+
input.showPicker();
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
prefixIcon.addEventListener('click', function () {
|
|
159
|
+
|
|
160
|
+
if(!component?.querySelector('select[data-change-type][slot="prefix"]'))
|
|
161
|
+
input.showPicker();
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export default iamInput;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global';
|
|
2
|
+
|
|
3
|
+
trackComponentRegistered('iam-iamPrefix');
|
|
4
|
+
class iamDaterange extends HTMLElement {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.attachShadow({ mode: 'open' });
|
|
8
|
+
|
|
9
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
10
|
+
? document.body.getAttribute('data-assets-location')
|
|
11
|
+
: '/assets';
|
|
12
|
+
|
|
13
|
+
const loadCSS = `@import "${assetLocation}/css/components/input-range.component.css";`;
|
|
14
|
+
|
|
15
|
+
const template = document.createElement('template');
|
|
16
|
+
template.innerHTML = `
|
|
17
|
+
<style>
|
|
18
|
+
${loadCSS}
|
|
19
|
+
</style>
|
|
20
|
+
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
|
|
21
|
+
<div class="wrapper" part="wrapper">
|
|
22
|
+
<slot></slot>
|
|
23
|
+
</div>
|
|
24
|
+
`;
|
|
25
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
connectedCallback(): void {
|
|
29
|
+
|
|
30
|
+
const inputs = this.querySelectorAll('input,select');
|
|
31
|
+
|
|
32
|
+
if(inputs.length > 1){
|
|
33
|
+
|
|
34
|
+
const setMinMax = ():void => {
|
|
35
|
+
|
|
36
|
+
const min = inputs[0].value;
|
|
37
|
+
let max = inputs[1].value;
|
|
38
|
+
|
|
39
|
+
// Make sure the second input/select is always higher than the first input/select
|
|
40
|
+
if(parseInt(inputs[1].value) < parseInt(inputs[0].value)){
|
|
41
|
+
max = min;
|
|
42
|
+
inputs[1].value = min;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// First input/select
|
|
46
|
+
if(inputs[0].matches('input'))
|
|
47
|
+
inputs[0].setAttribute('max',max);
|
|
48
|
+
|
|
49
|
+
if(inputs[0].matches('select')){
|
|
50
|
+
Array.from(inputs[0].querySelectorAll('option')).forEach((option) => {
|
|
51
|
+
|
|
52
|
+
if (parseInt(option.getAttribute('value')) > max) option.classList.add('d-none');
|
|
53
|
+
else option.classList.remove('d-none');
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Second input/select
|
|
58
|
+
if(inputs[1].matches('input'))
|
|
59
|
+
inputs[1].setAttribute('min',min);
|
|
60
|
+
|
|
61
|
+
Array.from(inputs[1].querySelectorAll('option')).forEach((option) => {
|
|
62
|
+
|
|
63
|
+
if (parseInt(option.getAttribute('value')) < min) option.classList.add('d-none');
|
|
64
|
+
else option.classList.remove('d-none');
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
setMinMax();
|
|
68
|
+
|
|
69
|
+
this.addEventListener('change', () => {
|
|
70
|
+
|
|
71
|
+
setMinMax();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default iamDaterange;
|