@uxf/data-grid 11.37.0 → 11.38.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.
@@ -26,6 +26,7 @@ const loader = async (_, request) => {
26
26
  return {
27
27
  count: filteredData.length,
28
28
  totalCount: data_1.data.length,
29
+ tabCounts: { all: 20, "only-odd-ids": 10 },
29
30
  result: filteredData.slice(page * perPage, page * perPage + perPage),
30
31
  };
31
32
  };
@@ -39,11 +39,12 @@ function DataGrid() {
39
39
  loader: loader_1.loader,
40
40
  schema,
41
41
  state: control.state,
42
+ isWithTabCounts: true,
42
43
  });
43
44
  return (react_1.default.createElement(react_1.default.Fragment, null,
44
45
  react_1.default.createElement(root_1.DataGridRoot, null,
45
46
  react_1.default.createElement(toolbar_1.DataGridToolbar, null,
46
- react_1.default.createElement(toolbar_tabs_1.DataGridToolbarTabs, { ...control, schema: schema }),
47
+ react_1.default.createElement(toolbar_tabs_1.DataGridToolbarTabs, { ...control, schema: schema, tabCounts: data === null || data === void 0 ? void 0 : data.tabCounts }),
47
48
  react_1.default.createElement(toolbar_control_1.DataGridToolbarControl, { ...control, filterHandlers: filterHandlers, schema: schema }),
48
49
  react_1.default.createElement(toolbar_customs_1.DataGridToolbarCustoms, { buttons: toolbarCustomButtons })),
49
50
  react_1.default.createElement(linear_progress_1.DataGridLinearProgress, { isLoading: isLoading }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/data-grid",
3
- "version": "11.37.0",
3
+ "version": "11.38.0",
4
4
  "description": "UXF DataGrid",
5
5
  "homepage": "https://gitlab.com/uxf-npm/data-grid#readme",
6
6
  "main": "index.js",
@@ -1,3 +1,4 @@
1
+ import { Nullish } from "@uxf/core/types";
1
2
  import React from "react";
2
3
  import { ChangeTabFilterBehavior } from "../types";
3
4
  import { Schema } from "../types/schema";
@@ -5,5 +6,6 @@ import { DataGridControl } from "../use-data-grid-control";
5
6
  export interface DataGridToolbarTabsProps extends DataGridControl {
6
7
  changeTabFilterBehavior?: ChangeTabFilterBehavior;
7
8
  schema: Schema<any>;
9
+ tabCounts?: Record<string, number> | Nullish;
8
10
  }
9
11
  export declare function DataGridToolbarTabs(props: DataGridToolbarTabsProps): React.JSX.Element;
@@ -11,13 +11,15 @@ const icon_1 = require("@uxf/ui/icon");
11
11
  const modal_service_1 = require("@uxf/ui/modal/modal-service");
12
12
  const react_1 = __importDefault(require("react"));
13
13
  function Tab(props) {
14
- return (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-data-grid__toolbar-tab", props.isActive && "is-active"), onClick: props.onClick }, props.title));
14
+ return (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-data-grid__toolbar-tab", props.isActive && "is-active"), onClick: props.onClick },
15
+ props.title,
16
+ props.tabCount ? " (" + props.tabCount + ")" : ""));
15
17
  }
16
18
  function DataGridToolbarTabs(props) {
17
19
  var _a, _b, _c, _d;
18
20
  return (react_1.default.createElement(show_1.Show, { when: Boolean((_a = props.schema.tabs) === null || _a === void 0 ? void 0 : _a.length) },
19
21
  react_1.default.createElement("div", { className: "uxf-data-grid__toolbar-tabs" },
20
- react_1.default.createElement("nav", { "aria-label": "Tabs", className: "uxf-data-grid__toolbar-tabs-nav uxf-data-grid__toolbar-tabs-nav--desktop" }, (_b = props.schema.tabs) === null || _b === void 0 ? void 0 : _b.map((tab) => (react_1.default.createElement(Tab, { isActive: props.state.request.tab === tab.name, key: tab.name, onClick: () => { var _a; return props.actions.changeTab(tab, (_a = props.changeTabFilterBehavior) !== null && _a !== void 0 ? _a : "filtersPerTab"); }, title: tab.label })))),
22
+ react_1.default.createElement("nav", { "aria-label": "Tabs", className: "uxf-data-grid__toolbar-tabs-nav uxf-data-grid__toolbar-tabs-nav--desktop" }, (_b = props.schema.tabs) === null || _b === void 0 ? void 0 : _b.map((tab) => (react_1.default.createElement(Tab, { isActive: props.state.request.tab === tab.name, key: tab.name, onClick: () => { var _a; return props.actions.changeTab(tab, (_a = props.changeTabFilterBehavior) !== null && _a !== void 0 ? _a : "filtersPerTab"); }, tabCount: props.tabCounts ? props.tabCounts[tab.name] : undefined, title: tab.label })))),
21
23
  react_1.default.createElement("nav", { className: "uxf-data-grid__toolbar-tabs-nav uxf-data-grid__toolbar-tabs-nav--mobile" },
22
24
  react_1.default.createElement(button_1.Button, { className: "uxf-data-grid__toolbar-tabs-button", onClick: () => {
23
25
  var _a;
package/types/api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Nullish } from "@uxf/core/types";
1
2
  import { DataGridSort } from "./schema";
2
3
  export type ResultItem = any;
3
4
  export interface RequestFilter<T = any> {
@@ -12,9 +13,11 @@ export interface Request {
12
13
  perPage?: number;
13
14
  search?: string;
14
15
  tab?: string | null;
16
+ withTabCounts?: true | null;
15
17
  }
16
18
  export interface Response {
17
19
  totalCount: number;
18
20
  count: number;
21
+ tabCounts: Record<string, number> | Nullish;
19
22
  result: ResultItem[];
20
23
  }
@@ -1,9 +1,11 @@
1
+ import { Nullish } from "@uxf/core/types";
1
2
  import { Loader } from "../types/core";
2
3
  import { Schema } from "../types/schema";
3
4
  import { DataGridControl } from "../use-data-grid-control";
4
5
  interface Response<Row> {
5
6
  result: Row[];
6
7
  count: number;
8
+ tabCounts: Record<string, number> | Nullish;
7
9
  totalCount: number;
8
10
  }
9
11
  export interface DataGridFetchingResult<Row> {
@@ -16,6 +18,7 @@ export interface UseDataGridFetchingConfig {
16
18
  loader?: Loader;
17
19
  schema: Schema<any>;
18
20
  state: DataGridControl["state"];
21
+ isWithTabCounts?: true;
19
22
  }
20
23
  export declare function useDataGridFetching(config: UseDataGridFetchingConfig): DataGridFetchingResult<any>;
21
24
  export {};
@@ -12,7 +12,7 @@ function useDataGridFetching(config) {
12
12
  const stringStateRequest = JSON.stringify(state.request);
13
13
  const reload = (0, react_1.useCallback)(() => {
14
14
  const stateRequest = JSON.parse(stringStateRequest);
15
- const request = (0, utils_1.createRequest)(stateRequest);
15
+ const request = (0, utils_1.createRequest)(stateRequest, { isWithTabCounts: config.isWithTabCounts });
16
16
  setIsLoading(true);
17
17
  loader(config.schema.name, request, (0, utils_1.encodeFilter)(request))
18
18
  .then((response) => {
package/utils.d.ts CHANGED
@@ -2,4 +2,6 @@ import { Request } from "./types/api";
2
2
  import { GridRequest } from "./types/state";
3
3
  export declare function decodeFilter(filterString: string): null | Request;
4
4
  export declare function encodeFilter(request: Request): string;
5
- export declare function createRequest(request: GridRequest): Request;
5
+ export declare function createRequest(request: GridRequest, config?: {
6
+ isWithTabCounts?: true;
7
+ } | undefined): Request;
package/utils.js CHANGED
@@ -24,7 +24,7 @@ function decodeFilter(filterString) {
24
24
  function encodeFilter(request) {
25
25
  return btoa(unescape(encodeURIComponent(JSON.stringify(request))));
26
26
  }
27
- function createRequest(request) {
27
+ function createRequest(request, config = undefined) {
28
28
  return {
29
29
  perPage: request.perPage,
30
30
  page: request.page,
@@ -32,5 +32,6 @@ function createRequest(request) {
32
32
  s: request.s || undefined,
33
33
  search: request.search,
34
34
  tab: request.tab,
35
+ withTabCounts: config === null || config === void 0 ? void 0 : config.isWithTabCounts,
35
36
  };
36
37
  }