mig-schema-table 3.0.33 → 3.0.35
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/SchemaTable/SchemaColumnFilterPopover/FilterFormComponent/index.d.ts +3 -1
- package/dist/SchemaTable/SchemaColumnFilterPopover/FilterFormComponent/index.js +8 -3
- package/dist/SchemaTable/SchemaColumnFilterPopover/index.d.ts +3 -1
- package/dist/SchemaTable/SchemaColumnFilterPopover/index.js +2 -2
- package/dist/SchemaTable/Th/index.js +8 -1
- package/dist/SchemaTable/index.js +19 -7
- package/dist/inc/string.d.ts +3 -0
- package/dist/inc/string.js +3 -0
- package/dist/types.d.ts +3 -0
- package/package.json +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { oas31 } from "openapi3-ts";
|
|
3
3
|
import { TColumnFilterValue } from "../../index";
|
|
4
|
+
import { IColumnConfig } from "../../../types";
|
|
4
5
|
interface IFilterFormComponentProps {
|
|
5
6
|
onChange: (newValue?: TColumnFilterValue) => void;
|
|
6
7
|
propSchema: oas31.SchemaObject;
|
|
7
8
|
propName: string;
|
|
8
9
|
columnFilterValue: TColumnFilterValue;
|
|
10
|
+
propConfig?: IColumnConfig<any>;
|
|
9
11
|
}
|
|
10
|
-
declare const _default: React.MemoExoticComponent<({ onChange, propSchema, propName, columnFilterValue, }: IFilterFormComponentProps) => import("react/jsx-runtime").JSX.Element>;
|
|
12
|
+
declare const _default: React.MemoExoticComponent<({ onChange, propSchema, propName, propConfig, columnFilterValue, }: IFilterFormComponentProps) => import("react/jsx-runtime").JSX.Element>;
|
|
11
13
|
export default _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { t } from "../../../inc/string";
|
|
4
4
|
import { DEFAULT_DATE_FORMAT, DEFAULT_DATE_TIME_FORMAT, } from "../../../inc/constant";
|
|
5
5
|
import DatePicker from "react-datepicker";
|
|
6
6
|
import nl from "date-fns/locale/nl";
|
|
7
|
-
const FilterFormComponent = ({ onChange, propSchema, propName, columnFilterValue, }) => {
|
|
7
|
+
const FilterFormComponent = ({ onChange, propSchema, propName, propConfig, columnFilterValue, }) => {
|
|
8
8
|
const { type, format, minimum, maximum } = propSchema;
|
|
9
9
|
const value = columnFilterValue;
|
|
10
10
|
switch (type) {
|
|
@@ -36,7 +36,12 @@ const FilterFormComponent = ({ onChange, propSchema, propName, columnFilterValue
|
|
|
36
36
|
if (propSchema.enum) {
|
|
37
37
|
return (_jsxs("select", Object.assign({ className: "form-select", value: value, "data-prop-name": propName, onChange: (e) => {
|
|
38
38
|
onChange(e.currentTarget.value || undefined);
|
|
39
|
-
} }, { children: [_jsx("option", Object.assign({ value: "" }, { children: "All" }), "all"), propSchema.enum.map((name) =>
|
|
39
|
+
} }, { children: [_jsx("option", Object.assign({ value: "" }, { children: "All" }), "all"), propSchema.enum.map((name) => {
|
|
40
|
+
const rowName = !(propConfig === null || propConfig === void 0 ? void 0 : propConfig.translation)
|
|
41
|
+
? name
|
|
42
|
+
: t(name, propConfig.translation);
|
|
43
|
+
return (_jsx("option", Object.assign({ value: rowName }, { children: rowName }), `column-filter-select-${rowName}`));
|
|
44
|
+
})] })));
|
|
40
45
|
}
|
|
41
46
|
if (format === "date-time" || format === "date") {
|
|
42
47
|
const dateFormat = format === "date" ? DEFAULT_DATE_FORMAT : DEFAULT_DATE_TIME_FORMAT;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { oas31 } from "openapi3-ts";
|
|
3
3
|
import { TColumnFilterValue } from "../index";
|
|
4
|
+
import { IColumnConfig } from "../../types";
|
|
4
5
|
export interface ISchemaColumnFilterPopoverConfig {
|
|
5
6
|
referenceElement: HTMLElement;
|
|
6
7
|
propName: string;
|
|
8
|
+
propConfig?: IColumnConfig<any>;
|
|
7
9
|
}
|
|
8
10
|
type TSchemaColumnFilterPopoverProps = ISchemaColumnFilterPopoverConfig & {
|
|
9
11
|
onChange: (newValue?: TColumnFilterValue) => void;
|
|
@@ -11,5 +13,5 @@ type TSchemaColumnFilterPopoverProps = ISchemaColumnFilterPopoverConfig & {
|
|
|
11
13
|
value: TColumnFilterValue;
|
|
12
14
|
onClose: () => void;
|
|
13
15
|
};
|
|
14
|
-
declare const _default: React.MemoExoticComponent<({ onChange, onClose, propName, propSchema, referenceElement, value, }: TSchemaColumnFilterPopoverProps) => import("react/jsx-runtime").JSX.Element>;
|
|
16
|
+
declare const _default: React.MemoExoticComponent<({ onChange, onClose, propName, propSchema, referenceElement, value, propConfig, }: TSchemaColumnFilterPopoverProps) => import("react/jsx-runtime").JSX.Element>;
|
|
15
17
|
export default _default;
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import FilterFormComponent from "./FilterFormComponent";
|
|
4
4
|
import { usePopper } from "react-popper";
|
|
5
|
-
const SchemaColumnFilterPopover = ({ onChange, onClose, propName, propSchema, referenceElement, value, }) => {
|
|
5
|
+
const SchemaColumnFilterPopover = ({ onChange, onClose, propName, propSchema, referenceElement, value, propConfig, }) => {
|
|
6
6
|
const [popperElement, setPopperElement] = React.useState(null);
|
|
7
7
|
const [arrowElement, setArrowElement] = React.useState(null);
|
|
8
8
|
const { styles, attributes } = usePopper(referenceElement, popperElement, {
|
|
@@ -32,6 +32,6 @@ const SchemaColumnFilterPopover = ({ onChange, onClose, propName, propSchema, re
|
|
|
32
32
|
if (attributes.popper) {
|
|
33
33
|
classNames.push(`bs-popover-${attributes.popper["data-popper-placement"]}`);
|
|
34
34
|
}
|
|
35
|
-
return (_jsxs("div", Object.assign({ className: classNames.join(" "), role: "tooltip", ref: setPopperElement, style: styles.popper }, attributes.popper, { children: [_jsx("div", { className: "popover-arrow", ref: setArrowElement, style: styles.arrow }), _jsx("div", Object.assign({ className: "popover-body" }, { children: _jsx(FilterFormComponent, { onChange: onChange, propSchema: propSchema, propName: propName, columnFilterValue: value }) }))] })));
|
|
35
|
+
return (_jsxs("div", Object.assign({ className: classNames.join(" "), role: "tooltip", ref: setPopperElement, style: styles.popper }, attributes.popper, { children: [_jsx("div", { className: "popover-arrow", ref: setArrowElement, style: styles.arrow }), _jsx("div", Object.assign({ className: "popover-body" }, { children: _jsx(FilterFormComponent, { onChange: onChange, propSchema: propSchema, propName: propName, columnFilterValue: value, propConfig: propConfig }) }))] })));
|
|
36
36
|
};
|
|
37
37
|
export default React.memo(SchemaColumnFilterPopover);
|
|
@@ -44,9 +44,16 @@ const Th = ({ isAllChecked, columnFilterStatus, disableColumnFilter, isSortable,
|
|
|
44
44
|
return {
|
|
45
45
|
referenceElement,
|
|
46
46
|
propName,
|
|
47
|
+
propConfig,
|
|
47
48
|
};
|
|
48
49
|
});
|
|
49
|
-
}, [
|
|
50
|
+
}, [
|
|
51
|
+
columnFilterStatus,
|
|
52
|
+
disableColumnFilter,
|
|
53
|
+
propConfig,
|
|
54
|
+
propName,
|
|
55
|
+
setPopoverConfig,
|
|
56
|
+
]);
|
|
50
57
|
if (propName === SELECT_ALL_COLUMN_NAME) {
|
|
51
58
|
return (_jsx("div", Object.assign({}, thDivProps, { children: _jsx("div", Object.assign({ style: {
|
|
52
59
|
width: "100%",
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { VariableSizeGrid, VariableSizeList } from "react-window";
|
|
4
4
|
import { localeFormat } from "../inc/date";
|
|
5
|
-
import { uncamel } from "../inc/string";
|
|
5
|
+
import { t, uncamel } from "../inc/string";
|
|
6
6
|
import Th, { EColumnFilterStatus } from "./Th";
|
|
7
7
|
import { SELECT_ALL_COLUMN_NAME, SELECT_ALL_COLUMN_WIDTH } from "./constants";
|
|
8
8
|
import Td from "./Td";
|
|
@@ -66,7 +66,10 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
|
|
|
66
66
|
prev[propName] = "?";
|
|
67
67
|
return prev;
|
|
68
68
|
}
|
|
69
|
-
const
|
|
69
|
+
const val = object[propName];
|
|
70
|
+
const rawValue = !(propConfig === null || propConfig === void 0 ? void 0 : propConfig.translation)
|
|
71
|
+
? val
|
|
72
|
+
: t(val, propConfig.translation);
|
|
70
73
|
switch (schema.type) {
|
|
71
74
|
case "array":
|
|
72
75
|
prev[propName] =
|
|
@@ -229,22 +232,31 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
|
|
|
229
232
|
});
|
|
230
233
|
}
|
|
231
234
|
return filteredRenderData.sort((a, b) => {
|
|
235
|
+
var _a;
|
|
236
|
+
const isDate = sortSchema && ((_a = sortSchema.format) === null || _a === void 0 ? void 0 : _a.startsWith("date"));
|
|
232
237
|
const sortByValue = (propConfig === null || propConfig === void 0 ? void 0 : propConfig.sortByValue) === undefined
|
|
233
238
|
? !sortSchema ||
|
|
239
|
+
isDate ||
|
|
234
240
|
sortSchema.type === "boolean" ||
|
|
235
241
|
sortSchema.type === "integer" ||
|
|
236
|
-
sortSchema.format === "date" ||
|
|
237
|
-
sortSchema.format === "date-time" ||
|
|
238
242
|
(propConfig === null || propConfig === void 0 ? void 0 : propConfig.renderCell)
|
|
239
243
|
: propConfig.sortByValue;
|
|
240
|
-
|
|
244
|
+
let x = sortByValue && data[a._index]
|
|
241
245
|
? // @ts-ignore
|
|
242
246
|
data[a._index][sortColumn]
|
|
243
247
|
: a[sortColumn].toLowerCase();
|
|
244
|
-
|
|
248
|
+
let y = sortByValue && data[b._index]
|
|
245
249
|
? // @ts-ignore
|
|
246
250
|
data[b._index][sortColumn]
|
|
247
251
|
: b[sortColumn].toLowerCase();
|
|
252
|
+
if (sortByValue && isDate) {
|
|
253
|
+
if (x && typeof x === "string") {
|
|
254
|
+
x = new Date(x);
|
|
255
|
+
}
|
|
256
|
+
if (y && typeof y === "string") {
|
|
257
|
+
y = new Date(y);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
248
260
|
if (x === y) {
|
|
249
261
|
return 0;
|
|
250
262
|
}
|
|
@@ -339,6 +351,6 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
|
|
|
339
351
|
}
|
|
340
352
|
setColumnFilterMap((columnFilterMap) => (Object.assign(Object.assign({}, columnFilterMap), { [popoverConfig.propName]: newColumnFilterValue })));
|
|
341
353
|
}, [disableColumnFilter, popoverConfig]);
|
|
342
|
-
return (_jsxs("div", Object.assign({ className: `schema-table${onRowClick ? " schema-table--clickable-rows" : ""}`, style: Object.assign(Object.assign({}, style), { width: rowWidth }), role: "table" }, { children: [_jsxs("div", Object.assign({ className: "schema-table__action-container" }, { children: [_jsx("div", Object.assign({ style: { flex: 1 } }, { children: isSearchable ? (_jsx("input", { type: "text", placeholder: searchPlaceholder || "Search...", value: searchQuery, onChange: onSearchChange, autoFocus: true })) : null })), customElement] })), _jsx(Heading, Object.assign({ height: 50, itemCount: columnCount, itemSize: getColumnWidth, layout: "horizontal", width: rowWidth, sortAsc: sortAsc, setSortAsc: setSortAsc, setSortColumn: setSortColumn, sortColumn: sortColumn, sortedRenderData: sortedRenderData, className: "schema-table__th-row" }, { children: SchemaTableTh }), `thead_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}`), _jsx(VariableSizeGrid, Object.assign({ className: "schema-table__tbody", height: tableBodyHeight, width: rowWidth, columnWidth: getColumnWidth, rowHeight: getRowHeight, columnCount: columnCount, rowCount: rowCount }, { children: SchemaTableTd }), `tbody_${tableBodyHeight}_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}_${columnCount}`), popoverConfig ? (_jsx(SchemaColumnFilterPopover, { referenceElement: popoverConfig.referenceElement, onClose: onPopoverClose, onChange: onSchemaColumnFilterChange, propName: popoverConfig.propName, propSchema: schema.properties[popoverConfig.propName], value: columnFilterMap[popoverConfig.propName] })) : null] })));
|
|
354
|
+
return (_jsxs("div", Object.assign({ className: `schema-table${onRowClick ? " schema-table--clickable-rows" : ""}`, style: Object.assign(Object.assign({}, style), { width: rowWidth }), role: "table" }, { children: [_jsxs("div", Object.assign({ className: "schema-table__action-container" }, { children: [_jsx("div", Object.assign({ style: { flex: 1 } }, { children: isSearchable ? (_jsx("input", { type: "text", placeholder: searchPlaceholder || "Search...", value: searchQuery, onChange: onSearchChange, autoFocus: true })) : null })), customElement] })), _jsx(Heading, Object.assign({ height: 50, itemCount: columnCount, itemSize: getColumnWidth, layout: "horizontal", width: rowWidth, sortAsc: sortAsc, setSortAsc: setSortAsc, setSortColumn: setSortColumn, sortColumn: sortColumn, sortedRenderData: sortedRenderData, className: "schema-table__th-row" }, { children: SchemaTableTh }), `thead_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}`), _jsx(VariableSizeGrid, Object.assign({ className: "schema-table__tbody", height: tableBodyHeight, width: rowWidth, columnWidth: getColumnWidth, rowHeight: getRowHeight, columnCount: columnCount, rowCount: rowCount }, { children: SchemaTableTd }), `tbody_${tableBodyHeight}_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}_${columnCount}`), popoverConfig ? (_jsx(SchemaColumnFilterPopover, { referenceElement: popoverConfig.referenceElement, onClose: onPopoverClose, onChange: onSchemaColumnFilterChange, propName: popoverConfig.propName, propSchema: schema.properties[popoverConfig.propName], value: columnFilterMap[popoverConfig.propName], propConfig: popoverConfig.propConfig })) : null] })));
|
|
343
355
|
}
|
|
344
356
|
export default React.memo(SchemaTable);
|
package/dist/inc/string.d.ts
CHANGED
package/dist/inc/string.js
CHANGED
package/dist/types.d.ts
CHANGED