@linzjs/step-ag-grid 1.5.4 → 2.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 (61) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.js +241 -200
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/components/GridCell.d.ts +18 -27
  5. package/dist/src/components/GridPopoverHook.d.ts +4 -2
  6. package/dist/src/components/gridForm/GridFormDropDown.d.ts +8 -3
  7. package/dist/src/components/gridForm/GridFormEditBearing.d.ts +3 -4
  8. package/dist/src/components/gridForm/GridFormMessage.d.ts +4 -5
  9. package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +2 -3
  10. package/dist/src/components/gridForm/GridFormPopoutMenu.d.ts +2 -3
  11. package/dist/src/components/gridForm/GridFormTextArea.d.ts +2 -3
  12. package/dist/src/components/gridForm/GridFormTextInput.d.ts +2 -3
  13. package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.d.ts +3 -2
  14. package/dist/src/components/gridPopoverEdit/GridPopoverEditBearing.d.ts +5 -270
  15. package/dist/src/components/gridPopoverEdit/GridPopoverEditDropDown.d.ts +3 -2
  16. package/dist/src/components/gridPopoverEdit/GridPopoverMenu.d.ts +2 -2
  17. package/dist/src/components/gridPopoverEdit/GridPopoverMessage.d.ts +3 -2
  18. package/dist/src/components/gridPopoverEdit/GridPopoverTextArea.d.ts +3 -2
  19. package/dist/src/components/gridPopoverEdit/GridPopoverTextInput.d.ts +3 -2
  20. package/dist/src/components/gridRender/GridRenderGenericCell.d.ts +1 -3
  21. package/dist/src/contexts/GridPopoverContext.d.ts +17 -0
  22. package/dist/src/contexts/GridPopoverContextProvider.d.ts +6 -0
  23. package/dist/src/contexts/{UpdatingContext.d.ts → GridUpdatingContext.d.ts} +2 -2
  24. package/dist/src/contexts/GridUpdatingContextProvider.d.ts +7 -0
  25. package/dist/src/stories/components/FormTest.d.ts +1 -2
  26. package/dist/step-ag-grid.esm.js +238 -198
  27. package/dist/step-ag-grid.esm.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/components/Grid.tsx +2 -2
  30. package/src/components/GridCell.tsx +57 -79
  31. package/src/components/GridLoadableCell.tsx +4 -1
  32. package/src/components/GridPopoverHook.tsx +10 -14
  33. package/src/components/gridForm/GridFormDropDown.tsx +41 -30
  34. package/src/components/gridForm/GridFormEditBearing.tsx +13 -13
  35. package/src/components/gridForm/GridFormMessage.tsx +8 -13
  36. package/src/components/gridForm/GridFormMultiSelect.tsx +19 -19
  37. package/src/components/gridForm/GridFormPopoutMenu.tsx +7 -8
  38. package/src/components/gridForm/GridFormTextArea.tsx +16 -17
  39. package/src/components/gridForm/GridFormTextInput.tsx +17 -17
  40. package/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts +17 -16
  41. package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +53 -45
  42. package/src/components/gridPopoverEdit/GridPopoverEditDropDown.ts +17 -16
  43. package/src/components/gridPopoverEdit/GridPopoverMenu.tsx +20 -21
  44. package/src/components/gridPopoverEdit/GridPopoverMessage.ts +18 -16
  45. package/src/components/gridPopoverEdit/GridPopoverTextArea.ts +12 -16
  46. package/src/components/gridPopoverEdit/GridPopoverTextInput.ts +15 -15
  47. package/src/components/gridRender/GridRenderGenericCell.tsx +3 -5
  48. package/src/components/gridRender/GridRenderPopoutMenuCell.tsx +2 -2
  49. package/src/contexts/GridContextProvider.tsx +3 -5
  50. package/src/contexts/GridPopoverContext.tsx +32 -0
  51. package/src/contexts/GridPopoverContextProvider.tsx +53 -0
  52. package/src/contexts/{UpdatingContext.tsx → GridUpdatingContext.tsx} +2 -2
  53. package/src/contexts/{UpdatingContextProvider.tsx → GridUpdatingContextProvider.tsx} +8 -6
  54. package/src/stories/components/FormTest.tsx +4 -3
  55. package/src/stories/components/GridPopoutBearing.stories.tsx +28 -25
  56. package/src/stories/components/GridPopoutEditDropDown.stories.tsx +91 -50
  57. package/src/stories/components/GridPopoutEditGeneric.stories.tsx +18 -13
  58. package/src/stories/components/GridPopoutEditGenericTextArea.stories.tsx +76 -61
  59. package/src/stories/components/GridPopoutEditMultiSelect.stories.tsx +58 -51
  60. package/src/stories/components/GridReadOnly.stories.tsx +73 -57
  61. package/dist/src/contexts/UpdatingContextProvider.d.ts +0 -7
package/dist/index.js CHANGED
@@ -1640,7 +1640,7 @@ var MenuRadioGroupFr = function (_a, externalRef) {
1640
1640
  };
1641
1641
  var MenuRadioGroup = react.forwardRef(MenuRadioGroupFr);
1642
1642
 
