@uxf/data-grid 11.28.4 → 11.30.0

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.
@@ -1,6 +1,6 @@
1
1
  import React, { ReactNode } from "react";
2
2
  interface DrawerProps {
3
- title?: string;
3
+ title?: ReactNode;
4
4
  children?: ReactNode;
5
5
  open: boolean;
6
6
  onClose: () => void;
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Drawer = void 0;
7
7
  const react_1 = require("@floating-ui/react");
8
8
  const use_is_mounted_1 = require("@uxf/core-react/hooks/use-is-mounted");
9
- const button_1 = require("@uxf/ui/button");
10
- const icon_1 = require("@uxf/ui/icon");
9
+ const modal_header_1 = require("@uxf/ui/modal-header");
11
10
  const react_2 = __importDefault(require("react"));
12
11
  const Drawer = (props) => {
13
12
  const isMounted = (0, use_is_mounted_1.useIsMounted)();
@@ -18,9 +17,7 @@ const Drawer = (props) => {
18
17
  react_2.default.createElement("div", { className: `uxf-data-grid__drawer uxf-data-grid__drawer--${props.open ? "open" : "closed"}` },
19
18
  react_2.default.createElement("div", { className: `uxf-data-grid__drawer-body-wrapper ${props.open ? "uxf-data-grid__drawer-body-wrapper--open" : ""}` },
20
19
  react_2.default.createElement("div", { className: "uxf-data-grid__drawer-body" },
21
- react_2.default.createElement(button_1.Button, { isIconButton: true, onClick: props.onClose, variant: "text", className: "uxf-data-grid__drawer-close-button" },
22
- react_2.default.createElement(icon_1.Icon, { name: "xmarkLarge" })),
23
- react_2.default.createElement("header", { className: "uxf-data-grid__drawer-header" }, props.title),
20
+ react_2.default.createElement(modal_header_1.ModalHeader, { title: props.title, onClose: props.onClose }),
24
21
  react_2.default.createElement("div", { className: "uxf-data-grid__drawer-content" }, props.children))),
25
22
  react_2.default.createElement("section", { className: "uxf-data-grid__drawer-backdrop", onClick: props.onClose }))));
26
23
  };
@@ -1,10 +1,11 @@
1
- import React from "react";
1
+ import React, { ReactNode } from "react";
2
2
  import { FilterHandlers } from "../filter-handler";
3
3
  import { Schema } from "../types";
4
4
  import { DataGridControl } from "../use-data-grid-control";
5
5
  export interface DataGridFiltersButtonProps extends DataGridControl {
6
- schema: Schema<any>;
6
+ drawerTitle?: ReactNode;
7
7
  filterHandlers: FilterHandlers;
8
+ schema: Schema<any>;
8
9
  }
9
10
  /** @deprecated Use DataGridFiltersButton */
10
11
  export declare function FiltersButton(props: DataGridFiltersButtonProps): React.JSX.Element | null;
@@ -31,6 +31,7 @@ const drawer_1 = require("../_components/drawer");
31
31
  const filters_1 = require("../filters");
32
32
  /** @deprecated Use DataGridFiltersButton */
