@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.
@@ -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>;
@@ -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 (props) { return props.value; };
2856
- var formatter = (_a = colDef.valueFormatter) !== null && _a !== void 0 ? _a : defaultFormatter;
2857
- if (typeof formatter === "string") {
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
- 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)];
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 5:
3255
+ case 1:
3259
3256
  _a.sent();
3260
- _a.label = 6;
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 (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()); } }) })));
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) ? "?" : convertDDToDMS(bearingNumberParser(value)), error: bearingStringValidator(value, props.range), helpText: "Press enter or tab to save" }) })));
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, valueFormatter: bearingValueFormatter }, colDef), __assign({ editor: GridFormEditBearing }, props));
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), {