1643
- var UpdatingContext = react.createContext({
1643
+ var GridUpdatingContext = react.createContext({
1644
1644
  checkUpdating: function () {
1645
1645
  console.error("Missing UpdatingContext");
1646
1646
  return false;
@@ -1653,7 +1653,7 @@ var UpdatingContext = react.createContext({
1653
1653
  }); }
1654
1654
  });
1655
1655
 
1656
- var UpdatingContextProvider = function (props) {
1656
+ var GridUpdatingContextProvider = function (props) {
1657
1657
  var updatingBlocks = react.useRef({});
1658
1658
  var updating = react.useRef({});
1659
1659
  var resetUpdating = function () {
@@ -1685,7 +1685,7 @@ var UpdatingContextProvider = function (props) {
1685
1685
  var checkUpdating = function (fields, id) {
1686
1686
  return lodashEs.castArray(fields).some(function (f) { var _a; return (_a = updating.current[f]) === null || _a === void 0 ? void 0 : _a.includes(id); });
1687
1687
  };
1688
- return (jsxRuntime.jsx(UpdatingContext.Provider, __assign({ value: { modifyUpdating: modifyUpdating, checkUpdating: checkUpdating } }, { children: props.children })));
1688
+ return (jsxRuntime.jsx(GridUpdatingContext.Provider, __assign({ value: { modifyUpdating: modifyUpdating, checkUpdating: checkUpdating } }, { children: props.children })));
1689
1689
  };
1690
1690
 
1691
1691
  var GridContext = react.createContext({
@@ -1764,7 +1764,7 @@ var GridContext = react.createContext({
1764
1764
  * Also, make sure the provider is created in a separate component, otherwise it won't be found.
1765
1765
  */
1766
1766
  var GridContextProvider = function (props) {
1767
- var modifyUpdating = react.useContext(UpdatingContext).modifyUpdating;
1767
+ var modifyUpdating = react.useContext(GridUpdatingContext).modifyUpdating;
1768
1768
  var gridApiRef = react.useRef();
1769
1769
  var idsBeforeUpdate = react.useRef([]);
1770
1770
  /**
@@ -1790,10 +1790,7 @@ var GridContextProvider = function (props) {
1790
1790
  noApiFn = (function () { });
1791
1791
  }
1792
1792
  var gridApi = gridApiRef.current;
1793
- if (gridApi)
1794
- return hasApiFn(gridApi);
1795
- console.error("GridApi not ready");
1796
- return noApiFn();
1793
+ return gridApi ? hasApiFn(gridApi) : noApiFn();
1797
1794
  };
1798
1795
  /**
1799
1796
  * Set the quick filter value to grid.
@@ -2214,7 +2211,7 @@ var GridHeaderSelect = function (_a) {
2214
2211
  var Grid = function (params) {
2215
2212
  var _a;
2216
2213
  var _b = react.useContext(GridContext), gridReady = _b.gridReady, setGridApi = _b.setGridApi, setQuickFilter = _b.setQuickFilter, ensureRowVisible = _b.ensureRowVisible, selectRowsById = _b.selectRowsById, ensureSelectedRowIsVisible = _b.ensureSelectedRowIsVisible, sizeColumnsToFit = _b.sizeColumnsToFit;
2217
- var checkUpdating = react.useContext(UpdatingContext).checkUpdating;
2214
+ var checkUpdating = react.useContext(GridUpdatingContext).checkUpdating;
2218
2215
  var _c = react.useState(""), internalQuickFilter = _c[0], setInternalQuickFilter = _c[1];
2219
2216
  var lastSelectedIds = react.useRef([]);
2220
2217
  var _d = react.useState(false), staleGrid = _d[0], setStaleGrid = _d[1];
@@ -2387,8 +2384,24 @@ styleInject(css_248z$5);
2387
2384
  var css_248z$4 = ".GridLoadableCell-container {\n display: flex;\n align-items: center;\n}";
2388
2385
  styleInject(css_248z$4);
2389
2386
 
2387
+ var GridPopoverContext = react.createContext({
2388
+ anchorRef: { current: null },
2389
+ updateValueRef: {
2390
+ current: function () { return __awaiter(void 0, void 0, void 0, function () {
2391
+ return __generator(this, function (_a) {
2392
+ console.error("Missing GridPopoverContext updateValueRef");
2393
+ return [2 /*return*/, false];
2394
+ });
2395
+ }); }
2396
+ },
2397
+ saving: false,
2398
+ setSaving: function () { },
2399
+ setProps: function () { },
2400
+ propsRef: { current: null }
2401
+ });
2402
+
2390
2403
  var GridLoadableCell = function (props) {
2391
- // console.log(`Rendering LoadableCell - loading: ${props.isLoading}`);
2404
+ react.useContext(GridPopoverContext).saving;
2392
2405
  if (props.isLoading) {
2393
2406
  return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", alignItems: "center" } }, { children: jsxRuntime.jsx(lui.LuiMiniSpinner, { size: 22, divProps: { role: "status", "aria-label": "Loading", style: { marginBottom: 4 } } }) })));
2394
2407
  }
@@ -2400,7 +2413,7 @@ var GridIcon = function (props) { return (jsxRuntime.jsx(lui.LuiIcon, { name: pr
2400
2413
 
2401
2414
  var GridRendererGenericCell = function (props) {
2402
2415
  var _a, _b, _c;
2403
- var checkUpdating = react.useContext(UpdatingContext).checkUpdating;
2416
+ var checkUpdating = react.useContext(GridUpdatingContext).checkUpdating;
2404
2417
  var colDef = props.colDef;
2405
2418
  var cellRendererParams = colDef.cellRendererParams;
2406
2419
  var warningFn = cellRendererParams === null || cellRendererParams === void 0 ? void 0 : cellRendererParams.warning;
@@ -2417,9 +2430,57 @@ var GridRendererGenericCell = function (props) {
2417
2430
  return (jsxRuntime.jsx(GridLoadableCell, __assign({ isLoading: checkUpdating((_c = (_b = colDef.field) !== null && _b !== void 0 ? _b : colDef.colId) !== null && _c !== void 0 ? _c : "", props.data.id) }, { children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [typeof warningText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_warning", title: warningText }), typeof infoText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_info", title: infoText }), jsxRuntime.jsx("span", __assign({ title: formatted }, { children: formatted }))] }) })));
2418
2431
  };
2419
2432
 
2433
+ var GridPopoverContextProvider = function (props) {
2434
+ var _a = react.useContext(GridContext), getSelectedRows = _a.getSelectedRows, updatingCells = _a.updatingCells;
2435
+ var anchorRef = react.useRef();
2436
+ var propsRef = react.useRef({});
2437
+ var updateValueRef = react.useRef(function () { return __awaiter(void 0, void 0, void 0, function () {
2438
+ return __generator(this, function (_a) {
2439
+ console.error("updateValueRef.current is not set");
2440
+ return [2 /*return*/, false];
2441
+ });
2442
+ }); });
2443
+ var _b = react.useState(false), saving = _b[0], setSaving = _b[1];
2444
+ var setProps = function (props, multiEdit) {
2445
+ var _a, _b;
2446
+ var selectedRows = multiEdit ? getSelectedRows() : [props.data];
2447
+ var field = (_b = (_a = props.colDef) === null || _a === void 0 ? void 0 : _a.field) !== null && _b !== void 0 ? _b : "";
2448
+ anchorRef.current = props.eGridCell;
2449
+ propsRef.current = {
2450
+ value: props.value,
2451
+ data: props.data,
2452
+ field: field,
2453
+ selectedRows: selectedRows
2454
+ };
2455
+ updateValueRef.current = function (saveFn) { return __awaiter(void 0, void 0, void 0, function () {
2456
+ var _a;
2457
+ return __generator(this, function (_b) {
2458
+ switch (_b.label) {
2459
+ case 0:
2460
+ _a = !saving;
2461
+ if (!_a) return [3 /*break*/, 2];
2462
+ return [4 /*yield*/, updatingCells({ selectedRows: selectedRows, field: field }, saveFn, setSaving)];
2463
+ case 1:
2464
+ _a = (_b.sent());
2465
+ _b.label = 2;
2466
+ case 2: return [2 /*return*/, _a];
2467
+ }
2468
+ });
2469
+ }); };
2470
+ };
2471
+ return (jsxRuntime.jsx(GridPopoverContext.Provider, __assign({ value: {
2472
+ anchorRef: anchorRef,
2473
+ saving: saving,
2474
+ setSaving: setSaving,
2475
+ updateValueRef: updateValueRef,
2476
+ propsRef: propsRef,
2477
+ setProps: setProps
2478
+ } }, { children: props.children })));
2479
+ };
2480
+
2420
2481
  var GridCellRenderer = function (props) {
2421
2482
  var _a, _b, _c;
2422
- var checkUpdating = react.useContext(UpdatingContext).checkUpdating;
2483
+ var checkUpdating = react.useContext(GridUpdatingContext).checkUpdating;
2423
2484
  var colDef = props.colDef;
2424
2485
  var rendererParams = colDef.cellRendererParams;
2425
2486
  var warningFn = rendererParams === null || rendererParams === void 0 ? void 0 : rendererParams.warning;
@@ -2428,15 +2489,17 @@ var GridCellRenderer = function (props) {
2428
2489
  var infoText = infoFn ? infoFn(props) : undefined;
2429
2490
  return ((_a = colDef === null || colDef === void 0 ? void 0 : colDef.cellRendererParams) === null || _a === void 0 ? void 0 : _a.originalCellRenderer) ? (jsxRuntime.jsx(GridLoadableCell, __assign({ isLoading: checkUpdating((_c = (_b = colDef.field) !== null && _b !== void 0 ? _b : colDef.colId) !== null && _c !== void 0 ? _c : "", props.data.id) }, { children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [typeof warningText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_warning", title: warningText }), typeof infoText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_info", title: infoText }), jsxRuntime.jsx(colDef.cellRendererParams.originalCellRenderer, __assign({}, props))] }) }))) : (jsxRuntime.jsx(GridRendererGenericCell, __assign({}, props)));
2430
2491
  };
2431
- /**
2492
+ /*
2432
2493
  * For editing a text area.
2433
2494
  */