33
33
  function FiltersButton(props) {
34
+ var _a;
34
35
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
35
36
  if (props.schema.filters.length === 0) {
36
37
  return null;
@@ -38,7 +39,7 @@ function FiltersButton(props) {
38
39
  return (react_1.default.createElement(react_1.default.Fragment, null,
39
40
  react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "secondary", size: "sm", onClick: () => setIsOpen(true), title: "Filtrovat", className: "uxf-data-grid__plugin-button" },
40
41
  react_1.default.createElement(icon_1.Icon, { name: "filter" })),
41
- react_1.default.createElement(drawer_1.Drawer, { open: isOpen, onClose: () => setIsOpen(false) },
42
+ react_1.default.createElement(drawer_1.Drawer, { title: (_a = props.drawerTitle) !== null && _a !== void 0 ? _a : "Filtrování", open: isOpen, onClose: () => setIsOpen(false) },
42
43
  react_1.default.createElement(filters_1.DataGridFilters, { state: props.state, actions: props.actions, schema: props.schema, filterHandlers: props.filterHandlers }))));
43
44
  }
44
45
  exports.FiltersButton = FiltersButton;
@@ -4,16 +4,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DataGridHiddenColumns = exports.HiddenColumns = void 0;
7
+ const show_1 = require("@uxf/core-react/components/show");
8
+ const is_empty_1 = require("@uxf/core/utils/is-empty");
9
+ const is_not_empty_1 = require("@uxf/core/utils/is-not-empty");
10
+ const icon_1 = require("@uxf/ui/icon");
11
+ const text_link_1 = require("@uxf/ui/text-link");
7
12
  const toggle_1 = require("@uxf/ui/toggle");
8
13
  const react_1 = __importDefault(require("react"));
9
14
  /** @deprecated Use DataGridHiddenColumns */
10
15
  function HiddenColumns(props) {
11
- return (react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-control-columns" }, props.schema.columns
12
- .filter((column) => !column.hidden)
13
- .map((column) => {
14
- var _a, _b, _c, _d;
15
- return (react_1.default.createElement(toggle_1.Toggle, { key: column.name, label: typeof column.label === "string" ? column.label : "", value: !((_c = (_b = (_a = props.state.userConfig.columns) === null || _a === void 0 ? void 0 : _a[column.name]) === null || _b === void 0 ? void 0 : _b.isHidden) !== null && _c !== void 0 ? _c : (_d = column.config) === null || _d === void 0 ? void 0 : _d.isHidden), onChange: (value) => value ? props.actions.showColumn(column.name) : props.actions.hideColumn(column.name), name: column.name }));
16
- })));
16
+ const columns = props.schema.columns.filter((c) => !c.hidden);
17
+ const visibleColumns = columns.filter((c) => { var _a, _b, _c, _d; return !((_c = (_b = (_a = props.state.userConfig.columns) === null || _a === void 0 ? void 0 : _a[c.name]) === null || _b === void 0 ? void 0 : _b.isHidden) !== null && _c !== void 0 ? _c : (_d = c.config) === null || _d === void 0 ? void 0 : _d.isHidden); });
18
+ const hiddenColumns = columns.filter((c) => { var _a, _b, _c, _d; return (_c = (_b = (_a = props.state.userConfig.columns) === null || _a === void 0 ? void 0 : _a[c.name]) === null || _b === void 0 ? void 0 : _b.isHidden) !== null && _c !== void 0 ? _c : (_d = c.config) === null || _d === void 0 ? void 0 : _d.isHidden; });
19
+ const onToggleChange = (columnName) => (value) => value ? props.actions.showColumn(columnName) : props.actions.hideColumn(columnName);
20
+ const onChangeAll = (value) => () => {
21
+ columns.forEach((column) => {
22
+ value ? props.actions.showColumn(column.name) : props.actions.hideColumn(column.name);
23
+ });
24
+ };
25
+ return (react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-control-columns" },
26
+ react_1.default.createElement("div", { className: "uxf-data-grid__hidden-columns-title" },
27
+ react_1.default.createElement("div", null, "Zobrazen\u00E9 sloupce"),
28
+ react_1.default.createElement(text_link_1.TextLink, { disabled: (0, is_empty_1.isEmpty)(visibleColumns), onClick: onChangeAll(false), variant: "text" }, "skr\u00FDt v\u0161e")),
29
+ visibleColumns.map((column) => (react_1.default.createElement(toggle_1.Toggle, { key: column.name, label: typeof column.label === "string" ? column.label : "", name: column.name, onChange: onToggleChange(column.name), size: "sm", value: true, variant: "reversed" }))),
30
+ react_1.default.createElement(show_1.Show, { when: (0, is_empty_1.isEmpty)(visibleColumns) },
31
+ react_1.default.createElement("div", { className: "uxf-data-grid__hidden-columns-empty-box" },
32
+ react_1.default.createElement(icon_1.Icon, { name: "triangle-exclamation-solid", size: 20 }),
33
+ "Tabulka m\u00E1 v\u0161echny sloupce skryt\u00E9. Pro zobrazen\u00ED vyberte sloupec n\u00ED\u017Ee.")),
34
+ react_1.default.createElement(show_1.Show, { when: (0, is_not_empty_1.isNotEmpty)(hiddenColumns) },
35
+ react_1.default.createElement("div", { className: "uxf-data-grid__hidden-columns-title" },
36
+ react_1.default.createElement("div", null, "Skryt\u00E9 sloupce"),
37
+ react_1.default.createElement(text_link_1.TextLink, { onClick: onChangeAll(true), variant: "text" }, "zobrazit v\u0161e")),
38
+ hiddenColumns.map((column) => (react_1.default.createElement(toggle_1.Toggle, { key: column.name, label: typeof column.label === "string" ? column.label : "", name: column.name, onChange: onToggleChange(column.name), size: "sm", value: false, variant: "reversed" }))))));
17
39
  }
18
40
  exports.HiddenColumns = HiddenColumns;
19
41
  exports.DataGridHiddenColumns = HiddenColumns;
@@ -1,7 +1,8 @@
1
- import React from "react";
1
+ import React, { ReactNode } from "react";
2
2
  import { Schema } from "../types";
3
3
  import { DataGridControl } from "../use-data-grid-control";
4
4
  export interface DataGridHiddenColumnsButtonProps extends DataGridControl {
5
+ drawerTitle?: ReactNode;
5
6
  schema: Schema<any>;
6
7
  }
7
8
  /** @deprecated Use DataGridHiddenColumnsButton */
@@ -31,11 +31,12 @@ const drawer_1 = require("../_components/drawer");
31
31
  const hidden_columns_1 = require("../hidden-columns");
32
32
  /** @deprecated Use DataGridHiddenColumnsButton */
