@linzjs/step-ag-grid 3.0.0 → 3.0.1
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.js +96 -69
- package/dist/index.js.map +1 -1
- package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +1 -0
- package/dist/src/contexts/GridPopoverContext.d.ts +8 -6
- package/dist/step-ag-grid.esm.js +96 -69
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GridPopoverHook.tsx +2 -2
- package/src/components/gridForm/GridFormDropDown.tsx +20 -15
- package/src/components/gridForm/GridFormEditBearing.tsx +6 -4
- package/src/components/gridForm/GridFormMessage.tsx +3 -3
- package/src/components/gridForm/GridFormMultiSelect.tsx +3 -3
- package/src/components/gridForm/GridFormPopoverMenu.tsx +25 -7
- package/src/components/gridForm/GridFormTextArea.tsx +8 -6
- package/src/components/gridForm/GridFormTextInput.tsx +6 -5
- package/src/contexts/GridPopoverContext.tsx +12 -8
- package/src/stories/grid/FormTest.tsx +3 -3
- package/src/stories/grid/GridPopoutEditDropDown.stories.tsx +3 -1
|
@@ -3,6 +3,7 @@ import { GridBaseRow } from "../Grid";
|
|
|
3
3
|
import { CellEditorCommon } from "../GridCell";
|
|
4
4
|
export interface GridFormPopoutMenuProps<RowType extends GridBaseRow> extends CellEditorCommon {
|
|
5
5
|
options: (selectedRows: RowType[]) => Promise<MenuOption<RowType>[]>;
|
|
6
|
+
defaultAction?: (selectedRows: RowType[], menuOption: SelectedMenuOptionResult<RowType>) => Promise<void>;
|
|
6
7
|
}
|
|
7
8
|
/** Menu configuration types **/
|
|
8
9
|
export declare const PopoutMenuSeparator: Readonly<{
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RefObject } from "react";
|
|
2
|
+
import { GridBaseRow } from "../components/Grid";
|
|
2
3
|
export interface PropsType {
|
|
3
4
|
value: any;
|
|
4
5
|
data: any;
|
|
@@ -6,14 +7,15 @@ export interface PropsType {
|
|
|
6
7
|
selectedRows: any[];
|
|
7
8
|
updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;
|
|
8
9
|
}
|
|
9
|
-
export
|
|
10
|
+
export interface GridPopoverContextType<RowType extends GridBaseRow> {
|
|
10
11
|
anchorRef: RefObject<Element>;
|
|
11
12
|
saving: boolean;
|
|
12
13
|
setSaving: (saving: boolean) => void;
|
|
13
|
-
field:
|
|
14
|
+
field: keyof RowType;
|
|
14
15
|
value: any;
|
|
15
|
-
data:
|
|
16
|
-
selectedRows:
|
|
16
|
+
data: RowType;
|
|
17
|
+
selectedRows: RowType[];
|
|
17
18
|
updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;
|
|
18
|
-
}
|
|
19
|
-
export declare const GridPopoverContext: import("react").Context<GridPopoverContextType
|
|
19
|
+
}
|
|
20
|
+
export declare const GridPopoverContext: import("react").Context<GridPopoverContextType<any>>;
|
|
21
|
+
export declare const useGridPopoverContext: <RowType extends GridBaseRow>() => GridPopoverContextType<RowType>;
|
package/dist/step-ag-grid.esm.js
CHANGED
|
@@ -2654,12 +2654,15 @@ var GridPopoverContext = createContext({
|
|
|
2654
2654
|
setSaving: function () { },
|
|
2655
2655
|
field: "",
|
|
2656
2656
|
value: null,
|
|
2657
|
-
data:
|
|
2657
|
+
data: {},
|
|
2658
2658
|
selectedRows: [],
|
|
2659
2659
|
updateValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
2660
2660
|
return [2 /*return*/, false];
|
|
2661
2661
|
}); }); }
|
|
2662
|
-
});
|
|
2662
|
+
});
|
|
2663
|
+
var useGridPopoverContext = function () {
|
|
2664
|
+
return useContext(GridPopoverContext);
|
|
2665
|
+
};
|
|
2663
2666
|
|
|
2664
2667
|
var GridPopoverContextProvider = function (_a) {
|
|
2665
2668
|
var _b, _c, _d;
|
|
@@ -2755,7 +2758,7 @@ var ComponentLoadingWrapper = function (props) {
|
|
|
2755
2758
|
|
|
2756
2759
|
var useGridPopoverHook = function (props) {
|
|
2757
2760
|
var stopEditing = useContext(GridContext).stopEditing;
|
|
2758
|
-
var _a =
|
|
2761
|
+
var _a = useGridPopoverContext(), anchorRef = _a.anchorRef, saving = _a.saving, updateValue = _a.updateValue;
|
|
2759
2762
|
var saveButtonRef = useRef(null);
|
|
2760
2763
|
var _b = useState(false), isOpen = _b[0], setOpen = _b[1];
|
|
2761
2764
|
useEffect(function () {
|
|
@@ -2908,8 +2911,11 @@ var MenuHeaderString = "_____MENU_HEADER_____";
|
|
|
2908
2911
|
var MenuHeaderItem = function (title) {
|
|
2909
2912
|
return { label: title, value: MenuHeaderString };
|
|
2910
2913
|
};
|
|
2914
|
+
var fieldToString = function (field) {
|
|
2915
|
+
return typeof field == "symbol" ? field.toString() : "".concat(field);
|
|
2916
|
+
};
|
|
2911
2917
|
var GridFormDropDown = function (props) {
|
|
2912
|
-
var _a =
|
|
2918
|
+
var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, field = _a.field, updateValue = _a.updateValue;
|
|
2913
2919
|
var stopEditing = useContext(GridContext).stopEditing;
|
|
2914
2920
|
var _b = useState(""), filter = _b[0], setFilter = _b[1];
|
|
2915
2921
|
var _c = useState([]), filteredValues = _c[0], setFilteredValues = _c[1];
|
|
@@ -3065,48 +3071,43 @@ var GridFormDropDown = function (props) {
|
|
|
3065
3071
|
var _b;
|
|
3066
3072
|
var ref = _a.ref;
|
|
3067
3073
|
return (jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: 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); } }) })));
|
|
3068
|
-
} })), jsx(MenuDivider, {}, "$$divider_filter")] }))), jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormDropDown-options" }, { children: jsxs(Fragment$1, { children: [options && options.length == (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length) && jsx(MenuItem, { children: "[Empty]" }, "".concat(field, "-empty")), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
|
|
3074
|
+
} })), jsx(MenuDivider, {}, "$$divider_filter")] }))), jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormDropDown-options" }, { children: jsxs(Fragment$1, { children: [options && options.length == (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length) && (jsx(MenuItem, { children: "[Empty]" }, "".concat(fieldToString(field), "-empty"))), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
|
|
3069
3075
|
var _a;
|
|
3070
3076
|
return item.value === MenuSeparatorString ? (jsx(MenuDivider, {}, "$$divider_".concat(index))) : item.value === MenuHeaderString ? (jsx(MenuHeader, { children: item.label }, "$$header_".concat(index))) : filteredValues.includes(item.value) ? null : (jsx("div", { children: !item.subComponent ? (jsx(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onClick: function () {
|
|
3071
3077
|
selectItemHandler(item.value).then();
|
|
3072
|
-
} }, { children: (_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)) }), "".concat(field, "-").concat(index))) : (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (ref) {
|
|
3073
|
-
return item.subComponent &&
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
var
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3078
|
+
} }, { children: (_a = item.label) !== null && _a !== void 0 ? _a : (item.value == null ? "<".concat(item.value, ">") : "".concat(item.value)) }), "".concat(fieldToString(field), "-").concat(index))) : (jsx(FocusableItem, __assign({ className: "LuiDeprecatedForms" }, { children: function (ref) {
|
|
3079
|
+
return item.subComponent && (jsx(item.subComponent, { setValue: function (value) {
|
|
3080
|
+
var localSubComponentValues = __spreadArray([], subComponentValues, true);
|
|
3081
|
+
var subComponentValueIndex = localSubComponentValues.findIndex(function (_a) {
|
|
3082
|
+
var optionValue = _a.optionValue;
|
|
3083
|
+
return optionValue === item.value;
|
|
3084
|
+
});
|
|
3085
|
+
if (subComponentValueIndex !== -1) {
|
|
3086
|
+
localSubComponentValues[subComponentValueIndex].subComponentValue = value;
|
|
3087
|
+
}
|
|
3088
|
+
else {
|
|
3089
|
+
localSubComponentValues.push({
|
|
3090
|
+
subComponentValue: value,
|
|
3091
|
+
optionValue: item.value
|
|
3080
3092
|
});
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
var optionValue = _a.optionValue;
|
|
3095
|
-
return optionValue === item.value;
|
|
3093
|
+
}
|
|
3094
|
+
setSubComponentValues(localSubComponentValues);
|
|
3095
|
+
}, keyDown: function (key, event) {
|
|
3096
|
+
var subComponentItem = subComponentValues.find(function (_a) {
|
|
3097
|
+
var optionValue = _a.optionValue;
|
|
3098
|
+
return optionValue === item.value;
|
|
3099
|
+
});
|
|
3100
|
+
if ((key === "Enter" || key === "Tab") && subComponentItem) {
|
|
3101
|
+
event.preventDefault();
|
|
3102
|
+
event.stopPropagation();
|
|
3103
|
+
return selectItemHandler(item.value, subComponentItem.subComponentValue).then(function () {
|
|
3104
|
+
ref.closeMenu();
|
|
3105
|
+
return true;
|
|
3096
3106
|
});
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
ref.closeMenu();
|
|
3102
|
-
return true;
|
|
3103
|
-
});
|
|
3104
|
-
}
|
|
3105
|
-
return false;
|
|
3106
|
-
},
|
|
3107
|
-
key: "".concat(field, "-").concat(index, "_subcomponent_inner")
|
|
3108
|
-
}, ref);
|
|
3109
|
-
} }), "".concat(field, "-").concat(index, "_subcomponent"))) }, "menu-wrapper-".concat(index)));
|
|
3107
|
+
}
|
|
3108
|
+
return false;
|
|
3109
|
+
} }, "".concat(fieldToString(field), "-").concat(index, "_subcomponent_inner")));
|
|
3110
|
+
} }), "".concat(fieldToString(field), "-").concat(index, "_subcomponent"))) }, "menu-wrapper-".concat(index)));
|
|
3110
3111
|
})] }) }))] }));
|
|
3111
3112
|
};
|
|
3112
3113
|
|
|
@@ -3127,7 +3128,7 @@ var GridSubComponentContext = createContext({
|
|
|
3127
3128
|
});
|
|
3128
3129
|
|
|
3129
3130
|
var GridFormMultiSelect = function (props) {
|
|
3130
|
-
var selectedRows =
|
|
3131
|
+
var selectedRows = useGridPopoverContext().selectedRows;
|
|
3131
3132
|
var initialiseValues = useMemo(function () {
|
|
3132
3133
|
var r = props.initialSelectedValues && props.initialSelectedValues(selectedRows);
|
|
3133
3134
|
// convert array of strings to object<value,null>
|
|
@@ -3289,7 +3290,7 @@ var PopoutMenuSeparator = Object.freeze({ __isMenuSeparator__: true });
|
|
|
3289
3290
|
* you need a useMemo around your columnDefs
|
|
3290
3291
|
*/
|
|
3291
3292
|
var GridFormPopoverMenu = function (props) {
|
|
3292
|
-
var _a =
|
|
3293
|
+
var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, updateValue = _a.updateValue;
|
|
3293
3294
|
var optionsInitialising = useRef(false);
|
|
3294
3295
|
var _b = useState(), options = _b[0], setOptions = _b[1];
|
|
3295
3296
|
// Save triggers during async action processing which triggers another action(), this ref blocks that
|
|
@@ -3297,6 +3298,22 @@ var GridFormPopoverMenu = function (props) {
|
|
|
3297
3298
|
var _c = useState(null), subComponentSelected = _c[0], setSubComponentSelected = _c[1];
|
|
3298
3299
|
var subComponentIsValid = useRef(false);
|
|
3299
3300
|
var _d = useState(), subSelectedValue = _d[0], setSubSelectedValue = _d[1];
|
|
3301
|
+
var defaultAction = useCallback(function (selectedRows, menuOption) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3302
|
+
return __generator(this, function (_a) {
|
|
3303
|
+
switch (_a.label) {
|
|
3304
|
+
case 0:
|
|
3305
|
+
if (!props.defaultAction) return [3 /*break*/, 2];
|
|
3306
|
+
return [4 /*yield*/, props.defaultAction(selectedRows, menuOption)];
|
|
3307
|
+
case 1:
|
|
3308
|
+
_a.sent();
|
|
3309
|
+
return [3 /*break*/, 3];
|
|
3310
|
+
case 2:
|
|
3311
|
+
console.error("No action specified for ".concat(menuOption.label, " menu options"));
|
|
3312
|
+
_a.label = 3;
|
|
3313
|
+
case 3: return [2 /*return*/];
|
|
3314
|
+
}
|
|
3315
|
+
});
|
|
3316
|
+
}); }, [props]);
|
|
3300
3317
|
// Load up options list if it's async function
|
|
3301
3318
|
useEffect(function () {
|
|
3302
3319
|
var _a;
|
|
@@ -3305,50 +3322,55 @@ var GridFormPopoverMenu = function (props) {
|
|
|
3305
3322
|
optionsInitialising.current = true;
|
|
3306
3323
|
var optionsConf = (_a = props.options) !== null && _a !== void 0 ? _a : [];
|
|
3307
3324
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3308
|
-
var _a,
|
|
3309
|
-
return __generator(this, function (
|
|
3310
|
-
switch (
|
|
3325
|
+
var newOptions, _a, anyOptionsAreMissingAction;
|
|
3326
|
+
return __generator(this, function (_b) {
|
|
3327
|
+
switch (_b.label) {
|
|
3311
3328
|
case 0:
|
|
3312
|
-
_a = setOptions;
|
|
3313
3329
|
if (!(typeof optionsConf == "function")) return [3 /*break*/, 2];
|
|
3314
3330
|
return [4 /*yield*/, optionsConf(selectedRows)];
|
|
3315
3331
|
case 1:
|
|
3316
|
-
|
|
3332
|
+
_a = _b.sent();
|
|
3317
3333
|
return [3 /*break*/, 3];
|
|
3318
3334
|
case 2:
|
|
3319
|
-
|
|
3320
|
-
|
|
3335
|
+
_a = optionsConf;
|
|
3336
|
+
_b.label = 3;
|
|
3321
3337
|
case 3:
|
|
3322
|
-
|
|
3338
|
+
newOptions = _a;
|
|
3339
|
+
setOptions(newOptions);
|
|
3340
|
+
if (!props.defaultAction) {
|
|
3341
|
+
anyOptionsAreMissingAction = newOptions.some(function (option) { return !option.action; });
|
|
3342
|
+
if (anyOptionsAreMissingAction) {
|
|
3343
|
+
console.error("There's no default action handler and some Menu options are missing an action handler", {
|
|
3344
|
+
invalidMenuOptions: newOptions.filter(function (option) { return !option.action; })
|
|
3345
|
+
});
|
|
3346
|
+
}
|
|
3347
|
+
}
|
|
3323
3348
|
optionsInitialising.current = false;
|
|
3324
3349
|
return [2 /*return*/];
|
|
3325
3350
|
}
|
|
3326
3351
|
});
|
|
3327
3352
|
}); })();
|
|
3328
|
-
}, [options, props.options, selectedRows]);
|
|
3353
|
+
}, [options, props.defaultAction, props.options, selectedRows]);
|
|
3329
3354
|
var actionClick = useCallback(function (menuOption) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3330
3355
|
return __generator(this, function (_a) {
|
|
3331
3356
|
actionProcessing.current = true;
|
|
3332
3357
|
return [2 /*return*/, updateValue(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3333
|
-
var result
|
|
3358
|
+
var result;
|
|
3359
|
+
var _a;
|
|
3334
3360
|
return __generator(this, function (_b) {
|
|
3335
3361
|
switch (_b.label) {
|
|
3336
3362
|
case 0:
|
|
3337
3363
|
result = __assign(__assign({}, menuOption), { subValue: subSelectedValue });
|
|
3338
|
-
_a = menuOption.action;
|
|
3339
|
-
if (!_a) return [3 /*break*/, 2];
|
|
3340
|
-
return [4 /*yield*/, menuOption.action(selectedRows, result)];
|
|
3364
|
+
return [4 /*yield*/, ((_a = menuOption.action) !== null && _a !== void 0 ? _a : defaultAction)(selectedRows, result)];
|
|
3341
3365
|
case 1:
|
|
3342
|
-
|
|
3343
|
-
_b.label = 2;
|
|
3344
|
-
case 2:
|
|
3366
|
+
_b.sent();
|
|
3345
3367
|
actionProcessing.current = false;
|
|
3346
3368
|
return [2 /*return*/, true];
|
|
3347
3369
|
}
|
|
3348
3370
|
});
|
|
3349
3371
|
}); })];
|
|
3350
3372
|
});
|
|
3351
|
-
}); }, [selectedRows, subSelectedValue, updateValue]);
|
|
3373
|
+
}); }, [defaultAction, selectedRows, subSelectedValue, updateValue]);
|
|
3352
3374
|
var onMenuItemClick = useCallback(function (e, item) {
|
|
3353
3375
|
if (item.subComponent) {
|
|
3354
3376
|
subComponentIsValid.current = false;
|
|
@@ -3505,7 +3527,7 @@ var TextInputFormatted = function (props) {
|
|
|
3505
3527
|
};
|
|
3506
3528
|
|
|
3507
3529
|
var GridFormEditBearing = function (props) {
|
|
3508
|
-
var _a =
|
|
3530
|
+
var _a = useGridPopoverContext(), field = _a.field, initialValue = _a.value;
|
|
3509
3531
|
var _b = useState("".concat(initialValue !== null && initialValue !== void 0 ? initialValue : "")), value = _b[0], setValue = _b[1];
|
|
3510
3532
|
var save = useCallback(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3511
3533
|
var parsedValue;
|
|
@@ -3527,7 +3549,9 @@ var GridFormEditBearing = function (props) {
|
|
|
3527
3549
|
console.error("field is not defined in ColDef");
|
|
3528
3550
|
}
|
|
3529
3551
|
else {
|
|
3530
|
-
selectedRows.forEach(function (row) {
|
|
3552
|
+
selectedRows.forEach(function (row) {
|
|
3553
|
+
row[field] = parsedValue;
|
|
3554
|
+
});
|
|
3531
3555
|
}
|
|
3532
3556
|
_a.label = 3;
|
|
3533
3557
|
case 3: return [2 /*return*/, true];
|
|
@@ -3587,7 +3611,7 @@ var GridPopoverEditDropDown = function (colDef, props) {
|
|
|
3587
3611
|
};
|
|
3588
3612
|
|
|
3589
3613
|
var GridFormMessage = function (props) {
|
|
3590
|
-
var selectedRows =
|
|
3614
|
+
var selectedRows = useGridPopoverContext().selectedRows;
|
|
3591
3615
|
var _a = useState(null), message = _a[0], setMessage = _a[1];
|
|
3592
3616
|
var popoverWrapper = useGridPopoverHook({ className: props.className }).popoverWrapper;
|
|
3593
3617
|
useEffect(function () {
|
|
@@ -3694,8 +3718,8 @@ var TextAreaInput = function (props) {
|
|
|
3694
3718
|
|
|
3695
3719
|
var GridFormTextArea = function (props) {
|
|
3696
3720
|
var _a;
|
|
3697
|
-
var _b =
|
|
3698
|
-
var _c = useState(initialVale
|
|
3721
|
+
var _b = useGridPopoverContext(), field = _b.field, initialVale = _b.value;
|
|
3722
|
+
var _c = useState(initialVale != null ? "".concat(initialVale) : ""), value = _c[0], setValue = _c[1];
|
|
3699
3723
|
var invalid = useCallback(function () {
|
|
3700
3724
|
if (props.required && value.length == 0) {
|
|
3701
3725
|
return "Some text is required";
|
|
@@ -3724,7 +3748,9 @@ var GridFormTextArea = function (props) {
|
|
|
3724
3748
|
console.error("ColDef has no field set");
|
|
3725
3749
|
return [2 /*return*/, false];
|
|
3726
3750
|
}
|
|
3727
|
-
selectedRows.forEach(function (row) {
|
|
3751
|
+
selectedRows.forEach(function (row) {
|
|
3752
|
+
row[field] = value;
|
|
3753
|
+
});
|
|
3728
3754
|
return [2 /*return*/, true];
|
|
3729
3755
|
}
|
|
3730
3756
|
});
|
|
@@ -3737,7 +3763,7 @@ var GridPopoverTextArea = function (colDef, params) { return GridCell(colDef, __
|
|
|
3737
3763
|
|
|
3738
3764
|
var GridFormTextInput = function (props) {
|
|
3739
3765
|
var _a;
|
|
3740
|
-
var _b =
|
|
3766
|
+
var _b = useGridPopoverContext(), field = _b.field, data = _b.data, initialVale = _b.value;
|
|
3741
3767
|
var initValue = initialVale == null ? "" : "".concat(initialVale);
|
|
3742
3768
|
var _c = useState(initValue), value = _c[0], setValue = _c[1];
|
|
3743
3769
|
var invalid = useCallback(function () {
|
|
@@ -3771,8 +3797,9 @@ var GridFormTextInput = function (props) {
|
|
|
3771
3797
|
console.error("ColDef has no field set");
|
|
3772
3798
|
return [2 /*return*/, false];
|
|
3773
3799
|
}
|
|
3774
|
-
|
|
3775
|
-
|
|
3800
|
+
selectedRows.forEach(function (row) {
|
|
3801
|
+
row[field] = trimmedValue;
|
|
3802
|
+
});
|
|
3776
3803
|
return [2 /*return*/, true];
|
|
3777
3804
|
}
|
|
3778
3805
|
});
|