@iamproperty/components 7.5.1--beta9 → 7.5.1--beta10
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.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.map +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.map +1 -1
- package/assets/css/components/content.component.css.map +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.global.css.map +1 -1
- package/assets/css/components/modal.component.css.map +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/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.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/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 +4 -4
- 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 +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +2 -2
- package/assets/js/components/card/card.component.min.js +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/content/content.component.min.js +1 -1
- package/assets/js/components/darkmode/darkmode.component.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 +1 -1
- 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.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.min.js +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 +1 -1
- package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
- 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/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 +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 +5 -5
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +5 -5
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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/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/table.js +48 -163
- 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/table-basic.global.scss +0 -6
- 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/ts/components/darkmode/darkmode.component.ts +6 -2
- package/assets/ts/components/input/input.component.ts +109 -1
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +1 -1
- package/assets/ts/modules/advanced-select.ts +8 -0
- package/assets/ts/modules/table.ts +14 -160
- package/dist/components.es.js +29 -29
- package/dist/components.umd.js +107 -107
- package/package.json +4 -4
|
@@ -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
|
|
|
@@ -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' : ''}
|
|
@@ -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
|
|
|
@@ -103,7 +103,7 @@ export const paginateTable = (component, table, form, pagination, callback): voi
|
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
pagination.addEventListener('update-page', (event) => {
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
if (form.querySelector('[name=page]').value != event.detail.page) {
|
|
108
108
|
form.querySelector('[name=page]').value = event.detail.page;
|
|
109
109
|
|
|
@@ -690,20 +690,6 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
690
690
|
// Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input
|
|
691
691
|
if (event.type == 'submit') {
|
|
692
692
|
form.classList.add('processing');
|
|
693
|
-
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element) => {
|
|
694
|
-
const id = element.getAttribute('data-duplicate');
|
|
695
|
-
const input = document.getElementById(id);
|
|
696
|
-
const card = document.querySelector(`[for="${id}"] iam-card`);
|
|
697
|
-
|
|
698
|
-
if (input.checked != element.checked) {
|
|
699
|
-
if (card) {
|
|
700
|
-
const clickEvent = new Event('click');
|
|
701
|
-
card.dispatchEvent(clickEvent);
|
|
702
|
-
} else {
|
|
703
|
-
input.checked = element.checked;
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
});
|
|
707
693
|
form.classList.remove('processing');
|
|
708
694
|
}
|
|
709
695
|
|
|
@@ -721,7 +707,7 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
721
707
|
}
|
|
722
708
|
*/
|
|
723
709
|
};
|
|
724
|
-
/*
|
|
710
|
+
/*
|
|
725
711
|
if (component.querySelector('iam-actionbar[data-search]')) {
|
|
726
712
|
component.querySelector('iam-actionbar[data-search]').addEventListener('search-submit', (event) => {
|
|
727
713
|
if (form.querySelector('input[data-search]')) {
|
|
@@ -801,18 +787,6 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
801
787
|
if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')) {
|
|
802
788
|
formSubmit(event);
|
|
803
789
|
}
|
|
804
|
-
|
|
805
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('[data-mimic]')) {
|
|
806
|
-
formSubmit(event);
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
if (event && event.target instanceof HTMLElement && event.target.hasAttribute('id')) {
|
|
810
|
-
const id = event.target.getAttribute('id');
|
|
811
|
-
|
|
812
|
-
if (document.querySelector(`[data-duplicate="${id}"]`)) {
|
|
813
|
-
document.querySelector(`[data-duplicate="${id}"]`).checked = event.target.checked;
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
790
|
});
|
|
817
791
|
|
|
818
792
|
form.addEventListener('click', (event) => {
|
|
@@ -903,68 +877,6 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
903
877
|
formSubmit(event, true);
|
|
904
878
|
});
|
|
905
879
|
|
|
906
|
-
// Mmimic fields
|
|
907
|
-
const forms = [];
|
|
908
|
-
const fields = [];
|
|
909
|
-
|
|
910
|
-
// Collect the forms that we need to add an event listener for.
|
|
911
|
-
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
912
|
-
const mimicField = input.getAttribute('data-mimic');
|
|
913
|
-
|
|
914
|
-
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput) => {
|
|
915
|
-
const parentForm = mimicInput.closest('form');
|
|
916
|
-
|
|
917
|
-
if (!forms.includes(parentForm)) {
|
|
918
|
-
forms.push(parentForm);
|
|
919
|
-
}
|
|
920
|
-
|
|
921
|
-
if (!fields.includes(mimicField)) {
|
|
922
|
-
fields.push(mimicField);
|
|
923
|
-
}
|
|
924
|
-
});
|
|
925
|
-
});
|
|
926
|
-
|
|
927
|
-
// For each form add change listener
|
|
928
|
-
forms.forEach((parentForm) => {
|
|
929
|
-
const updateMimicInput = function (): void {
|
|
930
|
-
const mimickedAlready = [];
|
|
931
|
-
const formData = new FormData(parentForm);
|
|
932
|
-
|
|
933
|
-
let i = 1;
|
|
934
|
-
for (const [key, value] of formData) {
|
|
935
|
-
if (document.querySelector(`[data-mimic="${key}"]`) && !mimickedAlready.includes(key)) {
|
|
936
|
-
mimickedAlready.push(key);
|
|
937
|
-
document.querySelector(`[data-mimic="${key}"]`).value = value;
|
|
938
|
-
} else if (document.querySelector(`[data-mimic="${key}"]`))
|
|
939
|
-
document.querySelector(`[data-mimic="${key}"]`).value += ',' + value;
|
|
940
|
-
|
|
941
|
-
i++;
|
|
942
|
-
}
|
|
943
|
-
|
|
944
|
-
for (const value of mimickedAlready) {
|
|
945
|
-
const event = new Event('force');
|
|
946
|
-
form.dispatchEvent(event);
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
// Check for empties
|
|
950
|
-
for (const field of fields) {
|
|
951
|
-
if (!formData.has(field) && parentForm.querySelector(`[name="${field}"]`)) {
|
|
952
|
-
document.querySelector(`[data-mimic="${field}"]`).value = '';
|
|
953
|
-
|
|
954
|
-
const event = new Event('force');
|
|
955
|
-
form.dispatchEvent(event);
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
};
|
|
959
|
-
|
|
960
|
-
parentForm.addEventListener('force', () => {
|
|
961
|
-
updateMimicInput();
|
|
962
|
-
});
|
|
963
|
-
|
|
964
|
-
parentForm.addEventListener('change', () => {
|
|
965
|
-
updateMimicInput();
|
|
966
|
-
});
|
|
967
|
-
});
|
|
968
880
|
};
|
|
969
881
|
|
|
970
882
|
export const filterTable = (component, table, form, pagination): void => {
|
|
@@ -1255,12 +1167,14 @@ export const setupAjaxTable = (component, table, form, pagination): void => {
|
|
|
1255
1167
|
|
|
1256
1168
|
form.addEventListener('submit', (event) => {
|
|
1257
1169
|
|
|
1258
|
-
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((
|
|
1170
|
+
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((loopElement) => {
|
|
1259
1171
|
|
|
1260
|
-
const
|
|
1172
|
+
const element = loopElement.tagName == "IAM-INPUT" ? loopElement.querySelector('input') : loopElement;
|
|
1173
|
+
const id = loopElement.getAttribute('data-duplicate');
|
|
1261
1174
|
|
|
1262
|
-
if (document.querySelector(`[id="${id}"]`)) {
|
|
1263
|
-
|
|
1175
|
+
if (document.querySelector(`[id="${id}"], [name="${id}"]`)) {
|
|
1176
|
+
|
|
1177
|
+
document.querySelector(`[id="${id}"], [name="${id}"]`).checked = element.checked;
|
|
1264
1178
|
}
|
|
1265
1179
|
});
|
|
1266
1180
|
|
|
@@ -1275,28 +1189,15 @@ export const setupAjaxTable = (component, table, form, pagination): void => {
|
|
|
1275
1189
|
|
|
1276
1190
|
loadAjaxTable(component, table, form, pagination);
|
|
1277
1191
|
}
|
|
1192
|
+
});
|
|
1278
1193
|
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
if (document.querySelector(`[data-duplicate="${id}"]`)) {
|
|
1283
|
-
document.querySelector(`[data-duplicate="${id}"]`).checked = event.target.checked;
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
const changeEvent = new CustomEvent('change');
|
|
1287
|
-
document.querySelector(`[data-duplicate="${id}"]`)?.dispatchEvent(changeEvent);
|
|
1288
|
-
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
|
|
1292
|
-
if (event && event.target instanceof HTMLElement && event.target.hasAttribute('data-duplicate') && !event.target.closest('iam-modal')) {
|
|
1293
|
-
const id = event.target.getAttribute('data-duplicate');
|
|
1194
|
+
// watch hidden fields for change events
|
|
1195
|
+
Array.from(form.querySelectorAll('[type="hidden"]')).forEach((input) => {
|
|
1294
1196
|
|
|
1295
|
-
|
|
1296
|
-
document.querySelector(`[id="${id}"]`).checked = event.target.checked;
|
|
1297
|
-
}
|
|
1298
|
-
}
|
|
1197
|
+
input.addEventListener('change', (event) => {
|
|
1299
1198
|
|
|
1199
|
+
loadAjaxTable(component, table, form, pagination);
|
|
1200
|
+
});
|
|
1300
1201
|
});
|
|
1301
1202
|
|
|
1302
1203
|
if (actionbar) {
|
|
@@ -1323,53 +1224,6 @@ export const setupAjaxTable = (component, table, form, pagination): void => {
|
|
|
1323
1224
|
});
|
|
1324
1225
|
}
|
|
1325
1226
|
|
|
1326
|
-
// mimic fields
|
|
1327
|
-
const fields = [];
|
|
1328
|
-
|
|
1329
|
-
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
1330
|
-
|
|
1331
|
-
input.addEventListener('change', (event) => {
|
|
1332
|
-
|
|
1333
|
-
loadAjaxTable(component, table, form, pagination);
|
|
1334
|
-
});
|
|
1335
|
-
});
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
1339
|
-
const mimicField = input.getAttribute('data-mimic');
|
|
1340
|
-
|
|
1341
|
-
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput) => {
|
|
1342
|
-
|
|
1343
|
-
if (!fields.includes(mimicInput)) {
|
|
1344
|
-
fields.push(mimicInput);
|
|
1345
|
-
}
|
|
1346
|
-
});
|
|
1347
|
-
});
|
|
1348
|
-
|
|
1349
|
-
fields.forEach((input) => {
|
|
1350
|
-
|
|
1351
|
-
input.addEventListener('change', (event) => {
|
|
1352
|
-
|
|
1353
|
-
const name = input.getAttribute('name');
|
|
1354
|
-
const mimicInput = document.querySelector(`[data-mimic="${name}"]`);
|
|
1355
|
-
|
|
1356
|
-
let valueToSend = '';
|
|
1357
|
-
Array.from(document.querySelectorAll(`[name="${name}"]:checked`)).forEach((input) => {
|
|
1358
|
-
|
|
1359
|
-
if(valueToSend == '')
|
|
1360
|
-
valueToSend = input.value;
|
|
1361
|
-
else
|
|
1362
|
-
valueToSend += ',' + input.value;
|
|
1363
|
-
});
|
|
1364
|
-
|
|
1365
|
-
console.log(valueToSend);
|
|
1366
|
-
|
|
1367
|
-
mimicInput.value = valueToSend;
|
|
1368
|
-
const changeEvent = new CustomEvent('change');
|
|
1369
|
-
mimicInput?.dispatchEvent(changeEvent);
|
|
1370
|
-
});
|
|
1371
|
-
});
|
|
1372
|
-
|
|
1373
1227
|
};
|
|
1374
1228
|
// #region ajax tables functions
|
|
1375
1229
|
|