@iamproperty/components 7.5.1--beta6 → 7.5.1--beta8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/components/actionbar.component.css +1 -1
- package/assets/css/components/actionbar.component.css.map +1 -1
- package/assets/css/components/address-lookup.component.css +1 -1
- package/assets/css/components/address-lookup.component.css.map +1 -1
- package/assets/css/components/applied-filters.css +1 -1
- package/assets/css/components/applied-filters.css.map +1 -1
- package/assets/css/components/calendar.component.css +1 -1
- package/assets/css/components/calendar.component.css.map +1 -1
- package/assets/css/components/card.component.css +1 -1
- package/assets/css/components/card.component.css.map +1 -1
- package/assets/css/components/fileupload.css +1 -1
- package/assets/css/components/fileupload.css.map +1 -1
- package/assets/css/components/input-range.component.css +1 -0
- package/assets/css/components/input-range.component.css.map +1 -0
- package/assets/css/components/input.component.css +1 -0
- package/assets/css/components/input.component.css.map +1 -0
- package/assets/css/components/modal.component.css +1 -0
- package/assets/css/components/modal.component.css.map +1 -0
- package/assets/css/components/multi-step-modal.component.css +1 -0
- package/assets/css/components/multi-step-modal.component.css.map +1 -0
- package/assets/css/components/multi-step-modal.global.css +1 -0
- package/assets/css/components/multi-step-modal.global.css.map +1 -0
- package/assets/css/components/multiselect.css +1 -1
- package/assets/css/components/multiselect.css.map +1 -1
- package/assets/css/components/nav.component.css +1 -1
- package/assets/css/components/nav.component.css.map +1 -1
- package/assets/css/components/pagination.css +1 -1
- package/assets/css/components/pagination.css.map +1 -1
- package/assets/css/components/password.component.css +1 -0
- package/assets/css/components/password.component.css.map +1 -0
- package/assets/css/components/slider.css +1 -1
- package/assets/css/components/slider.css.map +1 -1
- package/assets/css/components/tabs.component.css +1 -1
- package/assets/css/components/tabs.component.css.map +1 -1
- package/assets/css/components/tabs.config.css +1 -1
- package/assets/css/components/tabs.config.css.map +1 -1
- package/assets/css/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/mobile-core.min.css +1 -1
- package/assets/css/mobile-core.min.css.map +1 -1
- package/assets/css/mobile.min.css +1 -1
- package/assets/css/mobile.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.js +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +3 -3
- package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +2 -4
- package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +45 -0
- package/assets/js/components/address-lookup/address-lookup.component.min.js +12 -4
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.js +0 -2
- package/assets/js/components/applied-filters/applied-filters.component.min.js +5 -7
- package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
- package/assets/js/components/barchart/barchart.component.min.js +1 -1
- package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
- package/assets/js/components/calendar/calendar.component.min.js +5 -5
- package/assets/js/components/card/card.component.min.js +8 -8
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.min.js +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
- package/assets/js/components/content/content.component.min.js +1 -1
- package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
- package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
- package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
- package/assets/js/components/filter-card/filter-card.component.js +19 -0
- package/assets/js/components/filter-card/filter-card.component.min.js +4 -4
- package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
- package/assets/js/components/input/input.component.js +128 -0
- package/assets/js/components/input/input.component.min.js +16 -0
- package/assets/js/components/input/input.component.min.js.map +1 -0
- package/assets/js/components/input-range/input-range.component.js +62 -0
- package/assets/js/components/input-range/input-range.component.min.js +14 -0
- package/assets/js/components/input-range/input-range.component.min.js.map +1 -0
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/menu/menu.component.min.js +1 -1
- package/assets/js/components/milestone/milestone.component.min.js +1 -1
- package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
- package/assets/js/components/modal/modal.component.js +141 -0
- package/assets/js/components/modal/modal.component.min.js +28 -0
- package/assets/js/components/modal/modal.component.min.js.map +1 -0
- package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
- package/assets/js/components/multi-step-modal/multi-step-modal.component.js +233 -0
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +17 -0
- package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -0
- package/assets/js/components/multiselect/multiselect.component.min.js +4 -4
- package/assets/js/components/nav/nav.component.min.js +5 -5
- package/assets/js/components/nav/nav.component.min.js.map +1 -1
- package/assets/js/components/notification/notification.component.min.js +1 -1
- package/assets/js/components/pagination/pagination.component.js +0 -1
- package/assets/js/components/pagination/pagination.component.min.js +4 -4
- package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
- package/assets/js/components/password/password.component.js +93 -0
- package/assets/js/components/password/password.component.min.js +17 -0
- package/assets/js/components/password/password.component.min.js.map +1 -0
- package/assets/js/components/rank/rank.component.min.js +1 -1
- package/assets/js/components/rankings/rankings.component.min.js +1 -1
- package/assets/js/components/record-card/record-card.component.min.js +4 -4
- package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/slider/slider.component.min.js +3 -3
- package/assets/js/components/split-button/split-button.component.min.js +1 -1
- package/assets/js/components/std-address-lookup/std-address-lookup.component.js +2 -0
- package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +18 -8
- 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 +4 -4
- package/assets/js/components/table/table.component.min.js.map +1 -1
- package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
- package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
- package/assets/js/components/table-basic/table-basic.component.min.js +2 -2
- package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
- package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
- package/assets/js/components/table-submit/table-submit.component.min.js +2 -2
- package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
- package/assets/js/components/tabs/tabs.component.min.js +2 -2
- package/assets/js/components/video-card/video-card.component.min.js +4 -4
- package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
- package/assets/js/components/word-count/word-count.component.min.js +1 -1
- package/assets/js/modules/applied-filters.js +80 -62
- package/assets/js/modules/card.module.js +6 -1
- package/assets/js/modules/dialogs.js +6 -2
- package/assets/js/modules/password.js +72 -0
- package/assets/js/modules/table.js +103 -32
- package/assets/js/scripts.bundle.js +2 -3
- package/assets/js/scripts.bundle.js.map +1 -1
- package/assets/js/scripts.bundle.min.js +2 -2
- package/assets/js/scripts.bundle.min.js.map +1 -1
- package/assets/js/scripts.js +0 -2
- package/assets/sass/_components.scss +2 -0
- package/assets/sass/_elements.scss +2 -0
- package/assets/sass/components/actionbar.component.scss +1 -0
- package/assets/sass/components/address-lookup.component.scss +20 -0
- package/assets/sass/components/applied-filters.scss +10 -14
- package/assets/sass/components/input-range.component.scss +38 -0
- package/assets/sass/components/input.component.scss +102 -0
- package/assets/sass/components/modal.component.scss +269 -0
- package/assets/sass/components/multi-step-modal.component.scss +255 -0
- package/assets/sass/components/multi-step-modal.global.scss +92 -0
- package/assets/sass/components/password.component.scss +60 -0
- package/assets/sass/components/tabs.config.scss +2 -2
- package/assets/sass/elements/badge-tag.scss +0 -1
- package/assets/sass/elements/details.scss +12 -7
- package/assets/sass/elements/dialog.scss +46 -5
- package/assets/sass/elements/forms.scss +41 -177
- package/assets/sass/elements/hr.scss +1 -1
- package/assets/sass/elements/modal.scss +19 -21
- package/assets/sass/elements/prefix.scss +115 -0
- package/assets/ts/components/accordion/accordion.component.ts +1 -1
- package/assets/ts/components/actionbar/actionbar.component.ts +3 -10
- package/assets/ts/components/address-lookup/address-lookup.component.ts +60 -0
- package/assets/ts/components/applied-filters/applied-filters.component.ts +0 -2
- package/assets/ts/components/filter-card/filter-card.component.ts +27 -0
- package/assets/ts/components/input/input.component.ts +168 -0
- package/assets/ts/components/input-range/input-range.component.ts +78 -0
- package/assets/ts/components/modal/modal.component.ts +188 -0
- package/assets/ts/components/multi-step-modal/multi-step-modal.component.ts +304 -0
- package/assets/ts/components/pagination/pagination.component.ts +0 -2
- package/assets/ts/components/password/password.component.ts +118 -0
- package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +2 -1
- package/assets/ts/modules/applied-filters.ts +110 -71
- package/assets/ts/modules/card.module.ts +9 -4
- package/assets/ts/modules/dialogs.ts +6 -2
- package/assets/ts/modules/password.ts +82 -0
- package/assets/ts/modules/table.ts +102 -12
- package/assets/ts/scripts.ts +2 -2
- package/dist/components.es.js +641 -959
- package/dist/components.umd.js +275 -182
- package/package.json +2 -2
- package/src/components/Input/Input.vue +19 -363
- package/src/components/InputRange/InputRange.vue +22 -0
- package/src/components/Modal/Modal.vue +22 -0
- package/src/components/MultiStepModal/MultiStepModal.vue +23 -0
- package/src/components/{PasswordIndicator/PasswordIndicator.vue → Password/Password.vue} +23 -23
- package/assets/js/components/password-indicator/password-indicator.component.js +0 -19
- package/assets/js/components/password-indicator/password-indicator.component.min.js +0 -7
- package/assets/js/components/password-indicator/password-indicator.component.min.js.map +0 -1
- package/assets/js/modules/form.js +0 -125
- package/assets/js/modules/inputs.js +0 -151
- package/assets/js/modules/password-indicator.js +0 -21
- package/assets/ts/components/password-indicator/password-indicator.component.ts +0 -24
- package/assets/ts/modules/form.ts +0 -166
- package/assets/ts/modules/inputs.ts +0 -181
- package/assets/ts/modules/password-indicator.ts +0 -29
|
@@ -25,10 +25,15 @@ export const setupCard = (cardComponent: any): void => {
|
|
|
25
25
|
|
|
26
26
|
// Inset the HTML for the data total or icon fallback
|
|
27
27
|
if (cardComponent.hasAttribute('data-total')) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
|
|
29
|
+
if(!cardBody?.querySelector('.card__total'))
|
|
30
|
+
cardBody.insertAdjacentHTML(
|
|
31
|
+
'beforeend',
|
|
32
|
+
`<div class="card__total">${cardComponent.getAttribute('data-total')}</div>`
|
|
33
|
+
);
|
|
34
|
+
else {
|
|
35
|
+
cardBody?.querySelector('.card__total')?.innerHTML = cardComponent.getAttribute('data-total');
|
|
36
|
+
}
|
|
32
37
|
} else if (cardComponent.querySelector('[slot="total-icon"]')) {
|
|
33
38
|
cardBody.insertAdjacentHTML('beforeend', `<div class="card__total"><slot name="total-icon"></slot></div>`);
|
|
34
39
|
}
|
|
@@ -23,6 +23,10 @@ const extendDialogs = (body): void => {
|
|
|
23
23
|
: button.getAttribute('data-filter');
|
|
24
24
|
const dialog = document.querySelector(`dialog#${modalID}`);
|
|
25
25
|
|
|
26
|
+
if(document.querySelector(`iam-modal#${modalID}`)) return false;
|
|
27
|
+
|
|
28
|
+
if(document.querySelector(`iam-multi-step-modal#${modalID}`)) return false;
|
|
29
|
+
|
|
26
30
|
createDialog(dialog);
|
|
27
31
|
|
|
28
32
|
// Open the modal!
|
|
@@ -232,7 +236,7 @@ const extendDialogs = (body): void => {
|
|
|
232
236
|
|
|
233
237
|
export const createDialog = (dialog): void => {
|
|
234
238
|
// If you are using Vue eevents and bindings its recommended to add in the .mh-lg div manually to the dialog
|
|
235
|
-
if (!dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
|
|
239
|
+
if (dialog && !dialog.querySelector(':scope .mh-lg') && !dialog.querySelector('iam-multi-step')) {
|
|
236
240
|
dialog.innerHTML = `<div class="mh-lg">${dialog.innerHTML}</div>`;
|
|
237
241
|
|
|
238
242
|
const dialogContent = dialog.querySelector('.mh-lg');
|
|
@@ -248,7 +252,7 @@ export const createDialog = (dialog): void => {
|
|
|
248
252
|
}
|
|
249
253
|
|
|
250
254
|
// Create close button is needed
|
|
251
|
-
if (!dialog.querySelector(':scope > button:first-child'))
|
|
255
|
+
if (dialog && !dialog.querySelector(':scope > button:first-child'))
|
|
252
256
|
dialog.insertAdjacentHTML('afterbegin', `<button class="dialog__close">Close</button>`);
|
|
253
257
|
};
|
|
254
258
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import hibpCheck from '../vendor/hibp.js';
|
|
2
|
+
|
|
3
|
+
export const changeType = function (element: Element): void {
|
|
4
|
+
const buttonEle = element.querySelector('button')
|
|
5
|
+
const associatedInput = element?.parentNode?.querySelector('input');
|
|
6
|
+
|
|
7
|
+
element.addEventListener('click', (event) => {
|
|
8
|
+
const currentType = associatedInput.type;
|
|
9
|
+
|
|
10
|
+
const newType = currentType === 'password' ? 'text' : 'password';
|
|
11
|
+
const isPasswordType = currentType === 'password';
|
|
12
|
+
|
|
13
|
+
associatedInput.setAttribute('type', newType);
|
|
14
|
+
associatedInput.setAttribute('data-password-type', isPasswordType);
|
|
15
|
+
|
|
16
|
+
if (element.hasAttribute('data-alt-class')) {
|
|
17
|
+
const newClass = element.getAttribute('data-alt-class');
|
|
18
|
+
element.setAttribute('data-alt-class', buttonEle.getAttribute('class'));
|
|
19
|
+
buttonEle.setAttribute('class', newClass);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
export const checkPWDStrength = (input, check = 'no'): void => {
|
|
27
|
+
const pwdChecker = document.getElementById(input.getAttribute('data-strength-checker'));
|
|
28
|
+
const password = input.value;
|
|
29
|
+
const minChars = input.hasAttribute('minlength') ? input.getAttribute('minlength') : 12;
|
|
30
|
+
|
|
31
|
+
let strength = 1;
|
|
32
|
+
const strengthName = ['Very weak', 'Weak', 'Average', 'Strong', 'Very strong'];
|
|
33
|
+
let extraMsg = '';
|
|
34
|
+
|
|
35
|
+
//has number
|
|
36
|
+
if (password.match(/(?=.*[0-9])/)) strength += 1;
|
|
37
|
+
// has special character
|
|
38
|
+
if (password.match(/(?=.*[!,%,&,#,$,^,*,?,_,~,<,>,])/)) strength += 1;
|
|
39
|
+
// has lowercase alpha
|
|
40
|
+
if (password.match(/(?=.*[a-z])/)) strength += 1;
|
|
41
|
+
// has uppercase alpha
|
|
42
|
+
if (password.match(/(?=.*[A-Z])/)) strength += 1;
|
|
43
|
+
|
|
44
|
+
if (password.length < minChars) {
|
|
45
|
+
strength = 1;
|
|
46
|
+
extraMsg = `(must be at least ${minChars} characters.)`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// if the strength is above weak and above the minimum length do some kind of api call to check if its in a list of passwords
|
|
50
|
+
|
|
51
|
+
if (strength >= 3 && check == 'no') {
|
|
52
|
+
hibpCheck(password, input);
|
|
53
|
+
|
|
54
|
+
input.addEventListener('hibpCheck', function (event) {
|
|
55
|
+
checkhibpCheck(event, input);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
function checkhibpCheck(event, input): void {
|
|
59
|
+
if (event.detail) {
|
|
60
|
+
// found
|
|
61
|
+
checkPWDStrength(input, 'danger');
|
|
62
|
+
} else {
|
|
63
|
+
// not found
|
|
64
|
+
checkPWDStrength(input, 'success');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
input.removeEventListener('hibpCheck', checkhibpCheck); // Succeeds
|
|
68
|
+
}
|
|
69
|
+
} else if (strength >= 3 && check == 'danger') {
|
|
70
|
+
strength = 3;
|
|
71
|
+
extraMsg = `(this password is very common)`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (pwdChecker) {
|
|
75
|
+
if (strength <= 3) pwdChecker.classList.add('invalid-feedback');
|
|
76
|
+
else pwdChecker.classList.remove('invalid-feedback');
|
|
77
|
+
|
|
78
|
+
pwdChecker.setAttribute('data-strength', strength);
|
|
79
|
+
pwdChecker.innerHTML = `Password strength: ${strengthName[strength - 1]} ${extraMsg}`;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { doc } from 'prettier';
|
|
1
2
|
import { zeroPad, isNumeric, ucfirst, resolvePath, uniqueID } from './helpers';
|
|
2
3
|
|
|
3
4
|
// #region Helpers
|
|
@@ -102,6 +103,7 @@ export const paginateTable = (component, table, form, pagination, callback): voi
|
|
|
102
103
|
});
|
|
103
104
|
|
|
104
105
|
pagination.addEventListener('update-page', (event) => {
|
|
106
|
+
console.log('update page')
|
|
105
107
|
if (form.querySelector('[name=page]').value != event.detail.page) {
|
|
106
108
|
form.querySelector('[name=page]').value = event.detail.page;
|
|
107
109
|
|
|
@@ -719,7 +721,7 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
719
721
|
}
|
|
720
722
|
*/
|
|
721
723
|
};
|
|
722
|
-
|
|
724
|
+
/*
|
|
723
725
|
if (component.querySelector('iam-actionbar[data-search]')) {
|
|
724
726
|
component.querySelector('iam-actionbar[data-search]').addEventListener('search-submit', (event) => {
|
|
725
727
|
if (form.querySelector('input[data-search]')) {
|
|
@@ -757,7 +759,7 @@ export const addFilterEventListeners = (component, table, form, pagination, save
|
|
|
757
759
|
filterTable(component, table, form, pagination);
|
|
758
760
|
});
|
|
759
761
|
}
|
|
760
|
-
|
|
762
|
+
*/
|
|
761
763
|
form.addEventListener('keyup', (event) => {
|
|
762
764
|
clearTimeout(timer);
|
|
763
765
|
|
|
@@ -1252,11 +1254,51 @@ export const setupAjaxTable = (component, table, form, pagination): void => {
|
|
|
1252
1254
|
const actionbar = component.querySelector('iam-actionbar');
|
|
1253
1255
|
|
|
1254
1256
|
form.addEventListener('submit', (event) => {
|
|
1257
|
+
|
|
1258
|
+
Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element) => {
|
|
1259
|
+
|
|
1260
|
+
const id = element.getAttribute('data-duplicate');
|
|
1261
|
+
|
|
1262
|
+
if (document.querySelector(`[id="${id}"]`)) {
|
|
1263
|
+
document.querySelector(`[id="${id}"]`).checked = element.checked;
|
|
1264
|
+
}
|
|
1265
|
+
});
|
|
1266
|
+
|
|
1255
1267
|
loadAjaxTable(component, table, form, pagination);
|
|
1256
1268
|
|
|
1257
1269
|
event.preventDefault();
|
|
1258
1270
|
});
|
|
1259
1271
|
|
|
1272
|
+
form.addEventListener('change', (event) => {
|
|
1273
|
+
|
|
1274
|
+
if(!event.target.closest('iam-modal')){
|
|
1275
|
+
|
|
1276
|
+
loadAjaxTable(component, table, form, pagination);
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
if (event && event.target instanceof HTMLElement && event.target.hasAttribute('id')) {
|
|
1280
|
+
const id = event.target.getAttribute('id');
|
|
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');
|
|
1294
|
+
|
|
1295
|
+
if (document.querySelector(`[id="${id}"]`)) {
|
|
1296
|
+
document.querySelector(`[id="${id}"]`).checked = event.target.checked;
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
});
|
|
1301
|
+
|
|
1260
1302
|
if (actionbar) {
|
|
1261
1303
|
actionbar.addEventListener('change', (event) => {
|
|
1262
1304
|
loadAjaxTable(component, table, form, pagination);
|
|
@@ -1278,11 +1320,59 @@ export const setupAjaxTable = (component, table, form, pagination): void => {
|
|
|
1278
1320
|
component.dispatchEvent(submitEvent);
|
|
1279
1321
|
|
|
1280
1322
|
loadAjaxTable(component, table, form, pagination);
|
|
1281
|
-
console.log('hello');
|
|
1282
1323
|
});
|
|
1283
1324
|
}
|
|
1284
1325
|
|
|
1285
1326
|
|
|
1327
|
+
// mimic fields
|
|
1328
|
+
const fields = [];
|
|
1329
|
+
|
|
1330
|
+
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
1331
|
+
|
|
1332
|
+
input.addEventListener('change', (event) => {
|
|
1333
|
+
|
|
1334
|
+
loadAjaxTable(component, table, form, pagination);
|
|
1335
|
+
});
|
|
1336
|
+
});
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
Array.from(form.querySelectorAll('[data-mimic]')).forEach((input) => {
|
|
1340
|
+
const mimicField = input.getAttribute('data-mimic');
|
|
1341
|
+
|
|
1342
|
+
Array.from(document.querySelectorAll(`[name="${mimicField}"]`)).forEach((mimicInput) => {
|
|
1343
|
+
|
|
1344
|
+
if (!fields.includes(mimicInput)) {
|
|
1345
|
+
fields.push(mimicInput);
|
|
1346
|
+
}
|
|
1347
|
+
});
|
|
1348
|
+
});
|
|
1349
|
+
|
|
1350
|
+
fields.forEach((input) => {
|
|
1351
|
+
|
|
1352
|
+
input.addEventListener('change', (event) => {
|
|
1353
|
+
|
|
1354
|
+
const name = input.getAttribute('name');
|
|
1355
|
+
const mimicInput = document.querySelector(`[data-mimic="${name}"]`);
|
|
1356
|
+
|
|
1357
|
+
let valueToSend = '';
|
|
1358
|
+
Array.from(document.querySelectorAll(`[name="${name}"]:checked`)).forEach((input) => {
|
|
1359
|
+
|
|
1360
|
+
if(valueToSend == '')
|
|
1361
|
+
valueToSend = input.value;
|
|
1362
|
+
else
|
|
1363
|
+
valueToSend += ',' + input.value;
|
|
1364
|
+
});
|
|
1365
|
+
|
|
1366
|
+
console.log(valueToSend);
|
|
1367
|
+
|
|
1368
|
+
mimicInput.value = valueToSend;
|
|
1369
|
+
const changeEvent = new CustomEvent('change');
|
|
1370
|
+
mimicInput?.dispatchEvent(changeEvent);
|
|
1371
|
+
});
|
|
1372
|
+
});
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1286
1376
|
};
|
|
1287
1377
|
// #region ajax tables functions
|
|
1288
1378
|
|
|
@@ -1372,12 +1462,12 @@ export const loadAjaxTable = async function (component, table, form, pagination)
|
|
|
1372
1462
|
})
|
|
1373
1463
|
.then((response) => response.json())
|
|
1374
1464
|
.then((response) => {
|
|
1375
|
-
const schema =
|
|
1376
|
-
const totalNumberSchema =
|
|
1377
|
-
?
|
|
1465
|
+
const schema = component.hasAttribute('data-schema') ? component.getAttribute('data-schema') : 'data';
|
|
1466
|
+
const totalNumberSchema = component.hasAttribute('data-schema-total')
|
|
1467
|
+
? component.getAttribute('data-schema-total')
|
|
1378
1468
|
: 'meta.total';
|
|
1379
|
-
const currentPageSchema =
|
|
1380
|
-
?
|
|
1469
|
+
const currentPageSchema = component.hasAttribute('data-schema-page')
|
|
1470
|
+
? component.getAttribute('data-schema-page')
|
|
1381
1471
|
: 'meta.current_page';
|
|
1382
1472
|
|
|
1383
1473
|
const totalNumber = resolvePath(response, totalNumberSchema, 15);
|
|
@@ -1453,11 +1543,11 @@ export const loadAjaxTable = async function (component, table, form, pagination)
|
|
|
1453
1543
|
tbody.appendChild(table_row);
|
|
1454
1544
|
});
|
|
1455
1545
|
|
|
1456
|
-
component.setAttribute('data-total', parseInt(totalNumber));
|
|
1457
|
-
component.setAttribute('data-page', parseInt(currentPage));
|
|
1546
|
+
//component.setAttribute('data-total', parseInt(totalNumber));
|
|
1547
|
+
//component.setAttribute('data-page', parseInt(currentPage));
|
|
1458
1548
|
|
|
1459
|
-
pagination.setAttribute('data-total', totalNumber);
|
|
1460
|
-
pagination.setAttribute('data-page', currentPage);
|
|
1549
|
+
//pagination.setAttribute('data-total', totalNumber);
|
|
1550
|
+
//pagination.setAttribute('data-page', currentPage);
|
|
1461
1551
|
|
|
1462
1552
|
Array.from(form.querySelectorAll('[data-ajax-query]')).forEach((queryElement) => {
|
|
1463
1553
|
const totalNumber = resolvePath(response, queryElement.getAttribute('data-ajax-query'), '');
|
package/assets/ts/scripts.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as helpers from './modules/helpers';
|
|
3
3
|
import extendDialogs from './modules/dialogs';
|
|
4
4
|
import createDataLayer from './modules/data-layer';
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
import createDynamicEvents from './modules/dynamicEvents';
|
|
7
7
|
import videoSupport from './modules/videos';
|
|
8
8
|
|
|
@@ -56,7 +56,7 @@ document.addEventListener('DOMContentLoaded', async (): void => {
|
|
|
56
56
|
helpers.addGlobalEvents(document.body);
|
|
57
57
|
|
|
58
58
|
extendDialogs(document.body);
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
|
|
61
61
|
videoSupport(document.body);
|
|
62
62
|
|