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