@adaptabletools/adaptable 12.0.0-canary.8 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/base.css +6 -19
  2. package/bundle.cjs.js +125 -125
  3. package/index.css +7 -23
  4. package/package.json +2 -2
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableOptions/ActionOptions.d.ts +1 -1
  8. package/src/Api/FilterApi.d.ts +7 -2
  9. package/src/Api/Implementation/FilterApiImpl.d.ts +1 -0
  10. package/src/Api/Implementation/FilterApiImpl.js +5 -0
  11. package/src/Api/Implementation/InternalApiImpl.d.ts +4 -1
  12. package/src/Api/Implementation/InternalApiImpl.js +16 -3
  13. package/src/Api/Implementation/TeamSharingApiImpl.d.ts +1 -0
  14. package/src/Api/Implementation/TeamSharingApiImpl.js +5 -0
  15. package/src/Api/InternalApi.d.ts +4 -1
  16. package/src/Api/TeamSharingApi.d.ts +4 -0
  17. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +27 -6
  18. package/src/PredefinedConfig/Common/AdaptablePredicate.js +2 -2
  19. package/src/PredefinedConfig/Selection/GridCellRange.d.ts +19 -0
  20. package/src/PredefinedConfig/StatusBarState.d.ts +1 -1
  21. package/src/Redux/ActionsReducers/LayoutRedux.js +3 -0
  22. package/src/Strategy/AdaptableModuleBase.d.ts +10 -5
  23. package/src/Strategy/AdaptableModuleBase.js +6 -0
  24. package/src/Strategy/AlertModule.d.ts +2 -8
  25. package/src/Strategy/AlertModule.js +3 -0
  26. package/src/Strategy/DashboardModule.js +1 -0
  27. package/src/Strategy/ExportModule.js +1 -0
  28. package/src/Strategy/FormatColumnModule.js +3 -3
  29. package/src/Strategy/GridInfoModule.js +2 -0
  30. package/src/Strategy/Interface/IModule.d.ts +16 -4
  31. package/src/Strategy/LayoutModule.js +2 -0
  32. package/src/Strategy/TeamSharingModule.d.ts +11 -1
  33. package/src/Strategy/TeamSharingModule.js +104 -0
  34. package/src/Utilities/MenuItem.d.ts +4 -4
  35. package/src/Utilities/Services/TeamSharingService.js +0 -2
  36. package/src/View/AdaptableViewFactory.js +0 -2
  37. package/src/View/Alert/ActiveAlertsPanelItemLabel.d.ts +5 -0
  38. package/src/View/Alert/ActiveAlertsPanelItemLabel.js +22 -0
  39. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +2 -2
  40. package/src/View/ColorPicker.d.ts +1 -1
  41. package/src/View/Components/AdaptableDateInput/index.d.ts +1 -1
  42. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +8 -4
  43. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.d.ts +13 -1
  44. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +23 -15
  45. package/src/View/Components/Buttons/ButtonDelete.js +3 -3
  46. package/src/View/Components/Buttons/ButtonPause.js +11 -1
  47. package/src/View/Components/FilterForm/QuickFilterForm.js +23 -2
  48. package/src/View/Components/Panels/PanelWithButton.d.ts +2 -1
  49. package/src/View/Components/Panels/PanelWithImage.d.ts +3 -2
  50. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +4 -0
  51. package/src/View/Components/Popups/AdaptablePopupTeamSharing.js +1 -1
  52. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -11
  53. package/src/View/Components/ToolPanel/CustomToolPanelContent.js +1 -11
  54. package/src/View/Dashboard/CustomDashboardButton.js +2 -15
  55. package/src/View/Dashboard/CustomToolbarWrapper.js +2 -11
  56. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +6 -0
  57. package/src/View/GridInfo/GridInfoPopup.js +1 -1
  58. package/src/View/Layout/LayoutEditorStandalonePopup.js +3 -1
  59. package/src/View/Layout/LayoutPopup.d.ts +1 -1
  60. package/src/View/Layout/LayoutViewPanel.d.ts +1 -1
  61. package/src/View/Layout/Wizard/LayoutEditorWizard.d.ts +2 -27
  62. package/src/View/TeamSharing/SharedEntityDependencies.d.ts +8 -0
  63. package/src/View/TeamSharing/SharedEntityDependencies.js +27 -0
  64. package/src/View/TeamSharing/SharedEntityObjectView.d.ts +9 -0
  65. package/src/View/TeamSharing/SharedEntityObjectView.js +84 -0
  66. package/src/View/TeamSharing/TeamSharingApplyButton.d.ts +6 -0
  67. package/src/View/TeamSharing/TeamSharingApplyButton.js +15 -0
  68. package/src/View/UIHelper.d.ts +2 -2
  69. package/src/agGrid/ActionColumnRenderer.js +5 -11
  70. package/src/agGrid/Adaptable.d.ts +2 -26
  71. package/src/agGrid/Adaptable.js +51 -52
  72. package/src/agGrid/agGridMenuHelper.d.ts +1 -0
  73. package/src/agGrid/agGridMenuHelper.js +15 -4
  74. package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +6 -12
  75. package/src/components/AdaptableIconComponent/index.d.ts +2 -1
  76. package/src/components/AdaptableIconComponent/index.js +36 -3
  77. package/src/components/Datepicker/index.d.ts +1 -1
  78. package/src/components/Input/index.d.ts +1 -1
  79. package/src/components/List/ListGroupItem/index.d.ts +1 -1
  80. package/src/components/PopupWithFooter.d.ts +1 -1
  81. package/src/components/SimpleButton/index.js +1 -1
  82. package/src/components/Textarea/index.d.ts +1 -1
  83. package/src/components/icons/{color-drop.d.ts → ends-with.d.ts} +0 -0
  84. package/src/components/icons/{format-letter-ends-with.js → ends-with.js} +0 -0
  85. package/src/components/icons/{filter-outline.d.ts → filter.d.ts} +0 -0
  86. package/src/components/icons/{filter-outline.js → filter.js} +0 -0
  87. package/src/components/icons/index.d.ts +5 -7
  88. package/src/components/icons/index.js +7 -21
  89. package/src/components/icons/{format-letter-ends-with.d.ts → starts-with.d.ts} +0 -0
  90. package/src/components/icons/{format-letter-starts-with.js → starts-with.js} +0 -0
  91. package/src/metamodel/adaptable.metamodel.d.ts +75 -0
  92. package/src/metamodel/adaptable.metamodel.js +1 -1
  93. package/src/types.d.ts +1 -1
  94. package/version.d.ts +1 -1
  95. package/version.js +1 -1
  96. package/src/View/Alert/AlertSharedEntity.d.ts +0 -5
  97. package/src/View/Alert/AlertSharedEntity.js +0 -19
  98. package/src/View/CalculatedColumn/CalculatedColumnSharedEntity.d.ts +0 -5
  99. package/src/View/CalculatedColumn/CalculatedColumnSharedEntity.js +0 -20
  100. package/src/View/ConditionalStyle/ConditionalStyleSharedEntity.d.ts +0 -5
  101. package/src/View/ConditionalStyle/ConditionalStyleSharedEntity.js +0 -23
  102. package/src/View/CustomSort/CustomSortSharedEntity.d.ts +0 -6
  103. package/src/View/CustomSort/CustomSortSharedEntity.js +0 -24
  104. package/src/View/Export/ExportSharedEntity.d.ts +0 -5
  105. package/src/View/Export/ExportSharedEntity.js +0 -16
  106. package/src/View/Filter/FilterSharedEntity.d.ts +0 -5
  107. package/src/View/Filter/FilterSharedEntity.js +0 -15
  108. package/src/View/FormatColumn/FormatColumnSharedEntity.d.ts +0 -5
  109. package/src/View/FormatColumn/FormatColumnSharedEntity.js +0 -18
  110. package/src/View/FreeTextColumn/FreeTextColumnSharedEntity.d.ts +0 -5
  111. package/src/View/FreeTextColumn/FreeTextColumnSharedEntity.js +0 -24
  112. package/src/View/Layout/LayoutSharedEntity.d.ts +0 -5
  113. package/src/View/Layout/LayoutSharedEntity.js +0 -15
  114. package/src/View/PlusMinus/PlusMinusSharedEntity.d.ts +0 -5
  115. package/src/View/PlusMinus/PlusMinusSharedEntity.js +0 -21
  116. package/src/View/Query/NamedQuerySharedEntity.d.ts +0 -5
  117. package/src/View/Query/NamedQuerySharedEntity.js +0 -19
  118. package/src/View/Shortcut/ShortcutSharedEntity.d.ts +0 -5
  119. package/src/View/Shortcut/ShortcutSharedEntity.js +0 -19
  120. package/src/View/TeamSharing/TeamSharingPopup.d.ts +0 -23
  121. package/src/View/TeamSharing/TeamSharingPopup.js +0 -163
  122. package/src/agGrid/rowEditIcons.d.ts +0 -5
  123. package/src/agGrid/rowEditIcons.js +0 -10
  124. package/src/components/icons/color-drop.js +0 -7
  125. package/src/components/icons/format-letter-starts-with.d.ts +0 -3
  126. package/src/components/icons/pause-red.d.ts +0 -3
  127. package/src/components/icons/pause-red.js +0 -7
