angular-slickgrid 4.2.0 → 4.2.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/{dist/angular-slickgrid.d.ts → angular-slickgrid.d.ts} +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/constants.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/extensions/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/global-grid-options.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/gridOption.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/slickGrid.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/angularUtil.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/bsDropdown.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/container.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/translater.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/utilities.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/slickgrid-config.d.ts +0 -0
- package/docs/assets/lib/multiple-select/README.md +17 -0
- package/{dist/esm2020 → esm2020}/angular-slickgrid.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/constants.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/index.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/global-grid-options.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/index.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/index.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/angularUtil.service.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/container.service.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/index.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/translater.service.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/utilities.mjs +0 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/slickgrid-config.mjs +0 -0
- package/{dist/esm2020 → esm2020}/public_api.mjs +0 -0
- package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs +0 -0
- package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs.map +0 -0
- package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs +0 -0
- package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs.map +0 -0
- package/{dist/i18n → i18n}/en.json +0 -0
- package/{dist/i18n → i18n}/fr.json +0 -0
- package/package.json +25 -110
- package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
- package/.browserslistrc +0 -12
- package/.codecov.yml +0 -17
- package/.editorconfig +0 -18
- package/.eslintrc.json +0 -50
- package/.github/CODE_OF_CONDUCT.md +0 -76
- package/.github/FUNDING.yml +0 -8
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -54
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -44
- package/.github/renovate.json5 +0 -26
- package/.github/stale.yml +0 -7
- package/.github/workflows/main.yml +0 -83
- package/.vscode/extensions.json +0 -9
- package/.vscode/launch.json +0 -72
- package/.vscode/settings.json +0 -7
- package/.vscode/tasks.json +0 -77
- package/CHANGELOG.md +0 -1172
- package/angular.json +0 -148
- package/dist/LICENSE +0 -20
- package/dist/README.md +0 -182
- package/dist/package.json +0 -79
- package/global.d.ts +0 -1
- package/ngcc.config.js +0 -13
- package/screenshots/column-picker.png +0 -0
- package/screenshots/composite-editor.png +0 -0
- package/screenshots/draggable-grouping.png +0 -0
- package/screenshots/editors.png +0 -0
- package/screenshots/export-to-file.png +0 -0
- package/screenshots/filter_and_sort.png +0 -0
- package/screenshots/formatters.png +0 -0
- package/screenshots/frozen.png +0 -0
- package/screenshots/multipleSelectFilter.png +0 -0
- package/screenshots/pagination.png +0 -0
- package/screenshots/selectFilter.png +0 -0
- package/screenshots/singleFilter.png +0 -0
- package/src/app/app-routing.module.ts +0 -83
- package/src/app/app.component.html +0 -160
- package/src/app/app.component.scss +0 -65
- package/src/app/app.component.ts +0 -10
- package/src/app/app.module.ts +0 -175
- package/src/app/examples/custom-angularComponentEditor.ts +0 -184
- package/src/app/examples/custom-angularComponentFilter.ts +0 -126
- package/src/app/examples/custom-inputEditor.ts +0 -124
- package/src/app/examples/custom-inputFilter.ts +0 -142
- package/src/app/examples/custom-titleFormatter.component.ts +0 -8
- package/src/app/examples/editor-ng-select.component.ts +0 -37
- package/src/app/examples/filter-ng-select.component.ts +0 -32
- package/src/app/examples/grid-additem.component.html +0 -48
- package/src/app/examples/grid-additem.component.ts +0 -272
- package/src/app/examples/grid-angular.component.html +0 -79
- package/src/app/examples/grid-angular.component.scss +0 -28
- package/src/app/examples/grid-angular.component.ts +0 -370
- package/src/app/examples/grid-autoheight.component.html +0 -52
- package/src/app/examples/grid-autoheight.component.ts +0 -147
- package/src/app/examples/grid-basic.component.html +0 -29
- package/src/app/examples/grid-basic.component.ts +0 -82
- package/src/app/examples/grid-clientside.component.html +0 -51
- package/src/app/examples/grid-clientside.component.ts +0 -293
- package/src/app/examples/grid-colspan.component.html +0 -39
- package/src/app/examples/grid-colspan.component.scss +0 -11
- package/src/app/examples/grid-colspan.component.ts +0 -155
- package/src/app/examples/grid-composite-editor.component.html +0 -79
- package/src/app/examples/grid-composite-editor.component.scss +0 -19
- package/src/app/examples/grid-composite-editor.component.ts +0 -948
- package/src/app/examples/grid-contextmenu.component.html +0 -62
- package/src/app/examples/grid-contextmenu.component.scss +0 -44
- package/src/app/examples/grid-contextmenu.component.ts +0 -473
- package/src/app/examples/grid-custom-tooltip.component.html +0 -25
- package/src/app/examples/grid-custom-tooltip.component.scss +0 -77
- package/src/app/examples/grid-custom-tooltip.component.ts +0 -483
- package/src/app/examples/grid-draggrouping.component.html +0 -93
- package/src/app/examples/grid-draggrouping.component.ts +0 -397
- package/src/app/examples/grid-editor.component.html +0 -88
- package/src/app/examples/grid-editor.component.ts +0 -699
- package/src/app/examples/grid-formatter.component.html +0 -26
- package/src/app/examples/grid-formatter.component.ts +0 -162
- package/src/app/examples/grid-frozen.component.html +0 -65
- package/src/app/examples/grid-frozen.component.scss +0 -11
- package/src/app/examples/grid-frozen.component.ts +0 -303
- package/src/app/examples/grid-graphql-nopage.component.html +0 -33
- package/src/app/examples/grid-graphql-nopage.component.scss +0 -9
- package/src/app/examples/grid-graphql-nopage.component.ts +0 -242
- package/src/app/examples/grid-graphql.component.html +0 -87
- package/src/app/examples/grid-graphql.component.ts +0 -304
- package/src/app/examples/grid-grouping.component.html +0 -80
- package/src/app/examples/grid-grouping.component.ts +0 -313
- package/src/app/examples/grid-headerbutton.component.html +0 -31
- package/src/app/examples/grid-headerbutton.component.scss +0 -10
- package/src/app/examples/grid-headerbutton.component.ts +0 -233
- package/src/app/examples/grid-headermenu.component.html +0 -31
- package/src/app/examples/grid-headermenu.component.scss +0 -25
- package/src/app/examples/grid-headermenu.component.ts +0 -159
- package/src/app/examples/grid-localization.component.html +0 -54
- package/src/app/examples/grid-localization.component.ts +0 -293
- package/src/app/examples/grid-menu.component.html +0 -37
- package/src/app/examples/grid-menu.component.scss +0 -28
- package/src/app/examples/grid-menu.component.ts +0 -229
- package/src/app/examples/grid-odata.component.html +0 -116
- package/src/app/examples/grid-odata.component.ts +0 -441
- package/src/app/examples/grid-range.component.html +0 -74
- package/src/app/examples/grid-range.component.ts +0 -291
- package/src/app/examples/grid-remote.component.html +0 -37
- package/src/app/examples/grid-remote.component.ts +0 -153
- package/src/app/examples/grid-resize-by-content.component.html +0 -62
- package/src/app/examples/grid-resize-by-content.component.scss +0 -19
- package/src/app/examples/grid-resize-by-content.component.ts +0 -780
- package/src/app/examples/grid-rowdetail.component.html +0 -35
- package/src/app/examples/grid-rowdetail.component.ts +0 -205
- package/src/app/examples/grid-rowmove.component.html +0 -49
- package/src/app/examples/grid-rowmove.component.ts +0 -234
- package/src/app/examples/grid-rowselection.component.html +0 -76
- package/src/app/examples/grid-rowselection.component.ts +0 -267
- package/src/app/examples/grid-state.component.html +0 -36
- package/src/app/examples/grid-state.component.ts +0 -259
- package/src/app/examples/grid-tabs.component.html +0 -35
- package/src/app/examples/grid-tabs.component.ts +0 -115
- package/src/app/examples/grid-trading.component.html +0 -58
- package/src/app/examples/grid-trading.component.scss +0 -49
- package/src/app/examples/grid-trading.component.ts +0 -319
- package/src/app/examples/grid-tree-data-hierarchical.component.html +0 -79
- package/src/app/examples/grid-tree-data-hierarchical.component.scss +0 -47
- package/src/app/examples/grid-tree-data-hierarchical.component.ts +0 -311
- package/src/app/examples/grid-tree-data-parent-child.component.html +0 -108
- package/src/app/examples/grid-tree-data-parent-child.component.scss +0 -10
- package/src/app/examples/grid-tree-data-parent-child.component.ts +0 -351
- package/src/app/examples/home.component.html +0 -41
- package/src/app/examples/home.component.ts +0 -9
- package/src/app/examples/rowdetail-preload.component.ts +0 -10
- package/src/app/examples/rowdetail-view.component.html +0 -36
- package/src/app/examples/rowdetail-view.component.ts +0 -54
- package/src/app/examples/swt-common-grid-pagination.component.ts +0 -156
- package/src/app/examples/swt-common-grid-test.component.html +0 -30
- package/src/app/examples/swt-common-grid-test.component.ts +0 -219
- package/src/app/examples/swt-common-grid.component.ts +0 -436
- package/src/app/examples/swt-logger.service.ts +0 -165
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.html +0 -4
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +0 -1395
- package/src/app/modules/angular-slickgrid/constants.ts +0 -97
- package/src/app/modules/angular-slickgrid/extensions/index.ts +0 -1
- package/src/app/modules/angular-slickgrid/extensions/slickRowDetailView.ts +0 -375
- package/src/app/modules/angular-slickgrid/global-grid-options.ts +0 -245
- package/src/app/modules/angular-slickgrid/index.ts +0 -11
- package/src/app/modules/angular-slickgrid/models/angularComponentOutput.interface.ts +0 -6
- package/src/app/modules/angular-slickgrid/models/angularGridInstance.interface.ts +0 -68
- package/src/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.ts +0 -37
- package/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +0 -12
- package/src/app/modules/angular-slickgrid/models/index.ts +0 -6
- package/src/app/modules/angular-slickgrid/models/rowDetailView.interface.ts +0 -33
- package/src/app/modules/angular-slickgrid/models/slickGrid.interface.ts +0 -7
- package/src/app/modules/angular-slickgrid/modules/angular-slickgrid.module.ts +0 -37
- package/src/app/modules/angular-slickgrid/services/angularUtil.service.ts +0 -48
- package/src/app/modules/angular-slickgrid/services/bsDropdown.service.ts +0 -142
- package/src/app/modules/angular-slickgrid/services/container.service.ts +0 -24
- package/src/app/modules/angular-slickgrid/services/index.ts +0 -5
- package/src/app/modules/angular-slickgrid/services/translater.service.ts +0 -38
- package/src/app/modules/angular-slickgrid/services/utilities.ts +0 -19
- package/src/app/modules/angular-slickgrid/slickgrid-config.ts +0 -10
- package/src/app/slickgrid-custom-variables.scss +0 -10
- package/src/assets/.gitkeep +0 -0
- package/src/assets/data/collection_100_numbers.json +0 -12
- package/src/assets/data/collection_500_numbers.json +0 -52
- package/src/assets/data/countries.json +0 -245
- package/src/assets/data/country_names.json +0 -245
- package/src/assets/data/customers_100.json +0 -102
- package/src/assets/i18n/en.json +0 -90
- package/src/assets/i18n/fr.json +0 -91
- package/src/environments/environment.prod.ts +0 -3
- package/src/environments/environment.ts +0 -8
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -18
- package/src/main.ts +0 -13
- package/src/polyfills.ts +0 -52
- package/src/public_api.ts +0 -1
- package/src/styles.scss +0 -66
- package/src/typings.d.ts +0 -10
- package/tsconfig.app.json +0 -25
- package/tsconfig.json +0 -40
- package/tsconfig.spec.json +0 -23
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { ComponentRef } from '@angular/core';
|
|
2
|
-
import { Subscription } from 'rxjs';
|
|
3
|
-
import {
|
|
4
|
-
AngularUtilService,
|
|
5
|
-
Column,
|
|
6
|
-
ColumnFilter,
|
|
7
|
-
Filter,
|
|
8
|
-
FilterArguments,
|
|
9
|
-
FilterCallback,
|
|
10
|
-
GridOption,
|
|
11
|
-
OperatorType,
|
|
12
|
-
OperatorString,
|
|
13
|
-
SearchTerm,
|
|
14
|
-
SlickGrid,
|
|
15
|
-
unsubscribeAllObservables,
|
|
16
|
-
} from './../modules/angular-slickgrid';
|
|
17
|
-
|
|
18
|
-
// using external non-typed js libraries
|
|
19
|
-
declare const $: any;
|
|
20
|
-
|
|
21
|
-
export class CustomAngularComponentFilter implements Filter {
|
|
22
|
-
private _shouldTriggerQuery = true;
|
|
23
|
-
private _subscriptions: Subscription[] = [];
|
|
24
|
-
|
|
25
|
-
/** Angular Component Reference */
|
|
26
|
-
componentRef!: ComponentRef<any>;
|
|
27
|
-
|
|
28
|
-
grid!: SlickGrid;
|
|
29
|
-
searchTerms: SearchTerm[] = [];
|
|
30
|
-
columnDef!: Column;
|
|
31
|
-
callback!: FilterCallback;
|
|
32
|
-
operator: OperatorType | OperatorString = OperatorType.equal;
|
|
33
|
-
|
|
34
|
-
constructor() { }
|
|
35
|
-
|
|
36
|
-
/** Angular Util Service (could be inside the Grid Options Params or the Filter Params ) */
|
|
37
|
-
get angularUtilService(): AngularUtilService {
|
|
38
|
-
let angularUtilService = this.gridOptions && this.gridOptions.params && this.gridOptions.params.angularUtilService;
|
|
39
|
-
if (!angularUtilService || !(angularUtilService instanceof AngularUtilService)) {
|
|
40
|
-
angularUtilService = this.columnFilter && this.columnFilter.params && this.columnFilter.params.angularUtilService;
|
|
41
|
-
}
|
|
42
|
-
return angularUtilService;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Get the Collection */
|
|
46
|
-
get collection(): any[] {
|
|
47
|
-
return this.columnFilter && this.columnFilter.collection || [];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Getter for the Column Filter */
|
|
51
|
-
get columnFilter(): ColumnFilter {
|
|
52
|
-
return this.columnDef && this.columnDef.filter || {};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Getter for the Grid Options pulled through the Grid Object */
|
|
56
|
-
get gridOptions(): GridOption {
|
|
57
|
-
return this.grid?.getOptions?.() as GridOption;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Initialize the Filter
|
|
62
|
-
*/
|
|
63
|
-
init(args: FilterArguments) {
|
|
64
|
-
this.grid = args.grid as SlickGrid;
|
|
65
|
-
this.callback = args.callback;
|
|
66
|
-
this.columnDef = args.columnDef;
|
|
67
|
-
this.searchTerms = (args.hasOwnProperty('searchTerms') ? args.searchTerms : []) || [];
|
|
68
|
-
|
|
69
|
-
if (!this.columnFilter || !this.columnFilter.params.component || !(this.angularUtilService instanceof AngularUtilService)) {
|
|
70
|
-
throw new Error(`[Angular-Slickgrid] For Filter with Angular Component to work properly, you need to provide your component to the "component" property and make sure to add it to your "entryComponents" array.
|
|
71
|
-
You also need to provide the "AngularUtilService" via the Filter Params OR the Grid Options Params
|
|
72
|
-
Example: this.columnDefs = [{ id: 'title', field: 'title', filter: { model: CustomAngularComponentFilter, collection: [...], params: { component: MyComponent, angularUtilService: this.angularUtilService }}];
|
|
73
|
-
OR this.columnDefs = [{ id: 'title', field: 'title', filter: { model: CustomAngularComponentFilter, collection: [...] }]; this.gridOptions = { params: { angularUtilService: this.angularUtilService }}`);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (this.columnFilter && this.columnFilter.params.component) {
|
|
77
|
-
// use a delay to make sure Angular ran at least a full cycle and it finished rendering the Component before hooking onto it
|
|
78
|
-
// else we get the infamous error "ExpressionChangedAfterItHasBeenCheckedError"
|
|
79
|
-
setTimeout(() => {
|
|
80
|
-
const $headerElm = this.grid.getHeaderRowColumn(this.columnDef.id);
|
|
81
|
-
$($headerElm).empty();
|
|
82
|
-
const componentOuput = this.angularUtilService.createAngularComponentAppendToDom(this.columnFilter.params.component, $headerElm);
|
|
83
|
-
this.componentRef = componentOuput.componentRef;
|
|
84
|
-
|
|
85
|
-
// here we override the collection object of the Angular Component
|
|
86
|
-
// but technically you can pass any values you wish to your Component
|
|
87
|
-
Object.assign(componentOuput.componentRef.instance, { collection: this.collection });
|
|
88
|
-
|
|
89
|
-
this._subscriptions.push(
|
|
90
|
-
componentOuput.componentRef.instance.onItemChanged.subscribe((item: any) => {
|
|
91
|
-
this.callback(undefined, { columnDef: this.columnDef, operator: this.operator, searchTerms: [item.id], shouldTriggerQuery: this._shouldTriggerQuery });
|
|
92
|
-
// reset flag for next use
|
|
93
|
-
this._shouldTriggerQuery = true;
|
|
94
|
-
})
|
|
95
|
-
);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Clear the filter value
|
|
102
|
-
*/
|
|
103
|
-
clear(shouldTriggerQuery = true) {
|
|
104
|
-
this._shouldTriggerQuery = shouldTriggerQuery;
|
|
105
|
-
if (this.componentRef && this.componentRef.instance && this.componentRef.instance.hasOwnProperty('selectedId')) {
|
|
106
|
-
this.componentRef.instance.selectedId = 0;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/** destroy the Angular Component & Subscription */
|
|
111
|
-
destroy() {
|
|
112
|
-
if (this.componentRef && this.componentRef.destroy) {
|
|
113
|
-
this.componentRef.destroy();
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// also unsubscribe all Angular Subscriptions
|
|
117
|
-
this._subscriptions = unsubscribeAllObservables(this._subscriptions);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/** Set value(s) on the DOM element */
|
|
121
|
-
setValues(values: SearchTerm[] | SearchTerm) {
|
|
122
|
-
if (this.componentRef && this.componentRef.instance && this.componentRef.instance.hasOwnProperty('selectedId')) {
|
|
123
|
-
this.componentRef.instance.selectedId = values;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Column, ColumnEditor, Editor, EditorValidator, EditorValidationResult, KeyCode } from './../modules/angular-slickgrid';
|
|
2
|
-
|
|
3
|
-
// using external non-typed js libraries
|
|
4
|
-
declare const $: any;
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* An example of a 'detached' editor.
|
|
8
|
-
* KeyDown events are also handled to provide handling for Tab, Shift-Tab, Esc and Ctrl-Enter.
|
|
9
|
-
*/
|
|
10
|
-
export class CustomInputEditor implements Editor {
|
|
11
|
-
private _lastInputEvent?: JQuery.Event;
|
|
12
|
-
$input: any;
|
|
13
|
-
defaultValue: any;
|
|
14
|
-
|
|
15
|
-
constructor(private args: any) {
|
|
16
|
-
this.init();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** Get Column Definition object */
|
|
20
|
-
get columnDef(): Column {
|
|
21
|
-
return this.args && this.args.column || {};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** Get Column Editor object */
|
|
25
|
-
get columnEditor(): ColumnEditor {
|
|
26
|
-
return this.columnDef && this.columnDef.internalColumnEditor || {};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
get hasAutoCommitEdit(): boolean {
|
|
30
|
-
return this.args.grid.getOptions().autoCommitEdit ?? false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** Get the Validator function, can be passed in Editor property or Column Definition */
|
|
34
|
-
get validator(): EditorValidator | undefined {
|
|
35
|
-
return this.columnEditor.validator || this.columnDef.validator;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
init(): void {
|
|
39
|
-
const placeholder = this.columnEditor && this.columnEditor.placeholder || '';
|
|
40
|
-
const title = this.columnEditor && this.columnEditor.title || '';
|
|
41
|
-
|
|
42
|
-
this.$input = $(`<input type="text" class="editor-text" placeholder="${placeholder}" title="${title}" />`)
|
|
43
|
-
.appendTo(this.args.container)
|
|
44
|
-
.on('keydown.nav', (event: JQuery.Event) => {
|
|
45
|
-
this._lastInputEvent = event;
|
|
46
|
-
if (event.keyCode === KeyCode.LEFT || event.keyCode === KeyCode.RIGHT) {
|
|
47
|
-
event.stopImmediatePropagation();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// the lib does not get the focus out event for some reason
|
|
52
|
-
// so register it here
|
|
53
|
-
if (this.hasAutoCommitEdit) {
|
|
54
|
-
this.$input.on('focusout', () => this.save());
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
setTimeout(() => {
|
|
58
|
-
this.$input.focus().select();
|
|
59
|
-
}, 50);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
destroy() {
|
|
63
|
-
this.$input.off('keydown.nav').remove();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
focus() {
|
|
67
|
-
this.$input.focus();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
getValue() {
|
|
71
|
-
return this.$input.val();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
setValue(val: string) {
|
|
75
|
-
this.$input.val(val);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
loadValue(item: any) {
|
|
79
|
-
this.defaultValue = item[this.args.column.field] || '';
|
|
80
|
-
this.$input.val(this.defaultValue);
|
|
81
|
-
this.$input[0].defaultValue = this.defaultValue;
|
|
82
|
-
this.$input.select();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
serializeValue() {
|
|
86
|
-
return this.$input.val();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
applyValue(item: any, state: any) {
|
|
90
|
-
const validation = this.validate(state);
|
|
91
|
-
item[this.args.column.field] = (validation && validation.valid) ? state : '';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
isValueChanged() {
|
|
95
|
-
const lastEvent = this._lastInputEvent && this._lastInputEvent.keyCode;
|
|
96
|
-
if (this.columnEditor && this.columnEditor.alwaysSaveOnEnterKey && lastEvent === KeyCode.ENTER) {
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
return (!(this.$input.val() === '' && this.defaultValue === null)) && (this.$input.val() !== this.defaultValue);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
save() {
|
|
103
|
-
const validation = this.validate();
|
|
104
|
-
if (validation && validation.valid) {
|
|
105
|
-
if (this.hasAutoCommitEdit) {
|
|
106
|
-
this.args.grid.getEditorLock().commitCurrentEdit();
|
|
107
|
-
} else {
|
|
108
|
-
this.args.commitChanges();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
validate(inputValue?: any): EditorValidationResult {
|
|
114
|
-
if (this.validator) {
|
|
115
|
-
const value = (inputValue !== undefined) ? inputValue : this.$input && this.$input.val && this.$input.val();
|
|
116
|
-
return this.validator(value, this.args);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return {
|
|
120
|
-
valid: true,
|
|
121
|
-
msg: null
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Column,
|
|
3
|
-
ColumnFilter,
|
|
4
|
-
Filter,
|
|
5
|
-
FilterArguments,
|
|
6
|
-
FilterCallback,
|
|
7
|
-
GridOption,
|
|
8
|
-
OperatorType,
|
|
9
|
-
OperatorString,
|
|
10
|
-
SearchTerm,
|
|
11
|
-
SlickGrid,
|
|
12
|
-
} from './../modules/angular-slickgrid';
|
|
13
|
-
|
|
14
|
-
// using external non-typed js libraries
|
|
15
|
-
declare const $: any;
|
|
16
|
-
|
|
17
|
-
export class CustomInputFilter implements Filter {
|
|
18
|
-
private _clearFilterTriggered = false;
|
|
19
|
-
private _shouldTriggerQuery = true;
|
|
20
|
-
private $filterElm: any;
|
|
21
|
-
grid!: SlickGrid;
|
|
22
|
-
searchTerms: SearchTerm[] = [];
|
|
23
|
-
columnDef!: Column;
|
|
24
|
-
callback!: FilterCallback;
|
|
25
|
-
operator: OperatorType | OperatorString = OperatorType.equal;
|
|
26
|
-
|
|
27
|
-
constructor() { }
|
|
28
|
-
|
|
29
|
-
/** Getter for the Column Filter */
|
|
30
|
-
get columnFilter(): ColumnFilter {
|
|
31
|
-
return this.columnDef && this.columnDef.filter || {};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Getter for the Grid Options pulled through the Grid Object */
|
|
35
|
-
get gridOptions(): GridOption {
|
|
36
|
-
return this.grid?.getOptions?.() as GridOption;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Initialize the Filter
|
|
41
|
-
*/
|
|
42
|
-
init(args: FilterArguments) {
|
|
43
|
-
this.grid = args.grid as SlickGrid;
|
|
44
|
-
this.callback = args.callback;
|
|
45
|
-
this.columnDef = args.columnDef;
|
|
46
|
-
this.searchTerms = (args.hasOwnProperty('searchTerms') ? args.searchTerms : []) || [];
|
|
47
|
-
|
|
48
|
-
// filter input can only have 1 search term, so we will use the 1st array index if it exist
|
|
49
|
-
const searchTerm = (Array.isArray(this.searchTerms) && this.searchTerms.length >= 0) ? this.searchTerms[0] : '';
|
|
50
|
-
|
|
51
|
-
// step 1, create HTML string template
|
|
52
|
-
const filterTemplate = this.buildTemplateHtmlString();
|
|
53
|
-
|
|
54
|
-
// step 2, create the DOM Element of the filter & initialize it if searchTerm is filled
|
|
55
|
-
this.$filterElm = this.createDomElement(filterTemplate, searchTerm);
|
|
56
|
-
|
|
57
|
-
// step 3, subscribe to the keyup event and run the callback when that happens
|
|
58
|
-
this.$filterElm.keyup((e: any) => {
|
|
59
|
-
let value = e && e.target && e.target.value || '';
|
|
60
|
-
const enableWhiteSpaceTrim = this.gridOptions.enableFilterTrimWhiteSpace || this.columnFilter.enableTrimWhiteSpace;
|
|
61
|
-
if (typeof value === 'string' && enableWhiteSpaceTrim) {
|
|
62
|
-
value = value.trim();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (this._clearFilterTriggered) {
|
|
66
|
-
this.callback(e, { columnDef: this.columnDef, clearFilterTriggered: this._clearFilterTriggered, shouldTriggerQuery: this._shouldTriggerQuery });
|
|
67
|
-
this.$filterElm.removeClass('filled');
|
|
68
|
-
} else {
|
|
69
|
-
value === '' ? this.$filterElm.removeClass('filled') : this.$filterElm.addClass('filled');
|
|
70
|
-
this.callback(e, { columnDef: this.columnDef, searchTerms: [value], shouldTriggerQuery: this._shouldTriggerQuery });
|
|
71
|
-
}
|
|
72
|
-
// reset both flags for next use
|
|
73
|
-
this._clearFilterTriggered = false;
|
|
74
|
-
this._shouldTriggerQuery = true;
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Clear the filter value
|
|
80
|
-
*/
|
|
81
|
-
clear(shouldTriggerQuery = true) {
|
|
82
|
-
if (this.$filterElm) {
|
|
83
|
-
this._clearFilterTriggered = true;
|
|
84
|
-
this._shouldTriggerQuery = shouldTriggerQuery;
|
|
85
|
-
this.$filterElm.val('');
|
|
86
|
-
this.$filterElm.trigger('keyup');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* destroy the filter
|
|
92
|
-
*/
|
|
93
|
-
destroy() {
|
|
94
|
-
if (this.$filterElm) {
|
|
95
|
-
this.$filterElm.off('keyup').remove();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/** Set value(s) on the DOM element */
|
|
100
|
-
setValues(values: SearchTerm | SearchTerm[]) {
|
|
101
|
-
if (values) {
|
|
102
|
-
this.$filterElm.val(values);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
//
|
|
107
|
-
// private functions
|
|
108
|
-
// ------------------
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Create the HTML template as a string
|
|
112
|
-
*/
|
|
113
|
-
private buildTemplateHtmlString() {
|
|
114
|
-
let placeholder = (this.gridOptions) ? (this.gridOptions.defaultFilterPlaceholder || '') : '';
|
|
115
|
-
if (this.columnFilter && this.columnFilter.placeholder) {
|
|
116
|
-
placeholder = this.columnFilter.placeholder;
|
|
117
|
-
}
|
|
118
|
-
return `<input type="text" class="form-control search-filter" placeholder="${placeholder}">`;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* From the html template string, create a DOM element
|
|
123
|
-
* @param filterTemplate
|
|
124
|
-
*/
|
|
125
|
-
private createDomElement(filterTemplate: string, searchTerm?: SearchTerm) {
|
|
126
|
-
const $headerElm = this.grid.getHeaderRowColumn(this.columnDef.id);
|
|
127
|
-
$($headerElm).empty();
|
|
128
|
-
|
|
129
|
-
// create the DOM element & add an ID and filter class
|
|
130
|
-
const $filterElm = $(filterTemplate);
|
|
131
|
-
|
|
132
|
-
$filterElm.val(searchTerm);
|
|
133
|
-
$filterElm.data('columnId', this.columnDef.id);
|
|
134
|
-
|
|
135
|
-
// append the new DOM element to the header row
|
|
136
|
-
if ($filterElm && typeof $filterElm.appendTo === 'function') {
|
|
137
|
-
$filterElm.appendTo($headerElm);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return $filterElm;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
|
|
4
|
-
// the appendTo="body" (necessary for SlickGrid filter) requires the body to be position relative like so
|
|
5
|
-
// <body style="position: relative">
|
|
6
|
-
@Component({
|
|
7
|
-
template: `
|
|
8
|
-
<ng-select class="no-style-select"
|
|
9
|
-
[items]="collection"
|
|
10
|
-
autofocus
|
|
11
|
-
bindValue="id"
|
|
12
|
-
bindLabel="name"
|
|
13
|
-
appendTo="body"
|
|
14
|
-
[clearable]="false"
|
|
15
|
-
(change)="onChange($event)"
|
|
16
|
-
[(ngModel)]="selectedId"
|
|
17
|
-
>
|
|
18
|
-
<ng-template ng-label-tmp ng-option-tmp let-item="item">
|
|
19
|
-
{{ item?.name }}
|
|
20
|
-
</ng-template>
|
|
21
|
-
</ng-select>`
|
|
22
|
-
})
|
|
23
|
-
export class EditorNgSelectComponent {
|
|
24
|
-
selectedId = '';
|
|
25
|
-
selectedItem: any;
|
|
26
|
-
collection?: any[]; // this will be filled by the collection of your column definition
|
|
27
|
-
onItemChanged = new Subject<any>(); // object
|
|
28
|
-
|
|
29
|
-
onChange(item: any) {
|
|
30
|
-
this.selectedItem = item;
|
|
31
|
-
this.onItemChanged.next(item);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
focus() {
|
|
35
|
-
// do a focus
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
|
|
4
|
-
// the appendTo="body" (necessary for SlickGrid filter) requires the body to be position relative like so
|
|
5
|
-
// <body style="position: relative">
|
|
6
|
-
@Component({
|
|
7
|
-
template: `
|
|
8
|
-
<ng-select class="custom no-style-select"
|
|
9
|
-
[items]="collection"
|
|
10
|
-
bindValue="id"
|
|
11
|
-
bindLabel="name"
|
|
12
|
-
appendTo="body"
|
|
13
|
-
[clearable]="false"
|
|
14
|
-
(change)="onChange($event)"
|
|
15
|
-
[(ngModel)]="selectedId"
|
|
16
|
-
>
|
|
17
|
-
<ng-template ng-label-tmp ng-option-tmp let-item="item">
|
|
18
|
-
{{ item?.name }}
|
|
19
|
-
</ng-template>
|
|
20
|
-
</ng-select>`
|
|
21
|
-
})
|
|
22
|
-
export class FilterNgSelectComponent {
|
|
23
|
-
selectedId = '';
|
|
24
|
-
selectedItem: any;
|
|
25
|
-
collection?: any[]; // this will be filled by the collection of your column definition
|
|
26
|
-
onItemChanged = new Subject<any>(); // object
|
|
27
|
-
|
|
28
|
-
onChange(item: any) {
|
|
29
|
-
this.selectedItem = item;
|
|
30
|
-
this.onItemChanged.next(item);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<div id="demo-container" class="container-fluid">
|
|
2
|
-
<h2>
|
|
3
|
-
{{title}}
|
|
4
|
-
<span class="float-end">
|
|
5
|
-
<a style="font-size: 18px"
|
|
6
|
-
target="_blank"
|
|
7
|
-
href="https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/examples/grid-additem.component.ts">
|
|
8
|
-
<span class="fa fa-link"></span> code
|
|
9
|
-
</a>
|
|
10
|
-
</span>
|
|
11
|
-
</h2>
|
|
12
|
-
<div class="subtitle"
|
|
13
|
-
[innerHTML]="subTitle"></div>
|
|
14
|
-
|
|
15
|
-
<div class="col-sm-12">
|
|
16
|
-
<span>
|
|
17
|
-
<label>Scroll: </label>
|
|
18
|
-
<div class="btn-group" role="group">
|
|
19
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="scroll-top-btn" (click)="scrollGridTop()">
|
|
20
|
-
<i class="fa fa-arrow-up"></i>
|
|
21
|
-
</button>
|
|
22
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="scroll-bottom-btn" (click)="scrollGridBottom()">
|
|
23
|
-
<i class="fa fa-arrow-down"></i>
|
|
24
|
-
</button>
|
|
25
|
-
</div>
|
|
26
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="add-new-item-top-btn"
|
|
27
|
-
(click)="addNewItem()">Add New Mocked Item</button>
|
|
28
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="add-new-item-bottom-btn"
|
|
29
|
-
(click)="addNewItem('bottom')">Add New Mocked Item (bottom)</button>
|
|
30
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="update-second-item-btn"
|
|
31
|
-
(click)="updateSecondItem()">Update 2nd Row Item with Random Duration</button>
|
|
32
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="highlight-row5-btn"
|
|
33
|
-
(click)="highlighFifthRow()">Highlight 5th Row</button>
|
|
34
|
-
<button class="btn btn-sm btn-outline-secondary" data-test="highlight-duration40-btn"
|
|
35
|
-
(click)="changeDurationBackgroundColor()">Highlight Rows with Duration over 40</button>
|
|
36
|
-
</span>
|
|
37
|
-
<hr />
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<div class="col-sm-12">
|
|
41
|
-
<angular-slickgrid gridId="grid11"
|
|
42
|
-
[columnDefinitions]="columnDefinitions"
|
|
43
|
-
[gridOptions]="gridOptions"
|
|
44
|
-
[dataset]="dataset"
|
|
45
|
-
(onAngularGridCreated)="angularGridReady($event.detail)">
|
|
46
|
-
</angular-slickgrid>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|