@linzjs/step-ag-grid 8.0.0 → 8.2.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 (39) hide show
  1. package/dist/index.css +23 -5
  2. package/dist/src/components/gridForm/GridFormDropDown.d.ts +3 -2
  3. package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +1 -0
  4. package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +3 -4
  5. package/dist/src/components/gridPopoverEdit/GridPopoverEditDropDown.d.ts +2 -2
  6. package/dist/src/components/gridPopoverEdit/GridPopoverMenu.d.ts +2 -2
  7. package/dist/src/lui/ActionButton.d.ts +2 -1
  8. package/dist/src/utils/bearing.d.ts +2 -0
  9. package/dist/step-ag-grid.esm.js +107 -87
  10. package/dist/step-ag-grid.esm.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/components/GridCell.tsx +2 -2
  13. package/src/components/gridForm/GridFormDropDown.tsx +94 -75
  14. package/src/components/gridForm/GridFormEditBearing.tsx +1 -1
  15. package/src/components/gridForm/GridFormMultiSelect.tsx +10 -8
  16. package/src/components/gridForm/GridFormPopoverMenu.tsx +53 -46
  17. package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +8 -13
  18. package/src/components/gridPopoverEdit/GridPopoverEditDropDown.ts +3 -3
  19. package/src/components/gridPopoverEdit/GridPopoverMenu.tsx +3 -3
  20. package/src/lui/ActionButton.tsx +3 -1
  21. package/src/react-menu3/styles/_var.scss +1 -1
  22. package/src/react-menu3/styles/index.scss +4 -0
  23. package/src/stories/components/ActionButton.stories.tsx +11 -0
  24. package/src/stories/grid/gridForm/GridFormDropDown.stories.tsx +81 -36
  25. package/src/stories/grid/gridForm/GridFormEditBearing.stories.tsx +9 -15
  26. package/src/stories/grid/gridForm/GridFormEditBearingCorrection.stories.tsx +9 -15
  27. package/src/stories/grid/gridForm/GridFormMessage.stories.tsx +31 -0
  28. package/src/stories/grid/gridForm/GridFormMultiSelect.stories.tsx +70 -0
  29. package/src/stories/grid/gridForm/GridFormPopoverMenu.stories.tsx +55 -0
  30. package/src/stories/grid/gridForm/GridFormTextArea.stories.tsx +44 -0
  31. package/src/stories/grid/gridForm/GridFormTextInput.stories.tsx +44 -0
  32. package/src/styles/Grid.scss +1 -1
  33. package/src/styles/GridFormMultiSelect.scss +4 -0
  34. package/src/styles/GridIcon.scss +10 -0
  35. package/src/styles/lui-overrides.scss +1 -1
  36. package/src/styles/react-menu-customisations.scss +2 -2
  37. package/src/utils/bearing.test.ts +46 -3
  38. package/src/utils/bearing.ts +14 -0
  39. package/src/stories/grid/gridForm/reactMenuTest.scss +0 -3
package/dist/index.css CHANGED
@@ -22,7 +22,7 @@
22
22
  }
23
23
  .step-ag-grid-react-menu .szh-menu__item,
24
24
  .step-ag-grid-react-menu .szh-menu__header {
25
- padding: 0.375rem 1.5rem;
25
+ padding: 0.375rem 0.75rem;
26
26
  }
27
27
  .step-ag-grid-react-menu .LuiCheckboxInput {
28
28
  margin-bottom: 0;
@@ -57,7 +57,7 @@
57
57
  color: #2a292c;
58
58
  font-family: "Open Sans", system-ui, sans-serif;
59
59
  font-style: normal;
60
- font-weight: 300;
60
+ font-weight: normal;
61
61
  }
62
62
  .step-ag-grid-react-menu.szh-menu div,
63
63
  .step-ag-grid-react-menu.szh-menu a[role=menuitem] {
@@ -65,7 +65,7 @@
65
65
  color: #2a292c;
66
66
  font-family: "Open Sans", system-ui, sans-serif;
67
67
  font-style: normal;
68
- font-weight: 300;
68
+ font-weight: normal;
69
69
  }
70
70
  .step-ag-grid-react-menu.szh-menu li[role=menuitem]:hover {
71
71
  background-color: #e2f3f7;
@@ -235,7 +235,7 @@
235
235
  }
236
236
  .szh-menu__item--disabled {
237
237
  cursor: default;
238
- color: #aaa;
238
+ color: #989189;
239
239
  }
240
240
  .szh-menu__group {
241
241
  box-sizing: border-box;
@@ -313,6 +313,10 @@
313
313
  text-transform: uppercase;
314
314
  }
315
315
 
316
+ .react-menu-inline-test .szh-menu-container, .react-menu-inline-test .szh-menu {
317
+ position: static !important;
318
+ }
319
+
316
320
  .Grid-container {
317
321
  flex: 1;
318
322
  width: 100%;
@@ -340,7 +344,7 @@
340
344
  }
341
345
 
342
346
  .Grid-popoverContainer {
343
- padding: 4px 8px;
347
+ padding: 0.375rem 0.75rem;
344
348
  }
345
349
 
346
350
  .ag-cell .GridCell-editableIcon {
@@ -423,6 +427,10 @@
423
427
  overflow-y: auto;
424
428
  }
425
429
 
430
+ .GridMultiSelect-noOptions {
431
+ justify-content: center;
432
+ }
433
+
426
434
  .GridFormSubComponentTextInput-full-width-input {
427
435
  width: 100%;
428
436
  padding: 0;
@@ -437,11 +445,21 @@
437
445
  fill: #3a7cdf;
438
446
  }
439
447
 
448
+ .AgGridGenericCellRenderer-ic_info_outlineIcon {
449
+ margin-right: 4px;
450
+ fill: #3a7cdf;
451
+ }
452
+
440
453
  .AgGridGenericCellRenderer-ic_warningIcon {
441
454
  margin-right: 4px;
442
455
  fill: #ea6a2e;
443
456
  }
444
457
 
458
+ .AgGridGenericCellRenderer-ic_warning_outlineIcon {
459
+ margin-right: 4px;
460
+ fill: #ea6a2e;
461
+ }
462
+
445
463
  .GridIcon-disabled {
446
464
  fill: #beb9b4 !important;
447
465
  }