package/index.css CHANGED
@@ -2649,7 +2649,7 @@ template {
2649
2649
  --ab-cmp-adaptable-object-compact-list__header__padding: var(--ab-space-2);
2650
2650
  --ab-cmp-adaptable-object-compact-list__header__margin-bottom: var(--ab-space-1);
2651
2651
  --ab-cmp-adaptable-object-compact-list__header__font-size: var(--ab-font-size-4);
2652
- --ab-cmp-adaptable-object-compact-list-item-name__width: 80px;
2652
+ --ab-cmp-adaptable-object-compact-list-item-name__width: 95px;
2653
2653
  --ab-cmp-adaptable-object-compact-list-item-name__padding: var(--ab-space-1);
2654
2654
  --ab-cmp-adaptable-object-compact-list-item-name__margin-right: var(--ab-space-1);
2655
2655
  --ab-cmp-adaptable-object-compact-list-item-name__font-size: var(--ab-font-size-4); }
@@ -2672,6 +2672,10 @@ template {
2672
2672
  --ab-cmp-adaptable-statusbar__font-weight: 400;
2673
2673
  --ab-cmp-adaptable-statusbar__border: 1px solid var(--ab-color-primary); }
2674
2674
 
2675
+ :root {
2676
+ --ab-cmp-adaptable-shared-entity-shared-object__border: 2px solid var(--ab-color-primary);
2677
+ --ab-cmp-adaptable-shared-entity-shared-object__nesting-color: var(--ab-color-primary); }
2678
+
2675
2679
  .ab-Radio-input:focus + svg rect {
2676
2680
  stroke: var(--ab-color-accent);
2677
2681
  stroke-width: 2; }
@@ -4113,28 +4117,8 @@ button.ab-StatusBar__SubPanel:hover {
4113
4117
  background-color: var(--ab-cmp-adaptable-statusbar-sub-panel-icon__background-color-hover);
4114
4118
  cursor: pointer; }
4115
4119
 
