@iamproperty/components 5.6.1-beta2 → 5.6.1-beta21
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/address-lookup.css +1 -1
- package/assets/css/components/address-lookup.css.map +1 -1
- package/assets/css/components/card.css +1 -1
- package/assets/css/components/card.css.map +1 -1
- package/assets/css/components/carousel.css +1 -1
- package/assets/css/components/carousel.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/fileupload.css +1 -1
- package/assets/css/components/fileupload.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/pagination.css +1 -1
- package/assets/css/components/pagination.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/core.min.css +1 -1
- package/assets/css/core.min.css.map +1 -1
- package/assets/css/style.min.css +1 -1
- package/assets/css/style.min.css.map +1 -1
- package/assets/js/components/accordion/accordion.component.min.js +1 -1
- package/assets/js/components/actionbar/actionbar.component.js +7 -7
- package/assets/js/components/actionbar/actionbar.component.min.js +10 -10
- package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
- package/assets/js/components/address-lookup/address-lookup.component.js +24 -13
- package/assets/js/components/address-lookup/address-lookup.component.min.js +9 -8
- package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
- package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
- package/assets/js/components/card/card.component.js +40 -20
- package/assets/js/components/card/card.component.min.js +19 -19
- package/assets/js/components/card/card.component.min.js.map +1 -1
- package/assets/js/components/carousel/carousel.component.js +17 -4
- package/assets/js/components/carousel/carousel.component.min.js +8 -8
- package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
- package/assets/js/components/collapsible-side/collapsible-side.component.js +5 -5
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js +7 -7
- package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
- package/assets/js/components/fileupload/fileupload.component.js +19 -3
- package/assets/js/components/fileupload/fileupload.component.min.js +10 -8
- package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
- package/assets/js/components/filterlist/filterlist.component.js +2 -2
- package/assets/js/components/filterlist/filterlist.component.min.js +5 -5
- package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
- package/assets/js/components/header/header.component.min.js +1 -1
- package/assets/js/components/inline-edit/inline-edit.component.js +3 -3
- package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
- package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
- package/assets/js/components/marketing/marketing.component.min.js +1 -1
- package/assets/js/components/multiselect/multiselect.component.js +4 -3
- package/assets/js/components/multiselect/multiselect.component.min.js +6 -6
- package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
- package/assets/js/components/nav/nav.component.min.js +1 -1
- package/assets/js/components/notification/notification.component.js +1 -1
- package/assets/js/components/notification/notification.component.min.js +2 -2
- package/assets/js/components/notification/notification.component.min.js.map +1 -1
- package/assets/js/components/pagination/pagination.component.min.js +3 -3
- package/assets/js/components/search/search.component.min.js +1 -1
- package/assets/js/components/search/search.component.min.js.map +1 -1
- package/assets/js/components/slider/slider.component.min.js +1 -1
- package/assets/js/components/table/table.component.js +16 -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/tabs/tabs.component.min.js +1 -1
- package/assets/js/dynamic.min.js +5 -5
- package/assets/js/dynamic.min.js.map +1 -1
- package/assets/js/modules/carousel.js +30 -8
- package/assets/js/modules/dialogs.js +7 -1
- package/assets/js/modules/dynamicEvents.js +3 -0
- package/assets/js/modules/fileupload.js +44 -19
- package/assets/js/modules/helpers.js +4 -0
- package/assets/js/modules/inputs.js +1 -1
- package/assets/js/modules/table.js +6 -1
- package/assets/js/scripts.bundle.js +29 -29
- 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/sass/_components.scss +54 -0
- package/assets/sass/components/address-lookup.scss +4 -0
- package/assets/sass/components/card.scss +88 -1
- package/assets/sass/components/carousel.scss +31 -7
- package/assets/sass/components/collapsible-side.scss +8 -1
- package/assets/sass/components/fileupload.scss +1 -10
- package/assets/sass/components/multiselect.scss +5 -1
- package/assets/sass/components/pagination.scss +11 -16
- package/assets/sass/components/table.global.scss +4 -19
- package/assets/sass/elements/dialog.scss +1 -1
- package/assets/sass/elements/forms.scss +39 -10
- package/assets/sass/elements/progress.scss +159 -17
- package/assets/ts/components/actionbar/actionbar.component.ts +7 -7
- package/assets/ts/components/address-lookup/address-lookup.component.ts +28 -14
- package/assets/ts/components/card/card.component.ts +51 -23
- package/assets/ts/components/carousel/carousel.component.ts +20 -4
- package/assets/ts/components/collapsible-side/collapsible-side.component.ts +5 -5
- package/assets/ts/components/fileupload/fileupload.component.ts +29 -3
- package/assets/ts/components/filterlist/filterlist.component.ts +2 -2
- package/assets/ts/components/inline-edit/inline-edit.component.ts +3 -3
- package/assets/ts/components/multiselect/multiselect.component.ts +4 -3
- package/assets/ts/components/notification/notification.component.ts +1 -1
- package/assets/ts/components/table/table.component.ts +24 -1
- package/assets/ts/modules/carousel.ts +40 -9
- package/assets/ts/modules/dialogs.ts +9 -1
- package/assets/ts/modules/dynamicEvents.ts +3 -0
- package/assets/ts/modules/fileupload.ts +64 -31
- package/assets/ts/modules/helpers.ts +6 -0
- package/assets/ts/modules/inputs.ts +1 -1
- package/assets/ts/modules/table.ts +8 -2
- package/dist/components.es.js +546 -611
- package/dist/components.umd.js +98 -95
- package/dist/style.css +1 -1
- package/package.json +3 -3
- package/src/components/Card/README.md +1 -0
- package/src/components/Carousel/Carousel.vue +5 -1
- package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +1 -1
- package/src/components/FileUpload/FileUpload.vue +29 -6
|
@@ -4,13 +4,26 @@ function fileupload(fileupload, wrapper) {
|
|
|
4
4
|
const dropArea = wrapper.querySelector('.drop-area');
|
|
5
5
|
const input = fileupload.querySelector('input');
|
|
6
6
|
const maxSize = fileupload.hasAttribute('data-maxsize') ? fileupload.getAttribute('data-maxsize') : 0;
|
|
7
|
+
const errorMsgSize = wrapper.querySelector('.invalid-feedback.size');
|
|
8
|
+
const errorMsgExt = wrapper.querySelector('.invalid-feedback.ext');
|
|
7
9
|
// We clone the input field to work as a buffer input field, this allows us to add new files without losing the old ones
|
|
8
10
|
const cloneInput = input.cloneNode();
|
|
9
11
|
dropArea.append(cloneInput);
|
|
12
|
+
let checkFileExt = function (filename) {
|
|
13
|
+
if (!input.hasAttribute('accept'))
|
|
14
|
+
return true;
|
|
15
|
+
const nameExtension = filename.split('.').pop();
|
|
16
|
+
const acceptedTypes = input.getAttribute('accept');
|
|
17
|
+
if (acceptedTypes.includes(nameExtension))
|
|
18
|
+
return true;
|
|
19
|
+
return false;
|
|
20
|
+
};
|
|
10
21
|
wrapper.addEventListener('click', (event) => {
|
|
11
22
|
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {
|
|
12
23
|
const button = event.target.closest('.btn-primary');
|
|
13
24
|
// If the input allows multiples then use the buffer clone input
|
|
25
|
+
errorMsgExt.classList.remove('d-block');
|
|
26
|
+
errorMsgSize.classList.remove('d-block');
|
|
14
27
|
const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;
|
|
15
28
|
inputTrigger.click();
|
|
16
29
|
}
|
|
@@ -26,10 +39,6 @@ function fileupload(fileupload, wrapper) {
|
|
|
26
39
|
dt.items.add(file); // here you exclude the file. thus removing it.
|
|
27
40
|
}
|
|
28
41
|
input.files = dt.files; // Assign the updates list
|
|
29
|
-
if (input.files.length == 0) {
|
|
30
|
-
const emptyEvent = new Event('empty');
|
|
31
|
-
fileupload.dispatchEvent(emptyEvent);
|
|
32
|
-
}
|
|
33
42
|
const changeEvent = new Event('change');
|
|
34
43
|
input.dispatchEvent(changeEvent);
|
|
35
44
|
}
|
|
@@ -43,8 +52,14 @@ function fileupload(fileupload, wrapper) {
|
|
|
43
52
|
for (let i = 0; i < filesArray.length; i++) {
|
|
44
53
|
const file = filesArray[i];
|
|
45
54
|
const size = file.size / 1000;
|
|
46
|
-
if (!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize))
|
|
55
|
+
if (!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize) && checkFileExt(file.name))
|
|
47
56
|
dt.items.add(file); // here you exclude the file. thus removing it.
|
|
57
|
+
if (!checkFileExt(file.name)) {
|
|
58
|
+
errorMsgExt.classList.add('d-block');
|
|
59
|
+
}
|
|
60
|
+
if (size > maxSize) {
|
|
61
|
+
errorMsgSize.classList.add('d-block');
|
|
62
|
+
}
|
|
48
63
|
fileNames.push(file.name);
|
|
49
64
|
}
|
|
50
65
|
input.files = dt.files;
|
|
@@ -54,8 +69,6 @@ function fileupload(fileupload, wrapper) {
|
|
|
54
69
|
}
|
|
55
70
|
const changeEvent = new Event('change');
|
|
56
71
|
input.dispatchEvent(changeEvent);
|
|
57
|
-
const elementChangeEvent = new Event('elementChange');
|
|
58
|
-
fileupload.dispatchEvent(elementChangeEvent);
|
|
59
72
|
});
|
|
60
73
|
cloneInput.addEventListener('dragenter', (event) => {
|
|
61
74
|
cloneInput.classList.add('focus');
|
|
@@ -67,24 +80,36 @@ function fileupload(fileupload, wrapper) {
|
|
|
67
80
|
cloneInput.classList.remove('focus');
|
|
68
81
|
});
|
|
69
82
|
input.addEventListener('change', (event) => {
|
|
83
|
+
if (input.files.length == 1) {
|
|
84
|
+
let file = input.files[0];
|
|
85
|
+
const size = file.size / 1000;
|
|
86
|
+
if (!checkFileExt(file.name)) {
|
|
87
|
+
errorMsgExt.classList.add('d-block');
|
|
88
|
+
const dt = new DataTransfer();
|
|
89
|
+
input.files = dt.files;
|
|
90
|
+
}
|
|
91
|
+
if (size > maxSize) {
|
|
92
|
+
errorMsgSize.classList.add('d-block');
|
|
93
|
+
const dt = new DataTransfer();
|
|
94
|
+
input.files = dt.files;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
70
97
|
// Reset
|
|
71
98
|
filesWrapper.innerHTML = '';
|
|
72
|
-
for (const file of input.files)
|
|
73
|
-
filesWrapper.innerHTML += `<span class="file">${file.name} <button data-file="${file.name}">Remove</button></span>`;
|
|
99
|
+
for (const file of input.files) {
|
|
100
|
+
filesWrapper.innerHTML += `<span class="file" part="file">${file.name} <button data-file="${file.name}">Remove</button></span>`;
|
|
101
|
+
}
|
|
102
|
+
const elementChangeEvent = new CustomEvent('elementchange', { detail: { "files": input.files } });
|
|
103
|
+
fileupload.dispatchEvent(elementChangeEvent);
|
|
104
|
+
if (input.files.length == 0) {
|
|
105
|
+
const emptyEvent = new CustomEvent('empty');
|
|
106
|
+
fileupload.dispatchEvent(emptyEvent);
|
|
107
|
+
}
|
|
74
108
|
});
|
|
75
109
|
if (fileupload.hasAttribute('data-filename')) {
|
|
76
110
|
let filename = fileupload.getAttribute('data-filename');
|
|
77
111
|
if (filename)
|
|
78
|
-
filesWrapper.innerHTML
|
|
112
|
+
filesWrapper.innerHTML = `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
|
|
79
113
|
}
|
|
80
|
-
// Change the filename
|
|
81
|
-
wrapper.addEventListener('click', (event) => {
|
|
82
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')) {
|
|
83
|
-
const button = event.target.closest('.btn-primary');
|
|
84
|
-
// If the input allows multiples then use the buffer clone input
|
|
85
|
-
const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;
|
|
86
|
-
inputTrigger.click();
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
114
|
}
|
|
90
115
|
export default fileupload;
|
|
@@ -72,6 +72,10 @@ export const addGlobalEvents = (body) => {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
|
+
Array.from(document.querySelectorAll('label progress')).forEach((progress, index) => {
|
|
76
|
+
let label = progress.closest('label');
|
|
77
|
+
label.setAttribute('data-percent', progress.getAttribute('value'));
|
|
78
|
+
});
|
|
75
79
|
return null;
|
|
76
80
|
};
|
|
77
81
|
export const isNumeric = function (str) {
|
|
@@ -3,7 +3,7 @@ import hibpCheck from '../vendor/hibp.js';
|
|
|
3
3
|
const extendInputs = (body) => {
|
|
4
4
|
function loadInput() {
|
|
5
5
|
// maxlength counter init
|
|
6
|
-
Array.from(document.querySelectorAll('input[maxlength]')).forEach((input, index) => {
|
|
6
|
+
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input, index) => {
|
|
7
7
|
let wrapper = input.parentElement;
|
|
8
8
|
setMaxlengthVars(input, wrapper);
|
|
9
9
|
});
|
|
@@ -108,7 +108,9 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
108
108
|
var timer;
|
|
109
109
|
// Check what conditions are set on the table to see what the form actions are
|
|
110
110
|
let formSubmit = function (event, paginate = false) {
|
|
111
|
-
|
|
111
|
+
if (wrapper.hasAttribute('data-no-submit')) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
112
114
|
if (form.classList.contains('processing'))
|
|
113
115
|
return false;
|
|
114
116
|
Array.from(form.querySelectorAll('iam-applied-filters')).forEach((element, index) => {
|
|
@@ -609,6 +611,9 @@ export const populateDataQueries = (table, form, wrapper) => {
|
|
|
609
611
|
};
|
|
610
612
|
// Pagination
|
|
611
613
|
export const addPaginationEventListeners = function (table, form, pagination, wrapper) {
|
|
614
|
+
if (wrapper.hasAttribute('data-no-submit')) {
|
|
615
|
+
return false;
|
|
616
|
+
}
|
|
612
617
|
pagination.addEventListener('update-page', (event) => {
|
|
613
618
|
let paginationInput = form.querySelector('[data-pagination]');
|
|
614
619
|
let newPage = event.detail.page;
|