@adaptabletools/adaptable 10.0.4-canary.1 → 10.0.4-canary.2
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/LICENSE.md +1 -1
- package/README.md +1 -1
- package/base.css +16 -6
- package/bundle.cjs.js +350 -0
- package/index.css +20 -6
- package/package.json +1 -5
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/AdaptableInterfaces/AdaptableNoCodeWizard.d.ts +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +14 -12
- package/src/AdaptableOptions/AdaptableOptions.d.ts +3 -3
- package/src/AdaptableOptions/ContainerOptions.d.ts +4 -5
- package/src/AdaptableOptions/DataChangeHistoryOptions.d.ts +1 -1
- package/src/AdaptableOptions/DateInputOptions.d.ts +5 -1
- package/src/AdaptableOptions/EditOptions.d.ts +2 -3
- package/src/AdaptableOptions/FilterOptions.d.ts +8 -8
- package/src/AdaptableOptions/GeneralOptions.d.ts +3 -2
- package/src/AdaptableOptions/MenuOptions.d.ts +11 -11
- package/src/AdaptableOptions/NotificationsOptions.d.ts +8 -0
- package/src/AdaptableOptions/ToolPanelOptions.d.ts +2 -2
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +3 -3
- package/src/Api/AdaptableApi.d.ts +12 -12
- package/src/Api/ColumnApi.d.ts +10 -5
- package/src/Api/EventApi.d.ts +1 -1
- package/src/Api/Events/AdaptableReady.d.ts +3 -2
- package/src/Api/GridApi.d.ts +10 -10
- package/src/Api/Implementation/ColumnApiImpl.d.ts +4 -3
- package/src/Api/Implementation/ColumnApiImpl.js +11 -9
- package/src/Api/Implementation/ConfigApiImpl.js +0 -24
- package/src/Api/Implementation/GridApiImpl.d.ts +2 -2
- package/src/Api/Implementation/GridApiImpl.js +3 -4
- package/src/Api/Implementation/InternalApiImpl.d.ts +1 -1
- package/src/Api/Implementation/InternalApiImpl.js +2 -2
- package/src/Api/Implementation/LayoutApiImpl.d.ts +2 -0
- package/src/Api/Implementation/LayoutApiImpl.js +15 -0
- package/src/Api/Implementation/PluginsApiImpl.d.ts +2 -2
- package/src/Api/Implementation/PluginsApiImpl.js +1 -1
- package/src/Api/Implementation/ScheduleApiImpl.js +6 -6
- package/src/Api/Implementation/ToolPanelApiImpl.js +1 -1
- package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +3 -3
- package/src/Api/Implementation/UserInterfaceApiImpl.js +4 -4
- package/src/Api/InternalApi.d.ts +1 -1
- package/src/Api/LayoutApi.d.ts +7 -0
- package/src/Api/PluginsApi.d.ts +1 -7
- package/src/Api/TeamSharingApi.d.ts +1 -1
- package/src/Api/ThemeApi.d.ts +2 -2
- package/src/Api/UserInterfaceApi.d.ts +3 -3
- package/src/PredefinedConfig/AdaptableState.d.ts +2 -10
- package/src/PredefinedConfig/AlertState.d.ts +1 -1
- package/src/PredefinedConfig/ApplicationState.d.ts +1 -1
- package/src/PredefinedConfig/CalculatedColumnState.d.ts +1 -1
- package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +3 -3
- package/src/PredefinedConfig/Common/AdaptablePredicate.d.ts +4 -4
- package/src/PredefinedConfig/Common/AdaptableStyle.d.ts +7 -7
- package/src/PredefinedConfig/Common/DataChangedInfo.d.ts +1 -1
- package/src/PredefinedConfig/Common/Menu.d.ts +40 -17
- package/src/PredefinedConfig/Common/SpecialColumnSettings.d.ts +1 -1
- package/src/PredefinedConfig/Common/Types.d.ts +5 -5
- package/src/PredefinedConfig/Common/Types.js +9 -7
- package/src/PredefinedConfig/ConditionalStyleState.d.ts +1 -1
- package/src/PredefinedConfig/CustomSortState.d.ts +1 -1
- package/src/PredefinedConfig/DataSourceState.d.ts +1 -1
- package/src/PredefinedConfig/ExportState.d.ts +3 -3
- package/src/PredefinedConfig/FilterState.d.ts +2 -2
- package/src/PredefinedConfig/FormatColumnState.d.ts +1 -1
- package/src/PredefinedConfig/FreeTextColumnState.d.ts +1 -1
- package/src/PredefinedConfig/LayoutState.d.ts +1 -1
- package/src/PredefinedConfig/PredefinedConfig.d.ts +0 -40
- package/src/PredefinedConfig/QuickSearchState.d.ts +3 -3
- package/src/PredefinedConfig/ScheduleState.d.ts +1 -1
- package/src/PredefinedConfig/ThemeState.d.ts +5 -1
- package/src/Redux/ActionsReducers/DashboardRedux.js +2 -1
- package/src/Redux/ActionsReducers/GridRedux.d.ts +3 -2
- package/src/Redux/ActionsReducers/GridRedux.js +2 -2
- package/src/Redux/ActionsReducers/LayoutRedux.d.ts +12 -2
- package/src/Redux/ActionsReducers/LayoutRedux.js +24 -1
- package/src/Redux/DeadRedux.d.ts +4 -8
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -1
- package/src/Redux/Store/AdaptableStore.d.ts +3 -3
- package/src/Redux/Store/AdaptableStore.js +18 -13
- package/src/Strategy/AdaptableModuleBase.d.ts +2 -2
- package/src/Strategy/AlertModule.d.ts +2 -2
- package/src/Strategy/AlertModule.js +1 -94
- package/src/Strategy/BulkUpdateModule.d.ts +2 -2
- package/src/Strategy/BulkUpdateModule.js +4 -4
- package/src/Strategy/CellSummaryModule.d.ts +2 -2
- package/src/Strategy/DashboardModule.d.ts +2 -2
- package/src/Strategy/DataChangeHistoryModule.js +2 -2
- package/src/Strategy/ExportModule.d.ts +2 -2
- package/src/Strategy/FilterModule.d.ts +2 -2
- package/src/Strategy/FormatColumnModule.js +1 -1
- package/src/Strategy/GridInfoModule.d.ts +2 -2
- package/src/Strategy/Interface/IModule.d.ts +2 -2
- package/src/Strategy/LayoutModule.d.ts +2 -2
- package/src/Strategy/LayoutModule.js +21 -8
- package/src/Strategy/SmartEditModule.d.ts +2 -2
- package/src/Strategy/SmartEditModule.js +3 -4
- package/src/Strategy/SystemStatusModule.d.ts +2 -2
- package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
- package/src/Utilities/Constants/GeneralConstants.js +2 -1
- package/src/Utilities/Constants/ModuleConstants.d.ts +6 -6
- package/src/Utilities/Constants/ModuleConstants.js +7 -7
- package/src/Utilities/Defaults/DefaultAdaptableOptions.js +8 -7
- package/src/Utilities/Helpers/PreviewHelper.js +2 -2
- package/src/Utilities/Interface/Preview.d.ts +2 -1
- package/src/Utilities/Services/LicenseService.js +16 -2
- package/src/Utilities/Services/ValidationService.js +1 -1
- package/src/View/AdaptableViewFactory.d.ts +2 -1
- package/src/View/AdaptableViewFactory.js +2 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationForm.js +7 -7
- package/src/View/CellSummary/CellSummaryViewPanel.js +2 -2
- package/src/View/Components/FilterForm/FilterForm.js +5 -7
- package/src/View/Components/FilterForm/ListBoxFilterForm.d.ts +1 -1
- package/src/View/Components/FilterForm/ListBoxFilterForm.js +7 -7
- package/src/View/Components/FilterForm/QuickFilterForm.js +3 -5
- package/src/View/Components/Panels/FilterFormPanel.d.ts +1 -1
- package/src/View/Components/Panels/PanelWithImage.d.ts +423 -1
- package/src/View/Components/Popups/AdaptablePopupAlert.js +22 -9
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +3 -4
- package/src/View/Components/ToolPanel/ToolPanelPopup.js +2 -3
- package/src/View/CustomSort/CustomSortEntityRow.d.ts +3 -1
- package/src/View/CustomSort/CustomSortEntityRow.js +3 -3
- package/src/View/CustomSort/CustomSortPopup.js +1 -1
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +1 -1
- package/src/View/Dashboard/Dashboard.js +3 -3
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.d.ts +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +6 -5
- package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +6 -6
- package/src/View/Export/ExportViewPanel.js +6 -6
- package/src/View/GridInfo/GridOptionsComponent.js +1 -1
- package/src/View/Layout/LayoutViewPanel.js +2 -2
- package/src/View/Query/QueryViewPanel.js +1 -1
- package/src/View/QuickSearch/useQuickSearchDebounced.js +2 -3
- package/src/View/Schedule/SchedulePopup.js +3 -3
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +1 -1
- package/src/View/SmartEdit/SmartEditPopup.js +1 -1
- package/src/View/StateManagement/StateManagementPopup.d.ts +2 -12
- package/src/View/StateManagement/StateManagementPopup.js +21 -114
- package/src/View/StateManagement/StateManagementViewPanel.d.ts +5 -0
- package/src/View/StateManagement/StateManagementViewPanel.js +22 -0
- package/src/View/StateManagement/components/ClearButton.d.ts +6 -0
- package/src/View/StateManagement/components/ClearButton.js +9 -0
- package/src/View/StateManagement/components/ExportDropdown.d.ts +8 -0
- package/src/View/StateManagement/components/ExportDropdown.js +43 -0
- package/src/View/StateManagement/components/LoadButton.d.ts +7 -0
- package/src/View/StateManagement/components/LoadButton.js +38 -0
- package/src/View/StateManagement/handleExportState.d.ts +1 -0
- package/src/View/StateManagement/handleExportState.js +22 -0
- package/src/View/Theme/ThemeViewPanel.js +1 -1
- package/src/agGrid/Adaptable.d.ts +9 -8
- package/src/agGrid/Adaptable.js +99 -78
- package/src/agGrid/agGridHelper.d.ts +4 -4
- package/src/agGrid/agGridHelper.js +15 -16
- package/src/agGrid/agGridMenuHelper.d.ts +15 -13
- package/src/agGrid/agGridMenuHelper.js +53 -45
- package/src/agGrid/editors/AdaptableDateEditor/InternalAdaptableDateEditor.d.ts +1 -1
- package/src/agGrid/editors/AdaptableDateEditor/InternalAdaptableDateEditor.js +11 -6
- package/src/agGrid/editors/AdaptableDateEditor/index.d.ts +3 -2
- package/src/agGrid/editors/AdaptableDateEditor/index.js +16 -6
- package/src/agGrid/editors/AdaptableNumberEditor/index.d.ts +1 -0
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +7 -2
- package/src/components/Datepicker/DatepickerContext.d.ts +2 -2
- package/src/components/Datepicker/index.js +9 -5
- package/src/components/Modal/index.d.ts +1 -1
- package/src/components/OverlayTrigger/index.js +3 -3
- package/src/components/OverlayTrigger/useAgGridClassName.d.ts +2 -0
- package/src/components/OverlayTrigger/{useVendorClassName.js → useAgGridClassName.js} +3 -3
- package/src/components/ProgressIndicator/ProgressIndicator.js +1 -1
- package/src/components/icons/index.js +2 -0
- package/src/components/icons/upload.d.ts +3 -0
- package/src/components/icons/upload.js +8 -0
- package/src/metamodel/adaptable.metamodel.d.ts +52 -37
- package/src/metamodel/adaptable.metamodel.js +261 -265
- package/src/types.d.ts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/src/PredefinedConfig/DeprecatedState.d.ts +0 -82
- package/src/PredefinedConfig/DeprecatedState.js +0 -5
- package/src/components/OverlayTrigger/useVendorClassName.d.ts +0 -2
package/index.css
CHANGED
|
@@ -2932,9 +2932,15 @@ input[type="number"].ab-Input:hover::-webkit-inner-spin-button:active {
|
|
|
2932
2932
|
.ab-Dashboard .ab-Input {
|
|
2933
2933
|
border: none; }
|
|
2934
2934
|
|
|
2935
|
+
.ab-Dashboard .ab-DashboardToolbar__Export__wrap {
|
|
2936
|
+
white-space: nowrap; }
|
|
2937
|
+
|
|
2935
2938
|
.ab-Dashboard .ab-DashboardToolbar__QuickSearch__text .ab-Input {
|
|
2936
2939
|
padding: var(--ab-space-1); }
|
|
2937
2940
|
|
|
2941
|
+
.ab-Dashboard .ab-StateManagement__Clear-Button, .ab-Dashboard .ab-StateManagement__Load-Button, .ab-Dashboard .ab-StateManagement__Export-Dropdown {
|
|
2942
|
+
margin-left: var(--ab-space-1); }
|
|
2943
|
+
|
|
2938
2944
|
.ab-GridList {
|
|
2939
2945
|
--at-grid__background: transparent; }
|
|
2940
2946
|
|
|
@@ -3157,19 +3163,19 @@ input[type="number"].ab-Input:hover::-webkit-inner-spin-button:active {
|
|
|
3157
3163
|
.ab-ListBoxFilterForm .ab-GridList .AT-VirtualScrollContainer {
|
|
3158
3164
|
overflow-x: hidden; }
|
|
3159
3165
|
|
|
3160
|
-
.ag-theme-balham-dark .ab-ListBoxFilterForm--
|
|
3161
|
-
.ag-theme-balham .ab-ListBoxFilterForm--
|
|
3166
|
+
.ag-theme-balham-dark .ab-ListBoxFilterForm--aggrid-style,
|
|
3167
|
+
.ag-theme-balham .ab-ListBoxFilterForm--aggrid-style {
|
|
3162
3168
|
--ab-cmp-dropdown__border-radius: 0;
|
|
3163
3169
|
--ab-cmp-input__border-radius: 0;
|
|
3164
3170
|
--ab-cmp-input__padding: 0;
|
|
3165
3171
|
--ab-cmp-dropdown__padding: 3px;
|
|
3166
3172
|
--ab-focus__box-shadow: 0 0 3px 0px var(--ab-color-accent); }
|
|
3167
3173
|
|
|
3168
|
-
.ag-theme-balham-dark .ab-ListBoxFilterForm--
|
|
3169
|
-
.ag-theme-balham .ab-ListBoxFilterForm--
|
|
3174
|
+
.ag-theme-balham-dark .ab-ListBoxFilterForm--aggrid-style .ab-FieldWrap,
|
|
3175
|
+
.ag-theme-balham .ab-ListBoxFilterForm--aggrid-style .ab-FieldWrap {
|
|
3170
3176
|
border-radius: 0; }
|
|
3171
3177
|
|
|
3172
|
-
html.ab--theme-dark .ab-ListBoxFilterForm--
|
|
3178
|
+
html.ab--theme-dark .ab-ListBoxFilterForm--aggrid-style {
|
|
3173
3179
|
--ab-color-inputborder: white;
|
|
3174
3180
|
--ab-cmp-dropdown__border: 1px solid white; }
|
|
3175
3181
|
|
|
@@ -3249,7 +3255,8 @@ html.ab--theme-dark .ab-ListBoxFilterForm--vendor-style {
|
|
|
3249
3255
|
margin-right: var(--ab-space-2); }
|
|
3250
3256
|
|
|
3251
3257
|
.ab-ToolPanel {
|
|
3252
|
-
|
|
3258
|
+
flex: 1 1 0;
|
|
3259
|
+
min-width: 0;
|
|
3253
3260
|
color: var(--ab-cmp-toolpanel__color);
|
|
3254
3261
|
font-family: var(--ab-cmp-toolpanel__font-family); }
|
|
3255
3262
|
|
|
@@ -3266,6 +3273,13 @@ html.ab--theme-dark .ab-ListBoxFilterForm--vendor-style {
|
|
|
3266
3273
|
flex-wrap: wrap;
|
|
3267
3274
|
grid-gap: var(--ab-cmp-toolpanel-header__grid-gap); }
|
|
3268
3275
|
|
|
3276
|
+
.ab-ToolPanel .ab-StateManagement__Clear-Button, .ab-ToolPanel .ab-StateManagement__Load-Button {
|
|
3277
|
+
justify-content: center;
|
|
3278
|
+
flex: 1; }
|
|
3279
|
+
|
|
3280
|
+
.ab-ToolPanel .ab-StateManagement__Clear-Button, .ab-ToolPanel .ab-StateManagement__Load-Button, .ab-ToolPanel .ab-StateManagement__Export-Dropdown {
|
|
3281
|
+
margin-bottom: var(--ab-space-1); }
|
|
3282
|
+
|
|
3269
3283
|
.ab-CustomSortWizard__SortOrder .ab-Loader__text {
|
|
3270
3284
|
font-size: var(--ab-cmp-custom-sort-wizard-loader__font-size); }
|
|
3271
3285
|
|
package/package.json
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptabletools/adaptable",
|
|
3
|
-
"version": "10.0.4-canary.
|
|
3
|
+
"version": "10.0.4-canary.2",
|
|
4
4
|
"description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@infinite-table/infinite-react": "0.0.1-canary.11",
|
|
9
|
-
"@types/react": ">=16.8.0",
|
|
10
|
-
"@types/tinycolor2": "^1.4.2",
|
|
11
|
-
"babel-polyfill": "^6.26.0",
|
|
12
|
-
"babel-runtime": "^6.26.0",
|
|
13
9
|
"date-fns": "2.22.1",
|
|
14
10
|
"debug": "^4.3.1",
|
|
15
11
|
"isomorphic-fetch": "^2.2.1",
|
package/publishTimestamp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: 1641596554967;
|
|
2
2
|
export default _default;
|
package/publishTimestamp.js
CHANGED
|
@@ -36,7 +36,7 @@ export interface AdaptableNoCodeWizardOptions {
|
|
|
36
36
|
* userName: 'Demo User',
|
|
37
37
|
* predefinedConfig: demoConfig,
|
|
38
38
|
*
|
|
39
|
-
* // note we don't need any
|
|
39
|
+
* // note we don't need any agGrid info, since that's set by the wizard, when
|
|
40
40
|
* // the user configured the columns
|
|
41
41
|
* };
|
|
42
42
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RowNode } from '@ag-grid-community/all-modules';
|
|
1
|
+
import { Column, RowNode } from '@ag-grid-community/all-modules';
|
|
2
2
|
import { AdaptableApi } from '../Api/AdaptableApi';
|
|
3
3
|
import { AdaptableColumn } from '../PredefinedConfig/Common/AdaptableColumn';
|
|
4
4
|
import { ColumnSort } from '../PredefinedConfig/Common/ColumnSort';
|
|
@@ -18,7 +18,7 @@ import { IDataService } from '../Utilities/Services/Interface/IDataService';
|
|
|
18
18
|
import { IReportService } from '../Utilities/Services/Interface/IReportService';
|
|
19
19
|
import { IValidationService } from '../Utilities/Services/Interface/IValidationService';
|
|
20
20
|
import { IModuleService } from '../Utilities/Services/Interface/IModuleService';
|
|
21
|
-
import {
|
|
21
|
+
import { ContextMenuContext } from '../PredefinedConfig/Common/Menu';
|
|
22
22
|
import { IEntitlementService } from '../Utilities/Services/Interface/IEntitlementService';
|
|
23
23
|
import { IQueryLanguageService } from '../Utilities/Services/Interface/IQueryLanguageService';
|
|
24
24
|
import { IAlertService } from '../Utilities/Services/Interface/IAlertService';
|
|
@@ -39,9 +39,7 @@ export interface IAdaptable {
|
|
|
39
39
|
adaptableStore: IAdaptableStore;
|
|
40
40
|
modules: IModuleCollection;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* Note: if AG Grid is using community or menu is not added then this should be true.
|
|
42
|
+
* If using AG Grid community (which has no menu)
|
|
45
43
|
*/
|
|
46
44
|
embedColumnMenu: boolean;
|
|
47
45
|
/**
|
|
@@ -50,6 +48,10 @@ export interface IAdaptable {
|
|
|
50
48
|
* Avoid unnecessary store calls and rendering
|
|
51
49
|
*/
|
|
52
50
|
isInitialised: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Set to true when adaptable is destroyed.
|
|
53
|
+
*/
|
|
54
|
+
isDestroyed: boolean;
|
|
53
55
|
/**
|
|
54
56
|
* Adaptable contains a number of 'Services' which are created at Startup
|
|
55
57
|
*
|
|
@@ -89,7 +91,7 @@ export interface IAdaptable {
|
|
|
89
91
|
}) => void): () => void;
|
|
90
92
|
_on(eventName: 'CreateAdaptableContextMenuItems', callback: (param: {
|
|
91
93
|
items: AdaptableMenuItem[];
|
|
92
|
-
menuContext:
|
|
94
|
+
menuContext: ContextMenuContext;
|
|
93
95
|
}) => void): () => void;
|
|
94
96
|
_emit(eventName: 'CellEditorKeyDown', data: {
|
|
95
97
|
keyDownEvent: KeyboardEvent;
|
|
@@ -114,7 +116,7 @@ export interface IAdaptable {
|
|
|
114
116
|
jumpToRow(rowNode: RowNode): void;
|
|
115
117
|
jumpToColumn(columnId: string): void;
|
|
116
118
|
jumpToCell(columnId: string, rowNode: RowNode): void;
|
|
117
|
-
|
|
119
|
+
getAgGridContainerElement(): HTMLElement | null;
|
|
118
120
|
setDataSource(dataSource: any): void;
|
|
119
121
|
getGridData(): any[];
|
|
120
122
|
getFilteredData(): any[];
|
|
@@ -172,7 +174,7 @@ export interface IAdaptable {
|
|
|
172
174
|
selectCells(columnIds: string[], startNode: RowNode, endNode: RowNode): void;
|
|
173
175
|
getFirstGroupedColumn(): AdaptableColumn | undefined;
|
|
174
176
|
isRowNodeVisible(rowNode: RowNode): boolean;
|
|
175
|
-
|
|
177
|
+
getAgGridColumnType(columnId: string): string | string[];
|
|
176
178
|
getActiveColumnComparator(columnId: string, customSort?: CustomSort, customSortComparer?: ColumnValuesComparer): (valueA: any, valueB: any, nodeA?: RowNode, nodeB?: RowNode, isInverted?: boolean) => number | undefined;
|
|
177
179
|
setColumnSort(columnSorts: ColumnSort[]): void;
|
|
178
180
|
clearColumnSort(): void;
|
|
@@ -197,8 +199,8 @@ export interface IAdaptable {
|
|
|
197
199
|
showQuickFilter(): void;
|
|
198
200
|
hideQuickFilter(): void;
|
|
199
201
|
isQuickFilterAvailable(): boolean;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
+
getAgGridLightThemeName(): string;
|
|
203
|
+
getAgGridCurrentThemeName(): string;
|
|
202
204
|
applyAdaptableTheme(theme: AdaptableTheme | string): void;
|
|
203
205
|
/**
|
|
204
206
|
* called when you want to destroy the instance & cleanup resources
|
|
@@ -214,11 +216,11 @@ export interface IAdaptable {
|
|
|
214
216
|
expandRowGroupsForValues(columnValues: any[]): void;
|
|
215
217
|
getExpandRowGroupsKeys(): any[];
|
|
216
218
|
getAdaptableContainerElement(): HTMLElement | null;
|
|
217
|
-
|
|
219
|
+
getAgGridContainerElement(): HTMLElement | null;
|
|
218
220
|
buildStandaloneColumnHeader(adaptableColumn: AdaptableColumn): AdaptableMenuItem[];
|
|
219
221
|
setupColumns(): void;
|
|
220
222
|
updateColDefsForSpecialColumns({ skipSetupColumns }?: {
|
|
221
223
|
skipSetupColumns?: boolean;
|
|
222
224
|
}): void;
|
|
223
|
-
|
|
225
|
+
getAgGridColumnForAdaptableColumn(abColumn: AdaptableColumn): Column;
|
|
224
226
|
}
|
|
@@ -19,7 +19,7 @@ import { FilterOptions } from './FilterOptions';
|
|
|
19
19
|
import { QueryLanguageOptions } from './QueryLanguageOptions';
|
|
20
20
|
import { DataChangeHistoryOptions } from './DataChangeHistoryOptions';
|
|
21
21
|
/**
|
|
22
|
-
* Group of property options enabling developers to set up AdapTable at design time to fit precise requirements - provides
|
|
22
|
+
* Group of property options enabling developers to set up AdapTable at design time to fit precise requirements - provides AG Grid, Predefined Config and other information required to ensure a full, rich user experience
|
|
23
23
|
*/
|
|
24
24
|
export interface AdaptableOptions {
|
|
25
25
|
/**
|
|
@@ -69,7 +69,7 @@ export interface AdaptableOptions {
|
|
|
69
69
|
*/
|
|
70
70
|
userName?: string;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
72
|
+
* The AG Grid object which AdapTable interacts with. Note: if using React or Angular Wrapper, no need to populate this property (as `gridOptions` is a separate prop and AdapTable wires up everything)
|
|
73
73
|
*
|
|
74
74
|
* @defaultValue n/a (Mandatory)
|
|
75
75
|
*/
|
|
@@ -81,7 +81,7 @@ export interface AdaptableOptions {
|
|
|
81
81
|
*/
|
|
82
82
|
notificationsOptions?: NotificationsOptions;
|
|
83
83
|
/**
|
|
84
|
-
* Options for setting the 'Div' elements in which AdapTable,
|
|
84
|
+
* Options for setting the 'Div' elements in which AdapTable, AG Grid, popups and charts are placed
|
|
85
85
|
*/
|
|
86
86
|
containerOptions?: ContainerOptions;
|
|
87
87
|
/**
|
|
@@ -10,20 +10,19 @@ export interface ContainerOptions {
|
|
|
10
10
|
*/
|
|
11
11
|
adaptableContainer?: string | HTMLElement;
|
|
12
12
|
/**
|
|
13
|
-
* Div containing
|
|
13
|
+
* Div containing AG Grid instance - string Id or HTMLElement
|
|
14
14
|
*
|
|
15
15
|
* @defaultValue "grid"
|
|
16
16
|
* @gridInfoItem
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
agGridContainer?: string | HTMLElement;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
21
|
-
* This is how long AdapTable waits for the vendor grid before giving up connecting to it.
|
|
20
|
+
* how long AdapTable waits for AG Grid before giving up connecting to it; useful when AG Grid is instantiated separately (eg: by React or Angular Wrappers)
|
|
22
21
|
*
|
|
23
22
|
* @defaultValue 60s
|
|
24
23
|
* @gridInfoItem
|
|
25
24
|
*/
|
|
26
|
-
|
|
25
|
+
agGridContainerWaitTimeout?: number;
|
|
27
26
|
/**
|
|
28
27
|
* Name of div where modals appear (if null, will be centre of page)
|
|
29
28
|
*
|
|
@@ -16,5 +16,5 @@ export interface DataChangeHistoryOptions {
|
|
|
16
16
|
* @defaultValue undefined (all data changes are logged)
|
|
17
17
|
* @gridInfoItem
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
showDataChange?: (dataChangeInfo: DataChangedInfo) => boolean;
|
|
20
20
|
}
|
|
@@ -44,10 +44,14 @@ export interface DateInputOptions {
|
|
|
44
44
|
* Datepicker buttons which are displayed in the overlay footer
|
|
45
45
|
*/
|
|
46
46
|
export declare type DatepickerButton =
|
|
47
|
+
/**
|
|
48
|
+
* Clears the datepicker value
|
|
49
|
+
*/
|
|
50
|
+
'clear'
|
|
47
51
|
/**
|
|
48
52
|
* Closes the datepicker overlay
|
|
49
53
|
*/
|
|
50
|
-
'close'
|
|
54
|
+
| 'close'
|
|
51
55
|
/**
|
|
52
56
|
* Selects the current date
|
|
53
57
|
*/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DataChangedInfo } from '../PredefinedConfig/Common/DataChangedInfo';
|
|
2
2
|
import { GridCell } from '../PredefinedConfig/Selection/GridCell';
|
|
3
|
-
import { RowNode } from '@ag-grid-community/all-modules';
|
|
4
3
|
/**
|
|
5
4
|
* Options related to Editing in Adaptable.
|
|
6
5
|
*
|
|
@@ -19,9 +18,9 @@ export interface EditOptions {
|
|
|
19
18
|
*/
|
|
20
19
|
displayServerValidationMessages?: boolean;
|
|
21
20
|
/**
|
|
22
|
-
* Function which
|
|
21
|
+
* Function which checks if given Grid Cell is editable
|
|
23
22
|
*/
|
|
24
|
-
isCellEditable?: (gridCell: GridCell
|
|
23
|
+
isCellEditable?: (gridCell: GridCell) => boolean;
|
|
25
24
|
}
|
|
26
25
|
/**
|
|
27
26
|
* Used for Server Validation ie. after an edit has been made in Adaptable which should be checked on the Server
|
|
@@ -6,13 +6,13 @@ import { SystemFilterPredicateIds } from '../PredefinedConfig/FilterState';
|
|
|
6
6
|
*/
|
|
7
7
|
export interface FilterOptions {
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Hides the Dropdown in Quick Filter Bar for a given Column
|
|
10
10
|
*
|
|
11
11
|
* @defaultValue undefined
|
|
12
12
|
*/
|
|
13
13
|
hideQuickFilterDropdown?: (column: AdaptableColumn) => boolean;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Hides the Input in Quick Filter Bar for a given Column
|
|
16
16
|
*
|
|
17
17
|
* @defaultValue undefined
|
|
18
18
|
*/
|
|
@@ -32,20 +32,20 @@ export interface FilterOptions {
|
|
|
32
32
|
*/
|
|
33
33
|
indicateFilteredColumns?: boolean;
|
|
34
34
|
/**
|
|
35
|
-
* Uses Adaptable's Filter Form in Column header menu for all columns if 'true' (the default) or those listed
|
|
35
|
+
* Uses Adaptable's Filter Form in Column header menu for all columns if 'true' (the default) or those listed, in preference to AG Grid's Filter Form
|
|
36
36
|
*
|
|
37
37
|
* @defaultValue true
|
|
38
38
|
*/
|
|
39
39
|
useAdaptableFilterForm?: boolean | string[];
|
|
40
40
|
/**
|
|
41
|
-
* Styles Adaptable Filter Form to match
|
|
41
|
+
* Styles Adaptable Filter Form to match AG Grid's current styling
|
|
42
42
|
*
|
|
43
43
|
* @defaultValue true
|
|
44
44
|
* @gridInfoItem
|
|
45
45
|
*/
|
|
46
|
-
|
|
46
|
+
useAgGridFilterFormStyle?: boolean;
|
|
47
47
|
/**
|
|
48
|
-
* Use Adaptable's Quick Filter for all columns if 'true' (the default) or those listed
|
|
48
|
+
* Use Adaptable's Quick Filter for all columns if 'true' (the default) or those listed, in preference to AG Grid's Floating Filter
|
|
49
49
|
*
|
|
50
50
|
* @defaultValue true
|
|
51
51
|
* @gridInfoItem
|
|
@@ -78,7 +78,7 @@ export interface FilterOptions {
|
|
|
78
78
|
*/
|
|
79
79
|
filterActionOnExternalDataChange?: FilterActionOnDataChange;
|
|
80
80
|
/**
|
|
81
|
-
* Apply selected filters in Filter Form as soon as they are clicked; if false an Apply Filter button is displayed
|
|
81
|
+
* Apply selected filters (in Filter Form or Quick Filter Bar) as soon as they are clicked; if false an Apply Filter button is displayed
|
|
82
82
|
*
|
|
83
83
|
* @defaultValue true
|
|
84
84
|
* @gridInfoItem
|
|
@@ -134,7 +134,7 @@ export interface FilterOptions {
|
|
|
134
134
|
*/
|
|
135
135
|
enableFilterOnSpecialColumns?: boolean;
|
|
136
136
|
/**
|
|
137
|
-
* Which Adaptable System Filter Predicates are available
|
|
137
|
+
* Which Adaptable System Filter Predicates are available
|
|
138
138
|
*/
|
|
139
139
|
systemFilters?: SystemFilterPredicateIds;
|
|
140
140
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { AdaptableScope } from '../../types';
|
|
1
2
|
import { AdaptableComparerFunction } from '../PredefinedConfig/Common/AdaptableComparerFunction';
|
|
2
3
|
import { AlternativeModuleName } from '../PredefinedConfig/Common/AlternativeModuleName';
|
|
3
4
|
import { CellSummaryOperation } from '../PredefinedConfig/Common/CellSummary';
|
|
4
5
|
/**
|
|
5
|
-
* General options for configuring AdapTable including managing Primary Keys
|
|
6
|
+
* General options for configuring AdapTable including managing Primary Keys
|
|
6
7
|
*/
|
|
7
8
|
export interface GeneralOptions {
|
|
8
9
|
/**
|
|
@@ -84,7 +85,7 @@ export interface ColumnValuesComparer {
|
|
|
84
85
|
/**
|
|
85
86
|
* Column for which to compare values
|
|
86
87
|
*/
|
|
87
|
-
|
|
88
|
+
scope: AdaptableScope;
|
|
88
89
|
/**
|
|
89
90
|
* Comparer function to use
|
|
90
91
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdaptableMenuItem,
|
|
1
|
+
import { AdaptableMenuItem, ColumnMenuContext, ContextMenuContext, UserMenuItem } from '../PredefinedConfig/Common/Menu';
|
|
2
2
|
/**
|
|
3
3
|
* Options for managing menus in AdapTable
|
|
4
4
|
*/
|
|
@@ -9,14 +9,14 @@ export interface MenuOptions {
|
|
|
9
9
|
* @defaultValue true
|
|
10
10
|
* @gridInfoItem
|
|
11
11
|
*/
|
|
12
|
-
showAdaptableContextMenu?: boolean | ((menuItem: AdaptableMenuItem, menuContext:
|
|
12
|
+
showAdaptableContextMenu?: boolean | ((menuItem: AdaptableMenuItem, menuContext: ContextMenuContext) => boolean);
|
|
13
13
|
/**
|
|
14
14
|
* Show Adaptable Column Menu (or specific items); can be boolean value or function invoked for each menu item
|
|
15
15
|
*
|
|
16
16
|
* @defaultValue true
|
|
17
17
|
* @gridInfoItem
|
|
18
18
|
*/
|
|
19
|
-
showAdaptableColumnMenu?: boolean | ((menuItem: AdaptableMenuItem, menuContext:
|
|
19
|
+
showAdaptableColumnMenu?: boolean | ((menuItem: AdaptableMenuItem, menuContext: ColumnMenuContext) => boolean);
|
|
20
20
|
/**
|
|
21
21
|
* Adds 'Ungroup' Column Menu item to a row grouped column
|
|
22
22
|
*
|
|
@@ -25,25 +25,25 @@ export interface MenuOptions {
|
|
|
25
25
|
*/
|
|
26
26
|
showUngroupColumnMenuItem?: boolean;
|
|
27
27
|
/**
|
|
28
|
-
* Order in which
|
|
28
|
+
* Order in which AG Grid, AdapTable and User Menu items will appear in Column Menu
|
|
29
29
|
*
|
|
30
|
-
* @defaultValue '
|
|
30
|
+
* @defaultValue 'aggrid', 'adaptable', 'user'
|
|
31
31
|
* @gridInfoItem
|
|
32
32
|
*/
|
|
33
|
-
columnMenuOrder?: ('
|
|
33
|
+
columnMenuOrder?: ('aggrid' | 'adaptable' | 'user')[];
|
|
34
34
|
/**
|
|
35
|
-
* Order in which
|
|
35
|
+
* Order in which AG grid, AdapTable and User Menu items will appear in Context Menu
|
|
36
36
|
*
|
|
37
|
-
* @defaultValue '
|
|
37
|
+
* @defaultValue 'aggrid', 'adaptable', 'user'
|
|
38
38
|
* @gridInfoItem
|
|
39
39
|
*/
|
|
40
|
-
contextMenuOrder?: ('
|
|
40
|
+
contextMenuOrder?: ('aggrid' | 'adaptable' | 'user')[];
|
|
41
41
|
/**
|
|
42
42
|
* A collection of UserMenuItem objects to be added to the Column Header Menu (the one that appears as a dropdown in each Column Header).
|
|
43
43
|
*/
|
|
44
|
-
columnMenuItems?: UserMenuItem[];
|
|
44
|
+
columnMenuItems?: UserMenuItem<ColumnMenuContext>[];
|
|
45
45
|
/**
|
|
46
46
|
* A collection of UserMenuItem objects to be added to the Context Menu (the one that appears when you right-click on a cell, or cells, in the Grid).
|
|
47
47
|
*/
|
|
48
|
-
contextMenuItems?: UserMenuItem[];
|
|
48
|
+
contextMenuItems?: UserMenuItem<ContextMenuContext>[];
|
|
49
49
|
}
|
|
@@ -112,6 +112,14 @@ export interface NotificationsOptions {
|
|
|
112
112
|
* @gridInfoItem
|
|
113
113
|
*/
|
|
114
114
|
maxSystemMessagesInStore?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Displays the application icon in Notifications (if provided in `UserInterfaceOptions`)
|
|
117
|
+
* @defaultValue false
|
|
118
|
+
*/
|
|
119
|
+
showApplicationIcon?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Function providing Message to display in Alert; if empty, AdapTable provides dynamically
|
|
122
|
+
*/
|
|
115
123
|
alertMessageText?: (alertDefinition: AlertDefinition, dataChangedInfo?: DataChangedInfo) => string | undefined;
|
|
116
124
|
}
|
|
117
125
|
/**
|
|
@@ -49,9 +49,9 @@ export interface ToolPanelOptions {
|
|
|
49
49
|
/**
|
|
50
50
|
* Order of displayed ToolPanels in Sidebar
|
|
51
51
|
*
|
|
52
|
-
* @defaultValue ['filters', 'columns', '
|
|
52
|
+
* @defaultValue ['filters', 'columns', 'adaptable']
|
|
53
53
|
*/
|
|
54
|
-
toolPanelOrder?: ('
|
|
54
|
+
toolPanelOrder?: ('adaptable' | 'columns' | 'filters')[];
|
|
55
55
|
/**
|
|
56
56
|
* Display the Modules dropdown
|
|
57
57
|
*
|
|
@@ -111,7 +111,7 @@ export interface FilterPermittedValues extends BasePermittedValues {
|
|
|
111
111
|
* Prevents AdapTable from filtering the list of values client-side; When true, values is called each time the search bar is changed
|
|
112
112
|
* @default false
|
|
113
113
|
*/
|
|
114
|
-
|
|
114
|
+
suppressFilterSearchBar?: boolean;
|
|
115
115
|
values: (params: FilterPermittedValuesParams) => any[] | Promise<any[]>;
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
@@ -169,7 +169,7 @@ export interface ActionColumnButtonContext extends ButtonContext {
|
|
|
169
169
|
*/
|
|
170
170
|
primaryKeyValue: any;
|
|
171
171
|
/**
|
|
172
|
-
* Current Row Node
|
|
172
|
+
* Current AG Grid Row Node
|
|
173
173
|
*/
|
|
174
174
|
rowNode: RowNode;
|
|
175
175
|
}
|
|
@@ -178,7 +178,7 @@ export interface ActionColumnButtonContext extends ButtonContext {
|
|
|
178
178
|
*/
|
|
179
179
|
export interface ActionColumnSettings {
|
|
180
180
|
/**
|
|
181
|
-
* Preferred width (in pixels) for Column; if unset, calculated dynamically by
|
|
181
|
+
* Preferred width (in pixels) for Column; if unset, calculated dynamically by AG Grid
|
|
182
182
|
*/
|
|
183
183
|
width?: number;
|
|
184
184
|
/**
|
|
@@ -65,14 +65,14 @@ export interface AdaptableApi {
|
|
|
65
65
|
* Provides a number of column-related methods
|
|
66
66
|
*/
|
|
67
67
|
columnApi: ColumnApi;
|
|
68
|
-
/**
|
|
69
|
-
* Methods giving access to Adaptable State
|
|
70
|
-
*/
|
|
71
|
-
configApi: ConfigApi;
|
|
72
68
|
/**
|
|
73
69
|
* Provides access to the Conditional Style Module
|
|
74
70
|
*/
|
|
75
71
|
conditionalStyleApi: ConditionalStyleApi;
|
|
72
|
+
/**
|
|
73
|
+
* Methods giving access to Adaptable State
|
|
74
|
+
*/
|
|
75
|
+
configApi: ConfigApi;
|
|
76
76
|
/**
|
|
77
77
|
* Provides access to the Custom Sort Module
|
|
78
78
|
*/
|
|
@@ -81,6 +81,10 @@ export interface AdaptableApi {
|
|
|
81
81
|
* Provides access to the Dashboard
|
|
82
82
|
*/
|
|
83
83
|
dashboardApi: DashboardApi;
|
|
84
|
+
/**
|
|
85
|
+
* Provides run-time access to the Data Change History Module
|
|
86
|
+
**/
|
|
87
|
+
dataChangeHistoryApi: DataChangeHistoryApi;
|
|
84
88
|
/**
|
|
85
89
|
* Provides access to the Data Source Module
|
|
86
90
|
*/
|
|
@@ -161,6 +165,10 @@ export interface AdaptableApi {
|
|
|
161
165
|
* Methods related to displaying System Status and application health messages
|
|
162
166
|
*/
|
|
163
167
|
systemStatusApi: SystemStatusApi;
|
|
168
|
+
/**
|
|
169
|
+
* Functions related to run-time Team Sharing of AdapTable objects between colleagues
|
|
170
|
+
*/
|
|
171
|
+
teamSharingApi: TeamSharingApi;
|
|
164
172
|
/**
|
|
165
173
|
* Api methods related to Theme management
|
|
166
174
|
*/
|
|
@@ -173,14 +181,6 @@ export interface AdaptableApi {
|
|
|
173
181
|
* Manages User Interface Options where colours, styles and permitted values are configured
|
|
174
182
|
*/
|
|
175
183
|
userInterfaceApi: UserInterfaceApi;
|
|
176
|
-
/**
|
|
177
|
-
* Functions related to run-time Team Sharing of AdapTable objects between colleagues
|
|
178
|
-
*/
|
|
179
|
-
teamSharingApi: TeamSharingApi;
|
|
180
|
-
/**
|
|
181
|
-
* Provides run-time access to the Data Change History Module
|
|
182
|
-
**/
|
|
183
|
-
dataChangeHistoryApi: DataChangeHistoryApi;
|
|
184
184
|
/**
|
|
185
185
|
* Api methods used *internally* within AdapTable.
|
|
186
186
|
*/
|
package/src/Api/ColumnApi.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdaptableColumn } from '../PredefinedConfig/Common/AdaptableColumn';
|
|
2
2
|
import { DataType } from '../PredefinedConfig/Common/Enums';
|
|
3
|
-
import { RowNode } from '@ag-grid-community/all-modules';
|
|
3
|
+
import { Column, RowNode } from '@ag-grid-community/all-modules';
|
|
4
4
|
import { GridCell } from '../../types';
|
|
5
5
|
/**
|
|
6
6
|
* A large range of column-related functions in AdapTable
|
|
@@ -14,7 +14,7 @@ export interface ColumnApi {
|
|
|
14
14
|
* Retrieves 'ColumnType' property for a given Column
|
|
15
15
|
* @param columnId Colmun to use
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
getAgGridColumnType(columnId: string): string | string[];
|
|
18
18
|
/**
|
|
19
19
|
* Returns all visible Columns
|
|
20
20
|
* */
|
|
@@ -255,10 +255,15 @@ export interface ColumnApi {
|
|
|
255
255
|
*/
|
|
256
256
|
getAllColumnFriendlyNames(): string[];
|
|
257
257
|
/**
|
|
258
|
-
* Retrieves
|
|
259
|
-
* @param columnId
|
|
258
|
+
* Retrieves AG Grid's field property for the column
|
|
259
|
+
* @param columnId columnId to look up
|
|
260
260
|
*/
|
|
261
|
-
|
|
261
|
+
getAgGridColumnFieldForAdaptableColumn(columnId: string): string;
|
|
262
|
+
/**
|
|
263
|
+
* Retrieves AG Grid's column for an Adaptable column
|
|
264
|
+
* @param columnId columnId to look up
|
|
265
|
+
*/
|
|
266
|
+
getAgGridColumnForAdaptableColumn(columnId: string): Column;
|
|
262
267
|
/**
|
|
263
268
|
* Does Column use AdapTable's Filter Form
|
|
264
269
|
* @param columnId Column to Check
|
package/src/Api/EventApi.d.ts
CHANGED
|
@@ -196,7 +196,7 @@ export interface EventApi {
|
|
|
196
196
|
/**
|
|
197
197
|
* Fired when Adaptable is up and running - has no arguments.
|
|
198
198
|
* @param eventName AdaptableReady - use as: adaptableApi.eventApi.on('AdaptableReady', (adaptableReadyInfo: AdaptableReadyInfo) => { .....[do stuff]...})
|
|
199
|
-
* @param callback An `AdaptableReadyInfo` object which contains the adaptableApi and
|
|
199
|
+
* @param callback An `AdaptableReadyInfo` object which contains the adaptableApi and GridOptions
|
|
200
200
|
* @returns the unsubscribe function
|
|
201
201
|
*/
|
|
202
202
|
on(eventName: 'AdaptableReady', callback: (adaptableReadyInfo: AdaptableReadyInfo) => void): VoidFunction;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { GridOptions } from '@ag-grid-community/all-modules';
|
|
1
2
|
import { BaseEventInfo } from './BaseEventInfo';
|
|
2
3
|
/**
|
|
3
4
|
* Object returned by `AdaptableReady` event - fired when AdapTable has loaded
|
|
4
5
|
*/
|
|
5
6
|
export interface AdaptableReadyInfo extends BaseEventInfo {
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
+
* Underlying AG Grid instance
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
gridOptions: GridOptions;
|
|
10
11
|
}
|