@@ -22,9 +22,10 @@ export declare const MenuHeaderItem: (title: string) => {
22
22
  value: string;
23
23
  };
24
24
  export type SelectOption = null | string | FinalSelectOption;
25
- export interface GridFormPopoutDropDownProps<RowType extends GridBaseRow> extends CellEditorCommon {
25
+ export interface GridFormDropDownProps<RowType extends GridBaseRow> extends CellEditorCommon {
26
26
  className?: "GridPopoverEditDropDown-containerSmall" | "GridPopoverEditDropDown-containerMedium" | "GridPopoverEditDropDown-containerLarge" | "GridPopoverEditDropDown-containerUnlimited" | string | undefined;
27
27
  filtered?: "local" | "reload";
28
+ filterDefaultValue?: string;
28
29
  filterPlaceholder?: string;
29
30
  filterHelpText?: string;
30
31
  noOptionsMessage?: string;
@@ -32,5 +33,5 @@ export interface GridFormPopoutDropDownProps<RowType extends GridBaseRow> extend
32
33
  onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<RowType>) => Promise<void>;
33
34
  options: SelectOption[] | ((selectedRows: RowType[], filter?: string) => Promise<SelectOption[] | undefined> | SelectOption[] | undefined) | undefined;
34
35
  }
35
- export declare const GridFormDropDown: <RowType extends GridBaseRow>(props: GridFormPopoutDropDownProps<RowType>) => JSX.Element;
36
+ export declare const GridFormDropDown: <RowType extends GridBaseRow>(props: GridFormDropDownProps<RowType>) => JSX.Element;
36
37
  export {};
@@ -19,6 +19,7 @@ export interface GridFormMultiSelectProps<RowType extends GridBaseRow> extends C
19
19
  filtered?: boolean;
20
20
  filterPlaceholder?: string;
21
21
  filterHelpText?: string | ((filter: string, options: MultiSelectOption[]) => string | undefined);
