@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.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +29 -23
- package/dist/index.js.map +1 -1
- package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +1 -0
- package/dist/src/components/gridForm/GridFormTextInput.d.ts +1 -0
- package/dist/src/lui/TextInputFormatted.d.ts +1 -2
- package/dist/src/stories/components/FormTest.d.ts +1 -0
- package/dist/step-ag-grid.esm.js +28 -25
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GridCell.tsx +4 -2
- package/src/components/gridForm/GridFormMultiSelect.tsx +9 -7
- package/src/components/gridForm/GridFormTextInput.tsx +13 -10
- package/src/lui/TextInputFormatted.tsx +1 -3
- package/src/stories/components/FormTest.tsx +1 -0
- package/src/stories/components/GridPopoutEditGenericTextArea.stories.tsx +27 -3
- package/src/stories/components/GridPopoutEditMultiSelect.stories.tsx +63 -40
|
@@ -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
|
|
11
|
+
formatted?: string;
|
|
13
12
|
}
|
|
14
13
|
export declare const TextInputFormatted: (props: LuiTextInputProps) => JSX.Element;
|
package/dist/step-ag-grid.esm.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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:
|
|
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 }))
|
|
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
|
|
3206
|
+
var _a;
|
|
3207
3207
|
var formProps = props.formProps;
|
|
3208
|
-
var
|
|
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
|
-
|
|
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 &&
|
|
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(
|
|
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
|
-
|
|
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,
|
|
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] =
|
|
3242
|
+
selectedRows.forEach(function (row) { return (row[field] = trimmedValue); });
|
|
3240
3243
|
return [2 /*return*/, true];
|
|
3241
3244
|
}
|
|
3242
3245
|
});
|
|
3243
|
-
}); }, [invalid,
|
|
3244
|
-
var
|
|
3245
|
-
return popoverWrapper(jsx("div", __assign({ style: { display: "flex", flexDirection: "row", width: (
|
|
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
|