@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.
@@ -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[]);
@@ -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
- return [2 /*return*/, updateValue(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3142
- var _a;
3143
- return __generator(this, function (_b) {
3144
- switch (_b.label) {
3145
- case 0:
3146
- _a = props.onSelectFilter;
3147
- if (!_a) return [3 /*break*/, 2];
3148
- return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
3149
- case 1:
3150
- _a = (_b.sent());
3151
- _b.label = 2;
3152
- case 2:
3153
- return [2 /*return*/, true];
3154
- }
3155
- });
3156
- }); }, 0)];
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 5:
3257
+ case 1:
3259
3258
  _a.sent();
3260
- _a.label = 6;
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 (jsx("div", __assign({ style: { display: "flex", 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, onChange: function (e) { return setFilter(e.target.value.toLowerCase()); } }) })));
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');