33
33
  function HiddenColumnsButton(props) {
34
+ var _a;
34
35
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
35
36
  return (react_1.default.createElement(react_1.default.Fragment, null,
36
37
  react_1.default.createElement(button_1.Button, { isIconButton: true, variant: "secondary", size: "sm", onClick: () => setIsOpen(true), title: "Nastaven\u00ED sloupc\u016F", className: "uxf-data-grid__plugin-button" },
37
38
  react_1.default.createElement(icon_1.Icon, { name: "table-columns" })),
38
- react_1.default.createElement(drawer_1.Drawer, { open: isOpen, onClose: () => setIsOpen(false), title: "Nastaven\u00ED sloupc\u016F" },
39
+ react_1.default.createElement(drawer_1.Drawer, { open: isOpen, onClose: () => setIsOpen(false), title: (_a = props.drawerTitle) !== null && _a !== void 0 ? _a : "Sloupce" },
39
40
  react_1.default.createElement(hidden_columns_1.HiddenColumns, { state: props.state, actions: props.actions, schema: props.schema }))));
40
41
  }
41
42
  exports.HiddenColumnsButton = HiddenColumnsButton;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/data-grid",
3
- "version": "11.28.4",
3
+ "version": "11.30.0",
4
4
  "description": "UXF DataGrid",
5
5
  "homepage": "https://gitlab.com/uxf-npm/data-grid#readme",
6
6
  "main": "index.js",
@@ -31,9 +31,9 @@
31
31
  "typecheck": "tsc --noEmit --skipLibCheck"
32
32
  },
33
33
  "dependencies": {
34
- "@uxf/core": "11.22.0",
35
- "@uxf/core-react": "11.22.0",
36
- "@uxf/ui": "11.28.4",
34
+ "@uxf/core": "11.29.0",
35
+ "@uxf/core-react": "11.29.0",
36
+ "@uxf/ui": "11.30.0",
37
37
  "dayjs": "1.11.10",
38
38
  "deepmerge": "4.3.1",
39
39
  "fast-glob": "3.3.2",
package/styles.css CHANGED
@@ -75,6 +75,8 @@
75
75
  }
76
76
 
77
77
  &__drawer {
78
+ --uxf-dg-drawer-max-w: 400px;
79
+
78
80
  @apply ease-in-out;
79
81
 
80
82
  background-color: theme("colors.gray.900/.25");
@@ -107,7 +109,7 @@
107
109
  background-color: theme("colors.white");
108
110
  box-shadow: theme("boxShadow.xl");
109
111
  height: 100%;
110
- max-width: theme("maxWidth.sm");
112
+ max-width: var(--uxf-dg-drawer-max-w);
111
113
  position: absolute;
112
114
  right: 0;
113
115
  transform: translateX(100%);
@@ -122,8 +124,8 @@
122
124
  display: flex;
123
125
  flex-direction: column;
124
126
  height: 100%;
125
- max-width: theme("maxWidth.sm");
126
- overflow-y: scroll;
127
+ max-width: var(--uxf-dg-drawer-max-w);
128
+ overflow-y: auto;
127
129
  padding-bottom: theme("spacing.10");
128
130
  position: relative;
129
131
  width: 100%;
@@ -134,17 +136,6 @@
134
136
  }
135
137
  }
136
138
 
137
- &-close-button {
138
- margin-left: auto;
139
- margin-right: theme("spacing.4");
140
- margin-top: theme("spacing.4") !important;
141
- }
142
-
143
- &-header {
144
- font-weight: theme("fontWeight.bold");
145
- padding: theme("spacing.8") theme("spacing.4") theme("spacing.4");
146
- }
147
-
148
139
  &-content {
149
140
  padding: theme("spacing.4");
150
141
  }
@@ -495,6 +486,46 @@
495
486
  }
496
487
  }
497
488
 
489
+ &__toolbar-control-columns {
490
+ font-size: theme("fontSize.body2");
491
+ font-weight: theme("fontWeight.medium");
492
+ }
493
+
494
+ &__hidden-columns-title {
495
+ display: flex;
496
+ gap: 8px;
497
+ justify-content: space-between;
498
+ padding: 24px 0 12px;
499
+
500
+ div {
501
+ text-transform: uppercase;
502
+ }
503
+
504
+ a {
505
+ text-decoration: underline;
506
+ }
507
+
508
+ &:first-child {
509
+ margin-top: -16px;
510
+ }
511
+ }
512
+
513
+ &__hidden-columns-empty-box {
514
+ background-color: var(--uxf-color-warning-surface-muted);
515
+ border: theme("borderWidth.DEFAULT") solid var(--uxf-color-warning-border);
516
+ border-radius: theme("borderRadius.lg");
517
+ color: var(--uxf-color-base-text-high-emphasis);
518
+ display: flex;
519
+ gap: 12px;
520
+ margin: 8px 0;
521
+ padding: 8px 16px;
522
+
523
+ .uxf-icon {
524
+ color: var(--uxf-color-warning-icon-on-muted);
525
+ margin-top: 4px;
526
+ }
527
+ }
528
+
498
529
  &__toolbar-customs {
499
530
  align-items: center;
500
531
  display: flex;