@adaptabletools/adaptable-cjs 20.3.0-canary.0 → 20.3.0-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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-cjs",
3
- "version": "20.3.0-canary.0",
3
+ "version": "20.3.0-canary.2",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -157,6 +157,7 @@ const DefaultAdaptableOptions = {
157
157
  defaultNumericColumnFilter: 'Equals',
158
158
  defaultTextColumnFilter: 'Contains',
159
159
  defaultDateColumnFilter: 'On',
160
+ defaultArrayColumnFilter: 'In',
160
161
  hideQuickFilterDropdown: undefined,
161
162
  hideQuickFilterInput: undefined,
162
163
  quickFilterDebounce: 250,
@@ -106,6 +106,13 @@ export interface ColumnFilterOptions<TData = any> {
106
106
  * @gridInfoItem
107
107
  */
108
108
  defaultDateColumnFilter?: StrictExtract<SystemFilterPredicateId, 'After' | 'Before' | 'On' | 'NotOn' | 'In'> | ((adaptableColumnContext: AdaptableColumnContext<TData>) => StrictExtract<SystemFilterPredicateId, 'After' | 'Before' | 'On' | 'NotOn' | 'In'>);
109
+ /**
110
+ * Default filter type for array Columns ('textArray', 'numberArray', etc.)
111
+ *
112
+ * @defaultValue In
113
+ * @gridInfoItem
114
+ */
115
+ defaultArrayColumnFilter?: StrictExtract<SystemFilterPredicateId, 'In' | 'NotIn' | 'Blanks' | 'NonBlanks'> | ((adaptableColumnContext: AdaptableColumnContext<TData>) => StrictExtract<SystemFilterPredicateId, 'In' | 'NotIn' | 'Blanks' | 'NonBlanks'>);
109
116
  /**
110
117
  * Hides Dropdown in Quick Filter Bar for a given Column
111
118
  *
@@ -1,5 +1,5 @@
1
1
  import { AdaptableObject } from './AdaptableObject';
2
- import { BaseCellDataType } from 'ag-grid-enterprise';
2
+ import { BaseCellDataType, ColDef } from 'ag-grid-enterprise';
3
3
  /**
4
4
  * Defines data type of a Column; can be an AG Grid BaseCellDataType or an AdapTable array-related one
5
5
  */
@@ -9,6 +9,7 @@ export type AdaptableColumnDataType = BaseCellDataType | 'textArray' | 'numberAr
9
9
  */
10
10
  export type AdaptableColumnType = 'hiddenColumn' | 'calculatedColumn' | 'freeTextColumn' | 'actionColumn' | 'fdc3Column' | 'pivotAnyTotal' | 'pivotGrandTotal' | 'pivotColumnTotal' | 'pivotAggregationTotal';
11
11
  export declare const HIDDEN_COLUMN_TYPE: AdaptableColumnType;
12
+ export declare const hiddenColDefConfig: ColDef;
12
13
  export declare const CALCULATED_COLUMN_TYPE: AdaptableColumnType;
13
14
  export declare const FREE_TEXT_COLUMN_TYPE: AdaptableColumnType;
14
15
  export declare const ACTION_COLUMN_TYPE: AdaptableColumnType;
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidOrderForColumnGroups = exports.getColumnTypeFriendlyName = exports.PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE = exports.PIVOT_COLUMN_TOTAL_COLUMN_TYPE = exports.PIVOT_GRAND_TOTAL_COLUMN_TYPE = exports.PIVOT_ANY_TOTAL_COLUMN_TYPE = exports.FDC3_COLUMN_TYPE = exports.ACTION_COLUMN_TYPE = exports.FREE_TEXT_COLUMN_TYPE = exports.CALCULATED_COLUMN_TYPE = exports.HIDDEN_COLUMN_TYPE = void 0;
3
+ exports.isValidOrderForColumnGroups = exports.getColumnTypeFriendlyName = exports.PIVOT_AGGREGATION_TOTAL_COLUMN_TYPE = exports.PIVOT_COLUMN_TOTAL_COLUMN_TYPE = exports.PIVOT_GRAND_TOTAL_COLUMN_TYPE = exports.PIVOT_ANY_TOTAL_COLUMN_TYPE = exports.FDC3_COLUMN_TYPE = exports.ACTION_COLUMN_TYPE = exports.FREE_TEXT_COLUMN_TYPE = exports.CALCULATED_COLUMN_TYPE = exports.hiddenColDefConfig = exports.HIDDEN_COLUMN_TYPE = void 0;
4
4
  const src_1 = require("../../layout-manager/src");
5
5
  exports.HIDDEN_COLUMN_TYPE = 'hiddenColumn';
6
+ exports.hiddenColDefConfig = {
7
+ initialHide: true,
8
+ hide: true,
9
+ lockVisible: true,
10
+ suppressColumnsToolPanel: true,
11
+ };
6
12
  exports.CALCULATED_COLUMN_TYPE = 'calculatedColumn';
7
13
  exports.FREE_TEXT_COLUMN_TYPE = 'freeTextColumn';
8
14
  exports.ACTION_COLUMN_TYPE = 'actionColumn';
@@ -9,11 +9,11 @@ export type AdaptableVersion = `${string}.${string}.${string}`;
9
9
  */
10
10
  export interface AdaptableObject {
11
11
  /**
12
- * Unique identifier for the Adaptable Object, generated and used internally by AdapTable
12
+ * Unique identifier for the Object, generated and used internally by AdapTable
13
13
  */
14
14
  Uuid?: TypeUuid;
15
15
  /**
16
- * Source of state object: 'InitialState' if provided via `AdaptableOptions.initialState`, 'User' or undefined for runtime state.
16
+ * Source of state object: 'InitialState' if provided via `AdaptableOptions.initialState`, 'User' or undefined for runtime state
17
17
  */
18
18
  Source?: 'InitialState' | 'User';
19
19
  /**
@@ -25,7 +25,7 @@ export interface AdaptableObject {
25
25
  */
26
26
  IsReadOnly?: boolean;
27
27
  /**
28
- * List of Tags associated with the Object; often used for (but not limited to) managing Layout object scope
28
+ * List of Tags associated with the Object; often used for extending Layouts
29
29
  */
30
30
  Tags?: AdaptableObjectTag[];
31
31
  /**
@@ -99,7 +99,7 @@ exports.SystemPredicateDefs = [
99
99
  id: 'NotIn',
100
100
  label: 'Not In',
101
101
  icon: { text: '!IN' },
102
- columnScope: { DataTypes: ['text', 'number', 'date'] },
102
+ columnScope: { DataTypes: ['text', 'number', 'date', 'textArray', 'numberArray'] },
103
103
  moduleScope: ['columnFilter', 'flashingcell', 'formatColumn', 'alert', 'badgeStyle'],
104
104
  handler: (context) => {
105
105
  const { inputs, column, value, adaptableApi } = context;
@@ -143,6 +143,12 @@ exports.SystemPredicateDefs = [
143
143
  if (column.dataType === 'number') {
144
144
  return !inputs.includes(value);
145
145
  }
146
+ if (column.dataType === 'numberArray') {
147
+ const arrayValue = Array.isArray(value) ? value : [value];
148
+ return inputs.every((input) => {
149
+ return !arrayValue.includes(input);
150
+ });
151
+ }
146
152
  if (column.dataType === 'text') {
147
153
  return adaptableApi.predicateApi.useCaseSensitivity()
148
154
  ? !inputs
@@ -152,6 +158,14 @@ exports.SystemPredicateDefs = [
152
158
  .includes(value?.toLocaleLowerCase())
153
159
  : !inputs.includes(value);
154
160
  }
161
+ if (column.dataType === 'textArray') {
162
+ const arrayValue = Array.isArray(value) ? value : [value];
163
+ return inputs.every((input) => {
164
+ return adaptableApi.predicateApi.useCaseSensitivity()
165
+ ? !arrayValue.map((v) => v?.toLocaleLowerCase()).includes(input?.toLocaleLowerCase())
166
+ : !arrayValue.includes(input);
167
+ });
168
+ }
155
169
  return true;
156
170
  },
157
171
  toString: ({ inputs }) => `Exclude (${inputs.join(', ')})`,
@@ -162,7 +176,12 @@ exports.SystemPredicateDefs = [
162
176
  icon: { name: 'unfilled-circle' },
163
177
  columnScope: { All: true },
164
178
  moduleScope: ['columnFilter', 'alert', 'flashingcell', 'formatColumn', 'badgeStyle'],
165
- handler: ({ value }) => Helper_1.default.isInputNullOrEmpty(value),
179
+ handler: ({ value, column, adaptableApi }) => {
180
+ if (adaptableApi.columnApi.internalApi.hasArrayDataType(column)) {
181
+ return value == undefined || value.length === 0;
182
+ }
183
+ return Helper_1.default.isInputNullOrEmpty(value);
184
+ },
166
185
  },
167
186
  {
168
187
  id: 'NonBlanks',
@@ -170,7 +189,12 @@ exports.SystemPredicateDefs = [
170
189
  icon: { name: 'filled-circle' },
171
190
  columnScope: { All: true },
172
191
  moduleScope: ['columnFilter', 'alert', 'flashingcell', 'formatColumn', 'badgeStyle'],
173
- handler: ({ value }) => Helper_1.default.isInputNotNullOrEmpty(value),
192
+ handler: ({ value, column, adaptableApi }) => {
193
+ if (adaptableApi.columnApi.internalApi.hasArrayDataType(column)) {
194
+ return value == undefined || value.length === 0;
195
+ }
196
+ return Helper_1.default.isInputNotNullOrEmpty(value);
197
+ },
174
198
  },
175
199
  // Numeric System Filters
176
200
  {
@@ -511,6 +511,9 @@ class ColumnApiImpl extends ApiBase_1.ApiBase {
511
511
  return this.getAgGridApi().getColumn(columnId);
512
512
  }
513
513
  hasColumnType(columnIdentifier, columnType) {
514
+ if (!columnIdentifier) {
515
+ return false;
516
+ }
514
517
  const colDef = typeof columnIdentifier === 'string'
515
518
  ? this.getAgGridApi().getColumnDef(columnIdentifier)
516
519
  : columnIdentifier;
@@ -1,5 +1,5 @@
1
1
  import { ApiBase } from '../Implementation/ApiBase';
2
- import { Column, HeaderValueGetterParams, IRowNode } from 'ag-grid-enterprise';
2
+ import { ColDef, Column, HeaderValueGetterParams, IRowNode } from 'ag-grid-enterprise';
3
3
  import { CustomSort } from '../../AdaptableState/CustomSortState';
4
4
  import { ColumnValuesComparer } from '../../AdaptableOptions/CustomSortOptions';
5
5
  import { AdaptableColumn } from '../../types';
@@ -33,6 +33,7 @@ export declare class ColumnInternalApi extends ApiBase {
33
33
  isSpecialColumn(columnId: string, column?: AdaptableColumn): boolean;
34
34
  getColumnHeaderName(params: HeaderValueGetterParams): string;
35
35
  private buildColumnHeaderContext;
36
- getQueryableColumnsForUIEditor(): AdaptableColumn[];
37
36
  hasArrayDataType(column: AdaptableColumn): boolean;
37
+ getQueryableColumnsForUIEditor(): AdaptableColumn[];
38
+ isAlwaysHiddenColumn(columnIdentifier: string | ColDef): boolean;
38
39
  }
@@ -10,6 +10,7 @@ const ColumnApiImpl_1 = require("../Implementation/ColumnApiImpl");
10
10
  const destructurePivotColumnId_1 = require("../../layout-manager/src/destructurePivotColumnId");
11
11
  const isPivotColumnTotal_1 = require("../../layout-manager/src/isPivotColumnTotal");
12
12
  const isPivotAggTotalColumn_1 = require("../../layout-manager/src/isPivotAggTotalColumn");
13
+ const AdaptableColumn_1 = require("../../AdaptableState/Common/AdaptableColumn");
13
14
  function getAutoRowGroupColumnIdFor(columnId) {
14
15
  return `${GeneralConstants_1.AG_GRID_GROUPED_COLUMN}-${columnId}`;
15
16
  }
@@ -287,13 +288,16 @@ class ColumnInternalApi extends ApiBase_1.ApiBase {
287
288
  // if nothing matched, we skip this column[group]
288
289
  return 'skip';
289
290
  }
291
+ hasArrayDataType(column) {
292
+ return ['textArray', 'numberArray', 'tupleArray', 'objectArray'].includes(column.dataType);
293
+ }
290
294
  getQueryableColumnsForUIEditor() {
291
295
  return this.getColumnApi()
292
296
  .getQueryableColumns()
293
297
  .filter((column) => !column.isGeneratedPivotResultColumn && !column.isGeneratedRowGroupColumn);
294
298
  }
295
- hasArrayDataType(column) {
296
- return ['textArray', 'numberArray', 'tupleArray', 'objectArray'].includes(column.dataType);
299
+ isAlwaysHiddenColumn(columnIdentifier) {
300
+ return this.getColumnApi().hasColumnType(columnIdentifier, AdaptableColumn_1.HIDDEN_COLUMN_TYPE);
297
301
  }
298
302
  }
299
303
  exports.ColumnInternalApi = ColumnInternalApi;
@@ -169,12 +169,16 @@ export declare const getColumnFilterSelector: (state: AdaptableState, columnId:
169
169
  PredicatesOperator?: import("../../types").PredicatesOperator;
170
170
  IsSuspended?: boolean;
171
171
  Uuid?: string;
172
+ /**
173
+ * @ReduxAction Layout Module is ready
174
+ */
172
175
  Source?: "InitialState" | "User";
176
+ /**
177
+ * @ReduxAction A Layout has been edited
178
+ */
173
179
  AdaptableVersion?: `${string}.${string}.${string}`;
174
180
  IsReadOnly?: boolean;
175
181
  Tags?: string[];
176
- Metadata?: any; /**
177
- * @ReduxAction A Column Filter has been edited
178
- */
182
+ Metadata?: any;
179
183
  };
180
184
  export declare const LayoutReducer: Redux.Reducer<LayoutState>;
@@ -107,7 +107,7 @@ class ModuleService {
107
107
  case 'ColumnFilter':
108
108
  return learnUrl + 'handbook-column-filter';
109
109
  case 'ColumnInfo':
110
- return learnUrl + 'dev-guide-tutorial-grid-column-info';
110
+ return learnUrl + 'dev-guide-column-grid-column-info';
111
111
  case 'Comment':
112
112
  return learnUrl + 'handbook-comments';
113
113
  case 'CustomSort':
@@ -133,7 +133,7 @@ class ModuleService {
133
133
  case 'GridFilter':
134
134
  return learnUrl + 'handbook-grid-filter';
135
135
  case 'GridInfo':
136
- return learnUrl + 'dev-guide-tutorial-grid-column-info';
136
+ return learnUrl + 'dev-guide-column-grid-column-info';
137
137
  case 'Layout':
138
138
  return learnUrl + 'handbook-layouts';
139
139
  case 'NamedQuery':
@@ -161,6 +161,26 @@ const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, c
161
161
  case 'boolean':
162
162
  defaultQlPredicate = { operator: 'BooleanToggle', args: [] };
163
163
  break;
164
+ case 'textArray':
165
+ case 'numberArray':
166
+ let defaultQlArrayPredicate;
167
+ const defaultArrayColumnFilter = columnFilterOptions.defaultArrayColumnFilter;
168
+ if (defaultArrayColumnFilter) {
169
+ if (typeof defaultArrayColumnFilter === 'function') {
170
+ const context = {
171
+ column: abColumn,
172
+ ...api.internalApi.buildBaseContext(),
173
+ };
174
+ defaultQlArrayPredicate = defaultArrayColumnFilter(context);
175
+ }
176
+ else {
177
+ defaultQlArrayPredicate = defaultArrayColumnFilter;
178
+ }
179
+ }
180
+ defaultQlPredicate = defaultQlArrayPredicate
181
+ ? { operator: defaultQlArrayPredicate, args: [] }
182
+ : { operator: 'In', args: [] };
183
+ break;
164
184
  }
165
185
  if (defaultQlPredicate === null) {
166
186
  // take the firstavailable one
@@ -360,7 +360,8 @@ const ColumnsSection = (props) => {
360
360
  };
361
361
  const visibleIds = layout.TableColumns.filter((colId) => {
362
362
  return (layout.ColumnVisibility?.[colId] !== false &&
363
- adaptable.api.columnApi.isSelectionColumn(colId) === false);
363
+ adaptable.api.columnApi.isSelectionColumn(colId) === false &&
364
+ !adaptable.api.columnApi.internalApi.isAlwaysHiddenColumn(colId));
364
365
  });
365
366
  const toLabel = (colId) => adaptable.api.columnApi.getFriendlyNameForColumnId(colId, layout);
366
367
  const toIdentifier = (colId) => colId;
@@ -1094,6 +1094,7 @@ You need to define at least one Layout!`);
1094
1094
  this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'columnTypes', (original_columnTypes) => {
1095
1095
  const providedColumnTypes = original_columnTypes || {};
1096
1096
  const adaptableSpecialColumnTypes = {
1097
+ [AdaptableColumn_1.HIDDEN_COLUMN_TYPE]: AdaptableColumn_1.hiddenColDefConfig,
1097
1098
  [AdaptableColumn_1.CALCULATED_COLUMN_TYPE]: {},
1098
1099
  [AdaptableColumn_1.FREE_TEXT_COLUMN_TYPE]: {},
1099
1100
  [AdaptableColumn_1.ACTION_COLUMN_TYPE]: {},
@@ -463,7 +463,7 @@ class AgGridAdapter {
463
463
  ? 'number'
464
464
  : this.deriveAdaptableColumnDataType(agGridColumn, false);
465
465
  const isTreeColumn = this.isTreeColumn(isGeneratedRowGroupColumn);
466
- const alwaysHidden = this.adaptableApi.columnApi.hasColumnType(colDef, AdaptableColumn_1.HIDDEN_COLUMN_TYPE);
466
+ const alwaysHidden = this.adaptableApi.columnApi.internalApi.isAlwaysHiddenColumn(colDef);
467
467
  const visible = !alwaysHidden || agGridColumn.isVisible();
468
468
  const isGenerated = isGeneratedRowGroupColumn || isGeneratedPivotResultColumn || isGeneratedSelectionColumn;
469
469
  const abColumn = {
@@ -333,8 +333,10 @@ class AgGridColumnAdapter {
333
333
  setupColumnHeaderStyle({ col }) {
334
334
  this.setColDefProperty(col, 'headerStyle', (userHeaderStyle) => {
335
335
  const headerStyleFunc = (params) => {
336
+ let baseStyles = {};
336
337
  // inherit styles from user provided colDef property
337
- const baseStyles = typeof userHeaderStyle === 'function' ? userHeaderStyle(params) : userHeaderStyle;
338
+ baseStyles =
339
+ typeof userHeaderStyle === 'function' ? userHeaderStyle(params) : userHeaderStyle;
338
340
  if (params.floatingFilter) {
339
341
  // we NEVER style floating filters
340
342
  return baseStyles;
package/src/env.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
5
- PUBLISH_TIMESTAMP: 1752676442361 || Date.now(),
6
- VERSION: "20.3.0-canary.0" || '--current-version--',
5
+ PUBLISH_TIMESTAMP: 1752841771489 || Date.now(),
6
+ VERSION: "20.3.0-canary.2" || '--current-version--',
7
7
  };