2434
- var GridCell = function (props) {
2495
+ var GridCell = function (props, custom) {
2435
2496
  var _a;
2436
- return __assign(__assign(__assign(__assign({ sortable: !!((props === null || props === void 0 ? void 0 : props.field) || (props === null || props === void 0 ? void 0 : props.valueGetter)), resizable: true }, (props.cellEditorParams && {
2437
- cellClass: ((_a = props === null || props === void 0 ? void 0 : props.cellEditorParams) === null || _a === void 0 ? void 0 : _a.multiEdit) ? GenericMultiEditCellClass : undefined,
2438
- editable: true,
2439
- cellEditor: GenericCellEditorComponent
2497
+ return __assign(__assign(__assign(__assign(__assign({ sortable: !!((props === null || props === void 0 ? void 0 : props.field) || (props === null || props === void 0 ? void 0 : props.valueGetter)), resizable: true }, ((custom === null || custom === void 0 ? void 0 : custom.editor) && {
2498
+ cellClass: (custom === null || custom === void 0 ? void 0 : custom.multiEdit) ? GenericMultiEditCellClass : undefined,
2499
+ editable: (_a = props.editable) !== null && _a !== void 0 ? _a : true,
2500
+ cellEditor: GenericCellEditorComponent(custom.editor)
2501
+ })), ((custom === null || custom === void 0 ? void 0 : custom.editorParams) && {
2502
+ cellEditorParams: __assign(__assign({}, custom.editorParams), { multiEdit: custom.multiEdit })
2440
2503
  })), {
2441
2504
  // Default value formatter, otherwise react freaks out on objects
2442
2505
  valueFormatter: function (params) {
@@ -2449,37 +2512,22 @@ var GridCell = function (props) {
2449
2512
  return JSON.stringify(params.value);
2450
2513
  } }), props), { cellRenderer: GridCellRenderer, cellRendererParams: __assign({ originalCellRenderer: props.cellRenderer }, props.cellRendererParams) });
2451
2514
  };
2452
- var GenericCellEditorComponentFr = function (props, _) {
2453
- var _a, _b, _c;
2454
- var _d = react.useContext(GridContext), updatingCells = _d.updatingCells, getSelectedRows = _d.getSelectedRows;
2455
- var colDef = props.colDef, data = props.data;
2456
- var cellEditorParams = props.colDef.cellEditorParams;
2457
- var multiEdit = (_a = cellEditorParams === null || cellEditorParams === void 0 ? void 0 : cellEditorParams.multiEdit) !== null && _a !== void 0 ? _a : false;
2458
- var field = (_b = props.colDef.field) !== null && _b !== void 0 ? _b : "";
2459
- var formProps = (_c = colDef.cellEditorParams) !== null && _c !== void 0 ? _c : {};
2460
- var value = props.value;
2461
- var selectedRows = react.useMemo(function () { return (multiEdit ? getSelectedRows() : [data]); }, [data, getSelectedRows, multiEdit]);
2462
- var _e = react.useState(false), saving = _e[0], setSaving = _e[1];
2463
- var updateValue = react.useCallback(function (saveFn) { return __awaiter(void 0, void 0, void 0, function () {
2464
- var _a;
2465
- return __generator(this, function (_b) {
2466
- switch (_b.label) {
2467
- case 0:
2468
- _a = !saving;
2469
- if (!_a) return [3 /*break*/, 2];
2470
- return [4 /*yield*/, updatingCells({ selectedRows: selectedRows, field: field }, saveFn, setSaving)];
2471
- case 1:
2472
- _a = (_b.sent());
2473
- _b.label = 2;
2474
- case 2: return [2 /*return*/, _a];
2475
- }
2476
- });
2477
- }); }, [field, saving, selectedRows, updatingCells]);
2478
- if (cellEditorParams == null)
2479
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
2480
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { children: colDef.cellRenderer ? jsxRuntime.jsx(colDef.cellRenderer, __assign({}, props, { saving: saving })) : props.value }), (cellEditorParams === null || cellEditorParams === void 0 ? void 0 : cellEditorParams.form) && (jsxRuntime.jsx(cellEditorParams.form, { cellEditorParams: props, updateValue: updateValue, saving: saving, formProps: formProps, data: data, value: value, field: field, selectedRows: selectedRows }))] }));
2515
+ // TODO memo?
2516
+ var GenericCellEditorComponent = function (editor) {
2517
+ return react.forwardRef(function GenericCellEditorComponent2(props, _) {
2518
+ return (jsxRuntime.jsx(GridPopoverContextProvider, { children: jsxRuntime.jsx(GenericCellEditorComponent3, __assign({}, __assign(__assign({}, props), { editor: editor }))) }));
2519
+ });
2481
2520
  };
2482
- var GenericCellEditorComponent = react.forwardRef(GenericCellEditorComponentFr);
2521
+ var GenericCellEditorComponent3 = function (props) {
2522
+ var _a;
2523
+ var _b = react.useContext(GridPopoverContext), setProps = _b.setProps, propsRef = _b.propsRef;
2524
+ var colDef = props.colDef;
2525
+ var cellEditorParams = colDef.cellEditorParams;
2526
+ var multiEdit = (_a = cellEditorParams === null || cellEditorParams === void 0 ? void 0 : cellEditorParams.multiEdit) !== null && _a !== void 0 ? _a : false;
2527
+ // TODO don't need all these props in context
2528
+ setProps(props, multiEdit);
2529
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { children: colDef.cellRenderer ? jsxRuntime.jsx(colDef.cellRenderer, __assign({}, props)) : props.value }), (props === null || props === void 0 ? void 0 : props.editor) && jsxRuntime.jsx(props.editor, __assign({}, cellEditorParams, propsRef.current))] }));
2530
+ };
2483
2531
 
2484
2532
  /**
2485
2533
  * If loading is true this returns a loading spinner, otherwise it returns its children.
@@ -2497,29 +2545,32 @@ var ComponentLoadingWrapper = function (props) {
2497
2545
  } })), props.children] })));
2498
2546
  };
2499
2547
 
2500
- var useGridPopoverHook = function (props, save) {
2501
- var cellEditorParams = props.cellEditorParams, saving = props.saving, updateValue = props.updateValue;
2502
- var eGridCell = cellEditorParams.eGridCell;
2548
+ var useGridPopoverHook = function (props) {
2549
+ if (props === void 0) { props = {}; }
2503
2550
  var stopEditing = react.useContext(GridContext).stopEditing;
2551
+ var _a = react.useContext(GridPopoverContext), anchorRef = _a.anchorRef, saving = _a.saving, updateValueRef = _a.updateValueRef;
2504
2552
  var saveButtonRef = react.useRef(null);
2505
- var anchorRef = react.useRef(eGridCell);
2506
- anchorRef.current = eGridCell;
2507
- var _a = react.useState(false), isOpen = _a[0], setOpen = _a[1];
2553
+ var _b = react.useState(false), isOpen = _b[0], setOpen = _b[1];
2508
2554
  react.useEffect(function () {
2509
2555
  setOpen(true);
2510
2556
  }, []);
2511
2557
  var triggerSave = react.useCallback(function (reason) { return __awaiter(void 0, void 0, void 0, function () {
2512
- var _a;
2513
- return __generator(this, function (_b) {
2514
- switch (_b.label) {
2558
+ var _a, _b;
2559
+ return __generator(this, function (_c) {
2560
+ switch (_c.label) {
2515
2561
  case 0:
2516
- _a = reason == "cancel" || !save;
2517
- if (_a) return [3 /*break*/, 2];
2518
- return [4 /*yield*/, updateValue(save)];
2562
+ _a = reason == "cancel" || !props.save;
2563
+ if (_a) return [3 /*break*/, 3];
2564
+ _b = updateValueRef.current;
2565
+ if (!_b) return [3 /*break*/, 2];
2566
+ return [4 /*yield*/, updateValueRef.current(props.save)];
2519
2567
  case 1:
2520
- _a = (_b.sent());
2521
- _b.label = 2;
2568
+ _b = (_c.sent());
2569
+ _c.label = 2;
2522
2570
  case 2:
2571
+ _a = (_b);
2572
+ _c.label = 3;
2573
+ case 3:
2523
2574
  if (_a) {
2524
2575
  setOpen(false);
2525
2576
  stopEditing();
@@ -2527,9 +2578,9 @@ var useGridPopoverHook = function (props, save) {
2527
2578
  return [2 /*return*/];
2528
2579
  }
2529
2580
  });
