@linzjs/step-ag-grid 1.5.1 → 1.5.3

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.
@@ -21,6 +21,7 @@ export interface GridFormMultiSelectProps<RowType extends GridBaseRow, ValueType
21
21
  filterPlaceholder?: string;
22
22
  onSave?: (props: MultiSelectResult<RowType>) => Promise<boolean>;
23
23
  options: SelectOption<ValueType>[] | ((selectedRows: RowType[]) => Promise<SelectOption<ValueType>[]> | SelectOption<ValueType>[]);
24
+ initialSelectedValues?: (selectedRows: RowType[]) => any[];
24
25
  }
25
26
  export declare const GridFormMultiSelect: <RowType extends GridBaseRow, ValueType>(props: GridFormProps<RowType>) => JSX.Element;
26
27
  export {};
@@ -3,6 +3,7 @@ import { GenericCellEditorParams, GridFormProps } from "../GridCell";
3
3
  import { GridBaseRow } from "../Grid";
4
4
  export interface GridFormTextInputProps<RowType extends GridBaseRow> extends GenericCellEditorParams<RowType> {
5
5
  placeholder?: string;
6
+ units?: string;
6
7
  required?: boolean;
7
8
  maxlength?: number;
8
9
  width?: string | number;
@@ -7,8 +7,7 @@ export interface LuiTextInputProps {
7
7
  warning?: string | boolean | null;
8
8
  className?: string;
9
9
  value: string;
10
- icon?: JSX.Element;
11
10
  placeholder?: string;
12
- formatted: string;
11
+ formatted?: string;
13
12
  }
14
13
  export declare const TextInputFormatted: (props: LuiTextInputProps) => JSX.Element;
@@ -8,5 +8,6 @@ export interface IFormTestRow {
8
8
  nameType: string;
9
9
  numba: string;
10
10
  plan: string;
11
+ distance: number | null;
11
12
  }
12
13
  export declare const FormTest: <RowType extends GridBaseRow>(props: GridFormProps<RowType>) => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { useMemo, useLayoutEffect, useEffect, createContext, memo, forwardRef, useRef, useContext, useState, useCallback, useReducer, cloneElement, useImperativeHandle, Fragment } from 'react';
2
2
  import { unstable_batchedUpdates, flushSync, createPortal } from 'react-dom';
3
- import { findIndex, isEmpty, castArray, remove, flatten, delay, sortBy, last, difference, xorBy } from 'lodash-es';
3
+ import { findIndex, isEmpty, castArray, remove, flatten, delay, sortBy, last, difference, xorBy, fromPairs } from 'lodash-es';
4
4
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
5
5
  import { useTransition } from 'react-transition-state';
6
6
  import { AgGridReact } from 'ag-grid-react';
@@ -2422,9 +2422,11 @@ var GridCell = function (props) {
2422
2422
  })), {
2423
2423
  // Default value formatter, otherwise react freaks out on objects
2424
2424
  valueFormatter: function (params) {
2425
- var types = ["number", "undefined", "boolean", "string"];
2425
+ if (params.value == null)
2426
+ return "-";
2427
+ var types = ["number", "boolean", "string"];
2426
2428
  if (types.includes(typeof params.value))
2427
- return params.value;
2429
+ return "".concat(params.value);
2428
2430
  else
2429
2431
  return JSON.stringify(params.value);
2430
2432
  } }), props), { cellRenderer: GridCellRenderer, cellRendererParams: __assign({ originalCellRenderer: props.cellRenderer }, props.cellRendererParams) });
@@ -2457,7 +2459,7 @@ var GenericCellEditorComponentFr = function (props, _) {
2457
2459
  }); }, [field, saving, selectedRows, updatingCells]);
2458
2460
  if (cellEditorParams == null)
2459
2461
  return jsx(Fragment$1, {});
