@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 CHANGED
@@ -2363,7 +2363,8 @@ var GridPopoverContext = react.createContext({
2363
2363
  selectedRows: [],
2364
2364
  updateValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
2365
2365
  return [2 /*return*/, false];
2366
- }); }); }
2366
+ }); }); },
2367
+ formatValue: function () { return "! No gridPopoverContextProvider !"; }
2367
2368
  });
2368
2369
  var useGridPopoverContext = function () {
2369
2370
  return react.useContext(GridPopoverContext);
@@ -2412,7 +2413,8 @@ var GridPopoverContextProvider = function (_a) {
2412
2413
  field: field,
2413
2414
  data: props.data,
2414
2415
  value: props.value,
2415
- updateValue: updateValue
2416
+ updateValue: updateValue,
2417
+ formatValue: props.formatValue
2416
2418
  } }, { children: children })));
2417
2419
  };
2418
2420
 
@@ -2854,13 +2856,9 @@ var GridRendererGenericCell = function (props) {
2854
2856
  var warningText = warningFn ? warningFn(props) : undefined;
2855
2857
  var infoFn = cellRendererParams === null || cellRendererParams === void 0 ? void 0 : cellRendererParams.info;
2856
2858
  var infoText = infoFn ? infoFn(props) : undefined;
2857
- var defaultFormatter = function (props) { return props.value; };
2858
- var formatter = (_a = colDef.valueFormatter) !== null && _a !== void 0 ? _a : defaultFormatter;
2859
- if (typeof formatter === "string") {
2860
- console.error("valueFormatter must be a function");
2861
- return jsxRuntime.jsx("span", { children: "valueFormatter must be a function" });
2862
- }
2863
- var formatted = formatter(props);
2859
+ var defaultFormatter = function (value) { return value; };
2860
+ var formatter = (_a = props.formatValue) !== null && _a !== void 0 ? _a : defaultFormatter;
2861
+ var formatted = formatter(props.value);
2864
2862
  return (jsxRuntime.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: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [typeof warningText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_warning", title: warningText }), typeof infoText === "string" && jsxRuntime.jsx(GridIcon, { icon: "ic_info", title: infoText }), jsxRuntime.jsx("span", __assign({ title: formatted }, { children: formatted }))] }) })));
2865
2863
  };
2866
2864
 
@@ -2894,7 +2892,7 @@ var GridCell = function (props, custom) {
2894
2892
  // Default value formatter, otherwise react freaks out on objects
2895
2893
  valueFormatter: function (params) {
2896
2894
  if (params.value == null)
2897
- return "-";
2895
+ return "";
2898
2896
  var types = ["number", "boolean", "string"];
2899
2897
  if (types.includes(typeof params.value))
2900
2898
  return "".concat(params.value);
@@ -3084,6 +3082,13 @@ function defer() {
3084
3082
  return deferred;
3085
3083
  }
3086
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 (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 }))] }));
3090
+ };
3091
+
3087
3092
  var MenuSeparatorString = "_____MENU_SEPARATOR_____";
3088
3093
  var MenuSeparator = Object.freeze({ value: MenuSeparatorString });
3089
3094
  var MenuHeaderString = "_____MENU_HEADER_____";
@@ -3094,6 +3099,7 @@ var fieldToString = function (field) {
3094
3099
  return typeof field == "symbol" ? field.toString() : "".concat(field);
3095
3100
  };
3096
3101
  var GridFormDropDown = function (props) {
3102
+ var stopEditing = react.useContext(GridContext).stopEditing;
3097
3103
  var _a = useGridPopoverContext(), selectedRows = _a.selectedRows, field = _a.field, updateValue = _a.updateValue, data = _a.data;
3098
3104
  // Save triggers during async action processing which triggers another selectItem(), this ref blocks that
3099
3105
  var _b = react.useState(""), filter = _b[0], setFilter = _b[1];
@@ -3140,22 +3146,27 @@ var GridFormDropDown = function (props) {
3140
3146
  }); }, [selectItemHandler, updateValue]);
3141
3147
  var selectFilterHandler = react.useCallback(function (value) { return __awaiter(void 0, void 0, void 0, function () {
3142
3148
  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)];
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
+ }
3159
3170
  });
3160
3171
  }); }, [props, updateValue]);
3161
3172
  // Load up options list if it's async function
@@ -3211,7 +3222,7 @@ var GridFormDropDown = function (props) {
3211
3222
  return undefined;
3212
3223
  }
3213
3224
  var str = option.label || "";
3214
- return str.toLowerCase().indexOf(filter) === -1 ? option.value : undefined;
3225
+ return str.toLowerCase().indexOf(filter.toLowerCase()) === -1 ? option.value : undefined;
3215
3226
  })
3216
3227
  .filter(function (r) { return r !== undefined; }));
3217
3228
  }