2530
- }); }, [save, stopEditing, updateValue]);
2581
+ }); }, [props, stopEditing, updateValueRef]);
2531
2582
  var popoverWrapper = react.useCallback(function (children) {
2532
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: anchorRef.current && (jsxRuntime.jsxs(ControlledMenu, __assign({ state: isOpen ? "open" : "closed", portal: true, unmountOnClose: true, anchorRef: anchorRef, saveButtonRef: saveButtonRef, menuClassName: "lui-menu", onClose: function (event) { return triggerSave(event.reason).then(); }, reposition: "initial", viewScroll: "auto", dontShrinkIfDirectionIsTop: true }, { children: [saving && (jsxRuntime.jsx("div", { style: {
2583
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: anchorRef.current && (jsxRuntime.jsxs(ControlledMenu, __assign({ state: isOpen ? "open" : "closed", portal: true, unmountOnClose: true, anchorRef: anchorRef, saveButtonRef: saveButtonRef, menuClassName: "lui-menu", onClose: function (event) { return triggerSave(event.reason).then(); }, viewScroll: "auto", dontShrinkIfDirectionIsTop: true }, { children: [saving && (jsxRuntime.jsx("div", { style: {
2533
2584
  position: "absolute",
2534
2585
  left: 0,
2535
2586
  top: 0,
@@ -2538,7 +2589,7 @@ var useGridPopoverHook = function (props, save) {
2538
2589
  backgroundColor: "rgba(64,64,64,0.1)",
2539
2590
  zIndex: 1000
2540
2591
  } })), children, jsxRuntime.jsx("button", { ref: saveButtonRef, onClick: function () { return triggerSave().then(); }, style: { display: "none" } })] }))) }));
2541
- }, [isOpen, saving, triggerSave]);
2592
+ }, [anchorRef, isOpen, saving, triggerSave]);
2542
2593
  return {
2543
2594
  popoverWrapper: popoverWrapper,
2544
2595
  triggerSave: triggerSave
@@ -2547,7 +2598,7 @@ var useGridPopoverHook = function (props, save) {
2547
2598
 
2548
2599
  var GridRenderPopoutMenuCell = function (props) {
2549
2600
  var _a, _b, _c;
2550
- var checkUpdating = react.useContext(UpdatingContext).checkUpdating;
2601
+ var checkUpdating = react.useContext(GridUpdatingContext).checkUpdating;
2551
2602
  var isLoading = checkUpdating((_b = (_a = props.colDef) === null || _a === void 0 ? void 0 : _a.field) !== null && _b !== void 0 ? _b : "", props.data.id);
2552
2603
  var editable = (_c = props.colDef) === null || _c === void 0 ? void 0 : _c.editable;
2553
2604
  var disabled = !(typeof editable === "function"
@@ -2569,9 +2620,12 @@ styleInject(css_248z$3);
2569
2620
 
2570
2621
  var MenuSeparatorString = "_____MENU_SEPARATOR_____";
2571
2622
  var MenuSeparator = Object.freeze({ value: MenuSeparatorString });
2572
- var GridFormDropDown = function (props) {
2573
- var popoverWrapper = useGridPopoverHook(props).popoverWrapper;
2574
- var formProps = props.formProps;
2623
+ var MenuHeaderString = "_____MENU_HEADER_____";
2624
+ var MenuHeaderItem = function (title) {
2625
+ return { label: title, value: MenuHeaderString };
2626
+ };
2627
+ var GridFormDropDown = function (_props) {
2628
+ var props = _props;
2575
2629
  var _a = react.useContext(GridContext), updatingCells = _a.updatingCells, stopEditing = _a.stopEditing;
2576
2630
  var _b = react.useState(""), filter = _b[0], setFilter = _b[1];
2577
2631
  var _c = react.useState([]), filteredValues = _c[0], setFilteredValues = _c[1];
@@ -2590,8 +2644,8 @@ var GridFormDropDown = function (props) {
2590
2644
  case 0:
2591
2645
  hasChanged = selectedRows.some(function (row) { return row[field] !== value; });
2592
2646
  if (!hasChanged) return [3 /*break*/, 3];
2593
- if (!formProps.onSelectedItem) return [3 /*break*/, 2];
2594
- return [4 /*yield*/, formProps.onSelectedItem({ selectedRows: selectedRows, value: value })];
2647
+ if (!props.onSelectedItem) return [3 /*break*/, 2];
2648
+ return [4 /*yield*/, props.onSelectedItem({ selectedRows: selectedRows, value: value })];
2595
2649
  case 1:
2596
2650
  _a.sent();
2597
2651
  return [3 /*break*/, 3];
@@ -2605,7 +2659,7 @@ var GridFormDropDown = function (props) {
2605
2659
  case 1: return [2 /*return*/, _a.sent()];
2606
2660
  }
2607
2661
  });
2608
- }); }, [formProps, props.field, props.selectedRows, updatingCells]);
2662
+ }); }, [props, updatingCells]);
2609
2663
  var selectFilterHandler = react.useCallback(function (value) { return __awaiter(void 0, void 0, void 0, function () {
2610
2664
  var field;
2611
2665
  return __generator(this, function (_a) {
@@ -2616,8 +2670,8 @@ var GridFormDropDown = function (props) {
2616
2670
  return __generator(this, function (_a) {
2617
2671
  switch (_a.label) {
2618
2672
  case 0:
2619
- if (!formProps.onSelectFilter) return [3 /*break*/, 2];
2620
- return [4 /*yield*/, formProps.onSelectFilter({ selectedRows: selectedRows, value: value })];
2673
+ if (!props.onSelectFilter) return [3 /*break*/, 2];
2674
+ return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
2621
2675
  case 1:
2622
2676
  _a.sent();
2623
2677
  _a.label = 2;
@@ -2628,14 +2682,14 @@ var GridFormDropDown = function (props) {
2628
2682
  case 1: return [2 /*return*/, _a.sent()];
2629
2683
  }
2630
2684
  });
2631
- }); }, [formProps, props.field, props.selectedRows, updatingCells]);
2685
+ }); }, [props, updatingCells]);
2632
2686
  // Load up options list if it's async function
2633
2687
  react.useEffect(function () {
2634
2688
  var _a;
2635
2689
  if (options || optionsInitialising.current)
2636
2690
  return;
2637
2691
  optionsInitialising.current = true;
2638
- var optionsConf = (_a = formProps.options) !== null && _a !== void 0 ? _a : [];
2692
+ var optionsConf = (_a = props.options) !== null && _a !== void 0 ? _a : [];
2639
2693
  (function () { return __awaiter(void 0, void 0, void 0, function () {
2640
2694
  var optionsList;
2641
2695
  return __generator(this, function (_a) {
@@ -2653,7 +2707,7 @@ var GridFormDropDown = function (props) {
2653
2707
  }
2654
2708
  return item;
2655
2709
  });
2656
- if (formProps.filtered) {
2710
+ if (props.filtered) {
2657
2711
  // This is needed otherwise when filter input is rendered and sets autofocus
2658
2712
  // the mouse up of the double click edit triggers the cell to cancel editing
2659
2713
  lodashEs.delay(function () { return setOptions(optionsList); }, 100);
@@ -2666,10 +2720,10 @@ var GridFormDropDown = function (props) {
2666
2720
  }
2667
2721
  });
2668
2722
  }); })();
2669
- }, [filter, options, formProps.filtered, formProps.options, props.selectedRows]);
2670
- // Local filtering
2723
+ }, [filter, options, props]);
2724
+ // Local filtering.
2671
2725
  react.useEffect(function () {
2672
- if (formProps.filtered == "local") {
2726
+ if (props.filtered == "local") {
2673
2727
  if (options == null)
2674
2728
  return;
2675
2729
  setFilteredValues(options
@@ -2683,19 +2737,19 @@ var GridFormDropDown = function (props) {
2683
2737
  })
2684
2738
  .filter(function (r) { return r !== undefined; }));
2685
2739
  }
2686
- }, [formProps.filtered, filter, options]);
2740
+ }, [props.filtered, filter, options]);
2687
2741
  var researchOnFilterChange = debounce__default["default"](react.useCallback(function () {
2688
2742
  setOptions(null);
2689
2743
  }, []), 500);
2690
2744
  var previousFilter = react.useRef(filter);
2691
- // Reload filtering
2745
+ // Reload filtering.
2692
2746
  react.useEffect(function () {
2693
- if (previousFilter.current != filter && formProps.filtered == "reload") {
2747
+ if (previousFilter.current != filter && props.filtered == "reload") {
2694
2748
  previousFilter.current = filter;
2695
- formProps.optionsRequestCancel && formProps.optionsRequestCancel();
2749
+ props.optionsRequestCancel && props.optionsRequestCancel();
2696
2750
  researchOnFilterChange().then();
2697
2751
  }
2698
- }, [filter, formProps, props, researchOnFilterChange]);
2752
+ }, [filter, props, researchOnFilterChange]);
2699
2753
  var onFilterKeyDown = react.useCallback(function (e) { return __awaiter(void 0, void 0, void 0, function () {
2700
2754
  var activeOptions;
2701
2755
  return __generator(this, function (_a) {
@@ -2712,7 +2766,7 @@ var GridFormDropDown = function (props) {
2712
2766
  stopEditing();
2713
2767
  return [3 /*break*/, 5];
2714
2768
  case 2:
2715
- if (!formProps.onSelectFilter) return [3 /*break*/, 4];
2769
+ if (!props.onSelectFilter) return [3 /*break*/, 4];
2716
2770
  return [4 /*yield*/, selectFilterHandler(filter)];
2717
2771
  case 3:
2718
2772
  _a.sent();
@@ -2725,26 +2779,28 @@ var GridFormDropDown = function (props) {
2725
2779
  case 5: return [2 /*return*/];
2726
2780
  }
2727
2781
  });
2728
- }); }, [filteredValues, options, selectItemHandler, selectFilterHandler, stopEditing, filter, formProps]);
2729
- return popoverWrapper(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [formProps.filtered && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
2782
+ }); }, [filteredValues, options, selectItemHandler, selectFilterHandler, stopEditing, filter, props]);
2783
+ var maxRowsStyles = props.maxRows !== undefined ? { maxHeight: 62 + 34 * props.maxRows, overFlowY: "auto" } : undefined;
2784
+ var popoverWrapper = useGridPopoverHook().popoverWrapper;
2785
+ return popoverWrapper(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.filtered && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
2730
2786
  var _b;
2731
2787
  var ref = _a.ref;
2732
- return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: jsxRuntime.jsx("input", { autoFocus: true, className: "free-text-input", style: { border: "0px" }, ref: ref, type: "text", placeholder: (_b = formProps.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: filter, onChange: function (e) { return setFilter(e.target.value.toLowerCase()); }, onKeyDown: function (e) { return onFilterKeyDown(e); } }) })));
2733
- } })), jsxRuntime.jsx(MenuDivider, {}, "$$divider_filter")] })), jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !options }, { children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [options && options.length == (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length) && jsxRuntime.jsx(MenuItem, { children: "[Empty]" }), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
2788
+ return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: jsxRuntime.jsx("input", { autoFocus: true, className: "free-text-input", style: { border: "0px" }, ref: ref, type: "text", placeholder: (_b = props.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: filter, onChange: function (e) { return setFilter(e.target.value.toLowerCase()); }, onKeyDown: function (e) { return onFilterKeyDown(e); } }) })));
2789
+ } })), jsxRuntime.jsx(MenuDivider, {}, "$$divider_filter")] })), jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !options }, { children: jsxRuntime.jsxs("div", __assign({ style: maxRowsStyles }, { children: [options && options.length == (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length) && jsxRuntime.jsx(MenuItem, { children: "[Empty]" }), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
2734
2790
  var _a;
2735
- return item.value === MenuSeparatorString ? (jsxRuntime.jsx(MenuDivider, {}, "$$divider_".concat(index))) : filteredValues.includes(item.value) ? null : (jsxRuntime.jsx(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onClick: function () { return selectItemHandler(item.value); } }, { children: (_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)) }), "".concat(props.field, "-").concat(index)));
2736
- })] }) }))] }));
2791
+ return item.value === MenuSeparatorString ? (jsxRuntime.jsx(MenuDivider, {}, "$$divider_".concat(index))) : item.value === MenuHeaderString ? (jsxRuntime.jsx(MenuHeader, { children: item.label })) : filteredValues.includes(item.value) ? null : (jsxRuntime.jsx(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onClick: function () { return selectItemHandler(item.value); } }, { children: (_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)) }), "".concat(props.field, "-").concat(index)));
2792
+ })] })) }))] }));
2737
2793
  };