4116
- .ab-StatusBar {
4117
- display: flex;
4118
- border-right: var(--ab-cmp-adaptable-statusbar__border);
4119
- border-left: var(--ab-cmp-adaptable-statusbar__border); }
4120
-
4121
- .ab-StatusBar__SubPanel {
4122
- padding: var(--ab-cmp-adaptable-statusbar-sub-panel__padding);
4123
- border: 0;
4124
- background: none;
4125
- font-weight: 400;
4126
- border-right: var(--ab-cmp-adaptable-statusbar__border); }
4127
-
4128
- .ab-StatusBar__SubPanel:last-child {
4129
- border-right: 0; }
4130
-
4131
- .ab-StatusBar__SubPanel,
4132
- .ab-StatusBar__SubPanel .ab-SimpleButton {
4133
- color: var(--ab-cmp-adaptable-statusbar__color); }
4134
-
4135
- button.ab-StatusBar__SubPanel:hover {
4136
- background-color: var(--ab-cmp-adaptable-statusbar-sub-panel-icon__background-color-hover);
4137
- cursor: pointer; }
4120
+ .ab-Shared-Entity-Shared-Object {
4121
+ border: var(--ab-cmp-adaptable-shared-entity-shared-object__border); }
4138
4122
 
4139
4123
  .ab-alert--error {
4140
4124
  background: var(--ab-color-error); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "12.0.0-canary.8",
3
+ "version": "12.0.1",
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
  "keywords": [
6
6
  "web-components",
@@ -56,6 +56,6 @@
56
56
  "uuid": "^3.3.2"
57
57
  },
58
58
  "peerDependencies": {
59
- "@ag-grid-community/all-modules": ">=27.2.0"
59
+ "@ag-grid-community/all-modules": ">=27.3.0"
60
60
  }
61
61
  }
