@iamproperty/components 7.5.1--beta9 → 7.5.1--beta11
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/actionbar.global.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.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/calendar.config.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/carousel.config.css.map +1 -1
- package/assets/css/components/charts.config.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.map +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/inline-edit.preload.css.map +1 -1
- package/assets/css/components/marketing.component.css.map +1 -1
- package/assets/css/components/menu.component.css +1 -1
- package/assets/css/components/menu.component.css.map +1 -1
- package/assets/css/components/menu.global.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/multi-step-modal.global.css.map +1 -1
- package/assets/css/components/multi-step.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.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/nav.docs.css.map +1 -1
- package/assets/css/components/nav.global.css.map +1 -1
- package/assets/css/components/nav.preload.css.map +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/popover.component.css +1 -0
- package/assets/css/components/popover.component.css.map +1 -0
- package/assets/css/components/property-searchbar.css.map +1 -1
- package/assets/css/components/rank.component.css.map +1 -1
- package/assets/css/components/rankings.component.css.map +1 -1
- package/assets/css/components/rankings.global.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/split-button.component.css +1 -1
- package/assets/css/components/split-button.component.css.map +1 -1
- package/assets/css/components/stepper.css.map +1 -1
- package/assets/css/components/table-basic.component.css.map +1 -1
- package/assets/css/components/table-basic.global.css +1 -1
- package/assets/css/components/table-basic.global.css.map +1 -1
- package/assets/css/components/table.component.css.map +1 -1
- 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 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tabs.config.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/components/tooltip.component.css +1 -0
- package/assets/css/components/tooltip.component.css.map +1 -0
- 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.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.min.js +5 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- 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 +3 -3
- package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -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.min.js +2 -2
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +4 -4
- package/assets/js/components/card/card.component.min.js +6 -6
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +4 -4
- 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.js +5 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +2 -2
- package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +7 -7
- package/assets/js/components/fileupload/fileupload.component.min.js +3 -3
- 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/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 +82 -1
- package/assets/js/components/input/input.component.min.js +4 -4
- package/assets/js/components/input/input.component.min.js.map +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.js +1 -0
- package/assets/js/components/menu/menu.component.min.js +4 -4
- package/assets/js/components/menu/menu.component.min.js.map +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.min.js +4 -4
- 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.min.js +4 -4
- 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.js +36 -0
- package/assets/js/components/popover/popover.component.min.js +13 -0
- package/assets/js/components/popover/popover.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 +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 +2 -2
- package/assets/js/components/split-button/split-button.component.min.js +4 -4
- package/assets/js/components/split-button/split-button.component.min.js.map +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +7 -7
- 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 +6 -6
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +6 -6
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.js +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +4 -4
- 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 +6 -6
- 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 +5 -5
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +4 -4
- package/assets/js/components/tooltip/tooltip.component.js +68 -0
- package/assets/js/components/tooltip/tooltip.component.min.js +14 -0
- package/assets/js/components/tooltip/tooltip.component.min.js.map +1 -0
- package/assets/js/components/video-card/video-card.component.min.js +1 -1
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/advanced-select.js +6 -0
- package/assets/js/modules/applied-filters.js +8 -2
- package/assets/js/modules/table.js +49 -164
- package/assets/js/scripts.bundle.js +1 -1
- package/assets/js/scripts.bundle.min.js +1 -1
- package/assets/sass/_elements.scss +5 -0
- package/assets/sass/_functions/mixins.scss +53 -0
- package/assets/sass/components/actionbar.component.scss +8 -1
- package/assets/sass/components/address-lookup.component.scss +1 -0
- package/assets/sass/components/menu.component.scss +7 -5
- package/assets/sass/components/popover.component.scss +28 -0
- package/assets/sass/components/table-basic.global.scss +5 -7
- package/assets/sass/components/tooltip.component.scss +120 -0
- package/assets/sass/elements/buttons--special.scss +45 -0
- package/assets/sass/elements/buttons.scss +6 -0
- package/assets/sass/elements/dialog.scss +8 -7
- package/assets/sass/elements/feature.scss +53 -0
- package/assets/sass/elements/forms.scss +10 -187
- package/assets/sass/elements/input.scss +177 -0
- package/assets/sass/elements/links.scss +7 -1
- package/assets/sass/elements/popover.scss +3 -2
- package/assets/ts/components/darkmode/darkmode.component.ts +6 -2
- package/assets/ts/components/input/input.component.ts +109 -1
- package/assets/ts/components/menu/menu.component.ts +1 -0
- package/assets/ts/components/popover/popover.component.ts +50 -0
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1 -1
- package/assets/ts/components/table-basic/table-basic.component.ts +1 -1
- package/assets/ts/components/tooltip/tooltip.component.ts +98 -0
- package/assets/ts/modules/advanced-select.ts +8 -0
- package/assets/ts/modules/applied-filters.ts +12 -1
- package/assets/ts/modules/table.ts +15 -161
- package/dist/components.es.js +493 -563
- package/dist/components.umd.js +224 -201
- package/package.json +5 -5
- package/src/components/Filterlist/Filterlist.vue +0 -12
- package/src/components/Popover/Popover.vue +22 -0
- package/src/components/Tooltip/Tooltip.vue +22 -0
|
@@ -72,6 +72,12 @@ $darkMode: 'true' !default;
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
&:not(.text-decoration-none).text-underline-plain {
|
|
76
|
+
&:after {
|
|
77
|
+
background: currentColor;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
75
81
|
[class*='fa-'] {
|
|
76
82
|
margin-left: 0;
|
|
77
83
|
margin-right: 0.5rem;
|
|
@@ -94,7 +100,7 @@ $darkMode: 'true' !default;
|
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
@include inline-text() {
|
|
97
|
-
a:not(.btn) {
|
|
103
|
+
a:not(.btn):not(.link) {
|
|
98
104
|
min-height: none;
|
|
99
105
|
display: inline;
|
|
100
106
|
margin: 0;
|
|
@@ -71,7 +71,8 @@ $darkMode: 'true' !default;
|
|
|
71
71
|
|
|
72
72
|
//right: auto;
|
|
73
73
|
margin: 0 0 0 #{rem(4)};
|
|
74
|
-
padding: rem(16);
|
|
74
|
+
//padding: rem(16);
|
|
75
|
+
padding: rem(24);
|
|
75
76
|
|
|
76
77
|
&::backdrop {
|
|
77
78
|
display: none;
|
|
@@ -94,7 +95,6 @@ $darkMode: 'true' !default;
|
|
|
94
95
|
min-width: rem(320);
|
|
95
96
|
border-radius: rem(16);
|
|
96
97
|
width: rem(320);
|
|
97
|
-
padding: rem(24);
|
|
98
98
|
|
|
99
99
|
@include media-breakpoint-up(sm, $mobileOnly) {
|
|
100
100
|
width: rem(335);
|
|
@@ -256,3 +256,4 @@ $darkMode: 'true' !default;
|
|
|
256
256
|
}
|
|
257
257
|
// #endregion
|
|
258
258
|
}
|
|
259
|
+
|
|
@@ -34,14 +34,18 @@ class iamDarkMode extends HTMLElement {
|
|
|
34
34
|
|
|
35
35
|
const storedTheme = localStorage.getItem('user-theme');
|
|
36
36
|
|
|
37
|
+
console.log(storedTheme);
|
|
38
|
+
|
|
37
39
|
// Work from local storage first then look at the media preferences
|
|
38
40
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
|
|
39
41
|
if (storedTheme == 'dark-theme') {
|
|
40
42
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
|
|
41
43
|
label?.classList.add('dark-theme');
|
|
44
|
+
document.documentElement.className = 'dark-theme';
|
|
42
45
|
} else if (storedTheme == 'light-theme') {
|
|
43
46
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
|
|
44
47
|
label?.classList.remove('dark-theme');
|
|
48
|
+
document.documentElement.className = 'light-theme';
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
const hasDarkPreference = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
@@ -51,8 +55,6 @@ class iamDarkMode extends HTMLElement {
|
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
this.addEventListener('click', (event) => {
|
|
54
|
-
console.log(label?.querySelector('input:checked'));
|
|
55
|
-
|
|
56
58
|
if (label?.querySelector('input:checked')) {
|
|
57
59
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
|
|
58
60
|
localStorage.setItem('user-theme', 'dark-theme');
|
|
@@ -70,6 +72,7 @@ class iamDarkMode extends HTMLElement {
|
|
|
70
72
|
if (matches) {
|
|
71
73
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
|
|
72
74
|
label?.classList.add('dark-theme');
|
|
75
|
+
document.documentElement.className = 'dark-theme';
|
|
73
76
|
}
|
|
74
77
|
});
|
|
75
78
|
|
|
@@ -77,6 +80,7 @@ class iamDarkMode extends HTMLElement {
|
|
|
77
80
|
if (matches) {
|
|
78
81
|
label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
|
|
79
82
|
label?.classList.remove('dark-theme');
|
|
83
|
+
document.documentElement.className = 'light-theme';
|
|
80
84
|
}
|
|
81
85
|
});
|
|
82
86
|
}
|
|
@@ -20,7 +20,7 @@ class iamInput extends HTMLElement {
|
|
|
20
20
|
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
|
|
21
21
|
<div class="wrapper" part="wrapper">
|
|
22
22
|
<span part="prefix"><slot name="prefix"></slot></span>
|
|
23
|
-
<slot></slot>
|
|
23
|
+
<slot part="input-wrapper"></slot>
|
|
24
24
|
<slot part="suffix"><slot name="suffix"></slot></slot>
|
|
25
25
|
</div>
|
|
26
26
|
`;
|
|
@@ -64,6 +64,61 @@ class iamInput extends HTMLElement {
|
|
|
64
64
|
}
|
|
65
65
|
setIcon(inputType);
|
|
66
66
|
|
|
67
|
+
|
|
68
|
+
const setCurrencyRules = () => {
|
|
69
|
+
|
|
70
|
+
input.setAttribute('type','text');
|
|
71
|
+
input?.setAttribute('data-value',input.value);
|
|
72
|
+
input.value = new Intl.NumberFormat("en-GB", {
|
|
73
|
+
style: "currency",
|
|
74
|
+
currency: "GBP",
|
|
75
|
+
minimumFractionDigits: Number.isInteger(input.value) ? 0 : 2,
|
|
76
|
+
maximumFractionDigits: Number.isInteger(input.value) ? 0 : 2,
|
|
77
|
+
trailingZeroDisplay: 'stripIfInteger' // Strip zeros if it's an integer
|
|
78
|
+
}).format(input.value).replace("£", "");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
// Currency type
|
|
83
|
+
if(component?.hasAttribute('data-currency')) {
|
|
84
|
+
|
|
85
|
+
// Pre set the icons
|
|
86
|
+
switch (component?.hasAttribute('data-currency')) {
|
|
87
|
+
case "dollar":
|
|
88
|
+
component.setAttribute('data-prefix-icon','dollar-sign') ;
|
|
89
|
+
break;
|
|
90
|
+
case "euro":
|
|
91
|
+
component.setAttribute('data-prefix-icon','euro-sign') ;
|
|
92
|
+
break;
|
|
93
|
+
default:
|
|
94
|
+
component.setAttribute('data-prefix-icon','sterling-sign') ;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
setCurrencyRules();
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
input?.addEventListener('focus',(event) => {
|
|
102
|
+
|
|
103
|
+
input.setAttribute('type', 'number')
|
|
104
|
+
|
|
105
|
+
input.value = input.getAttribute('data-value');
|
|
106
|
+
input.setAttribute('value', input.getAttribute('data-value'));
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
input?.addEventListener('input',(event) => {
|
|
110
|
+
|
|
111
|
+
input?.setAttribute('data-value',input.value);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
input?.addEventListener('blur',(event) => {
|
|
115
|
+
|
|
116
|
+
setCurrencyRules();
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
67
122
|
// Colour input field
|
|
68
123
|
if(input?.matches('[type="color"]')){
|
|
69
124
|
this.insertAdjacentHTML('beforeend', `<output></output>`);
|
|
@@ -161,7 +216,60 @@ class iamInput extends HTMLElement {
|
|
|
161
216
|
input.showPicker();
|
|
162
217
|
});
|
|
163
218
|
|
|
219
|
+
// Duplicate input watches
|
|
220
|
+
if(component.hasAttribute('data-duplicate')){
|
|
221
|
+
|
|
222
|
+
const id = component.getAttribute('data-duplicate');
|
|
223
|
+
const watchedInputs = document.querySelectorAll(`[name="${id}"], [id="${id}"]`);
|
|
224
|
+
|
|
225
|
+
input.addEventListener('change', (event) => {
|
|
226
|
+
|
|
227
|
+
if(input.closest('iam-modal'))
|
|
228
|
+
return false;
|
|
229
|
+
|
|
230
|
+
if(input?.matches('[type="checkbox"]') && watchedInput?.matches('[type="checkbox"]')){
|
|
231
|
+
watchedInput.checked = event.target.checked;
|
|
232
|
+
|
|
233
|
+
if(!event.detail && !event.detail?.triggered){
|
|
234
|
+
const changeEvent = new CustomEvent('change', { detail: {triggered: true} });
|
|
235
|
+
watchedInput?.dispatchEvent(changeEvent);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
Array.from(watchedInputs).forEach((watchedInput) => {
|
|
241
|
+
|
|
242
|
+
watchedInput?.addEventListener('change', (event) => {
|
|
243
|
+
|
|
244
|
+
// If both the duplicate input and the watched input are checkboxes
|
|
245
|
+
if(input?.matches('[type="checkbox"]') && watchedInput?.matches('[type="checkbox"]')){
|
|
246
|
+
input.checked = event.target.checked;
|
|
247
|
+
|
|
248
|
+
if(!event.detail && !event.detail?.triggered){
|
|
249
|
+
const changeEvent = new CustomEvent('change', { detail: {triggered: true} });
|
|
250
|
+
input?.dispatchEvent(changeEvent);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
164
253
|
|
|
254
|
+
// if input is not a checkbox BUT the watched input is
|
|
255
|
+
// Then we need to create the input's value
|
|
256
|
+
if(!input?.matches('[type="checkbox"]') && watchedInput?.matches('[type="checkbox"]')){
|
|
257
|
+
|
|
258
|
+
let computedValue = '';
|
|
259
|
+
Array.from(document.querySelectorAll(`[name="${id}"]:checked`)).forEach((loopInput) => {
|
|
260
|
+
|
|
261
|
+
computedValue += (computedValue == '' ? '' : ',') + loopInput.value;
|
|
262
|
+
});
|
|
263
|
+
input.value = computedValue;
|
|
264
|
+
|
|
265
|
+
if(!event.detail && !event.detail?.triggered){
|
|
266
|
+
const changeEvent = new CustomEvent('change', { detail: {triggered: true} });
|
|
267
|
+
input?.dispatchEvent(changeEvent);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
}
|
|
165
273
|
}
|
|
166
274
|
}
|
|
167
275
|
|
|
@@ -40,6 +40,7 @@ class iamMenu extends HTMLElement {
|
|
|
40
40
|
// Set the needed CSS styles to connect the ID attribute to the anchor name
|
|
41
41
|
if (menuID && menuButton) {
|
|
42
42
|
this.setAttribute('role', 'menu');
|
|
43
|
+
this.setAttribute('popover', 'auto');
|
|
43
44
|
this.style['position-anchor'] = `--${menuID}`;
|
|
44
45
|
|
|
45
46
|
menuButton?.setAttribute('aria-haspopup', 'true');
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
trackComponentRegistered('iam-popover');
|
|
5
|
+
|
|
6
|
+
class iamPopover extends HTMLElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.attachShadow({ mode: 'open' });
|
|
10
|
+
|
|
11
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
12
|
+
? document.body.getAttribute('data-assets-location')
|
|
13
|
+
: '/assets';
|
|
14
|
+
const loadCSS = `@import "${assetLocation}/css/components/popover.component.css";`;
|
|
15
|
+
|
|
16
|
+
const template = document.createElement('template');
|
|
17
|
+
template.innerHTML = `
|
|
18
|
+
<style>
|
|
19
|
+
${loadCSS}
|
|
20
|
+
</style>
|
|
21
|
+
<div>
|
|
22
|
+
<slot></slot>
|
|
23
|
+
</div>
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
connectedCallback(): void {
|
|
30
|
+
|
|
31
|
+
const id = this.getAttribute('id');
|
|
32
|
+
const button = document.querySelector(`[popovertarget="${id}"]`);
|
|
33
|
+
|
|
34
|
+
this.setAttribute('popover','auto');
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
button?.addEventListener('click',() => {
|
|
38
|
+
|
|
39
|
+
if(this.matches(':popover-open')){
|
|
40
|
+
button.removeAttribute('aria-pressed');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
|
|
44
|
+
button.setAttribute('aria-pressed','true');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default iamPopover;
|
|
@@ -1554,7 +1554,7 @@ class iamSTDAddressLookup extends HTMLElement {
|
|
|
1554
1554
|
data-url="/standardaddress.json?search_query="
|
|
1555
1555
|
data-postcode="true"
|
|
1556
1556
|
data-min-chars="5"
|
|
1557
|
-
data-title=
|
|
1557
|
+
${this.hasAttribute('data-title') ? `data-title='${this.getAttribute('data-title')}'` : `data-title='Find an address by postcode'`}
|
|
1558
1558
|
data-placeholder="UK, Isle of Man, & Channel Islands "
|
|
1559
1559
|
${this.hasAttribute('data-manual') ? 'data-manual' : ''}
|
|
1560
1560
|
${this.hasAttribute('data-allow-manual') ? 'data-allow-manual' : ''}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { trackComponent, trackComponentRegistered } from '../_global';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
trackComponentRegistered('iam-tooltip');
|
|
5
|
+
|
|
6
|
+
class iamTooltip extends HTMLElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.attachShadow({ mode: 'open' });
|
|
10
|
+
|
|
11
|
+
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
12
|
+
? document.body.getAttribute('data-assets-location')
|
|
13
|
+
: '/assets';
|
|
14
|
+
const loadCSS = `@import "${assetLocation}/css/components/popover.component.css";`;
|
|
15
|
+
|
|
16
|
+
const template = document.createElement('template');
|
|
17
|
+
template.innerHTML = `
|
|
18
|
+
<style>
|
|
19
|
+
${loadCSS}
|
|
20
|
+
</style>
|
|
21
|
+
<slot></slot>
|
|
22
|
+
<div class="tooltip__anchor">
|
|
23
|
+
</div>
|
|
24
|
+
<div class="tooltip__content" id="tooltip"></div>
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
connectedCallback(): void {
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
const contentWrapper = this.shadowRoot?.querySelector('.tooltip__content');
|
|
34
|
+
const anchor = this.shadowRoot?.querySelector('.tooltip__anchor');
|
|
35
|
+
|
|
36
|
+
if(this.hasAttribute('data-heading'))
|
|
37
|
+
contentWrapper?.innerHTML += `<strong>${this.getAttribute('data-heading')}</strong>`;
|
|
38
|
+
|
|
39
|
+
contentWrapper?.innerHTML += this.getAttribute('title');
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
this.removeAttribute('title');
|
|
43
|
+
|
|
44
|
+
contentWrapper?.setAttribute('popover', 'auto');
|
|
45
|
+
|
|
46
|
+
this?.addEventListener('mouseenter', (event) => {
|
|
47
|
+
|
|
48
|
+
contentWrapper.showPopover();
|
|
49
|
+
});
|
|
50
|
+
this?.addEventListener('mouseleave', (event) => {
|
|
51
|
+
|
|
52
|
+
if(!contentWrapper?.classList.contains('show-popover'))
|
|
53
|
+
contentWrapper.hidePopover();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
// Check if th component sets the tooltip open by default
|
|
58
|
+
if(this.classList.contains('show-popover')){
|
|
59
|
+
contentWrapper?.classList.add('show-popover');
|
|
60
|
+
|
|
61
|
+
contentWrapper?.setAttribute('popover', 'manual'); // Switch popover type first before showing popover
|
|
62
|
+
contentWrapper.showPopover();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
this?.addEventListener('click', (event) => {
|
|
66
|
+
|
|
67
|
+
contentWrapper?.classList.toggle('show-popover');
|
|
68
|
+
|
|
69
|
+
if(contentWrapper?.classList.contains('show-popover')){
|
|
70
|
+
|
|
71
|
+
contentWrapper?.setAttribute('popover', 'manual'); // Switch popover type first before showing popover
|
|
72
|
+
contentWrapper.showPopover();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
|
|
76
|
+
contentWrapper?.setAttribute('popover', 'auto');
|
|
77
|
+
contentWrapper.hidePopover();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Used for documentation
|
|
82
|
+
this?.parentNode?.addEventListener('update', (event) => {
|
|
83
|
+
contentWrapper?.setAttribute('popover', 'auto');
|
|
84
|
+
contentWrapper.hidePopover();
|
|
85
|
+
|
|
86
|
+
setTimeout(() => {
|
|
87
|
+
|
|
88
|
+
contentWrapper?.classList.add('show-popover');
|
|
89
|
+
|
|
90
|
+
contentWrapper?.setAttribute('popover', 'manual'); // Switch popover type first before showing popover
|
|
91
|
+
contentWrapper.showPopover();
|
|
92
|
+
|
|
93
|
+
}, 100);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export default iamTooltip;
|
|
@@ -24,7 +24,12 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
|
|
|
24
24
|
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
+
displayInputField.addEventListener('keyup', function () {
|
|
27
28
|
|
|
29
|
+
if(displayInputField.value != ""){
|
|
30
|
+
displayInputField.setAttribute('data-value', displayInputField.value);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
28
33
|
|
|
29
34
|
displayInputField.addEventListener('blur', function () {
|
|
30
35
|
if (displayInputField.hasAttribute('data-value')) {
|
|
@@ -113,6 +118,9 @@ function advancedSelect(advancedSelect, displayInputField, datalist, isSearch =
|
|
|
113
118
|
|
|
114
119
|
|
|
115
120
|
const emptyField = () => {
|
|
121
|
+
|
|
122
|
+
displayInputField.removeAttribute('placeholder');
|
|
123
|
+
|
|
116
124
|
if(displayInputField.hasAttribute('data-original-placeholder'))
|
|
117
125
|
displayInputField.setAttribute('placeholder', displayInputField.getAttribute('data-original-placeholder'));
|
|
118
126
|
|
|
@@ -127,6 +127,10 @@ function createAppliedFilters(container, filters): void {
|
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
const filterClicked = (filter) => {
|
|
130
|
+
|
|
131
|
+
if(!filter?.hasAttribute('data-name'))
|
|
132
|
+
return false;
|
|
133
|
+
|
|
130
134
|
const names = filter.getAttribute('data-name').split(',');
|
|
131
135
|
|
|
132
136
|
for (let t = 0; t < names.length; t++) {
|
|
@@ -172,6 +176,9 @@ function createAppliedFilters(container, filters): void {
|
|
|
172
176
|
|
|
173
177
|
filterClicked(filter);
|
|
174
178
|
|
|
179
|
+
const clickedEvent = new CustomEvent('filter-clicked',{'detail':filterName });
|
|
180
|
+
container.dispatchEvent(clickedEvent);
|
|
181
|
+
|
|
175
182
|
// If you clicked on the filter on the parent component we want to tell the child component which filter to copy
|
|
176
183
|
if(container.querySelector('dialog iam-applied-filters')) {
|
|
177
184
|
const event = new CustomEvent('filter',{'detail':filterName });
|
|
@@ -196,10 +203,14 @@ function createAppliedFilters(container, filters): void {
|
|
|
196
203
|
});
|
|
197
204
|
|
|
198
205
|
if(dialog){
|
|
206
|
+
const primaryButton = container.querySelector('.btn-primary') ? container.querySelector('.btn-primary') : container.shadowRoot.querySelector('.btn-primary');
|
|
199
207
|
// Force the filters inside of the dialog to effect the filters above
|
|
200
|
-
|
|
208
|
+
primaryButton?.addEventListener('click', (e) => {
|
|
201
209
|
|
|
202
210
|
const event = new CustomEvent('update');
|
|
211
|
+
const submitEvent = new CustomEvent('submit');
|
|
212
|
+
|
|
213
|
+
container.dispatchEvent(submitEvent);
|
|
203
214
|
|
|
204
215
|
if(container.parentElement.closest('iam-applied-filters'))
|
|
205
216
|
container.parentElement.closest('iam-applied-filters').dispatchEvent(event);
|