@adaptabletools/adaptable 22.0.0-canary.9 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/index.css +1157 -1319
  2. package/index.css.map +1 -1
  3. package/index.d.ts +8 -8
  4. package/index.js +8 -8
  5. package/package.json +1 -4
  6. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
  7. package/src/AdaptableState/Common/AdaptableColumn.d.ts +3 -3
  8. package/src/AdaptableState/Common/AdaptableForm.d.ts +1 -1
  9. package/src/AdaptableState/Common/AggregationColumns.d.ts +1 -0
  10. package/src/AdaptableState/Common/AggregationColumns.js +1 -0
  11. package/src/AdaptableState/Common/DataUpdateConfig.d.ts +15 -5
  12. package/src/AdaptableState/Common/TransposeConfig.d.ts +4 -9
  13. package/src/AdaptableState/InitialState.d.ts +1 -1
  14. package/src/AdaptableState/UserInterfaceState.d.ts +1 -1
  15. package/src/Api/ColumnApi.d.ts +1 -1
  16. package/src/Api/GridApi.d.ts +4 -0
  17. package/src/Api/Implementation/ApiBase.d.ts +1 -1
  18. package/src/Api/Implementation/ApiBase.js +1 -1
  19. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -1
  20. package/src/Api/Implementation/ColumnApiImpl.js +4 -4
  21. package/src/Api/Implementation/GridApiImpl.d.ts +1 -0
  22. package/src/Api/Implementation/GridApiImpl.js +6 -5
  23. package/src/Api/Implementation/LayoutHelpers.js +1 -1
  24. package/src/Api/Internal/ColumnInternalApi.d.ts +1 -1
  25. package/src/Api/Internal/ColumnInternalApi.js +5 -3
  26. package/src/Api/Internal/EventInternalApi.js +1 -1
  27. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +1 -1
  28. package/src/Redux/Store/AdaptableReduxMerger.js +5 -6
  29. package/src/Strategy/FormatColumnModule.js +2 -2
  30. package/src/Strategy/LayoutModule.js +1 -1
  31. package/src/Strategy/StyledColumnModule.js +14 -6
  32. package/src/Strategy/TeamSharingModule.js +2 -2
  33. package/src/Strategy/Utilities/FormatColumn/{getFormatColumnSettingsTargetItems.d.ts → getFormatColumnRowTargetItems.d.ts} +1 -1
  34. package/src/Strategy/Utilities/FormatColumn/getFormatColumnRowTargetItems.js +22 -0
  35. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +5 -13
  36. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +1 -1
  37. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +1 -1
  38. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +1 -1
  39. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +1 -1
  40. package/src/Utilities/Extensions/StringExtensions.js +1 -1
  41. package/src/Utilities/Helpers/AdaptableHelper.js +2 -2
  42. package/src/Utilities/Helpers/FormatHelper.js +1 -1
  43. package/src/Utilities/Hooks/index.d.ts +1 -2
  44. package/src/Utilities/Hooks/index.js +1 -2
  45. package/src/Utilities/Services/LicenseService/index.js +1 -1
  46. package/src/Utilities/Services/RowSummaryService.d.ts +1 -1
  47. package/src/Utilities/Services/RowSummaryService.js +2 -2
  48. package/src/Utilities/getScopeViewItems.js +1 -1
  49. package/src/Utilities/only.d.ts +15 -0
  50. package/src/Utilities/only.js +54 -0
  51. package/src/Utilities/utils/chunk.d.ts +6 -0
  52. package/src/Utilities/utils/chunk.js +17 -0
  53. package/src/Utilities/utils/clamp.d.ts +5 -0
  54. package/src/Utilities/utils/clamp.js +7 -0
  55. package/src/Utilities/utils/cloneDeepWith.d.ts +9 -0
  56. package/src/Utilities/utils/cloneDeepWith.js +67 -0
  57. package/src/Utilities/utils/debounce.d.ts +20 -0
  58. package/src/Utilities/utils/debounce.js +121 -0
  59. package/src/Utilities/utils/flatten.d.ts +5 -0
  60. package/src/Utilities/utils/flatten.js +7 -0
  61. package/src/Utilities/utils/flattenDeep.d.ts +5 -0
  62. package/src/Utilities/utils/flattenDeep.js +7 -0
  63. package/src/Utilities/utils/get.d.ts +6 -0
  64. package/src/Utilities/utils/get.js +35 -0
  65. package/src/Utilities/utils/index.d.ts +22 -0
  66. package/src/Utilities/utils/index.js +22 -0
  67. package/src/Utilities/utils/isArray.d.ts +6 -0
  68. package/src/Utilities/utils/isArray.js +6 -0
  69. package/src/Utilities/utils/isEqual.d.ts +5 -0
  70. package/src/Utilities/utils/isEqual.js +124 -0
  71. package/src/Utilities/utils/isObject.d.ts +6 -0
  72. package/src/Utilities/utils/isObject.js +9 -0
  73. package/src/Utilities/utils/isPlainObject.d.ts +6 -0
  74. package/src/Utilities/utils/isPlainObject.js +17 -0
  75. package/src/Utilities/utils/kebabCase.d.ts +5 -0
  76. package/src/Utilities/utils/kebabCase.js +8 -0
  77. package/src/Utilities/utils/merge.d.ts +11 -0
  78. package/src/Utilities/utils/merge.js +40 -0
  79. package/src/Utilities/utils/mergeWith.d.ts +7 -0
  80. package/src/Utilities/utils/mergeWith.js +46 -0
  81. package/src/Utilities/utils/orderBy.d.ts +8 -0
  82. package/src/Utilities/utils/orderBy.js +30 -0
  83. package/src/Utilities/utils/parseInt.d.ts +6 -0
  84. package/src/Utilities/utils/parseInt.js +9 -0
  85. package/src/Utilities/utils/sentenceCase.d.ts +6 -0
  86. package/src/Utilities/utils/sentenceCase.js +15 -0
  87. package/src/Utilities/utils/startCase.d.ts +5 -0
  88. package/src/Utilities/utils/startCase.js +11 -0
  89. package/src/Utilities/utils/throttle.d.ts +17 -0
  90. package/src/Utilities/utils/throttle.js +19 -0
  91. package/src/Utilities/utils/toNumber.d.ts +5 -0
  92. package/src/Utilities/utils/toNumber.js +39 -0
  93. package/src/Utilities/utils/uniq.d.ts +7 -0
  94. package/src/Utilities/utils/uniq.js +9 -0
  95. package/src/Utilities/utils/uniqBy.d.ts +8 -0
  96. package/src/Utilities/utils/uniqBy.js +22 -0
  97. package/src/Utilities/utils/words.d.ts +7 -0
  98. package/src/Utilities/utils/words.js +10 -0
  99. package/src/Utilities/weightedAverage.js +1 -1
  100. package/src/View/AdaptableComputedCSSVarsContext.js +1 -1
  101. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +1 -1
  102. package/src/View/Alert/Wizard/AlertButtonsEditor.js +1 -1
  103. package/src/View/Charting/ChartingWizard/AgChargingWizard/PreviewChartSection.js +1 -1
  104. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
  105. package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +1 -1
  106. package/src/View/Components/ColumnFilter/components/FloatingFilterInputList.js +1 -1
  107. package/src/View/Components/RangesComponent.js +1 -1
  108. package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -1
  109. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -1
  110. package/src/View/Components/ToolPanel/CustomToolPanelContent.js +1 -1
  111. package/src/View/Components/ValueSelector/index.js +7 -2
  112. package/src/View/Dashboard/CustomDashboardButton.js +1 -1
  113. package/src/View/Dashboard/Dashboard.js +1 -1
  114. package/src/View/Dashboard/DashboardPopup.js +4 -3
  115. package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +1 -1
  116. package/src/View/DataSet/DataSetViewPanel.d.ts +1 -1
  117. package/src/View/Export/Wizard/NewReportWizard.js +8 -8
  118. package/src/View/Filter/FilterViewPanel.d.ts +1 -1
  119. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +19 -10
  120. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +1 -1
  121. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +2 -2
  122. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.d.ts +8 -0
  123. package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.js +80 -0
  124. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +22 -61
  125. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -8
  126. package/src/View/GridFilter/GridFilterViewPanel.js +3 -3
  127. package/src/View/Layout/LayoutViewPanel.js +1 -1
  128. package/src/View/Layout/TransposedPopup.js +0 -1
  129. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  130. package/src/View/Note/NoteEditor.js +1 -1
  131. package/src/View/QuickSearch/useQuickSearchDebounced.js +1 -1
  132. package/src/View/SpecialColumnSettingsWizardStep.js +1 -1
  133. package/src/View/StyledColumn/Wizard/StyledColumnBadgeRowsSection.d.ts +8 -0
  134. package/src/View/StyledColumn/Wizard/{StyledColumnWizardSettingsSection.js → StyledColumnBadgeRowsSection.js} +19 -19
  135. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +10 -11
  136. package/src/View/SystemStatus/SystemStatusViewPanel.d.ts +1 -1
  137. package/src/View/Theme/ThemeEditor.js +1 -1
  138. package/src/View/Theme/ThemeField.js +1 -1
  139. package/src/View/Wizard/OnePageAdaptableWizard.js +1 -1
  140. package/src/View/Wizard/OnePageWizards.js +1 -1
  141. package/src/agGrid/AdaptableAgGrid.js +26 -7
  142. package/src/agGrid/AgGridAdapter.js +4 -4
  143. package/src/agGrid/AgGridColumnAdapter.js +11 -4
  144. package/src/agGrid/AgGridExportAdapter.d.ts +2 -2
  145. package/src/agGrid/AgGridExportAdapter.js +7 -6
  146. package/src/agGrid/cellRenderers/PercentBarRenderer.js +17 -5
  147. package/src/components/ColorPicker/ColorPicker.js +1 -1
  148. package/src/components/DropdownButton/renderItem.js +1 -1
  149. package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +1 -1
  150. package/src/components/FormLayout/index.js +1 -1
  151. package/src/components/OverlayTrigger/index.js +1 -1
  152. package/src/components/Select/Select.js +4 -0
  153. package/src/env.js +2 -2
  154. package/src/layout-manager/src/isLayoutEqual.js +1 -1
  155. package/src/metamodel/adaptable.metamodel.d.ts +12 -1
  156. package/src/metamodel/adaptable.metamodel.js +1 -1
  157. package/src/migration/VersionUpgrade22.js +9 -0
  158. package/themes/dark.css +2 -3
  159. package/themes/light.css +1 -1
  160. package/tsconfig.esm.tsbuildinfo +1 -1
  161. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +0 -12
  162. package/src/Utilities/Hooks/useAdaptableState.d.ts +0 -3
  163. package/src/Utilities/Hooks/useAdaptableState.js +0 -39
  164. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +0 -8
  165. package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +0 -31
  166. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.d.ts +0 -8
  167. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.d.ts → FormatColumnColumnScopeWizardSection.d.ts} +0 -0
  168. /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.js → FormatColumnColumnScopeWizardSection.js} +0 -0
