@zeedhi/teknisa-components-common 1.117.1 → 3.0.1

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 (177) hide show
  1. package/.package.json +43 -0
  2. package/dist/teknisa-components-common.js +3802 -0
  3. package/dist/teknisa-components-common.min.js +3802 -0
  4. package/dist/types/components/index.d.ts +7 -0
  5. package/{types → dist/types}/components/tek-breadcrumb-header/breadcrumb-header.d.ts +12 -12
  6. package/{types → dist/types}/components/tek-breadcrumb-header/interfaces.d.ts +6 -6
  7. package/dist/types/components/tek-datasource/index.d.ts +3 -0
  8. package/{types → dist/types}/components/tek-datasource/interfaces.d.ts +16 -16
  9. package/{types/components/tek-datasource/memory-datasource.d.ts → dist/types/components/tek-datasource/tek-memory-datasource.d.ts} +93 -100
  10. package/{types/components/tek-datasource/rest-datasource.d.ts → dist/types/components/tek-datasource/tek-rest-datasource.d.ts} +95 -103
  11. package/dist/types/components/tek-grid/columns-searcher.d.ts +5 -0
  12. package/dist/types/components/tek-grid/dynamic-filter-datasource-factory.d.ts +6 -0
  13. package/{types → dist/types}/components/tek-grid/filter-helper.d.ts +7 -7
  14. package/{types → dist/types}/components/tek-grid/grid-filter-button.d.ts +29 -31
  15. package/dist/types/components/tek-grid/grouped-data-manager.d.ts +82 -0
  16. package/dist/types/components/tek-grid/grouped-data-selector.d.ts +7 -0
  17. package/dist/types/components/tek-grid/grouped-view-navigator.d.ts +14 -0
  18. package/dist/types/components/tek-grid/index.d.ts +18 -0
  19. package/dist/types/components/tek-grid/interfaces.d.ts +259 -0
  20. package/dist/types/components/tek-grid/keymap-grouped.d.ts +6 -0
  21. package/{types → dist/types}/components/tek-grid/layout-options.d.ts +39 -31
  22. package/{types/components/tek-grid/grid-column.d.ts → dist/types/components/tek-grid/tek-grid-column.d.ts} +42 -45
  23. package/{types/components/tek-grid/grid-columns-button-controller.d.ts → dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.d.ts} +8 -8
  24. package/{types/components/tek-grid/grid-columns-button.d.ts → dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.d.ts} +13 -12
  25. package/dist/types/components/tek-grid/tek-grid-controller.d.ts +31 -0
  26. package/dist/types/components/tek-grid/tek-grid-events.d.ts +31 -0
  27. package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/button-option.d.ts +17 -16
  28. package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/index.d.ts +3 -3
  29. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.d.ts +5 -0
  30. package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/multi-option.d.ts +12 -12
  31. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/index.d.ts +2 -0
  32. package/dist/types/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.d.ts +22 -0
  33. package/dist/types/components/tek-grid/tek-grid.d.ts +216 -0
  34. package/{types → dist/types}/components/tek-user-info/TekUserInfoController.d.ts +22 -21
  35. package/{types → dist/types}/components/tek-user-info/interfaces.d.ts +27 -28
  36. package/{types → dist/types}/components/tek-user-info/tek-user-info-list.d.ts +32 -31
  37. package/{types → dist/types}/components/tek-user-info/tek-user-info.d.ts +37 -38
  38. package/{types → dist/types}/error/delete-rows-error.d.ts +6 -6
  39. package/dist/types/error/tek-grid-delete-rows-error.d.ts +7 -0
  40. package/dist/types/error/teknisa-common-error.d.ts +6 -0
  41. package/dist/types/index.d.ts +2 -0
  42. package/{types → dist/types}/utils/config/config.d.ts +7 -7
  43. package/dist/types/utils/index.d.ts +3 -0
  44. package/dist/types/utils/is-filled-object/is-filled-object.d.ts +2 -0
  45. package/dist/types/utils/is-nil.d.ts +1 -0
  46. package/environments.json +14 -0
  47. package/package.json +26 -18
  48. package/src/components/index.ts +101 -0
  49. package/src/components/tek-breadcrumb-header/breadcrumb-header.ts +29 -0
  50. package/src/components/tek-breadcrumb-header/interfaces.ts +7 -0
  51. package/src/components/tek-datasource/index.ts +3 -0
  52. package/src/components/tek-datasource/interfaces.ts +36 -0
  53. package/src/components/tek-datasource/tek-memory-datasource.ts +314 -0
  54. package/src/components/tek-datasource/tek-rest-datasource.ts +224 -0
  55. package/src/components/tek-grid/columns-searcher.ts +22 -0
  56. package/src/components/tek-grid/dynamic-filter-datasource-factory.ts +20 -0
  57. package/src/components/tek-grid/filter-helper.ts +20 -0
  58. package/src/components/tek-grid/grid-filter-button.ts +419 -0
  59. package/src/components/tek-grid/grouped-data-manager.ts +448 -0
  60. package/src/components/tek-grid/grouped-data-selector.ts +40 -0
  61. package/src/components/tek-grid/grouped-view-navigator.ts +84 -0
  62. package/src/components/tek-grid/index.ts +18 -0
  63. package/src/components/tek-grid/interfaces.ts +329 -0
  64. package/src/components/tek-grid/keymap-grouped.ts +20 -0
  65. package/src/components/tek-grid/layout-options.ts +248 -0
  66. package/src/components/tek-grid/tek-grid-column.ts +193 -0
  67. package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts +28 -0
  68. package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts +38 -0
  69. package/src/components/tek-grid/tek-grid-controller.ts +140 -0
  70. package/src/components/tek-grid/tek-grid-events.ts +105 -0
  71. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts +26 -0
  72. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts +3 -0
  73. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.ts +6 -0
  74. package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts +85 -0
  75. package/src/components/tek-grid/tek-grid-toolbar-provider/index.ts +2 -0
  76. package/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts +365 -0
  77. package/src/components/tek-grid/tek-grid.ts +1118 -0
  78. package/src/components/tek-user-info/TekUserInfoController.ts +87 -0
  79. package/src/components/tek-user-info/interfaces.ts +21 -0
  80. package/src/components/tek-user-info/tek-user-info-list.ts +64 -0
  81. package/src/components/tek-user-info/tek-user-info.ts +337 -0
  82. package/src/error/tek-grid-delete-rows-error.ts +15 -0
  83. package/src/error/teknisa-common-error.ts +8 -0
  84. package/src/index.ts +2 -0
  85. package/src/utils/config/config.ts +8 -0
  86. package/src/utils/index.ts +3 -0
  87. package/src/utils/is-filled-object/is-filled-object.ts +5 -0
  88. package/src/utils/is-nil.ts +3 -0
  89. package/tests/__helpers__/component-event-helper.ts +1 -1
  90. package/tests/__helpers__/get-child-helper.ts +1 -1
  91. package/tests/__helpers__/mock-created-helper.ts +1 -1
  92. package/tests/unit/components/crud/crud-button.spec.ts +1 -1
  93. package/tests/unit/components/tek-datasource/memory-datasource.spec.ts +1 -11
  94. package/tests/unit/components/tek-datasource/rest-datasource.spec.ts +5 -7
  95. package/tests/unit/components/tek-drag-grid/tek-drag-grid.spec.ts +1 -1
  96. package/tests/unit/components/tek-grid/button-option.spec.ts +49 -0
  97. package/tests/unit/components/tek-grid/columns-searcher.spec.ts +112 -0
  98. package/tests/unit/components/tek-grid/dynamic-filter-datasource-factory.spec.ts +90 -0
  99. package/tests/unit/components/tek-grid/filter-helper.spec.ts +34 -130
  100. package/tests/unit/components/tek-grid/grid-filter-button.spec.ts +114 -239
  101. package/tests/unit/components/tek-grid/grouped-data-manager.spec.ts +593 -0
  102. package/tests/unit/components/tek-grid/grouped-data-selector.spec.ts +136 -0
  103. package/tests/unit/components/tek-grid/grouped-view-navigator.spec.ts +244 -0
  104. package/tests/unit/components/tek-grid/keymap-grouped.spec.ts +20 -0
  105. package/tests/unit/components/tek-grid/{layout_options.spec.ts → layout-options.spec.ts} +70 -30
  106. package/tests/unit/components/tek-grid/multi-option.spec.ts +139 -0
  107. package/tests/unit/components/tek-grid/{grid-column.spec.ts → tek-grid-column.spec.ts} +44 -2
  108. package/tests/unit/components/tek-grid/{grid-columns-button.spec.ts → tek-grid-columns-button.spec.ts} +42 -9
  109. package/tests/unit/components/tek-grid/tek-grid-controller.spec.ts +253 -0
  110. package/tests/unit/components/tek-grid/tek-grid-events.spec.ts +186 -0
  111. package/tests/unit/components/tek-grid/tek-grid-toolbar-provider.spec.ts +34 -0
  112. package/tests/unit/components/tek-grid/tek-grid.spec.ts +895 -0
  113. package/tests/unit/components/tek-grid/tek-memory-datasource.spec.ts +482 -0
  114. package/tests/unit/components/tek-grid/tek-rest-datasource.spec.ts +422 -0
  115. package/tests/unit/components/tek-user-info/tek-user-info-list.spec.ts +1 -1
  116. package/tests/unit/components/tek-user-info/tek-user-info.spec.ts +10 -14
  117. package/tests/unit/components/tree-grid/tree-grid.spec.ts +4 -28
  118. package/tests/unit/utils/grid-base/export-options/multi-option.spec.ts +2 -2
  119. package/tests/unit/utils/grid-base/grid-controller.spec.ts +17 -152
  120. package/tsconfig.build.json +7 -0
  121. package/coverage/clover.xml +0 -2007
  122. package/coverage/coverage-final.json +0 -48
  123. package/coverage/lcov-report/base.css +0 -224
  124. package/coverage/lcov-report/block-navigation.js +0 -87
  125. package/coverage/lcov-report/favicon.png +0 -0
  126. package/coverage/lcov-report/index.html +0 -431
  127. package/coverage/lcov-report/prettify.css +0 -1
  128. package/coverage/lcov-report/prettify.js +0 -2
  129. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  130. package/coverage/lcov-report/sorter.js +0 -210
  131. package/coverage/lcov-report/tests/__helpers__/component-event-helper.ts.html +0 -100
  132. package/coverage/lcov-report/tests/__helpers__/flush-promises-helper.ts.html +0 -94
  133. package/coverage/lcov-report/tests/__helpers__/get-child-helper.ts.html +0 -166
  134. package/coverage/lcov-report/tests/__helpers__/index.html +0 -176
  135. package/coverage/lcov-report/tests/__helpers__/index.ts.html +0 -94
  136. package/coverage/lcov-report/tests/__helpers__/mock-created-helper.ts.html +0 -121
  137. package/coverage/lcov.info +0 -3885
  138. package/dist/tek-components-common.esm.js +0 -4833
  139. package/dist/tek-components-common.umd.js +0 -4870
  140. package/tests/unit/components/tek-grid/grid.spec.ts +0 -3377
  141. package/tests/unit/utils/grid-base/delete-rows-error.spec.ts +0 -24
  142. package/types/components/crud/crud-add-button.d.ts +0 -38
  143. package/types/components/crud/crud-button.d.ts +0 -27
  144. package/types/components/crud/crud-cancel-button.d.ts +0 -28
  145. package/types/components/crud/crud-delete-button.d.ts +0 -42
  146. package/types/components/crud/crud-form.d.ts +0 -46
  147. package/types/components/crud/crud-save-button.d.ts +0 -24
  148. package/types/components/crud/interfaces.d.ts +0 -15
  149. package/types/components/index.d.ts +0 -41
  150. package/types/components/tek-card-title/card-title.d.ts +0 -14
  151. package/types/components/tek-card-title/interfaces.d.ts +0 -9
  152. package/types/components/tek-drag-grid/interfaces.d.ts +0 -7
  153. package/types/components/tek-drag-grid/tek-drag-grid.d.ts +0 -36
  154. package/types/components/tek-grid/grid.d.ts +0 -267
  155. package/types/components/tek-grid/interfaces.d.ts +0 -203
  156. package/types/components/tek-image/image.d.ts +0 -55
  157. package/types/components/tek-image/interfaces.d.ts +0 -12
  158. package/types/components/tek-iterable-carousel/interfaces.d.ts +0 -5
  159. package/types/components/tek-iterable-carousel/iterable-carousel.d.ts +0 -13
  160. package/types/components/tek-iterable-component-render/interfaces.d.ts +0 -3
  161. package/types/components/tek-iterable-component-render/iterable-component-render.d.ts +0 -10
  162. package/types/components/tek-loading/interfaces.d.ts +0 -6
  163. package/types/components/tek-loading/loading.d.ts +0 -24
  164. package/types/components/tek-notifications/interfaces.d.ts +0 -22
  165. package/types/components/tek-notifications/notifications.d.ts +0 -35
  166. package/types/components/tek-product-card/interfaces.d.ts +0 -19
  167. package/types/components/tek-product-card/product-card.d.ts +0 -66
  168. package/types/components/tek-tree-grid/interfaces.d.ts +0 -30
  169. package/types/components/tek-tree-grid/tree-grid.d.ts +0 -102
  170. package/types/error/incomplete-groups-error.d.ts +0 -8
  171. package/types/index.d.ts +0 -2
  172. package/types/utils/extract-properties.d.ts +0 -7
  173. package/types/utils/grid-base/export-options/interfaces.d.ts +0 -5
  174. package/types/utils/grid-base/grid-base.d.ts +0 -59
  175. package/types/utils/grid-base/grid-controller.d.ts +0 -27
  176. package/types/utils/index.d.ts +0 -6
  177. package/types/utils/report-filter/report-filter.d.ts +0 -12