@@ -3232,56 +3243,65 @@ var GridFormDropDown = function (props) {
3232
3243
  * Saves are wrapped in updateValue and triggered by blur events
3233
3244
  */
3234
3245
  var save = react.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
3235
- var activeOptions;
3236
3246
  return __generator(this, function (_a) {
3237
3247
  switch (_a.label) {
3238
3248
  case 0:
3239
3249
  if (!options)
3240
3250
  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
3251
  // Handler for sub-selected value
3255
3252
  if (!selectedSubComponent)
3256
3253
  return [2 /*return*/, true];
3257
3254
  if (selectedSubComponent.subComponent && !subComponentIsValid.current)
3258
3255
  return [2 /*return*/, false];
3259
3256
  return [4 /*yield*/, selectItemHandler(selectedSubComponent.value, subSelectedValue)];
3260
- case 5:
3257
+ case 1:
3261
3258
  _a.sent();
3262
- _a.label = 6;
3263
- case 6: return [2 /*return*/, true];
3259
+ return [2 /*return*/, true];
3264
3260
  }
3265
3261
  });
3266
- }); }, [
3267
- filter,
3268
- filteredValues,
3269
- options,
3270
- props.onSelectFilter,
3271
- selectFilterHandler,
3272
- selectItemHandler,
3273
- selectedSubComponent,
3274
- subSelectedValue,
3275
- ]);
3262
+ }); }, [options, selectItemHandler, selectedSubComponent, subSelectedValue]);
3276
3263
  var popoverWrapper = useGridPopoverHook({
3277
3264
  className: props.className,
3278
3265
  invalid: function () { return !!(selectedSubComponent && !subComponentIsValid.current); },
3279
3266
  save: save
3280
3267
  }).popoverWrapper;
3268
+ var enterKeyPressedRef = react.useRef(false);
3269
+ var handleKeyDown = react.useCallback(function (e) {
3270
+ if (e.key === "Enter") {
3271
+ e.stopPropagation();
3272
+ e.preventDefault();
3273
+ enterKeyPressedRef.current = true;
3274
+ }
3275
+ }, []);
3276
+ var handleKeyUp = react.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]);
3281
3301
  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
3302
  var _b;
3283
3303
  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()); } }) })));
3304
+ 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
3305
  } })), 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
3306
  var _a;
3287
3307
  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 +3343,6 @@ var GridFormDropDown = function (props) {
3323
3343
  })] }) }))] }));
3324
3344
  };
3325
3345
 
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
3346
  function escapeStringRegexp(string) {
3334
3347
  if (typeof string !== 'string') {
3335
3348
  throw new TypeError('Expected a string');
@@ -3805,14 +3818,14 @@ var GridPopoverMenu = function (colDef, custom) {
3805
3818
  var bearingValueFormatter = function (params) {
3806
3819
  var value = typeof params.value == "string" ? parseFloat(params.value) : params.value;
3807
3820
  if (value == null) {
3808
- return "-";
3821
+ return "";
3809
3822
  }
3810
3823
  return convertDDToDMS(value, false, false);
3811
3824
  };
3812
3825
  var bearingCorrectionValueFormatter = function (params) {
3813
3826
  var value = params.value;
3814
3827
  if (value == null) {
3815
- return "-";
3828
+ return "";
3816
3829
  }
3817
3830
  if (typeof value === "string") {
3818
3831
  return convertDDToDMS(bearingNumberParser(value), true, true);
@@ -3894,7 +3907,7 @@ var TextInputFormatted = function (props) {
3894
3907
  };
3895
3908
 
3896
3909
  var GridFormEditBearing = function (props) {
3897
- var _a = useGridPopoverContext(), field = _a.field, initialValue = _a.value;
3910
+ var _a = useGridPopoverContext(), field = _a.field, initialValue = _a.value, formatValue = _a.formatValue;
3898
3911
  // This clears out any scientific precision
3899
3912
  var defaultValue = react.useMemo(function () { return (initialValue == null ? "" : parseFloat(parseFloat(initialValue).toFixed(10)).toString()); }, [initialValue]);
3900
3913
  var _b = react.useState(defaultValue), value = _b[0], setValue = _b[1];
@@ -3933,11 +3946,11 @@ var GridFormEditBearing = function (props) {
3933
3946
  }).popoverWrapper;
3934
3947
  return popoverWrapper(jsxRuntime.jsx("div", __assign({ className: "GridFormEditBearing-input Grid-popoverContainer" }, { children: jsxRuntime.jsx(TextInputFormatted, { value: defaultValue, onChange: function (e) {
3935
3948
  setValue(e.target.value.trim());
3936
- }, autoFocus: true, placeholder: props.placeHolder, formatted: bearingStringValidator(value, props.range) ? "?" : convertDDToDMS(bearingNumberParser(value)), error: bearingStringValidator(value, props.range), helpText: "Press enter or tab to save" }) })));
3949
+ }, 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" }) })));
3937
3950
  };
3938
3951
 
3939
3952
  var GridPopoverEditBearingLike = function (colDef, props) {
3940
- return GridCell(__assign({ initialWidth: 65, maxWidth: 150, valueFormatter: bearingValueFormatter }, colDef), __assign({ editor: GridFormEditBearing }, props));
3953
+ return GridCell(__assign({ initialWidth: 65, maxWidth: 150 }, colDef), __assign({ editor: GridFormEditBearing }, props));
3941
3954
  };
3942
3955
  var GridPopoverEditBearing = function (colDef, props) {
3943
3956
  return GridPopoverEditBearingLike(__assign({ valueFormatter: bearingValueFormatter }, colDef), {