@iamproperty/components 7.6.4--beta2 → 7.6.4--beta4
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/barchart.component.css +1 -1
- package/assets/css/components/barchart.component.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/carousel.component.css +1 -1
- package/assets/css/components/carousel.component.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/content.component.css +1 -1
- package/assets/css/components/content.component.css.map +1 -1
- package/assets/css/components/doughnutchart.component.css +1 -1
- package/assets/css/components/doughnutchart.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/header.css +1 -1
- package/assets/css/components/header.css.map +1 -1
- package/assets/css/components/modal.component.css +1 -1
- package/assets/css/components/modal.component.css.map +1 -1
- package/assets/css/components/multi-step-modal.component.css +1 -1
- package/assets/css/components/multi-step-modal.component.css.map +1 -1
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.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 -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/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/split-button.component.css +1 -1
- package/assets/css/components/split-button.component.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/tag.component.css +1 -1
- package/assets/css/components/tag.component.css.map +1 -1
- package/assets/css/components/tag.preload.css +1 -1
- package/assets/css/components/tag.preload.css.map +1 -1
- package/assets/css/components/tooltip.component.css +1 -1
- package/assets/css/components/tooltip.component.css.map +1 -1
- package/assets/css/components/video-modal.component.css +1 -1
- package/assets/css/components/video-modal.component.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.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.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +2 -2
- package/assets/js/components/address-lookup/address-lookup.component.js +11 -5
- package/assets/js/components/address-lookup/address-lookup.component.min.js +4 -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.min.js +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +4 -4
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +2 -2
- package/assets/js/components/carousel/carousel.component.min.js +3 -3
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +2 -2
- package/assets/js/components/content/content.component.min.js +2 -2
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +4 -4
- package/assets/js/components/fileupload/fileupload.component.min.js +2 -2
- package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/form/form.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +2 -2
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/input/input.component.min.js +1 -1
- package/assets/js/components/input-range/input-range.component.min.js +1 -1
- 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 +1 -1
- package/assets/js/components/modal/modal.component.min.js +3 -3
- package/assets/js/components/modal/modal.component.min.js.map +1 -1
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
- package/assets/js/components/multiselect/multiselect.component.js +9 -76
- package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +2 -2
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +2 -2
- package/assets/js/components/password/password.component.min.js +1 -1
- package/assets/js/components/popover/popover.component.min.js +1 -1
- 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/rating/rating.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +2 -2
- package/assets/js/components/split-button/split-button.component.min.js +5 -5
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +39 -2
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +10 -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 +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- package/assets/js/components/tag/tag.component.js +6 -1
- package/assets/js/components/tag/tag.component.min.js +4 -4
- package/assets/js/components/tag/tag.component.min.js.map +1 -1
- package/assets/js/components/tooltip/tooltip.component.min.js +2 -2
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/video-modal/video-modal.component.min.js +3 -3
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/dropdown.js +97 -4
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/_components.scss +0 -2
- package/assets/sass/_elements.scss +1 -0
- package/assets/sass/components/multiselect.preload.scss +0 -55
- package/assets/sass/components/multiselect.scss +172 -174
- package/assets/sass/components/tag.component.scss +38 -57
- package/assets/sass/components/tag.preload.scss +1 -26
- package/assets/sass/components/tooltip.component.scss +16 -15
- package/assets/sass/elements/button__group.css +43 -5
- package/assets/sass/elements/container.scss +7 -2
- package/assets/sass/elements/dropdown.scss +87 -0
- package/assets/sass/elements/forms.scss +6 -0
- package/assets/sass/foundations/colours.scss +10 -7
- package/assets/ts/components/address-lookup/address-lookup.component.ts +12 -5
- package/assets/ts/components/modal/modal.component.ts +1 -1
- package/assets/ts/components/multiselect/multiselect.component.ts +10 -78
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +51 -2
- package/assets/ts/components/tag/tag.component.ts +8 -11
- package/assets/ts/modules/dropdown.ts +117 -5
- package/dist/components.es.js +28 -28
- package/dist/components.umd.js +232 -225
- package/package.json +2 -2
|
@@ -1,78 +1,59 @@
|
|
|
1
1
|
@use '../_func' as *;
|
|
2
2
|
@use '../elements/forms';
|
|
3
|
-
|
|
4
3
|
@use '../elements/admin-panel.scss' as *;
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
@use '../elements/dropdown.scss' as *;
|
|
7
5
|
@use '../utilities/visually-hidden' as *;
|
|
8
6
|
@use '../utilities/display' as *;
|
|
7
|
+
|
|
9
8
|
*,
|
|
10
9
|
*::before,
|
|
11
10
|
*::after {
|
|
12
11
|
box-sizing: border-box;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
.wrapper {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
14
|
+
@layer components {
|
|
15
|
+
.wrapper {
|
|
16
|
+
|
|
17
|
+
position: relative;
|
|
18
|
+
display: inline-block;
|
|
19
|
+
margin-bottom: 1rem;
|
|
20
|
+
|
|
21
|
+
input {
|
|
22
|
+
position: absolute;
|
|
23
|
+
min-height: unset;
|
|
24
|
+
top: 50%;
|
|
25
|
+
left: 0;
|
|
26
|
+
transform: translate(0,-50%);
|
|
27
|
+
z-index: -99;
|
|
28
|
+
opacity: 0;
|
|
29
|
+
}
|
|
30
30
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
::slotted(*) {
|
|
34
|
-
margin-bottom: 0!important;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
input:focus {
|
|
41
|
-
|
|
42
|
-
opacity: 1;
|
|
43
|
-
z-index: 99;
|
|
44
|
-
}
|
|
45
31
|
|
|
32
|
+
::slotted(*) {
|
|
33
|
+
margin-bottom: 0!important;
|
|
34
|
+
}
|
|
46
35
|
|
|
47
|
-
.dropdown {
|
|
48
|
-
position: absolute;
|
|
49
|
-
top: calc(100% + 0.5rem);
|
|
50
|
-
padding: 0;
|
|
51
|
-
left: 0;
|
|
52
|
-
width: 100%;
|
|
53
|
-
margin: 0;
|
|
54
|
-
z-index: 99;
|
|
55
|
-
display: none;
|
|
56
|
-
max-height: rem(244) !important;
|
|
57
|
-
overflow: auto;
|
|
58
36
|
|
|
59
|
-
|
|
60
|
-
|
|
37
|
+
input:focus {
|
|
38
|
+
|
|
39
|
+
opacity: 1;
|
|
40
|
+
z-index: 99;
|
|
61
41
|
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.wrapper:is(:focus-within) .dropdown {
|
|
65
|
-
display: var(--display-panel, none);
|
|
66
|
-
}
|
|
67
42
|
|
|
68
|
-
|
|
69
|
-
.wrapper .dropdown:hover {
|
|
43
|
+
.wrapper:is(:focus-within) .dropdown {
|
|
70
44
|
display: var(--display-panel, none);
|
|
71
45
|
}
|
|
72
|
-
}
|
|
73
46
|
|
|
74
|
-
@media (hover:
|
|
75
|
-
|
|
76
|
-
|
|
47
|
+
@media (hover: hover) {
|
|
48
|
+
.wrapper .dropdown:hover {
|
|
49
|
+
display: var(--display-panel, none);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@media (hover: none) {
|
|
54
|
+
:host(.hover) .wrapper .dropdown {
|
|
55
|
+
display: block;
|
|
56
|
+
}
|
|
77
57
|
}
|
|
78
|
-
|
|
58
|
+
|
|
59
|
+
}
|
|
@@ -2,32 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
@layer components {
|
|
5
|
-
|
|
6
|
-
//margin-bottom: 0.5rem;
|
|
7
|
-
order: var(--order, 1);
|
|
8
|
-
//margin-inline: rem(3);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
iam-tag .tag:not([slot='checked']) {
|
|
12
|
-
display: block;
|
|
13
|
-
width: 100%;
|
|
14
|
-
max-width: 100%;
|
|
15
|
-
margin: 0;
|
|
16
|
-
text-align: left;
|
|
17
|
-
border-radius: 0;
|
|
18
|
-
padding-inline: 1rem;
|
|
19
|
-
outline: none;
|
|
20
|
-
padding-block: 0.5rem;
|
|
21
|
-
|
|
22
|
-
&:not(:hover, :focus, :active, :focus-within) {
|
|
23
|
-
background: none !important;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
&::after {
|
|
27
|
-
display: none;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
5
|
+
|
|
31
6
|
iam-tag:has(label:not([slot='checked']):not([slot='notmatched'])) {
|
|
32
7
|
--display-panel: block;
|
|
33
8
|
}
|
|
@@ -11,41 +11,42 @@
|
|
|
11
11
|
:host {
|
|
12
12
|
display: inline;
|
|
13
13
|
position: relative;
|
|
14
|
-
text-decoration: underline;
|
|
15
|
-
text-decoration-style: dashed;
|
|
16
|
-
text-underline-offset: 0.2em;
|
|
17
14
|
overflow-anchor: none;
|
|
18
15
|
cursor: pointer;
|
|
16
|
+
margin-right: 0.25rem;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
slot {
|
|
20
|
+
display: inline;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:host(:empty) {
|
|
19
24
|
display: inline-block;
|
|
20
25
|
width: 1rem;
|
|
21
26
|
height: 1lh;
|
|
22
27
|
min-height: 1rem;
|
|
23
28
|
vertical-align: text-top;
|
|
29
|
+
margin-right: 0;
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
.tooltip__anchor {
|
|
27
33
|
|
|
28
34
|
anchor-name: --anchor;
|
|
29
|
-
position:
|
|
30
|
-
display: block;
|
|
31
|
-
inset: 0;
|
|
32
|
-
height: 100%;
|
|
33
|
-
width: 100%;
|
|
34
|
-
min-width: 1rem;
|
|
35
|
-
left: auto;
|
|
36
|
-
right: 0;
|
|
35
|
+
position: relative;
|
|
36
|
+
display: inline-block;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
.tooltip__anchor {
|
|
40
40
|
|
|
41
41
|
height: 1rem;
|
|
42
42
|
width: 1rem;
|
|
43
43
|
background-color: var(--colour, var(--colour-info));
|
|
44
44
|
border-radius: 50%;
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
margin-bottom: calc(calc(1lh - 1rem) / 2);
|
|
46
|
+
vertical-align: bottom;
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
|
|
49
|
+
.tooltip__anchor:after {
|
|
49
50
|
font-family: "Font Awesome 6 Pro";
|
|
50
51
|
font-weight: 900;
|
|
51
52
|
content: "\?";
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
display: flex;
|
|
6
6
|
flex-direction: column;
|
|
7
7
|
row-gap: var(--gap);
|
|
8
|
+
reading-flow: source-order;
|
|
9
|
+
margin-bottom: 1.5rem;
|
|
8
10
|
|
|
9
11
|
.btn {
|
|
10
12
|
margin-inline-end: 0;
|
|
@@ -15,37 +17,73 @@
|
|
|
15
17
|
margin: 0;
|
|
16
18
|
}
|
|
17
19
|
|
|
20
|
+
.btn-tertiary {
|
|
21
|
+
max-width: fit-content;
|
|
22
|
+
margin-inline: auto;
|
|
23
|
+
order: 3;
|
|
24
|
+
reading-order: 3;
|
|
25
|
+
}
|
|
18
26
|
.btn-secondary {
|
|
19
27
|
order: 2;
|
|
28
|
+
reading-order: 2;
|
|
20
29
|
}
|
|
21
30
|
.btn-primary {
|
|
22
31
|
order: 1;
|
|
32
|
+
reading-order: 1;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.btn-compact {
|
|
36
|
+
|
|
37
|
+
max-width: fit-content;
|
|
38
|
+
margin-inline: auto;
|
|
23
39
|
}
|
|
24
40
|
}
|
|
41
|
+
:is(iam-form,form) .btn__group{
|
|
42
|
+
padding-top: 1rem;
|
|
43
|
+
}
|
|
25
44
|
@container (min-width: 36em) {
|
|
26
45
|
.btn__group {
|
|
27
46
|
flex-direction: row;
|
|
28
47
|
row-gap: 0;
|
|
29
|
-
|
|
30
|
-
|
|
48
|
+
gap: var(--gap);
|
|
49
|
+
flex-wrap: wrap;
|
|
31
50
|
|
|
32
51
|
.btn {
|
|
33
52
|
|
|
34
53
|
max-width: fit-content;
|
|
35
54
|
white-space: nowrap;
|
|
55
|
+
margin-block: auto;
|
|
36
56
|
}
|
|
37
57
|
|
|
38
|
-
|
|
39
|
-
.btn-
|
|
58
|
+
|
|
59
|
+
.btn-tertiary {
|
|
60
|
+
max-width: fit-content;
|
|
61
|
+
margin-inline: 0;
|
|
62
|
+
margin-block: auto;
|
|
40
63
|
order: 1;
|
|
64
|
+
reading-order: 1;
|
|
41
65
|
}
|
|
42
|
-
.btn-
|
|
66
|
+
.btn-secondary {
|
|
43
67
|
order: 2;
|
|
68
|
+
reading-order: 2;
|
|
69
|
+
}
|
|
70
|
+
.btn-primary {
|
|
71
|
+
order: 3;
|
|
72
|
+
reading-order: 3;
|
|
73
|
+
}
|
|
74
|
+
.btn-compact {
|
|
75
|
+
|
|
76
|
+
margin-inline: 0;
|
|
77
|
+
margin-block: auto;
|
|
44
78
|
}
|
|
45
79
|
}
|
|
46
80
|
.btn__group.text-end {
|
|
47
81
|
justify-content: flex-end;
|
|
48
82
|
}
|
|
83
|
+
:is(iam-form,form) .btn__group{
|
|
84
|
+
justify-content: flex-end;
|
|
85
|
+
padding-top: 3rem;
|
|
86
|
+
}
|
|
49
87
|
iam-modal .btn__group:last-child .btn,
|
|
50
88
|
dialog .btn__group:last-child .btn {
|
|
51
89
|
margin-bottom: 0;
|
|
@@ -6,17 +6,22 @@
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
@layer elements {
|
|
9
|
+
// #region contain
|
|
9
10
|
// #region container
|
|
10
11
|
.container {
|
|
11
12
|
display: block;
|
|
12
13
|
margin-left: auto;
|
|
13
14
|
margin-right: auto;
|
|
14
|
-
padding: var(--container-padding);
|
|
15
15
|
|
|
16
|
-
grid-column: container !important;
|
|
17
16
|
container-type: inline-size;
|
|
18
17
|
width: 100%;
|
|
19
18
|
|
|
19
|
+
&:not([class*='col-']){
|
|
20
|
+
|
|
21
|
+
grid-column: container !important;
|
|
22
|
+
padding: var(--container-padding);
|
|
23
|
+
}
|
|
24
|
+
|
|
20
25
|
&:not(:has(.row)):has([class*='col-']) {
|
|
21
26
|
display: grid;
|
|
22
27
|
grid-template-columns:
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
@use '../_func' as *;
|
|
2
|
+
|
|
3
|
+
@layer elements {
|
|
4
|
+
|
|
5
|
+
// #region Dropdown
|
|
6
|
+
.dropdown {
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: calc(100% + 0.5rem);
|
|
9
|
+
padding: 0;
|
|
10
|
+
left: 0;
|
|
11
|
+
width: 100%;
|
|
12
|
+
margin: 0;
|
|
13
|
+
z-index: 99;
|
|
14
|
+
display: none;
|
|
15
|
+
max-height: rem(244) !important;
|
|
16
|
+
overflow: auto;
|
|
17
|
+
|
|
18
|
+
&:before {
|
|
19
|
+
display: none;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// #endregion
|
|
24
|
+
|
|
25
|
+
// #region Needed for the component files
|
|
26
|
+
:is(iam-tag,iam-multiselect):has(label:not([slot='checked'])) {
|
|
27
|
+
--display-panel: block;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:is(iam-tag,iam-multiselect):has(label[slot='checked']) {
|
|
31
|
+
--display-button: block;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:is(iam-tag,iam-multiselect)[data-single] .tag[slot='checked'],
|
|
35
|
+
:is(iam-tag,iam-multiselect)[data-single] .tag[slot='checked'] * {
|
|
36
|
+
pointer-events: none!important;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@container style(--theme: dark) {
|
|
40
|
+
:host :is(.tag, .badge):not([slot='checked']) {
|
|
41
|
+
color: var(--colour-heading);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// #endregion
|
|
45
|
+
|
|
46
|
+
// #region Indivitual options
|
|
47
|
+
.dropdown__option[slot='checked'] {
|
|
48
|
+
order: var(--order, 1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.dropdown__option:not([slot='checked']) {
|
|
52
|
+
display: block;
|
|
53
|
+
width: 100%;
|
|
54
|
+
max-width: 100%;
|
|
55
|
+
margin: 0;
|
|
56
|
+
text-align: left;
|
|
57
|
+
border-radius: 0;
|
|
58
|
+
padding-inline: 1rem;
|
|
59
|
+
outline: none;
|
|
60
|
+
padding-block: 0.5rem;
|
|
61
|
+
|
|
62
|
+
padding-bottom: 0.25em;
|
|
63
|
+
text-overflow: ellipsis;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
|
|
66
|
+
&:not(:hover, :focus, :active, :focus-within) {
|
|
67
|
+
background: none !important;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&::after {
|
|
71
|
+
display: none;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&[data-email] {
|
|
75
|
+
|
|
76
|
+
&::after {
|
|
77
|
+
content: attr(data-email);
|
|
78
|
+
display: block;
|
|
79
|
+
line-height: 1;
|
|
80
|
+
padding-bottom: 0.25em;
|
|
81
|
+
text-overflow: ellipsis;
|
|
82
|
+
overflow: hidden;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// #endregion
|
|
87
|
+
}
|
|
@@ -1029,6 +1029,7 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
|
|
|
1029
1029
|
padding-right: 3rem;
|
|
1030
1030
|
}
|
|
1031
1031
|
|
|
1032
|
+
|
|
1032
1033
|
.empty {
|
|
1033
1034
|
position: absolute;
|
|
1034
1035
|
bottom: 0.5rem;
|
|
@@ -1051,6 +1052,11 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
|
|
|
1051
1052
|
font-size: 1.5rem;
|
|
1052
1053
|
}
|
|
1053
1054
|
}
|
|
1055
|
+
|
|
1056
|
+
&:has([name="postcode"][disabled]) .empty{
|
|
1057
|
+
|
|
1058
|
+
display: none;
|
|
1059
|
+
}
|
|
1054
1060
|
|
|
1055
1061
|
&:has(input:is([name$="Alt"]):not([data-value],[data-placeholder])) .empty {
|
|
1056
1062
|
display: none;
|
|
@@ -23,18 +23,21 @@
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
:is(.bg-primary, .bg-danger, .bg-dark, .gradient-primary) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
@scope (:is(.bg-primary, .bg-danger, .bg-dark, .gradient-primary)) to ([class*='bg-']) {
|
|
27
|
+
|
|
28
|
+
:scope {
|
|
29
|
+
|
|
30
|
+
--colour-heading: var(--colour-white);
|
|
31
|
+
--colour-body: var(--colour-white);
|
|
32
|
+
color: var(--colour-white);
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
:scope > * {
|
|
33
37
|
|
|
34
38
|
color-scheme: dark;
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
|
-
|
|
38
41
|
// #region When the theme is set to dark via the dark mode component
|
|
39
42
|
// OR when the dark mode is set via the browser or device when no component is present
|
|
40
43
|
|
|
@@ -617,19 +617,26 @@ class iamAddressLookup extends HTMLElement {
|
|
|
617
617
|
// #endregion
|
|
618
618
|
|
|
619
619
|
advancedSelect(this, lookup, list, true);
|
|
620
|
+
|
|
621
|
+
if (this.hasAttribute('data-disabled'))
|
|
622
|
+
lookup?.setAttribute('disabled','disabled');
|
|
620
623
|
}
|
|
621
624
|
|
|
622
625
|
static get observedAttributes(): any {
|
|
623
|
-
return ['data-
|
|
626
|
+
return ['data-disabled'];
|
|
624
627
|
}
|
|
625
628
|
|
|
626
629
|
attributeChangedCallback(attrName, oldVal, newVal): void {
|
|
627
|
-
const
|
|
630
|
+
const lookup = this.shadowRoot.querySelector('[name="postcode"]');
|
|
628
631
|
|
|
629
632
|
switch (attrName) {
|
|
630
|
-
case 'data-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
+
case 'data-disabled': {
|
|
634
|
+
console.log(newVal);
|
|
635
|
+
if (oldVal != newVal && newVal == 'disabled') {
|
|
636
|
+
lookup?.setAttribute('disabled','disabled');
|
|
637
|
+
}
|
|
638
|
+
else if (oldVal != newVal) {
|
|
639
|
+
lookup?.removeAttribute('disabled');
|
|
633
640
|
}
|
|
634
641
|
break;
|
|
635
642
|
}
|
|
@@ -43,7 +43,7 @@ class iamModal extends HTMLElement {
|
|
|
43
43
|
const originalDialog = this.querySelector('dialog');
|
|
44
44
|
|
|
45
45
|
const id = this.hasAttribute('id') ? this.getAttribute('id') : originalDialog?.getAttribute('id');
|
|
46
|
-
|
|
46
|
+
let dialog = this.shadowRoot?.querySelector('dialog');
|
|
47
47
|
const closeButton = this.shadowRoot?.querySelector('[data-close]');
|
|
48
48
|
const cancelButton = this.shadowRoot?.querySelector('[data-cancel]');
|
|
49
49
|
const agreedButton = this.querySelector('button[slot="agreed-button"]') ? this.querySelector('button[slot="agreed-button"]') : this.shadowRoot?.querySelector('[data-agreed]');
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { filterList } from '../../modules/dropdown';
|
|
1
|
+
import { searchAjax, filterList, addKeyboardEvents } from '../../modules/dropdown';
|
|
3
2
|
|
|
4
3
|
// Data layer Web component created
|
|
5
4
|
window.dataLayer = window.dataLayer || [];
|
|
@@ -56,6 +55,12 @@ class iamMultiselect extends HTMLElement {
|
|
|
56
55
|
const ajaxURL = this.getAttribute('data-url');
|
|
57
56
|
innerLabel.innerHTML = multiselect.getAttribute('data-label');
|
|
58
57
|
|
|
58
|
+
// Make sure the dropdown options are set
|
|
59
|
+
Array.from(this.querySelectorAll(':scope > label')).forEach((label) => {
|
|
60
|
+
label.classList.add('dropdown__option');
|
|
61
|
+
label?.querySelector('i')?.remove();
|
|
62
|
+
});
|
|
63
|
+
|
|
59
64
|
if (multiselect.hasAttribute('placeholder')) {
|
|
60
65
|
search.setAttribute('placeholder', multiselect.getAttribute('placeholder'));
|
|
61
66
|
}
|
|
@@ -132,7 +137,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
132
137
|
if (multiselect.hasAttribute('data-url')) {
|
|
133
138
|
|
|
134
139
|
if (search.value.length == 3) {
|
|
135
|
-
searchAjax(search
|
|
140
|
+
searchAjax(multiselect, search, filterList);
|
|
136
141
|
}
|
|
137
142
|
} else {
|
|
138
143
|
|
|
@@ -222,6 +227,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
222
227
|
});
|
|
223
228
|
|
|
224
229
|
// Add some keyboard features to keep it accessible
|
|
230
|
+
addKeyboardEvents(this, search);
|
|
225
231
|
multiselect.addEventListener('keydown', function (event) {
|
|
226
232
|
const activeElement = document.activeElement;
|
|
227
233
|
|
|
@@ -262,38 +268,6 @@ class iamMultiselect extends HTMLElement {
|
|
|
262
268
|
if (nextCheckbox) nextCheckbox.focus();
|
|
263
269
|
else search.focus();
|
|
264
270
|
}
|
|
265
|
-
break;
|
|
266
|
-
case 'ArrowUp':
|
|
267
|
-
// Up pressed
|
|
268
|
-
event.preventDefault();
|
|
269
|
-
|
|
270
|
-
if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {
|
|
271
|
-
const arrCheckboxes = multiselect.querySelectorAll(`label:not([slot="checked"]):not([slot="checked"])`);
|
|
272
|
-
|
|
273
|
-
const activeIndex = Array.from(arrCheckboxes).indexOf(activeElement.closest('label'));
|
|
274
|
-
const prevCheckbox = Array.from(arrCheckboxes)[activeIndex - 1];
|
|
275
|
-
|
|
276
|
-
if (prevCheckbox) prevCheckbox.focus();
|
|
277
|
-
else search.focus();
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
break;
|
|
281
|
-
case 'ArrowDown':
|
|
282
|
-
// Down pressed
|
|
283
|
-
event.preventDefault();
|
|
284
|
-
|
|
285
|
-
if (activeElement == multiselect) {
|
|
286
|
-
multiselect.querySelector('label:not([slot="checked"]):not([slot="checked"])').focus();
|
|
287
|
-
} else if (activeElement.hasAttribute('type') && activeElement.getAttribute('type') == 'checkbox') {
|
|
288
|
-
const activeValue = activeElement.value;
|
|
289
|
-
|
|
290
|
-
const nextCheckbox = multiselect.querySelector(
|
|
291
|
-
`label:has(input[value="${activeValue}"]) ~ label:not([slot="checked"]):not([slot="checked"])`
|
|
292
|
-
);
|
|
293
|
-
|
|
294
|
-
if (nextCheckbox) nextCheckbox.focus();
|
|
295
|
-
}
|
|
296
|
-
|
|
297
271
|
break;
|
|
298
272
|
case 'Enter':
|
|
299
273
|
event.stopPropagation();
|
|
@@ -318,6 +292,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
318
292
|
}
|
|
319
293
|
});
|
|
320
294
|
|
|
295
|
+
|
|
321
296
|
function checkLastTag(): Element | null {
|
|
322
297
|
if (order == 0) return false;
|
|
323
298
|
|
|
@@ -368,49 +343,6 @@ class iamMultiselect extends HTMLElement {
|
|
|
368
343
|
wrapper.removeAttribute('data-mousedown');
|
|
369
344
|
});
|
|
370
345
|
|
|
371
|
-
const searchAjax = async (searchterm): any => {
|
|
372
|
-
const searchAjaxURL = `${ajaxURL}${encodeURI(searchterm)}`;
|
|
373
|
-
|
|
374
|
-
// Setup controller vars if not already set
|
|
375
|
-
if (!window.controller) window.controller = [];
|
|
376
|
-
|
|
377
|
-
// Abort if controller already present for this url
|
|
378
|
-
if (window.controller[searchAjaxURL]) window.controller[searchAjaxURL].abort();
|
|
379
|
-
|
|
380
|
-
// Create a new controller so it can be aborted if new fetch made
|
|
381
|
-
window.controller[searchAjaxURL] = new AbortController();
|
|
382
|
-
const { signal } = controller[searchAjaxURL];
|
|
383
|
-
|
|
384
|
-
try {
|
|
385
|
-
await fetch(searchAjaxURL, {
|
|
386
|
-
signal: signal,
|
|
387
|
-
method: 'get',
|
|
388
|
-
credentials: 'same-origin',
|
|
389
|
-
headers: new Headers({
|
|
390
|
-
'Content-Type': 'application/json',
|
|
391
|
-
Accept: 'application/json',
|
|
392
|
-
'X-Requested-With': 'XMLHttpRequest',
|
|
393
|
-
'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
|
|
394
|
-
}),
|
|
395
|
-
})
|
|
396
|
-
.then((response) => response.json())
|
|
397
|
-
.then((response) => {
|
|
398
|
-
|
|
399
|
-
let items = '';
|
|
400
|
-
|
|
401
|
-
for (let i = 0; i < response['data'].length; i++) {
|
|
402
|
-
items += `<label class="tag"><input type="checkbox" name="${multiselect.hasAttribute('data-name') ? multiselect.getAttribute('data-name') : 'tags'}" value="${ response['data'][i].value }"/>${ response['data'][i].title }</label>`;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
multiselect.insertAdjacentHTML('beforeend', `${items}`);
|
|
406
|
-
|
|
407
|
-
filterList(multiselect, search);
|
|
408
|
-
return response;
|
|
409
|
-
});
|
|
410
|
-
} catch (error) {
|
|
411
|
-
console.log(error);
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
346
|
}
|
|
415
347
|
}
|
|
416
348
|
|