@@ -1,2 +1,2 @@
1
- declare const _default: 1655668818436;
1
+ declare const _default: 1656489937822;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1655668818436;
3
+ exports.default = 1656489937822;
@@ -131,7 +131,7 @@ export interface ActionRowFormOptions {
131
131
  /**
132
132
  * Custom form buttons provider. If provided, the custom implementation is responsible for firing the 'ActionRowSubmitted' and/or invoking the 'onFormSubmit' callback (if necessary).
133
133
  */
134
- formButtons?: AdaptableButton<FormContext>[];
134
+ formButtons?: AdaptableButton<ActionRowContext>[];
135
135
  /**
136
136
  * Function which is invoked when the form in an Action Row is submitted via a standard button (provided by AdapTable). This is not invoked when custom form buttons are provided!
137
137
  *
@@ -42,10 +42,15 @@ export interface FilterApi {
42
42
  */
43
43
  isQuickFilterVisible(): boolean;
44
44
  /**
45
- * Retrieves all the Column Filters in the Column Filter State (of Predefined Config)
45
+ * Retrieves all Column Filters in currently applied Layout
46
46
  * @returns column filters
47
47
  */
48
48
  getColumnFilters(): ColumnFilter[];
49
+ /**
50
+ * Retrieves all Column Filters in a given Layout
51
+ * @param layoutName Layout to retrieve Column Filters for
52
+ */
53
+ getColumnFiltersForLayout(layoutName: string): ColumnFilter[];
49
54
  /**
50
55
  * Sets Column Filters - will replace filters for existing column and leave other column filters in place
51
56
  * @param columnFilters Column Filters to set
@@ -72,7 +77,7 @@ export interface FilterApi {
72
77
  */
73
78
  clearColumnFilters(): void;
74
79
  /**
75
- * Clears existing Column Filters and then sets the new ones
80
+ * Clears existing Column Filters and sets new ones
76
81
  * @param columnFilters Column Filters to set
77
82
  */
78
83
  clearAndSetColumnFilter(columnFilters: ColumnFilter[]): void;
@@ -15,6 +15,7 @@ export declare class FilterApiImpl extends ApiBase implements FilterApi {
15
15
  isQuickFilterAvailable(): boolean;
16
16
  isQuickFilterVisible(): boolean;
17
17
  getColumnFilters(): ColumnFilter[];
18
+ getColumnFiltersForLayout(layoutName: string): ColumnFilter[];
18
19
  setColumnFilter(columnFilters: ColumnFilter[]): ColumnFilter[] | null;
19
20
  clearColumnFilter(columnFilter: ColumnFilter): void;
20
21
  clearColumnFilterByColumns(columns: string[]): void;
@@ -47,6 +47,11 @@ class FilterApiImpl extends ApiBase_1.ApiBase {
47
47
  const currentLayout = this.adaptable.api.layoutApi.getCurrentLayout();
48
48
  return (_a = currentLayout.ColumnFilters) !== null && _a !== void 0 ? _a : [];
49
49
  }
50
+ getColumnFiltersForLayout(layoutName) {
51
+ var _a;
52
+ const layout = this.adaptable.api.layoutApi.getLayoutByName(layoutName);
53
+ return (_a = layout.ColumnFilters) !== null && _a !== void 0 ? _a : [];
54
+ }
50
55
  setColumnFilter(columnFilters) {
51
56
  columnFilters.forEach((columnFilter) => {
52
57
  if (!columnFilter.Predicate) {
@@ -114,7 +114,10 @@ export declare class InternalApiImpl extends ApiBase implements InternalApi {
114
114
  getLabelForButton(button: AdaptableButton<BaseContext>, context: BaseContext): string | undefined;
115
115
  getTooltipForButton(button: AdaptableButton<BaseContext>, context: BaseContext): string | undefined;
116
116
  getStyleForButton(button: AdaptableButton<BaseContext>, context: BaseContext): ButtonStyle | undefined;
117
- getIconForButton(button: AdaptableButton<BaseContext>, context: BaseContext): AdaptableIcon | undefined;
117
+ getIconForButton(button: AdaptableButton<BaseContext>, context: BaseContext, defaultWidthHeight?: {
118
+ height: number | string;
119
+ width: number | string;
120
+ }): AdaptableIcon | undefined;
118
121
  isDocumentationLinksDisplayed(): boolean;
119
122
  getQueryPreviewData(): any;
120
123
  getLocalTeamSharingEntities(): SharedEntity[];
@@ -16,6 +16,7 @@ const LoggingHelper_1 = require("../../Utilities/Helpers/LoggingHelper");
16
16
  const ArrayExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/ArrayExtensions"));
17
17
  const AdaptableAlert_1 = require("../../PredefinedConfig/Common/AdaptableAlert");
18
18
  const waitForCondition_1 = require("../../Utilities/waitForCondition");
19
+ const AdaptableIconComponent_1 = require("../../components/AdaptableIconComponent");
19
20
  class InternalApiImpl extends ApiBase_1.ApiBase {
20
21
  getSystemState() {
21
22
  return this.getAdaptableState().System;
@@ -360,16 +361,28 @@ class InternalApiImpl extends ApiBase_1.ApiBase {
360
361
  return button.buttonStyle;
361
362
  }
362
363
  }
363
- getIconForButton(button, context) {
364
+ getIconForButton(button, context, defaultWidthHeight) {
365
+ var _a, _b;
364
366
  if (!button.icon) {
365
367
  return;
366
368
  }
369
+ let buttonIcon;
367
370
  if (button.icon != null && typeof button.icon === 'function') {
368
- return button.icon(button, context);
371
+ buttonIcon = button.icon(button, context);
369
372
  }
370
373
  else {
371
- return button.icon;
374
+ buttonIcon = button.icon;
375
+ }
376
+ if (!buttonIcon) {
377
+ return;
378
+ }
379
+ if (AdaptableIconComponent_1.isAdaptableInternalIcon(buttonIcon) || AdaptableIconComponent_1.isAdaptableExternalIcon(buttonIcon)) {
380
+ const defaultIconWidth = (_a = defaultWidthHeight === null || defaultWidthHeight === void 0 ? void 0 : defaultWidthHeight.width) !== null && _a !== void 0 ? _a : 'var(--ab-cmp-simple-button__width)';
381
+ const defaultIconHeight = (_b = defaultWidthHeight === null || defaultWidthHeight === void 0 ? void 0 : defaultWidthHeight.height) !== null && _b !== void 0 ? _b : 'var(--ab-cmp-simple-button__height)';
382
+ const buttonIconStyle = Object.assign({}, { width: defaultIconWidth, height: defaultIconHeight }, buttonIcon.style);
383
+ buttonIcon.style = buttonIconStyle;
372
384
  }
385
+ return buttonIcon;
373
386
  }
374
387
  isDocumentationLinksDisplayed() {
375
388
  return this.adaptable.adaptableOptions.userInterfaceOptions.showDocumentationLinks;
@@ -15,5 +15,6 @@ export declare class TeamSharingApiImpl extends ApiBase implements TeamSharingAp
15
15
  importSharedEntry(sharedEntity: SharedEntity): void;
16
16
  private getTeamSharingState;
17
17
  getLoadedSharedEntities(): SharedEntity[];
18
+ getSharedEntryDependencies(sharedEntity: SharedEntity): SharedEntity[];
18
19
  triggerLoadingTeamSharingEntries(): void;
19
20
  }
@@ -78,6 +78,11 @@ class TeamSharingApiImpl extends ApiBase_1.ApiBase {
78
78
  getLoadedSharedEntities() {
79
79
  return this.getTeamSharingState().SharedEntities;
80
80
  }
81
+ getSharedEntryDependencies(sharedEntity) {
82
+ var _a;
83
+ const allEntities = this.getLoadedSharedEntities();
84
+ return ((_a = sharedEntity === null || sharedEntity === void 0 ? void 0 : sharedEntity.EntityDependencyIds) !== null && _a !== void 0 ? _a : []).map((id) => allEntities.find((entity) => entity.Uuid === id));
85
+ }
81
86
  triggerLoadingTeamSharingEntries() {
82
87
  this.adaptable.api.internalApi.dispatchReduxAction(TeamSharingRedux.TeamSharingGet());
83
88
  }
@@ -117,7 +117,10 @@ export interface InternalApi {
117
117
  getLabelForButton(button: AdaptableButton<BaseContext>, context: BaseContext): string | undefined;
118
118
  getTooltipForButton(button: AdaptableButton<BaseContext>, context: BaseContext): string | undefined;
119
119
  getStyleForButton(button: AdaptableButton<BaseContext>, context: BaseContext): ButtonStyle | undefined;
120
- getIconForButton(button: AdaptableButton<BaseContext>, context: BaseContext): AdaptableIcon | undefined;
120
+ getIconForButton(button: AdaptableButton<BaseContext>, context: BaseContext, defaultWidthHeight?: {
121
+ height: number | string;
122
+ width: number | string;
123
+ }): AdaptableIcon | undefined;
121
124
  dispatchReduxAction(action: Action): void;
122
125
  waitForTeamSharingImportEnd(): Promise<boolean>;
123
126
  getLocalTeamSharingEntities(): SharedEntity[];
@@ -69,4 +69,8 @@ export interface TeamSharingApi {
69
69
  * By default shared entries are loaded when the Team Sharing popup is visible.
70
70
  */
71
71
  triggerLoadingTeamSharingEntries(): void;
72
+ /**
73
+ * Retrieves shared entry dependencies.
74
+ */
75
+ getSharedEntryDependencies(sharedEntry: SharedEntity): SharedEntity[];
72
76
  }
@@ -1,25 +1,44 @@
1
- import { CSSProperties } from 'react';
1
+ import * as React from 'react';
2
2
  /**
3
3
  * Defines an icon to be used in AdapTable (e.g. in Dashboard Header, Buttons, Menu, etc.)
4
4
  */
5
- export declare type AdaptableIcon = AdaptableInternalIcon | AdaptableExternalIcon;
5
+ export declare type AdaptableIcon = AdaptableInternalIcon | AdaptableExternalIcon | AdaptableElementIcon;
6
6
  /**
7
7
  * Defines an icon from the internal AdapTable icon set
8
8
  */
9
9
  export interface AdaptableInternalIcon extends AdaptableBaseIcon {
10
+ /**
11
+ * The name of the icon to use (referencing the AdapTable Icon Library)
12
+ */
10
13
  name: AdaptableInternalIconName;
14
+ /**
15
+ * The size (in pixels) of the SVG icon (defaults to `17px`)
16
+ *
17
+ */
11
18
  size?: number;
12
19
  }
13
20
  /**
14
21
  * Defines an icon from an external source
15
22
  */
16
23
  export interface AdaptableExternalIcon extends AdaptableBaseIcon {
24
+ /**
25
+ * The URL of the icon to use
26
+ */
17
27
  src: string;
18
28
  }
29
+ /**
30
+ * Defines an icon as a provided DOM element or HTML string
31
+ */
32
+ export interface AdaptableElementIcon {
33
+ /**
34
+ * The icon to display, either a DOM element or HTML string
35
+ */
36
+ element: HTMLElement | string;
37
+ }
19
38
  /**
20
39
  * Base interface for AdaptableIcon
21
40
  */
22
- interface AdaptableBaseIcon {
41
+ export interface AdaptableBaseIcon {
23
42
  /**
24
43
  * The class name of the icon
25
44
  */
@@ -27,7 +46,9 @@ interface AdaptableBaseIcon {
27
46
  /**
28
47
  * CSS Properties
29
48
  */
30
- style?: CSSProperties;
49
+ style?: React.CSSProperties;
31
50
  }
32
- export declare type AdaptableInternalIconName = string;
33
- export {};
51
+ /**
52
+ * All AdapTable internal icon names
53
+ */
54
+ export declare type AdaptableInternalIconName = 'add' | 'add-row' | 'alert' | 'align-justify' | 'analysis' | 'application' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrowexpand' | 'attach-file' | 'blanks' | 'boolean-list' | 'broadcast' | 'build' | 'bulk-update' | 'calculated-column' | 'calendar' | 'call' | 'campaign' | 'cell-summary' | 'cell-validation' | 'chart' | 'chat' | 'check' | 'check-circle' | 'checked' | 'clear' | 'clone' | 'close' | 'cloud-upload' | 'collapse' | 'column-add' | 'column-chooser' | 'column-filter' | 'comment' | 'conditional-style' | 'contains' | 'custom-sort' | 'dashboard' | 'data-set' | 'date-range' | 'delete' | 'division' | 'dock' | 'drag' | 'edit' | 'ends-with' | 'equal' | 'equation' | 'error' | 'expand' | 'exponent' | 'export' | 'export-data' | 'fast-backward' | 'fast-forward' | 'filter' | 'flashing-cell' | 'folder' | 'folder-open' | 'folder-shared' | 'format-column' | 'freetext-column' | 'function' | 'gradient-column' | 'greater-than' | 'greater-than-or-equal' | 'hide-column' | 'history' | 'home' | 'import-export' | 'info' | 'instrument' | 'invalid' | 'ipushpull' | 'justify' | 'layout' | 'less-than' | 'less-than-or-equal' | 'list' | 'login' | 'logout' | 'menu' | 'minus' | 'multiplication' | 'newpage' | 'news' | 'non-blanks' | 'not-contains' | 'not-equal' | 'ok' | 'pause' | 'percent' | 'percent-bar' | 'person' | 'pie-chart' | 'play' | 'plus' | 'plus-minus' | 'query' | 'quick-search' | 'quote' | 'refresh' | 'regex' | 'reminder' | 'save' | 'schedule' | 'settings' | 'shortcut' | 'show-column' | 'smart-edit' | 'sort-asc' | 'sort-desc' | 'spark-line' | 'starts-with' | 'state-management' | 'statusbar' | 'stop' | 'system-status' | 'tab-unselected' | 'team-share' | 'theme' | 'tool-panel' | 'track-changes' | 'trash' | 'triangle-down' | 'triangle-up' | 'unchecked' | 'undo' | 'updated-row' | 'upload' | 'warning';
@@ -266,7 +266,7 @@ exports.SystemPredicateDefs = [
266
266
  {
267
267
  id: 'StartsWith',
268
268
  label: 'Starts With',
269
- icon: { name: 'format-letter-starts-with' },
269
+ icon: { name: 'starts-with' },
270
270
  columnScope: { DataTypes: ['String'] },
271
271
  moduleScope: ['filter', 'alert', 'flashingcell', 'conditionalstyle'],
272
272
  inputs: [{ type: 'text' }],
@@ -284,7 +284,7 @@ exports.SystemPredicateDefs = [
284
284
  {
285
285
  id: 'EndsWith',
286
286
  label: 'Ends With',
287
- icon: { name: 'format-letter-ends-with' },
287
+ icon: { name: 'ends-with' },
288
288
  columnScope: { DataTypes: ['String'] },
289
289
  moduleScope: ['filter', 'alert', 'flashingcell', 'conditionalstyle'],
290
290
  inputs: [{ type: 'text' }],
@@ -1,7 +1,26 @@
1
+ /**
2
+ * Defines a range of Cell - used in Grid Api Selection methods
3
+ * Typically use either PrimaryKey Values or Row Indexes
4
+ */
1
5
  export interface GridCellRange {
6
+ /**
7
+ * Columns to select
8
+ */
2
9
  columnIds: string[];
10
+ /**
11
+ * Primary Key value of row at start of range
12
+ */
3
13
  primaryKeyValueStart?: any;
14
+ /**
15
+ * Primary Key value of row at end of range
16
+ */
4
17
  primaryKeyValueEnd?: any;
18
+ /**
19
+ * Index of row at start of range
20
+ */
5
21
  rowIndexStart?: any;
22
+ /**
23
+ * Index of row at end of range
24
+ */
6
25
  rowIndexEnd?: any;
7
26
  }
@@ -5,7 +5,7 @@ import { AdaptableStatusBarPanel } from './Common/Types';
5
5
  */
6
6
  export interface StatusBarState extends ConfigState {
7
7
  /**
8
- * Adaptable Status Bars to display - up to 3 can be shown
8
+ * Adaptable Status Bars to display - can be unlimited and displayed in 3 locations
9
9
  * @defaultValue null
10
10
  */
11
11
  StatusBars?: AdaptableStatusBar[];
@@ -165,6 +165,9 @@ const LayoutReducer = (state = initialState, action) => {
165
165
  const currentLayoutName = setColumnCaptionAction.layoutName;
166
166
  let currentLayout = state.Layouts.find((l) => l.Name === currentLayoutName);
167
167
  if (currentLayout) {
168
+ if (!currentLayout.ColumnHeadersMap) {
169
+ currentLayout.ColumnHeadersMap = {};
170
+ }
168
171
  currentLayout.ColumnHeadersMap[setColumnCaptionAction.columnId] =
169
172
  setColumnCaptionAction.caption;
170
173
  return Object.assign({}, state, {
@@ -11,6 +11,7 @@ import { AdaptableApi } from '../Api/AdaptableApi';
11
11
  import { AccessLevel } from '../PredefinedConfig/Common/Entitlement';
12
12
  import { CalculatedColumn } from '../PredefinedConfig/CalculatedColumnState';
13
13
  import { FreeTextColumn } from '../PredefinedConfig/FreeTextColumnState';
14
+ import { AdaptableInternalIconName } from '../PredefinedConfig/Common/AdaptableIcon';
14
15
  /**
15
16
  * Base class for all strategies and does most of the work of creating menus
16
17
  */
@@ -18,10 +19,14 @@ export declare abstract class AdaptableModuleBase implements IModule {
18
19
  protected api: AdaptableApi;
19
20
  moduleInfo: ModuleInfo;
20
21
  AccessLevel: AccessLevel;
21
- constructor(module: AdaptableModule, friendlyName: string, glyph: string, popup: string, description: string, api: AdaptableApi);
22
+ constructor(module: AdaptableModule, friendlyName: string, glyph: AdaptableInternalIconName, popup: string, description: string, api: AdaptableApi);
22
23
  protected getViewAccessLevel(): AccessLevel;
23
24
  protected getEditAccessLevel(): AccessLevel;
24
25
  isModuleAvailable(): boolean;
26
+ /**
27
+ * Used inside the unified UI to show the share button
28
+ */
29
+ isModuleObjectsShareable(): boolean;
25
30
  isModuleEditable(): boolean;
26
31
  updateOldConfig(): void;
27
32
  getModuleAdaptableObjects(): AdaptableObject[];
@@ -37,12 +42,12 @@ export declare abstract class AdaptableModuleBase implements IModule {
37
42
  createMainMenuItemShowPopup({ Label, ComponentName, Icon, PopupParams, }: {
38
43
  Label: string;
39
44
  ComponentName: string;
40
- Icon: string;
45
+ Icon: AdaptableInternalIconName;
41
46
  PopupParams?: ModuleParams;
42
47
  }): MenuItemShowPopup;
43
- createColumnMenuItemClickFunction(Label: string, Icon: string, ClickFunction: () => void): MenuItemDoClickFunction;
44
- createColumnMenuItemReduxAction(Label: string, Icon: string, Action: Action): MenuItemDoReduxAction;
45
- createColumnMenuItemShowPopup(Label: string, ComponentName: string, Icon: string, PopupParams?: ModuleParams): MenuItemShowPopup;
48
+ createColumnMenuItemClickFunction(Label: string, Icon: AdaptableInternalIconName, ClickFunction: () => void): MenuItemDoClickFunction;
49
+ createColumnMenuItemReduxAction(Label: string, Icon: AdaptableInternalIconName, Action: Action): MenuItemDoReduxAction;
50
+ createColumnMenuItemShowPopup(Label: string, ComponentName: string, Icon: AdaptableInternalIconName, PopupParams?: ModuleParams): MenuItemShowPopup;
46
51
  canCreateColumnMenuItem(column: AdaptableColumn, minimumAccessLevel: AccessLevel, functionType?: 'sort' | 'editable' | 'style' | 'filter' | 'quickfilter' | 'numeric'): boolean;
47
52
  getTeamSharingAction(): TeamSharingImportInfo<AdaptableObject> | undefined;
48
53
  getModuleNamedQueryReferences(): string[];
@@ -36,6 +36,12 @@ class AdaptableModuleBase {
36
36
  isModuleAvailable() {
37
37
  return this.hasRequiredAccessLevel(this.getViewAccessLevel());
38
38
  }
39
+ /**
40
+ * Used inside the unified UI to show the share button
41
+ */
42
+ isModuleObjectsShareable() {
43
+ return true;
44
+ }
39
45
  isModuleEditable() {
40
46
  return this.hasRequiredAccessLevel(this.getEditAccessLevel());
41
47
  }
@@ -4,7 +4,7 @@ import { AdaptableAlert } from '../PredefinedConfig/Common/AdaptableAlert';
4
4
  import { AdaptableMenuItem, ContextMenuContext } from '../PredefinedConfig/Common/Menu';
5
5
  import { TeamSharingImportInfo } from '../PredefinedConfig/TeamSharingState';
6
6
  import { AdaptableModuleBase } from './AdaptableModuleBase';
7
- import { AdaptableModuleView, AdaptableObjectView, IModule } from './Interface/IModule';
7
+ import { AdaptableModuleView, AdaptableObjectCompactView, AdaptableObjectView, IModule } from './Interface/IModule';
8
8
  import { AdaptableObject } from '../PredefinedConfig/Common/AdaptableObject';
9
9
  export declare class AlertModule extends AdaptableModuleBase implements IModule {
10
10
  constructor(api: AdaptableApi);
@@ -25,13 +25,7 @@ export declare class AlertModule extends AdaptableModuleBase implements IModule
25
25
  private isAlertPredicateTriggered;
26
26
  private isAlertDefinitionForRowChangeEvent;
27
27
  getTeamSharingAction(): TeamSharingImportInfo<AlertDefinition>;
28
- toViewCompact(alert: AdaptableAlert): {
29
- item: {
30
- name: string;
31
- values: string[];
32
- };
33
- abObject: AdaptableAlert;
34
- };
28
+ toViewCompact(alert: AdaptableAlert): AdaptableObjectCompactView;
35
29
  toView(alert: AlertDefinition): AdaptableObjectView;
36
30
  toViewAll(): AdaptableObjectView[];
37
31
  getViewProperties(): AdaptableModuleView;
@@ -17,6 +17,7 @@ const getAlertBehaviourViewItems_1 = require("./Utilities/getAlertBehaviourViewI
17
17
  const AlertEmptyView_1 = require("../View/Alert/AlertEmptyView");
18
18
  const AlertStatusSubPanel_1 = require("../View/Alert/AlertStatusSubPanel");
19
19
  const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
20
+ const ActiveAlertsPanelItemLabel_1 = require("../View/Alert/ActiveAlertsPanelItemLabel");
20
21
  class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
21
22
  constructor(api) {
22
23
  super(ModuleConstants.AlertModuleId, 'Alert', 'alert', 'AlertPopup', 'Get notified when things happen in Adaptable that you need to know about', api);
@@ -249,6 +250,7 @@ class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
249
250
  return {
250
251
  item: {
251
252
  name: alert.header,
253
+ label: ActiveAlertsPanelItemLabel_1.ActiveAlertsPanelItemLabel,
252
254
  values: [alert.message],
253
255
  },
254
256
  abObject: alert,
@@ -285,6 +287,7 @@ class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
285
287
  getEditWizard: () => AlertWizard_1.AlertWizard,
286
288
  getStatusBarPanelProps: () => {
287
289
  return {
290
+ popoverMinWidth: 360,
288
291
  view: AlertStatusSubPanel_1.AlertStatusPanel,
289
292
  };
290
293
  },
@@ -63,6 +63,7 @@ class DashboardModule extends AdaptableModuleBase_1.AdaptableModuleBase {
63
63
  {
64
64
  label: this.moduleInfo.FriendlyName,
65
65
  isVisible: true,
66
+ module: this.moduleInfo.ModuleName,
66
67
  icon: {
67
68
  name: 'dashboard',
68
69
  },
@@ -76,6 +76,7 @@ class ExportModule extends AdaptableModuleBase_1.AdaptableModuleBase {
76
76
  return [
77
77
  {
78
78
  label: 'Export Selected Cells',
79
+ module: this.moduleInfo.ModuleName,
79
80
  isVisible: true,
80
81
  icon: { name: this.moduleInfo.Glyph },
81
82
  subItems: menuItems,
@@ -196,14 +196,14 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
196
196
  let formatColumn = this.api.formatColumnApi.getFormatColumnForColumnId(column.columnId);
197
197
  let hasCheckBox = formatColumn && ((_a = formatColumn.ColumnStyle) === null || _a === void 0 ? void 0 : _a.CheckBoxStyle);
198
198
  if (hasCheckBox) {
199
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Remove Checkbox', 'check-box-outline', () => {
199
+ returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Remove Checkbox', 'unchecked', () => {
200
200
  this.api.formatColumnApi.deleteFormatColumn(formatColumn);
201
201
  }));
202
202
  }
203
203
  else {
204
204
  // const test = this.api.formatColumnApi.getCheckBoxStyleFormatColumn(column);
205
205
  if (formatColumn) {
206
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Show as Checkbox', 'check-box', () => {
206
+ returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Show as Checkbox', 'checked', () => {
207
207
  formatColumn.ColumnStyle = {
208
208
  CheckBoxStyle: true,
209
209
  };
@@ -212,7 +212,7 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
212
212
  }));
213
213
  }
214
214
  else {
215
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Show as Checkbox', 'check-box', () => {
215
+ returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Show as Checkbox', 'checked', () => {
216
216
  let newFormatColumn = {
217
217
  Scope: {
218
218
  ColumnIds: [column.columnId],
@@ -42,6 +42,7 @@ class GridInfoModule extends AdaptableModuleBase_1.AdaptableModuleBase {
42
42
  return [
43
43
  {
44
44
  label: 'Show Info',
45
+ module: this.moduleInfo.ModuleName,
45
46
  isVisible: true,
46
47
  icon: {
47
48
  name: this.moduleInfo.Glyph,
@@ -90,6 +91,7 @@ class GridInfoModule extends AdaptableModuleBase_1.AdaptableModuleBase {
90
91
  return [
91
92
  {
92
93
  label: 'Show Info',
94
+ module: this.moduleInfo.ModuleName,
93
95
  isVisible: true,
94
96
  icon: {
95
97
  name: this.moduleInfo.Glyph,
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { CSSProperties } from 'react';
2
2
  import { AdaptableColumn } from '../../PredefinedConfig/Common/AdaptableColumn';
3
3
  import { AdaptableMenuItem, ContextMenuContext } from '../../PredefinedConfig/Common/Menu';
4
4
  import { AdaptableModule } from '../../PredefinedConfig/Common/Types';
@@ -9,13 +9,13 @@ import { CalculatedColumn } from '../../PredefinedConfig/CalculatedColumnState';
9
9
  import { FreeTextColumn } from '../../PredefinedConfig/FreeTextColumnState';
10
10
  import { AdaptableOnePageWizardProps } from '../../View/Wizard/Interface/IAdaptableWizard';
11
11
  import * as Redux from 'redux';
12
- import { SuspendableObject } from '../../../types';
12
+ import { AdaptableInternalIconName, SuspendableObject } from '../../../types';
13
13
  import { StatusBarPanelProps } from '../../View/StatusBar/StatusBarPanel';
14
14
  import { StrictExtract } from '../../Utilities/Extensions/TypeExtensions';
15
15
  export interface ModuleInfo {
16
16
  ModuleName: AdaptableModule;
17
17
  FriendlyName: string;
18
- Glyph: string;
18
+ Glyph: AdaptableInternalIconName;
19
19
  Popup: string;
20
20
  Description: string;
21
21
  HelpPage: string;
@@ -34,7 +34,9 @@ export interface AdaptableObjectItemView {
34
34
  /**
35
35
  * Custom name for the property name
36
36
  */
37
- label?: string;
37
+ label?: string | React.FunctionComponent<{
38
+ data: AdaptableObject | SuspendableObject;
39
+ }>;
38
40
  /**
39
41
  * How the item is rendered.
40
42
  * Defaults to tags.
@@ -62,6 +64,14 @@ export interface AdaptableObjectView {
62
64
  * Reference to the underling object.
63
65
  */
64
66
  abObject: AdaptableObject;
67
+ /**
68
+ * Style added on the item wrapper.
69
+ */
70
+ style?: CSSProperties;
71
+ /**
72
+ * ClassName added on the item wrapper.
73
+ */
74
+ className?: string;
65
75
  }
66
76
  export interface AdaptableObjectCompactView {
67
77
  item: AdaptableObjectItemView;
@@ -77,6 +87,7 @@ export interface AdaptableModuleView {
77
87
  * Allows to add custom actions.
78
88
  */
79
89
  actions?: AdaptableModuleViewAction[];
90
+ onMount?: () => void;
80
91
  onOpenEditPopup?: (abObject?: AdaptableObject) => void;
81
92
  getDeleteAction?: (abObject: AdaptableObject) => Redux.Action;
82
93
  getCompactDeleteAction?: (abObject: AdaptableObject) => Redux.Action;
@@ -122,6 +133,7 @@ export interface IModule {
122
133
  setModuleEntitlement(): void;
123
134
  isModuleAvailable(): boolean;
124
135
  isModuleEditable(): boolean;
136
+ isModuleObjectsShareable(): boolean;
125
137
  getTeamSharingAction(): TeamSharingImportInfo<AdaptableObject> | undefined;
126
138
  getModuleAdaptableObjects(): AdaptableObject[];
127
139
  getTeamSharingReferences(adaptableObject: AdaptableObject): TeamSharingReferences;
@@ -162,6 +162,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
162
162
  returnColumnMenuItems.push({
163
163
  label: 'Select',
164
164
  isVisible: true,
165
+ module: this.moduleInfo.ModuleName,
165
166
  icon: {
166
167
  name: 'tab-unselected',
167
168
  },
@@ -198,6 +199,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
198
199
  gridMenuItems.push(this.createColumnMenuItemClickFunction('Select', 'tab-unselected', clickFunction));
199
200
  returnColumnMenuItems.push({
200
201
  label: 'Grid',
202
+ module: this.moduleInfo.ModuleName,
201
203
  isVisible: true,
202
204
  icon: { name: 'align-justify' },
203
205
  subItems: gridMenuItems,
@@ -1,11 +1,21 @@
1
1
  import { AdaptableModuleBase } from './AdaptableModuleBase';
2
- import { IModule } from './Interface/IModule';
2
+ import { AdaptableModuleView, AdaptableObjectView, IModule } from './Interface/IModule';
3
3
  import { AdaptableApi } from '../Api/AdaptableApi';
4
+ import { SharedEntity } from '../../types';
4
5
  export declare class TeamSharingModule extends AdaptableModuleBase implements IModule {
5
6
  private SKIP_TEAMSHARING_UPDATE_ACTIONS;
6
7
  constructor(api: AdaptableApi);
7
8
  isModuleAvailable(): boolean;
9
+ isModuleObjectsShareable(): boolean;
8
10
  getPopupMaxWidth(): number | undefined;
9
11
  private handleStateChanged;
10
12
  private extractAdaptableObjectFromAction;
13
+ isAdaptableObjectPresentInLocalState(sharedEntity: SharedEntity): boolean;
14
+ private isSharedEntityADependency;
15
+ private isStaleAndActive;
16
+ private getDependencies;
17
+ private getStaleDependencies;
18
+ toView(sharedEntity: SharedEntity): AdaptableObjectView;
19
+ toViewAll(): AdaptableObjectView[];
20
+ getViewProperties(): AdaptableModuleView;
11
21
  }