@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 CHANGED
@@ -3084,6 +3084,13 @@ function defer() {
3084
3084
  return deferred;
3085
3085
  }
3086
3086
 
3087
+ var css_248z$4 = ".helpText{color:#6b6966;font-size:.75rem;font-weight:400}";
3088
+ styleInject(css_248z$4);
3089
+
3090
+ var FormError = function (props) {
3091
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.error && (jsxRuntime.jsx("span", __assign({ className: "LuiTextInput-error", style: { paddingLeft: 0 } }, { children: props.error }))), props.helpText && !props.error && jsxRuntime.jsx("span", __assign({ className: "helpText" }, { children: props.helpText }))] }));
3092
+ };
3093
+
3087
3094
  var MenuSeparatorString = "_____MENU_SEPARATOR_____";
3088
3095
  var MenuSeparator = Object.freeze({ value: MenuSeparatorString });
3089
3096
  var MenuHeaderString = "_____MENU_HEADER_____";
@@ -3094,6 +3101,7 @@ var fieldToString = function (field) {
3094
3101
  return typeof field == "symbol" ? field.toString() : "".concat(field);
3095
3102
  };
3096
3103
  var GridFormDropDown = function (props) {
3104
+ var stopEditing = react.useContext(GridContext).stopEditing;
3097
3105
  var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, field = _a.field, updateValue = _a.updateValue, data = _a.data;
3098
3106
  // Save triggers during async action processing which triggers another selectItem(), this ref blocks that
3099
3107
  var _b = react.useState(""), filter = _b[0], setFilter = _b[1];
@@ -3140,22 +3148,27 @@ var GridFormDropDown = function (props) {
3140
3148
  }); }, [selectItemHandler, updateValue]);
3141
3149
  var selectFilterHandler = react.useCallback(function (value) { return __awaiter(void 0, void 0, void 0, function () {
3142
3150
  return __generator(this, function (_a) {
3143
- return [2 /*return*/, updateValue(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3144
- var _a;
3145
- return __generator(this, function (_b) {
3146
- switch (_b.label) {
3147
- case 0:
3148
- _a = props.onSelectFilter;
3149
- if (!_a) return [3 /*break*/, 2];
3150
- return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
3151
- case 1:
3152
- _a = (_b.sent());
3153
- _b.label = 2;
3154
- case 2:
3155
- return [2 /*return*/, true];
3156
- }
3157
- });
3158
- }); }, 0)];
3151
+ switch (_a.label) {
3152
+ case 0: return [4 /*yield*/, updateValue(function (selectedRows) { return __awaiter(void 0, void 0, void 0, function () {
3153
+ var _a;
3154
+ return __generator(this, function (_b) {
3155
+ switch (_b.label) {
3156
+ case 0:
3157
+ _a = props.onSelectFilter;
3158
+ if (!_a) return [3 /*break*/, 2];
3159
+ return [4 /*yield*/, props.onSelectFilter({ selectedRows: selectedRows, value: value })];
3160
+ case 1:
3161
+ _a = (_b.sent());
3162
+ _b.label = 2;
3163
+ case 2:
3164
+ return [2 /*return*/, true];
3165
+ }
3166
+ });
3167
+ }); }, 0)];
3168
+ case 1:
3169
+ _a.sent();
3170
+ return [2 /*return*/];
3171
+ }
3159
3172
  });
3160
3173
  }); }, [props, updateValue]);
3161
3174
  // Load up options list if it's async function
@@ -3211,7 +3224,7 @@ var GridFormDropDown = function (props) {
3211
3224
  return undefined;
3212
3225
  }
3213
3226
  var str = option.label || "";
3214
- return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;
3227
+ return str.toLowerCase().indexOf(filter.toLowerCase()) === -1 ? option.value : undefined;
3215
3228
  })
3216
3229
  .filter(function (r) { return r !== undefined; }));
3217
3230
  }
@@ -3232,56 +3245,65 @@ var GridFormDropDown = function (props) {
3232
3245
  * Saves are wrapped in updateValue and triggered by blur events
3233
3246
  */
3234
3247
  var save = react.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
3235
- var activeOptions;
3236
3248
  return __generator(this, function (_a) {
3237
3249
  switch (_a.label) {
3238
3250
  case 0:
3239
3251
  if (!options)
3240
3252
  return [2 /*return*/, true];
3241
- activeOptions = options.filter(function (option) { return !filteredValues.includes(option.value); });
3242
- if (!(activeOptions.length === 1)) return [3 /*break*/, 2];
3243
- return [4 /*yield*/, selectItemHandler(activeOptions[0].value)];
3244
- case 1:
3245
- _a.sent();
3246
- return [3 /*break*/, 6];
3247
- case 2:
3248
- if (!(activeOptions.length === 0 && props.onSelectFilter)) return [3 /*break*/, 4];
3249
- return [4 /*yield*/, selectFilterHandler(filter)];
3250
- case 3:
3251
- _a.sent();
3252
- return [3 /*break*/, 6];
3253
- case 4:
3254
3253
  // Handler for sub-selected value
3255
3254
  if (!selectedSubComponent)
3256
3255
  return [2 /*return*/, true];
3257
3256
  if (selectedSubComponent.subComponent && !subComponentIsValid.current)
3258
3257
  return [2 /*return*/, false];
3259
3258
  return [4 /*yield*/, selectItemHandler(selectedSubComponent.value, subSelectedValue)];
3260
- case 5:
3259
+ case 1:
3261
3260
  _a.sent();
3262
- _a.label = 6;
3263
- case 6: return [2 /*return*/, true];
3261
+ return [2 /*return*/, true];
3264
3262
  }
3265
3263
  });
3266
- }); }, [
3267
- filter,
3268
- filteredValues,
3269
- options,
3270
- props.onSelectFilter,
3271
- selectFilterHandler,
3272
- selectItemHandler,
3273
- selectedSubComponent,
3274
- subSelectedValue,
3275
- ]);
3264
+ }); }, [options, selectItemHandler, selectedSubComponent, subSelectedValue]);
3276
3265
  var popoverWrapper = useGridPopoverHook({
3277
3266
  className: props.className,
3278
3267
  invalid: function () { return !!(selectedSubComponent && !subComponentIsValid.current); },
3279
3268
  save: save
3280
3269
  }).popoverWrapper;
