@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 +80 -67
- package/dist/index.js.map +1 -1
- package/dist/src/components/gridForm/GridFormDropDown.d.ts +1 -0
- package/dist/src/contexts/GridPopoverContext.d.ts +1 -7
- package/dist/step-ag-grid.esm.js +80 -67
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/GridCell.tsx +1 -1
- package/src/components/gridForm/GridFormDropDown.tsx +51 -28
- package/src/components/gridForm/GridFormEditBearing.tsx +3 -3
- package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +0 -1
- package/src/components/gridRender/GridRenderGenericCell.tsx +3 -8
- package/src/contexts/GridPopoverContext.tsx +2 -8
- package/src/contexts/GridPopoverContextProvider.tsx +1 -0
- package/src/stories/grid/GridPopoutBearing.stories.tsx +15 -15
- package/src/stories/grid/GridPopoutEditDropDown.stories.tsx +5 -0
- package/src/utils/bearing.ts +2 -2
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 (
|
|
2858
|
-
var formatter = (_a =
|
|
2859
|
-
|
|
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
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
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
|
|
3257
|
+
case 1:
|
|
3261
3258
|
_a.sent();
|
|
3262
|
-
|
|
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.
|
|
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) ? "?" :
|
|
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
|
|
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), {
|