@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.
Files changed (111) hide show
  1. package/assets/css/components/card.css +1 -1
  2. package/assets/css/components/card.css.map +1 -1
  3. package/assets/css/components/carousel.css +1 -1
  4. package/assets/css/components/carousel.css.map +1 -1
  5. package/assets/css/components/collapsible-side.css +1 -1
  6. package/assets/css/components/collapsible-side.css.map +1 -1
  7. package/assets/css/components/fileupload.css +1 -1
  8. package/assets/css/components/fileupload.css.map +1 -1
  9. package/assets/css/components/multiselect.css +1 -1
  10. package/assets/css/components/multiselect.css.map +1 -1
  11. package/assets/css/components/pagination.css +1 -1
  12. package/assets/css/components/pagination.css.map +1 -1
  13. package/assets/css/components/table.global.css +1 -1
  14. package/assets/css/components/table.global.css.map +1 -1
  15. package/assets/css/core.min.css +1 -1
  16. package/assets/css/core.min.css.map +1 -1
  17. package/assets/css/style.min.css +1 -1
  18. package/assets/css/style.min.css.map +1 -1
  19. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  20. package/assets/js/components/actionbar/actionbar.component.js +7 -7
  21. package/assets/js/components/actionbar/actionbar.component.min.js +10 -10
  22. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  23. package/assets/js/components/address-lookup/address-lookup.component.js +24 -13
  24. package/assets/js/components/address-lookup/address-lookup.component.min.js +8 -7
  25. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  26. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  27. package/assets/js/components/card/card.component.js +12 -4
  28. package/assets/js/components/card/card.component.min.js +9 -9
  29. package/assets/js/components/card/card.component.min.js.map +1 -1
  30. package/assets/js/components/carousel/carousel.component.js +17 -4
  31. package/assets/js/components/carousel/carousel.component.min.js +8 -8
  32. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  33. package/assets/js/components/collapsible-side/collapsible-side.component.js +5 -5
  34. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +7 -7
  35. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  36. package/assets/js/components/fileupload/fileupload.component.js +19 -3
  37. package/assets/js/components/fileupload/fileupload.component.min.js +10 -8
  38. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  39. package/assets/js/components/filterlist/filterlist.component.js +2 -2
  40. package/assets/js/components/filterlist/filterlist.component.min.js +5 -5
  41. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  42. package/assets/js/components/header/header.component.min.js +1 -1
  43. package/assets/js/components/inline-edit/inline-edit.component.js +3 -3
  44. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  45. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  46. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  47. package/assets/js/components/multiselect/multiselect.component.js +4 -3
  48. package/assets/js/components/multiselect/multiselect.component.min.js +6 -6
  49. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  50. package/assets/js/components/nav/nav.component.min.js +1 -1
  51. package/assets/js/components/notification/notification.component.js +1 -1
  52. package/assets/js/components/notification/notification.component.min.js +2 -2
  53. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  54. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  55. package/assets/js/components/search/search.component.min.js +1 -1
  56. package/assets/js/components/search/search.component.min.js.map +1 -1
  57. package/assets/js/components/slider/slider.component.min.js +1 -1
  58. package/assets/js/components/table/table.component.js +16 -1
  59. package/assets/js/components/table/table.component.min.js +5 -5
  60. package/assets/js/components/table/table.component.min.js.map +1 -1
  61. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  62. package/assets/js/dynamic.min.js +5 -5
  63. package/assets/js/dynamic.min.js.map +1 -1
  64. package/assets/js/modules/carousel.js +23 -8
  65. package/assets/js/modules/dialogs.js +7 -1
  66. package/assets/js/modules/dynamicEvents.js +3 -0
  67. package/assets/js/modules/fileupload.js +44 -19
  68. package/assets/js/modules/helpers.js +4 -0
  69. package/assets/js/modules/inputs.js +1 -1
  70. package/assets/js/modules/table.js +6 -1
  71. package/assets/js/scripts.bundle.js +20 -20
  72. package/assets/js/scripts.bundle.js.map +1 -1
  73. package/assets/js/scripts.bundle.min.js +2 -2
  74. package/assets/js/scripts.bundle.min.js.map +1 -1
  75. package/assets/sass/_components.scss +54 -0
  76. package/assets/sass/components/card.scss +88 -1
  77. package/assets/sass/components/carousel.scss +31 -7
  78. package/assets/sass/components/collapsible-side.scss +8 -1
  79. package/assets/sass/components/fileupload.scss +1 -10
  80. package/assets/sass/components/multiselect.scss +5 -1
  81. package/assets/sass/components/pagination.scss +11 -16
  82. package/assets/sass/components/table.global.scss +4 -19
  83. package/assets/sass/elements/dialog.scss +1 -1
  84. package/assets/sass/elements/forms.scss +39 -10
  85. package/assets/sass/elements/progress.scss +159 -17
  86. package/assets/ts/components/actionbar/actionbar.component.ts +7 -7
  87. package/assets/ts/components/address-lookup/address-lookup.component.ts +28 -14
  88. package/assets/ts/components/card/card.component.ts +15 -6
  89. package/assets/ts/components/carousel/carousel.component.ts +20 -4
  90. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +5 -5
  91. package/assets/ts/components/fileupload/fileupload.component.ts +29 -3
  92. package/assets/ts/components/filterlist/filterlist.component.ts +2 -2
  93. package/assets/ts/components/inline-edit/inline-edit.component.ts +3 -3
  94. package/assets/ts/components/multiselect/multiselect.component.ts +4 -3
  95. package/assets/ts/components/notification/notification.component.ts +1 -1
  96. package/assets/ts/components/table/table.component.ts +24 -1
  97. package/assets/ts/modules/carousel.ts +32 -9
  98. package/assets/ts/modules/dialogs.ts +9 -1
  99. package/assets/ts/modules/dynamicEvents.ts +3 -0
  100. package/assets/ts/modules/fileupload.ts +64 -31
  101. package/assets/ts/modules/helpers.ts +6 -0
  102. package/assets/ts/modules/inputs.ts +1 -1
  103. package/assets/ts/modules/table.ts +8 -2
  104. package/dist/components.es.js +546 -611
  105. package/dist/components.umd.js +87 -84
  106. package/dist/style.css +1 -1
  107. package/package.json +3 -3
  108. package/src/components/Card/README.md +1 -0
  109. package/src/components/Carousel/Carousel.vue +5 -1
  110. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +1 -1
  111. 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 += `<span class="file">${filename} <button data-file="${filename}">Remove</button></span>`;
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
- console.log('submit');
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)');