3270
+ var enterKeyPressedRef = react.useRef(false);
3271
+ var handleKeyDown = react.useCallback(function (e) {
3272
+ if (e.key === "Enter") {
3273
+ e.stopPropagation();
3274
+ e.preventDefault();
3275
+ enterKeyPressedRef.current = true;
3276
+ }
3277
+ }, []);
3278
+ var handleKeyUp = react.useCallback(function (e) { return __awaiter(void 0, void 0, void 0, function () {
3279
+ var _a;
3280
+ return __generator(this, function (_b) {
3281
+ switch (_b.label) {
3282
+ case 0:
3283
+ if (!options)
3284
+ return [2 /*return*/];
3285
+ if (!(e.key === "Enter")) return [3 /*break*/, 3];
3286
+ e.stopPropagation();
3287
+ e.preventDefault();
3288
+ if (!enterKeyPressedRef.current)
3289
+ return [2 /*return*/];
3290
+ _a = props.onSelectFilter;
3291
+ if (!_a) return [3 /*break*/, 2];
3292
+ return [4 /*yield*/, selectFilterHandler(filter)];
3293
+ case 1:
3294
+ _a = (_b.sent());
3295
+ _b.label = 2;
3296
+ case 2:
3297
+ stopEditing();
3298
+ _b.label = 3;
3299
+ case 3: return [2 /*return*/];
3300
+ }
3301
+ });
3302
+ }); }, [filter, options, props.onSelectFilter, selectFilterHandler, stopEditing]);
3281
3303
  return popoverWrapper(jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.filtered && (jsxRuntime.jsxs("div", __assign({ className: "GridFormDropDown-filter" }, { children: [jsxRuntime.jsx(FocusableItem, __assign({ className: "filter-item" }, { children: function (_a) {
3282
3304
  var _b;
3283
3305
  var ref = _a.ref;
3284
- return (jsxRuntime.jsx("div", __assign({ style: { display: "flex", width: "100%" } }, { children: jsxRuntime.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()); } }) })));
3306
+ return (jsxRuntime.jsxs("div", __assign({ style: { display: "flex", flexDirection: "column", width: "100%" } }, { children: [jsxRuntime.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) && (jsxRuntime.jsx(FormError, { error: null, helpText: props.filterHelpText }))] })));
3285
3307
  } })), jsxRuntime.jsx(MenuDivider, {}, "$$divider_filter")] }))), jsxRuntime.jsx(ComponentLoadingWrapper, __assign({ loading: !options, className: "GridFormDropDown-options" }, { children: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [options && options.length == (filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.length) && (jsxRuntime.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) {
3286
3308
  var _a;
3287
3309
  return item.value === MenuSeparatorString ? (jsxRuntime.jsx(MenuDivider, {}, "$$divider_".concat(index))) : item.value === MenuHeaderString ? (jsxRuntime.jsx(MenuHeader, { children: item.label }, "$$header_".concat(index))) : filteredValues.includes(item.value) ? null : (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs(MenuItem, __assign({ disabled: !!item.disabled, title: item.disabled && typeof item.disabled !== "boolean" ? item.disabled : "", value: item.value, onClick: function (e) {
@@ -3323,13 +3345,6 @@ var GridFormDropDown = function (props) {
3323
3345
  })] }) }))] }));
3324
3346
  };
3325
3347
 
3326
- var css_248z$4 = ".helpText{color:#6b6966;font-size:.75rem;font-weight:400}";
3327
- styleInject(css_248z$4);
3328
-
3329
- var FormError = function (props) {
3330
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [props.error && (jsxRuntime.jsx("span", __assign({ className: "LuiTextInput-error", style: { paddingLeft: 0 } }, { children: props.error }))), props.helpText && !props.error && jsxRuntime.jsx("span", __assign({ className: "helpText" }, { children: props.helpText }))] }));
3331
- };
3332
-
3333
3348
  function escapeStringRegexp(string) {
3334
3349
  if (typeof string !== 'string') {
3335
3350
  throw new TypeError('Expected a string');