@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, filtersData: state.request.f, fulltextValue: state.request.search, onFulltextChange: (value) => dispatch(actions_1.dataGridActions.search(value)), showFulltext: props.schema.fullText }),
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 }),
@@ -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.21",
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.21",
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
- return (react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-control-columns" }, props.schema.columns.map((column) => (react_1.default.createElement(toggle_1.Toggle, { key: column.name, label: typeof column.label === "string" ? column.label : "", value: true, onChange: () => null })))));
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: props.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 }) })),
58
- react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "white", size: "sm", onClick: () => setFiltersOpen(true), title: "Filtrovat", className: "uxf-data-grid__plugin-filter" },
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: props.filtersData, filterHandlers: props.filterHandlers, noBorder: props.noBorder })),
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
  };
@@ -144,7 +144,7 @@
144
144
  }
145
145
  }
146
146
 
147
- &__plugin-filter {
147
+ &__plugin-button {
148
148
  @apply my-2 shrink-0;
149
149
 
150
150
  .uxf-icon {
@@ -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>;