2738
2794
 
2739
2795
  var GridFormMultiSelect = function (props) {
2740
- var formProps = props.formProps;
2796
+ var selectedRows = props.selectedRows;
2741
2797
  var _a = react.useState(""), filter = _a[0], setFilter = _a[1];
2742
2798
  var _b = react.useState([]), filteredValues = _b[0], setFilteredValues = _b[1];
2743
2799
  var optionsInitialising = react.useRef(false);
2744
2800
  var _c = react.useState(), options = _c[0], setOptions = _c[1];
2745
2801
  var subSelectedValues = react.useRef({});
2746
2802
  var _d = react.useState(function () {
2747
- return formProps.initialSelectedValues ? formProps.initialSelectedValues(props.selectedRows) : [];
2803
+ return props.initialSelectedValues ? props.initialSelectedValues(selectedRows) : [];
2748
2804
  }), selectedValues = _d[0], setSelectedValues = _d[1];
2749
2805
  var save = react.useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
2750
2806
  var values;
@@ -2752,28 +2808,28 @@ var GridFormMultiSelect = function (props) {
2752
2808
  switch (_a.label) {
2753
2809
  case 0:
2754
2810
  values = lodashEs.fromPairs(selectedValues.map(function (value) { var _a; return [value, (_a = subSelectedValues.current[value]) !== null && _a !== void 0 ? _a : true]; }));
2755
- if (!formProps.onSave) return [3 /*break*/, 2];
2756
- return [4 /*yield*/, formProps.onSave({ selectedRows: selectedRows, values: values })];
2811
+ if (!props.onSave) return [3 /*break*/, 2];
2812
+ return [4 /*yield*/, props.onSave({ selectedRows: selectedRows, values: values })];
2757
2813
  case 1: return [2 /*return*/, _a.sent()];
2758
2814
  case 2: return [2 /*return*/, true];
2759
2815
  }
2760
2816
  });
2761
- }); }, [formProps, selectedValues]);
2762
- var _e = useGridPopoverHook(props, save), popoverWrapper = _e.popoverWrapper, triggerSave = _e.triggerSave;
2817
+ }); }, [props, selectedValues]);
2818
+ var _e = useGridPopoverHook({ save: save }), popoverWrapper = _e.popoverWrapper, triggerSave = _e.triggerSave;
2763
2819
  // Load up options list if it's async function
2764
2820
  react.useEffect(function () {
2765
2821
  var _a;
2766
2822
  if (options || optionsInitialising.current)
2767
2823
  return;
2768
2824
  optionsInitialising.current = true;
2769
- var optionsConf = (_a = formProps.options) !== null && _a !== void 0 ? _a : [];
2825
+ var optionsConf = (_a = props.options) !== null && _a !== void 0 ? _a : [];
2770
2826
  (function () { return __awaiter(void 0, void 0, void 0, function () {
2771
2827
  var optionsList;
2772
2828
  return __generator(this, function (_a) {
2773
2829
  switch (_a.label) {
2774
2830
  case 0:
2775
2831
  if (!(typeof optionsConf == "function")) return [3 /*break*/, 2];
2776
- return [4 /*yield*/, optionsConf(props.selectedRows)];
2832
+ return [4 /*yield*/, optionsConf(selectedRows)];
2777
2833
  case 1:
2778
2834
  optionsConf = _a.sent();
2779
2835
  _a.label = 2;
@@ -2784,7 +2840,7 @@ var GridFormMultiSelect = function (props) {
2784
2840
  }
2785
2841
  return item;
2786
2842
  });
2787
- if (formProps.filtered) {
2843
+ if (props.filtered) {
2788
2844
  // This is needed otherwise when filter input is rendered and sets autofocus
2789
2845
  // the mouse up of the double click edit triggers the cell to cancel editing
2790
2846
  lodashEs.delay(function () { return setOptions(optionsList); }, 100);
@@ -2797,9 +2853,9 @@ var GridFormMultiSelect = function (props) {
2797
2853
  }
2798
2854
  });
2799
2855
  }); })();
2800
- }, [formProps.filtered, formProps.options, options, props.selectedRows]);
2856
+ }, [props.filtered, props.options, options, selectedRows]);
2801
2857
  react.useEffect(function () {
2802
- if (!formProps.filtered || options == null)
2858
+ if (!props.filtered || options == null)
2803
2859
  return;
2804
2860
  setFilteredValues(options
2805
2861
  .map(function (option) {
@@ -2811,11 +2867,11 @@ var GridFormMultiSelect = function (props) {
2811
2867
  return str.toLowerCase().indexOf(filter.trim()) === -1 ? option.value : undefined;
2812
2868
  })
2813
2869
  .filter(function (r) { return r !== undefined; }));
2814
- }, [formProps.filtered, filter, options]);
2815
- return popoverWrapper(jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !options }, { children: jsxRuntime.jsxs("div", __assign({ className: "Grid-popoverContainerList" }, { children: [options && formProps.filtered && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
2870
+ }, [props.filtered, filter, options]);
2871
+ return popoverWrapper(jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !options }, { children: jsxRuntime.jsxs("div", __assign({ className: "Grid-popoverContainerList" }, { children: [options && props.filtered && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
2816
2872
  var _b;
2817
2873
  var ref = _a.ref;
2818
- return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: jsxRuntime.jsx("input", { autoFocus: true, className: "free-text-input", style: { border: "0px" }, ref: ref, type: "text", placeholder: (_b = formProps.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: "", onChange: function (e) { return setFilter(e.target.value.toLowerCase()); } }) })));
2874
+ return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: jsxRuntime.jsx("input", { autoFocus: true, className: "free-text-input", style: { border: "0px" }, ref: ref, type: "text", placeholder: (_b = props.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: "", onChange: function (e) { return setFilter(e.target.value.toLowerCase()); } }) })));
2819
2875
  } }), "filter"), jsxRuntime.jsx(MenuDivider, {}, "$$divider_filter")] })), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
2820
2876
  var _a;
2821
2877
  return item.value === MenuSeparatorString ? (jsxRuntime.jsx(MenuDivider, {}, "$$divider_".concat(index))) : filteredValues.includes(item.value) ? null : (jsxRuntime.jsxs(react.Fragment, { children: [jsxRuntime.jsx(MenuItem, __assign({ onClick: function (e) {
@@ -2861,11 +2917,8 @@ var GridFormMultiSelect = function (props) {
2861
2917
  })] })) })));
2862
2918
  };
2863
2919
 
2864
- var GridPopoutEditMultiSelect = function (colDef) {
2865
- var _a;
2866
- return GridCell(__assign(__assign({ initialWidth: 65, maxWidth: 150, cellClass: ((_a = colDef.cellEditor) === null || _a === void 0 ? void 0 : _a.multiEdit) ? GenericMultiEditCellClass : undefined }, colDef), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
2867
- cellEditorParams: __assign(__assign({}, colDef.cellEditorParams), { form: GridFormMultiSelect })
2868
- })));
2920
+ var GridPopoutEditMultiSelect = function (colDef, props) {
2921
+ return GridCell(__assign({ initialWidth: 65, maxWidth: 150, cellClass: props.multiEdit ? GenericMultiEditCellClass : undefined }, colDef), __assign({ editor: GridFormMultiSelect }, props));
2869
2922
  };
2870
2923
 
2871
2924
  var css_248z$2 = "/**\n @deprecated\n */\n/**\n @deprecated\n */\n/**\n @deprecated\n */\n.GridPopoutMenu-burger {\n cursor: pointer;\n}\n.GridPopoutMenu-burger svg {\n fill: #007198;\n}\n\n.GridPopoutMenu-burgerDisabled svg {\n fill: #989189;\n}";
@@ -2877,8 +2930,8 @@ var PopoutMenuSeparator = Object.freeze({ __isMenuSeparator__: true });
2877
2930
  * NOTE: If the popout menu doesn't appear on single click when also selecting row it's because
2878
2931
  * you need a useMemo around your columnDefs
2879
2932
  */
