@linzjs/step-ag-grid 7.0.2 → 7.0.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.js +67 -52
- package/dist/index.js.map +1 -1
- package/dist/src/components/gridForm/GridFormDropDown.d.ts +1 -0
- package/dist/step-ag-grid.esm.js +67 -52
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/gridForm/GridFormDropDown.tsx +51 -28
- package/src/stories/grid/GridPopoutEditDropDown.stories.tsx +5 -0
|
@@ -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[]);
|
package/dist/step-ag-grid.esm.js
CHANGED
|
@@ -3082,6 +3082,13 @@ function defer() {
|
|
|
3082
3082
|
return deferred;
|
|
3083
3083
|
}
|
|
3084
3084
|
|
|
3085
|
+
var css_248z$4 = ".helpText{color:#6b6966;font-size:.75rem;font-weight:400}";
|
|
3086
|
+
styleInject(css_248z$4);
|
|
3087
|
+
|
|
3088
|
+
var FormError = function (props) {
|
|
3089
|
+
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 }))] }));
|
|
3090
|
+
};
|
|
3091
|
+
|
|
3085
3092
|
var MenuSeparatorString = "_____MENU_SEPARATOR_____";
|
|
3086
3093
|
var MenuSeparator = Object.freeze({ value: MenuSeparatorString });
|
|
3087
3094
|
var MenuHeaderString = "_____MENU_HEADER_____";
|
|
@@ -3092,6 +3099,7 @@ var fieldToString = function (field) {
|
|
|
3092
3099
|
return typeof field == "symbol" ? field.toString() : "".concat(field);
|
|
3093
3100
|
};
|
|
3094
3101
|
var GridFormDropDown = function (props) {
|
|
3102
|
+
var stopEditing = useContext(GridContext).stopEditing;
|
|
3095
3103
|
var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, field = _a.field, updateValue = _a.updateValue, data = _a.data;
|
|
3096
3104
|
// Save triggers during async action processing which triggers another selectItem(), this ref blocks that
|
|
3097
3105
|
var _b = useState(""), filter = _b[0], setFilter = _b[1];
|
|
@@ -3138,22 +3146,27 @@ var GridFormDropDown = function (props) {
|
|
|
3138
3146
|
}); }, [selectItemHandler, updateValue]);
|
|
3139
3147
|
var selectFilterHandler = useCallback(function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3140
3148
|
return __generator(this, function (_a) {
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3149
|
+
switch (_a.label) {
|
|
3150
|
+
case 0: return [4 /*yield*/, updateValue(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3151
|
+
var _a;
|
|
3152
|
+
return __generator(this, function (_b) {
|
|
3153
|
+
switch (_b.label) {
|
|
3154
|
+
case 0:
|
|
3155
|
+
_a = props.onSelectFilter;
|
|
3156
|
+
if (!_a) return [3 /*break*/, 2];
|
|
3157
|
+
return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
|
|
3158
|
+
case 1:
|
|
3159
|
+
_a = (_b.sent());
|
|
3160
|
+
_b.label = 2;
|
|
3161
|
+
case 2:
|
|
3162
|
+
return [2 /*return*/, true];
|
|
3163
|
+
}
|
|
3164
|
+
});
|
|
3165
|
+
}); }, 0)];
|
|
3166
|
+
case 1:
|
|
3167
|
+
_a.sent();
|
|
3168
|
+
return [2 /*return*/];
|
|
3169
|
+
}
|
|
3157
3170
|
});
|
|
3158
3171
|
}); }, [props, updateValue]);
|
|
3159
3172
|
// Load up options list if it's async function
|
|
@@ -3209,7 +3222,7 @@ var GridFormDropDown = function (props) {
|
|
|
3209
3222
|
return undefined;
|
|
3210
3223
|
}
|
|
3211
3224
|
var str = option.label || "";
|
|
3212
|
-
return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;
|
|
3225
|
+
return str.toLowerCase().indexOf(filter.toLowerCase()) === -1 ? option.value : undefined;
|
|
3213
3226
|
})
|
|
3214
3227
|
.filter(function (r) { return r !== undefined; }));
|
|
3215
3228
|
}
|
|
@@ -3230,56 +3243,65 @@ var GridFormDropDown = function (props) {
|
|
|
3230
3243
|
* Saves are wrapped in updateValue and triggered by blur events
|
|
3231
3244
|
*/
|
|
3232
3245
|
var save = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3233
|
-
var activeOptions;
|
|
3234
3246
|
return __generator(this, function (_a) {
|
|
3235
3247
|
switch (_a.label) {
|
|
3236
3248
|
case 0:
|
|
3237
3249
|
if (!options)
|
|
3238
3250
|
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
3251
|
// Handler for sub-selected value
|
|
3253
3252
|
if (!selectedSubComponent)
|
|
3254
3253
|
return [2 /*return*/, true];
|
|
3255
3254
|
if (selectedSubComponent.subComponent && !subComponentIsValid.current)
|
|
3256
3255
|
return [2 /*return*/, false];
|
|
3257
3256
|
return [4 /*yield*/, selectItemHandler(selectedSubComponent.value, subSelectedValue)];
|
|
3258
|
-
case
|
|
3257
|
+
case 1:
|
|
3259
3258
|
_a.sent();
|
|
3260
|
-
|
|
3261
|
-
case 6: return [2 /*return*/, true];
|
|
3259
|
+
return [2 /*return*/, true];
|
|
3262
3260
|
}
|
|
3263
3261
|
});
|
|
3264
|
-
}); }, [
|
|
3265
|
-
filter,
|
|
3266
|
-
filteredValues,
|
|
3267
|
-
options,
|
|
3268
|
-
props.onSelectFilter,
|
|
3269
|
-
selectFilterHandler,
|
|
3270
|
-
selectItemHandler,
|
|
3271
|
-
selectedSubComponent,
|
|
3272
|
-
subSelectedValue,
|
|
3273
|
-
]);
|
|
3262
|
+
}); }, [options, selectItemHandler, selectedSubComponent, subSelectedValue]);
|
|
3274
3263
|
var popoverWrapper = useGridPopoverHook({
|
|
3275
3264
|
className: props.className,
|
|
3276
3265
|
invalid: function () { return !!(selectedSubComponent && !subComponentIsValid.current); },
|
|
3277
3266
|
save: save
|
|
3278
3267
|
}).popoverWrapper;
|
|
3268
|
+
var enterKeyPressedRef = useRef(false);
|
|
3269
|
+
var handleKeyDown = useCallback(function (e) {
|
|
3270
|
+
if (e.key === "Enter") {
|
|
3271
|
+
e.stopPropagation();
|
|
3272
|
+
e.preventDefault();
|
|
3273
|
+
enterKeyPressedRef.current = true;
|
|
3274
|
+
}
|
|
3275
|
+
}, []);
|
|
3276
|
+
var handleKeyUp = useCallback(function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
3277
|
+
var _a;
|
|
3278
|
+
return __generator(this, function (_b) {
|
|
3279
|
+
switch (_b.label) {
|
|
3280
|
+
case 0:
|
|
3281
|
+
if (!options)
|
|
3282
|
+
return [2 /*return*/];
|
|
3283
|
+
if (!(e.key === "Enter")) return [3 /*break*/, 3];
|
|
3284
|
+
e.stopPropagation();
|
|
3285
|
+
e.preventDefault();
|
|
3286
|
+
if (!enterKeyPressedRef.current)
|
|
3287
|
+
return [2 /*return*/];
|
|
3288
|
+
_a = props.onSelectFilter;
|
|
3289
|
+
if (!_a) return [3 /*break*/, 2];
|
|
3290
|
+
return [4 /*yield*/, selectFilterHandler(filter)];
|
|
3291
|
+
case 1:
|
|
3292
|
+
_a = (_b.sent());
|
|
3293
|
+
_b.label = 2;
|
|
3294
|
+
case 2:
|
|
3295
|
+
stopEditing();
|
|
3296
|
+
_b.label = 3;
|
|
3297
|
+
case 3: return [2 /*return*/];
|
|
3298
|
+
}
|
|
3299
|
+
});
|
|
3300
|
+
}); }, [filter, options, props.onSelectFilter, selectFilterHandler, stopEditing]);
|
|
3279
3301
|
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
3302
|
var _b;
|
|
3281
3303
|
var ref = _a.ref;
|
|
3282
|
-
return (
|
|
3304
|
+
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
3305
|
} })), 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
3306
|
var _a;
|
|
3285
3307
|
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 +3343,6 @@ var GridFormDropDown = function (props) {
|
|
|
3321
3343
|
})] }) }))] }));
|
|
3322
3344
|
};
|
|
3323
3345
|
|
|
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
3346
|
function escapeStringRegexp(string) {
|
|
3332
3347
|
if (typeof string !== 'string') {
|
|
3333
3348
|
throw new TypeError('Expected a string');
|