@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.
- package/.package.json +43 -0
- package/dist/teknisa-components-common.js +3802 -0
- package/dist/teknisa-components-common.min.js +3802 -0
- package/dist/types/components/index.d.ts +7 -0
- package/{types → dist/types}/components/tek-breadcrumb-header/breadcrumb-header.d.ts +12 -12
- package/{types → dist/types}/components/tek-breadcrumb-header/interfaces.d.ts +6 -6
- package/dist/types/components/tek-datasource/index.d.ts +3 -0
- package/{types → dist/types}/components/tek-datasource/interfaces.d.ts +16 -16
- package/{types/components/tek-datasource/memory-datasource.d.ts → dist/types/components/tek-datasource/tek-memory-datasource.d.ts} +93 -100
- package/{types/components/tek-datasource/rest-datasource.d.ts → dist/types/components/tek-datasource/tek-rest-datasource.d.ts} +95 -103
- package/dist/types/components/tek-grid/columns-searcher.d.ts +5 -0
- package/dist/types/components/tek-grid/dynamic-filter-datasource-factory.d.ts +6 -0
- package/{types → dist/types}/components/tek-grid/filter-helper.d.ts +7 -7
- package/{types → dist/types}/components/tek-grid/grid-filter-button.d.ts +29 -31
- package/dist/types/components/tek-grid/grouped-data-manager.d.ts +82 -0
- package/dist/types/components/tek-grid/grouped-data-selector.d.ts +7 -0
- package/dist/types/components/tek-grid/grouped-view-navigator.d.ts +14 -0
- package/dist/types/components/tek-grid/index.d.ts +18 -0
- package/dist/types/components/tek-grid/interfaces.d.ts +259 -0
- package/dist/types/components/tek-grid/keymap-grouped.d.ts +6 -0
- package/{types → dist/types}/components/tek-grid/layout-options.d.ts +39 -31
- package/{types/components/tek-grid/grid-column.d.ts → dist/types/components/tek-grid/tek-grid-column.d.ts} +42 -45
- 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
- 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
- package/dist/types/components/tek-grid/tek-grid-controller.d.ts +31 -0
- package/dist/types/components/tek-grid/tek-grid-events.d.ts +31 -0
- package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/button-option.d.ts +17 -16
- package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/index.d.ts +3 -3
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.d.ts +5 -0
- package/{types/utils/grid-base → dist/types/components/tek-grid/tek-grid-toolbar-provider}/export-options/multi-option.d.ts +12 -12
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/index.d.ts +2 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.d.ts +22 -0
- package/dist/types/components/tek-grid/tek-grid.d.ts +216 -0
- package/{types → dist/types}/components/tek-user-info/TekUserInfoController.d.ts +22 -21
- package/{types → dist/types}/components/tek-user-info/interfaces.d.ts +27 -28
- package/{types → dist/types}/components/tek-user-info/tek-user-info-list.d.ts +32 -31
- package/{types → dist/types}/components/tek-user-info/tek-user-info.d.ts +37 -38
- package/{types → dist/types}/error/delete-rows-error.d.ts +6 -6
- package/dist/types/error/tek-grid-delete-rows-error.d.ts +7 -0
- package/dist/types/error/teknisa-common-error.d.ts +6 -0
- package/dist/types/index.d.ts +2 -0
- package/{types → dist/types}/utils/config/config.d.ts +7 -7
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/is-filled-object/is-filled-object.d.ts +2 -0
- package/dist/types/utils/is-nil.d.ts +1 -0
- package/environments.json +14 -0
- package/package.json +26 -18
- package/src/components/index.ts +101 -0
- package/src/components/tek-breadcrumb-header/breadcrumb-header.ts +29 -0
- package/src/components/tek-breadcrumb-header/interfaces.ts +7 -0
- package/src/components/tek-datasource/index.ts +3 -0
- package/src/components/tek-datasource/interfaces.ts +36 -0
- package/src/components/tek-datasource/tek-memory-datasource.ts +314 -0
- package/src/components/tek-datasource/tek-rest-datasource.ts +224 -0
- package/src/components/tek-grid/columns-searcher.ts +22 -0
- package/src/components/tek-grid/dynamic-filter-datasource-factory.ts +20 -0
- package/src/components/tek-grid/filter-helper.ts +20 -0
- package/src/components/tek-grid/grid-filter-button.ts +419 -0
- package/src/components/tek-grid/grouped-data-manager.ts +448 -0
- package/src/components/tek-grid/grouped-data-selector.ts +40 -0
- package/src/components/tek-grid/grouped-view-navigator.ts +84 -0
- package/src/components/tek-grid/index.ts +18 -0
- package/src/components/tek-grid/interfaces.ts +329 -0
- package/src/components/tek-grid/keymap-grouped.ts +20 -0
- package/src/components/tek-grid/layout-options.ts +248 -0
- package/src/components/tek-grid/tek-grid-column.ts +193 -0
- package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts +28 -0
- package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts +38 -0
- package/src/components/tek-grid/tek-grid-controller.ts +140 -0
- package/src/components/tek-grid/tek-grid-events.ts +105 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts +26 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts +3 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.ts +6 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts +85 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/index.ts +2 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts +365 -0
- package/src/components/tek-grid/tek-grid.ts +1118 -0
- package/src/components/tek-user-info/TekUserInfoController.ts +87 -0
- package/src/components/tek-user-info/interfaces.ts +21 -0
- package/src/components/tek-user-info/tek-user-info-list.ts +64 -0
- package/src/components/tek-user-info/tek-user-info.ts +337 -0
- package/src/error/tek-grid-delete-rows-error.ts +15 -0
- package/src/error/teknisa-common-error.ts +8 -0
- package/src/index.ts +2 -0
- package/src/utils/config/config.ts +8 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/is-filled-object/is-filled-object.ts +5 -0
- package/src/utils/is-nil.ts +3 -0
- package/tests/__helpers__/component-event-helper.ts +1 -1
- package/tests/__helpers__/get-child-helper.ts +1 -1
- package/tests/__helpers__/mock-created-helper.ts +1 -1
- package/tests/unit/components/crud/crud-button.spec.ts +1 -1
- package/tests/unit/components/tek-datasource/memory-datasource.spec.ts +1 -11
- package/tests/unit/components/tek-datasource/rest-datasource.spec.ts +5 -7
- package/tests/unit/components/tek-drag-grid/tek-drag-grid.spec.ts +1 -1
- package/tests/unit/components/tek-grid/button-option.spec.ts +49 -0
- package/tests/unit/components/tek-grid/columns-searcher.spec.ts +112 -0
- package/tests/unit/components/tek-grid/dynamic-filter-datasource-factory.spec.ts +90 -0
- package/tests/unit/components/tek-grid/filter-helper.spec.ts +34 -130
- package/tests/unit/components/tek-grid/grid-filter-button.spec.ts +114 -239
- package/tests/unit/components/tek-grid/grouped-data-manager.spec.ts +593 -0
- package/tests/unit/components/tek-grid/grouped-data-selector.spec.ts +136 -0
- package/tests/unit/components/tek-grid/grouped-view-navigator.spec.ts +244 -0
- package/tests/unit/components/tek-grid/keymap-grouped.spec.ts +20 -0
- package/tests/unit/components/tek-grid/{layout_options.spec.ts → layout-options.spec.ts} +70 -30
- package/tests/unit/components/tek-grid/multi-option.spec.ts +139 -0
- package/tests/unit/components/tek-grid/{grid-column.spec.ts → tek-grid-column.spec.ts} +44 -2
- package/tests/unit/components/tek-grid/{grid-columns-button.spec.ts → tek-grid-columns-button.spec.ts} +42 -9
- package/tests/unit/components/tek-grid/tek-grid-controller.spec.ts +253 -0
- package/tests/unit/components/tek-grid/tek-grid-events.spec.ts +186 -0
- package/tests/unit/components/tek-grid/tek-grid-toolbar-provider.spec.ts +34 -0
- package/tests/unit/components/tek-grid/tek-grid.spec.ts +895 -0
- package/tests/unit/components/tek-grid/tek-memory-datasource.spec.ts +482 -0
- package/tests/unit/components/tek-grid/tek-rest-datasource.spec.ts +422 -0
- package/tests/unit/components/tek-user-info/tek-user-info-list.spec.ts +1 -1
- package/tests/unit/components/tek-user-info/tek-user-info.spec.ts +10 -14
- package/tests/unit/components/tree-grid/tree-grid.spec.ts +4 -28
- package/tests/unit/utils/grid-base/export-options/multi-option.spec.ts +2 -2
- package/tests/unit/utils/grid-base/grid-controller.spec.ts +17 -152
- package/tsconfig.build.json +7 -0
- package/coverage/clover.xml +0 -2007
- package/coverage/coverage-final.json +0 -48
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -431
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/tests/__helpers__/component-event-helper.ts.html +0 -100
- package/coverage/lcov-report/tests/__helpers__/flush-promises-helper.ts.html +0 -94
- package/coverage/lcov-report/tests/__helpers__/get-child-helper.ts.html +0 -166
- package/coverage/lcov-report/tests/__helpers__/index.html +0 -176
- package/coverage/lcov-report/tests/__helpers__/index.ts.html +0 -94
- package/coverage/lcov-report/tests/__helpers__/mock-created-helper.ts.html +0 -121
- package/coverage/lcov.info +0 -3885
- package/dist/tek-components-common.esm.js +0 -4833
- package/dist/tek-components-common.umd.js +0 -4870
- package/tests/unit/components/tek-grid/grid.spec.ts +0 -3377
- package/tests/unit/utils/grid-base/delete-rows-error.spec.ts +0 -24
- package/types/components/crud/crud-add-button.d.ts +0 -38
- package/types/components/crud/crud-button.d.ts +0 -27
- package/types/components/crud/crud-cancel-button.d.ts +0 -28
- package/types/components/crud/crud-delete-button.d.ts +0 -42
- package/types/components/crud/crud-form.d.ts +0 -46
- package/types/components/crud/crud-save-button.d.ts +0 -24
- package/types/components/crud/interfaces.d.ts +0 -15
- package/types/components/index.d.ts +0 -41
- package/types/components/tek-card-title/card-title.d.ts +0 -14
- package/types/components/tek-card-title/interfaces.d.ts +0 -9
- package/types/components/tek-drag-grid/interfaces.d.ts +0 -7
- package/types/components/tek-drag-grid/tek-drag-grid.d.ts +0 -36
- package/types/components/tek-grid/grid.d.ts +0 -267
- package/types/components/tek-grid/interfaces.d.ts +0 -203
- package/types/components/tek-image/image.d.ts +0 -55
- package/types/components/tek-image/interfaces.d.ts +0 -12
- package/types/components/tek-iterable-carousel/interfaces.d.ts +0 -5
- package/types/components/tek-iterable-carousel/iterable-carousel.d.ts +0 -13
- package/types/components/tek-iterable-component-render/interfaces.d.ts +0 -3
- package/types/components/tek-iterable-component-render/iterable-component-render.d.ts +0 -10
- package/types/components/tek-loading/interfaces.d.ts +0 -6
- package/types/components/tek-loading/loading.d.ts +0 -24
- package/types/components/tek-notifications/interfaces.d.ts +0 -22
- package/types/components/tek-notifications/notifications.d.ts +0 -35
- package/types/components/tek-product-card/interfaces.d.ts +0 -19
- package/types/components/tek-product-card/product-card.d.ts +0 -66
- package/types/components/tek-tree-grid/interfaces.d.ts +0 -30
- package/types/components/tek-tree-grid/tree-grid.d.ts +0 -102
- package/types/error/incomplete-groups-error.d.ts +0 -8
- package/types/index.d.ts +0 -2
- package/types/utils/extract-properties.d.ts +0 -7
- package/types/utils/grid-base/export-options/interfaces.d.ts +0 -5
- package/types/utils/grid-base/grid-base.d.ts +0 -59
- package/types/utils/grid-base/grid-controller.d.ts +0 -27
- package/types/utils/index.d.ts +0 -6
- 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,
|
|
4
|
+
Button, Form, IButton, IForm, IModal, Modal, ModalService,
|
|
5
5
|
} from '@zeedhi/common';
|
|
6
6
|
import {
|
|
7
|
-
Http, Metadata, DateHelper,
|
|
7
|
+
Http, Metadata, DateHelper,
|
|
8
|
+
Loader,
|
|
9
|
+
SimpleControllerBuilder,
|
|
8
10
|
} from '@zeedhi/core';
|
|
9
11
|
import {
|
|
10
|
-
IFilterPropsComponent,
|
|
11
12
|
ITekGridFilterButton,
|
|
12
|
-
TekGrid,
|
|
13
|
+
TekGrid, TekGridFilterButton, TekRestDatasource,
|
|
13
14
|
} from '../../../../src';
|
|
14
|
-
import {
|
|
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).
|
|
114
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
109
115
|
button.click();
|
|
110
|
-
expect(spy).
|
|
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.
|
|
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 = () =>
|
|
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 = () =>
|
|
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.
|
|
805
|
-
expect(spyDatasourceGet).
|
|
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
|
-
|
|
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.
|
|
766
|
+
expect(instance.columnHasFilter('name')).toBeTruthy();
|
|
959
767
|
|
|
960
768
|
setClick(applyButtonObject, { defaultPrevented: true });
|
|
961
|
-
expect(spyDatasourceGet).
|
|
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
|
});
|