2460
- return (jsxs(Fragment$1, { children: [jsx("div", { children: colDef.cellRenderer ? jsx(colDef.cellRenderer, __assign({}, props, { saving: saving })) : props.value }), (cellEditorParams === null || cellEditorParams === void 0 ? void 0 : cellEditorParams.form) && (jsx(cellEditorParams.form, { cellEditorParams: props, updateValue: updateValue, saving: saving, formProps: formProps, value: value, field: field, selectedRows: selectedRows }))] }));
2462
+ return (jsxs(Fragment$1, { children: [jsx("div", { children: colDef.cellRenderer ? jsx(colDef.cellRenderer, __assign({}, props, { saving: saving })) : props.value }), (cellEditorParams === null || cellEditorParams === void 0 ? void 0 : cellEditorParams.form) && (jsx(cellEditorParams.form, { cellEditorParams: props, updateValue: updateValue, saving: saving, formProps: formProps, data: data, value: value, field: field, selectedRows: selectedRows }))] }));
2461
2463
  };
2462
2464
  var GenericCellEditorComponent = forwardRef(GenericCellEditorComponentFr);
2463
2465
 
@@ -2556,19 +2558,17 @@ var GridFormMultiSelect = function (props) {
2556
2558
  var optionsInitialising = useRef(false);
2557
2559
  var _c = useState(), options = _c[0], setOptions = _c[1];
2558
2560
  var subSelectedValues = useRef({});
2559
- var _d = useState([]), selectedValues = _d[0], setSelectedValues = _d[1];
2561
+ var _d = useState(function () {
2562
+ return formProps.initialSelectedValues ? formProps.initialSelectedValues(props.selectedRows) : [];
2563
+ }), selectedValues = _d[0], setSelectedValues = _d[1];
2560
2564
  var save = useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
2561
2565
  var values;
2562
2566
  return __generator(this, function (_a) {
2563
2567
  switch (_a.label) {
2564
2568
  case 0:
2565
- values = {};
2566
- selectedValues.forEach(function (value) {
2567
- var _a;
2568
- values[value] = (_a = subSelectedValues.current[value]) !== null && _a !== void 0 ? _a : true;
2569
- });
2569
+ values = fromPairs(selectedValues.map(function (value) { var _a; return [value, (_a = subSelectedValues.current[value]) !== null && _a !== void 0 ? _a : true]; }));
2570
2570
  if (!formProps.onSave) return [3 /*break*/, 2];
2571
- return [4 /*yield*/, formProps.onSave({ selectedRows: selectedRows, values: selectedValues })];
2571
+ return [4 /*yield*/, formProps.onSave({ selectedRows: selectedRows, values: values })];
2572
2572
  case 1: return [2 /*return*/, _a.sent()];
2573
2573
  case 2: return [2 /*return*/, true];
2574
2574
  }
@@ -2856,7 +2856,7 @@ var css_248z = ".LuiTextInput {\n margin-bottom: 0;\n}\n\n.LuiTextInput-formatt
2856
2856
  styleInject(css_248z);
2857
2857
 
2858
2858
  var TextInputFormatted = function (props) {
2859
- return (jsxs("div", __assign({ className: clsx("LuiTextInput Grid-popoverContainer", props.error && "hasError", props.warning && "hasWarning", props.className) }, { children: [jsxs("span", __assign({ className: "LuiTextInput-inputWrapper" }, { children: [jsx("input", __assign({ type: "text", className: "LuiTextInput-input", min: "0", value: props.value, onChange: props.onChange }, props.inputProps)), jsx("span", __assign({ className: "LuiTextInput-formatted" }, { children: props.formatted })), props.icon] })), props.error && (jsxs("span", __assign({ className: "LuiTextInput-error" }, { children: [jsx(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextInput-error-icon", size: "sm", status: "error" }), props.error] }))), props.warning && (jsxs("span", __assign({ className: "LuiTextInput-warning" }, { children: [jsx(LuiIcon, { alt: "warning", name: "ic_warning", className: "LuiTextInput-warning-icon", size: "sm", status: "warning" }), props.warning] })))] })));
2859
+ return (jsxs("div", __assign({ className: clsx("LuiTextInput Grid-popoverContainer", props.error && "hasError", props.warning && "hasWarning", props.className) }, { children: [jsxs("span", __assign({ className: "LuiTextInput-inputWrapper" }, { children: [jsx("input", __assign({ type: "text", className: "LuiTextInput-input", min: "0", value: props.value, onChange: props.onChange }, props.inputProps)), jsx("span", __assign({ className: "LuiTextInput-formatted" }, { children: props.formatted }))] })), props.error && (jsxs("span", __assign({ className: "LuiTextInput-error" }, { children: [jsx(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextInput-error-icon", size: "sm", status: "error" }), props.error] }))), props.warning && (jsxs("span", __assign({ className: "LuiTextInput-warning" }, { children: [jsx(LuiIcon, { alt: "warning", name: "ic_warning", className: "LuiTextInput-warning-icon", size: "sm", status: "warning" }), props.warning] })))] })));
2860
2860
  };
2861
2861
 
2862
2862
  var GridFormEditBearing = function (props) {
@@ -3203,32 +3203,35 @@ var GridPopoverTextArea = function (colDef) {
3203
3203
  };
3204
3204
 
3205
3205
  var GridFormTextInput = function (props) {
3206
- var _a, _b;
3206
+ var _a;
3207
3207
  var formProps = props.formProps;
3208
- var _c = useState((_a = props.value) !== null && _a !== void 0 ? _a : ""), value = _c[0], setValue = _c[1];
3208
+ var initValue = props.value == null ? "" : "".concat(props.value);
3209
+ var _b = useState(initValue), value = _b[0], setValue = _b[1];
3209
3210
  var invalid = useCallback(function () {
3210
- if (formProps.required && value.length == 0) {
3211
+ var trimmedValue = value.trim();
3212
+ if (formProps.required && trimmedValue.length == 0) {
3211
3213
  return "Some text is required";
3212
3214
  }
3213
- if (formProps.maxlength && value.length > formProps.maxlength) {
3215
+ if (formProps.maxlength && trimmedValue.length > formProps.maxlength) {
3214
3216
  return "Text must be no longer than ".concat(formProps.maxlength, " characters");
3215
3217
  }
3216
3218
  if (formProps.validate) {
3217
- return formProps.validate(value);
3219
+ return formProps.validate(trimmedValue);
3218
3220
  }
3219
3221
  return null;
3220
3222
  }, [formProps, value]);
3221
3223
  var save = useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3222
- var field;
3224
+ var trimmedValue, field;
3223
3225
  return __generator(this, function (_a) {
3224
3226
  switch (_a.label) {
3225
3227
  case 0:
3226
3228
  if (invalid())
3227
3229
  return [2 /*return*/, false];
3228
- if (props.value === (value !== null && value !== void 0 ? value : ""))
3230
+ trimmedValue = value.trim();
3231
+ if (initValue === trimmedValue)
3229
3232
  return [2 /*return*/, true];
3230
3233
  if (!formProps.onSave) return [3 /*break*/, 2];
3231
- return [4 /*yield*/, formProps.onSave(selectedRows, value)];
3234
+ return [4 /*yield*/, formProps.onSave(selectedRows, trimmedValue)];
3232
3235
  case 1: return [2 /*return*/, _a.sent()];
3233
3236
  case 2:
3234
3237
  field = props.field;
@@ -3236,13 +3239,13 @@ var GridFormTextInput = function (props) {
3236
3239
  console.error("ColDef has no field set");
3237
3240
  return [2 /*return*/, false];
3238
3241
  }
3239
- selectedRows.forEach(function (row) { return (row[field] = value); });
3242
+ selectedRows.forEach(function (row) { return (row[field] = trimmedValue); });
3240
3243
  return [2 /*return*/, true];
3241
3244
  }
3242
3245
  });
3243
- }); }, [invalid, props.value, props.field, value, formProps]);
3244
- var _d = useGridPopoverHook(props, save), popoverWrapper = _d.popoverWrapper, triggerSave = _d.triggerSave;
3245
- return popoverWrapper(jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_b = formProps.width) !== null && _b !== void 0 ? _b : 240 }, className: "FormTest" }, { children: jsx(TextInputFormatted, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), formatted: "", inputProps: {
3246
+ }); }, [invalid, value, initValue, formProps, props.field]);
3247
+ var _c = useGridPopoverHook(props, save), popoverWrapper = _c.popoverWrapper, triggerSave = _c.triggerSave;
3248
+ return popoverWrapper(jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (_a = formProps.width) !== null && _a !== void 0 ? _a : 240 }, className: "FormTest" }, { children: jsx(TextInputFormatted, { value: value, onChange: function (e) { return setValue(e.target.value); }, error: invalid(), formatted: formProps.units, inputProps: {
3246
3249
  style: { width: "100%" },
3247
3250
  placeholder: formProps.placeholder,
3248
3251
  onKeyDown: function (e) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
@@ -3265,5 +3268,5 @@ var GridSubComponentTextArea = function (props) {
3265
3268
  return (jsx("div", __assign({ className: "FreeTextInput LuiDeprecatedForms" }, { children: jsx("textarea", { autoFocus: true, maxLength: 10000, spellCheck: true, className: "free-text-input", onChange: function (e) { return setValue(e.target.value); }, defaultValue: value }) })));
3266
3269
  };
3267
3270
 
3268
- export { ComponentLoadingWrapper, ControlledMenu, FocusableItem, GenericMultiEditCellClass, Grid, GridCell, GridContext, GridContextProvider, GridFormDropDown, GridFormEditBearing, GridFormMessage, GridFormMultiSelect, GridFormPopoutMenu, GridFormTextArea, GridFormTextInput, GridHeaderSelect, GridIcon, GridLoadableCell, GridPopoutEditMultiSelect, GridPopoverEditBearing, GridPopoverEditBearingCorrection, GridPopoverEditDropDown, GridPopoverMenu, GridPopoverMessage, GridPopoverTextArea, GridPopoverTextInput, GridRenderPopoutMenuCell, GridRendererGenericCell, GridSubComponentTextArea, Menu, MenuButton, MenuDivider, MenuGroup, MenuHeader, MenuItem, MenuRadioGroup, SubMenu, TextAreaInput, TextInputFormatted, UpdatingContext, UpdatingContextProvider, bearingCorrectionValueFormatter, bearingNumberParser, bearingStringValidator, bearingValueFormatter, convertDDToDMS, hasParentClass, isFloat, isNotEmpty, useGridPopoverHook, useMenuState, usePostSortRowsHook, wait };
3271
+ export { ComponentLoadingWrapper, ControlledMenu, FocusableItem, GenericCellEditorComponent, GenericCellEditorComponentFr, GenericMultiEditCellClass, Grid, GridCell, GridCellRenderer, GridContext, GridContextProvider, GridFormDropDown, GridFormEditBearing, GridFormMessage, GridFormMultiSelect, GridFormPopoutMenu, GridFormTextArea, GridFormTextInput, GridHeaderSelect, GridIcon, GridLoadableCell, GridPopoutEditMultiSelect, GridPopoverEditBearing, GridPopoverEditBearingCorrection, GridPopoverEditDropDown, GridPopoverMenu, GridPopoverMessage, GridPopoverTextArea, GridPopoverTextInput, GridRenderPopoutMenuCell, GridRendererGenericCell, GridSubComponentTextArea, Menu, MenuButton, MenuDivider, MenuGroup, MenuHeader, MenuItem, MenuRadioGroup, SubMenu, TextAreaInput, TextInputFormatted, UpdatingContext, UpdatingContextProvider, bearingCorrectionValueFormatter, bearingNumberParser, bearingStringValidator, bearingValueFormatter, convertDDToDMS, hasParentClass, isFloat, isNotEmpty, useGridPopoverHook, useMenuState, usePostSortRowsHook, wait };
3269
3272
  //# sourceMappingURL=step-ag-grid.esm.js.map