@@ -0,0 +1,30 @@
1
+ /**
2
+ * This method is like `sortBy` except that it allows specifying the sort
3
+ * orders of the iteratees to sort by. If orders is unspecified, all values
4
+ * are sorted in ascending order. Otherwise, specify an order of "desc" for
5
+ * descending or "asc" for ascending sort order of corresponding values.
6
+ * Drop-in replacement for lodash/orderBy.
7
+ */
8
+ export default function orderBy(collection, iteratees, orders) {
9
+ const result = [...collection];
10
+ const fns = iteratees.map((iteratee) => typeof iteratee === 'function' ? iteratee : (item) => item?.[iteratee]);
11
+ result.sort((a, b) => {
12
+ for (let i = 0; i < fns.length; i++) {
13
+ const valA = fns[i](a);
14
+ const valB = fns[i](b);
15
+ if (valA !== valB) {
16
+ const order = orders?.[i] === 'desc' ? -1 : 1;
17
+ if (valA == null)
18
+ return 1;
19
+ if (valB == null)
20
+ return -1;
21
+ if (valA < valB)
22
+ return -order;
23
+ if (valA > valB)
24
+ return order;
25
+ }
26
+ }
27
+ return 0;
28
+ });
29
+ return result;
30
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Converts string to an integer of the specified radix.
3
+ * If radix is undefined or 0, a radix of 10 is used (unlike native parseInt which auto-detects).
4
+ * Drop-in replacement for lodash/parseInt.
5
+ */
6
+ export default function parseIntFn(string: string, radix?: number): number;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Converts string to an integer of the specified radix.
3
+ * If radix is undefined or 0, a radix of 10 is used (unlike native parseInt which auto-detects).
4
+ * Drop-in replacement for lodash/parseInt.
5
+ */
6
+ export default function parseIntFn(string, radix) {
7
+ const str = typeof string === 'string' ? string.trim() : String(string);
8
+ return globalThis.parseInt(str, radix || 10);
9
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Converts string to Sentence case.
3
+ * Splits on camelCase, PascalCase, dots, underscores, hyphens, and non-alphanumeric characters.
4
+ * Drop-in replacement for the sentence-case package.
5
+ */
6
+ export default function sentenceCase(input: string): string;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Converts string to Sentence case.
3
+ * Splits on camelCase, PascalCase, dots, underscores, hyphens, and non-alphanumeric characters.
4
+ * Drop-in replacement for the sentence-case package.
5
+ */
6
+ import words from './words';
7
+ export default function sentenceCase(input) {
8
+ const parts = words(input);
9
+ if (parts.length === 0) {
10
+ return '';
11
+ }
12
+ return parts
13
+ .map((w, i) => (i === 0 ? w.charAt(0).toUpperCase() + w.slice(1).toLowerCase() : w.toLowerCase()))
14
+ .join(' ');
15
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Converts string to Start Case.
3
+ * Drop-in replacement for lodash/startCase.
4
+ */
5
+ export default function startCase(string: string): string;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Converts string to Start Case.
3
+ * Drop-in replacement for lodash/startCase.
4
+ */
5
+ import words from './words';
6
+ function capitalize(word) {
7
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
8
+ }
9
+ export default function startCase(string) {
10
+ return words(string).map(capitalize).join(' ');
11
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Creates a throttled function that only invokes func at most once per
3
+ * every wait milliseconds. The throttled function comes with a cancel
4
+ * method to cancel delayed func invocations and a flush method to
5
+ * immediately invoke them.
6
+ *
7
+ * Supports options: { leading, trailing }
8
+ * Drop-in replacement for lodash/throttle.
9
+ *
10
+ * Implemented using debounce with maxWait (same approach as lodash).
11
+ */
12
+ import { DebouncedFunction } from './debounce';
13
+ export interface ThrottleOptions {
14
+ leading?: boolean;
15
+ trailing?: boolean;
16
+ }
17
+ export default function throttle<T extends (...args: any[]) => any>(func: T, wait?: number, options?: ThrottleOptions): DebouncedFunction<T>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Creates a throttled function that only invokes func at most once per
3
+ * every wait milliseconds. The throttled function comes with a cancel
4
+ * method to cancel delayed func invocations and a flush method to
5
+ * immediately invoke them.
6
+ *
7
+ * Supports options: { leading, trailing }
8
+ * Drop-in replacement for lodash/throttle.
9
+ *
10
+ * Implemented using debounce with maxWait (same approach as lodash).
11
+ */
12
+ import debounce from './debounce';
13
+ export default function throttle(func, wait = 0, options) {
14
+ return debounce(func, wait, {
15
+ leading: options?.leading ?? true,
16
+ trailing: options?.trailing ?? true,
17
+ maxWait: wait,
18
+ });
19
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Converts value to a number.
3
+ * Drop-in replacement for lodash/toNumber.
4
+ */
5
+ export default function toNumber(value: any): number;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Converts value to a number.
3
+ * Drop-in replacement for lodash/toNumber.
4
+ */
5
+ const reTrimStart = /^\s+/;
6
+ const reTrimEnd = /\s+$/;
7
+ const reIsBinary = /^0b[01]+$/i;
8
+ const reIsOctal = /^0o[0-7]+$/i;
9
+ const reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
10
+ export default function toNumber(value) {
11
+ if (typeof value === 'number') {
12
+ return value;
13
+ }
14
+ if (typeof value === 'symbol') {
15
+ return NaN;
16
+ }
17
+ if (typeof value === 'boolean') {
18
+ return value ? 1 : 0;
19
+ }
20
+ if (value == null) {
21
+ return value === undefined ? NaN : 0;
22
+ }
23
+ if (typeof value === 'string') {
24
+ const trimmed = value.replace(reTrimStart, '').replace(reTrimEnd, '');
25
+ if (reIsBinary.test(trimmed)) {
26
+ return globalThis.parseInt(trimmed.slice(2), 2);
27
+ }
28
+ if (reIsOctal.test(trimmed)) {
29
+ return globalThis.parseInt(trimmed.slice(2), 8);
30
+ }
31
+ if (reIsBadHex.test(trimmed)) {
32
+ return NaN;
33
+ }
34
+ return +trimmed;
35
+ }
36
+ // Objects: try valueOf
37
+ const other = typeof value.valueOf === 'function' ? value.valueOf() : value;
38
+ return +other;
39
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates a duplicate-free version of an array, using SameValueZero for equality comparisons,
3
+ * in which only the first occurrence of each element is kept. The order of result values is
4
+ * determined by the order they occur in the array.
5
+ * Drop-in replacement for lodash/uniq.
6
+ */
7
+ export default function uniq<T>(array: T[]): T[];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Creates a duplicate-free version of an array, using SameValueZero for equality comparisons,
3
+ * in which only the first occurrence of each element is kept. The order of result values is
4
+ * determined by the order they occur in the array.
5
+ * Drop-in replacement for lodash/uniq.
6
+ */
7
+ export default function uniq(array) {
8
+ return [...new Set(array)];
9
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This method is like `uniq` except that it accepts iteratee which is
3
+ * invoked for each element in array to generate the criterion by which
4
+ * uniqueness is computed. The order of result values is determined by the
5
+ * order they occur in the array. The iteratee is invoked with one argument: (value).
6
+ * Drop-in replacement for lodash/uniqBy.
7
+ */
8
+ export default function uniqBy<T>(array: T[], iteratee: ((value: T) => any) | string): T[];
@@ -0,0 +1,22 @@
1
+ /**
2
+ * This method is like `uniq` except that it accepts iteratee which is
3
+ * invoked for each element in array to generate the criterion by which
4
+ * uniqueness is computed. The order of result values is determined by the
5
+ * order they occur in the array. The iteratee is invoked with one argument: (value).
6
+ * Drop-in replacement for lodash/uniqBy.
7
+ */
8
+ export default function uniqBy(array, iteratee) {
9
+ const seen = new Set();
10
+ const result = [];
11
+ const fn = typeof iteratee === 'function'
12
+ ? iteratee
13
+ : (value) => value?.[iteratee];
14
+ for (const item of array) {
15
+ const key = fn(item);
16
+ if (!seen.has(key)) {
17
+ seen.add(key);
18
+ result.push(item);
19
+ }
20
+ }
21
+ return result;
22
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Split a string into words: handles camelCase, PascalCase, UPPER_CASE,
3
+ * UPPER_SNAKE_CASE, snake_case, kebab-case, spaces, and dot.notation.
4
+ *
5
+ * Shared helper used by kebabCase, startCase, and sentenceCase.
6
+ */
7
+ export default function words(str: string): string[];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Split a string into words: handles camelCase, PascalCase, UPPER_CASE,
3
+ * UPPER_SNAKE_CASE, snake_case, kebab-case, spaces, and dot.notation.
4
+ *
5
+ * Shared helper used by kebabCase, startCase, and sentenceCase.
6
+ */
7
+ export default function words(str) {
8
+ const matches = str.match(/[A-Z]?[a-z]+|[A-Z]+(?=[A-Z][a-z]|\d|$|[^a-zA-Z0-9])|[A-Z]|[0-9]+/g);
9
+ return matches || [];
10
+ }
@@ -1,4 +1,4 @@
1
- import toNumber from 'lodash/toNumber';
1
+ import toNumber from './utils/toNumber';
2
2
  export const getNumericValue = (input) => {
3
3
  if (typeof input === 'number') {
4
4
  return input;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { CSSNumericVariableWatch } from '../components/Select/CSSNumericVariableWatch';
3
- import debounce from 'lodash/debounce';
3
+ import debounce from '../Utilities/utils/debounce';
4
4
  import { useMemo } from 'react';
5
5
  const computedCSSVarNames = [
6
6
  '--ab-cmp-select-menu__max-width',
@@ -8,7 +8,7 @@ import { useRef, useState } from 'react';
8
8
  import StringExtensions from '../../../Utilities/Extensions/StringExtensions';
9
9
  import { DataSource, InfiniteTableGrid, } from '../../../components/InfiniteTable';
10
10
  import { Box, Flex } from '../../../components/Flex';
11
- import throttle from 'lodash/throttle';
11
+ import throttle from '../../../Utilities/utils/throttle';
12
12
  import { twMerge } from '../../../twMerge';
13
13
  const dataTypes = [
14
14
  {
@@ -8,7 +8,7 @@ import StringExtensions from '../../../Utilities/Extensions/StringExtensions';
8
8
  import { AdaptableIconSelector } from '../../Components/AdaptableIconSelector';
9
9
  import { Select } from '../../../components/Select';
10
10
  import { Box, Flex } from '../../../components/Flex';
11
- import { sentenceCase } from 'sentence-case';
11
+ import sentenceCase from '../../../Utilities/utils/sentenceCase';
12
12
  function renderCommand(command) {
13
13
  switch (command) {
14
14
  case 'highlight-cell':
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useSelector } from 'react-redux';
3
- import isEqual from 'lodash/isEqual';
3
+ import isEqual from '../../../../Utilities/utils/isEqual';
4
4
  import * as InternalRedux from '../../../../Redux/ActionsReducers/InternalRedux';
5
5
  import { useAdaptable } from '../../../AdaptableContext';
6
6
  export const PreviewChartSection = (props) => {
@@ -4,7 +4,7 @@ import AdaptableInput from '../../AdaptableInput';
4
4
  import { AdaptableDateInlineInput } from '../../AdaptableInput/AdaptableDateInlineInput';
5
5
  import { PermittedValuesSelector } from '../../Selectors/PermittedValuesSelector';
6
6
  import { useAdaptable } from '../../../AdaptableContext';
7
- import debounce from 'lodash/debounce';
7
+ import debounce from '../../../../Utilities/utils/debounce';
8
8
  import { useCallback } from 'react';
9
9
  function debounceOrImmediate(fn, time) {
10
10
  return time && time > 0 ? debounce(fn, time) : fn;
@@ -1,4 +1,4 @@
1
- import { debounce } from 'lodash';
1
+ import debounce from '../../../../Utilities/utils/debounce';
2
2
  import * as React from 'react';
3
3
  import { getOperatorMatchingInputs } from '../../../../components/ExpressionEditor/QueryBuilder/utils';
4
4
  import Panel from '../../../../components/Panel';
@@ -1,4 +1,4 @@
1
- import { debounce } from 'lodash';
1
+ import debounce from '../../../../Utilities/utils/debounce';
2
2
  import * as React from 'react';
3
3
  import { getOperatorMatchingInputs } from '../../../../components/ExpressionEditor/QueryBuilder/utils';
4
4
  import { mapColumnDataTypeToExpressionFunctionType } from '../../../../Utilities/adaptableQlUtils';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ColorPicker } from '../../components/ColorPicker';
3
- import clamp from 'lodash/clamp';
3
+ import clamp from '../../Utilities/utils/clamp';
4
4
  import { CheckBox } from '../../components/CheckBox';
5
5
  import FormLayout, { FormRow } from '../../components/FormLayout';
6
6
  import { NumberInput } from '../../components/Input/NumberInput';
@@ -98,5 +98,5 @@ export const PermittedValuesSelector = function (props) {
98
98
  reload();
99
99
  }
100
100
  };
101
- return (React.createElement(Select, { "aria-label": "Permitted Values Selector", searchable: props.searchable, size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
101
+ return (React.createElement(Select, { "aria-label": "Permitted Values Selector", searchable: props.searchable ?? 'menulist', size: props.size, isMulti: props.isMulti, className: props.className, disabled: props.disabled, closeMenuOnSelect: !props.isMulti, "data-name": "permitted-values-selector", placeholder: props.placeholder || (props.allowNewValues ? 'Select or type new value' : 'Select value'), isCreatable: isCreatable, isClearable: true, onMenuOpen: reload, options: options, isLoading: isLoading, onInputChange: onInputChange, onChange: handleOnChange, onFocus: props.onFocus, onBlur: props.onBlur, value: props.value }));
102
102
  };
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import kebabCase from 'lodash/kebabCase';
2
+ import kebabCase from '../../../Utilities/utils/kebabCase';
3
3
  import * as ToolPanelRedux from '../../../Redux/ActionsReducers/ToolPanelRedux';
4
4
  import { connect } from 'react-redux';
5
5
  import ArrayExtensions from '../../../Utilities/Extensions/ArrayExtensions';
@@ -3,7 +3,7 @@ import { useLayoutEffect, useRef, useState } from 'react';
3
3
  import { useAdaptable } from '../../AdaptableContext';
4
4
  import { createUuid } from '../../../components/utils/uuid';
5
5
  import SimpleButton from '../../../components/SimpleButton';
6
- import kebabCase from 'lodash/kebabCase';
6
+ import kebabCase from '../../../Utilities/utils/kebabCase';
7
7
  export const CustomToolPanelContent = (props) => {
8
8
  const { customToolPanel } = props;
9
9
  const { api } = useAdaptable();
@@ -159,7 +159,12 @@ export const renderSelectionSection = (props) => {
159
159
  const { value, options, disabled, singleSelect, toLabel, toIdentifier, } = props;
160
160
  const selectionBox = (React.createElement(Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2" },
161
161
  React.createElement(Box, { className: clsx('twa:flex twa:flex-row', 'twa:border-b twa:border-primarydark/30 twa:rounded-standard') },
162
- React.createElement(CheckBox, { className: "twa:ml-0.5 twa:font-bold", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
162
+ singleSelect ? (React.createElement(Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal" },
163
+ "(",
164
+ value.length,
165
+ " of ",
166
+ options.length,
167
+ " selected)")) : (React.createElement(CheckBox, { className: "twa:ml-0.5 twa:font-bold", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
163
168
  if (checked) {
164
169
  props.onSelectAll();
165
170
  }
@@ -174,7 +179,7 @@ export const renderSelectionSection = (props) => {
174
179
  value.length,
175
180
  " of ",
176
181
  options.length,
177
- " selected)"))),
182
+ " selected)")))),
178
183
  React.createElement("div", { className: "twa:flex-1" }),
179
184
  React.createElement(Box, { className: "twa:mr-2 twa:text-2 twa:font-normal" }, props.showOnlySelectedCheckbox))));
180
185
  return React.createElement(Box, { className: clsx(`${baseClassName}__header `) }, selectionBox);
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useState } from 'react';
3
3
  import SimpleButton from '../../components/SimpleButton';
4
- import kebabCase from 'lodash/kebabCase';
4
+ import kebabCase from '../../Utilities/utils/kebabCase';
5
5
  export const CustomDashboardButton = (props) => {
6
6
  const { button } = props;
7
7
  const [componentRevision, setComponentRevision] = useState(1);
@@ -1,4 +1,4 @@
1
- import kebabCase from 'lodash/kebabCase';
1
+ import kebabCase from '../../Utilities/utils/kebabCase';
2
2
  import * as React from 'react';
3
3
  import { connect } from 'react-redux';
4
4
  import { Dashboard as DashboardUI, DashboardTab as DashboardTabUI, } from '../../components/Dashboard';
@@ -71,9 +71,10 @@ class DashboardPopupComponent extends React.Component {
71
71
  React.createElement(Card, null,
72
72
  React.createElement(Card.Title, { gap: 8 }, "Display Settings"),
73
73
  React.createElement(Card.Body, { gap: 2, className: "twa:p-2" },
74
- React.createElement(ToggleButton, { className: "twa:w-24", onChange: (visible) => this.props.onSetDashboardHidden(!visible), checked: !this.props.IsHidden, "data-name": "dashboard-visibility" }, this.props.IsHidden ? 'Hidden' : 'Visible'),
75
- this.props.DashboardState.Tabs?.length > 0 ? (React.createElement(ToggleButton, { disabled: this.props.IsFloating, className: "twa:w-24", onChange: (expanded) => this.props.onSetDashboardCollapsed(!expanded), checked: !this.props.IsCollapsed, "data-name": "expand-state" }, this.props.IsCollapsed ? 'Collapsed' : 'Expanded')) : null,
76
- this.props.api.optionsApi.getDashboardOptions().canFloat ? (React.createElement(ToggleButton, { className: "twa:w-24", onChange: (pinned) => this.props.onSetDashboardFloating(!pinned), checked: !this.props.IsFloating, "data-name": "floating" }, this.props.IsFloating ? 'Floating' : 'Pinned')) : null)))),
74
+ React.createElement("div", { className: "twa:flex twa:flex-row twa:items-center twa:justify-start twa:gap-3" },
75
+ React.createElement(ToggleButton, { className: "twa:w-24", onChange: (visible) => this.props.onSetDashboardHidden(!visible), checked: !this.props.IsHidden, "data-name": "dashboard-visibility" }, this.props.IsHidden ? 'Hidden' : 'Visible'),
76
+ this.props.DashboardState.Tabs?.length > 0 ? (React.createElement(ToggleButton, { disabled: this.props.IsFloating, className: "twa:w-24", onChange: (expanded) => this.props.onSetDashboardCollapsed(!expanded), checked: !this.props.IsCollapsed, "data-name": "expand-state" }, this.props.IsCollapsed ? 'Collapsed' : 'Expanded')) : null,
77
+ this.props.api.optionsApi.getDashboardOptions().canFloat ? (React.createElement(ToggleButton, { className: "twa:w-24", onChange: (pinned) => this.props.onSetDashboardFloating(!pinned), checked: !this.props.IsFloating, "data-name": "floating" }, this.props.IsFloating ? 'Floating' : 'Pinned')) : null))))),
77
78
  React.createElement(Card, { className: "twa:flex-1 twa:overflow-hidden", gap: 0 },
78
79
  React.createElement(Card.Title, null, "Contents"),
79
80
  React.createElement(Card.Body, { className: "twa:p-2" },
@@ -1,4 +1,4 @@
1
- import flatten from 'lodash/flatten';
1
+ import flatten from '../../../../Utilities/utils/flatten';
2
2
  import * as React from 'react';
3
3
  import HelpBlock from '../../../../components/HelpBlock';
4
4
  import { Icon } from '../../../../components/icons';
@@ -16,8 +16,8 @@ declare class DataSetViewPanelComponent extends React.Component<DataSetViewPanel
16
16
  onSelectedDataSetChanged(dataSetName: string): void;
17
17
  }
18
18
  export declare let DataSetViewPanelControl: import("react-redux").ConnectedComponent<typeof DataSetViewPanelComponent, {
19
- ref?: React.Ref<DataSetViewPanelComponent>;
20
19
  key?: React.Key | null | undefined;
20
+ ref?: React.Ref<DataSetViewPanelComponent>;
21
21
  context?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").UnknownAction>>;
22
22
  store?: import("redux").Store;
23
23
  }>;
@@ -35,6 +35,14 @@ export const NewReportWizard = (props) => {
35
35
  props.onFinishWizard(report);
36
36
  };
37
37
  return (React.createElement(OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: report, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
38
+ {
39
+ title: 'Name',
40
+ details: 'Enter the name of the Report',
41
+ isValid: isValidReportName,
42
+ renderSummary: renderReportNameSummary,
43
+ render: () => (React.createElement(Box, { className: "twa:p-2" },
44
+ React.createElement(ReportNameWizardSection, { onChange: setReport }))),
45
+ },
38
46
  {
39
47
  title: 'Columns',
40
48
  details: 'Choose the Columns you want to include in the Report',
@@ -48,14 +56,6 @@ export const NewReportWizard = (props) => {
48
56
  renderSummary: renderReportRowsSummary,
49
57
  render: () => React.createElement(ReportRowsWizardSection, { onChange: setReport }),
50
58
  },
51
- {
52
- title: 'Name',
53
- details: 'Enter the name of the Report',
54
- isValid: isValidReportName,
55
- renderSummary: renderReportNameSummary,
56
- render: () => (React.createElement(Box, { className: "twa:p-2" },
57
- React.createElement(ReportNameWizardSection, { onChange: setReport }))),
58
- },
59
59
  {
60
60
  details: 'Select Report Tags',
61
61
  title: 'Tags',
@@ -18,8 +18,8 @@ declare class FilterViewPanelComponent extends React.Component<FilterViewPanelCo
18
18
  private onClearFilters;
19
19
  }
20
20
  export declare const FilterViewPanelControl: import("react-redux").ConnectedComponent<typeof FilterViewPanelComponent, {
21
- ref?: React.Ref<FilterViewPanelComponent>;
22
21
  key?: React.Key | null | undefined;
22
+ ref?: React.Ref<FilterViewPanelComponent>;
23
23
  context?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").UnknownAction>>;
24
24
  store?: import("redux").Store;
25
25
  }>;
@@ -80,15 +80,12 @@ export const FlashingAlertSettingsWizardSection = (props) => {
80
80
  React.createElement(Tabs.Content, null,
81
81
  React.createElement(FormLayout, null,
82
82
  React.createElement(FormRow, { label: "Name" },
83
- React.createElement(Input, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' })),
84
- React.createElement(FormRow, { label: "Flash Target" },
85
- React.createElement(CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
86
- flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
87
- React.createElement(CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
88
- flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
89
- React.createElement(CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
90
- flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")),
91
- React.createElement(FormRow, { label: "Duration" },
83
+ React.createElement(Input, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' }))))),
84
+ React.createElement(Tabs, { autoFocus: false, className: "twa:p-2" },
85
+ React.createElement(Tabs.Tab, null, "Flash Duration"),
86
+ React.createElement(Tabs.Content, null,
87
+ React.createElement(FormLayout, null,
88
+ React.createElement(FormRow, { label: "" },
92
89
  React.createElement(Flex, { alignItems: "center" },
93
90
  React.createElement(CheckBox, { "data-name": "duration-always", checked: duration === 'always', onChange: (checked) => handleTypeChange(checked ? 'always' : 'number'), className: "twa:mr-4", tabIndex: -1 }, "Always"),
94
91
  duration !== 'always' && (React.createElement(React.Fragment, null,
@@ -96,5 +93,17 @@ export const FlashingAlertSettingsWizardSection = (props) => {
96
93
  const value = event.target.value;
97
94
  setDuration(isNaN(Number(value)) ? 500 : Number(value));
98
95
  } }),
99
- React.createElement(Box, { className: "twa:text-2" }, "ms"))))))))));
96
+ React.createElement(Box, { className: "twa:text-2" }, "ms")))))))),
97
+ ' ',
98
+ React.createElement(Tabs, { autoFocus: false, className: "twa:p-2" },
99
+ React.createElement(Tabs.Tab, null, "Flash Target"),
100
+ React.createElement(Tabs.Content, null,
101
+ React.createElement(FormLayout, null,
102
+ React.createElement(FormRow, { label: "" },
103
+ React.createElement(CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
104
+ flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
105
+ React.createElement(CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
106
+ flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
107
+ React.createElement(CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
108
+ flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")))))));
100
109
  };
@@ -73,7 +73,7 @@ export const FlashingCellWizard = (props) => {
73
73
  isValid: isScopeValid,
74
74
  render: () => React.createElement(FlashingAlertScopeWizardSection, { onChange: setFlashingCell }),
75
75
  renderSummary: renderScopeSummary,
76
- title: 'Scope',
76
+ title: 'Columns',
77
77
  },
78
78
  {
79
79
  details: 'Build the Rules for when Cells should Flash',
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import uniq from 'lodash/uniq';
3
- import clamp from 'lodash/clamp';
2
+ import uniq from '../../../Utilities/utils/uniq';
3
+ import clamp from '../../../Utilities/utils/clamp';
4
4
  import HelpBlock from '../../../components/HelpBlock';
5
5
  import Input from '../../../components/Input';
6
6
  import SimpleButton from '../../../components/SimpleButton';
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
3
+ type FormatColumnRowScopeWizardSectionProps = {
4
+ onChange: (data: FormatColumn) => void;
5
+ };
6
+ export declare const renderFormatColumnRowScopeSummary: (data: FormatColumn) => React.JSX.Element;
7
+ export declare const FormatColumnRowScopeWizardSection: (props: FormatColumnRowScopeWizardSectionProps) => React.JSX.Element;
8
+ export {};