@iamproperty/components 7.5.0 → 7.5.1--beta1
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/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/inline-edit.css +1 -1
- package/assets/css/components/inline-edit.css.map +1 -1
- package/assets/css/components/inline-edit.preload.css +1 -1
- package/assets/css/components/inline-edit.preload.css.map +1 -1
- package/assets/css/components/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/notification.css +1 -1
- package/assets/css/components/notification.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/rank.component.css +1 -1
- package/assets/css/components/rank.component.css.map +1 -1
- package/assets/css/components/rankings.component.css +1 -1
- package/assets/css/components/rankings.component.css.map +1 -1
- package/assets/css/components/rankings.global.css +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/split-button.component.css +1 -1
- package/assets/css/components/split-button.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.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 +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 +0 -7
- package/assets/js/components/accordion/accordion.component.min.js +3 -4
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +8 -9
- package/assets/js/components/actionbar/actionbar.component.min.js +12 -5
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +0 -3
- 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.js +2 -5
- package/assets/js/components/applied-filters/applied-filters.component.min.js +7 -7
- 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 +2 -2
- package/assets/js/components/card/card.component.min.js +2 -2
- package/assets/js/components/carousel/carousel.component.min.js +2 -2
- package/assets/js/components/collapsible-side/collapsible-side.component.js +0 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -6
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- 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 +2 -2
- package/assets/js/components/fileupload/fileupload.component.js +1 -5
- package/assets/js/components/fileupload/fileupload.component.min.js +5 -6
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- 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.js +0 -5
- package/assets/js/components/header/header.component.min.js +4 -6
- package/assets/js/components/header/header.component.min.js.map +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.js +61 -60
- package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.js +0 -4
- package/assets/js/components/marketing/marketing.component.min.js +3 -4
- package/assets/js/components/marketing/marketing.component.min.js.map +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/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +88 -11
- 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.js +2 -4
- package/assets/js/components/nav/nav.component.min.js +8 -7
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.js +1 -4
- package/assets/js/components/notification/notification.component.min.js +6 -6
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.js +3 -8
- package/assets/js/components/pagination/pagination.component.min.js +7 -8
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/password-indicator/password-indicator.component.js +19 -0
- package/assets/js/components/password-indicator/password-indicator.component.min.js +7 -0
- package/assets/js/components/password-indicator/password-indicator.component.min.js.map +1 -0
- package/assets/js/components/rank/rank.component.js +2 -2
- package/assets/js/components/rank/rank.component.min.js +4 -5
- package/assets/js/components/rank/rank.component.min.js.map +1 -1
- package/assets/js/components/rankings/rankings.component.js +3 -0
- package/assets/js/components/rankings/rankings.component.min.js +364 -5
- package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +1 -1
- package/assets/js/components/search/search.component.js +0 -4
- package/assets/js/components/search/search.component.min.js +5 -6
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.js +0 -4
- package/assets/js/components/slider/slider.component.min.js +4 -5
- package/assets/js/components/slider/slider.component.min.js.map +1 -1
- package/assets/js/components/split-button/split-button.component.min.js +2 -2
- package/assets/js/components/table/table.component.min.js +4 -4
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.js +11 -9
- 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 +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.js +15 -30
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +4 -4
- 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 +4 -4
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.js +1 -4
- package/assets/js/components/tabs/tabs.component.min.js +5 -5
- package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
- 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/inputs.js +0 -8
- package/assets/js/modules/password-indicator.js +21 -0
- package/assets/js/modules/table.js +28 -2
- package/assets/js/scripts.bundle.js +3 -3
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +1 -0
- package/assets/sass/_components.scss +2 -1
- package/assets/sass/_elements.scss +5 -0
- package/assets/sass/_functions/utility-mixins.scss +21 -0
- package/assets/sass/_functions/variables.scss +14 -0
- package/assets/sass/components/actionbar.component.scss +16 -1
- package/assets/sass/components/applied-filters.scss +1 -0
- package/assets/sass/components/collapsible-side.scss +2 -0
- package/assets/sass/components/fileupload.scss +18 -0
- package/assets/sass/components/header.scss +9 -0
- package/assets/sass/components/inline-edit.preload.scss +68 -2
- package/assets/sass/components/inline-edit.scss +7 -0
- package/assets/sass/components/multiselect.preload.scss +10 -0
- package/assets/sass/components/multiselect.scss +62 -4
- package/assets/sass/components/nav.component.scss +15 -0
- package/assets/sass/components/notification.scss +6 -4
- package/assets/sass/components/pagination.scss +6 -0
- package/assets/sass/components/slider.scss +1 -0
- package/assets/sass/components/table-basic.global.scss +1 -1
- package/assets/sass/components/table.global.scss +9 -4
- package/assets/sass/components/tabs.component.scss +4 -0
- package/assets/sass/components/tabs.config.scss +231 -4
- package/assets/sass/elements/admin-panel.scss +37 -9
- package/assets/sass/elements/buttons--global.scss +3 -3
- package/assets/sass/elements/forms.scss +7 -0
- package/assets/sass/elements/hr.scss +50 -0
- package/assets/sass/elements/icons.scss +5 -0
- package/assets/sass/elements/links.scss +2 -2
- package/assets/sass/elements/modal.scss +1 -5
- package/assets/sass/elements/type.scss +6 -9
- package/assets/sass/foundations/reboot.scss +6 -17
- package/assets/sass/foundations/root.scss +2 -0
- package/assets/sass/templates/form.scss +5 -0
- package/assets/ts/components/accordion/accordion.component.ts +0 -8
- package/assets/ts/components/actionbar/actionbar.component.ts +19 -10
- package/assets/ts/components/address-lookup/address-lookup.component.ts +1 -3
- package/assets/ts/components/applied-filters/applied-filters.component.ts +2 -5
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +1 -5
- package/assets/ts/components/fileupload/fileupload.component.ts +2 -5
- package/assets/ts/components/header/header.component.ts +1 -5
- package/assets/ts/components/inline-edit/inline-edit.component.ts +74 -75
- package/assets/ts/components/marketing/marketing.component.ts +0 -4
- package/assets/ts/components/multiselect/multiselect.component.ts +97 -12
- package/assets/ts/components/nav/nav.component.ts +2 -4
- package/assets/ts/components/notification/notification.component.ts +2 -4
- package/assets/ts/components/pagination/pagination.component.ts +6 -8
- package/assets/ts/components/password-indicator/password-indicator.component.ts +24 -0
- package/assets/ts/components/rank/rank.component.ts +2 -2
- package/assets/ts/components/rankings/rankings.component.ts +4 -0
- package/assets/ts/components/search/search.component.ts +0 -4
- package/assets/ts/components/slider/slider.component.ts +1 -4
- package/assets/ts/components/table-ajax/table-ajax.component.ts +5 -5
- package/assets/ts/components/table-no-submit/table-no-submit.component.ts +10 -21
- package/assets/ts/components/tabs/tabs.component.ts +2 -4
- package/assets/ts/modules/inputs.ts +1 -7
- package/assets/ts/modules/password-indicator.ts +29 -0
- package/assets/ts/modules/table.ts +41 -3
- package/assets/ts/scripts.ts +2 -0
- package/dist/components.es.js +47 -49
- package/dist/components.umd.js +557 -201
- package/package.json +3 -3
- package/src/components/PasswordIndicator/PasswordIndicator.vue +23 -0
- package/assets/css/components/tabs.css +0 -1
- package/assets/css/components/tabs.css.map +0 -1
- package/assets/sass/components/tabs.scss +0 -254
- package/assets/ts/components/accordion/README.md +0 -31
- package/assets/ts/components/fileupload/README.md +0 -28
|
@@ -13,15 +13,12 @@ class iamInlineEdit extends HTMLElement {
|
|
|
13
13
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
14
|
? document.body.getAttribute('data-assets-location')
|
|
15
15
|
: '/assets';
|
|
16
|
-
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
17
|
-
? document.body.getAttribute('data-core-css')
|
|
18
|
-
: `${assetLocation}/css/core.min.css`;
|
|
19
16
|
const loadCSS = `@import "${assetLocation}/css/components/inline-edit.css";`;
|
|
20
17
|
|
|
21
18
|
const template = document.createElement('template');
|
|
22
19
|
template.innerHTML = `
|
|
23
20
|
<style class="styles">
|
|
24
|
-
|
|
21
|
+
|
|
25
22
|
${loadCSS}
|
|
26
23
|
</style>
|
|
27
24
|
<link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
|
|
@@ -53,13 +50,16 @@ class iamInlineEdit extends HTMLElement {
|
|
|
53
50
|
const statusNotSaved = this.shadowRoot.querySelector('#notsaved');
|
|
54
51
|
|
|
55
52
|
// Save the original value for later
|
|
56
|
-
let originalValue = input.value;
|
|
53
|
+
let originalValue = input ? input.value : '';
|
|
57
54
|
|
|
58
55
|
// cancel
|
|
59
56
|
cancelButton.addEventListener('click', () => {
|
|
60
|
-
input
|
|
57
|
+
if(input){
|
|
58
|
+
|
|
59
|
+
input.value = originalValue;
|
|
60
|
+
input.blur();
|
|
61
|
+
}
|
|
61
62
|
|
|
62
|
-
input.blur();
|
|
63
63
|
inlineEdit.blur();
|
|
64
64
|
|
|
65
65
|
inlineEdit.classList.remove('was-validated');
|
|
@@ -86,39 +86,83 @@ class iamInlineEdit extends HTMLElement {
|
|
|
86
86
|
detail: { name: input.getAttribute('name'), value: input.value },
|
|
87
87
|
});
|
|
88
88
|
inlineEdit.dispatchEvent(saveEvent);
|
|
89
|
-
|
|
90
|
-
//inlineEdit.setAttribute('data-saving','true');
|
|
91
|
-
input.disabled = true;
|
|
92
|
-
|
|
93
|
-
input.blur();
|
|
94
89
|
inlineEdit.blur();
|
|
95
|
-
|
|
96
90
|
statusSaving.classList.remove('d-none');
|
|
97
91
|
|
|
98
|
-
if
|
|
99
|
-
|
|
92
|
+
if(input){
|
|
93
|
+
input.disabled = true;
|
|
94
|
+
|
|
95
|
+
input.blur();
|
|
100
96
|
|
|
101
|
-
preview
|
|
97
|
+
if (preview) {
|
|
98
|
+
preview.innerHTML = input.value;
|
|
99
|
+
}
|
|
102
100
|
}
|
|
103
101
|
});
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
input.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
103
|
+
if(input){
|
|
104
|
+
// Save
|
|
105
|
+
if (input.tagName === 'INPUT') {
|
|
106
|
+
input.addEventListener('keydown', (event) => {
|
|
107
|
+
switch (
|
|
108
|
+
event.key // change to event.key to key to use the above variable
|
|
109
|
+
) {
|
|
110
|
+
case 'Enter':
|
|
111
|
+
event.stopPropagation();
|
|
112
|
+
event.preventDefault();
|
|
113
|
+
|
|
114
|
+
saveButton.click();
|
|
115
|
+
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// enter key saves
|
|
122
|
+
if (input.tagName === 'SELECT') {
|
|
123
|
+
input.addEventListener('change', () => {
|
|
124
|
+
originalValue = input.value;
|
|
125
|
+
|
|
126
|
+
const saveEvent = new CustomEvent('inline-edit-save', {
|
|
127
|
+
detail: { name: input.getAttribute('name'), value: input.value },
|
|
128
|
+
});
|
|
129
|
+
inlineEdit.dispatchEvent(saveEvent);
|
|
130
|
+
|
|
131
|
+
inlineEdit.setAttribute('data-saving', 'true');
|
|
132
|
+
input.disabled = true;
|
|
133
|
+
|
|
134
|
+
input.blur();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (input.tagName != 'SELECT') {
|
|
139
|
+
input.addEventListener('focus', () => {
|
|
140
|
+
input.select();
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
//blur it should autosave
|
|
145
|
+
input.addEventListener('blur', () => {
|
|
146
|
+
if (input.value != originalValue) {
|
|
147
|
+
if (inlineEdit.hasAttribute('data-autosave')) {
|
|
148
|
+
originalValue = input.value;
|
|
149
|
+
|
|
150
|
+
const saveEvent = new CustomEvent('inline-edit-autosave', {
|
|
151
|
+
detail: { name: input.getAttribute('name'), value: input.value },
|
|
152
|
+
});
|
|
153
|
+
inlineEdit.dispatchEvent(saveEvent);
|
|
154
|
+
|
|
155
|
+
statusSaving.classList.remove('d-none');
|
|
156
|
+
|
|
157
|
+
if (preview) {
|
|
158
|
+
preview.innerHTML = input.value;
|
|
159
|
+
}
|
|
160
|
+
} else if (!inlineEdit.querySelector('.inline-feedback')) {
|
|
161
|
+
statusNotSaved.classList.remove('d-none');
|
|
162
|
+
}
|
|
118
163
|
}
|
|
119
164
|
});
|
|
120
165
|
}
|
|
121
|
-
|
|
122
166
|
// Saved
|
|
123
167
|
inlineEdit.addEventListener('inline-edit-saved', () => {
|
|
124
168
|
setTimeout(() => {
|
|
@@ -142,51 +186,6 @@ class iamInlineEdit extends HTMLElement {
|
|
|
142
186
|
}, 1000);
|
|
143
187
|
});
|
|
144
188
|
|
|
145
|
-
// enter key saves
|
|
146
|
-
if (input.tagName === 'SELECT') {
|
|
147
|
-
input.addEventListener('change', () => {
|
|
148
|
-
originalValue = input.value;
|
|
149
|
-
|
|
150
|
-
const saveEvent = new CustomEvent('inline-edit-save', {
|
|
151
|
-
detail: { name: input.getAttribute('name'), value: input.value },
|
|
152
|
-
});
|
|
153
|
-
inlineEdit.dispatchEvent(saveEvent);
|
|
154
|
-
|
|
155
|
-
inlineEdit.setAttribute('data-saving', 'true');
|
|
156
|
-
input.disabled = true;
|
|
157
|
-
|
|
158
|
-
input.blur();
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (input.tagName != 'SELECT') {
|
|
163
|
-
input.addEventListener('focus', () => {
|
|
164
|
-
input.select();
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
//blur it should autosave
|
|
169
|
-
input.addEventListener('blur', () => {
|
|
170
|
-
if (input.value != originalValue) {
|
|
171
|
-
if (inlineEdit.hasAttribute('data-autosave')) {
|
|
172
|
-
originalValue = input.value;
|
|
173
|
-
|
|
174
|
-
const saveEvent = new CustomEvent('inline-edit-autosave', {
|
|
175
|
-
detail: { name: input.getAttribute('name'), value: input.value },
|
|
176
|
-
});
|
|
177
|
-
inlineEdit.dispatchEvent(saveEvent);
|
|
178
|
-
|
|
179
|
-
statusSaving.classList.remove('d-none');
|
|
180
|
-
|
|
181
|
-
if (preview) {
|
|
182
|
-
preview.innerHTML = input.value;
|
|
183
|
-
}
|
|
184
|
-
} else if (!inlineEdit.querySelector('.inline-feedback')) {
|
|
185
|
-
statusNotSaved.classList.remove('d-none');
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
|
|
190
189
|
// checkboxes
|
|
191
190
|
inlineEdit.addEventListener('change', (event) => {
|
|
192
191
|
if (event && event.target instanceof HTMLElement && event.target.closest('input[type="checkbox"]')) {
|
|
@@ -13,15 +13,11 @@ class iamMarketing extends HTMLElement {
|
|
|
13
13
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
14
|
? document.body.getAttribute('data-assets-location')
|
|
15
15
|
: '/assets';
|
|
16
|
-
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
17
|
-
? document.body.getAttribute('data-core-css')
|
|
18
|
-
: `${assetLocation}/css/core.min.css`;
|
|
19
16
|
const loadCSS = `@import "${assetLocation}/css/components/marketing.component.css";`;
|
|
20
17
|
|
|
21
18
|
const template = document.createElement('template');
|
|
22
19
|
template.innerHTML = `
|
|
23
20
|
<style>
|
|
24
|
-
@import "${coreCSS}";
|
|
25
21
|
${loadCSS}
|
|
26
22
|
|
|
27
23
|
</style>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import Cookies from 'js-cookie';
|
|
2
|
+
|
|
1
3
|
// Data layer Web component created
|
|
2
4
|
window.dataLayer = window.dataLayer || [];
|
|
3
5
|
window.dataLayer.push({
|
|
@@ -13,15 +15,13 @@ class iamMultiselect extends HTMLElement {
|
|
|
13
15
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
16
|
? document.body.getAttribute('data-assets-location')
|
|
15
17
|
: '/assets';
|
|
16
|
-
|
|
17
|
-
? document.body.getAttribute('data-core-css')
|
|
18
|
-
: `${assetLocation}/css/core.min.css`;
|
|
18
|
+
|
|
19
19
|
const loadCSS = `@import "${assetLocation}/css/components/multiselect.css";`;
|
|
20
20
|
|
|
21
21
|
const template = document.createElement('template');
|
|
22
22
|
template.innerHTML = `
|
|
23
23
|
<style>
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
${loadCSS}
|
|
26
26
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
27
27
|
</style>
|
|
@@ -52,7 +52,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
52
52
|
const button = multiselect.shadowRoot.querySelector('#clear');
|
|
53
53
|
let order = 0;
|
|
54
54
|
const innerLabel = multiselect.shadowRoot.querySelector('label .inner-label');
|
|
55
|
-
|
|
55
|
+
const ajaxURL = this.getAttribute('data-url');
|
|
56
56
|
innerLabel.innerHTML = multiselect.getAttribute('data-label');
|
|
57
57
|
|
|
58
58
|
if (multiselect.hasAttribute('placeholder')) {
|
|
@@ -99,6 +99,10 @@ class iamMultiselect extends HTMLElement {
|
|
|
99
99
|
inputToSet.closest('label').setAttribute('slot', 'checked');
|
|
100
100
|
inputToSet.closest('label').setAttribute('style', `--order:${order};`);
|
|
101
101
|
inputToSet.closest('label').setAttribute('data-order', order);
|
|
102
|
+
|
|
103
|
+
if(inputToSet.closest('[data-value]')){
|
|
104
|
+
inputToSet.closest('[data-value]').setAttribute('data-value', inputToSet.closest('label').textContent)
|
|
105
|
+
}
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
// check for errors
|
|
@@ -123,7 +127,8 @@ class iamMultiselect extends HTMLElement {
|
|
|
123
127
|
});
|
|
124
128
|
|
|
125
129
|
// Filter list
|
|
126
|
-
|
|
130
|
+
const filterList = () => {
|
|
131
|
+
|
|
127
132
|
Array.from(multiselect.querySelectorAll(`label:not([slot="checked"])`)).forEach((label) => {
|
|
128
133
|
const checkbox = label.querySelector('input');
|
|
129
134
|
const searchValue = checkbox.value;
|
|
@@ -138,6 +143,19 @@ class iamMultiselect extends HTMLElement {
|
|
|
138
143
|
label.setAttribute('slot', 'notmatched');
|
|
139
144
|
}
|
|
140
145
|
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
search.addEventListener('input', () => {
|
|
149
|
+
|
|
150
|
+
if (multiselect.hasAttribute('data-url')) {
|
|
151
|
+
|
|
152
|
+
if (search.value.length == 3) {
|
|
153
|
+
searchAjax(search.value);
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
|
|
157
|
+
filterList();
|
|
158
|
+
}
|
|
141
159
|
});
|
|
142
160
|
|
|
143
161
|
// Add a delayed hover effect for non hover devices
|
|
@@ -154,6 +172,7 @@ class iamMultiselect extends HTMLElement {
|
|
|
154
172
|
if (activeElement.getAttribute('type') != 'checkbox') {
|
|
155
173
|
if (multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`)) {
|
|
156
174
|
multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`).checked = true;
|
|
175
|
+
|
|
157
176
|
setItem(multiselect.querySelector(`input[type="checkbox"][value="${search.value}" i]`));
|
|
158
177
|
}
|
|
159
178
|
search.value = '';
|
|
@@ -162,12 +181,19 @@ class iamMultiselect extends HTMLElement {
|
|
|
162
181
|
setItem(checkbox);
|
|
163
182
|
});
|
|
164
183
|
}
|
|
184
|
+
|
|
185
|
+
if (multiselect.hasAttribute('data-url')) {
|
|
186
|
+
Array.from(multiselect.querySelectorAll(`label:has(input[type="checkbox"]:not(:checked))`)).forEach((checkbox) => {
|
|
187
|
+
|
|
188
|
+
checkbox.remove();
|
|
189
|
+
});
|
|
190
|
+
}
|
|
165
191
|
}, 200);
|
|
166
192
|
|
|
167
193
|
clearTimeout(hoverTimeout);
|
|
168
194
|
hoverTimeout = setTimeout(function () {
|
|
169
195
|
multiselect.classList.remove('hover');
|
|
170
|
-
},
|
|
196
|
+
}, 500);
|
|
171
197
|
});
|
|
172
198
|
|
|
173
199
|
// Set items
|
|
@@ -175,15 +201,30 @@ class iamMultiselect extends HTMLElement {
|
|
|
175
201
|
if (event && event.target instanceof HTMLElement && event.target.closest('input[type="checkbox"]')) {
|
|
176
202
|
const checkbox = event.target.closest('input[type="checkbox"]');
|
|
177
203
|
|
|
204
|
+
if(multiselect.hasAttribute('data-single')){
|
|
205
|
+
Array.from(multiselect.querySelectorAll(`label[slot="checked"] input`)).forEach((inputToCancel) => {
|
|
206
|
+
inputToCancel.checked = false;
|
|
207
|
+
inputToCancel.closest('label').removeAttribute('slot');
|
|
208
|
+
inputToCancel.closest('label').removeAttribute('style');
|
|
209
|
+
inputToCancel.closest('label').removeAttribute('data-order');
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
178
213
|
setItem(checkbox);
|
|
179
214
|
|
|
180
215
|
search.value = '';
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
216
|
+
if(!multiselect.hasAttribute('data-single')){
|
|
217
|
+
search.focus();
|
|
218
|
+
clearTimeout(hoverTimeout);
|
|
219
|
+
multiselect.classList.add('hover');
|
|
220
|
+
hoverTimeout = setTimeout(function () {
|
|
221
|
+
multiselect.classList.remove('hover');
|
|
222
|
+
}, 5000);
|
|
223
|
+
}
|
|
224
|
+
else{
|
|
225
|
+
|
|
185
226
|
multiselect.classList.remove('hover');
|
|
186
|
-
}
|
|
227
|
+
}
|
|
187
228
|
}
|
|
188
229
|
});
|
|
189
230
|
|
|
@@ -344,6 +385,50 @@ class iamMultiselect extends HTMLElement {
|
|
|
344
385
|
multiselect.addEventListener('mouseup', () => {
|
|
345
386
|
wrapper.removeAttribute('data-mousedown');
|
|
346
387
|
});
|
|
388
|
+
|
|
389
|
+
const searchAjax = async (searchterm): any => {
|
|
390
|
+
const searchAjaxURL = `${ajaxURL}${encodeURI(searchterm)}`;
|
|
391
|
+
|
|
392
|
+
// Setup controller vars if not already set
|
|
393
|
+
if (!window.controller) window.controller = [];
|
|
394
|
+
|
|
395
|
+
// Abort if controller already present for this url
|
|
396
|
+
if (window.controller[searchAjaxURL]) window.controller[searchAjaxURL].abort();
|
|
397
|
+
|
|
398
|
+
// Create a new controller so it can be aborted if new fetch made
|
|
399
|
+
window.controller[searchAjaxURL] = new AbortController();
|
|
400
|
+
const { signal } = controller[searchAjaxURL];
|
|
401
|
+
|
|
402
|
+
try {
|
|
403
|
+
await fetch(searchAjaxURL, {
|
|
404
|
+
signal: signal,
|
|
405
|
+
method: 'get',
|
|
406
|
+
credentials: 'same-origin',
|
|
407
|
+
headers: new Headers({
|
|
408
|
+
'Content-Type': 'application/json',
|
|
409
|
+
Accept: 'application/json',
|
|
410
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
411
|
+
'X-XSRF-TOKEN': Cookies.get('XSRF-TOKEN'),
|
|
412
|
+
}),
|
|
413
|
+
})
|
|
414
|
+
.then((response) => response.json())
|
|
415
|
+
.then((response) => {
|
|
416
|
+
|
|
417
|
+
let items = '';
|
|
418
|
+
|
|
419
|
+
for (let i = 0; i < response['data'].length; i++) {
|
|
420
|
+
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>`;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
multiselect.insertAdjacentHTML('beforeend', `${items}`);
|
|
424
|
+
|
|
425
|
+
filterList();
|
|
426
|
+
return response;
|
|
427
|
+
});
|
|
428
|
+
} catch (error) {
|
|
429
|
+
console.log(error);
|
|
430
|
+
}
|
|
431
|
+
};
|
|
347
432
|
}
|
|
348
433
|
}
|
|
349
434
|
|
|
@@ -13,16 +13,14 @@ class iamNav extends HTMLElement {
|
|
|
13
13
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
14
|
? document.body.getAttribute('data-assets-location')
|
|
15
15
|
: '/assets';
|
|
16
|
-
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
17
|
-
? document.body.getAttribute('data-core-css')
|
|
18
|
-
: `${assetLocation}/css/core.min.css`;
|
|
19
16
|
const loadCSS = `@import "${assetLocation}/css/components/nav.component.css";`;
|
|
20
17
|
const loadExtraCSS = `@import "${assetLocation}/css/components/nav.global.css";`;
|
|
21
18
|
|
|
22
19
|
const template = document.createElement('template');
|
|
23
20
|
template.innerHTML = `
|
|
24
21
|
<style class="styles">
|
|
25
|
-
|
|
22
|
+
|
|
23
|
+
|
|
26
24
|
${loadCSS}
|
|
27
25
|
</style>
|
|
28
26
|
<style class="doc-styles">
|
|
@@ -10,16 +10,13 @@ class iamNotification extends HTMLElement {
|
|
|
10
10
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
11
11
|
? document.body.getAttribute('data-assets-location')
|
|
12
12
|
: '/assets';
|
|
13
|
-
|
|
14
|
-
? document.body.getAttribute('data-core-css')
|
|
15
|
-
: `${assetLocation}/css/core.min.css`;
|
|
13
|
+
|
|
16
14
|
const loadCSS = `@import "${assetLocation}/css/components/notification.css";`;
|
|
17
15
|
const loadExtraCSS = `@import "${assetLocation}/css/components/notification.global.css";`;
|
|
18
16
|
|
|
19
17
|
const template = document.createElement('template');
|
|
20
18
|
template.innerHTML = `
|
|
21
19
|
<style>
|
|
22
|
-
@import "${coreCSS}";
|
|
23
20
|
${loadCSS}
|
|
24
21
|
${this.hasAttribute('data-css') ? `${this.getAttribute('data-css')}` : ``}
|
|
25
22
|
</style>
|
|
@@ -29,6 +26,7 @@ class iamNotification extends HTMLElement {
|
|
|
29
26
|
<div class="notification__inner"><div class="notification__text"><slot></slot></div><div class="notification__btns"><slot name="btns"></slot></div></div>
|
|
30
27
|
<div class="notification__dismiss"></div>
|
|
31
28
|
</div>
|
|
29
|
+
|
|
32
30
|
`;
|
|
33
31
|
this.shadowRoot.appendChild(template.content.cloneNode(true));
|
|
34
32
|
|
|
@@ -5,15 +5,12 @@ class iamPagination extends HTMLElement {
|
|
|
5
5
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
6
6
|
? document.body.getAttribute('data-assets-location')
|
|
7
7
|
: '/assets';
|
|
8
|
-
|
|
9
|
-
? document.body.getAttribute('data-core-css')
|
|
10
|
-
: `${assetLocation}/css/core.min.css`;
|
|
8
|
+
|
|
11
9
|
const loadCSS = `@import "${assetLocation}/css/components/pagination.css";`;
|
|
12
10
|
|
|
13
11
|
const template = document.createElement('template');
|
|
14
12
|
template.innerHTML = `
|
|
15
13
|
<style>
|
|
16
|
-
@import "${coreCSS}";
|
|
17
14
|
${loadCSS}
|
|
18
15
|
|
|
19
16
|
${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
|
|
@@ -82,14 +79,15 @@ class iamPagination extends HTMLElement {
|
|
|
82
79
|
|
|
83
80
|
// Next and previous buttons will simply trigger and on change on the select which in turn will dispatch an event
|
|
84
81
|
next.addEventListener('click', () => {
|
|
85
|
-
select.value = parseInt(select.value) + 1;
|
|
86
82
|
|
|
87
|
-
|
|
83
|
+
console.log(parseInt(this.getAttribute('data-page')))
|
|
84
|
+
|
|
85
|
+
this.setAttribute('data-page', parseInt(this.getAttribute('data-page')) + 1);
|
|
88
86
|
});
|
|
89
87
|
|
|
90
88
|
prev.addEventListener('click', () => {
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
|
|
90
|
+
this.setAttribute('data-page', parseInt(this.getAttribute('data-page')) - 1);
|
|
93
91
|
});
|
|
94
92
|
|
|
95
93
|
// Update how many is shown
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { trackComponentRegistered } from '../_global';
|
|
2
|
+
import passwordIndicator from '../../modules/password-indicator';
|
|
3
|
+
|
|
4
|
+
trackComponentRegistered('iam-password-indicator');
|
|
5
|
+
|
|
6
|
+
class iamPasswordIndicator extends HTMLElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.attachShadow({ mode: 'open' });
|
|
10
|
+
|
|
11
|
+
const template = document.createElement('template');
|
|
12
|
+
template.innerHTML = `
|
|
13
|
+
<slot></slot>
|
|
14
|
+
`;
|
|
15
|
+
this.shadowRoot?.appendChild(template.content.cloneNode(true));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
connectedCallback(): void {
|
|
19
|
+
|
|
20
|
+
passwordIndicator(this);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default iamPasswordIndicator;
|
|
@@ -10,13 +10,13 @@ class iamRank extends HTMLElement {
|
|
|
10
10
|
? document.body.getAttribute('data-assets-location')
|
|
11
11
|
: '/assets';
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const loadRankCSS = `@import "${assetLocation}/css/components/rank.component.css";`;
|
|
14
14
|
//const loadExtraCSS = `@import "${assetLocation}/css/components/rank.global.css";`;
|
|
15
15
|
|
|
16
16
|
const template = document.createElement('template');
|
|
17
17
|
template.innerHTML = `
|
|
18
18
|
<style>
|
|
19
|
-
${
|
|
19
|
+
${loadRankCSS}
|
|
20
20
|
</style>
|
|
21
21
|
<div class="wrapper" part="wrapper">
|
|
22
22
|
<div class="rank" part="rank">
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { trackComponent, trackComponentRegistered } from '../_global';
|
|
2
|
+
import iamRank from '../rank/rank.component';
|
|
2
3
|
|
|
3
4
|
trackComponentRegistered('iam-rankings');
|
|
4
5
|
class iamRankings extends HTMLElement {
|
|
@@ -69,7 +70,10 @@ class iamRankings extends HTMLElement {
|
|
|
69
70
|
|
|
70
71
|
firstRow?.insertAdjacentHTML('afterbegin', `<iam-rank class="rank--medal first-position">1st</iam-rank>`);
|
|
71
72
|
}
|
|
73
|
+
|
|
74
|
+
if (!window.customElements.get(`iam-rank`)) window.customElements.define(`iam-rank`, iamRank);
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
77
|
|
|
78
|
+
|
|
75
79
|
export default iamRankings;
|
|
@@ -17,14 +17,10 @@ class iamSearch extends HTMLElement {
|
|
|
17
17
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
18
18
|
? document.body.getAttribute('data-assets-location')
|
|
19
19
|
: '/assets';
|
|
20
|
-
const coreCSS = document.body.hasAttribute('data-core-css')
|
|
21
|
-
? document.body.getAttribute('data-core-css')
|
|
22
|
-
: `${assetLocation}/css/core.min.css`;
|
|
23
20
|
|
|
24
21
|
const template = document.createElement('template');
|
|
25
22
|
template.innerHTML = `
|
|
26
23
|
<style>
|
|
27
|
-
@import "${coreCSS}";
|
|
28
24
|
input {
|
|
29
25
|
background: red;
|
|
30
26
|
}
|
|
@@ -13,15 +13,12 @@ class iamSlider extends HTMLElement {
|
|
|
13
13
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
14
14
|
? document.body.getAttribute('data-assets-location')
|
|
15
15
|
: '/assets';
|
|
16
|
-
|
|
17
|
-
? document.body.getAttribute('data-core-css')
|
|
18
|
-
: `${assetLocation}/css/core.min.css`;
|
|
16
|
+
|
|
19
17
|
const loadCSS = `@import "${assetLocation}/css/components/slider.css";`;
|
|
20
18
|
|
|
21
19
|
const template = document.createElement('template');
|
|
22
20
|
template.innerHTML = `
|
|
23
21
|
<style>
|
|
24
|
-
@import "${coreCSS}";
|
|
25
22
|
${loadCSS}
|
|
26
23
|
</style>
|
|
27
24
|
<div class="row">
|
|
@@ -52,9 +52,9 @@ class iamTableAjax extends HTMLElement {
|
|
|
52
52
|
const assetLocation = document.body.hasAttribute('data-assets-location')
|
|
53
53
|
? document.body.getAttribute('data-assets-location')
|
|
54
54
|
: '/assets';
|
|
55
|
-
|
|
55
|
+
/*
|
|
56
56
|
if (!window.customElements.get(`iam-menu`)) {
|
|
57
|
-
import(
|
|
57
|
+
import( `${assetLocation}/js/components/menu/menu.component.js`)
|
|
58
58
|
.then((module) => {
|
|
59
59
|
window.customElements.define(`iam-menu`, module.default);
|
|
60
60
|
})
|
|
@@ -62,15 +62,15 @@ class iamTableAjax extends HTMLElement {
|
|
|
62
62
|
console.log(err.message);
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
*/
|
|
66
66
|
setupBasicTable(this, table, form, pagination);
|
|
67
67
|
|
|
68
68
|
setupAdvancedTable(this, table, form, pagination);
|
|
69
69
|
|
|
70
70
|
setupAjaxTable(this, table, form, pagination);
|
|
71
71
|
|
|
72
|
-
paginateTable(
|
|
73
|
-
loadAjaxTable(
|
|
72
|
+
paginateTable(this, table, form, pagination, () => {
|
|
73
|
+
loadAjaxTable(this, table, form, pagination);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
setupNoSubmitTable,
|
|
6
6
|
paginateRows,
|
|
7
7
|
paginateTable,
|
|
8
|
+
updateAttributes
|
|
8
9
|
} from '../../modules/table';
|
|
9
10
|
|
|
10
11
|
class iamTableNoSubmit extends HTMLElement {
|
|
@@ -66,30 +67,10 @@ class iamTableNoSubmit extends HTMLElement {
|
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
setupBasicTable(this, table, form, pagination);
|
|
69
|
-
|
|
70
70
|
setupAdvancedTable(this, table);
|
|
71
|
-
|
|
72
71
|
setupNoSubmitTable(this, table, form, pagination, savedTableBody);
|
|
73
72
|
|
|
74
|
-
paginateRows(this);
|
|
75
|
-
|
|
76
|
-
if (pagination) {
|
|
77
|
-
paginateTable(this, table, form, pagination, () => {
|
|
78
|
-
paginateRows(this);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// #region shared advanced functions
|
|
83
73
|
|
|
84
|
-
//endregion
|
|
85
|
-
|
|
86
|
-
// select all
|
|
87
|
-
// search
|
|
88
|
-
// filter
|
|
89
|
-
// sort
|
|
90
|
-
|
|
91
|
-
/*
|
|
92
|
-
// Push up the pagination events
|
|
93
74
|
pagination.addEventListener('update-show', (event) => {
|
|
94
75
|
const show = event.detail.show;
|
|
95
76
|
|
|
@@ -108,7 +89,15 @@ class iamTableNoSubmit extends HTMLElement {
|
|
|
108
89
|
updateAttributes(this, pagination);
|
|
109
90
|
});
|
|
110
91
|
|
|
111
|
-
|
|
92
|
+
|
|
93
|
+
// For when the table contents is updated with an ajax call
|
|
94
|
+
this.addEventListener('update-table', (event) => {
|
|
95
|
+
|
|
96
|
+
setupBasicTable(this, table, form, pagination);
|
|
97
|
+
setupAdvancedTable(this, table);
|
|
98
|
+
setupNoSubmitTable(this, table, form, pagination, savedTableBody);
|
|
99
|
+
});
|
|
100
|
+
|
|
112
101
|
}
|
|
113
102
|
/*
|
|
114
103
|
static get observedAttributes(): any {
|