@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,11 +1,13 @@
1
1
  import { Grid, Tag } from '@zeedhi/common';
2
- import { Config, Http } from '@zeedhi/core';
2
+ import { Config, Http, Loader, SimpleControllerBuilder } from '@zeedhi/core';
3
3
  import {
4
4
  ITekConfig,
5
5
  ITekGridLayoutInfo,
6
6
  TekGrid,
7
7
  TekGridLayoutOptions,
8
+ ITekGridProps,
8
9
  } from '../../../../src';
10
+ import { flushPromises } from '../../__helpers__';
9
11
 
10
12
  let savedLayouts: string = '';
11
13
  const testLayouts: ITekGridLayoutInfo = {
@@ -37,7 +39,42 @@ const testLayouts: ITekGridLayoutInfo = {
37
39
  },
38
40
  };
39
41
 
42
+ const setupInstance = (props: Partial<ITekGridProps> = {}) => {
43
+ const instance = new TekGrid({
44
+ name: 'Grid',
45
+ component: 'TekGrid',
46
+ columns: [
47
+ { name: 'first' },
48
+ { name: 'second' },
49
+ { name: 'third' },
50
+ ],
51
+ datasource: {
52
+ limit: 2,
53
+ page: 1,
54
+ data: [
55
+ { id: 1 },
56
+ { id: 2 },
57
+ { id: 3 },
58
+ { id: 4 },
59
+ { id: 5 },
60
+ { id: 6 },
61
+ { id: 7 },
62
+ ],
63
+ },
64
+ ...props,
65
+ });
66
+ const elem = document.createElement('DIV');
67
+ instance.onCreated();
68
+ instance.onMounted(elem);
69
+
70
+ return instance;
71
+ };
72
+
40
73
  describe('LayoutOptions', () => {
74
+ beforeAll(() => {
75
+ Loader.setBuilder(new SimpleControllerBuilder());
76
+ });
77
+
41
78
  describe('constructor()', () => {
42
79
  it('should create layout options object', () => {
43
80
  const instance = new TekGridLayoutOptions({ name: 'layout', component: 'TekGridLayoutOptions' });
@@ -56,7 +93,7 @@ describe('LayoutOptions', () => {
56
93
  component: 'ZdTag',
57
94
  tag: 'span',
58
95
  });
59
- const grid = new TekGrid({
96
+ const grid = setupInstance({
60
97
  name: 'grid',
61
98
  component: 'TekGrid',
62
99
  columns: [
@@ -103,9 +140,10 @@ describe('LayoutOptions', () => {
103
140
  maxWidth: undefined,
104
141
  aggregation: undefined,
105
142
  align: 'left',
106
- groupOpened: undefined,
143
+ groupOpened: false,
107
144
  label: '',
108
145
  filterHelperValue: [],
146
+ width: undefined,
109
147
  },
110
148
  {
111
149
  name: 'name',
@@ -116,9 +154,10 @@ describe('LayoutOptions', () => {
116
154
  maxWidth: undefined,
117
155
  aggregation: undefined,
118
156
  align: 'left',
119
- groupOpened: undefined,
157
+ groupOpened: false,
120
158
  label: '',
121
159
  filterHelperValue: [],
160
+ width: undefined,
122
161
  },
123
162
  {
124
163
  name: 'salary',
@@ -129,9 +168,10 @@ describe('LayoutOptions', () => {
129
168
  maxWidth: undefined,
130
169
  aggregation: undefined,
131
170
  align: 'left',
132
- groupOpened: undefined,
171
+ groupOpened: false,
133
172
  label: '',
134
173
  filterHelperValue: [],
174
+ width: undefined,
135
175
  },
136
176
  {
137
177
  name: 'date1',
@@ -142,9 +182,10 @@ describe('LayoutOptions', () => {
142
182
  maxWidth: undefined,
143
183
  aggregation: undefined,
144
184
  align: 'left',
145
- groupOpened: undefined,
185
+ groupOpened: false,
146
186
  label: '',
147
187
  filterHelperValue: 'TODAY',
188
+ width: undefined
148
189
  },
149
190
  {
150
191
  name: 'date2',
@@ -155,9 +196,10 @@ describe('LayoutOptions', () => {
155
196
  maxWidth: undefined,
156
197
  aggregation: undefined,
157
198
  align: 'left',
158
- groupOpened: undefined,
199
+ groupOpened: false,
159
200
  label: '',
160
201
  filterHelperValue: ['TODAY', 'TOMORROW'],
202
+ width: undefined,
161
203
  },
162
204
  ]);
163
205
  });
@@ -172,6 +214,7 @@ describe('LayoutOptions', () => {
172
214
  { name: 'salary' },
173
215
  ],
174
216
  });
217
+ grid.onCreated();
175
218
  const instance = new TekGridLayoutOptions({ name: 'layout', component: 'TekGridLayoutOptions' });
176
219
  instance.parent = grid;
177
220
 
@@ -258,7 +301,7 @@ describe('LayoutOptions', () => {
258
301
  component: 'ZdTag',
259
302
  tag: 'span',
260
303
  });
261
- const grid = new TekGrid({
304
+ const grid = setupInstance({
262
305
  name: 'grid',
263
306
  component: 'TekGrid',
264
307
  columns: [
@@ -287,7 +330,7 @@ describe('LayoutOptions', () => {
287
330
  component: 'ZdTag',
288
331
  tag: 'span',
289
332
  });
290
- const grid = new TekGrid({
333
+ const grid = setupInstance({
291
334
  name: 'grid',
292
335
  component: 'TekGrid',
293
336
  columns: [
@@ -354,7 +397,7 @@ describe('LayoutOptions', () => {
354
397
  component: 'ZdTag',
355
398
  tag: 'span',
356
399
  });
357
- const grid = new TekGrid({
400
+ const grid = setupInstance({
358
401
  name: 'grid',
359
402
  component: 'TekGrid',
360
403
  columns: [
@@ -412,7 +455,7 @@ describe('LayoutOptions', () => {
412
455
  component: 'ZdTag',
413
456
  tag: 'span',
414
457
  });
415
- const grid = new TekGrid({
458
+ const grid = setupInstance({
416
459
  name: 'grid',
417
460
  component: 'TekGrid',
418
461
  columns: [
@@ -447,7 +490,7 @@ describe('LayoutOptions', () => {
447
490
  component: 'ZdTag',
448
491
  tag: 'span',
449
492
  });
450
- const grid = new TekGrid({
493
+ const grid = setupInstance({
451
494
  name: 'grid',
452
495
  component: 'TekGrid',
453
496
  columns: [
@@ -476,7 +519,7 @@ describe('LayoutOptions', () => {
476
519
  component: 'ZdTag',
477
520
  tag: 'span',
478
521
  });
479
- const grid = new TekGrid({
522
+ const grid = setupInstance({
480
523
  name: 'grid',
481
524
  component: 'TekGrid',
482
525
  columns: [
@@ -508,7 +551,7 @@ describe('LayoutOptions', () => {
508
551
  component: 'ZdTag',
509
552
  tag: 'span',
510
553
  });
511
- const grid = new TekGrid({
554
+ const grid = setupInstance({
512
555
  name: 'grid',
513
556
  component: 'TekGrid',
514
557
  columns: [
@@ -537,7 +580,7 @@ describe('LayoutOptions', () => {
537
580
  component: 'ZdTag',
538
581
  tag: 'span',
539
582
  });
540
- const grid = new TekGrid({
583
+ const grid = setupInstance({
541
584
  name: 'grid',
542
585
  component: 'TekGrid',
543
586
  columns: [
@@ -567,7 +610,7 @@ describe('LayoutOptions', () => {
567
610
  component: 'ZdTag',
568
611
  tag: 'span',
569
612
  });
570
- const grid = new TekGrid({
613
+ const grid = setupInstance({
571
614
  name: 'grid',
572
615
  component: 'TekGrid',
573
616
  columns: [
@@ -662,7 +705,7 @@ describe('LayoutOptions', () => {
662
705
  component: 'ZdTag',
663
706
  tag: 'span',
664
707
  });
665
- const grid = new TekGrid({
708
+ const grid = setupInstance({
666
709
  name: 'grid',
667
710
  component: 'TekGrid',
668
711
  columns: [
@@ -699,7 +742,7 @@ describe('LayoutOptions', () => {
699
742
  component: 'ZdTag',
700
743
  tag: 'span',
701
744
  });
702
- const grid = new TekGrid({
745
+ const grid = setupInstance({
703
746
  name: 'grid',
704
747
  component: 'TekGrid',
705
748
  columns: [
@@ -755,7 +798,7 @@ describe('LayoutOptions', () => {
755
798
  component: 'ZdTag',
756
799
  tag: 'span',
757
800
  });
758
- const grid = new TekGrid({
801
+ const grid = setupInstance({
759
802
  name: 'grid',
760
803
  component: 'TekGrid',
761
804
  columns: [
@@ -796,7 +839,7 @@ describe('LayoutOptions', () => {
796
839
  component: 'ZdTag',
797
840
  tag: 'span',
798
841
  });
799
- const grid = new TekGrid({
842
+ const grid = setupInstance({
800
843
  name: 'grid',
801
844
  component: 'TekGrid',
802
845
  columns: [
@@ -806,7 +849,6 @@ describe('LayoutOptions', () => {
806
849
  ],
807
850
  });
808
851
  const instance = new TekGridLayoutOptions({ name: 'layout', component: 'TekGridLayoutOptions' });
809
- const flushPromises = () => new Promise(setImmediate);
810
852
  instance.parent = tag;
811
853
  tag.parent = grid;
812
854
 
@@ -832,7 +874,7 @@ describe('LayoutOptions', () => {
832
874
  await grid.onMounted({} as HTMLElement);
833
875
 
834
876
  await flushPromises();
835
- expect(spy).toBeCalled();
877
+ expect(spy).toHaveBeenCalled();
836
878
  expect(instance.layouts).toEqual({
837
879
  'layout-test': {
838
880
  name: 'layout-test',
@@ -856,7 +898,7 @@ describe('LayoutOptions', () => {
856
898
  component: 'ZdTag',
857
899
  tag: 'span',
858
900
  });
859
- const grid = new TekGrid({
901
+ const grid = setupInstance({
860
902
  name: 'grid',
861
903
  component: 'TekGrid',
862
904
  columns: [
@@ -866,7 +908,6 @@ describe('LayoutOptions', () => {
866
908
  ],
867
909
  });
868
910
  const instance = new TekGridLayoutOptions({ name: 'layout', component: 'TekGridLayoutOptions' });
869
- const flushPromises = () => new Promise(setImmediate);
870
911
  instance.parent = tag;
871
912
  tag.parent = grid;
872
913
 
@@ -892,7 +933,7 @@ describe('LayoutOptions', () => {
892
933
  await grid.onMounted({} as HTMLElement);
893
934
 
894
935
  await flushPromises();
895
- expect(spy).toBeCalled();
936
+ expect(spy).toHaveBeenCalled();
896
937
  expect(instance.layouts).toEqual({
897
938
  'layout-test': {
898
939
  name: 'layout-test',
@@ -916,7 +957,7 @@ describe('LayoutOptions', () => {
916
957
  component: 'ZdTag',
917
958
  tag: 'span',
918
959
  });
919
- const grid = new TekGrid({
960
+ const grid = setupInstance({
920
961
  name: 'grid',
921
962
  component: 'TekGrid',
922
963
  columns: [
@@ -926,17 +967,16 @@ describe('LayoutOptions', () => {
926
967
  ],
927
968
  });
928
969
  const instance = new TekGridLayoutOptions({ name: 'layout', component: 'TekGridLayoutOptions' });
929
- const flushPromises = () => new Promise(setImmediate);
930
970
  instance.parent = tag;
931
971
  tag.parent = grid;
932
972
 
933
973
  const spy = jest.spyOn(Http, 'get').mockImplementation(() => Promise.resolve({ data: { data: '' } }));
934
974
 
935
975
  await instance.onMounted({} as HTMLElement);
936
- await grid.onMounted({} as HTMLElement);
976
+ grid.onMounted({} as HTMLElement);
937
977
 
938
978
  await flushPromises();
939
- expect(spy).toBeCalled();
979
+ expect(spy).toHaveBeenCalled();
940
980
  expect(instance.layouts).toEqual({});
941
981
  spy.mockReset();
942
982
  (Config as ITekConfig).loadGridLayoutsEndPoint = '';
@@ -949,7 +989,7 @@ describe('LayoutOptions', () => {
949
989
  component: 'ZdTag',
950
990
  tag: 'span',
951
991
  });
952
- const grid = new TekGrid({
992
+ const grid = setupInstance({
953
993
  name: 'grid',
954
994
  component: 'TekGrid',
955
995
  columns: [
@@ -0,0 +1,139 @@
1
+ import { Button, IText, Text } from '@zeedhi/common';
2
+ import { ITekGridExportConfig, TekGrid, MultiOption } from '../../../../src';
3
+ import { Loader, SimpleControllerBuilder } from '@zeedhi/core';
4
+
5
+ describe('MultiOption', () => {
6
+ beforeAll(() => {
7
+ Loader.setBuilder(new SimpleControllerBuilder());
8
+ });
9
+
10
+ describe('buildComponent()', () => {
11
+ it('when called, should build a row with multiple buttons', () => {
12
+ const grid = new TekGrid({ name: 'Grid', component: 'TekGrid' });
13
+ const config: ITekGridExportConfig = {
14
+ type: 'pdf',
15
+ label: 'Exportar PDF',
16
+ multiOption: [
17
+ { label: 'portrait', iconName: 'icon-portrait' },
18
+ { label: 'landscape', iconName: 'icon-landscape' },
19
+ ],
20
+ };
21
+ const option = new MultiOption(config);
22
+
23
+ const component = option.buildComponent(grid);
24
+
25
+ expect(component).toEqual({
26
+ name: 'Grid_export_pdf_row',
27
+ component: 'ZdRow',
28
+ cssClass: 'zd-display-flex zd-ma-0 zd-py-0 zd-gap-x-1 tek-grid-export-multioption-row',
29
+ children: [
30
+ expect.objectContaining({
31
+ name: 'Grid_export_pdf_text',
32
+ component: 'ZdText',
33
+ text: 'Exportar PDF',
34
+ cssClass: 'zd-display-flex zd-align-center zd-flex-grow-1 tek-grid-export-multioption-text',
35
+ }),
36
+ {
37
+ name: 'Grid_export_pdf_tooltip_portrait',
38
+ component: 'ZdTooltip',
39
+ bottom: true,
40
+ label: 'portrait',
41
+ children: [
42
+ expect.objectContaining({
43
+ name: 'Grid_export_pdf_button_portrait',
44
+ component: 'ZdButton',
45
+ icon: true,
46
+ iconName: 'icon-portrait',
47
+ }),
48
+ ],
49
+ },
50
+ expect.objectContaining({
51
+ name: 'Grid_export_pdf_divider_portrait',
52
+ component: 'ZdDivider',
53
+ cssClass: 'zd-my-1',
54
+ vertical: true,
55
+ }),
56
+ {
57
+ name: 'Grid_export_pdf_tooltip_landscape',
58
+ component: 'ZdTooltip',
59
+ bottom: true,
60
+ label: 'landscape',
61
+ children: [
62
+ expect.objectContaining({
63
+ name: 'Grid_export_pdf_button_landscape',
64
+ component: 'ZdButton',
65
+ icon: true,
66
+ iconName: 'icon-landscape',
67
+ }),
68
+ ],
69
+ },
70
+ ],
71
+ });
72
+ });
73
+
74
+ it('the generated text component should call stopPropagation on click', () => {
75
+ const grid = new TekGrid({ name: 'Grid', component: 'TekGrid' });
76
+ const config: ITekGridExportConfig = {
77
+ type: 'pdf',
78
+ label: 'Exportar PDF',
79
+ multiOption: [
80
+ { label: 'portrait', iconName: 'icon-portrait' },
81
+ { label: 'landscape', iconName: 'icon-landscape' },
82
+ ],
83
+ };
84
+ const option = new MultiOption(config);
85
+
86
+ const component = option.buildComponent(grid);
87
+
88
+ const instance = new Text(component.children![0] as IText);
89
+ const spy = jest.fn();
90
+ const event = { stopPropagation: spy } as unknown as Event;
91
+ instance.click(event);
92
+
93
+ expect(spy).toHaveBeenCalled();
94
+ });
95
+
96
+ it('the generated text component should not throw if event is undefined', () => {
97
+ const grid = new TekGrid({ name: 'Grid', component: 'TekGrid' });
98
+ const config: ITekGridExportConfig = {
99
+ type: 'pdf',
100
+ label: 'Exportar PDF',
101
+ multiOption: [
102
+ { label: 'portrait', iconName: 'icon-portrait' },
103
+ { label: 'landscape', iconName: 'icon-landscape' },
104
+ ],
105
+ };
106
+ const option = new MultiOption(config);
107
+
108
+ const component = option.buildComponent(grid);
109
+
110
+ const instance = new Text(component.children![0] as IText);
111
+
112
+ expect(() => instance.callEvent('click', { event: undefined })).not.toThrow();
113
+ });
114
+
115
+ it('the generated button components should call grid.getReport on click', () => {
116
+ const grid = new TekGrid({ name: 'Grid', component: 'TekGrid' });
117
+ const spy = jest.fn();
118
+ grid.getReport = spy;
119
+ const config: ITekGridExportConfig = {
120
+ type: 'pdf',
121
+ multiOption: [
122
+ { label: 'portrait', iconName: 'icon-portrait' },
123
+ { label: 'landscape', iconName: 'icon-landscape' },
124
+ ],
125
+ };
126
+ const option = new MultiOption(config);
127
+
128
+ const component = option.buildComponent(grid);
129
+
130
+ const instance = new Button(component.children![1].children![0]);
131
+ instance.click();
132
+
133
+ const instance2 = new Button(component.children![3].children![0]);
134
+ instance2.click();
135
+
136
+ expect(spy).toHaveBeenCalledTimes(2);
137
+ });
138
+ });
139
+ });
@@ -1,4 +1,4 @@
1
- import { Http } from '@zeedhi/core';
1
+ import { Http, Loader, SimpleControllerBuilder } from '@zeedhi/core';
2
2
  import {
3
3
  IFilterOperation,
4
4
  IFilterPropsComponent,
@@ -7,14 +7,18 @@ import {
7
7
  TekGrid,
8
8
  TekGridColumn,
9
9
  } from '../../../../src';
10
+ import { flushPromises } from '../../__helpers__';
10
11
 
11
12
  jest.mock('lodash.debounce', () => jest.fn((fn) => fn));
12
- const flushPromises = () => new Promise(setImmediate);
13
13
 
14
14
  describe('TekGridColumn', () => {
15
15
  let baseProps: ITekGridColumn;
16
16
  let httpSpy: jest.SpyInstance;
17
17
 
18
+ beforeAll(() => {
19
+ Loader.setBuilder(new SimpleControllerBuilder());
20
+ });
21
+
18
22
  beforeEach(() => {
19
23
  httpSpy = jest.spyOn(Http, 'get').mockImplementation((url: string) => {
20
24
  if (url === '/zeedhi') {
@@ -120,6 +124,7 @@ describe('TekGridColumn', () => {
120
124
  it('should get lookup data', async () => {
121
125
  const grid = new TekGrid({ name: 'grid', component: 'TekGrid' });
122
126
  const column = new TekGridColumn(baseProps, grid);
127
+ column.initialize();
123
128
 
124
129
  let data = column.getLookupData('name', 'employee 1');
125
130
  expect(data).toEqual({});
@@ -153,6 +158,7 @@ describe('TekGridColumn', () => {
153
158
  const grid = new TekGrid({ name: 'grid', component: 'TekGrid' });
154
159
  baseProps.storeData = false;
155
160
  const column = new TekGridColumn(baseProps, grid);
161
+ column.initialize();
156
162
 
157
163
  let data = column.getLookupData('name', 'employee 1');
158
164
  expect(data).toEqual({});
@@ -267,4 +273,40 @@ describe('TekGridColumn', () => {
267
273
  await expect(column.memorySearch('')).rejects.toThrow();
268
274
  });
269
275
  });
276
+
277
+ describe('change grouping', () => {
278
+ beforeEach(() => {
279
+ jest.useFakeTimers();
280
+ });
281
+
282
+ it('when grouped property changes, should call grid updateGrouping', () => {
283
+ const grid = { updateGrouping: jest.fn() } as any as TekGrid;
284
+ const column = new TekGridColumn(baseProps, grid);
285
+ column.grouped = true;
286
+
287
+ jest.runAllTimers();
288
+
289
+ expect(grid.updateGrouping).toHaveBeenCalled();
290
+ });
291
+
292
+ it('when aggregation property changes, should call grid updateGrouping', () => {
293
+ const grid = { updateGrouping: jest.fn() } as any as TekGrid;
294
+ const column = new TekGridColumn(baseProps, grid);
295
+ column.aggregation = 'COUNT';
296
+
297
+ jest.runAllTimers();
298
+
299
+ expect(grid.updateGrouping).toHaveBeenCalled();
300
+ });
301
+
302
+ it('when groupOpened property changes, should call grid updateGrouping', () => {
303
+ const grid = { updateGrouping: jest.fn() } as any as TekGrid;
304
+ const column = new TekGridColumn(baseProps, grid);
305
+ column.groupOpened = true;
306
+
307
+ jest.runAllTimers();
308
+
309
+ expect(grid.updateGrouping).toHaveBeenCalled();
310
+ });
311
+ });
270
312
  });
@@ -1,9 +1,42 @@
1
- import { Checkbox, Iterable } from '@zeedhi/common';
2
- import { I18n } from '@zeedhi/core';
3
- import { TekGrid, TekGridColumnsButton } from '../../../../src';
4
- import { TekGridColumnsButtonController } from '../../../../src/components/tek-grid/grid-columns-button-controller';
1
+ import { I18n, Loader, SimpleControllerBuilder } from '@zeedhi/core';
2
+ import { TekGrid, TekGridColumnsButton, TekGridColumnsButtonController, Grid, Checkbox, ITekGridProps } from '../../../../src';
3
+
4
+ const setupInstance = (props: Partial<ITekGridProps> = {}) => {
5
+ const instance = new TekGrid({
6
+ name: 'Grid',
7
+ component: 'TekGrid',
8
+ columns: [
9
+ { name: 'first' },
10
+ { name: 'second' },
11
+ { name: 'third' },
12
+ ],
13
+ datasource: {
14
+ limit: 2,
15
+ page: 1,
16
+ data: [
17
+ { id: 1 },
18
+ { id: 2 },
19
+ { id: 3 },
20
+ { id: 4 },
21
+ { id: 5 },
22
+ { id: 6 },
23
+ { id: 7 },
24
+ ],
25
+ },
26
+ ...props,
27
+ });
28
+ const elem = document.createElement('DIV');
29
+ instance.onCreated();
30
+ instance.onMounted(elem);
31
+
32
+ return instance;
33
+ };
5
34
 
6
35
  describe('TekGridColumnsButton', () => {
36
+ beforeAll(() => {
37
+ Loader.setBuilder(new SimpleControllerBuilder());
38
+ });
39
+
7
40
  describe('getAggregationSelectData', () => {
8
41
  it('should get aggregation data', () => {
9
42
  let I18Called = false;
@@ -12,7 +45,7 @@ describe('TekGridColumnsButton', () => {
12
45
  if (Array.isArray(code)) return code[0];
13
46
  return code;
14
47
  });
15
- const grid = new TekGrid({
48
+ const grid = setupInstance({
16
49
  name: 'grid-1',
17
50
  component: 'TekGrid',
18
51
  });
@@ -45,7 +78,7 @@ describe('TekGridColumnsButton', () => {
45
78
  component: 'ZdCheckbox',
46
79
  value: false,
47
80
  });
48
- const iterable = new Iterable({
81
+ const iterable = new Grid({
49
82
  name: 'iterable',
50
83
  component: 'ZdIterable',
51
84
  columns: [
@@ -55,7 +88,7 @@ describe('TekGridColumnsButton', () => {
55
88
  },
56
89
  ],
57
90
  });
58
- const grid = new TekGrid({
91
+ const grid = setupInstance({
59
92
  name: 'grid-1',
60
93
  component: 'TekGrid',
61
94
  parent: iterable,
@@ -78,7 +111,7 @@ describe('TekGridColumnsButton', () => {
78
111
  });
79
112
 
80
113
  it('changeGroupedColumn', () => {
81
- const grid = new TekGrid({
114
+ const grid = setupInstance({
82
115
  name: 'grid-2',
83
116
  component: 'TekGrid',
84
117
  columns: [
@@ -130,7 +163,7 @@ describe('TekGridColumnsButton', () => {
130
163
  });
131
164
 
132
165
  it('changeAggregationColumn', () => {
133
- const grid = new TekGrid({
166
+ const grid = setupInstance({
134
167
  name: 'grid-2',
135
168
  component: 'TekGrid',
136
169
  columns: [