angular-slickgrid 4.1.4 → 4.2.0
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/.browserslistrc +12 -0
- package/.codecov.yml +17 -0
- package/.editorconfig +18 -0
- package/.eslintrc.json +50 -0
- package/.github/CODE_OF_CONDUCT.md +76 -0
- package/.github/FUNDING.yml +8 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +54 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +44 -0
- package/.github/renovate.json5 +26 -0
- package/.github/stale.yml +7 -0
- package/.github/workflows/main.yml +83 -0
- package/.vscode/extensions.json +9 -0
- package/.vscode/launch.json +72 -0
- package/.vscode/settings.json +7 -0
- package/.vscode/tasks.json +77 -0
- package/CHANGELOG.md +1172 -0
- package/LICENSE +20 -20
- package/README.md +182 -180
- package/angular.json +148 -0
- package/dist/LICENSE +20 -0
- package/dist/README.md +182 -0
- package/{angular-slickgrid.d.ts → dist/angular-slickgrid.d.ts} +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/constants.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/extensions/index.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/global-grid-options.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/index.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/gridOption.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/index.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/models/slickGrid.interface.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/angularUtil.service.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/bsDropdown.service.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/container.service.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/index.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/translater.service.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/services/utilities.d.ts +0 -0
- package/{app → dist/app}/modules/angular-slickgrid/slickgrid-config.d.ts +0 -0
- package/{esm2020 → dist/esm2020}/angular-slickgrid.mjs +0 -0
- package/dist/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +1171 -0
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/constants.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/extensions/index.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +2 -2
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/global-grid-options.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/index.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +1 -1
- package/dist/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +2 -0
- package/dist/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +2 -0
- package/dist/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +2 -0
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/models/index.mjs +1 -1
- package/dist/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +2 -0
- package/dist/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +2 -0
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +5 -5
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/angularUtil.service.mjs +4 -4
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +4 -4
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/container.service.mjs +4 -4
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/index.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/translater.service.mjs +4 -4
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/services/utilities.mjs +1 -1
- package/{esm2020 → dist/esm2020}/app/modules/angular-slickgrid/slickgrid-config.mjs +1 -1
- package/{esm2020 → dist/esm2020}/public_api.mjs +1 -1
- package/{fesm2015 → dist/fesm2015}/angular-slickgrid.mjs +25 -22
- package/dist/fesm2015/angular-slickgrid.mjs.map +1 -0
- package/{fesm2020 → dist/fesm2020}/angular-slickgrid.mjs +25 -22
- package/dist/fesm2020/angular-slickgrid.mjs.map +1 -0
- package/{i18n → dist/i18n}/en.json +89 -89
- package/{i18n → dist/i18n}/fr.json +90 -90
- package/dist/package.json +79 -0
- package/{public_api.d.ts → dist/public_api.d.ts} +0 -0
- package/global.d.ts +1 -0
- package/ngcc.config.js +13 -0
- package/package.json +121 -37
- 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 +83 -0
- package/src/app/app.component.html +160 -0
- package/src/app/app.component.scss +65 -0
- package/src/app/app.component.ts +10 -0
- package/src/app/app.module.ts +175 -0
- package/src/app/examples/custom-angularComponentEditor.ts +184 -0
- package/src/app/examples/custom-angularComponentFilter.ts +126 -0
- package/src/app/examples/custom-inputEditor.ts +124 -0
- package/src/app/examples/custom-inputFilter.ts +142 -0
- package/src/app/examples/custom-titleFormatter.component.ts +8 -0
- package/src/app/examples/editor-ng-select.component.ts +37 -0
- package/src/app/examples/filter-ng-select.component.ts +32 -0
- package/src/app/examples/grid-additem.component.html +48 -0
- package/src/app/examples/grid-additem.component.ts +272 -0
- package/src/app/examples/grid-angular.component.html +79 -0
- package/src/app/examples/grid-angular.component.scss +28 -0
- package/src/app/examples/grid-angular.component.ts +370 -0
- package/src/app/examples/grid-autoheight.component.html +52 -0
- package/src/app/examples/grid-autoheight.component.ts +147 -0
- package/src/app/examples/grid-basic.component.html +29 -0
- package/src/app/examples/grid-basic.component.ts +82 -0
- package/src/app/examples/grid-clientside.component.html +51 -0
- package/src/app/examples/grid-clientside.component.ts +293 -0
- package/src/app/examples/grid-colspan.component.html +39 -0
- package/src/app/examples/grid-colspan.component.scss +11 -0
- package/src/app/examples/grid-colspan.component.ts +155 -0
- package/src/app/examples/grid-composite-editor.component.html +79 -0
- package/src/app/examples/grid-composite-editor.component.scss +19 -0
- package/src/app/examples/grid-composite-editor.component.ts +948 -0
- package/src/app/examples/grid-contextmenu.component.html +62 -0
- package/src/app/examples/grid-contextmenu.component.scss +44 -0
- package/src/app/examples/grid-contextmenu.component.ts +473 -0
- package/src/app/examples/grid-custom-tooltip.component.html +25 -0
- package/src/app/examples/grid-custom-tooltip.component.scss +77 -0
- package/src/app/examples/grid-custom-tooltip.component.ts +483 -0
- package/src/app/examples/grid-draggrouping.component.html +93 -0
- package/src/app/examples/grid-draggrouping.component.ts +397 -0
- package/src/app/examples/grid-editor.component.html +88 -0
- package/src/app/examples/grid-editor.component.ts +699 -0
- package/src/app/examples/grid-formatter.component.html +26 -0
- package/src/app/examples/grid-formatter.component.ts +162 -0
- package/src/app/examples/grid-frozen.component.html +65 -0
- package/src/app/examples/grid-frozen.component.scss +11 -0
- package/src/app/examples/grid-frozen.component.ts +303 -0
- package/src/app/examples/grid-graphql-nopage.component.html +33 -0
- package/src/app/examples/grid-graphql-nopage.component.scss +9 -0
- package/src/app/examples/grid-graphql-nopage.component.ts +242 -0
- package/src/app/examples/grid-graphql.component.html +87 -0
- package/src/app/examples/grid-graphql.component.ts +304 -0
- package/src/app/examples/grid-grouping.component.html +80 -0
- package/src/app/examples/grid-grouping.component.ts +313 -0
- package/src/app/examples/grid-headerbutton.component.html +31 -0
- package/src/app/examples/grid-headerbutton.component.scss +10 -0
- package/src/app/examples/grid-headerbutton.component.ts +233 -0
- package/src/app/examples/grid-headermenu.component.html +31 -0
- package/src/app/examples/grid-headermenu.component.scss +25 -0
- package/src/app/examples/grid-headermenu.component.ts +159 -0
- package/src/app/examples/grid-localization.component.html +54 -0
- package/src/app/examples/grid-localization.component.ts +293 -0
- package/src/app/examples/grid-menu.component.html +37 -0
- package/src/app/examples/grid-menu.component.scss +28 -0
- package/src/app/examples/grid-menu.component.ts +229 -0
- package/src/app/examples/grid-odata.component.html +116 -0
- package/src/app/examples/grid-odata.component.ts +441 -0
- package/src/app/examples/grid-range.component.html +74 -0
- package/src/app/examples/grid-range.component.ts +291 -0
- package/src/app/examples/grid-remote.component.html +37 -0
- package/src/app/examples/grid-remote.component.ts +153 -0
- package/src/app/examples/grid-resize-by-content.component.html +62 -0
- package/src/app/examples/grid-resize-by-content.component.scss +19 -0
- package/src/app/examples/grid-resize-by-content.component.ts +780 -0
- package/src/app/examples/grid-rowdetail.component.html +35 -0
- package/src/app/examples/grid-rowdetail.component.ts +205 -0
- package/src/app/examples/grid-rowmove.component.html +49 -0
- package/src/app/examples/grid-rowmove.component.ts +234 -0
- package/src/app/examples/grid-rowselection.component.html +76 -0
- package/src/app/examples/grid-rowselection.component.ts +267 -0
- package/src/app/examples/grid-state.component.html +36 -0
- package/src/app/examples/grid-state.component.ts +259 -0
- package/src/app/examples/grid-tabs.component.html +35 -0
- package/src/app/examples/grid-tabs.component.ts +115 -0
- package/src/app/examples/grid-trading.component.html +58 -0
- package/src/app/examples/grid-trading.component.scss +49 -0
- package/src/app/examples/grid-trading.component.ts +319 -0
- package/src/app/examples/grid-tree-data-hierarchical.component.html +79 -0
- package/src/app/examples/grid-tree-data-hierarchical.component.scss +47 -0
- package/src/app/examples/grid-tree-data-hierarchical.component.ts +311 -0
- package/src/app/examples/grid-tree-data-parent-child.component.html +108 -0
- package/src/app/examples/grid-tree-data-parent-child.component.scss +10 -0
- package/src/app/examples/grid-tree-data-parent-child.component.ts +351 -0
- package/src/app/examples/home.component.html +41 -0
- package/src/app/examples/home.component.ts +9 -0
- package/src/app/examples/rowdetail-preload.component.ts +10 -0
- package/src/app/examples/rowdetail-view.component.html +36 -0
- package/src/app/examples/rowdetail-view.component.ts +54 -0
- package/src/app/examples/swt-common-grid-pagination.component.ts +156 -0
- package/src/app/examples/swt-common-grid-test.component.html +30 -0
- package/src/app/examples/swt-common-grid-test.component.ts +219 -0
- package/src/app/examples/swt-common-grid.component.ts +436 -0
- package/src/app/examples/swt-logger.service.ts +165 -0
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.html +4 -0
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +1395 -0
- package/src/app/modules/angular-slickgrid/constants.ts +97 -0
- package/src/app/modules/angular-slickgrid/extensions/index.ts +1 -0
- package/src/app/modules/angular-slickgrid/extensions/slickRowDetailView.ts +375 -0
- package/src/app/modules/angular-slickgrid/global-grid-options.ts +245 -0
- package/src/app/modules/angular-slickgrid/index.ts +11 -0
- package/src/app/modules/angular-slickgrid/models/angularComponentOutput.interface.ts +6 -0
- package/src/app/modules/angular-slickgrid/models/angularGridInstance.interface.ts +68 -0
- package/src/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.ts +37 -0
- package/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +12 -0
- package/src/app/modules/angular-slickgrid/models/index.ts +6 -0
- package/src/app/modules/angular-slickgrid/models/rowDetailView.interface.ts +33 -0
- package/src/app/modules/angular-slickgrid/models/slickGrid.interface.ts +7 -0
- package/src/app/modules/angular-slickgrid/modules/angular-slickgrid.module.ts +37 -0
- package/src/app/modules/angular-slickgrid/services/angularUtil.service.ts +48 -0
- package/src/app/modules/angular-slickgrid/services/bsDropdown.service.ts +142 -0
- package/src/app/modules/angular-slickgrid/services/container.service.ts +24 -0
- package/src/app/modules/angular-slickgrid/services/index.ts +5 -0
- package/src/app/modules/angular-slickgrid/services/translater.service.ts +38 -0
- package/src/app/modules/angular-slickgrid/services/utilities.ts +19 -0
- package/src/app/modules/angular-slickgrid/slickgrid-config.ts +10 -0
- package/src/app/slickgrid-custom-variables.scss +10 -0
- package/src/assets/.gitkeep +0 -0
- package/src/assets/data/collection_100_numbers.json +12 -0
- package/src/assets/data/collection_500_numbers.json +52 -0
- package/src/assets/data/countries.json +245 -0
- package/src/assets/data/country_names.json +245 -0
- package/src/assets/data/customers_100.json +102 -0
- package/src/assets/i18n/en.json +90 -0
- package/src/assets/i18n/fr.json +91 -0
- package/src/environments/environment.prod.ts +3 -0
- package/src/environments/environment.ts +8 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +18 -0
- package/src/main.ts +13 -0
- package/src/polyfills.ts +52 -0
- package/src/public_api.ts +1 -0
- package/src/styles.scss +66 -0
- package/src/typings.d.ts +10 -0
- package/tsconfig.app.json +25 -0
- package/tsconfig.json +40 -0
- package/tsconfig.spec.json +23 -0
- package/docs/assets/lib/multiple-select/README.md +0 -17
- package/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1168
- package/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -2
- package/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -2
- package/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -2
- package/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -2
- package/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +0 -2
- package/fesm2015/angular-slickgrid.mjs.map +0 -1
- package/fesm2020/angular-slickgrid.mjs.map +0 -1
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { AngularGridInstance, Column, ExtensionName, FieldType, Filters, Formatters, GridOption, unsubscribeAllObservables } from './../modules/angular-slickgrid';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { Subscription } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
@Component({
|
|
7
|
+
templateUrl: './grid-menu.component.html',
|
|
8
|
+
styleUrls: ['./grid-menu.component.scss'],
|
|
9
|
+
encapsulation: ViewEncapsulation.None,
|
|
10
|
+
})
|
|
11
|
+
export class GridMenuComponent implements OnInit, OnDestroy {
|
|
12
|
+
title = 'Example 9: Grid Menu Control';
|
|
13
|
+
subTitle = `
|
|
14
|
+
This example demonstrates using the <b>Slick.Controls.GridMenu</b> plugin to easily add a Grid Menu (aka hamburger menu) on the top right corner of the grid.
|
|
15
|
+
(<a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/Grid-Menu" target="_blank">Wiki docs</a>)
|
|
16
|
+
<br/>
|
|
17
|
+
<ul>
|
|
18
|
+
<li>You can change the Grid Menu icon, for example "fa-ellipsis-v" <span class="fa fa-ellipsis-v"></span> (which is shown in this example)</li>
|
|
19
|
+
<li>By default the Grid Menu shows all columns which you can show/hide them</li>
|
|
20
|
+
<li>You can configure multiple custom "commands" to show up in the Grid Menu and use the "onGridMenuCommand()" callback</li>
|
|
21
|
+
<li>Doing a "right + click" over any column header will also provide a way to show/hide a column (via the Column Picker Plugin)</li>
|
|
22
|
+
<li>You can change the icons of both picker via SASS variables as shown in this demo (check all SASS variables)</li>
|
|
23
|
+
<li><i class="fa fa-arrow-down"></i> You can also show the Grid Menu anywhere on your page</li>
|
|
24
|
+
</ul>
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
private subscriptions: Subscription[] = [];
|
|
28
|
+
angularGrid!: AngularGridInstance;
|
|
29
|
+
columnDefinitions!: Column[];
|
|
30
|
+
gridOptions!: GridOption;
|
|
31
|
+
dataset!: any[];
|
|
32
|
+
selectedLanguage: string;
|
|
33
|
+
|
|
34
|
+
constructor(private translate: TranslateService) {
|
|
35
|
+
// always start with English for Cypress E2E tests to be consistent
|
|
36
|
+
const defaultLang = 'en';
|
|
37
|
+
this.translate.use(defaultLang);
|
|
38
|
+
this.selectedLanguage = defaultLang;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
// also unsubscribe all Angular Subscriptions
|
|
43
|
+
this.subscriptions = unsubscribeAllObservables(this.subscriptions);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
ngOnInit(): void {
|
|
47
|
+
this.columnDefinitions = [
|
|
48
|
+
{ id: 'title', name: 'Title', field: 'title', nameKey: 'TITLE', filterable: true, type: FieldType.string },
|
|
49
|
+
{ id: 'duration', name: 'Duration', field: 'duration', nameKey: 'DURATION', sortable: true, filterable: true, type: FieldType.string },
|
|
50
|
+
{
|
|
51
|
+
id: 'percentComplete', name: '% Complete', field: 'percentComplete', nameKey: 'PERCENT_COMPLETE', sortable: true, filterable: true,
|
|
52
|
+
type: FieldType.number,
|
|
53
|
+
formatter: Formatters.percentCompleteBar,
|
|
54
|
+
filter: { model: Filters.compoundSlider, params: { hideSliderNumber: false } }
|
|
55
|
+
},
|
|
56
|
+
{ id: 'start', name: 'Start', field: 'start', nameKey: 'START', filterable: true, type: FieldType.string },
|
|
57
|
+
{ id: 'finish', name: 'Finish', field: 'finish', nameKey: 'FINISH', filterable: true, type: FieldType.string },
|
|
58
|
+
{
|
|
59
|
+
id: 'effort-driven', name: 'Completed', field: 'effortDriven', nameKey: 'COMPLETED', maxWidth: 80, formatter: Formatters.checkmark,
|
|
60
|
+
type: FieldType.boolean,
|
|
61
|
+
minWidth: 100,
|
|
62
|
+
sortable: true,
|
|
63
|
+
filterable: true,
|
|
64
|
+
filter: {
|
|
65
|
+
collection: [{ value: '', label: '' }, { value: true, label: 'true' }, { value: false, label: 'false' }],
|
|
66
|
+
model: Filters.singleSelect
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
this.gridOptions = {
|
|
72
|
+
columnPicker: {
|
|
73
|
+
hideForceFitButton: true,
|
|
74
|
+
hideSyncResizeButton: true,
|
|
75
|
+
onColumnsChanged: (e, args) => {
|
|
76
|
+
console.log('Column selection changed from Column Picker, visible columns: ', args.visibleColumns);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
enableAutoResize: true,
|
|
80
|
+
enableGridMenu: true,
|
|
81
|
+
autoResize: {
|
|
82
|
+
container: '#demo-container',
|
|
83
|
+
rightPadding: 10
|
|
84
|
+
},
|
|
85
|
+
enableFiltering: true,
|
|
86
|
+
enableCellNavigation: true,
|
|
87
|
+
gridMenu: {
|
|
88
|
+
// we could disable the menu entirely by returning false depending on some code logic
|
|
89
|
+
menuUsabilityOverride: (args) => true,
|
|
90
|
+
|
|
91
|
+
// all titles optionally support translation keys, if you wish to use that feature then use the title properties with the 'Key' suffix (e.g: titleKey)
|
|
92
|
+
// example "commandTitle" for a plain string OR "commandTitleKey" to use a translation key
|
|
93
|
+
commandTitleKey: 'CUSTOM_COMMANDS',
|
|
94
|
+
iconCssClass: 'fa fa-ellipsis-v', // defaults to "fa-bars"
|
|
95
|
+
hideForceFitButton: true,
|
|
96
|
+
hideSyncResizeButton: true,
|
|
97
|
+
hideToggleFilterCommand: false, // show/hide internal custom commands
|
|
98
|
+
menuWidth: 17,
|
|
99
|
+
resizeOnShowHeaderRow: true,
|
|
100
|
+
commandItems: [
|
|
101
|
+
// add Custom Items Commands which will be appended to the existing internal custom items
|
|
102
|
+
// you cannot override an internal items but you can hide them and create your own
|
|
103
|
+
// also note that the internal custom commands are in the positionOrder range of 50-60,
|
|
104
|
+
// if you want yours at the bottom then start with 61, below 50 will make your command(s) show on top
|
|
105
|
+
{
|
|
106
|
+
iconCssClass: 'fa fa-question-circle',
|
|
107
|
+
titleKey: 'HELP',
|
|
108
|
+
disabled: false,
|
|
109
|
+
command: 'help',
|
|
110
|
+
positionOrder: 90,
|
|
111
|
+
cssClass: 'bold', // container css class
|
|
112
|
+
textCssClass: 'blue' // just the text css class
|
|
113
|
+
},
|
|
114
|
+
// you can pass divider as a string or an object with a boolean (if sorting by position, then use the object)
|
|
115
|
+
// note you should use the "divider" string only when items array is already sorted and positionOrder are not specified
|
|
116
|
+
{ divider: true, command: '', positionOrder: 89 },
|
|
117
|
+
// 'divider',
|
|
118
|
+
{
|
|
119
|
+
title: 'Command 1',
|
|
120
|
+
command: 'command1',
|
|
121
|
+
positionOrder: 91,
|
|
122
|
+
cssClass: 'orange',
|
|
123
|
+
iconCssClass: 'fa fa-warning',
|
|
124
|
+
// you can use the "action" callback and/or use "onCallback" callback from the grid options, they both have the same arguments
|
|
125
|
+
action: (e, args) => alert(args.command),
|
|
126
|
+
itemUsabilityOverride: (args) => {
|
|
127
|
+
// for example disable the command if there's any hidden column(s)
|
|
128
|
+
if (args && Array.isArray(args.columns)) {
|
|
129
|
+
return args.columns.length === args.visibleColumns.length;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
title: 'Command 2',
|
|
136
|
+
command: 'command2',
|
|
137
|
+
positionOrder: 92,
|
|
138
|
+
cssClass: 'red', // container css class
|
|
139
|
+
textCssClass: 'italic', // just the text css class
|
|
140
|
+
action: (e, args) => alert(args.command),
|
|
141
|
+
itemVisibilityOverride: (args) => {
|
|
142
|
+
// for example hide this command from the menu if there's any filter entered
|
|
143
|
+
if (this.angularGrid) {
|
|
144
|
+
return this.isObjectEmpty(this.angularGrid.filterService.getColumnFilters());
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
title: 'Disabled command',
|
|
151
|
+
disabled: true,
|
|
152
|
+
command: 'disabled-command',
|
|
153
|
+
positionOrder: 98
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
// you can use the "action" callback and/or use "onCallback" callback from the grid options, they both have the same arguments
|
|
157
|
+
onCommand: (e, args) => {
|
|
158
|
+
if (args.command === 'help') {
|
|
159
|
+
alert('Please help!!!');
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
onColumnsChanged: (e, args) => {
|
|
163
|
+
console.log('Column selection changed from Grid Menu, visible columns: ', args.visibleColumns);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
enableTranslate: true,
|
|
167
|
+
i18n: this.translate
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
this.getData();
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
angularGridReady(angularGrid: AngularGridInstance) {
|
|
174
|
+
this.angularGrid = angularGrid;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
getData() {
|
|
178
|
+
// Set up some test columns.
|
|
179
|
+
const mockDataset = [];
|
|
180
|
+
for (let i = 0; i < 500; i++) {
|
|
181
|
+
mockDataset[i] = {
|
|
182
|
+
id: i,
|
|
183
|
+
title: 'Task ' + i,
|
|
184
|
+
phone: this.generatePhoneNumber(),
|
|
185
|
+
duration: Math.round(Math.random() * 25) + ' days',
|
|
186
|
+
percentComplete: Math.round(Math.random() * 100),
|
|
187
|
+
start: '01/01/2009',
|
|
188
|
+
finish: '01/05/2009',
|
|
189
|
+
effortDriven: (i % 5 === 0)
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
this.dataset = mockDataset;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
generatePhoneNumber() {
|
|
196
|
+
let phone = '';
|
|
197
|
+
for (let i = 0; i < 10; i++) {
|
|
198
|
+
phone += Math.round(Math.random() * 9) + '';
|
|
199
|
+
}
|
|
200
|
+
return phone;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
switchLanguage() {
|
|
204
|
+
const nextLanguage = (this.selectedLanguage === 'en') ? 'fr' : 'en';
|
|
205
|
+
this.subscriptions.push(
|
|
206
|
+
this.translate.use(nextLanguage).subscribe(() => {
|
|
207
|
+
this.selectedLanguage = nextLanguage;
|
|
208
|
+
})
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
toggleGridMenu(e: MouseEvent) {
|
|
213
|
+
if (this.angularGrid && this.angularGrid.extensionService) {
|
|
214
|
+
const gridMenuInstance = this.angularGrid.extensionService.getExtensionInstanceByName(ExtensionName.gridMenu);
|
|
215
|
+
// open the external button Grid Menu, you can also optionally pass Grid Menu options as 2nd argument
|
|
216
|
+
// for example we want to align our external button on the right without affecting the menu within the grid which will stay aligned on the left
|
|
217
|
+
gridMenuInstance.showGridMenu(e, { dropSide: 'right' });
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
private isObjectEmpty(obj: any) {
|
|
222
|
+
for (const key in obj) {
|
|
223
|
+
if (obj.hasOwnProperty(key) && obj[key] !== '') {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
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-odata.component.ts">
|
|
8
|
+
<span class="fa fa-link"></span> code
|
|
9
|
+
</a>
|
|
10
|
+
</span>
|
|
11
|
+
</h2>
|
|
12
|
+
<div class="row">
|
|
13
|
+
<div class="col-sm-9">
|
|
14
|
+
<div class="subtitle" [innerHTML]="subTitle"></div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="col-sm-3">
|
|
17
|
+
<div class="alert alert-danger" *ngIf="errorStatus" data-test="error-status">
|
|
18
|
+
<em><strong>Backend Error:</strong> <span [innerHTML]="errorStatus"></span></em>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="row">
|
|
24
|
+
<div class="col-sm-2">
|
|
25
|
+
<div [class]="status.class" role="alert" data-test="status">
|
|
26
|
+
<strong>Status: </strong> {{status.text}}
|
|
27
|
+
<span [hidden]="!processing">
|
|
28
|
+
<i class="fa fa-refresh fa-spin fa-lg fa-fw"></i>
|
|
29
|
+
</span>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="col-sm-10">
|
|
33
|
+
<div class="alert alert-info" data-test="alert-odata-query">
|
|
34
|
+
<strong>OData Query:</strong> <span data-test="odata-query-result">{{odataQuery}}</span>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="row">
|
|
40
|
+
<div class="col-sm-4">
|
|
41
|
+
<button class="btn btn-outline-secondary btn-sm" data-test="set-dynamic-filter"
|
|
42
|
+
(click)="setFiltersDynamically()">
|
|
43
|
+
Set Filters Dynamically
|
|
44
|
+
</button>
|
|
45
|
+
<button class="btn btn-outline-secondary btn-sm" data-test="set-dynamic-sorting"
|
|
46
|
+
(click)="setSortingDynamically()">
|
|
47
|
+
Set Sorting Dynamically
|
|
48
|
+
</button>
|
|
49
|
+
<br>
|
|
50
|
+
<span *ngIf="metrics">
|
|
51
|
+
<b>Metrics:</b> {{metrics.endTime | date: 'yyyy-MM-dd hh:mm aaaaa\'m\''}} | {{metrics.executionTime}}ms
|
|
52
|
+
| {{metrics.totalItemCount}} items
|
|
53
|
+
</span>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="col-sm-8">
|
|
57
|
+
<label>OData Version: </label>
|
|
58
|
+
<span data-test="radioVersion">
|
|
59
|
+
<label class="radio-inline control-label" for="radio2">
|
|
60
|
+
<input type="radio" name="inlineRadioOptions" data-test="version2" id="radio2" checked [value]="2"
|
|
61
|
+
(change)="setOdataVersion(2)"> 2
|
|
62
|
+
</label>
|
|
63
|
+
<label class="radio-inline control-label" for="radio4">
|
|
64
|
+
<input type="radio" name="inlineRadioOptions" data-test="version4" id="radio4" [value]="4"
|
|
65
|
+
(change)="setOdataVersion(4)"> 4
|
|
66
|
+
</label>
|
|
67
|
+
</span>
|
|
68
|
+
<label class="checkbox-inline control-label" for="enableCount" style="margin-left: 20px">
|
|
69
|
+
<input type="checkbox" id="enableCount" data-test="enable-count" [checked]="isCountEnabled"
|
|
70
|
+
(click)="changeCountEnableFlag()">
|
|
71
|
+
<span style="font-weight: bold">Enable Count</span> (add to OData query)
|
|
72
|
+
</label>
|
|
73
|
+
<label class="checkbox-inline control-label" for="enableSelect" style="margin-left: 20px">
|
|
74
|
+
<input type="checkbox" id="enableSelect" data-test="enable-select" [checked]="isSelectEnabled"
|
|
75
|
+
(click)="changeEnableSelectFlag()">
|
|
76
|
+
<span style="font-weight: bold">Enable Select</span> (add to OData query)
|
|
77
|
+
</label>
|
|
78
|
+
<label class="checkbox-inline control-label" for="enableExpand" style="margin-left: 20px">
|
|
79
|
+
<input type="checkbox" id="enableExpand" data-test="enable-expand" [checked]="isExpandEnabled"
|
|
80
|
+
(click)="changeEnableExpandFlag()">
|
|
81
|
+
<span style="font-weight: bold">Enable Expand</span> (add to OData query)
|
|
82
|
+
</label>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="row mt-2 mb-1">
|
|
86
|
+
<div class="col-md-12">
|
|
87
|
+
<button class="btn btn-outline-danger btn-sm" data-test="throw-page-error-btn"
|
|
88
|
+
(click)="throwPageChangeError()">
|
|
89
|
+
<span>Throw Error Going to Last Page... </span>
|
|
90
|
+
<i class="mdi mdi-page-last"></i>
|
|
91
|
+
</button>
|
|
92
|
+
|
|
93
|
+
<span class="ms-2">
|
|
94
|
+
<label>Programmatically go to first/last page:</label>
|
|
95
|
+
<button class="btn btn-outline-secondary btn-xs" data-test="goto-first-page" (click)="goToFirstPage()">
|
|
96
|
+
<i class="fa fa-caret-left fa-lg"></i>
|
|
97
|
+
</button>
|
|
98
|
+
<button class="btn btn-outline-secondary btn-xs" data-test="goto-last-page" (click)="goToLastPage()">
|
|
99
|
+
<i class="fa fa-caret-right fa-lg"></i>
|
|
100
|
+
</button>
|
|
101
|
+
</span>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<angular-slickgrid gridId="grid5"
|
|
106
|
+
[columnDefinitions]="columnDefinitions"
|
|
107
|
+
[gridOptions]="gridOptions"
|
|
108
|
+
[paginationOptions]="paginationOptions"
|
|
109
|
+
[dataset]="dataset"
|
|
110
|
+
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
111
|
+
(onGridStateChanged)="gridStateChanged($event.detail)"
|
|
112
|
+
(onBeforeSort)="handleOnBeforeSort($event)"
|
|
113
|
+
(onBeforeSearchChange)="handleOnBeforeSearchChange($event)"
|
|
114
|
+
(onBeforePaginationChange)="handleOnBeforePaginationChange($event)">
|
|
115
|
+
</angular-slickgrid>
|
|
116
|
+
</div>
|