@iamproperty/components 4.0.0 → 4.1.0-beta

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 (87) hide show
  1. package/assets/css/components/actionbar-global.css +1 -1
  2. package/assets/css/components/actionbar-global.css.map +1 -1
  3. package/assets/css/components/actionbar.css +1 -1
  4. package/assets/css/components/actionbar.css.map +1 -1
  5. package/assets/css/components/admin-panel.css +1 -1
  6. package/assets/css/components/admin-panel.css.map +1 -1
  7. package/assets/css/components/card-global.css +1 -1
  8. package/assets/css/components/card-global.css.map +1 -1
  9. package/assets/css/components/card.css +1 -1
  10. package/assets/css/components/card.css.map +1 -1
  11. package/assets/css/components/charts.css.map +1 -1
  12. package/assets/css/components/collapsible-side.css.map +1 -1
  13. package/assets/css/components/dialog.css +1 -1
  14. package/assets/css/components/dialog.css.map +1 -1
  15. package/assets/css/components/fileupload.css.map +1 -1
  16. package/assets/css/components/header.css.map +1 -1
  17. package/assets/css/components/lists.css.map +1 -1
  18. package/assets/css/components/nav-global.css +1 -1
  19. package/assets/css/components/nav-global.css.map +1 -1
  20. package/assets/css/components/nav.css.map +1 -1
  21. package/assets/css/components/nav.old.css.map +1 -1
  22. package/assets/css/components/notification.css.map +1 -1
  23. package/assets/css/components/pagination.css.map +1 -1
  24. package/assets/css/components/property-searchbar.css.map +1 -1
  25. package/assets/css/components/table.css +1 -1
  26. package/assets/css/components/table.css.map +1 -1
  27. package/assets/css/core.min.css +1 -1
  28. package/assets/css/core.min.css.map +1 -1
  29. package/assets/css/style.min.css +1 -1
  30. package/assets/css/style.min.css.map +1 -1
  31. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  32. package/assets/js/components/actionbar/actionbar.component.js +45 -0
  33. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  34. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  35. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  36. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  37. package/assets/js/components/card/card.component.js +9 -1
  38. package/assets/js/components/card/card.component.min.js +7 -5
  39. package/assets/js/components/card/card.component.min.js.map +1 -1
  40. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  41. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  42. package/assets/js/components/header/header.component.min.js +1 -1
  43. package/assets/js/components/nav/nav.component.min.js +1 -1
  44. package/assets/js/components/notification/notification.component.min.js +1 -1
  45. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  46. package/assets/js/components/table/table.component.js +3 -0
  47. package/assets/js/components/table/table.component.min.js +10 -10
  48. package/assets/js/components/table/table.component.min.js.map +1 -1
  49. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  50. package/assets/js/dynamic.min.js +3 -3
  51. package/assets/js/dynamic.min.js.map +1 -1
  52. package/assets/js/modules/applied-filters.js +3 -3
  53. package/assets/js/modules/dialogs.js +12 -0
  54. package/assets/js/modules/table.js +68 -13
  55. package/assets/js/scripts.bundle.js +15 -13
  56. package/assets/js/scripts.bundle.js.map +1 -1
  57. package/assets/js/scripts.bundle.min.js +2 -2
  58. package/assets/js/scripts.bundle.min.js.map +1 -1
  59. package/assets/sass/_corefiles.scss +0 -1
  60. package/assets/sass/_func.scss +1 -0
  61. package/assets/sass/_functions/mixins.scss +22 -0
  62. package/assets/sass/components/actionbar-global.scss +69 -7
  63. package/assets/sass/components/actionbar.scss +13 -7
  64. package/assets/sass/components/admin-panel.scss +47 -2
  65. package/assets/sass/components/card-global.scss +46 -1
  66. package/assets/sass/components/card.scss +14 -12
  67. package/assets/sass/components/charts.scss +1 -1
  68. package/assets/sass/components/collapsible-side.scss +1 -1
  69. package/assets/sass/components/dialog.scss +6 -23
  70. package/assets/sass/components/fileupload.scss +1 -1
  71. package/assets/sass/components/nav-global.scss +15 -9
  72. package/assets/sass/components/nav.scss +9 -10
  73. package/assets/sass/components/notification.scss +1 -1
  74. package/assets/sass/components/table.scss +85 -4
  75. package/assets/sass/core.scss +1 -0
  76. package/assets/sass/error.scss +2 -1
  77. package/assets/sass/foundations/root.scss +3 -3
  78. package/assets/sass/main.scss +4 -3
  79. package/assets/ts/components/actionbar/actionbar.component.ts +67 -2
  80. package/assets/ts/components/card/card.component.ts +12 -2
  81. package/assets/ts/components/table/table.component.ts +4 -0
  82. package/assets/ts/modules/applied-filters.ts +6 -5
  83. package/assets/ts/modules/dialogs.ts +17 -0
  84. package/assets/ts/modules/table.ts +82 -13
  85. package/dist/components.es.js +827 -757
  86. package/dist/components.umd.js +35 -33
  87. package/package.json +1 -1
