@gravity-ui/dashkit 3.5.0 → 4.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.1.0](https://github.com/gravity-ui/dashkit/compare/v4.0.0...v4.1.0) (2023-01-31)
4
+
5
+
6
+ ### Features
7
+
8
+ * remove preventDoubleCompact flag ([#37](https://github.com/gravity-ui/dashkit/issues/37)) ([9b95e61](https://github.com/gravity-ui/dashkit/commit/9b95e61b7939a9883fda832947e70728b8f66410))
9
+
10
+ ## [4.0.0](https://github.com/gravity-ui/dashkit/compare/v3.5.0...v4.0.0) (2022-12-19)
11
+
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * rename types in plugin Text ([#33](https://github.com/gravity-ui/dashkit/issues/33))
16
+ * change grid item forward ref behavior
17
+
18
+ ### Features
19
+
20
+ * rename types in plugin Text ([#33](https://github.com/gravity-ui/dashkit/issues/33)) ([c55917f](https://github.com/gravity-ui/dashkit/commit/c55917f918a4592c680e4e3bf3173fb53514b185))
21
+ * update react-grid-layout major release ([#31](https://github.com/gravity-ui/dashkit/issues/31)) ([e31ff70](https://github.com/gravity-ui/dashkit/commit/e31ff707f48038435a63d95ad34b8685c39fb1ba))
22
+
3
23
  ## [3.5.0](https://github.com/gravity-ui/dashkit/compare/v3.4.0...v3.5.0) (2022-12-19)
4
24
 
5
25
 
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ # @gravity-ui/dashkit · [![npm package](https://img.shields.io/npm/v/@gravity-ui/dashkit)](https://www.npmjs.com/package/@gravity-ui/dashkit) [![CI](https://img.shields.io/github/actions/workflow/status/gravity-ui/dashkit/.github/workflows/ci.yaml?branch=main&label=CI&logo=github)](https://github.com/gravity-ui/dashkit/actions/workflows/ci.yaml?query=branch:main) [![storybook](https://img.shields.io/badge/Storybook-deployed-ff4685)](https://preview.gravity-ui.com/dashkit/)
2
+
1
3
  # DashKit
2
4
 
3
5
  A dashboard grid rendering library.
@@ -21,7 +21,6 @@ interface DashKitDefaultProps {
21
21
  overlayControls?: Record<string, OverlayControlItem[]>;
22
22
  noOverlay?: boolean;
23
23
  draggableHandleClassName?: string;
24
- _EXPERIMENTAL_preventDoubleCompact?: boolean;
25
24
  }
26
25
  export interface DashKitProps extends DashKitGeneralProps, Partial<DashKitDefaultProps> {
27
26
  }
@@ -40,7 +40,7 @@ class GridItem extends react_1.default.PureComponent {
40
40
  return (react_1.default.createElement("div", Object.assign({ className: b({
41
41
  'is-dragging': isDragging,
42
42
  'with-custom-handle': withCustomHandle,
43
- }, preparedClassName), "data-qa": "dashkit-grid-item", style: style }, reactGridLayoutProps),
43
+ }, preparedClassName), "data-qa": "dashkit-grid-item", style: style, ref: this.props.forwardedRef }, reactGridLayoutProps),
44
44
  react_1.default.createElement("div", { className: b('item', { editMode: editMode && !_editActive && !noOverlay }) },
45
45
  react_1.default.createElement(Item_1.default, { id: this.props.id, item: this.props.item, shouldItemUpdate: !isDragging, width: width, height: height, transform: transform, adjustWidgetLayout: this.props.adjustWidgetLayout, layout: this.props.layout, forwardedPluginRef: this.props.forwardedPluginRef })),
46
46
  !noOverlay && this.renderOverlay(),
@@ -54,6 +54,7 @@ GridItem.propTypes = {
54
54
  isDragging: prop_types_1.default.bool,
55
55
  layout: prop_types_1.default.array,
56
56
  overlayControls: prop_types_1.default.object,
57
+ forwardedRef: prop_types_1.default.any,
57
58
  forwardedPluginRef: prop_types_1.default.any,
58
59
  // from react-grid-layout:
59
60
  children: prop_types_1.default.node,
@@ -68,5 +69,5 @@ GridItem.propTypes = {
68
69
  };
69
70
  GridItem.contextType = DashKitContext_1.DashKitContext;
70
71
  exports.default = react_1.default.forwardRef((props, ref) => {
71
- return react_1.default.createElement(GridItem, Object.assign({}, props, { forwardedPluginRef: ref }));
72
+ return react_1.default.createElement(GridItem, Object.assign({}, props, { forwardedRef: ref }));
72
73
  });
@@ -76,7 +76,7 @@ class GridLayout extends react_1.default.PureComponent {
76
76
  return (react_1.default.createElement(Layout, Object.assign({}, registerManager.gridLayout, { layout: layout, isDraggable: editMode, isResizable: editMode, onDragStart: this._onStart, onDragStop: this._onStop, onResizeStart: this._onStart, onResizeStop: this._onStop }, (draggableHandleClassName
77
77
  ? { draggableHandle: `.${draggableHandleClassName}` }
78
78
  : null)), config.items.map((item, i) => {
79
- return (react_1.default.createElement(GridItem_1.default, { ref: (pluginRef) => {
79
+ return (react_1.default.createElement(GridItem_1.default, { forwardedPluginRef: (pluginRef) => {
80
80
  this.pluginsRefs[i] = pluginRef;
81
81
  }, key: item.id, id: item.id, item: item, layout: layout, adjustWidgetLayout: this.adjustWidgetLayout, isDragging: this.state.isDragging, noOverlay: noOverlay, withCustomHandle: Boolean(draggableHandleClassName), overlayControls: this.props.overlayControls }));
82
82
  })));
@@ -7,8 +7,6 @@ const DashKitContext_1 = require("../context/DashKitContext");
7
7
  const utils_1 = require("../utils");
8
8
  const shared_1 = require("../shared");
9
9
  const isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual"));
10
- const react_grid_layout_1 = require("react-grid-layout");
11
- const LAYOUT_COMPACTING_TYPE = 'vertical';
12
10
  function useMemoStateContext(props) {
13
11
  // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный
14
12
  // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,
@@ -38,22 +36,14 @@ function useMemoStateContext(props) {
38
36
  return Object.assign({}, item);
39
37
  }
40
38
  });
41
- // [experimental] if the _prevent Double Compact is enabled, then skip recalculate layout with auto height
42
- // после того, как у виждета активировали автовысоту и его параметр "h" изменился, это приведёт, также, и к
43
- // изменению параметра (координаты) "y" у элементов расположенных под ним, поэтому, после того, как
44
- // значения параметра "h" виджетов с активированной автовысотой были изменены, необходимо изменить и
45
- // координату "y" виджетов расположенных ниже
46
- const compactedLayout = props._EXPERIMENTAL_preventDoubleCompact
47
- ? currentInnerLayout
48
- : react_grid_layout_1.utils.compact(currentInnerLayout, LAYOUT_COMPACTING_TYPE, props.registerManager.gridLayout.cols);
49
39
  const newConfig = utils_1.UpdateManager.updateLayout({
50
- layout: compactedLayout,
40
+ layout: currentInnerLayout,
51
41
  config: props.config,
52
42
  });
53
43
  if (!(0, isEqual_1.default)(newConfig.layout, props.config.layout)) {
54
44
  onChange({ config: newConfig });
55
45
  }
56
- }, [props._EXPERIMENTAL_preventDoubleCompact, props.registerManager, props.config, onChange]);
46
+ }, [props.config, onChange]);
57
47
  const onItemRemove = react_1.default.useCallback((id) => {
58
48
  onChange(utils_1.UpdateManager.removeItem({
59
49
  id,
@@ -41,12 +41,12 @@ export declare class PluginText extends React.PureComponent<PluginTextProps, Plu
41
41
  get withMarkdown(): boolean;
42
42
  }
43
43
  declare type PluginDataProps = Omit<PluginTextProps, 'apiHandler'>;
44
- export declare type PluginObjectSettings = {
44
+ export declare type PluginTextObjectSettings = {
45
45
  apiHandler?: PluginTextApiHandler;
46
46
  };
47
- export declare type PluginObject = Plugin<PluginDataProps> & {
48
- setSettings: (settings: PluginObjectSettings) => PluginObject;
47
+ export declare type PluginTextObject = Plugin<PluginDataProps> & {
48
+ setSettings: (settings: PluginTextObjectSettings) => PluginTextObject;
49
49
  _apiHandler?: PluginTextApiHandler;
50
50
  };
51
- declare const plugin: PluginObject;
51
+ declare const plugin: PluginTextObject;
52
52
  export default plugin;
@@ -1 +1,2 @@
1
- export { PluginTextApiHandler, PluginTextProps, PluginText, PluginObjectSettings as PluginTextObjectSettings, PluginObject as PluginTextObject, default as pluginText, } from './Text';
1
+ export * from './Text';
2
+ export { default as pluginText } from './Text';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.pluginText = exports.PluginText = void 0;
3
+ exports.pluginText = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./Text"), exports);
7
6
  var Text_1 = require("./Text");
8
- Object.defineProperty(exports, "PluginText", { enumerable: true, get: function () { return Text_1.PluginText; } });
9
- Object.defineProperty(exports, "pluginText", { enumerable: true, get: function () { return __importDefault(Text_1).default; } });
7
+ Object.defineProperty(exports, "pluginText", { enumerable: true, get: function () { return tslib_1.__importDefault(Text_1).default; } });
@@ -1 +1,2 @@
1
- export { PluginTitle, PluginTitleProps, default as pluginTitle } from './Title';
1
+ export * from './Title';
2
+ export { default as pluginTitle } from './Title';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.pluginTitle = exports.PluginTitle = void 0;
3
+ exports.pluginTitle = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./Title"), exports);
7
6
  var Title_1 = require("./Title");
8
- Object.defineProperty(exports, "PluginTitle", { enumerable: true, get: function () { return Title_1.PluginTitle; } });
9
- Object.defineProperty(exports, "pluginTitle", { enumerable: true, get: function () { return __importDefault(Title_1).default; } });
7
+ Object.defineProperty(exports, "pluginTitle", { enumerable: true, get: function () { return tslib_1.__importDefault(Title_1).default; } });
@@ -21,7 +21,6 @@ interface DashKitDefaultProps {
21
21
  overlayControls?: Record<string, OverlayControlItem[]>;
22
22
  noOverlay?: boolean;
23
23
  draggableHandleClassName?: string;
24
- _EXPERIMENTAL_preventDoubleCompact?: boolean;
25
24
  }
26
25
  export interface DashKitProps extends DashKitGeneralProps, Partial<DashKitDefaultProps> {
27
26
  }
@@ -38,7 +38,7 @@ class GridItem extends React.PureComponent {
38
38
  return (React.createElement("div", Object.assign({ className: b({
39
39
  'is-dragging': isDragging,
40
40
  'with-custom-handle': withCustomHandle,
41
- }, preparedClassName), "data-qa": "dashkit-grid-item", style: style }, reactGridLayoutProps),
41
+ }, preparedClassName), "data-qa": "dashkit-grid-item", style: style, ref: this.props.forwardedRef }, reactGridLayoutProps),
42
42
  React.createElement("div", { className: b('item', { editMode: editMode && !_editActive && !noOverlay }) },
43
43
  React.createElement(Item, { id: this.props.id, item: this.props.item, shouldItemUpdate: !isDragging, width: width, height: height, transform: transform, adjustWidgetLayout: this.props.adjustWidgetLayout, layout: this.props.layout, forwardedPluginRef: this.props.forwardedPluginRef })),
44
44
  !noOverlay && this.renderOverlay(),
@@ -52,6 +52,7 @@ GridItem.propTypes = {
52
52
  isDragging: PropTypes.bool,
53
53
  layout: PropTypes.array,
54
54
  overlayControls: PropTypes.object,
55
+ forwardedRef: PropTypes.any,
55
56
  forwardedPluginRef: PropTypes.any,
56
57
  // from react-grid-layout:
57
58
  children: PropTypes.node,
@@ -66,5 +67,5 @@ GridItem.propTypes = {
66
67
  };
67
68
  GridItem.contextType = DashKitContext;
68
69
  export default React.forwardRef((props, ref) => {
69
- return React.createElement(GridItem, Object.assign({}, props, { forwardedPluginRef: ref }));
70
+ return React.createElement(GridItem, Object.assign({}, props, { forwardedRef: ref }));
70
71
  });
@@ -73,7 +73,7 @@ export default class GridLayout extends React.PureComponent {
73
73
  return (React.createElement(Layout, Object.assign({}, registerManager.gridLayout, { layout: layout, isDraggable: editMode, isResizable: editMode, onDragStart: this._onStart, onDragStop: this._onStop, onResizeStart: this._onStart, onResizeStop: this._onStop }, (draggableHandleClassName
74
74
  ? { draggableHandle: `.${draggableHandleClassName}` }
75
75
  : null)), config.items.map((item, i) => {
76
- return (React.createElement(GridItem, { ref: (pluginRef) => {
76
+ return (React.createElement(GridItem, { forwardedPluginRef: (pluginRef) => {
77
77
  this.pluginsRefs[i] = pluginRef;
78
78
  }, key: item.id, id: item.id, item: item, layout: layout, adjustWidgetLayout: this.adjustWidgetLayout, isDragging: this.state.isDragging, noOverlay: noOverlay, withCustomHandle: Boolean(draggableHandleClassName), overlayControls: this.props.overlayControls }));
79
79
  })));
@@ -3,8 +3,6 @@ import { DashKitContext } from '../context/DashKitContext';
3
3
  import { UpdateManager } from '../utils';
4
4
  import { getItemsParams, getItemsState } from '../shared';
5
5
  import isEqual from 'lodash/isEqual';
6
- import { utils as gridLayoutUtils } from 'react-grid-layout';
7
- const LAYOUT_COMPACTING_TYPE = 'vertical';
8
6
  function useMemoStateContext(props) {
9
7
  // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный
10
8
  // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,
@@ -34,22 +32,14 @@ function useMemoStateContext(props) {
34
32
  return Object.assign({}, item);
35
33
  }
36
34
  });
37
- // [experimental] if the _prevent Double Compact is enabled, then skip recalculate layout with auto height
38
- // после того, как у виждета активировали автовысоту и его параметр "h" изменился, это приведёт, также, и к
39
- // изменению параметра (координаты) "y" у элементов расположенных под ним, поэтому, после того, как
40
- // значения параметра "h" виджетов с активированной автовысотой были изменены, необходимо изменить и
41
- // координату "y" виджетов расположенных ниже
42
- const compactedLayout = props._EXPERIMENTAL_preventDoubleCompact
43
- ? currentInnerLayout
44
- : gridLayoutUtils.compact(currentInnerLayout, LAYOUT_COMPACTING_TYPE, props.registerManager.gridLayout.cols);
45
35
  const newConfig = UpdateManager.updateLayout({
46
- layout: compactedLayout,
36
+ layout: currentInnerLayout,
47
37
  config: props.config,
48
38
  });
49
39
  if (!isEqual(newConfig.layout, props.config.layout)) {
50
40
  onChange({ config: newConfig });
51
41
  }
52
- }, [props._EXPERIMENTAL_preventDoubleCompact, props.registerManager, props.config, onChange]);
42
+ }, [props.config, onChange]);
53
43
  const onItemRemove = React.useCallback((id) => {
54
44
  onChange(UpdateManager.removeItem({
55
45
  id,
@@ -42,12 +42,12 @@ export declare class PluginText extends React.PureComponent<PluginTextProps, Plu
42
42
  get withMarkdown(): boolean;
43
43
  }
44
44
  declare type PluginDataProps = Omit<PluginTextProps, 'apiHandler'>;
45
- export declare type PluginObjectSettings = {
45
+ export declare type PluginTextObjectSettings = {
46
46
  apiHandler?: PluginTextApiHandler;
47
47
  };
48
- export declare type PluginObject = Plugin<PluginDataProps> & {
49
- setSettings: (settings: PluginObjectSettings) => PluginObject;
48
+ export declare type PluginTextObject = Plugin<PluginDataProps> & {
49
+ setSettings: (settings: PluginTextObjectSettings) => PluginTextObject;
50
50
  _apiHandler?: PluginTextApiHandler;
51
51
  };
52
- declare const plugin: PluginObject;
52
+ declare const plugin: PluginTextObject;
53
53
  export default plugin;
@@ -1 +1,2 @@
1
- export { PluginTextApiHandler, PluginTextProps, PluginText, PluginObjectSettings as PluginTextObjectSettings, PluginObject as PluginTextObject, default as pluginText, } from './Text';
1
+ export * from './Text';
2
+ export { default as pluginText } from './Text';
@@ -1 +1,2 @@
1
- export { PluginText, default as pluginText, } from './Text';
1
+ export * from './Text';
2
+ export { default as pluginText } from './Text';
@@ -1 +1,2 @@
1
- export { PluginTitle, PluginTitleProps, default as pluginTitle } from './Title';
1
+ export * from './Title';
2
+ export { default as pluginTitle } from './Title';
@@ -1 +1,2 @@
1
- export { PluginTitle, default as pluginTitle } from './Title';
1
+ export * from './Title';
2
+ export { default as pluginTitle } from './Title';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/dashkit",
3
- "version": "3.5.0",
3
+ "version": "4.1.0",
4
4
  "description": "Library for rendering dashboard grid layout",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,17 +28,17 @@
28
28
  "test": "jest",
29
29
  "clean": "gulp clean",
30
30
  "build": "gulp",
31
- "start": "start-storybook -p 7120",
31
+ "start": "env TS_NODE_PROJECT=.storybook/tsconfig.json start-storybook -p 7120",
32
32
  "typecheck": "tsc --noEmit",
33
- "build-storybook": "build-storybook -c .storybook -o storybook-static",
33
+ "build-storybook": "env TS_NODE_PROJECT=.storybook/tsconfig.json build-storybook -c .storybook -o storybook-static",
34
34
  "prepare": "husky install",
35
35
  "prepublishOnly": "npm run lint && npm run test && npm run build"
36
36
  },
37
37
  "dependencies": {
38
+ "@gravity-ui/i18n": "^1.0.0",
38
39
  "hashids": "^2.2.8",
39
40
  "immutability-helper": "^3.1.1",
40
- "react-grid-layout": "^0.18.3",
41
- "@gravity-ui/i18n": "^1.0.0"
41
+ "react-grid-layout": "^1.3.4"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@gravity-ui/uikit": "^3.0.0",