@uxf/data-grid 10.0.0-beta.21 → 10.0.0-beta.23
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/data-grid.js
CHANGED
|
@@ -121,7 +121,7 @@ const DataGrid = (props) => {
|
|
|
121
121
|
react_1.default.createElement(Container, { noBorder: props.noBorder, className: props.className },
|
|
122
122
|
react_1.default.createElement(Toolbar, { noBorder: props.noBorder },
|
|
123
123
|
react_1.default.createElement(ToolbarTabs, { activeTab: state.request.tab, onChange: (tab) => dispatch(actions_1.dataGridActions.changeTab(tab)), schema: props.schema }),
|
|
124
|
-
react_1.default.createElement(ToolbarControl, { gridName: props.gridName, dispatch: dispatch, filterHandlers: props.ui.FilterHandlers, noBorder: props.noBorder, schema: props.schema,
|
|
124
|
+
react_1.default.createElement(ToolbarControl, { gridName: props.gridName, dispatch: dispatch, filterHandlers: props.ui.FilterHandlers, noBorder: props.noBorder, schema: props.schema, onFulltextChange: (value) => dispatch(actions_1.dataGridActions.search(value)), showFulltext: props.schema.fullText, hiddenColumns: props.hiddenColumns, onChangeHiddenColumns: props.onChangeHiddenColumns, onCsvDownload: props.onCsvDownload, state: state }),
|
|
125
125
|
react_1.default.createElement(ToolbarCustoms, { buttons: props.customActions })),
|
|
126
126
|
react_1.default.createElement(LinearProgress, { loading: !!state.loading }),
|
|
127
127
|
react_1.default.createElement(FilterList, { gridName: props.gridName, onFilter: onFilter, filters: props.schema.filters, filtersData: state.request.f, filterHandlers: props.ui.FilterHandlers, noBorder: props.noBorder }),
|
package/data-grid.stories.js
CHANGED
|
@@ -223,12 +223,16 @@ const loader = async (_, request) => {
|
|
|
223
223
|
result: filteredData.slice(page * perPage, page * perPage + perPage),
|
|
224
224
|
};
|
|
225
225
|
};
|
|
226
|
+
const onCsvDownload = (request) => {
|
|
227
|
+
// eslint-disable-next-line no-console
|
|
228
|
+
console.log(request);
|
|
229
|
+
};
|
|
226
230
|
function Default() {
|
|
227
231
|
const [hiddenColumns, setHiddenColumns] = (0, react_1.useState)([]);
|
|
228
232
|
const [selectedRows, setSelectedRows] = (0, react_1.useState)(new Set());
|
|
229
233
|
const callbackRef = (0, _1.useCallbackRef)();
|
|
230
234
|
return (react_1.default.createElement("div", { className: "min-h-screen bg-gray-50 p-4 dark:bg-gray-950" },
|
|
231
|
-
react_1.default.createElement(tailwindui_1.DataGrid, { callbackRef: callbackRef, schema: schema, title: "Test", noBorder: false, loader: loader, onChangeHiddenColumns: setHiddenColumns, hiddenColumns: hiddenColumns, onChangeSelectedRows: setSelectedRows, selectedRows: selectedRows, getOpenUrl: (row) => `https://www.uxf.cz/item-${row.id}`, onEdit: console.log, onRemove: console.log, initialState: "eyJzb3J0IjoiaWQiLCJkaXIiOiJhc2MiLCJwZXJQYWdlIjoxMCwicGFnZSI6MCwiZiI6W3sibmFtZSI6ImNvZGUiLCJ2YWx1ZSI6IkNaIn1dfQ==", defaultConfig: {
|
|
235
|
+
react_1.default.createElement(tailwindui_1.DataGrid, { callbackRef: callbackRef, schema: schema, title: "Test", noBorder: false, loader: loader, onChangeHiddenColumns: setHiddenColumns, hiddenColumns: hiddenColumns, onChangeSelectedRows: setSelectedRows, selectedRows: selectedRows, getOpenUrl: (row) => `https://www.uxf.cz/item-${row.id}`, onEdit: console.log, onRemove: console.log, initialState: "eyJzb3J0IjoiaWQiLCJkaXIiOiJhc2MiLCJwZXJQYWdlIjoxMCwicGFnZSI6MCwiZiI6W3sibmFtZSI6ImNvZGUiLCJ2YWx1ZSI6IkNaIn1dfQ==", onCsvDownload: onCsvDownload, defaultConfig: {
|
|
232
236
|
columns: {
|
|
233
237
|
id: { width: 50, hidden: true },
|
|
234
238
|
text: {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/data-grid",
|
|
3
|
-
"version": "10.0.0-beta.
|
|
3
|
+
"version": "10.0.0-beta.23",
|
|
4
4
|
"description": "UXF DataGrid",
|
|
5
5
|
"homepage": "https://gitlab.com/uxf-npm/data-grid#readme",
|
|
6
6
|
"main": "index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"node": ">=8.9"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@uxf/ui": "10.0.0-beta.
|
|
33
|
+
"@uxf/ui": "10.0.0-beta.22",
|
|
34
34
|
"react": "^18.0.0",
|
|
35
35
|
"react-dom": "^18.0.0",
|
|
36
36
|
"dayjs": "^1.11.7"
|
|
@@ -32,6 +32,7 @@ const drawer_1 = require("./drawer");
|
|
|
32
32
|
const toggle_1 = require("@uxf/ui/toggle");
|
|
33
33
|
const actions_1 = require("../../store/actions");
|
|
34
34
|
const show_1 = require("../show");
|
|
35
|
+
const utils_1 = require("../../utils");
|
|
35
36
|
function Filters(props) {
|
|
36
37
|
return (react_1.default.createElement("div", { className: "uxf-data-grid__filters" }, props.schema.filters.map((filter) => {
|
|
37
38
|
var _a, _b;
|
|
@@ -47,21 +48,37 @@ function Filters(props) {
|
|
|
47
48
|
})));
|
|
48
49
|
}
|
|
49
50
|
function Columns(props) {
|
|
50
|
-
|
|
51
|
+
const onHideColumn = (columnName) => {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
(_a = props.onChangeHiddenColumns) === null || _a === void 0 ? void 0 : _a.call(props, [...((_b = props.hiddenColumns) !== null && _b !== void 0 ? _b : []), columnName]);
|
|
54
|
+
};
|
|
55
|
+
const onShowColumn = (columnName) => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
(_a = props.onChangeHiddenColumns) === null || _a === void 0 ? void 0 : _a.call(props, [...((_b = props.hiddenColumns) !== null && _b !== void 0 ? _b : [])].filter((v) => v !== columnName));
|
|
58
|
+
};
|
|
59
|
+
return (react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-control-columns" }, props.schema.columns.map((column) => {
|
|
60
|
+
var _a;
|
|
61
|
+
return (react_1.default.createElement(toggle_1.Toggle, { key: column.name, label: typeof column.label === "string" ? column.label : "", value: !((_a = props.hiddenColumns) === null || _a === void 0 ? void 0 : _a.includes(column.name)), onChange: (value) => (value ? onShowColumn(column.name) : onHideColumn(column.name)) }));
|
|
62
|
+
})));
|
|
51
63
|
}
|
|
52
64
|
const ToolbarControl = (props) => {
|
|
53
65
|
const [isFiltersOpen, setFiltersOpen] = (0, react_1.useState)(false);
|
|
54
66
|
const [isColumnsOpen, setColumnsOpen] = (0, react_1.useState)(false);
|
|
67
|
+
const fulltextValue = props.state.request.search;
|
|
68
|
+
const filtersData = props.state.request.f;
|
|
55
69
|
return (react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-control" },
|
|
56
70
|
react_1.default.createElement(show_1.Show, { when: props.showFulltext },
|
|
57
|
-
react_1.default.createElement(text_input_1.TextInput, { value:
|
|
58
|
-
react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => setFiltersOpen(true), title: "Filtrovat", className: "uxf-data-grid__plugin-
|
|
71
|
+
react_1.default.createElement(text_input_1.TextInput, { value: fulltextValue, onChange: props.onFulltextChange, placeholder: "Pi\u0161te pro hled\u00E1n\u00ED", className: "uxf-data-grid__plugin-fulltext", size: "small", leftElement: react_1.default.createElement(icon_1.Icon, { name: "search", size: 16 }) })),
|
|
72
|
+
react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => setFiltersOpen(true), title: "Filtrovat", className: "uxf-data-grid__plugin-button" },
|
|
59
73
|
react_1.default.createElement(icon_1.Icon, { name: "filter" })),
|
|
60
74
|
react_1.default.createElement(show_1.Show, { when: props.onChangeHiddenColumns && props.hiddenColumns },
|
|
61
|
-
react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => setColumnsOpen(true), title: "Nastaven\u00ED sloupc\u016F" },
|
|
75
|
+
react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => setColumnsOpen(true), title: "Nastaven\u00ED sloupc\u016F", className: "uxf-data-grid__plugin-button" },
|
|
62
76
|
react_1.default.createElement(icon_1.Icon, { name: "table-columns" }))),
|
|
77
|
+
react_1.default.createElement(show_1.Show, { when: props.onCsvDownload },
|
|
78
|
+
react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => { var _a; return (_a = props.onCsvDownload) === null || _a === void 0 ? void 0 : _a.call(props, (0, utils_1.createRequest)(props.state, props.schema.sort, props.schema.dir)); }, title: "St\u00E1hnout CSV", className: "uxf-data-grid__plugin-button" },
|
|
79
|
+
react_1.default.createElement(icon_1.Icon, { name: "file-arrow-down" }))),
|
|
63
80
|
react_1.default.createElement(drawer_1.Drawer, { open: isFiltersOpen, onClose: () => setFiltersOpen(false), title: "Filtry" },
|
|
64
|
-
react_1.default.createElement(Filters, { gridName: props.gridName, schema: props.schema, dispatch: props.dispatch, filtersData:
|
|
81
|
+
react_1.default.createElement(Filters, { gridName: props.gridName, schema: props.schema, dispatch: props.dispatch, filtersData: filtersData, filterHandlers: props.filterHandlers, noBorder: props.noBorder })),
|
|
65
82
|
react_1.default.createElement(drawer_1.Drawer, { open: isColumnsOpen, onClose: () => setColumnsOpen(false), title: "Nastaven\u00ED sloupc\u016F" },
|
|
66
83
|
react_1.default.createElement(Columns, { schema: props.schema, onChangeHiddenColumns: props.onChangeHiddenColumns, hiddenColumns: props.hiddenColumns }))));
|
|
67
84
|
};
|
package/tailwindui/styles.css
CHANGED
package/types/components.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import { BaseGridType, Columns, Filter, Filters, Schema } from "./schema";
|
|
|
3
3
|
import { RequestFilter, Response } from "./api";
|
|
4
4
|
import { PaginationProps } from "@uxf/ui/pagination/pagination";
|
|
5
5
|
import { CheckboxFormatterProps } from "react-data-grid";
|
|
6
|
-
import { ChangeHiddenColumnsHandler } from "./core";
|
|
6
|
+
import { ChangeHiddenColumnsHandler, CsvDownloadHandler } from "./core";
|
|
7
|
+
import { DataGridState } from "./state";
|
|
7
8
|
/**
|
|
8
9
|
* Action cell
|
|
9
10
|
*/
|
|
@@ -152,14 +153,14 @@ export interface ToolbarControlProps {
|
|
|
152
153
|
gridName: string | undefined;
|
|
153
154
|
schema: Schema<any>;
|
|
154
155
|
dispatch: (action: any) => void;
|
|
155
|
-
filtersData: RequestFilter[];
|
|
156
156
|
filterHandlers: FilterHandlers;
|
|
157
|
-
fulltextValue: string;
|
|
158
157
|
onFulltextChange: (value: string) => void;
|
|
159
158
|
noBorder: boolean | null | undefined;
|
|
160
159
|
onChangeHiddenColumns?: ChangeHiddenColumnsHandler;
|
|
160
|
+
onCsvDownload?: CsvDownloadHandler;
|
|
161
161
|
hiddenColumns?: string[];
|
|
162
162
|
showFulltext?: boolean;
|
|
163
|
+
state: DataGridState;
|
|
163
164
|
}
|
|
164
165
|
export type ToolbarControlComponent = React.FC<ToolbarControlProps>;
|
|
165
166
|
/**
|
package/types/core.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Request, Response, ResultItem } from "./api";
|
|
|
2
2
|
import { BaseGridType } from "./schema";
|
|
3
3
|
export type KeyExtractor = (row: ResultItem) => number;
|
|
4
4
|
export type ChangeHiddenColumnsHandler = (hiddenColumns: string[]) => void;
|
|
5
|
+
export type CsvDownloadHandler = (request: Request) => void;
|
|
5
6
|
export type Loader = (gridName: string | undefined, request: Request, encodedRequest: string) => Promise<Response>;
|
|
6
7
|
export type CallbackRef = {
|
|
7
8
|
reload: () => Promise<void>;
|
|
@@ -4,7 +4,7 @@ import { Request } from "./api";
|
|
|
4
4
|
import { DataGridProps as RDGProps } from "react-data-grid";
|
|
5
5
|
import { ToolbarCustomsProps } from "./components";
|
|
6
6
|
import { UIComponents } from "./ui-components";
|
|
7
|
-
import { CallbackRef, ChangeHiddenColumnsHandler, Config, KeyExtractor, Loader } from "./core";
|
|
7
|
+
import { CallbackRef, ChangeHiddenColumnsHandler, Config, CsvDownloadHandler, KeyExtractor, Loader } from "./core";
|
|
8
8
|
export type DataGridBaseProps<GridType extends BaseGridType, R> = {
|
|
9
9
|
callbackRef?: MutableRefObject<CallbackRef | undefined>;
|
|
10
10
|
schema: Schema<GridType>;
|
|
@@ -14,6 +14,7 @@ export type DataGridBaseProps<GridType extends BaseGridType, R> = {
|
|
|
14
14
|
keyExtractor?: KeyExtractor;
|
|
15
15
|
initialState?: Request | string;
|
|
16
16
|
onChangeHiddenColumns?: ChangeHiddenColumnsHandler;
|
|
17
|
+
onCsvDownload?: CsvDownloadHandler;
|
|
17
18
|
hiddenColumns?: string[];
|
|
18
19
|
onChangeSelectedRows?: (selectedRows: Set<number>) => void;
|
|
19
20
|
selectedRows?: Set<number>;
|