@@ -1,21 +1,22 @@
1
1
  /* eslint-disable no-underscore-dangle */
2
2
 
3
3
  import {
4
- Button, Date, Form, IButton, IForm, IModal, ISelectMultiple, Modal, ModalService, SelectMultiple,
4
+ Button, Form, IButton, IForm, IModal, Modal, ModalService,
5
5
  } from '@zeedhi/common';
6
6
  import {
7
- Http, Metadata, DateHelper, Config,
7
+ Http, Metadata, DateHelper,
8
+ Loader,
9
+ SimpleControllerBuilder,
8
10
  } from '@zeedhi/core';
9
11
  import {
10
- IFilterPropsComponent,
11
12
  ITekGridFilterButton,
12
- TekGrid, TekGridColumn, TekGridFilterButton, TekRestDatasource,
13
+ TekGrid, TekGridFilterButton, TekRestDatasource,
13
14
  } from '../../../../src';
14
- import { setClick, getChild } from '../../../__helpers__';
15
+ import { flushPromises, getChild, setClick } from '../../__helpers__';
15
16
 
16
17
  jest.mock('lodash.debounce', () => jest.fn((fn) => fn));
17
18
 
18
- jest.useFakeTimers();
19
+ // jest.useFakeTimers();
19
20
 
20
21
  const clickOnFilterButton = (grid: TekGrid, event?: any) => {
21
22
  const buttonProps = getChild<ITekGridFilterButton>(grid.toolbarSlot, `${grid.name}_filterButton`);
@@ -26,6 +27,10 @@ const clickOnFilterButton = (grid: TekGrid, event?: any) => {
26
27
  };
27
28
 
28
29
  describe('TekGridFilterButton', () => {
30
+ beforeAll(() => {
31
+ Loader.setBuilder(new SimpleControllerBuilder());
32
+ });
33
+
29
34
  beforeEach(() => {
30
35
  // clear all metadata instances before testing
31
36
  const { instances } = Metadata as any;
@@ -33,7 +38,7 @@ describe('TekGridFilterButton', () => {
33
38
  Metadata.clearInstance(key, instances[key].componentId);
34
39
  });
35
40
 
36
- jest.clearAllTimers();
41
+ // jest.clearAllTimers();
37
42
  });
38
43
 
39
44
  describe('loadGrid()', () => {
@@ -92,6 +97,7 @@ describe('TekGridFilterButton', () => {
92
97
  name: 'grid_filterClick1',
93
98
  component: 'TekGrid',
94
99
  });
100
+ instance.onCreated();
95
101
 
96
102
  const formInstance = new Form({
97
103
  name: 'form',
@@ -105,11 +111,10 @@ describe('TekGridFilterButton', () => {
105
111
  const button = clickOnFilterButton(instance);
106
112
  button.onCreated();
107
113
 
108
- expect(spy).toBeCalledTimes(1);
114
+ expect(spy).toHaveBeenCalledTimes(1);
109
115
  button.click();
110
- expect(spy).toBeCalledTimes(1);
116
+ expect(spy).toHaveBeenCalledTimes(1);
111
117
  expect(button.isVisible).toBeFalsy();
112
- (instance as any).gridBase.hideFilterModal();
113
118
 
114
119
  button.onBeforeDestroy();
115
120
 
@@ -153,7 +158,7 @@ describe('TekGridFilterButton', () => {
153
158
  clickOnFilterButton(instance, { defaultPrevented: true });
154
159
 
155
160
  expect(filterClickCalled).toBeTruthy();
156
- expect(spy).not.toBeCalled();
161
+ expect(spy).not.toHaveBeenCalled();
157
162
 
158
163
  spy.mockReset();
159
164
  });
@@ -280,58 +285,6 @@ describe('TekGridFilterButton', () => {
280
285
  spy.mockReset();
281
286
  });
282
287
 
283
- it('when creating a SelectMultiple filter, should change the filter value depending on checkboxAll', () => {
284
- const instance = new TekGrid({
285
- name: 'grid_filterClick5',
286
- component: 'TekGrid',
287
- columns: [
288
- {
289
- name: 'id',
290
- filterable: true,
291
- filterProps: [{
292
- name: 'id_edit', label: 'id', component: 'ZdSelectMultiple', showCheckboxAll: false,
293
- }],
294
- },
295
- ],
296
- });
297
-
298
- let form: IForm = { name: 'form', component: 'ZdForm' };
299
- let select: ISelectMultiple = { name: 'select', component: 'ZdSelectMultiple' };
300
- let applyButton: IButton = { name: 'apply', component: 'ZdButton' };
301
- const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
302
- const modalFooter = getChild(modal.children || [], `${instance.name}-filter-footer`);
303
- form = getChild(modal.children || [], `${instance.name}-filter-form`);
304
- select = getChild(form.children || [], `${instance.name}-filter-AND-CONTAINS-id-0`);
305
- applyButton = getChild(modalFooter.rightSlot, `${instance.name}-filter-okButton`);
306
-
307
- return new Modal(modal);
308
- });
309
- instance.onCreated();
310
- clickOnFilterButton(instance);
311
- const applyButtonObject = new Button(applyButton);
312
-
313
- const formObject = new Form(form);
314
- const selectObject = new SelectMultiple(select);
315
- jest.spyOn(Metadata, 'getInstance').mockReturnValue(formObject);
316
- jest.spyOn(formObject, 'getChildInstance').mockReturnValue(selectObject);
317
-
318
- formObject.value['grid_filterClick5-filter-AND-CONTAINS-id-0'] = ['example'];
319
- setClick(applyButtonObject);
320
-
321
- expect(instance.datasource.filter).toEqual({});
322
-
323
- selectObject.checkboxAll = true;
324
- setClick(applyButtonObject);
325
-
326
- expect(instance.datasource.filter).toEqual({});
327
-
328
- (Config as any).set({ selectAllCompatibilityMode: true });
329
- setClick(applyButtonObject);
330
- expect(instance.datasource.filter).toEqual({});
331
-
332
- spy.mockReset();
333
- });
334
-
335
288
  it('should create modal with filterable and ordered form elements', () => {
336
289
  const instance = new TekGrid({
337
290
  name: 'grid-filter-order',
@@ -482,171 +435,6 @@ describe('TekGridFilterButton', () => {
482
435
  dateHelperSpy.mockReset();
483
436
  });
484
437
 
485
- it('should apply helper value', () => {
486
- const instance = new TekGrid({
487
- name: 'grid_filterClick8',
488
- component: 'TekGrid',
489
- datasource: {
490
- type: 'tek-rest',
491
- lazyLoad: true,
492
- },
493
- columns: [
494
- {
495
- name: 'date1',
496
- componentProps: { name: 'date_edit1', component: 'ZdDate' },
497
- filterProps: {
498
- name: 'date_edit1',
499
- label: 'date1',
500
- operation: 'NOT_EQUALS',
501
- relation: 'OR',
502
- helperOptions: [
503
- 'TODAY',
504
- 'TOMORROW',
505
- ],
506
- },
507
- },
508
- {
509
- name: 'date2',
510
- componentProps: { name: 'date_edit2', component: 'ZdDate' },
511
- filterProps: [
512
- {
513
- name: 'date_edit21',
514
- label: 'date21',
515
- operation: 'NOT_EQUALS',
516
- relation: 'OR',
517
- helperOptions: [
518
- 'TODAY',
519
- 'TOMORROW',
520
- ],
521
- },
522
- {
523
- name: 'date_edit22',
524
- label: 'date22',
525
- helperOptions: [
526
- 'TODAY',
527
- 'TOMORROW',
528
- ],
529
- },
530
- ],
531
- },
532
- ],
533
- });
534
-
535
- let formElements: any = [];
536
- let form: IForm;
537
- const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
538
- form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
539
- formElements = form.children;
540
-
541
- return new Modal(modal);
542
- });
543
- instance.onCreated();
544
- clickOnFilterButton(instance);
545
-
546
- const dateComp = new Date(formElements[0]);
547
- dateComp.helperValue = 'TODAY';
548
- dateComp.changeEvent({} as Event, {} as HTMLElement);
549
- expect((instance.columns[0].filterProps as IFilterPropsComponent).helperValue).toBe('TODAY');
550
-
551
- const dateComp21 = new Date(formElements[1]);
552
- dateComp21.helperValue = 'TODAY';
553
- dateComp21.changeEvent({} as Event, {} as HTMLElement);
554
- expect((instance.columns[1].filterProps as IFilterPropsComponent[])[0].helperValue).toBe('TODAY');
555
-
556
- const dateComp22 = new Date(formElements[2]);
557
- dateComp22.helperValue = 'TODAY';
558
- dateComp22.changeEvent({} as Event, {} as HTMLElement);
559
- expect((instance.columns[1].filterProps as IFilterPropsComponent[])[1].helperValue).toBe('TODAY');
560
-
561
- spy.mockReset();
562
- });
563
-
564
- it('should load form values from tekdatasource', () => {
565
- const instance = new TekGrid({
566
- name: 'grid_filterClick9',
567
- component: 'TekGrid',
568
- datasource: {
569
- type: 'tek-rest',
570
- lazyLoad: true,
571
- dynamicFilter: {
572
- name: [
573
- {
574
- operation: 'NOT_EQUALS',
575
- relation: 'OR',
576
- value: 'teste',
577
- },
578
- ],
579
- phone: [
580
- {
581
- value: '9',
582
- },
583
- ],
584
- date: [
585
- {
586
- operation: 'IN',
587
- relation: 'OR',
588
- value: ['2021-11-12', '2021-12-12'],
589
- },
590
- ],
591
- },
592
- },
593
- columns: [
594
- {
595
- name: 'id',
596
- filterProps: [{ name: 'id_edit' }],
597
- },
598
- {
599
- name: 'name',
600
- componentProps: { name: 'name_edit', component: 'ZdSelect' },
601
- filterProps: {
602
- name: 'name_edit', label: 'name', operation: 'NOT_EQUALS', relation: 'OR',
603
- },
604
- },
605
- {
606
- name: 'phone',
607
- filterProps: [{ name: 'phone_edit' }],
608
- },
609
- {
610
- name: 'date',
611
- filterProps: { name: 'date_edit', helperValue: 'TODAY' },
612
- },
613
- ],
614
- });
615
-
616
- let form: IForm = { name: 'form', component: 'ZdForm' };
617
- const dateHelperSpy = jest.spyOn(DateHelper, 'getLabel').mockImplementation((name: string) => name);
618
- const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
619
- form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
620
-
621
- return new Modal(modal);
622
- });
623
- instance.onCreated();
624
-
625
- clickOnFilterButton(instance);
626
-
627
- expect(form.name).toBe('grid_filterClick9-filter-form');
628
- const formObject = new Form(form);
629
- formObject.value = {
630
- 'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
631
- 'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': null,
632
- 'grid_filterClick9-filter-AND-CONTAINS-phone-0': null,
633
- 'grid_filterClick9-filter-OR-IN-date-0': null,
634
- };
635
- const dateObject = new Date({ name: 'date', component: 'ZdDate' });
636
- const spyMetadata = jest.spyOn(Metadata, 'getInstances').mockImplementation(() => [dateObject]);
637
- formObject.onMounted({} as HTMLElement);
638
- expect(formObject.value).toEqual({
639
- 'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
640
- 'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': 'teste',
641
- 'grid_filterClick9-filter-AND-CONTAINS-phone-0': '9',
642
- 'grid_filterClick9-filter-OR-IN-date-0': ['2021-11-12', '2021-12-12'],
643
- });
644
- expect(dateObject.hint).toBe('TODAY');
645
- spyMetadata.mockReset();
646
- dateHelperSpy.mockReset();
647
- spy.mockReset();
648
- });
649
-
650
438
  it('should load form values from datasource', () => {
651
439
  const instance = new TekGrid({
652
440
  name: 'grid_filterClick10',
@@ -690,7 +478,7 @@ describe('TekGridFilterButton', () => {
690
478
  spy.mockReset();
691
479
  });
692
480
 
693
- it('should apply filter from form to tekdatasource', () => {
481
+ it('should apply filter from form to tekdatasource', async () => {
694
482
  const httpSpy = jest.spyOn(Http, 'get').mockImplementation(() => Promise.resolve({
695
483
  data: {
696
484
  data: [
@@ -756,6 +544,8 @@ describe('TekGridFilterButton', () => {
756
544
  const button = new TekGridFilterButton(buttonProps);
757
545
  setClick(button);
758
546
 
547
+ await flushPromises();
548
+
759
549
  const formObject = new Form(form);
760
550
  const spyMetadata = jest.spyOn(Metadata, 'getInstance').mockImplementation(() => formObject);
761
551
  const spyDatasourceGet = jest.spyOn(instance.datasource, 'get');
@@ -767,12 +557,23 @@ describe('TekGridFilterButton', () => {
767
557
  'grid_filterClick11-filter-AND-LESS_THAN_EQUALS-salary-0': '2000',
768
558
  };
769
559
  const applyButtonObject = new Button(applyButton);
770
- formObject.validate = () => false;
560
+ formObject.validate = () => {
561
+ return new Promise((resolve) => {
562
+ resolve({ valid: false });
563
+ });
564
+ };
771
565
  setClick(applyButtonObject);
772
566
  expect((instance.datasource as TekRestDatasource).dynamicFilter).toEqual({});
773
567
 
774
- formObject.validate = () => true;
568
+ formObject.validate = () => {
569
+ return new Promise((resolve) => {
570
+ resolve({ valid: true });
571
+ });
572
+ };
775
573
  setClick(applyButtonObject);
574
+
575
+ await flushPromises();
576
+
776
577
  expect((instance.datasource as TekRestDatasource).dynamicFilter).toEqual({
777
578
  id: [
778
579
  {
@@ -801,8 +602,8 @@ describe('TekGridFilterButton', () => {
801
602
  },
802
603
  ],
803
604
  });
804
- expect(instance.columnHasFilterData({ name: 'name' } as TekGridColumn)).toBeTruthy();
805
- expect(spyDatasourceGet).toBeCalled();
605
+ expect(instance.columnHasFilter('name')).toBeTruthy();
606
+ expect(spyDatasourceGet).toHaveBeenCalled();
806
607
  spyMetadata.mockReset();
807
608
  spyDatasourceGet.mockReset();
808
609
  spyModalService.mockReset();
@@ -900,7 +701,7 @@ describe('TekGridFilterButton', () => {
900
701
  httpSpy.mockReset();
901
702
  });
902
703
 
903
- it('should apply filter from form to datasource', () => {
704
+ it('should apply filter from form to datasource', async () => {
904
705
  let beforeApplyFilterCalled = false;
905
706
  let changeLayoutCalled = false;
906
707
  const instance = new TekGrid({
@@ -926,6 +727,8 @@ describe('TekGridFilterButton', () => {
926
727
  },
927
728
  });
928
729
 
730
+ instance.onCreated();
731
+
929
732
  let form: IForm = { name: 'form', component: 'ZdForm' };
930
733
  let applyButton: IButton = { name: 'apply', component: 'ZdButton' };
931
734
  const spyModalService = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
@@ -937,8 +740,6 @@ describe('TekGridFilterButton', () => {
937
740
  return new Modal(modal);
938
741
  });
939
742
 
940
- instance.onCreated();
941
-
942
743
  clickOnFilterButton(instance);
943
744
 
944
745
  const formObject = new Form(form);
@@ -952,16 +753,90 @@ describe('TekGridFilterButton', () => {
952
753
  };
953
754
  const applyButtonObject = new Button(applyButton);
954
755
  setClick(applyButtonObject);
955
- expect(instance.datasource.filter).toEqual({});
756
+
757
+ await flushPromises();
758
+
759
+ expect(instance.datasource.filter).toEqual({
760
+ id: '1;2;3',
761
+ name: 'teste',
762
+ salary: '1000',
763
+ });
956
764
  expect(beforeApplyFilterCalled).toBeTruthy();
957
765
  expect(changeLayoutCalled).toBeTruthy();
958
- expect(instance.columnHasFilterData({ name: 'name' } as TekGridColumn)).toBe(undefined);
766
+ expect(instance.columnHasFilter('name')).toBeTruthy();
959
767
 
960
768
  setClick(applyButtonObject, { defaultPrevented: true });
961
- expect(spyDatasourceGet).toBeCalledTimes(1);
769
+ expect(spyDatasourceGet).toHaveBeenCalledTimes(1);
962
770
  spyMetadata.mockReset();
963
771
  spyDatasourceGet.mockReset();
964
772
  spyModalService.mockReset();
965
773
  });
774
+
775
+ it('should load form values from tekdatasource', () => {
776
+ const instance = new TekGrid({
777
+ name: 'grid_filterClick9',
778
+ component: 'TekGrid',
779
+ datasource: {
780
+ type: 'tek-rest',
781
+ lazyLoad: true,
782
+ dynamicFilter: {
783
+ name: [
784
+ {
785
+ operation: 'NOT_EQUALS',
786
+ relation: 'OR',
787
+ value: 'teste',
788
+ },
789
+ ],
790
+ phone: [
791
+ {
792
+ value: '9',
793
+ },
794
+ ],
795
+ },
796
+ },
797
+ columns: [
798
+ {
799
+ name: 'id',
800
+ filterProps: [{ name: 'id_edit' }],
801
+ },
802
+ {
803
+ name: 'name',
804
+ componentProps: { name: 'name_edit', component: 'ZdSelect' },
805
+ filterProps: {
806
+ name: 'name_edit', label: 'name', operation: 'NOT_EQUALS', relation: 'OR',
807
+ },
808
+ },
809
+ {
810
+ name: 'phone',
811
+ filterProps: [{ name: 'phone_edit' }],
812
+ },
813
+ ],
814
+ });
815
+
816
+ let form: IForm = { name: 'form', component: 'ZdForm' };
817
+ const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
818
+ form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
819
+
820
+ return new Modal(modal);
821
+ });
822
+ instance.onCreated();
823
+
824
+ clickOnFilterButton(instance);
825
+
826
+ expect(form.name).toBe('grid_filterClick9-filter-form');
827
+ const formObject = new Form(form);
828
+ formObject.value = {
829
+ 'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
830
+ 'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': null,
831
+ 'grid_filterClick9-filter-AND-CONTAINS-phone-0': null,
832
+ };
833
+ formObject.onMounted({} as HTMLElement);
834
+ expect(formObject.value).toEqual({
835
+ 'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
836
+ 'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': 'teste',
837
+ 'grid_filterClick9-filter-AND-CONTAINS-phone-0': '9',
838
+ });
839
+ spy.mockReset();
840
+ });
966
841
  });
967
842
  });