ydb-ui-components 4.6.0 → 5.0.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,11 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.EmptyView = void 0;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
6
8
  const cn_1 = require("../../../utils/cn");
7
9
  const TreeView_1 = require("../../TreeView/TreeView");
8
- const i18n_1 = tslib_1.__importDefault(require("../i18n"));
10
+ const i18n_1 = __importDefault(require("../i18n"));
9
11
  require("./EmptyView.css");
10
12
  const b = (0, cn_1.block)('ydb-navigation-tree-view-empty');
11
13
  function EmptyView({ level }) {
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ErrorView = void 0;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
6
8
  const cn_1 = require("../../../utils/cn");
7
9
  const TreeView_1 = require("../../TreeView/TreeView");
8
- const i18n_1 = tslib_1.__importDefault(require("../i18n"));
10
+ const i18n_1 = __importDefault(require("../i18n"));
9
11
  require("./ErrorView.css");
10
12
  const b = (0, cn_1.block)('ydb-navigation-tree-view-error');
11
13
  function ErrorView({ level }) {
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import type { NavigationTreeProps } from './types';
3
3
  export type { NavigationTreeProps };
4
- export declare function NavigationTree({ rootState: partialRootState, fetchPath, getActions, renderAdditionalNodeElements, activePath, onActionsOpenToggle, onActivePathUpdate, cache, virtualize, }: NavigationTreeProps): JSX.Element;
4
+ export declare function NavigationTree<D = any, M = any>({ rootState: partialRootState, fetchPath, getActions, renderAdditionalNodeElements, activePath, onActionsOpenToggle, onActivePathUpdate, cache, virtualize, }: NavigationTreeProps<D, M>): JSX.Element;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.NavigationTree = void 0;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = tslib_1.__importDefault(require("react"));
7
- const react_list_1 = tslib_1.__importDefault(require("react-list"));
8
+ const react_1 = __importDefault(require("react"));
9
+ const react_list_1 = __importDefault(require("react-list"));
8
10
  const EmptyView_1 = require("./EmptyView/EmptyView");
9
11
  const ErrorView_1 = require("./ErrorView/ErrorView");
10
12
  const LoaderView_1 = require("./LoaderView/LoaderView");
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.NavigationTreeNode = void 0;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = tslib_1.__importDefault(require("react"));
8
+ const react_1 = __importDefault(require("react"));
7
9
  const TreeView_1 = require("../TreeView/TreeView");
8
10
  const AsyncReplication_1 = require("../icons/AsyncReplication");
9
11
  const ColumnTable_1 = require("../icons/ColumnTable");
@@ -84,7 +86,16 @@ function NavigationTreeNode({ path, fetchPath, activePath, state, level, dispatc
84
86
  payload: { path, error },
85
87
  });
86
88
  });