22
+ noOptionsMessage?: string;
22
23
  onSelectFilter?: (props: {
23
24
  filter: string;
24
25
  options: MultiSelectOption[];
@@ -1,16 +1,15 @@
1
1
  /// <reference types="react" />
2
2
  import { GridBaseRow } from "../Grid";
3
3
  import { CellEditorCommon } from "../GridCell";
4
- export interface GridFormPopoutMenuProps<RowType extends GridBaseRow> extends CellEditorCommon {
4
+ export interface GridFormPopoverMenuProps<RowType extends GridBaseRow> extends CellEditorCommon {
5
5
  options: (selectedRows: RowType[]) => Promise<MenuOption<RowType>[]>;
6
6
  defaultAction?: (props: {
7
7
  selectedRows: RowType[];
8
8
  menuOption: SelectedMenuOptionResult<RowType>;
9
9
  }) => Promise<void>;
10
10
  }
11
- /** Menu configuration types **/
12
11
  export declare const PopoutMenuSeparator: Readonly<{
13
- __isMenuSeparator__: true;
12
+ label: "__isMenuSeparator__";
14
13
  }>;
15
14
  interface MenuSeparatorType {
16
15
  __isMenuSeparator__: boolean;
@@ -32,5 +31,5 @@ export interface MenuOption<RowType extends GridBaseRow> {
32
31
  * NOTE: If the popout menu doesn't appear on single click when also selecting row it's because
33
32
  * you need a useMemo around your columnDefs
34
33
  */
35
- export declare const GridFormPopoverMenu: <RowType extends GridBaseRow>(props: GridFormPopoutMenuProps<RowType>) => JSX.Element;
34
+ export declare const GridFormPopoverMenu: <RowType extends GridBaseRow>(props: GridFormPopoverMenuProps<RowType>) => JSX.Element;
36
35
  export {};
@@ -1,5 +1,5 @@
1
1
  import { ColDefT, GenericCellEditorProps } from "../GridCell";
2
2
  import { GridBaseRow } from "../Grid";
3
- import { GridFormPopoutDropDownProps } from "../gridForm/GridFormDropDown";
3
+ import { GridFormDropDownProps } from "../gridForm/GridFormDropDown";
4
4
  import { GenericCellColDef } from "../gridRender/GridRenderGenericCell";
5
- export declare const GridPopoverEditDropDown: <RowType extends GridBaseRow>(colDef: GenericCellColDef<RowType>, props: GenericCellEditorProps<GridFormPopoutDropDownProps<RowType>>) => ColDefT<RowType>;
5
+ export declare const GridPopoverEditDropDown: <RowType extends GridBaseRow>(colDef: GenericCellColDef<RowType>, props: GenericCellEditorProps<GridFormDropDownProps<RowType>>) => ColDefT<RowType>;
@@ -1,8 +1,8 @@
1
1
  import { GridBaseRow } from "../Grid";
2
2
  import { ColDefT, GenericCellEditorProps } from "../GridCell";
3
- import { GridFormPopoutMenuProps } from "../gridForm/GridFormPopoverMenu";
3
+ import { GridFormPopoverMenuProps } from "../gridForm/GridFormPopoverMenu";
4
4
  import { GenericCellColDef } from "../gridRender/GridRenderGenericCell";
5
5
  /**
6
6
  * Popout burger menu
7
7
  */
8
- export declare const GridPopoverMenu: <RowType extends GridBaseRow>(colDef: GenericCellColDef<RowType>, custom: GenericCellEditorProps<GridFormPopoutMenuProps<RowType>>) => ColDefT<RowType>;
8
+ export declare const GridPopoverMenu: <RowType extends GridBaseRow>(colDef: GenericCellColDef<RowType>, custom: GenericCellEditorProps<GridFormPopoverMenuProps<RowType>>) => ColDefT<RowType>;
@@ -15,5 +15,6 @@ export interface ActionButtonProps {
15
15
  onClick: () => Promise<void> | void;
16
16
  level?: LuiButtonProps["level"];
17
17
  style?: CSSProperties;
18
+ disabled?: boolean;
18
19
  }
19
- export declare const ActionButton: ({ icon, name, inProgressName, dataTestId, style, className, title, onClick, size, iconPosition, level, "aria-label": ariaLabel, }: ActionButtonProps) => JSX.Element;
20
+ export declare const ActionButton: ({ icon, name, inProgressName, disabled, dataTestId, style, className, title, onClick, size, iconPosition, level, "aria-label": ariaLabel, }: ActionButtonProps) => JSX.Element;
@@ -3,3 +3,5 @@ export declare const bearingCorrectionValueFormatter: (value: any) => string;
3
3
  export declare const bearingNumberParser: (value: string) => number | null;
4
4
  export declare const bearingStringValidator: (value: string, customInvalid?: ((value: number | null) => string | null) | undefined) => string | null;
5
5
  export declare const convertDDToDMS: (dd: number | null, showPositiveSymbol?: boolean, addTrailingZeros?: boolean) => string;
6
+ export declare const bearingRangeValidator: (value: number | null) => "Bearing is required" | "Bearing must be less than 360 degrees" | "Bearing must not be negative" | null;
7
+ export declare const bearingCorrectionRangeValidator: (value: number | null) => "Bearing correction is required" | "Bearing correction must be less than 360 degrees" | "Bearing correction must be greater then -180 degrees" | null;
@@ -2981,7 +2981,7 @@ var GridCellRenderer = function (props) {
2981
2981
  var warningText = warningFn ? warningFn(props) : undefined;
2982
2982
  var infoFn = rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.info;
2983
2983
  var infoText = infoFn ? infoFn(props) : undefined;
2984
- return (jsx(GridLoadableCell, __assign({ isLoading: checkUpdating((_b = (_a = colDef.field) !== null && _a !== void 0 ? _a : colDef.colId) !== null && _b !== void 0 ? _b : "", props.data.id) }, { children: jsxs(Fragment$1, { children: [typeof warningText === "string" && jsx(GridIcon, { icon: "ic_warning", title: warningText }), typeof infoText === "string" && jsx(GridIcon, { icon: "ic_info", title: infoText }), jsx("div", __assign({ style: { display: "flex", flex: 1, overflow: "hidden" } }, { children: ((_c = colDef === null || colDef === void 0 ? void 0 : colDef.cellRendererParams) === null || _c === void 0 ? void 0 : _c.originalCellRenderer) ? (jsx(colDef.cellRendererParams.originalCellRenderer, __assign({}, props))) : (jsx("span", __assign({ title: props.valueFormatted }, { children: props.valueFormatted }))) })), fnOrVar((_d = props.colDef) === null || _d === void 0 ? void 0 : _d.editable, props) && (rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.rightHoverElement) && (jsx("div", __assign({ style: { display: "flex", alignItems: "center" } }, { children: rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.rightHoverElement })))] }) })));
2984
+ return (jsx(GridLoadableCell, __assign({ isLoading: checkUpdating((_b = (_a = colDef.field) !== null && _a !== void 0 ? _a : colDef.colId) !== null && _b !== void 0 ? _b : "", props.data.id) }, { children: jsxs(Fragment$1, { children: [typeof warningText === "string" && jsx(GridIcon, { icon: "ic_warning_outline", title: warningText }), typeof infoText === "string" && jsx(GridIcon, { icon: "ic_info_outline", title: infoText }), jsx("div", __assign({ style: { display: "flex", flex: 1, overflow: "hidden" } }, { children: ((_c = colDef === null || colDef === void 0 ? void 0 : colDef.cellRendererParams) === null || _c === void 0 ? void 0 : _c.originalCellRenderer) ? (jsx(colDef.cellRendererParams.originalCellRenderer, __assign({}, props))) : (jsx("span", __assign({ title: props.valueFormatted }, { children: props.valueFormatted }))) })), fnOrVar((_d = props.colDef) === null || _d === void 0 ? void 0 : _d.editable, props) && (rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.rightHoverElement) && (jsx("div", __assign({ style: { display: "flex", alignItems: "center" } }, { children: rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.rightHoverElement })))] }) })));
2985
2985
  };
2986
2986
  var suppressCellKeyboardEvents = function (e) {
2987
2987
  var _a, _b, _c, _d;
@@ -3278,17 +3278,17 @@ var fieldToString = function (field) {
3278
3278
  return typeof field == "symbol" ? field.toString() : "".concat(field);
3279
3279
  };
3280
3280
  var GridFormDropDown = function (props) {
3281
- var _a;
3282
- var _b = useGridPopoverContext(), selectedRows = _b.selectedRows, field = _b.field, data = _b.data;
3281
+ var _a, _b;
3282
+ var _c = useGridPopoverContext(), selectedRows = _c.selectedRows, field = _c.field, data = _c.data;
3283
3283
  // Save triggers during async action processing which triggers another selectItem(), this ref blocks that
3284
- var _c = useState(""), filter = _c[0], setFilter = _c[1];
3285
- var _d = useState(), filteredValues = _d[0], setFilteredValues = _d[1];
3286
- var _e = useState(null), options = _e[0], setOptions = _e[1];
3284
+ var _d = useState((_a = props.filterDefaultValue) !== null && _a !== void 0 ? _a : ""), filter = _d[0], setFilter = _d[1];
3285
+ var _e = useState(), filteredValues = _e[0], setFilteredValues = _e[1];
3286
+ var _f = useState(null), options = _f[0], setOptions = _f[1];
3287
3287
  var subComponentIsValid = useRef(false);
3288
3288
  var subComponentInitialValue = useRef(null);
3289
- var _f = useState(null), subSelectedValue = _f[0], setSubSelectedValue = _f[1];
3289
+ var _g = useState(null), subSelectedValue = _g[0], setSubSelectedValue = _g[1];
3290
3290
  // Note: null is assumed to be the filter
3291
- var _g = useState(null), selectedItem = _g[0], setSelectedItem = _g[1];
3291
+ var _h = useState(null), selectedItem = _h[0], setSelectedItem = _h[1];
3292
3292
  var selectItemHandler = useCallback(function (value, subComponentValue) { return __awaiter(void 0, void 0, void 0, function () {
3293
3293
  var hasChanged;
3294
3294
  return __generator(this, function (_a) {
@@ -3367,7 +3367,7 @@ var GridFormDropDown = function (props) {
3367
3367
  .filter(function (r) { return r !== undefined; }));
3368
3368
  }
3369
3369
  }, [props.filtered, filter, options]);
3370
- var researchOnFilterChange = useMemo(function () {
3370
+ var reSearchOnFilterChange = useMemo(function () {
3371
3371
  return dist$1(function () {
3372
3372
  setOptions(null);
3373
3373
  }, 500);
@@ -3377,9 +3377,9 @@ var GridFormDropDown = function (props) {
3377
3377
  useEffect(function () {
3378
3378
  if (previousFilter.current != filter && props.filtered == "reload") {
3379
3379
  previousFilter.current = filter;
3380
- researchOnFilterChange().then();
3380
+ reSearchOnFilterChange().then();
3381
3381
  }
3382
- }, [filter, props, researchOnFilterChange]);
3382
+ }, [filter, props, reSearchOnFilterChange]);
3383
3383
  /**
3384
3384
  * Saves are wrapped in updateValue and triggered by blur events
3385
3385
  */
@@ -3419,6 +3419,8 @@ var GridFormDropDown = function (props) {
3419
3419
  invalid: function () { return !!(selectedItem && !subComponentIsValid.current); },
3420
3420
  save: save
3421
3421
  }).popoverWrapper;
3422
+ var lastHeader = null;
3423
+ var showHeader = null;
3422
3424
  return popoverWrapper(jsxs(Fragment$1, { children: [props.filtered && (jsxs("div", __assign({ className: "GridFormDropDown-filter" }, { children: [jsx(FocusableItem, __assign({ className: "filter-item", onFocus: function () {
3423
3425
  setSelectedItem(null);
3424
3426
  setSubSelectedValue(null);
@@ -3426,46 +3428,60 @@ var GridFormDropDown = function (props) {
3426
3428
  } }, { children: function (_a) {
3427
3429
  var _b;
3428
3430
  var ref = _a.ref;
3429
- return (jsxs("div", __assign({ style: { display: "flex", flexDirection: "column", width: "100%" } }, { children: [jsx("input", { className: "LuiTextInput-input", ref: ref, type: "text", placeholder: (_b = props.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: filter, "data-allowtabtosave": true, "data-disableenterautosave": !props.onSelectFilter &&
3431
+ return (jsxs("div", __assign({ style: { display: "flex", flexDirection: "column", width: "100%" } }, { children: [jsx("input", { className: "LuiTextInput-input", ref: ref, type: "text", placeholder: (_b = props.filterPlaceholder) !== null && _b !== void 0 ? _b : "Filter...", "data-testid": "filteredMenu-free-text-input", defaultValue: filter, "data-allowtabtosave": true, "data-disableenterautosave": !props.onSelectFilter &&
3430
3432
  !(filteredValues && filteredValues.length === 1 && !filteredValues[0].subComponent), onChange: function (e) { return setFilter(e.target.value); } }), props.filterHelpText && isNotEmpty(filter) && (jsx(FormError, { error: null, helpText: props.filterHelpText }))] })));
3431
- } })), jsx(MenuDivider, {}, "$$divider_filter")] }))), jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormDropDown-options" }, { children: jsxs(Fragment$1, { children: [options && (isEmpty(options) || (filteredValues && isEmpty(filteredValues))) && (jsx(MenuItem, __assign({ className: "GridPopoverEditDropDown-noOptions" }, { children: (_a = props.noOptionsMessage) !== null && _a !== void 0 ? _a : "No Options" }), "".concat(fieldToString(field), "-empty"))), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
3433
+ } })), jsx(MenuDivider, {}, "$$divider_filter")] }))), jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormDropDown-options" }, { children: jsxs(Fragment$1, { children: [options && (isEmpty(options) || (filteredValues && isEmpty(filteredValues))) && (jsx(MenuItem, __assign({ className: "GridPopoverEditDropDown-noOptions", disabled: true }, { children: (_b = props.noOptionsMessage) !== null && _b !== void 0 ? _b : "No Options" }), "".concat(fieldToString(field), "-empty"))), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
3432
3434
  var _a;
3433
- return item.value === MenuSeparatorString ? (jsx(MenuDivider, {}, "$$divider_".concat(index))) : item.value === MenuHeaderString ? (jsx(MenuHeader, { children: item.label }, "$$header_".concat(index))) : ((!filteredValues || filteredValues.includes(item)) && (jsxs("div", { children: [jsxs(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onFocus: function () {
3434
- setSelectedItem(item);
3435
- if (item.subComponent) {
3436
- setSelectedItem(item);
3437
- subComponentIsValid.current = true;
3438
- subComponentInitialValue.current = null;
3439
- }
3440
- else {
3441
- setSubSelectedValue(null);
3442
- subComponentIsValid.current = true;
3443
- }
3444
- }, onClick: function (e) {
3445
- if (item.subComponent) {
3446
- e.keepOpen = true;
3447
- }
3448
- } }, { children: [(_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)), item.subComponent ? "..." : ""] }), "".concat(fieldToString(field), "-").concat(index)), item.subComponent && selectedItem === item && (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (ref) { return (jsx(GridSubComponentContext.Provider, __assign({ value: {
3449
- context: { options: options },
3450
- data: data,
3451
- value: subSelectedValue,
3452
- setValue: function (value) {
3453
- setSubSelectedValue(value);
3454
- if (subComponentInitialValue.current === null) {
3455
- // copy the default value of the sub-component so we can change detect on save
3456
- subComponentInitialValue.current = JSON.stringify(value);
3435
+ showHeader = null;
3436
+ if (item.value === MenuSeparatorString) {
3437
+ return jsx(MenuDivider, {}, "$$divider_".concat(index));
3438
+ }
3439
+ else if (item.value === MenuHeaderString) {
3440
+ lastHeader = jsx(MenuHeader, { children: item.label }, "$$header_".concat(index));
3441
+ return jsx(Fragment$1, {});
3442
+ }
3443
+ else {
3444
+ if (lastHeader) {
3445
+ showHeader = lastHeader;
3446
+ lastHeader = null;
3447
+ }
3448
+ }
3449
+ return ((!filteredValues || filteredValues.includes(item)) && (jsxs(Fragment$1, { children: [showHeader, jsxs("div", { children: [jsxs(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onFocus: function () {
3450
+ setSelectedItem(item);
3451
+ if (item.subComponent) {
3452
+ setSelectedItem(item);
3453
+ subComponentIsValid.current = true;
3454
+ subComponentInitialValue.current = null;
3455
+ }
3456
+ else {
3457
+ setSubSelectedValue(null);
3458
+ subComponentIsValid.current = true;
3459
+ }
3460
+ }, onClick: function (e) {
3461
+ if (item.subComponent) {
3462
+ e.keepOpen = true;
3457
3463
  }
3458
- },
3459
- setValid: function (valid) {
3460
- subComponentIsValid.current = valid;
3461
- },
3462
- triggerSave: function () { return __awaiter(void 0, void 0, void 0, function () {
3463
- return __generator(this, function (_a) {
3464
- ref.closeMenu();
3465
- return [2 /*return*/];
3466
- });
3467
- }); }
3468
- } }, { children: item.subComponent && (jsx("div", __assign({ className: "subComponent" }, { children: jsx(item.subComponent, {}, "".concat(fieldToString(field), "-").concat(index, "_subcomponent_inner")) }))) }))); } }), "".concat(item.label, "_subcomponent")))] }, "menu-wrapper-".concat(index))));
3464
+ } }, { children: [(_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)), item.subComponent ? "..." : ""] }), "".concat(fieldToString(field), "-").concat(index)), item.subComponent && selectedItem === item && (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (ref) { return (jsx(GridSubComponentContext.Provider, __assign({ value: {
3465
+ context: { options: options },
3466
+ data: data,
3467
+ value: subSelectedValue,
3468
+ setValue: function (value) {
3469
+ setSubSelectedValue(value);
3470
+ if (subComponentInitialValue.current === null) {
3471
+ // copy the default value of the subcomponent so we can change detect on save
3472
+ subComponentInitialValue.current = JSON.stringify(value);
3473
+ }
3474
+ },
3475
+ setValid: function (valid) {
3476
+ subComponentIsValid.current = valid;
3477
+ },
3478
+ triggerSave: function () { return __awaiter(void 0, void 0, void 0, function () {
3479
+ return __generator(this, function (_a) {
3480
+ ref.closeMenu();
3481
+ return [2 /*return*/];
3482
+ });
3483
+ }); }
3484
+ } }, { children: item.subComponent && (jsx("div", __assign({ className: "subComponent" }, { children: jsx(item.subComponent, {}, "".concat(fieldToString(field), "-").concat(index, "_subcomponent_inner")) }))) }))); } }), "".concat(item.label, "_subcomponent")))] }, "menu-wrapper-".concat(index))] })));
3469
3485
  })] }) }))] }));
