@iamproperty/components 5.6.1-beta2 → 5.6.1-beta20
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/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 +8 -7
- 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 +12 -4
- package/assets/js/components/card/card.component.min.js +9 -9
- 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 +23 -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 +20 -20
- 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/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 +15 -6
- 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 +32 -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 +87 -84
- 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
|
@@ -5,11 +5,27 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
5
5
|
const dropArea = wrapper.querySelector('.drop-area');
|
|
6
6
|
const input = fileupload.querySelector('input');
|
|
7
7
|
const maxSize = fileupload.hasAttribute('data-maxsize') ? fileupload.getAttribute('data-maxsize') : 0;
|
|
8
|
+
const errorMsgSize = wrapper.querySelector('.invalid-feedback.size');
|
|
9
|
+
const errorMsgExt = wrapper.querySelector('.invalid-feedback.ext');
|
|
8
10
|
|
|
9
11
|
// We clone the input field to work as a buffer input field, this allows us to add new files without losing the old ones
|
|
10
12
|
const cloneInput = input.cloneNode();
|
|
11
13
|
dropArea.append(cloneInput);
|
|
12
14
|
|
|
15
|
+
let checkFileExt = function(filename){
|
|
16
|
+
|
|
17
|
+
if(!input.hasAttribute('accept'))
|
|
18
|
+
return true;
|
|
19
|
+
|
|
20
|
+
const nameExtension = filename.split('.').pop();
|
|
21
|
+
const acceptedTypes = input.getAttribute('accept');
|
|
22
|
+
|
|
23
|
+
if(acceptedTypes.includes(nameExtension))
|
|
24
|
+
return true;
|
|
25
|
+
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
13
29
|
wrapper.addEventListener('click', (event) => {
|
|
14
30
|
|
|
15
31
|
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')){
|
|
@@ -17,6 +33,9 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
17
33
|
const button = event.target.closest('.btn-primary');
|
|
18
34
|
|
|
19
35
|
// If the input allows multiples then use the buffer clone input
|
|
36
|
+
|
|
37
|
+
errorMsgExt.classList.remove('d-block');
|
|
38
|
+
errorMsgSize.classList.remove('d-block');
|
|
20
39
|
const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;
|
|
21
40
|
|
|
22
41
|
inputTrigger.click();
|
|
@@ -27,7 +46,6 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
27
46
|
|
|
28
47
|
if (event && event.target instanceof HTMLElement && event.target.closest('.files button')){
|
|
29
48
|
|
|
30
|
-
|
|
31
49
|
const dt = new DataTransfer();
|
|
32
50
|
const { files } = input;
|
|
33
51
|
const button = event.target.closest('.files button');
|
|
@@ -42,12 +60,6 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
42
60
|
|
|
43
61
|
input.files = dt.files // Assign the updates list
|
|
44
62
|
|
|
45
|
-
|
|
46
|
-
if(input.files.length == 0){
|
|
47
|
-
const emptyEvent = new Event('empty');
|
|
48
|
-
fileupload.dispatchEvent(emptyEvent);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
63
|
const changeEvent = new Event('change');
|
|
52
64
|
input.dispatchEvent(changeEvent);
|
|
53
65
|
}
|
|
@@ -57,6 +69,7 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
57
69
|
cloneInput.addEventListener('change', (event) => {
|
|
58
70
|
|
|
59
71
|
if(input.hasAttribute('multiple')){
|
|
72
|
+
|
|
60
73
|
const filesArray = [...input.files, ...cloneInput.files];
|
|
61
74
|
|
|
62
75
|
let fileNames = [];
|
|
@@ -68,8 +81,17 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
68
81
|
|
|
69
82
|
const size = file.size/1000;
|
|
70
83
|
|
|
71
|
-
if(!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize))
|
|
84
|
+
if(!fileNames.includes(file.name) && (maxSize == 0 || size < maxSize) && checkFileExt(file.name))
|
|
72
85
|
dt.items.add(file) // here you exclude the file. thus removing it.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
if(!checkFileExt(file.name)){
|
|
89
|
+
errorMsgExt.classList.add('d-block');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(size > maxSize){
|
|
93
|
+
errorMsgSize.classList.add('d-block');
|
|
94
|
+
}
|
|
73
95
|
|
|
74
96
|
fileNames.push(file.name);
|
|
75
97
|
}
|
|
@@ -80,12 +102,9 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
80
102
|
|
|
81
103
|
input.files = cloneInput.files;
|
|
82
104
|
}
|
|
83
|
-
|
|
105
|
+
|
|
84
106
|
const changeEvent = new Event('change');
|
|
85
107
|
input.dispatchEvent(changeEvent);
|
|
86
|
-
|
|
87
|
-
const elementChangeEvent = new Event('elementChange');
|
|
88
|
-
fileupload.dispatchEvent(elementChangeEvent);
|
|
89
108
|
});
|
|
90
109
|
|
|
91
110
|
|
|
@@ -106,11 +125,40 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
106
125
|
|
|
107
126
|
input.addEventListener('change', (event) => {
|
|
108
127
|
|
|
128
|
+
if(input.files.length == 1) {
|
|
129
|
+
|
|
130
|
+
let file = input.files[0];
|
|
131
|
+
|
|
132
|
+
const size = file.size/1000;
|
|
133
|
+
|
|
134
|
+
if(!checkFileExt(file.name)){
|
|
135
|
+
errorMsgExt.classList.add('d-block');
|
|
136
|
+
|
|
137
|
+
const dt = new DataTransfer();
|
|
138
|
+
input.files = dt.files;
|
|
139
|
+
}
|
|
140
|
+
if(size > maxSize){
|
|
141
|
+
errorMsgSize.classList.add('d-block');
|
|
142
|
+
|
|
143
|
+
const dt = new DataTransfer();
|
|
144
|
+
input.files = dt.files;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
109
148
|
// Reset
|
|
110
149
|
filesWrapper.innerHTML = '';
|
|
111
150
|
|
|
112
|
-
for (const file of input.files)
|
|
113
|
-
filesWrapper.innerHTML += `<span class="file">${file.name} <button data-file="${file.name}">Remove</button></span>`;
|
|
151
|
+
for (const file of input.files){
|
|
152
|
+
filesWrapper.innerHTML += `<span class="file" part="file">${file.name} <button data-file="${file.name}">Remove</button></span>`;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const elementChangeEvent = new CustomEvent('elementchange', {detail: {"files": input.files}});
|
|
156
|
+
fileupload.dispatchEvent(elementChangeEvent);
|
|
157
|
+
|
|
158
|
+
if(input.files.length == 0){
|
|
159
|
+
const emptyEvent = new CustomEvent('empty');
|
|
160
|
+
fileupload.dispatchEvent(emptyEvent);
|
|
161
|
+
}
|
|
114
162
|
});
|
|
115
163
|
|
|
116
164
|
if(fileupload.hasAttribute('data-filename')){
|
|
@@ -118,23 +166,8 @@ function fileupload(fileupload: Element, wrapper: Element) {
|
|
|
118
166
|
let filename = fileupload.getAttribute('data-filename');
|
|
119
167
|
|
|
120
168
|
if(filename)
|
|
121
|
-
filesWrapper.innerHTML
|
|
169
|
+
filesWrapper.innerHTML = `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
|
|
122
170
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// Change the filename
|
|
126
|
-
wrapper.addEventListener('click', (event) => {
|
|
127
|
-
|
|
128
|
-
if (event && event.target instanceof HTMLElement && event.target.closest('.btn-primary')){
|
|
129
|
-
|
|
130
|
-
const button = event.target.closest('.btn-primary');
|
|
131
|
-
|
|
132
|
-
// If the input allows multiples then use the buffer clone input
|
|
133
|
-
const inputTrigger = input.hasAttribute('multiple') ? cloneInput : input;
|
|
134
|
-
|
|
135
|
-
inputTrigger.click();
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
171
|
}
|
|
139
172
|
|
|
140
|
-
export default fileupload;
|
|
173
|
+
export default fileupload;
|
|
@@ -100,6 +100,12 @@ export const addGlobalEvents = (body) => {
|
|
|
100
100
|
}
|
|
101
101
|
});
|
|
102
102
|
|
|
103
|
+
Array.from(document.querySelectorAll('label progress')).forEach((progress,index) => {
|
|
104
|
+
let label = progress.closest('label');
|
|
105
|
+
|
|
106
|
+
label.setAttribute('data-percent',progress.getAttribute('value'));
|
|
107
|
+
});
|
|
108
|
+
|
|
103
109
|
return null
|
|
104
110
|
}
|
|
105
111
|
|
|
@@ -5,7 +5,7 @@ const extendInputs = (body) => {
|
|
|
5
5
|
|
|
6
6
|
function loadInput(){
|
|
7
7
|
// maxlength counter init
|
|
8
|
-
Array.from(document.querySelectorAll('input[maxlength]')).forEach((input,index) => {
|
|
8
|
+
Array.from(document.querySelectorAll('input[maxlength],textarea[maxlength]')).forEach((input,index) => {
|
|
9
9
|
let wrapper = input.parentElement;
|
|
10
10
|
setMaxlengthVars(input,wrapper);
|
|
11
11
|
});
|
|
@@ -149,7 +149,9 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
|
|
|
149
149
|
// Check what conditions are set on the table to see what the form actions are
|
|
150
150
|
let formSubmit = function(event, paginate = false){
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
if(wrapper.hasAttribute('data-no-submit')){
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
153
155
|
|
|
154
156
|
if(form.classList.contains('processing'))
|
|
155
157
|
return false;
|
|
@@ -848,6 +850,10 @@ export const populateDataQueries = (table,form,wrapper) => {
|
|
|
848
850
|
// Pagination
|
|
849
851
|
export const addPaginationEventListeners = function(table, form, pagination, wrapper){
|
|
850
852
|
|
|
853
|
+
if(wrapper.hasAttribute('data-no-submit')){
|
|
854
|
+
return false;
|
|
855
|
+
}
|
|
856
|
+
|
|
851
857
|
pagination.addEventListener('update-page', (event) => {
|
|
852
858
|
|
|
853
859
|
let paginationInput = form.querySelector('[data-pagination]');
|
|
@@ -1007,7 +1013,7 @@ const filterFilters = function(form){
|
|
|
1007
1013
|
}
|
|
1008
1014
|
|
|
1009
1015
|
export const loadAjaxTable = async function (table, form, pagination, wrapper){
|
|
1010
|
-
|
|
1016
|
+
|
|
1011
1017
|
let formData = new FormData(form);
|
|
1012
1018
|
let queryString = new URLSearchParams(formData).toString();
|
|
1013
1019
|
let columns = table.querySelectorAll('thead tr th:not(.expand-button-heading)');
|