@linzjs/step-ag-grid 7.0.2 → 7.0.4
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 +80 -67
- package/dist/index.js.map +1 -1
- package/dist/src/components/gridForm/GridFormDropDown.d.ts +1 -0
- package/dist/src/contexts/GridPopoverContext.d.ts +1 -7
- package/dist/step-ag-grid.esm.js +80 -67
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GridCell.tsx +1 -1
- package/src/components/gridForm/GridFormDropDown.tsx +51 -28
- package/src/components/gridForm/GridFormEditBearing.tsx +3 -3
- package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +0 -1
- package/src/components/gridRender/GridRenderGenericCell.tsx +3 -8
- package/src/contexts/GridPopoverContext.tsx +2 -8
- package/src/contexts/GridPopoverContextProvider.tsx +1 -0
- package/src/stories/grid/GridPopoutBearing.stories.tsx +15 -15
- package/src/stories/grid/GridPopoutEditDropDown.stories.tsx +5 -0
- package/src/utils/bearing.ts +2 -2
|
@@ -27,6 +27,7 @@ export interface GridFormPopoutDropDownProps<RowType extends GridBaseRow> extend
|
|
|
27
27
|
className?: "GridPopoverEditDropDown-containerSmall" | "GridPopoverEditDropDown-containerMedium" | "GridPopoverEditDropDown-containerLarge" | "GridPopoverEditDropDown-containerUnlimited" | string | undefined;
|
|
28
28
|
filtered?: "local" | "reload";
|
|
29
29
|
filterPlaceholder?: string;
|
|
30
|
+
filterHelpText?: string;
|
|
30
31
|
onSelectedItem?: (props: GridPopoutEditDropDownSelectedItem<RowType>) => Promise<void>;
|
|
31
32
|
onSelectFilter?: (props: GridPopoutEditDropDownSelectedItem<RowType>) => Promise<void>;
|
|
32
33
|
options: SelectOption[] | ((selectedRows: RowType[], filter?: string) => Promise<SelectOption[]> | SelectOption[]);
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { RefObject } from "react";
|
|
2
2
|
import { GridBaseRow } from "../components/Grid";
|
|
3
|
-
export interface PropsType {
|
|
4
|
-
value: any;
|
|
5
|
-
data: any;
|
|
6
|
-
field: string;
|
|
7
|
-
selectedRows: any[];
|
|
8
|
-
updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>) => Promise<boolean>;
|
|
9
|
-
}
|
|
10
3
|
export interface GridPopoverContextType<RowType extends GridBaseRow> {
|
|
11
4
|
anchorRef: RefObject<Element>;
|
|
12
5
|
saving: boolean;
|
|
@@ -16,6 +9,7 @@ export interface GridPopoverContextType<RowType extends GridBaseRow> {
|
|
|
16
9
|
data: RowType;
|
|
17
10
|
selectedRows: RowType[];
|
|
18
11
|
updateValue: (saveFn: (selectedRows: any[]) => Promise<boolean>, tabDirection: 1 | 0 | -1) => Promise<boolean>;
|
|
12
|
+
formatValue: (value: any) => any;
|
|
19
13
|
}
|
|
20
14
|
export declare const GridPopoverContext: import("react").Context<GridPopoverContextType<any>>;
|
|
21
15
|
export declare const useGridPopoverContext: <RowType extends GridBaseRow>() => GridPopoverContextType<RowType>;
|
package/dist/step-ag-grid.esm.js
CHANGED
|
@@ -2361,7 +2361,8 @@ var GridPopoverContext = createContext({
|
|
|
2361
2361
|
selectedRows: [],
|
|
2362
2362
|
updateValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
2363
2363
|
return [2 /*return*/, false];
|
|
2364
|
-
}); }); }
|
|
2364
|
+
}); }); },
|
|
2365
|
+
formatValue: function () { return "! No gridPopoverContextProvider !"; }
|
|
2365
2366
|
});
|
|
2366
2367
|
var useGridPopoverContext = function () {
|
|
2367
2368
|
return useContext(GridPopoverContext);
|
|
@@ -2410,7 +2411,8 @@ var GridPopoverContextProvider = function (_a) {
|
|
|
2410
2411
|
field: field,
|
|
2411
2412
|
data: props.data,
|
|
2412
2413
|
value: props.value,
|
|
2413
|
-
updateValue: updateValue
|
|
2414
|
+
updateValue: updateValue,
|
|
2415
|
+
formatValue: props.formatValue
|
|
2414
2416
|
} }, { children: children })));
|
|
2415
2417
|
};
|
|
2416
2418
|
|
|
@@ -2852,13 +2854,9 @@ var GridRendererGenericCell = function (props) {
|
|
|
2852
2854
|
var warningText = warningFn ? warningFn(props) : undefined;
|
|
2853
2855
|
var infoFn = cellRendererParams === null || cellRendererParams === void 0 ? void 0 : cellRendererParams.info;
|
|
2854
2856
|
var infoText = infoFn ? infoFn(props) : undefined;
|
|
2855
|
-
var defaultFormatter = function (
|
|
2856
|
-
var formatter = (_a =
|
|
2857
|
-
|
|
2858
|
-
console.error("valueFormatter must be a function");
|
|
2859
|
-
return jsx("span", { children: "valueFormatter must be a function" });
|
|
2860
|
-
}
|
|
2861
|
-
var formatted = formatter(props);
|
|
2857
|
+
var defaultFormatter = function (value) { return value; };
|
|
2858
|
+
var formatter = (_a = props.formatValue) !== null && _a !== void 0 ? _a : defaultFormatter;
|
|
2859
|
+
var formatted = formatter(props.value);
|
|
2862
2860
|
return (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: jsxs(Fragment$1, { children: [typeof warningText === "string" && jsx(GridIcon, { icon: "ic_warning", title: warningText }), typeof infoText === "string" && jsx(GridIcon, { icon: "ic_info", title: infoText }), jsx("span", __assign({ title: formatted }, { children: formatted }))] }) })));
|
|
2863
2861
|
};
|
|
2864
2862
|
|
|
@@ -2892,7 +2890,7 @@ var GridCell = function (props, custom) {
|
|
|
2892
2890
|
// Default value formatter, otherwise react freaks out on objects
|
|
2893
2891
|
valueFormatter: function (params) {
|
|
2894
2892
|
if (params.value == null)
|
|
2895
|
-
return "
|
|
2893
|
+
return "–";
|
|
2896
2894
|
var types = ["number", "boolean", "string"];
|
|
2897
2895
|
if (types.includes(typeof params.value))
|
|
2898
2896
|
return "".concat(params.value);
|
|
@@ -3082,6 +3080,13 @@ function defer() {
|
|
|
3082
3080
|
return deferred;
|
|
3083
3081
|
}
|
|
3084
3082
|
|
|
3083
|
+
var css_248z$4 = ".helpText{color:#6b6966;font-size:.75rem;font-weight:400}";
|
|
3084
|
+
styleInject(css_248z$4);
|
|
3085
|
+
|
|
3086
|
+
var FormError = function (props) {
|
|
3087
|
+
return (jsxs(Fragment$1, { children: [props.error && (jsx("span", __assign({ className: "LuiTextInput-error", style: { paddingLeft: 0 } }, { children: props.error }))), props.helpText && !props.error && jsx("span", __assign({ className: "helpText" }, { children: props.helpText }))] }));
|
|
3088
|
+
};
|
|
3089
|
+
|
|
3085
3090
|
var MenuSeparatorString = "_____MENU_SEPARATOR_____";
|
|
3086
3091
|
var MenuSeparator = Object.freeze({ value: MenuSeparatorString });
|
|
3087
3092
|
var MenuHeaderString = "_____MENU_HEADER_____";
|
|
@@ -3092,6 +3097,7 @@ var fieldToString = function (field) {
|
|
|
3092
3097
|
return typeof field == "symbol" ? field.toString() : "".concat(field);
|
|
3093
3098
|
};
|
|
3094
3099
|
var GridFormDropDown = function (props) {
|
|
3100
|
+
var stopEditing = useContext(GridContext).stopEditing;
|
|
3095
3101
|
var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, field = _a.field, updateValue = _a.updateValue, data = _a.data;
|
|
3096
3102
|
// Save triggers during async action processing which triggers another selectItem(), this ref blocks that
|
|
3097
3103
|
var _b = useState(""), filter = _b[0], setFilter = _b[1];
|
|
@@ -3138,22 +3144,27 @@ var GridFormDropDown = function (props) {
|
|
|
3138
3144
|
}); }, [selectItemHandler, updateValue]);
|
|
3139
3145
|
var selectFilterHandler = useCallback(function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3140
3146
|
return __generator(this, function (_a) {
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3147
|
+
switch (_a.label) {
|
|
3148
|
+
case 0: return [4 /*yield*/, updateValue(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3149
|
+
var _a;
|
|
3150
|
+
return __generator(this, function (_b) {
|
|
3151
|
+
switch (_b.label) {
|
|
3152
|
+
case 0:
|
|
3153
|
+
_a = props.onSelectFilter;
|
|
3154
|
+
if (!_a) return [3 /*break*/, 2];
|
|
3155
|
+
return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
|
|
3156
|
+
case 1:
|
|
3157
|
+
_a = (_b.sent());
|
|
3158
|
+
_b.label = 2;
|
|
3159
|
+
case 2:
|
|
3160
|
+
return [2 /*return*/, true];
|
|
3161
|
+
}
|
|
3162
|
+
});
|
|
3163
|
+
}); }, 0)];
|
|
3164
|
+
case 1:
|
|
3165
|
+
_a.sent();
|
|
3166
|
+
return [2 /*return*/];
|
|
3167
|
+
}
|
|
3157
3168
|
});
|
|
3158
3169
|
}); }, [props, updateValue]);
|
|
3159
3170
|
// Load up options list if it's async function
|
|
@@ -3209,7 +3220,7 @@ var GridFormDropDown = function (props) {
|
|
|
3209
3220
|
return undefined;
|
|
3210
3221
|
}
|
|
3211
3222
|
var str = option.label || "";
|
|
3212
|
-
return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;
|
|
3223
|
+
return str.toLowerCase().indexOf(filter.toLowerCase()) === -1 ? option.value : undefined;
|
|
3213
3224
|
})
|
|
3214
3225
|
.filter(function (r) { return r !== undefined; }));
|
|
3215
3226
|
}
|
|
@@ -3230,56 +3241,65 @@ var GridFormDropDown = function (props) {
|
|
|
3230
3241
|
* Saves are wrapped in updateValue and triggered by blur events
|
|
3231
3242
|
*/
|
|
3232
3243
|
var save = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3233
|
-
var activeOptions;
|
|
3234
3244
|
return __generator(this, function (_a) {
|
|
3235
3245
|
switch (_a.label) {
|
|
3236
3246
|
case 0:
|
|
3237
3247
|
if (!options)
|
|
3238
3248
|
return [2 /*return*/, true];
|
|
3239
|
-
activeOptions = options.filter(function (option) { return !filteredValues.includes(option.value); });
|
|
3240
|
-
if (!(activeOptions.length === 1)) return [3 /*break*/, 2];
|
|
3241
|
-
return [4 /*yield*/, selectItemHandler(activeOptions[0].value)];
|
|
3242
|
-
case 1:
|
|
3243
|
-
_a.sent();
|
|
3244
|
-
return [3 /*break*/, 6];
|
|
3245
|
-
case 2:
|
|
3246
|
-
if (!(activeOptions.length === 0 && props.onSelectFilter)) return [3 /*break*/, 4];
|
|
3247
|
-
return [4 /*yield*/, selectFilterHandler(filter)];
|
|
3248
|
-
case 3:
|
|
3249
|
-
_a.sent();
|
|
3250
|
-
return [3 /*break*/, 6];
|
|
3251
|
-
case 4:
|
|
3252
3249
|
// Handler for sub-selected value
|
|
3253
3250
|
if (!selectedSubComponent)
|
|
3254
3251
|
return [2 /*return*/, true];
|
|
3255
3252
|
if (selectedSubComponent.subComponent && !subComponentIsValid.current)
|
|
3256
3253
|
return [2 /*return*/, false];
|
|
3257
3254
|
return [4 /*yield*/, selectItemHandler(selectedSubComponent.value, subSelectedValue)];
|
|
3258
|
-
case
|
|
3255
|
+
case 1:
|
|
3259
3256
|
_a.sent();
|
|
3260
|
-
|
|
3261
|
-
case 6: return [2 /*return*/, true];
|
|
3257
|
+
return [2 /*return*/, true];
|
|
3262
3258
|
}
|
|
3263
3259
|
});
|
|
3264
|
-
}); }, [
|
|
3265
|
-
filter,
|
|
3266
|
-
filteredValues,
|
|
3267
|
-
options,
|
|
3268
|
-
props.onSelectFilter,
|
|
3269
|
-
selectFilterHandler,
|
|
3270
|
-
selectItemHandler,
|
|
3271
|
-
selectedSubComponent,
|
|
3272
|
-
subSelectedValue,
|
|
3273
|
-
]);
|
|
3260
|
+
}); }, [options, selectItemHandler, selectedSubComponent, subSelectedValue]);
|
|
3274
3261
|
var popoverWrapper = useGridPopoverHook({
|
|
3275
3262
|
className: props.className,
|
|
3276
3263
|
invalid: function () { return !!(selectedSubComponent && !subComponentIsValid.current); },
|
|
3277
3264
|
save: save
|
|
3278
3265
|
}).popoverWrapper;
|
|
3266
|
+
var enterKeyPressedRef = useRef(false);
|
|
3267
|
+
var handleKeyDown = useCallback(function (e) {
|
|
3268
|
+
if (e.key === "Enter") {
|
|
3269
|
+
e.stopPropagation();
|
|
3270
|
+
e.preventDefault();
|
|
3271
|
+
enterKeyPressedRef.current = true;
|
|
3272
|
+
}
|
|
3273
|
+
}, []);
|
|
3274
|
+
var handleKeyUp = useCallback(function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3275
|
+
var _a;
|
|
3276
|
+
return __generator(this, function (_b) {
|
|
3277
|
+
switch (_b.label) {
|
|
3278
|
+
case 0:
|
|
3279
|
+
if (!options)
|
|
3280
|
+
return [2 /*return*/];
|
|
3281
|
+
if (!(e.key === "Enter")) return [3 /*break*/, 3];
|
|
3282
|
+
e.stopPropagation();
|
|
3283
|
+
e.preventDefault();
|
|
3284
|
+
if (!enterKeyPressedRef.current)
|
|
3285
|
+
return [2 /*return*/];
|
|
3286
|
+
_a = props.onSelectFilter;
|
|
3287
|
+
if (!_a) return [3 /*break*/, 2];
|
|
3288
|
+
return [4 /*yield*/, selectFilterHandler(filter)];
|
|
3289
|
+
case 1:
|
|
3290
|
+
_a = (_b.sent());
|
|
3291
|
+
_b.label = 2;
|
|
3292
|
+
case 2:
|
|
3293
|
+
stopEditing();
|
|
3294
|
+
_b.label = 3;
|
|
3295
|
+
case 3: return [2 /*return*/];
|
|
3296
|
+
}
|
|
3297
|
+
});
|
|
3298
|
+
}); }, [filter, options, props.onSelectFilter, selectFilterHandler, stopEditing]);
|
|
3279
3299
|
return popoverWrapper(jsxs(Fragment$1, { children: [props.filtered && (jsxs("div", __assign({ className: "GridFormDropDown-filter" }, { children: [jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
|
|
3280
3300
|
var _b;
|
|
3281
3301
|
var ref = _a.ref;
|
|
3282
|
-
return (
|
|
3302
|
+
return (jsxs("div", __assign({ style: { display: "flex", flexDirection: "column", width: "100%" } }, { children: [jsx("input", { autoFocus: true, className: "LuiTextInput-input", ref: ref, type: "text", placeholder: (_b = props.filterPlaceholder) !== null && _b !== void 0 ? _b : "Placeholder", "data-testid": "filteredMenu-free-text-input", defaultValue: filter, "data-disableenterautosave": true, "data-allowtabtoSave": true, onChange: function (e) { return setFilter(e.target.value); }, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp }), props.filterHelpText && isNotEmpty(filter) && (jsx(FormError, { error: null, helpText: props.filterHelpText }))] })));
|
|
3283
3303
|
} })), 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, __assign({ className: "GridPopoverEditDropDown-noOptions" }, { children: "No Options" }), "".concat(fieldToString(field), "-empty"))), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
|
|
3284
3304
|
var _a;
|
|
3285
3305
|
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 : (jsxs("div", { children: [jsxs(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onClick: function (e) {
|
|
@@ -3321,13 +3341,6 @@ var GridFormDropDown = function (props) {
|
|
|
3321
3341
|
})] }) }))] }));
|
|
3322
3342
|
};
|
|
3323
3343
|
|
|
3324
|
-
var css_248z$4 = ".helpText{color:#6b6966;font-size:.75rem;font-weight:400}";
|
|
3325
|
-
styleInject(css_248z$4);
|
|
3326
|
-
|
|
3327
|
-
var FormError = function (props) {
|
|
3328
|
-
return (jsxs(Fragment$1, { children: [props.error && (jsx("span", __assign({ className: "LuiTextInput-error", style: { paddingLeft: 0 } }, { children: props.error }))), props.helpText && !props.error && jsx("span", __assign({ className: "helpText" }, { children: props.helpText }))] }));
|
|
3329
|
-
};
|
|
3330
|
-
|
|
3331
3344
|
function escapeStringRegexp(string) {
|
|
3332
3345
|
if (typeof string !== 'string') {
|
|
3333
3346
|
throw new TypeError('Expected a string');
|
|
@@ -3803,14 +3816,14 @@ var GridPopoverMenu = function (colDef, custom) {
|
|
|
3803
3816
|
var bearingValueFormatter = function (params) {
|
|
3804
3817
|
var value = typeof params.value == "string" ? parseFloat(params.value) : params.value;
|
|
3805
3818
|
if (value == null) {
|
|
3806
|
-
return "
|
|
3819
|
+
return "–";
|
|
3807
3820
|
}
|
|
3808
3821
|
return convertDDToDMS(value, false, false);
|
|
3809
3822
|
};
|
|
3810
3823
|
var bearingCorrectionValueFormatter = function (params) {
|
|
3811
3824
|
var value = params.value;
|
|
3812
3825
|
if (value == null) {
|
|
3813
|
-
return "
|
|
3826
|
+
return "–";
|
|
3814
3827
|
}
|
|
3815
3828
|
if (typeof value === "string") {
|
|
3816
3829
|
return convertDDToDMS(bearingNumberParser(value), true, true);
|
|
@@ -3892,7 +3905,7 @@ var TextInputFormatted = function (props) {
|
|
|
3892
3905
|
};
|
|
3893
3906
|
|
|
3894
3907
|
var GridFormEditBearing = function (props) {
|
|
3895
|
-
var _a = useGridPopoverContext(), field = _a.field, initialValue = _a.value;
|
|
3908
|
+
var _a = useGridPopoverContext(), field = _a.field, initialValue = _a.value, formatValue = _a.formatValue;
|
|
3896
3909
|
// This clears out any scientific precision
|
|
3897
3910
|
var defaultValue = useMemo(function () { return (initialValue == null ? "" : parseFloat(parseFloat(initialValue).toFixed(10)).toString()); }, [initialValue]);
|
|
3898
3911
|
var _b = useState(defaultValue), value = _b[0], setValue = _b[1];
|
|
@@ -3931,11 +3944,11 @@ var GridFormEditBearing = function (props) {
|
|
|
3931
3944
|
}).popoverWrapper;
|
|
3932
3945
|
return popoverWrapper(jsx("div", __assign({ className: "GridFormEditBearing-input Grid-popoverContainer" }, { children: jsx(TextInputFormatted, { value: defaultValue, onChange: function (e) {
|
|
3933
3946
|
setValue(e.target.value.trim());
|
|
3934
|
-
}, autoFocus: true, placeholder: props.placeHolder, formatted: bearingStringValidator(value, props.range) ? "?" :
|
|
3947
|
+
}, autoFocus: true, placeholder: props.placeHolder, formatted: bearingStringValidator(value, props.range) ? "?" : formatValue(bearingNumberParser(value)), error: bearingStringValidator(value, props.range), helpText: "Press enter or tab to save" }) })));
|
|
3935
3948
|
};
|
|
3936
3949
|
|
|
3937
3950
|
var GridPopoverEditBearingLike = function (colDef, props) {
|
|
3938
|
-
return GridCell(__assign({ initialWidth: 65, maxWidth: 150
|
|
3951
|
+
return GridCell(__assign({ initialWidth: 65, maxWidth: 150 }, colDef), __assign({ editor: GridFormEditBearing }, props));
|
|
3939
3952
|
};
|
|
3940
3953
|
var GridPopoverEditBearing = function (colDef, props) {
|
|
3941
3954
|
return GridPopoverEditBearingLike(__assign({ valueFormatter: bearingValueFormatter }, colDef), {
|