@@ -76,7 +76,7 @@ tr td[colspan="100%"]:first-child:last-child span {
76
76
  @container (width >= 60em) {
77
77
  thead {
78
78
 
79
- th {
79
+ th:not(:empty) {
80
80
  white-space: nowrap;
81
81
  min-width: #{$td-mw};
82
82
  }
@@ -136,12 +136,17 @@ table.border-0 {
136
136
  margin-bottom: 0;
137
137
 
138
138
  td:has(input[type="checkbox"]) {
139
- width: rem(30);
140
- min-width: rem(30);
141
- max-width: rem(30);
139
+ width: rem(40);
140
+ min-width: rem(40);
141
+ max-width: rem(40);
142
142
  }
143
143
  }
144
144
 
145
+ @media screen and (prefers-color-scheme: dark) {
146
+
147
+ background: var(--colour-canvas-2);
148
+ }
149
+
145
150
  @media (forced-colors: active) {
146
151
  --wrapper-padding: 0;
147
152
  background: var(--colour-canvas-2);
@@ -170,6 +175,11 @@ table.border-0 {
170
175
  margin-right: -1.5rem;
171
176
  margin-bottom: 0;
172
177
  background: white;
178
+
179
+ @media screen and (prefers-color-scheme: dark) {
180
+
181
+ background: var(--colour-canvas-2);
182
+ }
173
183
  }
174
184
 
175
185
 
@@ -381,7 +391,13 @@ table.border-0 {
381
391
  margin-left: rem(-40);
382
392
  min-height: var(--row-height);
383
393
  text-align: right;
394
+ background: linear-gradient(90deg, transparent 0%, white 1.25rem);
395
+ cursor: default;
396
+
397
+ @media screen and (prefers-color-scheme: dark) {
398
+
384
399
  background: linear-gradient(90deg, transparent 0%, var(--colour-canvas-2) 1.25rem);
400
+ }
385
401
 
386
402
  &:after {
387
403
  bottom: 0;
@@ -622,3 +638,68 @@ table {
622
638
  color: var(--colour-primary);
623
639
  }
624
640
  }
641
+
642
+ // #region Table with actionbar
643
+
644
+ iam-table {
645
+
646
+ td:has([type="checkbox"]){
647
+ position: static!important;
648
+ width: rem(40);
649
+ }
650
+
651
+ input:is([type="radio"],[type="checkbox"]) + label {
652
+ padding-left: 0!important;
653
+ margin: 0!important;
654
+
655
+ &:before,
656
+ &:after {
657
+ top: 0!important;
658
+ }
659
+ }
660
+
661
+ table:has([type="checkbox"]:checked) tr:has([type="checkbox"]){
662
+
663
+ cursor: pointer;
664
+
665
+ &:is(:hover, :focus) {
666
+
667
+ background: var(--hover-background);
668
+ }
669
+
670
+ td {
671
+ background: transparent;
672
+ }
673
+
674
+ [type="checkbox"] {
675
+ width: 100%;
676
+ height: 100%;
677
+ max-height: var(--row-height);
678
+ max-width: 100%;
679
+ cursor: pointer;
680
+ pointer-events: all;
681
+ top: auto;
682
+ margin: 0;
683
+ margin-top: -0.75rem;
684
+ }
685
+
686
+ }
687
+ }
688
+
689
+ @container (width < 23.4375em) {
690
+
691
+ iam-table:has([slot="before"]) {
692
+
693
+ iam-actionbar {
694
+ background-color: #e6eaec;
695
+ }
696
+ .actionbar__sticky + * {
697
+ margin-top: 0!important;
698
+ }
699
+ }
700
+
701
+ .table__wrapper.has-actionbar {
702
+ margin-top: calc(-100vh - -6.75rem)!important;
703
+ }
704
+ }
705
+ // #endregion
@@ -2,5 +2,6 @@
2
2
 
3
3
  @use "_fonts";
4
4
  @use "_corefiles";
5
+ @use '../../assets/sass/components/nav-global.scss';
5
6
  @use "_forms";
6
7
  @use "_print";
@@ -2,4 +2,5 @@
2
2
 
3
3
  // Set mobile only variable so that the media query mixin doesn't print out non mobile rules
4
4
  @use "_func" as *;
5
- @import "_corefiles";
5
+ @import "_corefiles";
6
+ @import '../../assets/sass/components/nav-global.scss';
@@ -39,7 +39,7 @@
39
39
  }
40
40
 
41
41
  // Dark mode; functional colours get updated
42
- @media screen and (prefers-color-scheme: dark) {
42
+ @include dark-mode() {
43
43
  :root {
44
44
 
45
45
  @each $color, $value in $dark-mode-colors {
@@ -49,7 +49,7 @@
49
49
  }
50
50
  }
51
51
 
52
- @media screen and (prefers-color-scheme: light) {
52
+ @include light-mode() {
53
53
 
54
54
  // Reset the colours of lighter backgrounds to make sure they aren't over written by dark mode. Some other tweaks to colours are applied
55
55
  [class*="bg-"]:not(.bg-primary):not(.bg-dark):not(.bg-danger):not(.bg-white):not(.bg-canvas):not(.bg-canvas-2):not(.invert-colours) {
@@ -72,7 +72,7 @@
72
72
  }
73
73
  }
74
74
 
75
- @media screen and (prefers-color-scheme: dark) {
75
+ @include dark-mode() {
76
76
 
77
77
  // Reset the colours of lighter backgrounds to make sure they aren't over written by dark mode. Some other tweaks to colours are applied
78
78
  [class*="bg-"]:not(.bg-canvas):not(.bg-canvas-2) {
@@ -2,6 +2,7 @@
2
2
 
3
3
  @use "_fonts";
4
4
  @use "_corefiles";
5
- @use "_forms";
6
- @use "_components";
7
- @use "_print";
5
+ @import '../../assets/sass/components/nav-global.scss';
6
+ @import "_forms";
7
+ @import "_components";
8
+ @import "_print";
@@ -132,6 +132,43 @@ class iamActionbar extends HTMLElement {
132
132
  });
133
133
  }
134
134
  }
135
+
136
+ // Wtach div for the select inputs
137
+ if(this.hasAttribute('data-select-watch')){
138
+
139
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
140
+ element.setAttribute('data-select-container','true');
141
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
142
+ input.parentElement.setAttribute('slot','checkbox');
143
+ });
144
+ element.addEventListener('change',(event) => {
145
+
146
+ if (event && event.target instanceof HTMLElement && event.target.closest('[type="checkbox"]')){
147
+
148
+ let count = element.querySelectorAll('input[type="checkbox"]').length;
149
+ let countChecked = element.querySelectorAll('input[type="checkbox"]:checked').length;
150
+ that.setAttribute('data-selected', count == countChecked ? "all" : countChecked);
151
+
152
+ let input = event.target.closest('[type="checkbox"]');
153
+
154
+ if(countChecked){
155
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
156
+
157
+ if(input.closest('iam-card'))
158
+ input.closest('iam-card').setAttribute('data-selected','true');
159
+ });
160
+ }
161
+ else {
162
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
163
+
164
+ if(input.closest('iam-card'))
165
+ input.closest('iam-card').removeAttribute('data-selected');
166
+ });
167
+ }
168
+
169
+ };
170
+ });
171
+ }
135
172
  // #endregion
136
173
 
137
174
  // #region switchviews
@@ -385,8 +422,36 @@ class iamActionbar extends HTMLElement {
385
422
 
386
423
  if(selectAll)
387
424
  setSelectAllInput(selectAll, newVal);
388
- const event = new CustomEvent("selected", { detail: { selected: newVal } });
389
- this.dispatchEvent(event);
425
+
426
+ const event = new CustomEvent("selected", { detail: { selected: newVal } });
427
+ this.dispatchEvent(event);
428
+
429
+ if(newVal == "all" && this.hasAttribute('data-select-watch')){
430
+
431
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
432
+
433
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
434
+
435
+ input.checked = true;
436
+
437
+ if(input.closest('iam-card'))
438
+ input.closest('iam-card').setAttribute('data-selected','true');
439
+ });
440
+ }
441
+
442
+ if(newVal == "0" && this.hasAttribute('data-select-watch')){
443
+
444
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
445
+
446
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
447
+
448
+ input.checked = false;
449
+
450
+ if(input.closest('iam-card'))
451
+ input.closest('iam-card').removeAttribute('data-selected','true');
452
+ });
453
+ }
454
+
390
455
  break;