3470
3486
  };
3471
3487
 
@@ -3621,12 +3637,13 @@ var textMatch = function (text, filter) {
3621
3637
  };
3622
3638
 
3623
3639
  var GridFormMultiSelect = function (props) {
3624
- var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, data = _a.data;
3640
+ var _a;
3641
+ var _b = useGridPopoverContext(), selectedRows = _b.selectedRows, data = _b.data;
3625
3642
  var subComponentIsValidRef = useRef({});
3626
3643
  var optionsInitialising = useRef(false);
3627
- var _b = useState(""), filter = _b[0], setFilter = _b[1];
3628
- var _c = useState(""), initialValues = _c[0], setInitialValues = _c[1];
3629
- var _d = useState(), options = _d[0], setOptions = _d[1];
3644
+ var _c = useState(""), filter = _c[0], setFilter = _c[1];
3645
+ var _d = useState(""), initialValues = _d[0], setInitialValues = _d[1];
3646
+ var _e = useState(), options = _e[0], setOptions = _e[1];
3630
3647
  var invalid = useCallback(function () {
3631
3648
  if (!options)
3632
3649
  return true;
@@ -3684,7 +3701,7 @@ var GridFormMultiSelect = function (props) {
3684
3701
  var headerGroups = useMemo(function () {
3685
3702
  if (!options)
3686
3703
  return undefined;
3687
- var result = groupBy(options.filter(function (o) { return textMatch(o.label, filter) && o.value; }), "filter");
3704
+ var result = groupBy(options.filter(function (o) { return textMatch(o.label, filter) && o.value != null; }), "filter");
3688
3705
  // remove leading/trailing/duplicate dividers
3689
3706
  return fromPairs(toPairs(result).map(function (_a) {
3690
3707
  var key = _a[0], arr = _a[1];
@@ -3710,12 +3727,15 @@ var GridFormMultiSelect = function (props) {
3710
3727
  }));
3711
3728
  }, [filter, options]);
3712
3729
  var headers = useMemo(function () { var _a; return (_a = props.headers) !== null && _a !== void 0 ? _a : [{ header: "" }]; }, [props.headers]);
3713
- var _e = useGridPopoverHook({
3730
+ var _f = useGridPopoverHook({
3714
3731
  className: props.className,
3715
3732
  invalid: invalid,
3716
3733
  save: save
3717
- }), popoverWrapper = _e.popoverWrapper, triggerSave = _e.triggerSave;
3718
- return popoverWrapper(jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormMultiSelect-container" }, { children: options && (jsxs(Fragment$1, { children: [props.filtered && (jsx(FilterInput, __assign({}, { headerGroups: headerGroups, options: options, setOptions: setOptions, filter: filter, setFilter: setFilter, triggerSave: triggerSave }, { filterHelpText: props.filterHelpText, onSelectFilter: props.onSelectFilter, filterPlaceholder: props.filterPlaceholder }))), headerGroups && (jsx("div", __assign({ className: "GridFormMultiSelect-options" }, { children: headers.map(function (header, index) {
3734
+ }), popoverWrapper = _f.popoverWrapper, triggerSave = _f.triggerSave;
3735
+ return popoverWrapper(jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormMultiSelect-container" }, { children: options && (jsxs(Fragment$1, { children: [props.filtered && (jsx(FilterInput, __assign({}, { headerGroups: headerGroups, options: options, setOptions: setOptions, filter: filter, setFilter: setFilter, triggerSave: triggerSave }, { filterHelpText: props.filterHelpText, onSelectFilter: props.onSelectFilter, filterPlaceholder: props.filterPlaceholder }))), headerGroups && (isEmpty(headerGroups) || !toPairs(headerGroups).some(function (_a) {
3736
+ _a[0]; var options = _a[1];
3737
+ return !isEmpty(options);
3738
+ })) && (jsx(MenuItem, __assign({ className: "GridMultiSelect-noOptions", disabled: true }, { children: (_a = props.noOptionsMessage) !== null && _a !== void 0 ? _a : "No Options" }), "noOptions")), headerGroups && !isEmpty(headerGroups) && (jsx("div", __assign({ className: "GridFormMultiSelect-options" }, { children: headers.map(function (header, index) {
3719
3739
  var subOptions = headerGroups["".concat(header.filter)];
3720
3740
  return (!isEmpty(subOptions) && (jsxs(Fragment, { children: [header.header && jsx(MenuHeader, { children: header.header }), subOptions.map(function (item, index) {
3721
3741
  return item.value === MenuSeparatorString ? (jsx(MenuDivider, {}, "div_".concat(index))) : (jsxs(Fragment, { children: [jsx(MenuRadioItem, { item: item, options: options, setOptions: setOptions }), item.checked && item.subComponent && (jsx(MenuSubComponent, __assign({}, { item: item, options: options, setOptions: setOptions, data: data, triggerSave: triggerSave }, { subComponentIsValid: subComponentIsValidRef.current })))] }, "val_".concat(item.value)));
@@ -3796,10 +3816,7 @@ var FilterInput = function (props) {
3796
3816
  lastKeyWasEnter.current = false;
3797
3817
  }
3798
3818
  }, [addCustomFilterValue, filter, onSelectFilter, setFilter, toggleSelectAllVisible, triggerSave]);
3799
- return (jsxs(Fragment$1, { children: [jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_) { return (jsxs("div", __assign({ style: { width: "100%" }, className: "GridFormMultiSelect-filter" }, { children: [jsx("input", { className: "LuiTextInput-input", type: "text", placeholder: filterPlaceholder !== null && filterPlaceholder !== void 0 ? filterPlaceholder : "Placeholder", "data-testid": "filteredMenu-free-text-input", value: filter, "data-disableenterautosave": true, "data-allowtabtosave": true, onChange: function (e) { return setFilter(e.target.value); }, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp }), filterHelpText && (jsx(FormError, { error: null, helpText: typeof filterHelpText === "function" ? filterHelpText(filter.trim(), options) : filterHelpText }))] }))); } }), "filter"), jsx(MenuDivider, {}, "$$divider_filter"), headerGroups && !toPairs(headerGroups).some(function (_a) {
3800
- _a[0]; var options = _a[1];
3801
- return !isEmpty(options);
3802
- }) && (jsx("div", __assign({ className: "szh-menu__item GridPopoverEditDropDown-noOptions" }, { children: "No Options" })))] }));
3819
+ return (jsxs(Fragment$1, { children: [jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_) { return (jsxs("div", __assign({ style: { width: "100%" }, className: "GridFormMultiSelect-filter" }, { children: [jsx("input", { className: "LuiTextInput-input", type: "text", placeholder: filterPlaceholder !== null && filterPlaceholder !== void 0 ? filterPlaceholder : "Filter...", "data-testid": "filteredMenu-free-text-input", value: filter, "data-disableenterautosave": true, "data-allowtabtosave": true, onChange: function (e) { return setFilter(e.target.value); }, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp }), filterHelpText && (jsx(FormError, { error: null, helpText: typeof filterHelpText === "function" ? filterHelpText(filter.trim(), options) : filterHelpText }))] }))); } }), "filter"), jsx(MenuDivider, {}, "$$divider_filter")] }));
3803
3820
  };
3804
3821
  var MenuRadioItem = function (props) {
3805
3822
  var _a, _b;
@@ -3814,7 +3831,7 @@ var MenuRadioItem = function (props) {
3814
3831
  e.keepOpen = true;
3815
3832
  toggleValue(item);
3816
3833
  }
3817
- } }, { children: jsx(LuiCheckboxInput, { isChecked: (_a = item.checked) !== null && _a !== void 0 ? _a : false, value: "".concat(item.value), label: jsxs(Fragment$1, { children: [item.warning && jsx(GridIcon, { icon: "ic_warning", title: item.warning }), (_b = item.label) !== null && _b !== void 0 ? _b : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value))] }), inputProps: {
3834
+ } }, { children: jsx(LuiCheckboxInput, { isChecked: (_a = item.checked) !== null && _a !== void 0 ? _a : false, value: "".concat(item.value), label: jsxs(Fragment$1, { children: [item.warning && jsx(GridIcon, { icon: "ic_warning_outline", title: item.warning }), (_b = item.label) !== null && _b !== void 0 ? _b : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value))] }), inputProps: {
3818
3835
  onClick: function (e) {
3819
3836
  // Click is handled by MenuItem onClick
3820
3837
  e.preventDefault();
@@ -3848,7 +3865,8 @@ var GridPopoutEditMultiSelect = function (colDef, props) {
3848
3865
  };
3849
3866
 
3850
3867
  /** Menu configuration types **/
3851
- var PopoutMenuSeparator = Object.freeze({ __isMenuSeparator__: true });
3868
+ var __isMenuSeparator__ = "__isMenuSeparator__";
3869
+ var PopoutMenuSeparator = Object.freeze({ label: __isMenuSeparator__ });
3852
3870
  /**
3853
3871
  * NOTE: If the popout menu doesn't appear on single click when also selecting row it's because
3854
3872
  * you need a useMemo around your columnDefs
@@ -3969,8 +3987,8 @@ var GridFormPopoverMenu = function (props) {
3969
3987
  invalid: function () { return subComponentSelected && !subComponentIsValid.current; },
3970
3988
  save: save
3971
3989
  }), popoverWrapper = _e.popoverWrapper, triggerSave = _e.triggerSave;
3972
- return popoverWrapper(jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormPopupMenu" }, { children: jsx(Fragment$1, { children: options === null || options === void 0 ? void 0 : options.map(function (item, index) {
3973
- return item.label === PopoutMenuSeparator ? (jsx(MenuDivider, {}, "$$divider_".concat(index))) : (!item.hidden && (jsxs(Fragment, { children: [jsx(MenuItem, __assign({ onClick: function (e) { return onMenuItemClick(e, item); }, disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "" }, { children: item.label }), "".concat(item.label)), item.subComponent && subComponentSelected === item && (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (_) {
3990
+ return popoverWrapper(jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormPopupMenu" }, { children: jsx(Fragment$1, { children: (options === null || options === void 0 ? void 0 : options.length) === 0 ? (jsx(MenuItem, __assign({ className: "GridPopoverMenu-noOptions", disabled: true }, { children: "No actions" }), "GridPopoverMenu-empty")) : (options === null || options === void 0 ? void 0 : options.map(function (item, index) {
3991
+ return item.label === "__isMenuSeparator__" ? (jsx(MenuDivider, {}, "$$divider_".concat(index))) : (!item.hidden && (jsxs(Fragment, { children: [jsx(MenuItem, __assign({ onClick: function (e) { return onMenuItemClick(e, item); }, disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "" }, { children: item.label }), "".concat(item.label)), item.subComponent && subComponentSelected === item && (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (_) {
3974
3992
  return item.subComponent && (jsx(GridSubComponentContext.Provider, __assign({ value: {
3975
3993
  context: {},
3976
3994
  data: data,
@@ -3984,7 +4002,7 @@ var GridFormPopoverMenu = function (props) {
3984
4002
  triggerSave: triggerSave
3985
4003
  } }, { children: jsx("div", __assign({ className: "subComponent" }, { children: jsx(item.subComponent, {}) })) })));
3986
4004
  } }), "".concat(item.label, "_subcomponent")))] }, "".concat(item.label))));
3987
- }) }) })));
4005
+ })) }) })));
3988
4006
  };
3989
4007
 
3990
4008
  /**
@@ -4073,6 +4091,24 @@ var convertDDToDMS = function (dd, showPositiveSymbol, addTrailingZeros) {
4073
4091
  dmsString += "\u00A0".concat(minString, "'");
4074
4092
  }
4075
4093
  return dmsString;
4094
+ };
4095
+ var bearingRangeValidator = function (value) {
4096
+ if (value === null)
4097
+ return "Bearing is required";
4098
+ if (value >= 360)
4099
+ return "Bearing must be less than 360 degrees";
4100
+ if (value < 0)
4101
+ return "Bearing must not be negative";
4102
+ return null;
4103
+ };
4104
+ var bearingCorrectionRangeValidator = function (value) {
4105
+ if (value === null)
4106
+ return "Bearing correction is required";
4107
+ if (value >= 360)
4108
+ return "Bearing correction must be less than 360 degrees";
4109
+ if (value <= -180)
4110
+ return "Bearing correction must be greater then -180 degrees";
4111
+ return null;
4076
4112
  };
4077
4113
 
4078
4114
  var css_248z$1 = ".LuiTextInput{margin-bottom:0}.LuiTextInput-formatted{color:#beb9b4;line-height:48px;position:absolute;right:14px;top:0}";
@@ -4123,7 +4159,7 @@ var GridFormEditBearing = function (props) {
4123
4159
  invalid: invalid,
4124
4160
  save: save
4125
4161
  }).popoverWrapper;
4126
- return popoverWrapper(jsx("div", __assign({ className: "GridFormEditBearing-input Grid-popoverContainer" }, { children: jsx(TextInputFormatted, { value: defaultValue, onChange: function (e) {
4162
+ return popoverWrapper(jsx("div", __assign({ className: "GridFormEditBearing-input" }, { children: jsx(TextInputFormatted, { value: defaultValue, onChange: function (e) {
4127
4163
  setValue(e.target.value.trim());
4128
4164
  }, autoFocus: true, placeholder: props.placeHolder, formatted: bearingStringValidator(value, props.range) || !props.formatValue
4129
4165
  ? "?"
@@ -4136,15 +4172,7 @@ var GridPopoverEditBearingLike = function (colDef, props) {
4136
4172
  var GridPopoverEditBearingEditorParams = {
4137
4173
  placeHolder: "Enter bearing",
4138
4174
  formatValue: bearingValueFormatter,
4139
- range: function (value) {
4140
- if (value === null)
4141
- return "Bearing is required";
4142
- if (value >= 360)
4143
- return "Bearing must be less than 360 degrees";
4144
- if (value < 0)
4145
- return "Bearing must not be negative";
4146
- return null;
4147
- }
4175
+ range: bearingRangeValidator
4148
4176
  };
4149
4177
  var GridPopoverEditBearing = function (colDef, props) {
4150
4178
  return GridPopoverEditBearingLike(colDef, {
@@ -4155,15 +4183,7 @@ var GridPopoverEditBearing = function (colDef, props) {
4155
4183
  var GridPopoverEditBearingCorrectionEditorParams = {
4156
4184
  placeHolder: "Enter bearing correction",
4157
4185
  formatValue: bearingCorrectionValueFormatter,
4158
- range: function (value) {
4159
- if (value === null)
4160
- return "Bearing correction is required";
4161
- if (value >= 360)
4162
- return "Bearing correction must be less than 360 degrees";
4163
- if (value <= -180)
4164
- return "Bearing correction must be greater then -180 degrees";
4165
- return null;
4166
- }
4186
+ range: bearingCorrectionRangeValidator
4167
4187
  };
4168
4188
  var GridPopoverEditBearingCorrection = function (colDef, props) {
4169
4189
  return GridPopoverEditBearingLike(colDef, {
@@ -4519,7 +4539,7 @@ var useStateDeferred = function (initialValue) {
4519
4539
  var minimumInProgressTimeMs = 950;
4520
4540
  var ActionButton = function (_a) {
4521
4541
  var _b, _c, _d;
4522
- var icon = _a.icon, name = _a.name, inProgressName = _a.inProgressName, dataTestId = _a.dataTestId, style = _a.style, className = _a.className, title = _a.title, onClick = _a.onClick, _e = _a.size, size = _e === void 0 ? "sm" : _e, _f = _a.iconPosition, iconPosition = _f === void 0 ? "left" : _f, _g = _a.level, level = _g === void 0 ? "tertiary" : _g, ariaLabel = _a["aria-label"];
4542
+ var icon = _a.icon, name = _a.name, inProgressName = _a.inProgressName, disabled = _a.disabled, dataTestId = _a.dataTestId, style = _a.style, className = _a.className, title = _a.title, onClick = _a.onClick, _e = _a.size, size = _e === void 0 ? "sm" : _e, _f = _a.iconPosition, iconPosition = _f === void 0 ? "left" : _f, _g = _a.level, level = _g === void 0 ? "tertiary" : _g, ariaLabel = _a["aria-label"];
4523
4543
  var _h = useState(false), inProgress = _h[0], setInProgress = _h[1];
4524
4544
  var lastInProgress = usePrevious(inProgress !== null && inProgress !== void 0 ? inProgress : false);
4525
4545
  var _j = useStateDeferred(inProgress), localInProgress = _j[0], setLocalInProgress = _j[1], setLocalInProgressDeferred = _j[2];
@@ -4549,7 +4569,7 @@ var ActionButton = function (_a) {
4549
4569
  case 3: return [2 /*return*/];
4550
4570
  }
4551
4571
  });
4552
- }); }, disabled: localInProgress }, { children: [iconPosition === "right" && buttonText, localInProgress ? (jsx(LuiMiniSpinner, { size: 16, divProps: {
4572
+ }); }, disabled: localInProgress || disabled }, { children: [iconPosition === "right" && buttonText, localInProgress ? (jsx(LuiMiniSpinner, { size: 16, divProps: {
4553
4573
  "data-testid": "loading-spinner",
4554
4574
  style: {
4555
4575
  margin: 0,
@@ -24918,5 +24938,5 @@ var clickActionButton = function (text, container) { return __awaiter(void 0, vo
24918
24938
  });
24919
24939
  }); };
24920
24940
 
24921
- export { ActionButton, ComponentLoadingWrapper, ControlledMenu, Editor, FocusableItem, GenericCellEditorComponentWrapper, Grid, GridCell, GridCellMultiEditor, GridCellMultiSelectClassRules, GridCellRenderer, GridContext, GridContextProvider, GridFormDropDown, GridFormEditBearing, GridFormMessage, GridFormMultiSelect, GridFormPopoverMenu, GridFormSubComponentTextArea, GridFormSubComponentTextInput, GridFormTextArea, GridFormTextInput, GridHeaderSelect, GridIcon, GridLoadableCell, GridPopoutEditMultiSelect, GridPopoverContext, GridPopoverContextProvider, GridPopoverEditBearing, GridPopoverEditBearingCorrection, GridPopoverEditDropDown, GridPopoverMenu, GridPopoverMessage, GridPopoverTextArea, GridPopoverTextInput, GridRenderPopoutMenuCell, GridSubComponentContext, GridUpdatingContext, GridUpdatingContextProvider, Menu, MenuButton, MenuDivider, MenuGroup, MenuHeader, MenuHeaderItem, MenuHeaderString, MenuItem, MenuRadioGroup, MenuSeparator, MenuSeparatorString, PopoutMenuSeparator, SubMenu, TextAreaInput, TextInputFormatted, bearingCorrectionValueFormatter, bearingNumberParser, bearingStringValidator, bearingValueFormatter, clickActionButton, clickMenuOption, clickMultiSelectOption, closeMenu, closePopover, convertDDToDMS, countRows, deselectRow, editCell, findActionButton, findCell, findCellContains, findMenuOption, findMultiSelectOption, findOpenPopover, findParentWithClass, findRow, fnOrVar, getMultiSelectOptions, hasParentClass, isCellReadOnly, isFloat, isNotEmpty, openAndClickMenuOption, openAndFindMenuOption, queryMenuOption, queryRow, selectCell, selectRow, stringByteLengthIsInvalid, suppressCellKeyboardEvents, typeInputByLabel, typeInputByPlaceholder, typeOnlyInput, typeOtherInput, typeOtherTextArea, useDeferredPromise, useGridPopoverContext, useGridPopoverHook, useMenuState, usePostSortRowsHook, validateMenuOptions, wait$2 as wait };
24941
+ export { ActionButton, ComponentLoadingWrapper, ControlledMenu, Editor, FocusableItem, GenericCellEditorComponentWrapper, Grid, GridCell, GridCellMultiEditor, GridCellMultiSelectClassRules, GridCellRenderer, GridContext, GridContextProvider, GridFormDropDown, GridFormEditBearing, GridFormMessage, GridFormMultiSelect, GridFormPopoverMenu, GridFormSubComponentTextArea, GridFormSubComponentTextInput, GridFormTextArea, GridFormTextInput, GridHeaderSelect, GridIcon, GridLoadableCell, GridPopoutEditMultiSelect, GridPopoverContext, GridPopoverContextProvider, GridPopoverEditBearing, GridPopoverEditBearingCorrection, GridPopoverEditDropDown, GridPopoverMenu, GridPopoverMessage, GridPopoverTextArea, GridPopoverTextInput, GridRenderPopoutMenuCell, GridSubComponentContext, GridUpdatingContext, GridUpdatingContextProvider, Menu, MenuButton, MenuDivider, MenuGroup, MenuHeader, MenuHeaderItem, MenuHeaderString, MenuItem, MenuRadioGroup, MenuSeparator, MenuSeparatorString, PopoutMenuSeparator, SubMenu, TextAreaInput, TextInputFormatted, bearingCorrectionRangeValidator, bearingCorrectionValueFormatter, bearingNumberParser, bearingRangeValidator, bearingStringValidator, bearingValueFormatter, clickActionButton, clickMenuOption, clickMultiSelectOption, closeMenu, closePopover, convertDDToDMS, countRows, deselectRow, editCell, findActionButton, findCell, findCellContains, findMenuOption, findMultiSelectOption, findOpenPopover, findParentWithClass, findRow, fnOrVar, getMultiSelectOptions, hasParentClass, isCellReadOnly, isFloat, isNotEmpty, openAndClickMenuOption, openAndFindMenuOption, queryMenuOption, queryRow, selectCell, selectRow, stringByteLengthIsInvalid, suppressCellKeyboardEvents, typeInputByLabel, typeInputByPlaceholder, typeOnlyInput, typeOtherInput, typeOtherTextArea, useDeferredPromise, useGridPopoverContext, useGridPopoverHook, useMenuState, usePostSortRowsHook, validateMenuOptions, wait$2 as wait };
24922
24942
  //# sourceMappingURL=step-ag-grid.esm.js.map