slickgrid-react 5.14.1 → 9.0.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/README.md +12 -42
- package/dist/{types/components → components}/slickgrid-react.d.ts +26 -22
- package/dist/{esm/components → components}/slickgrid-react.js +367 -327
- package/dist/components/slickgrid-react.js.map +1 -0
- package/dist/{types/components → components}/slickgridReactProps.d.ts +19 -19
- package/dist/components/slickgridReactProps.js.map +1 -0
- package/dist/{types/constants.d.ts → constants.d.ts} +0 -1
- package/dist/constants.js +89 -0
- package/dist/constants.js.map +1 -0
- package/dist/contexts/i18nextContext.d.ts +5 -0
- package/dist/contexts/i18nextContext.js +5 -0
- package/dist/contexts/i18nextContext.js.map +1 -0
- package/dist/{types/extensions → extensions}/slickRowDetailView.d.ts +3 -4
- package/dist/{esm/extensions → extensions}/slickRowDetailView.js +35 -43
- package/dist/extensions/slickRowDetailView.js.map +1 -0
- package/dist/{types/global-grid-options.d.ts → global-grid-options.d.ts} +1 -2
- package/dist/{esm/global-grid-options.js → global-grid-options.js} +19 -19
- package/dist/global-grid-options.js.map +1 -0
- package/dist/i18n/en/translation.json +109 -0
- package/dist/i18n/fr/translation.json +110 -0
- package/dist/{types/index.d.ts → index.d.ts} +6 -6
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/{types/models → models}/gridOption.interface.d.ts +3 -4
- package/dist/models/gridOption.interface.js.map +1 -0
- package/dist/models/i18next.interface.d.ts +27 -0
- package/dist/models/i18next.interface.js +2 -0
- package/dist/models/i18next.interface.js.map +1 -0
- package/dist/models/index.d.ts +7 -0
- package/dist/models/index.js.map +1 -0
- package/dist/{types/models → models}/reactComponentOutput.interface.d.ts +0 -1
- package/dist/models/reactComponentOutput.interface.js.map +1 -0
- package/dist/{types/models → models}/rowDetailView.interface.d.ts +1 -2
- package/dist/models/rowDetailView.interface.js.map +1 -0
- package/dist/{types/models → models}/slickgridReactInstance.interface.d.ts +0 -3
- package/dist/models/slickgridReactInstance.interface.js.map +1 -0
- package/dist/{types/models → models}/viewModelBindableData.interface.d.ts +1 -2
- package/dist/models/viewModelBindableData.interface.js.map +1 -0
- package/dist/{types/models → models}/viewModelBindableInputData.interface.d.ts +1 -2
- package/dist/models/viewModelBindableInputData.interface.js.map +1 -0
- package/dist/{types/services → services}/container.service.d.ts +0 -1
- package/dist/{esm/services → services}/container.service.js +1 -3
- package/dist/services/container.service.js.map +1 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +4 -0
- package/dist/services/index.js.map +1 -0
- package/dist/{types/services → services}/reactUtils.d.ts +0 -1
- package/dist/{esm/services → services}/reactUtils.js +4 -5
- package/dist/services/reactUtils.js.map +1 -0
- package/dist/{types/services → services}/singletons.d.ts +1 -2
- package/dist/{esm/services → services}/singletons.js +1 -1
- package/dist/services/singletons.js.map +1 -0
- package/dist/{types/services/translater.service.d.ts → services/translaterI18Next.service.d.ts} +5 -3
- package/dist/{esm/services/translater.service.js → services/translaterI18Next.service.js} +9 -8
- package/dist/services/translaterI18Next.service.js.map +1 -0
- package/dist/{types/services → services}/utilities.d.ts +0 -1
- package/dist/{esm/services → services}/utilities.js +1 -1
- package/dist/services/utilities.js.map +1 -0
- package/dist/slickgrid-config.d.ts +5 -0
- package/dist/slickgrid-config.js +8 -0
- package/dist/slickgrid-config.js.map +1 -0
- package/package.json +15 -101
- package/src/assets/locales/en/translation.json +109 -0
- package/src/assets/locales/fr/translation.json +110 -0
- package/src/{slickgrid-react/components → components}/slickgrid-react.tsx +365 -240
- package/src/{slickgrid-react/components → components}/slickgridReactProps.ts +72 -73
- package/src/{slickgrid-react/constants.ts → constants.ts} +11 -5
- package/src/contexts/i18nextContext.ts +7 -0
- package/src/{slickgrid-react/extensions → extensions}/slickRowDetailView.ts +38 -36
- package/src/{slickgrid-react/global-grid-options.ts → global-grid-options.ts} +18 -16
- package/src/index.ts +21 -0
- package/src/{slickgrid-react/models → models}/gridOption.interface.ts +7 -4
- package/src/models/i18next.interface.ts +34 -0
- package/src/models/index.ts +7 -0
- package/src/{slickgrid-react/models → models}/rowDetailView.interface.ts +1 -1
- package/src/{slickgrid-react/models → models}/slickgridReactInstance.interface.ts +1 -4
- package/src/{slickgrid-react/models → models}/viewModelBindableData.interface.ts +1 -1
- package/src/{slickgrid-react/models → models}/viewModelBindableInputData.interface.ts +1 -1
- package/src/services/index.ts +3 -0
- package/src/{slickgrid-react/services → services}/reactUtils.ts +14 -5
- package/src/{slickgrid-react/services → services}/singletons.ts +2 -1
- package/src/{slickgrid-react/services/translater.service.ts → services/translaterI18Next.service.ts} +12 -6
- package/src/slickgrid-config.ts +10 -0
- package/src/vite-env.d.ts +1 -0
- package/dist/cjs/components/slickgrid-react.js +0 -1375
- package/dist/cjs/components/slickgrid-react.js.map +0 -1
- package/dist/cjs/components/slickgridReactProps.js +0 -3
- package/dist/cjs/components/slickgridReactProps.js.map +0 -1
- package/dist/cjs/constants.js +0 -92
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/extensions/slickRowDetailView.js +0 -345
- package/dist/cjs/extensions/slickRowDetailView.js.map +0 -1
- package/dist/cjs/global-grid-options.js +0 -281
- package/dist/cjs/global-grid-options.js.map +0 -1
- package/dist/cjs/index.js +0 -28
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/models/gridOption.interface.js +0 -3
- package/dist/cjs/models/gridOption.interface.js.map +0 -1
- package/dist/cjs/models/index.js +0 -3
- package/dist/cjs/models/index.js.map +0 -1
- package/dist/cjs/models/reactComponentOutput.interface.js +0 -3
- package/dist/cjs/models/reactComponentOutput.interface.js.map +0 -1
- package/dist/cjs/models/rowDetailView.interface.js +0 -3
- package/dist/cjs/models/rowDetailView.interface.js.map +0 -1
- package/dist/cjs/models/slickgridReactInstance.interface.js +0 -3
- package/dist/cjs/models/slickgridReactInstance.interface.js.map +0 -1
- package/dist/cjs/models/viewModelBindableData.interface.js +0 -3
- package/dist/cjs/models/viewModelBindableData.interface.js.map +0 -1
- package/dist/cjs/models/viewModelBindableInputData.interface.js +0 -3
- package/dist/cjs/models/viewModelBindableInputData.interface.js.map +0 -1
- package/dist/cjs/services/container.service.js +0 -16
- package/dist/cjs/services/container.service.js.map +0 -1
- package/dist/cjs/services/index.js +0 -20
- package/dist/cjs/services/index.js.map +0 -1
- package/dist/cjs/services/reactUtils.js +0 -26
- package/dist/cjs/services/reactUtils.js.map +0 -1
- package/dist/cjs/services/singletons.js +0 -10
- package/dist/cjs/services/singletons.js.map +0 -1
- package/dist/cjs/services/translater.service.js +0 -41
- package/dist/cjs/services/translater.service.js.map +0 -1
- package/dist/cjs/services/utilities.js +0 -20
- package/dist/cjs/services/utilities.js.map +0 -1
- package/dist/cjs/slickgrid-config.js +0 -11
- package/dist/cjs/slickgrid-config.js.map +0 -1
- package/dist/esm/components/slickgrid-react.js.map +0 -1
- package/dist/esm/components/slickgridReactProps.js.map +0 -1
- package/dist/esm/constants.js +0 -88
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/extensions/slickRowDetailView.js.map +0 -1
- package/dist/esm/global-grid-options.js.map +0 -1
- package/dist/esm/index.js +0 -8
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/models/gridOption.interface.js.map +0 -1
- package/dist/esm/models/index.js.map +0 -1
- package/dist/esm/models/reactComponentOutput.interface.js.map +0 -1
- package/dist/esm/models/rowDetailView.interface.js.map +0 -1
- package/dist/esm/models/slickgridReactInstance.interface.js.map +0 -1
- package/dist/esm/models/viewModelBindableData.interface.js.map +0 -1
- package/dist/esm/models/viewModelBindableInputData.interface.js.map +0 -1
- package/dist/esm/services/container.service.js.map +0 -1
- package/dist/esm/services/index.js +0 -4
- package/dist/esm/services/index.js.map +0 -1
- package/dist/esm/services/reactUtils.js.map +0 -1
- package/dist/esm/services/singletons.js.map +0 -1
- package/dist/esm/services/translater.service.js.map +0 -1
- package/dist/esm/services/utilities.js.map +0 -1
- package/dist/esm/slickgrid-config.js +0 -7
- package/dist/esm/slickgrid-config.js.map +0 -1
- package/dist/types/components/slickgrid-react.d.ts.map +0 -1
- package/dist/types/components/slickgridReactProps.d.ts.map +0 -1
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/extensions/slickRowDetailView.d.ts.map +0 -1
- package/dist/types/global-grid-options.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/models/gridOption.interface.d.ts.map +0 -1
- package/dist/types/models/index.d.ts +0 -7
- package/dist/types/models/index.d.ts.map +0 -1
- package/dist/types/models/reactComponentOutput.interface.d.ts.map +0 -1
- package/dist/types/models/rowDetailView.interface.d.ts.map +0 -1
- package/dist/types/models/slickgridReactInstance.interface.d.ts.map +0 -1
- package/dist/types/models/viewModelBindableData.interface.d.ts.map +0 -1
- package/dist/types/models/viewModelBindableInputData.interface.d.ts.map +0 -1
- package/dist/types/services/container.service.d.ts.map +0 -1
- package/dist/types/services/index.d.ts +0 -4
- package/dist/types/services/index.d.ts.map +0 -1
- package/dist/types/services/reactUtils.d.ts.map +0 -1
- package/dist/types/services/singletons.d.ts.map +0 -1
- package/dist/types/services/translater.service.d.ts.map +0 -1
- package/dist/types/services/utilities.d.ts.map +0 -1
- package/dist/types/slickgrid-config.d.ts +0 -6
- package/dist/types/slickgrid-config.d.ts.map +0 -1
- package/src/slickgrid-react/index.ts +0 -29
- package/src/slickgrid-react/models/index.ts +0 -6
- package/src/slickgrid-react/services/index.ts +0 -3
- package/src/slickgrid-react/slickgrid-config.ts +0 -10
- /package/dist/{esm/components → components}/slickgridReactProps.js +0 -0
- /package/dist/{esm/models → models}/gridOption.interface.js +0 -0
- /package/dist/{esm/models → models}/index.js +0 -0
- /package/dist/{esm/models → models}/reactComponentOutput.interface.js +0 -0
- /package/dist/{esm/models → models}/rowDetailView.interface.js +0 -0
- /package/dist/{esm/models → models}/slickgridReactInstance.interface.js +0 -0
- /package/dist/{esm/models → models}/viewModelBindableData.interface.js +0 -0
- /package/dist/{esm/models → models}/viewModelBindableInputData.interface.js +0 -0
- /package/src/{slickgrid-react/models → models}/reactComponentOutput.interface.ts +0 -0
- /package/src/{slickgrid-react/services → services}/container.service.ts +0 -0
- /package/src/{slickgrid-react/services → services}/utilities.ts +0 -0
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { addToArrayWhenNotExists, createDomElement, SlickEventData, SlickRowSelectionModel, unsubscribeAll, } from '@slickgrid-universal/common';
|
|
2
2
|
import { SlickRowDetailView as UniversalSlickRowDetailView } from '@slickgrid-universal/row-detail-view-plugin';
|
|
3
|
-
import { createReactComponentDynamically } from '../services/reactUtils';
|
|
3
|
+
import { createReactComponentDynamically } from '../services/reactUtils.js';
|
|
4
4
|
const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
|
|
5
5
|
const PRELOAD_CONTAINER_PREFIX = 'container_loading';
|
|
6
6
|
// interface SRDV extends React.Component<Props, State>, UniversalSlickRowDetailView {}s
|
|
7
7
|
export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
8
|
+
eventPubSubService;
|
|
9
|
+
_component;
|
|
10
|
+
_preloadComponent;
|
|
11
|
+
_preloadRoot;
|
|
12
|
+
_views = [];
|
|
13
|
+
_subscriptions = [];
|
|
14
|
+
_userProcessFn;
|
|
15
|
+
gridContainerElement;
|
|
16
|
+
_root;
|
|
8
17
|
constructor(eventPubSubService) {
|
|
9
18
|
super(eventPubSubService);
|
|
10
19
|
this.eventPubSubService = eventPubSubService;
|
|
11
|
-
this._views = [];
|
|
12
|
-
this._subscriptions = [];
|
|
13
20
|
}
|
|
14
21
|
get addonOptions() {
|
|
15
22
|
return this.getOptions();
|
|
@@ -18,8 +25,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
18
25
|
return this.gridOptions.datasetIdPropertyName || 'id';
|
|
19
26
|
}
|
|
20
27
|
get gridOptions() {
|
|
21
|
-
|
|
22
|
-
return (((_a = this._grid) === null || _a === void 0 ? void 0 : _a.getOptions()) || {});
|
|
28
|
+
return (this._grid?.getOptions() || {});
|
|
23
29
|
}
|
|
24
30
|
get rowDetailViewOptions() {
|
|
25
31
|
return this.gridOptions.rowDetailView;
|
|
@@ -47,15 +53,14 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
47
53
|
this._grid = grid;
|
|
48
54
|
super.init(this._grid);
|
|
49
55
|
this.gridContainerElement = grid.getContainerNode();
|
|
50
|
-
this.register(grid
|
|
56
|
+
this.register(grid?.getSelectionModel());
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
53
59
|
* Create the plugin before the Grid creation, else it will behave oddly.
|
|
54
60
|
* Mostly because the column definitions might change after the grid creation
|
|
55
61
|
*/
|
|
56
62
|
register(rowSelectionPlugin) {
|
|
57
|
-
|
|
58
|
-
if (typeof ((_a = this.gridOptions.rowDetailView) === null || _a === void 0 ? void 0 : _a.process) === 'function') {
|
|
63
|
+
if (typeof this.gridOptions.rowDetailView?.process === 'function') {
|
|
59
64
|
// we need to keep the user "process" method and replace it with our own execution method
|
|
60
65
|
// we do this because when we get the item detail, we need to call "onAsyncResponse.notify" for the plugin to work
|
|
61
66
|
this._userProcessFn = this.gridOptions.rowDetailView.process; // keep user's process method
|
|
@@ -64,15 +69,15 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
64
69
|
else {
|
|
65
70
|
throw new Error('[Slickgrid-React] You need to provide a "process" function for the Row Detail Extension to work properly');
|
|
66
71
|
}
|
|
67
|
-
if (this._grid &&
|
|
72
|
+
if (this._grid && this.gridOptions?.rowDetailView) {
|
|
68
73
|
// load the Preload & RowDetail Templates (could be straight HTML or React Components)
|
|
69
74
|
// when those are React Components, we need to create View Component & provide the html containers to the Plugin (preTemplate/postTemplate methods)
|
|
70
75
|
if (!this.gridOptions.rowDetailView.preTemplate) {
|
|
71
|
-
this._preloadComponent =
|
|
76
|
+
this._preloadComponent = this.gridOptions?.rowDetailView?.preloadComponent;
|
|
72
77
|
this.addonOptions.preTemplate = () => createDomElement('div', { className: `${PRELOAD_CONTAINER_PREFIX}` });
|
|
73
78
|
}
|
|
74
79
|
if (!this.gridOptions.rowDetailView.postTemplate) {
|
|
75
|
-
this._component =
|
|
80
|
+
this._component = this.gridOptions?.rowDetailView?.viewComponent;
|
|
76
81
|
this.addonOptions.postTemplate = (itemDetail) => createDomElement('div', { className: `${ROW_DETAIL_CONTAINER_PREFIX}${itemDetail[this.datasetIdPropName]}` });
|
|
77
82
|
}
|
|
78
83
|
if (this._grid && this.gridOptions) {
|
|
@@ -87,61 +92,53 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
87
92
|
this.rowDetailViewOptions.onExtensionRegistered(this);
|
|
88
93
|
}
|
|
89
94
|
this._eventHandler.subscribe(this.onAsyncResponse, (event, args) => {
|
|
90
|
-
|
|
91
|
-
if (typeof ((_a = this.rowDetailViewOptions) === null || _a === void 0 ? void 0 : _a.onAsyncResponse) === 'function') {
|
|
95
|
+
if (typeof this.rowDetailViewOptions?.onAsyncResponse === 'function') {
|
|
92
96
|
this.rowDetailViewOptions.onAsyncResponse(event, args);
|
|
93
97
|
}
|
|
94
98
|
});
|
|
95
99
|
this._eventHandler.subscribe(this.onAsyncEndUpdate, async (event, args) => {
|
|
96
|
-
var _a;
|
|
97
100
|
// dispose preload if exists
|
|
98
|
-
|
|
101
|
+
this._preloadRoot?.unmount();
|
|
99
102
|
// triggers after backend called "onAsyncResponse.notify()"
|
|
100
103
|
// because of the preload destroy above, we need a small delay to make sure the DOM element is ready to render the Row Detail
|
|
101
104
|
queueMicrotask(() => {
|
|
102
|
-
|
|
103
|
-
this.
|
|
104
|
-
if (typeof ((_a = this.rowDetailViewOptions) === null || _a === void 0 ? void 0 : _a.onAsyncEndUpdate) === 'function') {
|
|
105
|
+
this.renderViewModel(args?.item);
|
|
106
|
+
if (typeof this.rowDetailViewOptions?.onAsyncEndUpdate === 'function') {
|
|
105
107
|
this.rowDetailViewOptions.onAsyncEndUpdate(event, args);
|
|
106
108
|
}
|
|
107
109
|
});
|
|
108
110
|
});
|
|
109
111
|
this._eventHandler.subscribe(this.onAfterRowDetailToggle, async (event, args) => {
|
|
110
|
-
var _a;
|
|
111
112
|
// display preload template & re-render all the other Detail Views after toggling
|
|
112
113
|
// the preload View will eventually go away once the data gets loaded after the "onAsyncEndUpdate" event
|
|
113
114
|
this.renderPreloadView(args.item);
|
|
114
|
-
if (typeof
|
|
115
|
+
if (typeof this.rowDetailViewOptions?.onAfterRowDetailToggle === 'function') {
|
|
115
116
|
this.rowDetailViewOptions.onAfterRowDetailToggle(event, args);
|
|
116
117
|
}
|
|
117
118
|
});
|
|
118
119
|
this._eventHandler.subscribe(this.onBeforeRowDetailToggle, (event, args) => {
|
|
119
|
-
var _a;
|
|
120
120
|
// before toggling row detail, we need to create View Component if it doesn't exist
|
|
121
121
|
this.handleOnBeforeRowDetailToggle(event, args);
|
|
122
|
-
if (typeof
|
|
122
|
+
if (typeof this.rowDetailViewOptions?.onBeforeRowDetailToggle === 'function') {
|
|
123
123
|
return this.rowDetailViewOptions.onBeforeRowDetailToggle(event, args);
|
|
124
124
|
}
|
|
125
125
|
return true;
|
|
126
126
|
});
|
|
127
127
|
this._eventHandler.subscribe(this.onRowBackToViewportRange, async (event, args) => {
|
|
128
|
-
var _a;
|
|
129
128
|
// when row is back to viewport range, we will re-render the View Component(s)
|
|
130
129
|
this.handleOnRowBackToViewportRange(event, args);
|
|
131
|
-
if (typeof
|
|
130
|
+
if (typeof this.rowDetailViewOptions?.onRowBackToViewportRange === 'function') {
|
|
132
131
|
this.rowDetailViewOptions.onRowBackToViewportRange(event, args);
|
|
133
132
|
}
|
|
134
133
|
});
|
|
135
134
|
this._eventHandler.subscribe(this.onBeforeRowOutOfViewportRange, (event, args) => {
|
|
136
|
-
|
|
137
|
-
if (typeof ((_a = this.rowDetailViewOptions) === null || _a === void 0 ? void 0 : _a.onBeforeRowOutOfViewportRange) === 'function') {
|
|
135
|
+
if (typeof this.rowDetailViewOptions?.onBeforeRowOutOfViewportRange === 'function') {
|
|
138
136
|
this.rowDetailViewOptions.onBeforeRowOutOfViewportRange(event, args);
|
|
139
137
|
}
|
|
140
138
|
this.disposeViewByItem(args.item);
|
|
141
139
|
});
|
|
142
140
|
this._eventHandler.subscribe(this.onRowOutOfViewportRange, (event, args) => {
|
|
143
|
-
|
|
144
|
-
if (typeof ((_a = this.rowDetailViewOptions) === null || _a === void 0 ? void 0 : _a.onRowOutOfViewportRange) === 'function') {
|
|
141
|
+
if (typeof this.rowDetailViewOptions?.onRowOutOfViewportRange === 'function') {
|
|
145
142
|
this.rowDetailViewOptions.onRowOutOfViewportRange(event, args);
|
|
146
143
|
}
|
|
147
144
|
});
|
|
@@ -156,12 +153,12 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
156
153
|
// on column sort/reorder, all row detail are collapsed so we can dispose of all the Views as well
|
|
157
154
|
this._eventHandler.subscribe(this._grid.onSort, this.disposeAllViewComponents.bind(this));
|
|
158
155
|
// on filter changed, we need to re-render all Views
|
|
159
|
-
this._subscriptions.push(
|
|
156
|
+
this._subscriptions.push(this.eventPubSubService?.subscribe([
|
|
160
157
|
'onFilterChanged',
|
|
161
158
|
'onGridMenuColumnsChanged',
|
|
162
159
|
'onColumnPickerColumnsChanged',
|
|
163
160
|
'onGridMenuClearAllFilters',
|
|
164
|
-
'onGridMenuClearAllSorting'
|
|
161
|
+
'onGridMenuClearAllSorting',
|
|
165
162
|
], () => this.redrawAllViewComponents(true)));
|
|
166
163
|
}
|
|
167
164
|
}
|
|
@@ -182,9 +179,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
182
179
|
}
|
|
183
180
|
/** Render all the expanded row detail View Components */
|
|
184
181
|
async renderAllViewModels() {
|
|
185
|
-
this._views
|
|
186
|
-
.filter((x) => x === null || x === void 0 ? void 0 : x.dataContext)
|
|
187
|
-
.forEach((x) => this.renderViewModel(x.dataContext));
|
|
182
|
+
this._views.filter((x) => x?.dataContext).forEach((x) => this.renderViewModel(x.dataContext));
|
|
188
183
|
}
|
|
189
184
|
/** Redraw the necessary View Component */
|
|
190
185
|
redrawViewComponent(view) {
|
|
@@ -195,7 +190,6 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
195
190
|
}
|
|
196
191
|
/** Render (or re-render) the View Component (Row Detail) */
|
|
197
192
|
renderPreloadView(item) {
|
|
198
|
-
var _a;
|
|
199
193
|
const containerElement = this.gridContainerElement.querySelector(`.${PRELOAD_CONTAINER_PREFIX}`);
|
|
200
194
|
if (this._preloadComponent && containerElement) {
|
|
201
195
|
// render row detail
|
|
@@ -204,7 +198,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
204
198
|
addon: this,
|
|
205
199
|
grid: this._grid,
|
|
206
200
|
dataView: this.dataView,
|
|
207
|
-
|
|
201
|
+
parentRef: this.rowDetailViewOptions?.parentRef,
|
|
208
202
|
};
|
|
209
203
|
const detailContainer = document.createElement('section');
|
|
210
204
|
containerElement.appendChild(detailContainer);
|
|
@@ -214,7 +208,6 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
214
208
|
}
|
|
215
209
|
/** Render (or re-render) the View Component (Row Detail) */
|
|
216
210
|
renderViewModel(item) {
|
|
217
|
-
var _a;
|
|
218
211
|
const containerElement = this.gridContainerElement.querySelector(`.${ROW_DETAIL_CONTAINER_PREFIX}${item[this.datasetIdPropName]}`);
|
|
219
212
|
if (this._component && containerElement) {
|
|
220
213
|
const bindableData = {
|
|
@@ -222,12 +215,12 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
222
215
|
addon: this,
|
|
223
216
|
grid: this._grid,
|
|
224
217
|
dataView: this.dataView,
|
|
225
|
-
|
|
218
|
+
parentRef: this.rowDetailViewOptions?.parentRef,
|
|
226
219
|
};
|
|
227
220
|
// load our Row Detail React Component dynamically, typically we would want to use `root.render()` after the preload component (last argument below)
|
|
228
221
|
// BUT the root render doesn't seem to work and shows a blank element, so we'll use `createRoot()` every time even though it shows a console log in Dev
|
|
229
222
|
// that is the only way I got it working so let's use it anyway and console warnings are removed in production anyway
|
|
230
|
-
const viewObj = this._views.find(obj => obj.id === item[this.datasetIdPropName]);
|
|
223
|
+
const viewObj = this._views.find((obj) => obj.id === item[this.datasetIdPropName]);
|
|
231
224
|
const { root } = createReactComponentDynamically(this._component, containerElement, bindableData);
|
|
232
225
|
if (viewObj) {
|
|
233
226
|
viewObj.root = root;
|
|
@@ -242,7 +235,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
242
235
|
// protected functions
|
|
243
236
|
// ------------------
|
|
244
237
|
upsertViewRefs(item, root) {
|
|
245
|
-
const viewIdx = this._views.findIndex(obj => obj.id === item[this.datasetIdPropName]);
|
|
238
|
+
const viewIdx = this._views.findIndex((obj) => obj.id === item[this.datasetIdPropName]);
|
|
246
239
|
const viewInfo = {
|
|
247
240
|
id: item[this.datasetIdPropName],
|
|
248
241
|
dataContext: item,
|
|
@@ -268,7 +261,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
268
261
|
}
|
|
269
262
|
disposeViewComponent(expandedView) {
|
|
270
263
|
expandedView.rendered = false;
|
|
271
|
-
if (expandedView
|
|
264
|
+
if (expandedView?.root) {
|
|
272
265
|
const container = this.gridContainerElement.querySelector(`.${ROW_DETAIL_CONTAINER_PREFIX}${expandedView.id}`);
|
|
273
266
|
if (container) {
|
|
274
267
|
expandedView.root.unmount();
|
|
@@ -284,9 +277,8 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
284
277
|
* if we don't already have it or if it's collapsing we will remove it from our View Components reference array
|
|
285
278
|
*/
|
|
286
279
|
handleOnBeforeRowDetailToggle(_e, args) {
|
|
287
|
-
var _a;
|
|
288
280
|
// expanding
|
|
289
|
-
if (
|
|
281
|
+
if (args?.item?.__collapsed) {
|
|
290
282
|
// expanding row detail
|
|
291
283
|
this.upsertViewRefs(args.item, null);
|
|
292
284
|
}
|
|
@@ -308,7 +300,7 @@ export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
|
308
300
|
* @param item
|
|
309
301
|
*/
|
|
310
302
|
notifyTemplate(item) {
|
|
311
|
-
this.onAsyncResponse.notify({ item
|
|
303
|
+
this.onAsyncResponse.notify({ item }, new SlickEventData(), this);
|
|
312
304
|
}
|
|
313
305
|
/**
|
|
314
306
|
* On Processing, we will notify the plugin with the new item detail once backend server call completes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slickRowDetailView.js","sourceRoot":"","sources":["../../src/extensions/slickRowDetailView.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addToArrayWhenNotExists,\n createDomElement,\n type EventSubscription,\n type OnBeforeRowDetailToggleArgs,\n type OnRowBackOrOutOfViewportRangeArgs,\n SlickEventData,\n type SlickGrid,\n SlickRowSelectionModel,\n unsubscribeAll,\n} from '@slickgrid-universal/common';\nimport { type EventPubSubService } from '@slickgrid-universal/event-pub-sub';\nimport { SlickRowDetailView as UniversalSlickRowDetailView } from '@slickgrid-universal/row-detail-view-plugin';\nimport type { Root } from 'react-dom/client';\n\nimport type { GridOption, RowDetailView, ViewModelBindableInputData } from '../models/index.js';\nimport { createReactComponentDynamically } from '../services/reactUtils.js';\n\nconst ROW_DETAIL_CONTAINER_PREFIX = 'container_';\nconst PRELOAD_CONTAINER_PREFIX = 'container_loading';\n\nexport interface CreatedView {\n id: string | number;\n dataContext: any;\n root: Root | null;\n rendered?: boolean;\n}\n// interface SRDV extends React.Component<Props, State>, UniversalSlickRowDetailView {}s\n\nexport class SlickRowDetailView extends UniversalSlickRowDetailView {\n protected _component?: any;\n protected _preloadComponent?: any;\n protected _preloadRoot?: Root;\n protected _views: CreatedView[] = [];\n protected _subscriptions: EventSubscription[] = [];\n protected _userProcessFn?: (item: any) => Promise<any>;\n protected gridContainerElement!: HTMLElement;\n _root?: Root;\n\n constructor(private readonly eventPubSubService: EventPubSubService) {\n super(eventPubSubService);\n }\n\n get addonOptions() {\n return this.getOptions();\n }\n\n protected get datasetIdPropName(): string {\n return this.gridOptions.datasetIdPropertyName || 'id';\n }\n\n get gridOptions(): GridOption {\n return (this._grid?.getOptions() || {}) as GridOption;\n }\n\n get rowDetailViewOptions(): RowDetailView | undefined {\n return this.gridOptions.rowDetailView;\n }\n\n /** Dispose of the RowDetailView Extension */\n dispose() {\n this.disposeAllViewComponents();\n unsubscribeAll(this._subscriptions);\n super.dispose();\n }\n\n /** Dispose of all the opened Row Detail Panels Components */\n disposeAllViewComponents() {\n do {\n const view = this._views.pop();\n if (view) {\n this.disposeViewByItem(view);\n }\n } while (this._views.length > 0);\n }\n\n /** Get the instance of the SlickGrid addon (control or plugin). */\n getAddonInstance(): SlickRowDetailView | null {\n return this;\n }\n\n init(grid: SlickGrid) {\n this._grid = grid;\n super.init(this._grid);\n this.gridContainerElement = grid.getContainerNode();\n this.register(grid?.getSelectionModel() as SlickRowSelectionModel);\n }\n\n /**\n * Create the plugin before the Grid creation, else it will behave oddly.\n * Mostly because the column definitions might change after the grid creation\n */\n register(rowSelectionPlugin?: SlickRowSelectionModel) {\n if (typeof this.gridOptions.rowDetailView?.process === 'function') {\n // we need to keep the user \"process\" method and replace it with our own execution method\n // we do this because when we get the item detail, we need to call \"onAsyncResponse.notify\" for the plugin to work\n this._userProcessFn = this.gridOptions.rowDetailView.process as (item: any) => Promise<any>; // keep user's process method\n this.addonOptions.process = (item) => this.onProcessing(item); // replace process method & run our internal one\n } else {\n throw new Error('[Slickgrid-React] You need to provide a \"process\" function for the Row Detail Extension to work properly');\n }\n\n if (this._grid && this.gridOptions?.rowDetailView) {\n // load the Preload & RowDetail Templates (could be straight HTML or React Components)\n // when those are React Components, we need to create View Component & provide the html containers to the Plugin (preTemplate/postTemplate methods)\n if (!this.gridOptions.rowDetailView.preTemplate) {\n this._preloadComponent = this.gridOptions?.rowDetailView?.preloadComponent;\n this.addonOptions.preTemplate = () => createDomElement('div', { className: `${PRELOAD_CONTAINER_PREFIX}` });\n }\n if (!this.gridOptions.rowDetailView.postTemplate) {\n this._component = this.gridOptions?.rowDetailView?.viewComponent;\n this.addonOptions.postTemplate = (itemDetail: any) =>\n createDomElement('div', { className: `${ROW_DETAIL_CONTAINER_PREFIX}${itemDetail[this.datasetIdPropName]}` });\n }\n\n if (this._grid && this.gridOptions) {\n // this also requires the Row Selection Model to be registered as well\n if (!rowSelectionPlugin || !this._grid.getSelectionModel()) {\n rowSelectionPlugin = new SlickRowSelectionModel(this.gridOptions.rowSelectionOptions || { selectActiveRow: true });\n this._grid.setSelectionModel(rowSelectionPlugin);\n }\n\n // hook all events\n if (this._grid && this.rowDetailViewOptions) {\n if (this.rowDetailViewOptions.onExtensionRegistered) {\n this.rowDetailViewOptions.onExtensionRegistered(this);\n }\n\n this._eventHandler.subscribe(this.onAsyncResponse, (event, args) => {\n if (typeof this.rowDetailViewOptions?.onAsyncResponse === 'function') {\n this.rowDetailViewOptions.onAsyncResponse(event, args);\n }\n });\n\n this._eventHandler.subscribe(this.onAsyncEndUpdate, async (event, args) => {\n // dispose preload if exists\n this._preloadRoot?.unmount();\n\n // triggers after backend called \"onAsyncResponse.notify()\"\n // because of the preload destroy above, we need a small delay to make sure the DOM element is ready to render the Row Detail\n queueMicrotask(() => {\n this.renderViewModel(args?.item);\n\n if (typeof this.rowDetailViewOptions?.onAsyncEndUpdate === 'function') {\n this.rowDetailViewOptions.onAsyncEndUpdate(event, args);\n }\n });\n });\n\n this._eventHandler.subscribe(this.onAfterRowDetailToggle, async (event, args) => {\n // display preload template & re-render all the other Detail Views after toggling\n // the preload View will eventually go away once the data gets loaded after the \"onAsyncEndUpdate\" event\n this.renderPreloadView(args.item);\n\n if (typeof this.rowDetailViewOptions?.onAfterRowDetailToggle === 'function') {\n this.rowDetailViewOptions.onAfterRowDetailToggle(event, args);\n }\n });\n\n this._eventHandler.subscribe(this.onBeforeRowDetailToggle, (event, args) => {\n // before toggling row detail, we need to create View Component if it doesn't exist\n this.handleOnBeforeRowDetailToggle(event, args);\n\n if (typeof this.rowDetailViewOptions?.onBeforeRowDetailToggle === 'function') {\n return this.rowDetailViewOptions.onBeforeRowDetailToggle(event, args);\n }\n return true;\n });\n\n this._eventHandler.subscribe(this.onRowBackToViewportRange, async (event, args) => {\n // when row is back to viewport range, we will re-render the View Component(s)\n this.handleOnRowBackToViewportRange(event, args);\n\n if (typeof this.rowDetailViewOptions?.onRowBackToViewportRange === 'function') {\n this.rowDetailViewOptions.onRowBackToViewportRange(event, args);\n }\n });\n\n this._eventHandler.subscribe(this.onBeforeRowOutOfViewportRange, (event, args) => {\n if (typeof this.rowDetailViewOptions?.onBeforeRowOutOfViewportRange === 'function') {\n this.rowDetailViewOptions.onBeforeRowOutOfViewportRange(event, args);\n }\n this.disposeViewByItem(args.item);\n });\n\n this._eventHandler.subscribe(this.onRowOutOfViewportRange, (event, args) => {\n if (typeof this.rowDetailViewOptions?.onRowOutOfViewportRange === 'function') {\n this.rowDetailViewOptions.onRowOutOfViewportRange(event, args);\n }\n });\n\n // --\n // hook some events needed by the Plugin itself\n\n // we need to redraw the open detail views if we change column position (column reorder)\n this.eventHandler.subscribe(this._grid.onColumnsReordered, () => this.redrawAllViewComponents(false));\n\n // on row selection changed, we also need to redraw\n if (this.gridOptions.enableRowSelection || this.gridOptions.enableCheckboxSelector) {\n this._eventHandler.subscribe(this._grid.onSelectedRowsChanged, () => this.redrawAllViewComponents(false));\n }\n\n // on column sort/reorder, all row detail are collapsed so we can dispose of all the Views as well\n this._eventHandler.subscribe(this._grid.onSort, this.disposeAllViewComponents.bind(this));\n\n // on filter changed, we need to re-render all Views\n this._subscriptions.push(\n this.eventPubSubService?.subscribe(\n [\n 'onFilterChanged',\n 'onGridMenuColumnsChanged',\n 'onColumnPickerColumnsChanged',\n 'onGridMenuClearAllFilters',\n 'onGridMenuClearAllSorting',\n ],\n () => this.redrawAllViewComponents(true)\n )\n );\n }\n }\n }\n\n return this;\n }\n\n /** Redraw (re-render) all the expanded row detail View Components */\n async redrawAllViewComponents(forceRedraw = false) {\n setTimeout(() => {\n this.resetRenderedRows();\n this._views.forEach((view) => {\n if (!view.rendered || forceRedraw) {\n forceRedraw && this.disposeViewComponent(view);\n this.redrawViewComponent(view);\n }\n });\n });\n }\n\n /** Render all the expanded row detail View Components */\n async renderAllViewModels() {\n this._views.filter((x) => x?.dataContext).forEach((x) => this.renderViewModel(x.dataContext));\n }\n\n /** Redraw the necessary View Component */\n redrawViewComponent(view: CreatedView) {\n const containerElement = this.gridContainerElement.querySelector(`.${ROW_DETAIL_CONTAINER_PREFIX}${view.id}`);\n if (containerElement) {\n this.renderViewModel(view.dataContext);\n }\n }\n\n /** Render (or re-render) the View Component (Row Detail) */\n renderPreloadView(item: any) {\n const containerElement = this.gridContainerElement.querySelector(`.${PRELOAD_CONTAINER_PREFIX}`);\n if (this._preloadComponent && containerElement) {\n // render row detail\n const bindableData = {\n model: item,\n addon: this,\n grid: this._grid,\n dataView: this.dataView,\n parentRef: this.rowDetailViewOptions?.parentRef,\n } as ViewModelBindableInputData;\n const detailContainer = document.createElement('section');\n containerElement.appendChild(detailContainer);\n\n const { root } = createReactComponentDynamically(this._preloadComponent, detailContainer, bindableData);\n this._preloadRoot = root;\n }\n }\n\n /** Render (or re-render) the View Component (Row Detail) */\n renderViewModel(item: any) {\n const containerElement = this.gridContainerElement.querySelector<HTMLElement>(\n `.${ROW_DETAIL_CONTAINER_PREFIX}${item[this.datasetIdPropName]}`\n );\n if (this._component && containerElement) {\n const bindableData = {\n model: item,\n addon: this,\n grid: this._grid,\n dataView: this.dataView,\n parentRef: this.rowDetailViewOptions?.parentRef,\n } as ViewModelBindableInputData;\n\n // load our Row Detail React Component dynamically, typically we would want to use `root.render()` after the preload component (last argument below)\n // BUT the root render doesn't seem to work and shows a blank element, so we'll use `createRoot()` every time even though it shows a console log in Dev\n // that is the only way I got it working so let's use it anyway and console warnings are removed in production anyway\n const viewObj = this._views.find((obj) => obj.id === item[this.datasetIdPropName]);\n const { root } = createReactComponentDynamically(this._component, containerElement, bindableData);\n if (viewObj) {\n viewObj.root = root;\n viewObj.rendered = true;\n } else {\n this.upsertViewRefs(item, root);\n }\n }\n }\n\n // --\n // protected functions\n // ------------------\n\n protected upsertViewRefs(item: any, root: Root | null) {\n const viewIdx = this._views.findIndex((obj) => obj.id === item[this.datasetIdPropName]);\n const viewInfo: CreatedView = {\n id: item[this.datasetIdPropName],\n dataContext: item,\n root,\n rendered: !!root,\n };\n if (viewIdx >= 0) {\n this._views[viewIdx] = viewInfo;\n } else {\n this._views.push(viewInfo);\n }\n addToArrayWhenNotExists(this._views, viewInfo, this.datasetIdPropName);\n }\n\n protected disposeViewByItem(item: any, removeFromArray = false): void {\n const foundViewIdx = this._views.findIndex((view: CreatedView) => view.id === item[this.datasetIdPropName]);\n if (foundViewIdx >= 0) {\n this.disposeViewComponent(this._views[foundViewIdx]);\n if (removeFromArray) {\n this._views.splice(foundViewIdx, 1);\n }\n }\n }\n\n protected disposeViewComponent(expandedView: CreatedView): CreatedView | void {\n expandedView.rendered = false;\n if (expandedView?.root) {\n const container = this.gridContainerElement.querySelector(`.${ROW_DETAIL_CONTAINER_PREFIX}${expandedView.id}`);\n if (container) {\n expandedView.root.unmount();\n container.textContent = '';\n return expandedView;\n }\n }\n }\n\n /**\n * Just before the row get expanded or collapsed we will do the following\n * First determine if the row is expanding or collapsing,\n * if it's expanding we will add it to our View Components reference array,\n * if we don't already have it or if it's collapsing we will remove it from our View Components reference array\n */\n protected handleOnBeforeRowDetailToggle(_e: SlickEventData<OnBeforeRowDetailToggleArgs>, args: { grid: SlickGrid; item: any }) {\n // expanding\n if (args?.item?.__collapsed) {\n // expanding row detail\n this.upsertViewRefs(args.item, null);\n } else {\n // collapsing, so dispose of the View\n this.disposeViewByItem(args.item, true);\n }\n }\n\n /** When Row comes back to Viewport Range, we need to redraw the View */\n protected async handleOnRowBackToViewportRange(\n _e: SlickEventData<OnRowBackOrOutOfViewportRangeArgs>,\n args: {\n item: any;\n rowId: string | number;\n rowIndex: number;\n expandedRows: (string | number)[];\n rowIdsOutOfViewport: (string | number)[];\n grid: SlickGrid;\n }\n ) {\n const viewModel = this._views.find((x) => x.id === args.rowId);\n if (viewModel && !viewModel.rendered) {\n this.redrawViewComponent(viewModel);\n }\n }\n\n /**\n * notify the onAsyncResponse with the \"args.item\" (required property)\n * the plugin will then use item to populate the row detail panel with the \"postTemplate\"\n * @param item\n */\n protected notifyTemplate(item: any) {\n this.onAsyncResponse.notify({ item }, new SlickEventData(), this);\n }\n\n /**\n * On Processing, we will notify the plugin with the new item detail once backend server call completes\n * @param item\n */\n protected async onProcessing(item: any) {\n if (item && typeof this._userProcessFn === 'function') {\n let awaitedItemDetail: any;\n const userProcessFn = this._userProcessFn(item);\n\n // wait for the \"userProcessFn\", once resolved we will save it into the \"collection\"\n const response: any | any[] = await userProcessFn;\n\n if (response.hasOwnProperty(this.datasetIdPropName)) {\n awaitedItemDetail = response; // from Promise\n } else if (response instanceof Response && typeof response['json'] === 'function') {\n awaitedItemDetail = await response['json'](); // from Fetch\n } else if (response && response['content']) {\n awaitedItemDetail = response['content']; // from http-client\n }\n\n if (!awaitedItemDetail || !awaitedItemDetail.hasOwnProperty(this.datasetIdPropName)) {\n throw new Error(\n '[Slickgrid-React] could not process the Row Detail, please make sure that your \"process\" callback ' +\n `returns an item object that has an \"${this.datasetIdPropName}\" property`\n );\n }\n\n // notify the plugin with the new item details\n this.notifyTemplate(awaitedItemDetail || {});\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { GridOption } from './models/index';
|
|
1
|
+
import type { GridOption } from './models/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Default Options that can be passed to the Slickgrid-React
|
|
4
4
|
*/
|
|
5
5
|
export declare const GlobalGridOptions: Partial<GridOption>;
|
|
6
|
-
//# sourceMappingURL=global-grid-options.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DelimiterType, EventNamingStyle,
|
|
1
|
+
import { DelimiterType, EventNamingStyle, Filters } from '@slickgrid-universal/common';
|
|
2
2
|
/**
|
|
3
3
|
* Default Options that can be passed to the Slickgrid-React
|
|
4
4
|
*/
|
|
@@ -15,12 +15,12 @@ export const GlobalGridOptions = {
|
|
|
15
15
|
bottomPadding: 20,
|
|
16
16
|
minHeight: 250,
|
|
17
17
|
minWidth: 300,
|
|
18
|
-
rightPadding: 0
|
|
18
|
+
rightPadding: 0,
|
|
19
19
|
},
|
|
20
20
|
cellHighlightCssClass: 'slick-cell-modified',
|
|
21
21
|
checkboxSelector: {
|
|
22
22
|
cssClass: 'slick-cell-checkboxsel',
|
|
23
|
-
width: 40
|
|
23
|
+
width: 40,
|
|
24
24
|
},
|
|
25
25
|
cellMenu: {
|
|
26
26
|
autoAdjustDrop: true,
|
|
@@ -33,7 +33,7 @@ export const GlobalGridOptions = {
|
|
|
33
33
|
columnPicker: {
|
|
34
34
|
hideForceFitButton: false,
|
|
35
35
|
hideSyncResizeButton: true,
|
|
36
|
-
headerColumnValueExtractor: pickerHeaderColumnValueExtractor
|
|
36
|
+
headerColumnValueExtractor: pickerHeaderColumnValueExtractor,
|
|
37
37
|
},
|
|
38
38
|
compositeEditorOptions: {
|
|
39
39
|
labels: {
|
|
@@ -87,14 +87,14 @@ export const GlobalGridOptions = {
|
|
|
87
87
|
of: 'of',
|
|
88
88
|
ofKey: 'OF',
|
|
89
89
|
itemsSelected: 'items selected',
|
|
90
|
-
itemsSelectedKey: 'ITEMS_SELECTED'
|
|
91
|
-
}
|
|
90
|
+
itemsSelectedKey: 'ITEMS_SELECTED',
|
|
91
|
+
},
|
|
92
92
|
},
|
|
93
93
|
dataView: {
|
|
94
94
|
// when enabled, this will preserve the row selection even after filtering/sorting/grouping
|
|
95
95
|
syncGridSelection: {
|
|
96
96
|
preserveHidden: false,
|
|
97
|
-
preserveHiddenOnSelectionChange: true
|
|
97
|
+
preserveHiddenOnSelectionChange: true,
|
|
98
98
|
},
|
|
99
99
|
syncGridSelectionWithBackendService: false, // but disable it when using backend services
|
|
100
100
|
},
|
|
@@ -103,7 +103,7 @@ export const GlobalGridOptions = {
|
|
|
103
103
|
defaultBackendServiceFilterTypingDebounce: 500,
|
|
104
104
|
defaultColumnSortFieldId: 'id',
|
|
105
105
|
defaultFilterPlaceholder: '🔎︎', // magnifying glass icon
|
|
106
|
-
defaultFilterRangeOperator:
|
|
106
|
+
defaultFilterRangeOperator: 'RangeInclusive',
|
|
107
107
|
editable: false,
|
|
108
108
|
editorTypingDebounce: 450,
|
|
109
109
|
filterTypingDebounce: 0,
|
|
@@ -140,7 +140,7 @@ export const GlobalGridOptions = {
|
|
|
140
140
|
addGroupIndentation: true,
|
|
141
141
|
exportWithFormatter: false,
|
|
142
142
|
filename: 'export',
|
|
143
|
-
format:
|
|
143
|
+
format: 'xlsx',
|
|
144
144
|
groupingColumnHeaderTitle: 'Group By',
|
|
145
145
|
groupCollapsedSymbol: '⮞',
|
|
146
146
|
groupExpandedSymbol: '⮟',
|
|
@@ -151,11 +151,11 @@ export const GlobalGridOptions = {
|
|
|
151
151
|
delimiter: DelimiterType.comma,
|
|
152
152
|
exportWithFormatter: false,
|
|
153
153
|
filename: 'export',
|
|
154
|
-
format:
|
|
154
|
+
format: 'csv',
|
|
155
155
|
groupingColumnHeaderTitle: 'Group By',
|
|
156
156
|
groupingAggregatorRowText: '',
|
|
157
157
|
sanitizeDataExport: false,
|
|
158
|
-
useUtf8WithBom: true
|
|
158
|
+
useUtf8WithBom: true,
|
|
159
159
|
},
|
|
160
160
|
forceFitColumns: false,
|
|
161
161
|
frozenHeaderWidthCalcDifferential: 1,
|
|
@@ -197,7 +197,7 @@ export const GlobalGridOptions = {
|
|
|
197
197
|
iconTogglePreHeaderCommand: 'mdi mdi-flip-vertical',
|
|
198
198
|
menuWidth: 16,
|
|
199
199
|
resizeOnShowHeaderRow: true,
|
|
200
|
-
headerColumnValueExtractor: pickerHeaderColumnValueExtractor
|
|
200
|
+
headerColumnValueExtractor: pickerHeaderColumnValueExtractor,
|
|
201
201
|
},
|
|
202
202
|
headerMenu: {
|
|
203
203
|
autoAlign: true,
|
|
@@ -215,7 +215,7 @@ export const GlobalGridOptions = {
|
|
|
215
215
|
hideClearFilterCommand: false,
|
|
216
216
|
hideClearSortCommand: false,
|
|
217
217
|
hideFreezeColumnsCommand: true, // opt-in command
|
|
218
|
-
hideSortCommands: false
|
|
218
|
+
hideSortCommands: false,
|
|
219
219
|
},
|
|
220
220
|
multiColumnSort: true,
|
|
221
221
|
numberedMultiColumnSort: true,
|
|
@@ -225,7 +225,7 @@ export const GlobalGridOptions = {
|
|
|
225
225
|
pagination: {
|
|
226
226
|
pageSizes: [10, 15, 20, 25, 30, 40, 50, 75, 100],
|
|
227
227
|
pageSize: 25,
|
|
228
|
-
totalItems: 0
|
|
228
|
+
totalItems: 0,
|
|
229
229
|
},
|
|
230
230
|
rowDetailView: {
|
|
231
231
|
collapseAllOnSort: true,
|
|
@@ -252,10 +252,11 @@ export const GlobalGridOptions = {
|
|
|
252
252
|
maxItemToInspectSingleColumnWidthByContent: 5000,
|
|
253
253
|
widthToRemoveFromExceededWidthReadjustment: 50,
|
|
254
254
|
},
|
|
255
|
+
rowTopOffsetRenderType: 'transform',
|
|
255
256
|
treeDataOptions: {
|
|
256
257
|
exportIndentMarginLeft: 5,
|
|
257
258
|
exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·',
|
|
258
|
-
}
|
|
259
|
+
},
|
|
259
260
|
};
|
|
260
261
|
/**
|
|
261
262
|
* Value Extractor for both ColumnPicker & GridMenu Picker
|
|
@@ -263,13 +264,12 @@ export const GlobalGridOptions = {
|
|
|
263
264
|
* else we'll simply return the column name title
|
|
264
265
|
*/
|
|
265
266
|
function pickerHeaderColumnValueExtractor(column, gridOptions) {
|
|
266
|
-
|
|
267
|
-
let colName = (_b = (_a = column === null || column === void 0 ? void 0 : column.columnPickerLabel) !== null && _a !== void 0 ? _a : column === null || column === void 0 ? void 0 : column.name) !== null && _b !== void 0 ? _b : '';
|
|
267
|
+
let colName = column?.columnPickerLabel ?? column?.name ?? '';
|
|
268
268
|
if (colName instanceof HTMLElement || colName instanceof DocumentFragment) {
|
|
269
269
|
colName = colName.textContent || '';
|
|
270
270
|
}
|
|
271
|
-
const headerGroup =
|
|
272
|
-
const columnGroupSeparator =
|
|
271
|
+
const headerGroup = column?.columnGroup || '';
|
|
272
|
+
const columnGroupSeparator = gridOptions?.columnGroupSeparator ?? ' - ';
|
|
273
273
|
if (headerGroup) {
|
|
274
274
|
return headerGroup + columnGroupSeparator + colName;
|
|
275
275
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-grid-options.js","sourceRoot":"","sources":["../src/global-grid-options.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Column, DelimiterType, EventNamingStyle, Filters, type TreeDataOption } from '@slickgrid-universal/common';\n\nimport type { GridOption, RowDetailView } from './models/index.js';\n\n/**\n * Default Options that can be passed to the Slickgrid-React\n */\nexport const GlobalGridOptions: Partial<GridOption> = {\n alwaysShowVerticalScroll: true,\n autoEdit: false,\n asyncEditorLoading: false,\n autoFitColumnsOnFirstLoad: true,\n autoResize: {\n applyResizeToContainer: true,\n autoHeight: true,\n autoHeightRecalcRow: 100,\n calculateAvailableSizeBy: 'window',\n bottomPadding: 20,\n minHeight: 250,\n minWidth: 300,\n rightPadding: 0,\n },\n cellHighlightCssClass: 'slick-cell-modified',\n checkboxSelector: {\n cssClass: 'slick-cell-checkboxsel',\n width: 40,\n },\n cellMenu: {\n autoAdjustDrop: true,\n autoAlignSide: true,\n hideCloseButton: true,\n hideCommandSection: false,\n hideOptionSection: false,\n },\n columnGroupSeparator: ' - ',\n columnPicker: {\n hideForceFitButton: false,\n hideSyncResizeButton: true,\n headerColumnValueExtractor: pickerHeaderColumnValueExtractor,\n },\n compositeEditorOptions: {\n labels: {\n cancelButtonKey: 'CANCEL',\n cloneButtonKey: 'CLONE',\n resetEditorButtonTooltipKey: 'RESET_INPUT_VALUE',\n resetFormButtonKey: 'RESET_FORM',\n massSelectionButtonKey: 'APPLY_TO_SELECTION',\n massSelectionStatusKey: 'X_OF_Y_MASS_SELECTED',\n massUpdateButtonKey: 'APPLY_MASS_UPDATE',\n massUpdateStatusKey: 'ALL_X_RECORDS_SELECTED',\n saveButtonKey: 'SAVE',\n },\n resetEditorButtonCssClass: 'mdi mdi-refresh mdi-15px',\n resetFormButtonIconCssClass: 'mdi mdi-refresh mdi-16px mdi-flip-h',\n },\n contextMenu: {\n autoAdjustDrop: true,\n autoAlignSide: true,\n hideCloseButton: true,\n hideClearAllGrouping: false,\n hideCollapseAllGroups: false,\n hideCommandSection: false,\n hideCopyCellValueCommand: false,\n hideExpandAllGroups: false,\n hideExportCsvCommand: false,\n hideExportExcelCommand: false,\n hideExportTextDelimitedCommand: true,\n hideMenuOnScroll: true,\n hideOptionSection: false,\n iconCollapseAllGroupsCommand: 'mdi mdi-arrow-collapse',\n iconExpandAllGroupsCommand: 'mdi mdi-arrow-expand',\n iconClearGroupingCommand: 'mdi mdi-close',\n iconCopyCellValueCommand: 'mdi mdi-content-copy',\n iconExportCsvCommand: 'mdi mdi-download',\n iconExportExcelCommand: 'mdi mdi-file-excel-outline text-success',\n iconExportTextDelimitedCommand: 'mdi mdi-download',\n },\n customFooterOptions: {\n dateFormat: 'YYYY-MM-DD, hh:mm a',\n hideRowSelectionCount: false,\n hideTotalItemCount: false,\n hideLastUpdateTimestamp: true,\n footerHeight: 25,\n leftContainerClass: 'col-xs-12 col-sm-5',\n rightContainerClass: 'col-xs-6 col-sm-7',\n metricSeparator: '|',\n metricTexts: {\n items: 'items',\n itemsKey: 'ITEMS',\n of: 'of',\n ofKey: 'OF',\n itemsSelected: 'items selected',\n itemsSelectedKey: 'ITEMS_SELECTED',\n },\n },\n dataView: {\n // when enabled, this will preserve the row selection even after filtering/sorting/grouping\n syncGridSelection: {\n preserveHidden: false,\n preserveHiddenOnSelectionChange: true,\n },\n syncGridSelectionWithBackendService: false, // but disable it when using backend services\n },\n datasetIdPropertyName: 'id',\n defaultFilter: Filters.input,\n defaultBackendServiceFilterTypingDebounce: 500,\n defaultColumnSortFieldId: 'id',\n defaultFilterPlaceholder: '🔎︎', // magnifying glass icon\n defaultFilterRangeOperator: 'RangeInclusive',\n editable: false,\n editorTypingDebounce: 450,\n filterTypingDebounce: 0,\n enableEmptyDataWarningMessage: true,\n enableFilterTrimWhiteSpace: false, // do we want to trim white spaces on all Filters?\n emptyDataWarning: {\n className: 'slick-empty-data-warning',\n message: 'No data to display.',\n messageKey: 'EMPTY_DATA_WARNING_MESSAGE',\n hideFrozenLeftWarning: false,\n hideFrozenRightWarning: false,\n leftViewportMarginLeft: '40%',\n rightViewportMarginLeft: '40%',\n frozenLeftViewportMarginLeft: '0px',\n frozenRightViewportMarginLeft: '40%',\n },\n enableAutoResize: true,\n enableAutoSizeColumns: true,\n enableCellNavigation: false,\n enableColumnPicker: true,\n enableColumnReorder: true,\n enableColumnResizeOnDoubleClick: true,\n enableContextMenu: true,\n enableExcelExport: false,\n enableTextExport: false,\n enableGridMenu: true,\n enableHeaderMenu: true,\n enableMouseHoverHighlightRow: true,\n enableSorting: true,\n enableTextSelectionOnCells: true,\n eventNamingStyle: EventNamingStyle.camelCase,\n explicitInitialization: true,\n excelExportOptions: {\n addGroupIndentation: true,\n exportWithFormatter: false,\n filename: 'export',\n format: 'xlsx',\n groupingColumnHeaderTitle: 'Group By',\n groupCollapsedSymbol: '⮞',\n groupExpandedSymbol: '⮟',\n groupingAggregatorRowText: '',\n sanitizeDataExport: false,\n },\n textExportOptions: {\n delimiter: DelimiterType.comma,\n exportWithFormatter: false,\n filename: 'export',\n format: 'csv',\n groupingColumnHeaderTitle: 'Group By',\n groupingAggregatorRowText: '',\n sanitizeDataExport: false,\n useUtf8WithBom: true,\n },\n forceFitColumns: false,\n frozenHeaderWidthCalcDifferential: 1,\n gridMenu: {\n commandLabels: {\n clearAllFiltersCommandKey: 'CLEAR_ALL_FILTERS',\n clearAllSortingCommandKey: 'CLEAR_ALL_SORTING',\n clearFrozenColumnsCommandKey: 'CLEAR_PINNING',\n exportCsvCommandKey: 'EXPORT_TO_CSV',\n exportExcelCommandKey: 'EXPORT_TO_EXCEL',\n exportTextDelimitedCommandKey: 'EXPORT_TO_TAB_DELIMITED',\n refreshDatasetCommandKey: 'REFRESH_DATASET',\n toggleDarkModeCommandKey: 'TOGGLE_DARK_MODE',\n toggleFilterCommandKey: 'TOGGLE_FILTER_ROW',\n togglePreHeaderCommandKey: 'TOGGLE_PRE_HEADER_ROW',\n },\n hideClearAllFiltersCommand: false,\n hideClearAllSortingCommand: false,\n hideClearFrozenColumnsCommand: true, // opt-in command\n hideExportCsvCommand: false,\n hideExportExcelCommand: false,\n hideExportTextDelimitedCommand: true,\n hideForceFitButton: false,\n hideRefreshDatasetCommand: false,\n hideSyncResizeButton: true,\n hideToggleDarkModeCommand: true,\n hideToggleFilterCommand: false,\n hideTogglePreHeaderCommand: false,\n iconCssClass: 'mdi mdi-menu',\n iconClearAllFiltersCommand: 'mdi mdi-filter-remove-outline',\n iconClearAllSortingCommand: 'mdi mdi-sort-variant-off',\n iconClearFrozenColumnsCommand: 'mdi mdi-close',\n iconExportCsvCommand: 'mdi mdi-download',\n iconExportExcelCommand: 'mdi mdi-file-excel-outline',\n iconExportTextDelimitedCommand: 'mdi mdi-download',\n iconRefreshDatasetCommand: 'mdi mdi-sync',\n iconToggleDarkModeCommand: 'mdi mdi-brightness-4 mdi mdi-brightness-4',\n iconToggleFilterCommand: 'mdi mdi-flip-vertical',\n iconTogglePreHeaderCommand: 'mdi mdi-flip-vertical',\n menuWidth: 16,\n resizeOnShowHeaderRow: true,\n headerColumnValueExtractor: pickerHeaderColumnValueExtractor,\n },\n headerMenu: {\n autoAlign: true,\n autoAlignOffset: 12,\n minWidth: 140,\n iconClearFilterCommand: 'mdi mdi-filter-remove-outline',\n iconClearSortCommand: 'mdi mdi-sort-variant-off',\n iconFreezeColumns: 'mdi mdi-pin-outline',\n iconSortAscCommand: 'mdi mdi-sort-ascending',\n iconSortDescCommand: 'mdi mdi-sort-descending',\n iconColumnHideCommand: 'mdi mdi-close',\n iconColumnResizeByContentCommand: 'mdi mdi-arrow-expand-horizontal',\n hideColumnResizeByContentCommand: false,\n hideColumnHideCommand: false,\n hideClearFilterCommand: false,\n hideClearSortCommand: false,\n hideFreezeColumnsCommand: true, // opt-in command\n hideSortCommands: false,\n },\n multiColumnSort: true,\n numberedMultiColumnSort: true,\n tristateMultiColumnSort: false,\n sortColNumberInSeparateSpan: true,\n suppressActiveCellChangeOnEdit: false,\n pagination: {\n pageSizes: [10, 15, 20, 25, 30, 40, 50, 75, 100],\n pageSize: 25,\n totalItems: 0,\n },\n rowDetailView: {\n collapseAllOnSort: true,\n cssClass: 'detail-view-toggle',\n panelRows: 1,\n keyPrefix: '__',\n useRowClick: false,\n saveDetailViewOnScroll: false,\n } as RowDetailView,\n headerRowHeight: 35,\n rowHeight: 35,\n topPanelHeight: 30,\n preHeaderPanelWidth: '100%', // mostly useful for Draggable Grouping dropzone to take full width\n translationNamespaceSeparator: ':',\n resetFilterSearchValueAfterOnBeforeCancellation: true,\n resizeByContentOnlyOnFirstLoad: true,\n resizeByContentOptions: {\n alwaysRecalculateColumnWidth: false,\n cellCharWidthInPx: 7.8,\n cellPaddingWidthInPx: 14,\n defaultRatioForStringType: 0.88,\n formatterPaddingWidthInPx: 0,\n maxItemToInspectCellContentWidth: 1000,\n maxItemToInspectSingleColumnWidthByContent: 5000,\n widthToRemoveFromExceededWidthReadjustment: 50,\n },\n rowTopOffsetRenderType: 'transform',\n treeDataOptions: {\n exportIndentMarginLeft: 5,\n exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·',\n } as unknown as TreeDataOption,\n};\n\n/**\n * Value Extractor for both ColumnPicker & GridMenu Picker\n * when using Column Header Grouping, we'll prefix the column group title\n * else we'll simply return the column name title\n */\nfunction pickerHeaderColumnValueExtractor(column: Column, gridOptions?: GridOption) {\n let colName = column?.columnPickerLabel ?? column?.name ?? '';\n if (colName instanceof HTMLElement || colName instanceof DocumentFragment) {\n colName = colName.textContent || '';\n }\n const headerGroup = column?.columnGroup || '';\n const columnGroupSeparator = gridOptions?.columnGroupSeparator ?? ' - ';\n if (headerGroup) {\n return headerGroup + columnGroupSeparator + colName;\n }\n return colName;\n}\n"]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ALL_SELECTED": "All Selected",
|
|
3
|
+
"ALL_X_RECORDS_SELECTED": "All {{x}} records selected",
|
|
4
|
+
"APPLY_MASS_UPDATE": "Apply Mass Update",
|
|
5
|
+
"APPLY_TO_SELECTION": "Update Selection",
|
|
6
|
+
"CANCEL": "Cancel",
|
|
7
|
+
"CLEAR_ALL_FILTERS": "Clear all Filters",
|
|
8
|
+
"CLEAR_ALL_GROUPING": "Clear all Grouping",
|
|
9
|
+
"CLEAR_ALL_SORTING": "Clear all Sorting",
|
|
10
|
+
"CLEAR_PINNING": "Unfreeze Columns/Rows",
|
|
11
|
+
"CLONE": "Clone",
|
|
12
|
+
"COLLAPSE_ALL_GROUPS": "Collapse all Groups",
|
|
13
|
+
"COLUMNS": "Columns",
|
|
14
|
+
"COLUMN_RESIZE_BY_CONTENT": "Resize by Content",
|
|
15
|
+
"COMMANDS": "Commands",
|
|
16
|
+
"CONTAINS": "Contains",
|
|
17
|
+
"COPY": "Copy",
|
|
18
|
+
"EMPTY_DATA_WARNING_MESSAGE": "No data to display.",
|
|
19
|
+
"ENDS_WITH": "Ends With",
|
|
20
|
+
"EQUALS": "Equals",
|
|
21
|
+
"EQUAL_TO": "Equal to",
|
|
22
|
+
"EXPAND_ALL_GROUPS": "Expand all Groups",
|
|
23
|
+
"EXPORT_TO_CSV": "Export in CSV format",
|
|
24
|
+
"EXPORT_TO_EXCEL": "Export to Excel",
|
|
25
|
+
"EXPORT_TO_TAB_DELIMITED": "Export in Text format (Tab delimited)",
|
|
26
|
+
"EXPORT_TO_TEXT_FORMAT": "Export in Text format",
|
|
27
|
+
"FILTER_SHORTCUTS": "Filter Shortcuts",
|
|
28
|
+
"FROM_TO_OF_TOTAL_ITEMS": "{{from}}-{{to}} of {{totalItems}} items",
|
|
29
|
+
"FORCE_FIT_COLUMNS": "Force fit columns",
|
|
30
|
+
"FREEZE_COLUMNS": "Freeze Columns",
|
|
31
|
+
"INVALID_FLOAT": "The number must be valid and have a maximum of {{maxDecimal}} decimals.",
|
|
32
|
+
"GREATER_THAN": "Greater than",
|
|
33
|
+
"GREATER_THAN_OR_EQUAL_TO": "Greater than or equal to",
|
|
34
|
+
"GROUP_BY": "Group by",
|
|
35
|
+
"HIDE_COLUMN": "Hide Column",
|
|
36
|
+
"IN_COLLECTION_SEPERATED_BY_COMMA": "Search items in a collection, must be separated by a comma (a,b)",
|
|
37
|
+
"ITEMS": "items",
|
|
38
|
+
"ITEMS_PER_PAGE": "items per page",
|
|
39
|
+
"ITEMS_SELECTED": "items selected",
|
|
40
|
+
"NO_ELEMENTS_FOUND": "No elements found",
|
|
41
|
+
"LAST_UPDATE": "Last Update",
|
|
42
|
+
"LESS_THAN": "Less than",
|
|
43
|
+
"LESS_THAN_OR_EQUAL_TO": "Less than or equal to",
|
|
44
|
+
"LOADING": "Loading...",
|
|
45
|
+
"NOT_CONTAINS": "Not contains",
|
|
46
|
+
"NOT_EQUAL_TO": "Not equal to",
|
|
47
|
+
"NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Search items not in a collection, must be separated by a comma (a,b)",
|
|
48
|
+
"OF": "of",
|
|
49
|
+
"OK": "OK",
|
|
50
|
+
"PAGE": "Page",
|
|
51
|
+
"PAGE_X_OF_Y": "page {{x}} of {{y}}",
|
|
52
|
+
"REFRESH_DATASET": "Refresh Dataset",
|
|
53
|
+
"REMOVE_FILTER": "Remove Filter",
|
|
54
|
+
"REMOVE_SORT": "Remove Sort",
|
|
55
|
+
"RESET_INPUT_VALUE": "Reset Input Value",
|
|
56
|
+
"RESET_FORM": "Reset Form",
|
|
57
|
+
"SAVE": "Save",
|
|
58
|
+
"SELECT_ALL": "Select All",
|
|
59
|
+
"SORT_ASCENDING": "Sort Ascending",
|
|
60
|
+
"SORT_DESCENDING": "Sort Descending",
|
|
61
|
+
"STARTS_WITH": "Starts With",
|
|
62
|
+
"SYNCHRONOUS_RESIZE": "Synchronous resize",
|
|
63
|
+
"TOGGLE_FILTER_ROW": "Toggle Filter Row",
|
|
64
|
+
"TOGGLE_PRE_HEADER_ROW": "Toggle Pre-Header Row",
|
|
65
|
+
"X_OF_Y_SELECTED": "# of % selected",
|
|
66
|
+
"X_OF_Y_MASS_SELECTED": "{{x}} of {{y}} selected",
|
|
67
|
+
"BILLING": {
|
|
68
|
+
"ADDRESS": {
|
|
69
|
+
"STREET": "Billing Address Street",
|
|
70
|
+
"ZIP": "Billing Address Zip"
|
|
71
|
+
},
|
|
72
|
+
"INFORMATION": "Billing Information"
|
|
73
|
+
},
|
|
74
|
+
"BLANK_VALUES": "Blank Values",
|
|
75
|
+
"NON_BLANK_VALUES": "Non-Blank Values",
|
|
76
|
+
"CUSTOM_COMMANDS": "Custom Commands",
|
|
77
|
+
"DURATION": "Duration",
|
|
78
|
+
"COMPANY": "Company",
|
|
79
|
+
"COMPLETED": "Completed",
|
|
80
|
+
"CHANGE_COMPLETED_FLAG": "Change Completed Flag",
|
|
81
|
+
"CHANGE_PRIORITY": "Change Priority",
|
|
82
|
+
"CUSTOMER_INFORMATION": "Customer Information",
|
|
83
|
+
"DELETE_ROW": "Delete Row",
|
|
84
|
+
"DISABLED_COMMAND": "Disabled Command",
|
|
85
|
+
"FALSE": "False",
|
|
86
|
+
"FEMALE": "Female",
|
|
87
|
+
"FINISH": "Finish",
|
|
88
|
+
"FUTURE": "Future",
|
|
89
|
+
"GENDER": "Gender",
|
|
90
|
+
"HELP": "Help",
|
|
91
|
+
"HIGH": "High",
|
|
92
|
+
"LOW": "Low",
|
|
93
|
+
"MEDIUM": "Medium",
|
|
94
|
+
"MALE": "Male",
|
|
95
|
+
"NAME": "Name",
|
|
96
|
+
"NEXT_20_DAYS": "Next 20 days",
|
|
97
|
+
"NONE": "None",
|
|
98
|
+
"PAST": "Past",
|
|
99
|
+
"PERCENT_COMPLETE": "% Complete",
|
|
100
|
+
"PRIORITY": "Priority",
|
|
101
|
+
"START": "Start",
|
|
102
|
+
"TASK_X": "Task {{x}}",
|
|
103
|
+
"TITLE": "Title",
|
|
104
|
+
"TODAY": "Today",
|
|
105
|
+
"TRUE": "True",
|
|
106
|
+
"X_DAY_PLURAL": "{{x}} day{{plural}}",
|
|
107
|
+
"RBE_BTN_UPDATE": "Update the current row",
|
|
108
|
+
"RBE_BTN_CANCEL": "Cancel changes of the current row"
|
|
109
|
+
}
|