391
456
  }
392
457
  }
@@ -37,6 +37,8 @@ class iamCard extends HTMLElement {
37
37
  ${this.hasAttribute('data-illustration') ? `<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>` : ''}
38
38
  <slot></slot>
39
39
  </div>
40
+
41
+ <slot name="checkbox"></slot>
40
42
  ${this.hasAttribute('data-cta') ? `<div class="card__footer"><span class="link">${this.getAttribute('data-cta')}</span></div>` : ''}
41
43
  </div>
42
44
  `;
@@ -44,7 +46,7 @@ class iamCard extends HTMLElement {
44
46
  }
45
47
 
46
48
  connectedCallback() {
47
-
49
+
48
50
  this.classList.add('loaded');
49
51
 
50
52
  // Mimic clicking the parent node so the focus and target events can be on the card
@@ -64,6 +66,13 @@ class iamCard extends HTMLElement {
64
66
  card.classList.remove('checked');
65
67
  }
66
68
 
69
+ // Click event down
70
+ this.addEventListener('click', (event) => {
71
+
72
+ let clickEvent = new Event('click');
73
+ card.dispatchEvent(clickEvent);
74
+ });
75
+
67
76
  card.addEventListener('click', (event) => {
68
77
 
69
78
  if(parentNode.matches('label[for]')){
@@ -151,7 +160,8 @@ class iamCard extends HTMLElement {
151
160
  attributeChangedCallback(attrName, oldVal, newVal) {
152
161
  switch (attrName) {
153
162
  case "data-total": {
154
- this.shadowRoot.querySelector('.card__total').innerHTML = newVal;
163
+ if(this.shadowRoot.querySelector('.card__total'))
164
+ this.shadowRoot.querySelector('.card__total').innerHTML = newVal;
155
165
  break;
156
166
  }
157
167
  case "class": {
@@ -65,6 +65,10 @@ class iamTable extends HTMLElement {
65
65
  classList = classList.replace('table--loading','');
66
66
  this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;
67
67
 
68
+ // set actionbar class if needed
69
+ if(this.querySelector('.actionbar__sticky'))
70
+ this.shadowRoot.querySelector('.table__wrapper').classList.add('has-actionbar');
71
+
68
72
  this.table = this.querySelector('table');
69
73
  this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);
70
74
  this.pagination = this.shadowRoot.querySelector('.table__pagination');
@@ -96,7 +96,8 @@ function createAppliedFilters(container,filters) {
96
96
  Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).forEach((input, index) => {
97
97
  addFilterButton(filters, input)
98
98
  });
99
-
99
+
100
+
100
101
  container.addEventListener('change', function(event){
101
102
 
102
103
  if (event && event.target instanceof HTMLElement && event.target.closest('input[data-filter-text]')){
@@ -104,9 +105,8 @@ function createAppliedFilters(container,filters) {
104
105
  let input = event.target.closest('input[data-filter-text]');
105
106
 
106
107
  addFilterButton (filters, input);
107
- };
108
-
109
- }, false);
108
+ }
109
+ });
110
110
 
111
111
  filters.addEventListener('click', function(event){
112
112
 
@@ -136,7 +136,8 @@ function createAppliedFilters(container,filters) {
136
136
  input.checked = false;
137
137
 
138
138
  var event = new Event('force');
139
- input.closest('form').dispatchEvent(event);
139
+ if(!container.hasAttribute('data-nosubmit'))
140
+ input.closest('form').dispatchEvent(event);
140
141
  }
141
142
  }
142
143
  }
@@ -36,6 +36,23 @@ const extendDialogs = (body) => {
36
36
  dialog.showModal();
37
37
  dialog.focus();
38
38
 
39
+ let firstWidth = dialog.offsetWidth;
40
+ dialog.setAttribute('style',`max-width: ${firstWidth}px;`);
41
+
42
+ // When the modal is opened we want to make sure any duplicate checkboxes are matching the originals
43
+ Array.from(dialog.querySelectorAll('[data-duplicate]')).forEach((element,index) => {
44
+
45
+ const id = element.getAttribute('data-duplicate');
46
+ const originalInput = document.getElementById(id);
47
+
48
+ if(element.checked != originalInput.checked){
49
+
50
+ element.checked = originalInput.checked;
51
+ let changeEvent = new Event('change');
52
+ element.dispatchEvent(changeEvent);
53
+ }
54
+ });
55
+
39
56
  window.dataLayer = window.dataLayer || [];
40
57
  window.dataLayer.push({
41
58
  "event": "openModal",
@@ -140,7 +140,35 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
140
140
  var timer;
141
141
 
142
142
  // Check what conditions are set on the table to see what the form actions are
143
- let formSubmit = function(paginate = false){
143
+ let formSubmit = function(event, paginate = false){
144
+
145
+ if(form.classList.contains('processing'))
146
+ return false;
147
+
148
+
149
+ // Before submitting check if any duplicate checkboxes within the filters dialog needs to upset the original input
150
+ if(event.type == "submit"){
151
+ form.classList.add('processing');
152
+ Array.from(form.querySelectorAll('[data-duplicate]')).forEach((element,index) => {
153
+
154
+ const id = element.getAttribute('data-duplicate');
155
+ const input = document.getElementById(id);
156
+ const card = document.querySelector(`[for="${id}"] iam-card`);
157
+
158
+
159
+ if(input.checked != element.checked){
160
+
161
+ if(card){
162
+ let clickEvent = new Event('click');
163
+ card.dispatchEvent(clickEvent);
164
+ }
165
+ else {
166
+ input.checked = element.checked;
167
+ }
168
+ }
169
+ });
170
+ form.classList.remove('processing');
171
+ }
144
172
 
145
173
  if(form.hasAttribute('data-ajax')){
146
174
 
@@ -179,7 +207,7 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
179
207
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')){
180
208
 
181
209
  timer = setTimeout(function(){
182
- formSubmit();
210
+ formSubmit(event);
183
211
  }, 500);
184
212
  };
185
213
  });
@@ -193,12 +221,12 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
193
221
  if(!form.hasAttribute('data-submit'))
194
222
  sortTable(table, form, savedTableBody);
195
223
 
196
- formSubmit();
224
+ formSubmit(event);
197
225
  }
198
226
 
199
227
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-search]')){
200
228
 
201
- formSubmit();
229
+ formSubmit(event);
202
230
  }
203
231
 
204
232
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')){ // Allow for input fields to filter the current results without a new ajax call
@@ -209,21 +237,21 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
209
237
  }
210
238
  else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && event.target.closest('form .dialog__wrapper > dialog')){
211
239
 
212
- formSubmit();
240
+ formSubmit(event);
213
241
  }
214
242
  else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')){
215
243
 
216
- formSubmit();
244
+ formSubmit(event);
217
245
  }
218
246
 
219
247
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-show]')){
220
248
 
221
- formSubmit();
249
+ formSubmit(event);
222
250
  }
223
251
 
224
252
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-mimic]')){
225
253
 
226
- formSubmit();
254
+ formSubmit(event);
227
255
  }
228
256
  });
229
257
 
@@ -249,12 +277,53 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
249
277
 
250
278
  if (event && event.target instanceof HTMLElement && event.target.closest('[data-clear]')){
251
279
 
252
- form.reset();
280
+ form.classList.add('processing');
281
+ // Make sure any applied filters have been removed
282
+ Array.from(form.querySelectorAll('.applied-filters')).forEach((filters,index) => {
283
+ filters.innerHTML = "";
284
+ });
285
+
286
+ // Make sure cards are unlicked
287
+ let frm_elements = form.elements;
288
+
289
+ for (let i = 0; i < frm_elements.length; i++)
290
+ {
291
+ let field_type = frm_elements[i].type.toLowerCase() ? frm_elements[i].type.toLowerCase() : "text";
292
+ switch (field_type)
293
+ {
294
+ case "text":
295
+ case "password":
296
+ case "textarea":
297
+ frm_elements[i].value = "";
298
+ break;
299
+ case "radio":
300
+ case "checkbox":
301
+ if (frm_elements[i].checked)
302
+ {
303
+ frm_elements[i].checked = false;
304
+ }
305
+ break;
306
+ case "select-one":
307
+ case "select-multi":
308
+ frm_elements[i].selectedIndex = -1;
309
+ break;
310
+ case "hidden":
311
+ default:
312
+ break;
313
+ }
314
+ }
315
+
316
+ Array.from(form.querySelectorAll('label iam-card')).forEach((card,index) => {
317
+ let clickEvent = new Event('click');
318
+ card.dispatchEvent(clickEvent);
319
+ });
320
+
321
+ form.classList.remove('processing');
253
322
 
254
323
  if(!form.hasAttribute('data-submit'))
255
324
  sortTable(table, form, savedTableBody);
256
325
 
257
- formSubmit();
326
+ formSubmit(event);
258
327
  }
259
328
  });
260
329
 
@@ -265,17 +334,17 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
265
334
  if(!form.hasAttribute('data-submit'))
266
335
  event.preventDefault();
267
336
 
268
- formSubmit();
337
+ formSubmit(event);
269
338
  });
270
339
 
271
340
  form.addEventListener('force', (event) => {
272
341
 
273
- formSubmit();
342
+ formSubmit(event);
274
343
  });
275
344
 
276
345
  form.addEventListener('paginate', (event) => {
277
346
 
278
- formSubmit(true);
347
+ formSubmit(event,true);
279
348
  });
280
349
 
281
350