2880
- var GridFormPopoutMenu = function (props) {
2881
- var formProps = props.formProps;
2933
+ var GridFormPopoutMenu = function (_props) {
2934
+ var props = _props;
2882
2935
  var updatingCells = react.useContext(GridContext).updatingCells;
2883
2936
  var optionsInitialising = react.useRef(false);
2884
2937
  var _a = react.useState(), options = _a[0], setOptions = _a[1];
@@ -2888,7 +2941,7 @@ var GridFormPopoutMenu = function (props) {
2888
2941
  if (options || optionsInitialising.current)
2889
2942
  return;
2890
2943
  optionsInitialising.current = true;
2891
- var optionsConf = (_a = formProps.options) !== null && _a !== void 0 ? _a : [];
2944
+ var optionsConf = (_a = props.options) !== null && _a !== void 0 ? _a : [];
2892
2945
  (function () { return __awaiter(void 0, void 0, void 0, function () {
2893
2946
  var _a;
2894
2947
  return __generator(this, function (_b) {
@@ -2909,7 +2962,7 @@ var GridFormPopoutMenu = function (props) {
2909
2962
  }
2910
2963
  });
2911
2964
  }); })();
2912
- }, [options, formProps.options, props.selectedRows]);
2965
+ }, [options, props.options, props.selectedRows]);
2913
2966
  var actionClick = react.useCallback(function (menuOption) { return __awaiter(void 0, void 0, void 0, function () {
2914
2967
  return __generator(this, function (_a) {
2915
2968
  switch (_a.label) {
@@ -2937,7 +2990,7 @@ var GridFormPopoutMenu = function (props) {
2937
2990
  var filteredOptions = options === null || options === void 0 ? void 0 : options.filter(function (menuOption) {
2938
2991
  return menuOption.label === PopoutMenuSeparator || selectedRowCount === 1 || menuOption.supportsMultiEdit;
2939
2992
  });
2940
- var popoverWrapper = useGridPopoverHook(props).popoverWrapper;
2993
+ var popoverWrapper = useGridPopoverHook().popoverWrapper;
2941
2994
  return popoverWrapper(jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !filteredOptions }, { children: jsxRuntime.jsx("div", __assign({ className: "Grid-popoverContainerList" }, { children: options === null || options === void 0 ? void 0 : options.map(function (item, index) {
2942
2995
  return item.label === PopoutMenuSeparator ? (jsxRuntime.jsx(MenuDivider, {}, "$$divider_".concat(index))) : (!item.hidden && (jsxRuntime.jsx(MenuItem, __assign({ onClick: function () { return actionClick(item); }, disabled: !!item.disabled || !(filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.includes(item)), title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "" }, { children: item.label }), "".concat(item.label))));
2943
2996
  }) })) })));
@@ -2946,14 +2999,12 @@ var GridFormPopoutMenu = function (props) {
2946
2999
  /**
2947
3000
  * Popout burger menu
2948
3001
  */
2949
- var GridPopoverMenu = function (colDef) {
3002
+ var GridPopoverMenu = function (colDef, props) {
2950
3003
  var _a;
2951
- return GridCell(__assign(__assign(__assign({ maxWidth: 64, editable: colDef.editable != null ? colDef.editable : true, cellRenderer: GridRenderPopoutMenuCell, cellClass: ((_a = colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) === null || _a === void 0 ? void 0 : _a.multiEdit) !== false ? GenericMultiEditCellClass : undefined }, colDef), { cellRendererParams: {
3004
+ return GridCell(__assign(__assign({ maxWidth: 64, editable: colDef.editable != null ? colDef.editable : true, cellRenderer: GridRenderPopoutMenuCell, cellClass: ((_a = colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) === null || _a === void 0 ? void 0 : _a.multiEdit) !== false ? GenericMultiEditCellClass : undefined }, colDef), { cellRendererParams: {
2952
3005
  // Menus open on single click, this parameter is picked up in Grid.tsx
2953
3006
  singleClickEdit: true
2954
- } }), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
2955
- cellEditorParams: __assign(__assign({ multiEdit: true }, colDef.cellEditorParams), { form: GridFormPopoutMenu })
2956
- })));
3007
+ } }), __assign({ editor: GridFormPopoutMenu }, props));
2957
3008
  };
2958
3009
 
2959
3010
  var bearingValueFormatter = function (params) {
@@ -3044,9 +3095,9 @@ var TextInputFormatted = function (props) {
3044
3095
  return (jsxRuntime.jsxs("div", __assign({ className: clsx("LuiTextInput Grid-popoverContainer", props.error && "hasError", props.warning && "hasWarning", props.className) }, { children: [jsxRuntime.jsxs("span", __assign({ className: "LuiTextInput-inputWrapper" }, { children: [jsxRuntime.jsx("input", __assign({ type: "text", className: "LuiTextInput-input", min: "0", value: props.value, onChange: props.onChange }, props.inputProps)), jsxRuntime.jsx("span", __assign({ className: "LuiTextInput-formatted" }, { children: props.formatted }))] })), props.error && (jsxRuntime.jsxs("span", __assign({ className: "LuiTextInput-error" }, { children: [jsxRuntime.jsx(lui.LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextInput-error-icon", size: "sm", status: "error" }), props.error] }))), props.warning && (jsxRuntime.jsxs("span", __assign({ className: "LuiTextInput-warning" }, { children: [jsxRuntime.jsx(lui.LuiIcon, { alt: "warning", name: "ic_warning", className: "LuiTextInput-warning-icon", size: "sm", status: "warning" }), props.warning] })))] })));
3045
3096
  };
3046
3097
 
3047
- var GridFormEditBearing = function (props) {
3098
+ var GridFormEditBearing = function (_props) {
3048
3099
  var _a;
3049
- var formProps = props.formProps;
3100
+ var props = _props;
3050
3101
  var _b = react.useState("".concat((_a = props.value) !== null && _a !== void 0 ? _a : "")), value = _b[0], setValue = _b[1];
3051
3102
  var save = react.useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3052
3103
  var parsedValue, field_1;
@@ -3060,8 +3111,8 @@ var GridFormEditBearing = function (props) {
3060
3111
  if (parsedValue === props.value) {
3061
3112
  return [2 /*return*/, true];
3062
3113
  }
3063
- if (!formProps.onSave) return [3 /*break*/, 2];
3064
- return [4 /*yield*/, formProps.onSave(selectedRows, parsedValue)];
3114
+ if (!props.onSave) return [3 /*break*/, 2];
3115
+ return [4 /*yield*/, props.onSave(selectedRows, parsedValue)];
3065
3116
  case 1: return [2 /*return*/, _a.sent()];
3066
3117
  case 2:
3067
3118
  field_1 = props.field;
@@ -3075,42 +3126,42 @@ var GridFormEditBearing = function (props) {
3075
3126
  case 3: return [2 /*return*/, true];
3076
3127
  }
3077
3128
  });
3078
- }); }, [formProps, props.field, props.value, value]);
3079
- var _c = useGridPopoverHook(props, save), popoverWrapper = _c.popoverWrapper, triggerSave = _c.triggerSave;
3129
+ }); }, [props, value]);
3130
+ var _c = useGridPopoverHook({ save: save }), triggerSave = _c.triggerSave, popoverWrapper = _c.popoverWrapper;
3080
3131
  return popoverWrapper(jsxRuntime.jsx("div", __assign({ className: "GridFormEditBearing-input Grid-popoverContainer" }, { children: jsxRuntime.jsx(TextInputFormatted, { value: value !== null && value !== void 0 ? value : "", onChange: function (e) {
3081
3132
  setValue(e.target.value.trim());
3082
3133
  }, inputProps: {
3083
3134
  autoFocus: true,
3084
- placeholder: formProps.placeHolder,
3135
+ placeholder: props.placeHolder,
3085
3136
  disabled: false,
3086
3137
  maxLength: 16,
3087
3138
  onKeyDown: function (e) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
3088
3139
  return [2 /*return*/, e.key === "Enter" && triggerSave().then()];
3089
3140
  }); }); }
3090
- }, formatted: bearingStringValidator(value, formProps.range) ? "?" : convertDDToDMS(bearingNumberParser(value)), error: bearingStringValidator(value, formProps.range) }) })));
3141
+ }, formatted: bearingStringValidator(value, props.range) ? "?" : convertDDToDMS(bearingNumberParser(value)), error: bearingStringValidator(value, props.range) }) })));
3091
3142
  };
3092
3143
 