87
- }, [nodeState.collapsed]);
89
+ }, [
90
+ activePath,
91
+ cache,
92
+ dispatch,
93
+ fetchPath,
94
+ nodeState.collapsed,
95
+ nodeState.loaded,
96
+ nodeState.loading,
97
+ path,
98
+ ]);
88
99
  const handleClick = react_1.default.useCallback(() => {
89
100
  if (onActivate) {
90
101
  onActivate(path);
@@ -94,10 +105,10 @@ function NavigationTreeNode({ path, fetchPath, activePath, state, level, dispatc
94
105
  dispatch({ type: state_1.NavigationTreeActionType.ToggleCollapsed, payload: { path } });
95
106
  }, [dispatch, path]);
96
107
  const additionalNodeElements = react_1.default.useMemo(() => {
97
- return renderAdditionalNodeElements === null || renderAdditionalNodeElements === void 0 ? void 0 : renderAdditionalNodeElements(nodeState.path, nodeState.type);
108
+ return renderAdditionalNodeElements === null || renderAdditionalNodeElements === void 0 ? void 0 : renderAdditionalNodeElements(nodeState.path, nodeState.type, nodeState.meta);
98
109
  }, [renderAdditionalNodeElements, nodeState]);
99
110
  const actions = react_1.default.useMemo(() => {
100
- return getActions === null || getActions === void 0 ? void 0 : getActions(nodeState.path, nodeState.type);
111
+ return getActions === null || getActions === void 0 ? void 0 : getActions(nodeState.path, nodeState.type, nodeState.meta);
101
112
  }, [getActions, nodeState]);
102
113
  const handleActionsOpenToggle = react_1.default.useCallback((isOpen) => {
103
114
  onActionsOpenToggle === null || onActionsOpenToggle === void 0 ? void 0 : onActionsOpenToggle({
@@ -1,2 +1,6 @@
1
- declare const _default: (key: "label_error" | "label_empty", params?: import("@gravity-ui/i18n").Params | undefined) => string;
1
+ declare const _default: ((key: "label_error" | "label_empty", params?: import("@gravity-ui/i18n").Params | undefined) => string) & {
2
+ keysetData: {
3
+ "ydb-navigation-tree": Record<"label_error" | "label_empty", import("@gravity-ui/i18n").KeyData>;
4
+ };
5
+ };
2
6
  export default _default;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
6
  const i18n_1 = require("@gravity-ui/uikit/i18n");
5
- const en_json_1 = tslib_1.__importDefault(require("./en.json"));
6
- const ru_json_1 = tslib_1.__importDefault(require("./ru.json"));
7
+ const en_json_1 = __importDefault(require("./en.json"));
8
+ const ru_json_1 = __importDefault(require("./ru.json"));
7
9
  const COMPONENT = 'ydb-navigation-tree';
8
10
  exports.default = (0, i18n_1.addComponentKeysets)({ en: en_json_1.default, ru: ru_json_1.default }, COMPONENT);
@@ -1,4 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./NavigationTree"), exports);
17
+ __exportStar(require("./NavigationTree"), exports);
@@ -1,11 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import type { DropdownMenuItemMixed } from '@gravity-ui/uikit';
3
3
  export type NavigationTreeNodeType = 'async_replication' | 'column_table' | 'resource_pool' | 'database' | 'directory' | 'external_data_source' | 'external_table' | 'index_table' | 'index' | 'stream' | 'table' | 'topic' | 'transfer' | 'view';
4
- export interface NavigationTreeDataItem {
4
+ export interface NavigationTreeDataItem<M = unknown> {
5
5
  name: string;
6
6
  type: NavigationTreeNodeType;
7
7
  /** determined by type by default */
8
8
  expandable?: boolean;
9
+ meta?: M;
9
10
  }
10
11
  export interface NavigationTreeState {
11
12
  [path: string]: NavigationTreeNodeState;
@@ -22,6 +23,7 @@ export interface NavigationTreeNodeState {
22
23
  error: boolean;
23
24
  children: string[];
24
25
  level?: number;
26
+ meta?: unknown;
25
27
  }
26
28
  export interface NavigationTreeServiceNode {
27
29
  path: string;
@@ -29,16 +31,16 @@ export interface NavigationTreeServiceNode {
29
31
  level?: number;
30
32
  }
31
33
  export type NavigationTreeNodePartialState = Omit<NavigationTreeNodeState, 'loading' | 'loaded' | 'error' | 'children'>;
32
- export interface NavigationTreeProps<D = any> {
34
+ export interface NavigationTreeProps<D = any, M = any> {
33
35
  rootState: NavigationTreeNodePartialState;
34
- fetchPath: (path: string) => Promise<NavigationTreeDataItem[]>;
36
+ fetchPath: (path: string) => Promise<NavigationTreeDataItem<M>[]>;
35
37
  onActionsOpenToggle?: (args: {
36
38
  path: string;
37
39
  type: NavigationTreeNodeType;
38
40
  isOpen: boolean;
39
41
  }) => void;
40
- getActions?: (path: string, type: NavigationTreeNodeType) => DropdownMenuItemMixed<D>[];
41
- renderAdditionalNodeElements?: (path: string, type: NavigationTreeNodeType) => JSX.Element | undefined;
42
+ getActions?: (path: string, type: NavigationTreeNodeType, meta: M) => DropdownMenuItemMixed<D>[];
43
+ renderAdditionalNodeElements?: (path: string, type: NavigationTreeNodeType, meta: M) => JSX.Element | undefined;
42
44
  activePath?: string;
43
45
  onActivePathUpdate?: (activePath: string) => void;
44
46
  cache?: boolean;
@@ -19,7 +19,7 @@
19
19
  background-color: var(--g-color-base-simple-hover);
20
20
  }
21
21
  .ydb-tree-view__item:hover .ydb-tree-view__actions {
22
- display: flex;
22
+ visibility: visible;
23
23
  }
24
24
  .ydb-tree-view__item_active {
25
25
  font-weight: bold;
@@ -53,7 +53,8 @@
53
53
  text-overflow: ellipsis;
54
54
  }
55
55
  .ydb-tree-view__actions {
56
- display: none;
56
+ display: flex;
57
+ visibility: hidden;
57
58
  margin-left: 6px;
58
59
  align-items: center;
59
60
  }
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TreeView = void 0;
4
- const tslib_1 = require("tslib");
5
7
  const jsx_runtime_1 = require("react/jsx-runtime");
6
- const react_1 = tslib_1.__importDefault(require("react"));
8
+ const react_1 = __importDefault(require("react"));
7
9
  const uikit_1 = require("@gravity-ui/uikit");
8
10
  const cn_1 = require("../../utils/cn");
9
11
  require("./TreeView.css");
@@ -1,4 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./TreeView"), exports);
17
+ __exportStar(require("./TreeView"), exports);
@@ -1,5 +1,18 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./components/NavigationTree"), exports);
5
- tslib_1.__exportStar(require("./components/TreeView"), exports);
17
+ __exportStar(require("./components/NavigationTree"), exports);
18
+ __exportStar(require("./components/TreeView"), exports);
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import type { NavigationTreeProps } from './types';
3
3
  export type { NavigationTreeProps };
4
- export declare function NavigationTree({ rootState: partialRootState, fetchPath, getActions, renderAdditionalNodeElements, activePath, onActionsOpenToggle, onActivePathUpdate, cache, virtualize, }: NavigationTreeProps): JSX.Element;
4
+ export declare function NavigationTree<D = any, M = any>({ rootState: partialRootState, fetchPath, getActions, renderAdditionalNodeElements, activePath, onActionsOpenToggle, onActivePathUpdate, cache, virtualize, }: NavigationTreeProps<D, M>): JSX.Element;
@@ -80,7 +80,16 @@ export function NavigationTreeNode({ path, fetchPath, activePath, state, level,
80
80
  payload: { path, error },
81
81
  });
82
82
  });
83
- }, [nodeState.collapsed]);
83
+ }, [
84
+ activePath,
85
+ cache,
86
+ dispatch,
87
+ fetchPath,
88
+ nodeState.collapsed,
89
+ nodeState.loaded,
90
+ nodeState.loading,
91
+ path,
92
+ ]);
84
93
  const handleClick = React.useCallback(() => {
85
94
  if (onActivate) {
86
95
  onActivate(path);
@@ -90,10 +99,10 @@ export function NavigationTreeNode({ path, fetchPath, activePath, state, level,
90
99
  dispatch({ type: NavigationTreeActionType.ToggleCollapsed, payload: { path } });
91
100
  }, [dispatch, path]);
92
101
  const additionalNodeElements = React.useMemo(() => {
93
- return renderAdditionalNodeElements === null || renderAdditionalNodeElements === void 0 ? void 0 : renderAdditionalNodeElements(nodeState.path, nodeState.type);
102
+ return renderAdditionalNodeElements === null || renderAdditionalNodeElements === void 0 ? void 0 : renderAdditionalNodeElements(nodeState.path, nodeState.type, nodeState.meta);
94
103
  }, [renderAdditionalNodeElements, nodeState]);
95
104
  const actions = React.useMemo(() => {
96
- return getActions === null || getActions === void 0 ? void 0 : getActions(nodeState.path, nodeState.type);
105
+ return getActions === null || getActions === void 0 ? void 0 : getActions(nodeState.path, nodeState.type, nodeState.meta);
97
106
  }, [getActions, nodeState]);
98
107
  const handleActionsOpenToggle = React.useCallback((isOpen) => {
99
108
  onActionsOpenToggle === null || onActionsOpenToggle === void 0 ? void 0 : onActionsOpenToggle({
@@ -1,2 +1,6 @@
1
- declare const _default: (key: "label_error" | "label_empty", params?: import("@gravity-ui/i18n").Params | undefined) => string;
1
+ declare const _default: ((key: "label_error" | "label_empty", params?: import("@gravity-ui/i18n").Params | undefined) => string) & {
2
+ keysetData: {
3
+ "ydb-navigation-tree": Record<"label_error" | "label_empty", import("@gravity-ui/i18n").KeyData>;
4
+ };
5
+ };
2
6
  export default _default;
@@ -1,11 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import type { DropdownMenuItemMixed } from '@gravity-ui/uikit';
3
3
  export type NavigationTreeNodeType = 'async_replication' | 'column_table' | 'resource_pool' | 'database' | 'directory' | 'external_data_source' | 'external_table' | 'index_table' | 'index' | 'stream' | 'table' | 'topic' | 'transfer' | 'view';
4
- export interface NavigationTreeDataItem {
4
+ export interface NavigationTreeDataItem<M = unknown> {
5
5
  name: string;
6
6
  type: NavigationTreeNodeType;
7
7
  /** determined by type by default */
8
8
  expandable?: boolean;
9
+ meta?: M;
9
10
  }
10
11
  export interface NavigationTreeState {
11
12
  [path: string]: NavigationTreeNodeState;
@@ -22,6 +23,7 @@ export interface NavigationTreeNodeState {
22
23
  error: boolean;
23
24
  children: string[];
24
25
  level?: number;
26
+ meta?: unknown;
25
27
  }
26
28
  export interface NavigationTreeServiceNode {
27
29
  path: string;
@@ -29,16 +31,16 @@ export interface NavigationTreeServiceNode {
29
31
  level?: number;
30
32
  }
31
33
  export type NavigationTreeNodePartialState = Omit<NavigationTreeNodeState, 'loading' | 'loaded' | 'error' | 'children'>;
32
- export interface NavigationTreeProps<D = any> {
34
+ export interface NavigationTreeProps<D = any, M = any> {
33
35
  rootState: NavigationTreeNodePartialState;
34
- fetchPath: (path: string) => Promise<NavigationTreeDataItem[]>;
36
+ fetchPath: (path: string) => Promise<NavigationTreeDataItem<M>[]>;
35
37
  onActionsOpenToggle?: (args: {
36
38
  path: string;
37
39
  type: NavigationTreeNodeType;
38
40
  isOpen: boolean;
39
41
  }) => void;
40
- getActions?: (path: string, type: NavigationTreeNodeType) => DropdownMenuItemMixed<D>[];
41
- renderAdditionalNodeElements?: (path: string, type: NavigationTreeNodeType) => JSX.Element | undefined;
42
+ getActions?: (path: string, type: NavigationTreeNodeType, meta: M) => DropdownMenuItemMixed<D>[];
43
+ renderAdditionalNodeElements?: (path: string, type: NavigationTreeNodeType, meta: M) => JSX.Element | undefined;
42
44
  activePath?: string;
43
45
  onActivePathUpdate?: (activePath: string) => void;
44
46
  cache?: boolean;
@@ -19,7 +19,7 @@
19
19
  background-color: var(--g-color-base-simple-hover);
20
20
  }
21
21
  .ydb-tree-view__item:hover .ydb-tree-view__actions {
22
- display: flex;
22
+ visibility: visible;
23
23
  }
24
24
  .ydb-tree-view__item_active {
25
25
  font-weight: bold;
@@ -53,7 +53,8 @@
53
53
  text-overflow: ellipsis;
54
54
  }
55
55
  .ydb-tree-view__actions {
56
- display: none;
56
+ display: flex;
57
+ visibility: hidden;
57
58
  margin-left: 6px;
58
59
  align-items: center;
59
60
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-ui-components",
3
- "version": "4.6.0",
3
+ "version": "5.0.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "exports": {
@@ -37,7 +37,7 @@
37
37
  "lint": "run-p lint:*",
38
38
  "prettier": "prettier '**/*.{json,md,yaml,yml}'",
39
39
  "typecheck": "tsc --noEmit",
40
- "start": "storybook dev -p 7002",
40
+ "start": "storybook dev -p 7003",
41
41
  "prepublishOnly": "npm run build",
42
42
  "prepare": "husky"
43
43
  },
@@ -57,7 +57,7 @@
57
57
  "@gravity-ui/prettier-config": "^1.1.0",
58
58
  "@gravity-ui/stylelint-config": "^4.0.1",
59
59
  "@gravity-ui/tsconfig": "^1.0.0",
60
- "@gravity-ui/uikit": "^6.1.1",
60
+ "@gravity-ui/uikit": "^7.11.0",
61
61
  "@storybook/addon-essentials": "^7.6.17",
62
62
  "@storybook/preset-scss": "^1.0.3",
63
63
  "@storybook/react": "^7.6.17",
@@ -85,7 +85,7 @@
85
85
  "typescript": "^5.3.3"
86
86
  },
87
87
  "peerDependencies": {
88
- "@gravity-ui/uikit": "^6.0.0",
88
+ "@gravity-ui/uikit": "^7.0.0",
89
89
  "react": "^16.0.0 || ^17.0.0 || ^18.0.0",
90
90
  "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
91
91
  },