3093
- var GridPopoverEditBearingLike = function (colDef) {
3094
- var _a;
3095
- return GridCell(__assign(__assign({ initialWidth: 65, maxWidth: 150, valueFormatter: bearingValueFormatter, cellClass: ((_a = colDef.cellEditorParams) === null || _a === void 0 ? void 0 : _a.multiEdit) ? GenericMultiEditCellClass : undefined }, colDef), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
3096
- cellEditorParams: __assign(__assign({}, colDef.cellEditorParams), { form: GridFormEditBearing })
3097
- })));
3144
+ var GridPopoverEditBearingLike = function (colDef, props) {
3145
+ return GridCell(__assign({ initialWidth: 65, maxWidth: 150, valueFormatter: bearingValueFormatter, cellClass: props.multiEdit ? GenericMultiEditCellClass : undefined }, colDef), __assign({ editor: GridFormEditBearing }, props));
3098
3146
  };
3099
- var GridPopoverEditBearing = function (colDef) {
3100
- var init = GridPopoverEditBearingLike(colDef);
3101
- return __assign(__assign({}, init), { valueFormatter: bearingValueFormatter, cellEditorParams: __assign({ range: function (value) {
3147
+ var GridPopoverEditBearing = function (colDef, props) {
3148
+ return GridPopoverEditBearingLike(__assign({ valueFormatter: bearingValueFormatter }, colDef), {
3149
+ multiEdit: !!props.multiEdit,
3150
+ editorParams: __assign({ placeHolder: "Enter bearing correction", range: function (value) {
3102
3151
  if (value === null)
3103
- return "Bearing is required";
3152
+ return "Bearing correction is required";
3104
3153
  if (value >= 360)
3105
- return "Bearing must be less than 360 degrees";
3154
+ return "Bearing correction must be less than 360 degrees";
3106
3155
  if (value < 0)
3107
- return "Bearing must not be negative";
3156
+ return "Bearing correction must not be negative";
3108
3157
  return null;
3109
- } }, init.cellEditorParams) });
3158
+ } }, props.editorParams)
3159
+ });
3110
3160
  };
3111
- var GridPopoverEditBearingCorrection = function (colDef) {
3112
- var init = GridPopoverEditBearingLike(colDef);
3113
- return __assign(__assign({}, init), { valueFormatter: bearingCorrectionValueFormatter, cellEditorParams: __assign({ range: function (value) {
3161
+ var GridPopoverEditBearingCorrection = function (colDef, props) {
3162
+ return GridPopoverEditBearingLike(__assign({ valueFormatter: bearingCorrectionValueFormatter }, colDef), {
3163
+ multiEdit: !!props.multiEdit,
3164
+ editorParams: __assign({ placeHolder: "Enter bearing correction", range: function (value) {
3114
3165
  if (value === null)
3115
3166
  return "Bearing is required";
3116
3167
  if (value >= 360)
@@ -3118,20 +3169,18 @@ var GridPopoverEditBearingCorrection = function (colDef) {
3118
3169
  if (value <= -180)
3119
3170
  return "Bearing must be greater then -180 degrees";
3120
3171
  return null;
3121
- } }, init.cellEditorParams) });
3172
+ } }, props.editorParams)
3173
+ });
3122
3174
  };
3123
3175
 
3124
- var GridPopoverEditDropDown = function (colDef) {
3125
- var _a;
3126
- return GridCell(__assign(__assign({ initialWidth: 65, maxWidth: 150, cellClass: ((_a = colDef.cellEditor) === null || _a === void 0 ? void 0 : _a.multiEdit) ? GenericMultiEditCellClass : undefined }, colDef), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
3127
- cellEditorParams: __assign(__assign({}, colDef.cellEditorParams), { form: GridFormDropDown })
3128
- })));
3176
+ var GridPopoverEditDropDown = function (colDef, props) {
3177
+ return GridCell(__assign({ initialWidth: 65, maxWidth: 150, cellClass: props.multiEdit ? GenericMultiEditCellClass : undefined }, colDef), __assign({ editor: GridFormDropDown }, props));
3129
3178
  };
3130
3179
 
3131
- var GridFormMessage = function (props) {
3132
- var formProps = props.formProps;
3180
+ var GridFormMessage = function (_props) {
3181
+ var props = _props;
3133
3182
  var _a = react.useState(null), message = _a[0], setMessage = _a[1];
3134
- var popoverWrapper = useGridPopoverHook(props).popoverWrapper;
3183
+ var popoverWrapper = useGridPopoverHook().popoverWrapper;
3135
3184
  react.useEffect(function () {
3136
3185
  (function () { return __awaiter(void 0, void 0, void 0, function () {
3137
3186
  var _a;
@@ -3139,24 +3188,19 @@ var GridFormMessage = function (props) {
3139
3188
  switch (_b.label) {
3140
3189
  case 0:
3141
3190
  _a = setMessage;
3142
- return [4 /*yield*/, formProps.message(props.selectedRows, props.cellEditorParams)];
3191
+ return [4 /*yield*/, props.message(props)];
3143
3192
  case 1:
3144
3193
  _a.apply(void 0, [_b.sent()]);
3145
3194
  return [2 /*return*/];
3146
3195
  }
3147
3196
  });
3148
3197
  }); })().then();
3149
- }, [formProps, props.selectedRows, props]);
3198
+ }, [props]);
3150
3199
  return popoverWrapper(jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: message === null }, { children: jsxRuntime.jsx("div", __assign({ style: { maxWidth: 400 }, className: "Grid-popoverContainer" }, { children: message })) })));
3151
3200
  };
3152
3201
 
3153
- var GridPopoverMessage = function (colDef) {
3154
- var _a;
3155
- return GridCell(__assign(__assign(__assign({ maxWidth: 140 }, colDef), { cellRendererParams: (_a = colDef.cellRendererParams) !== null && _a !== void 0 ? _a : {
3156
- singleClickEdit: true
3157
- } }), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
3158
- cellEditorParams: __assign(__assign({}, colDef.cellEditorParams), { form: GridFormMessage })
3159
- })));
3202
+ var GridPopoverMessage = function (colDef, props) {
3203
+ return GridCell(__assign(__assign({ maxWidth: 140 }, colDef), { cellRendererParams: __assign({ singleClickEdit: true }, colDef.cellRendererParams) }), __assign({ editor: GridFormMessage }, props));
3160
3204
  };
3161
3205
 
3162
3206
  var useGenerateOrDefaultId = function (idFromProps) {
@@ -3169,22 +3213,22 @@ var TextAreaInput = function (props) {
3169
3213
  return (jsxRuntime.jsxs("div", __assign({ className: clsx("LuiTextAreaInput Grid-popoverContainer", ((_b = props.inputProps) === null || _b === void 0 ? void 0 : _b.disabled) ? "isDisabled" : "", (props === null || props === void 0 ? void 0 : props.error) ? "hasError" : "") }, { children: [jsxRuntime.jsxs("label", __assign({ htmlFor: id }, { children: [props.mandatory && jsxRuntime.jsx("span", __assign({ className: "LuiTextAreaInput-mandatory" }, { children: "*" })), props.label && jsxRuntime.jsx("span", __assign({ className: "LuiTextAreaInput-label" }, { children: props.label })), jsxRuntime.jsxs("div", __assign({ className: "LuiTextAreaInput-wrapper" }, { children: [" ", jsxRuntime.jsx("textarea", __assign({ id: id, value: props.value, onChange: props.onChange, rows: 5 }, props.inputProps))] }))] })), props.error && (jsxRuntime.jsxs("span", __assign({ className: "LuiTextAreaInput-error" }, { children: [jsxRuntime.jsx(lui.LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextAreaInput-error-icon", size: "sm", status: "error" }), props.error] })))] })));
3170
3214
  };
3171
3215
 
3172
- var GridFormTextArea = function (props) {
3216
+ var GridFormTextArea = function (_props) {
3173
3217
  var _a, _b;
3174
- var formProps = props.formProps;
3218
+ var props = _props;
3175
3219
  var _c = react.useState((_a = props.value) !== null && _a !== void 0 ? _a : ""), value = _c[0], setValue = _c[1];
3176
3220
  var invalid = react.useCallback(function () {
3177
- if (formProps.required && value.length == 0) {
3221
+ if (props.required && value.length == 0) {
3178
3222
  return "Some text is required";
3179
3223
  }
3180
- if (formProps.maxlength && value.length > formProps.maxlength) {
3181
- return "Text must be no longer than ".concat(formProps.maxlength, " characters");
3224
+ if (props.maxlength && value.length > props.maxlength) {
3225
+ return "Text must be no longer than ".concat(props.maxlength, " characters");
3182
3226
  }
3183
- if (formProps.validate) {
3184
- return formProps.validate(value);
3227
+ if (props.validate) {
3228
+ return props.validate(value);
3185
3229
  }
3186
3230
  return null;
3187
- }, [formProps, value]);
3231
+ }, [props, value]);
3188
3232
  var save = react.useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3189
3233
  var field;
3190
3234
  return __generator(this, function (_a) {
@@ -3194,8 +3238,8 @@ var GridFormTextArea = function (props) {
3194
3238
  return [2 /*return*/, false];
3195
3239
  if (props.value === (value !== null && value !== void 0 ? value : ""))
3196
3240
  return [2 /*return*/, true];
3197
- if (!formProps.onSave) return [3 /*break*/, 2];
3198
- return [4 /*yield*/, formProps.onSave(selectedRows, value)];
3241
+ if (!props.onSave) return [3 /*break*/, 2];
3242
+ return [4 /*yield*/, props.onSave(selectedRows, value)];
3199
3243
  case 1: return [2 /*return*/, _a.sent()];
3200
3244
  case 2:
3201
3245
  field = props.field;
@@ -3207,35 +3251,33 @@ var GridFormTextArea = function (props) {
3207
3251
  return [2 /*return*/, true];
3208
3252
  }
3209
3253
  });
3210
- }); }, [formProps, invalid, props.field, props.value, value]);
3211
- var popoverWrapper = useGridPopoverHook(props, save).popoverWrapper;
3212
- return popoverWrapper(jsxRuntime.jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_b = formProps.width) !== null && _b !== void 0 ? _b : 240 }, className: "FormTest" }, { children: jsxRuntime.jsx(TextAreaInput, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), inputProps: { placeholder: formProps.placeholder } }) })));
3254
+ }); }, [props, invalid, value]);
3255
+ var popoverWrapper = useGridPopoverHook({ save: save }).popoverWrapper;
3256
+ return popoverWrapper(jsxRuntime.jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_b = props.width) !== null && _b !== void 0 ? _b : 240 }, className: "FormTest" }, { children: jsxRuntime.jsx(TextAreaInput, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), inputProps: { placeholder: props.placeholder } }) })));
3213
3257
  };
3214
3258
 
3215
- var GridPopoverTextArea = function (colDef) {
3216
- return GridCell(__assign(__assign({ maxWidth: 260 }, colDef), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
3217
- cellEditorParams: __assign(__assign({ width: 260 }, colDef.cellEditorParams), { form: GridFormTextArea })
3218
- })));
3259
+ var GridPopoverTextArea = function (colDef, params) {
3260
+ return GridCell(__assign({ maxWidth: 260 }, colDef), __assign({ editor: GridFormTextArea }, params));
3219
3261
  };
3220
3262
 
3221
- var GridFormTextInput = function (props) {
3263
+ var GridFormTextInput = function (_props) {
3222
3264
  var _a;
3223
- var formProps = props.formProps;
3265
+ var props = _props;
3224
3266
  var initValue = props.value == null ? "" : "".concat(props.value);
3225
3267
  var _b = react.useState(initValue), value = _b[0], setValue = _b[1];
3226
3268
  var invalid = react.useCallback(function () {
3227
3269
  var trimmedValue = value.trim();
3228
- if (formProps.required && trimmedValue.length == 0) {
3270
+ if (props.required && trimmedValue.length == 0) {
3229
3271
  return "Some text is required";
3230
3272
  }
3231
- if (formProps.maxlength && trimmedValue.length > formProps.maxlength) {
3232
- return "Text must be no longer than ".concat(formProps.maxlength, " characters");
3273
+ if (props.maxlength && trimmedValue.length > props.maxlength) {
3274
+ return "Text must be no longer than ".concat(props.maxlength, " characters");
3233
3275
  }
3234
- if (formProps.validate) {
3235
- return formProps.validate(trimmedValue, props.data);
3276
+ if (props.validate) {
3277
+ return props.validate(trimmedValue, props.data);
3236
3278
  }
3237
3279
  return null;
3238
- }, [formProps, value]);
3280
+ }, [props, value]);
3239
3281
  var save = react.useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3240
3282
  var trimmedValue, field;
3241
3283
  return __generator(this, function (_a) {
@@ -3246,8 +3288,8 @@ var GridFormTextInput = function (props) {
3246
3288
  trimmedValue = value.trim();
3247
3289
  if (initValue === trimmedValue)
3248
3290
  return [2 /*return*/, true];
3249
- if (!formProps.onSave) return [3 /*break*/, 2];
3250
- return [4 /*yield*/, formProps.onSave(selectedRows, trimmedValue)];
3291
+ if (!props.onSave) return [3 /*break*/, 2];
3292
+ return [4 /*yield*/, props.onSave(selectedRows, trimmedValue)];
3251
3293
  case 1: return [2 /*return*/, _a.sent()];
3252
3294
  case 2:
3253
3295
  field = props.field;
@@ -3259,21 +3301,19 @@ var GridFormTextInput = function (props) {
3259
3301
  return [2 /*return*/, true];
3260
3302
  }
3261
3303
  });
3262
- }); }, [invalid, value, initValue, formProps, props.field]);
3263
- var _c = useGridPopoverHook(props, save), popoverWrapper = _c.popoverWrapper, triggerSave = _c.triggerSave;
3264
- return popoverWrapper(jsxRuntime.jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_a = formProps.width) !== null && _a !== void 0 ? _a : 240 }, className: "FormTest" }, { children: jsxRuntime.jsx(TextInputFormatted, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), formatted: formProps.units, inputProps: {
3304
+ }); }, [invalid, value, initValue, props]);
3305
+ var _c = useGridPopoverHook({ save: save }), popoverWrapper = _c.popoverWrapper, triggerSave = _c.triggerSave;
3306
+ return popoverWrapper(jsxRuntime.jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_a = props.width) !== null && _a !== void 0 ? _a : 240 }, className: "FormTest" }, { children: jsxRuntime.jsx(TextInputFormatted, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), formatted: props.units, inputProps: {
3265
3307
  style: { width: "100%" },
3266
- placeholder: formProps.placeholder,
3308
+ placeholder: props.placeholder,
3267
3309
  onKeyDown: function (e) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
3268
3310
  return [2 /*return*/, e.key === "Enter" && triggerSave().then()];
3269
3311
  }); }); }
3270
3312
  } }) })));
3271
3313
  };
3272
3314
 
3273
- var GridPopoverTextInput = function (colDef) {
3274
- return GridCell(__assign(__assign({ maxWidth: 140 }, colDef), ((colDef === null || colDef === void 0 ? void 0 : colDef.cellEditorParams) && {
3275
- cellEditorParams: __assign(__assign({ width: 240 }, colDef.cellEditorParams), { form: GridFormTextInput })
3276
- })));
3315
+ var GridPopoverTextInput = function (colDef, params) {
3316
+ return GridCell(__assign({ maxWidth: 140 }, colDef), __assign({ editor: GridFormTextInput }, params));
3277
3317
  };
3278
3318
 
3279
3319
  var GridSubComponentTextArea = function (props) {
@@ -3288,7 +3328,6 @@ exports.ComponentLoadingWrapper = ComponentLoadingWrapper;
3288
3328
  exports.ControlledMenu = ControlledMenu;
3289
3329
  exports.FocusableItem = FocusableItem;
3290
3330
  exports.GenericCellEditorComponent = GenericCellEditorComponent;
3291
- exports.GenericCellEditorComponentFr = GenericCellEditorComponentFr;
3292
3331
  exports.GenericMultiEditCellClass = GenericMultiEditCellClass;
3293
3332
  exports.Grid = Grid;
3294
3333
  exports.GridCell = GridCell;
@@ -3316,11 +3355,15 @@ exports.GridPopoverTextInput = GridPopoverTextInput;
3316
3355
  exports.GridRenderPopoutMenuCell = GridRenderPopoutMenuCell;
3317
3356
  exports.GridRendererGenericCell = GridRendererGenericCell;
3318
3357
  exports.GridSubComponentTextArea = GridSubComponentTextArea;
3358
+ exports.GridUpdatingContext = GridUpdatingContext;
3359
+ exports.GridUpdatingContextProvider = GridUpdatingContextProvider;
3319
3360
  exports.Menu = Menu;
3320
3361
  exports.MenuButton = MenuButton;
3321
3362
  exports.MenuDivider = MenuDivider;
3322
3363
  exports.MenuGroup = MenuGroup;
3323
3364
  exports.MenuHeader = MenuHeader;
3365
+ exports.MenuHeaderItem = MenuHeaderItem;
3366
+ exports.MenuHeaderString = MenuHeaderString;
3324
3367
  exports.MenuItem = MenuItem;
3325
3368
  exports.MenuRadioGroup = MenuRadioGroup;
3326
3369
  exports.MenuSeparator = MenuSeparator;
@@ -3329,8 +3372,6 @@ exports.PopoutMenuSeparator = PopoutMenuSeparator;
3329
3372
  exports.SubMenu = SubMenu;
3330
3373
  exports.TextAreaInput = TextAreaInput;
3331
3374
  exports.TextInputFormatted = TextInputFormatted;
3332
- exports.UpdatingContext = UpdatingContext;
3333
- exports.UpdatingContextProvider = UpdatingContextProvider;
3334
3375
  exports.bearingCorrectionValueFormatter = bearingCorrectionValueFormatter;
3335
3376
  exports.bearingNumberParser = bearingNumberParser;
3336
3377
  exports.bearingStringValidator = bearingStringValidator;