@gravity-ui/dashkit 9.3.2 → 10.0.0-beta.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.
Files changed (94) hide show
  1. package/README.md +1 -1
  2. package/build/cjs/components/DashKit/DashKit.d.ts +2 -2
  3. package/build/cjs/components/DashKit/DashKit.js +2 -2
  4. package/build/cjs/components/DashKit/DashKit.js.map +1 -1
  5. package/build/cjs/components/DashKitView/DashKitView.d.ts +3 -5
  6. package/build/cjs/components/DashKitView/DashKitView.js.map +1 -1
  7. package/build/cjs/components/GridItem/GridItem.d.ts +32 -2
  8. package/build/cjs/components/GridItem/GridItem.js +9 -42
  9. package/build/cjs/components/GridItem/GridItem.js.map +1 -1
  10. package/build/cjs/components/GridLayout/GridLayout.d.ts +55 -65
  11. package/build/cjs/components/GridLayout/GridLayout.js +39 -17
  12. package/build/cjs/components/GridLayout/GridLayout.js.map +1 -1
  13. package/build/cjs/components/GridLayout/ReactGridLayout.d.ts +13 -2
  14. package/build/cjs/components/GridLayout/ReactGridLayout.js +27 -6
  15. package/build/cjs/components/GridLayout/ReactGridLayout.js.map +1 -1
  16. package/build/cjs/components/GridLayout/types.d.ts +59 -0
  17. package/build/cjs/components/GridLayout/types.js +3 -0
  18. package/build/cjs/components/GridLayout/types.js.map +1 -0
  19. package/build/cjs/components/Item/Item.d.ts +17 -72
  20. package/build/cjs/components/Item/Item.js +3 -12
  21. package/build/cjs/components/Item/Item.js.map +1 -1
  22. package/build/cjs/components/Item/types.d.ts +14 -0
  23. package/build/cjs/components/Item/types.js +3 -0
  24. package/build/cjs/components/Item/types.js.map +1 -0
  25. package/build/cjs/components/MobileLayout/MobileLayout.d.ts +7 -7
  26. package/build/cjs/components/MobileLayout/MobileLayout.js.map +1 -1
  27. package/build/cjs/components/OverlayControls/OverlayControls.d.ts +1 -1
  28. package/build/cjs/components/OverlayControls/OverlayControls.js.map +1 -1
  29. package/build/cjs/context/DashKitContext.d.ts +24 -14
  30. package/build/cjs/context/DashKitContext.js.map +1 -1
  31. package/build/cjs/hocs/prepareItem.d.ts +21 -71
  32. package/build/cjs/hocs/prepareItem.js +8 -29
  33. package/build/cjs/hocs/prepareItem.js.map +1 -1
  34. package/build/cjs/hocs/withContext.d.ts +12 -2
  35. package/build/cjs/hocs/withContext.js +35 -14
  36. package/build/cjs/hocs/withContext.js.map +1 -1
  37. package/build/cjs/package.json +1 -1
  38. package/build/cjs/typings/common.d.ts +6 -4
  39. package/build/cjs/typings/common.js.map +1 -1
  40. package/build/cjs/typings/config.d.ts +3 -7
  41. package/build/cjs/typings/config.js.map +1 -1
  42. package/build/cjs/typings/plugin.d.ts +7 -7
  43. package/build/cjs/typings/plugin.js.map +1 -1
  44. package/build/cjs/utils/register-manager.d.ts +2 -3
  45. package/build/cjs/utils/register-manager.js.map +1 -1
  46. package/build/cjs/utils/update-manager.d.ts +2 -2
  47. package/build/cjs/utils/update-manager.js.map +1 -1
  48. package/build/esm/components/DashKit/DashKit.d.ts +2 -2
  49. package/build/esm/components/DashKit/DashKit.js +2 -2
  50. package/build/esm/components/DashKit/DashKit.js.map +1 -1
  51. package/build/esm/components/DashKitView/DashKitView.d.ts +3 -5
  52. package/build/esm/components/DashKitView/DashKitView.js.map +1 -1
  53. package/build/esm/components/GridItem/GridItem.d.ts +32 -2
  54. package/build/esm/components/GridItem/GridItem.js +9 -42
  55. package/build/esm/components/GridItem/GridItem.js.map +1 -1
  56. package/build/esm/components/GridLayout/GridLayout.d.ts +55 -65
  57. package/build/esm/components/GridLayout/GridLayout.js +39 -17
  58. package/build/esm/components/GridLayout/GridLayout.js.map +1 -1
  59. package/build/esm/components/GridLayout/ReactGridLayout.d.ts +13 -2
  60. package/build/esm/components/GridLayout/ReactGridLayout.js +27 -6
  61. package/build/esm/components/GridLayout/ReactGridLayout.js.map +1 -1
  62. package/build/esm/components/GridLayout/types.d.ts +59 -0
  63. package/build/esm/components/GridLayout/types.js +2 -0
  64. package/build/esm/components/GridLayout/types.js.map +1 -0
  65. package/build/esm/components/Item/Item.d.ts +17 -72
  66. package/build/esm/components/Item/Item.js +3 -12
  67. package/build/esm/components/Item/Item.js.map +1 -1
  68. package/build/esm/components/Item/types.d.ts +14 -0
  69. package/build/esm/components/Item/types.js +2 -0
  70. package/build/esm/components/Item/types.js.map +1 -0
  71. package/build/esm/components/MobileLayout/MobileLayout.d.ts +7 -7
  72. package/build/esm/components/MobileLayout/MobileLayout.js.map +1 -1
  73. package/build/esm/components/OverlayControls/OverlayControls.d.ts +1 -1
  74. package/build/esm/components/OverlayControls/OverlayControls.js.map +1 -1
  75. package/build/esm/context/DashKitContext.d.ts +24 -14
  76. package/build/esm/context/DashKitContext.js.map +1 -1
  77. package/build/esm/hocs/prepareItem.d.ts +21 -71
  78. package/build/esm/hocs/prepareItem.js +8 -29
  79. package/build/esm/hocs/prepareItem.js.map +1 -1
  80. package/build/esm/hocs/withContext.d.ts +12 -2
  81. package/build/esm/hocs/withContext.js +35 -14
  82. package/build/esm/hocs/withContext.js.map +1 -1
  83. package/build/esm/package.json +1 -1
  84. package/build/esm/typings/common.d.ts +6 -4
  85. package/build/esm/typings/common.js.map +1 -1
  86. package/build/esm/typings/config.d.ts +3 -7
  87. package/build/esm/typings/config.js.map +1 -1
  88. package/build/esm/typings/plugin.d.ts +7 -7
  89. package/build/esm/typings/plugin.js.map +1 -1
  90. package/build/esm/utils/register-manager.d.ts +2 -3
  91. package/build/esm/utils/register-manager.js.map +1 -1
  92. package/build/esm/utils/update-manager.d.ts +2 -2
  93. package/build/esm/utils/update-manager.js.map +1 -1
  94. package/package.json +1 -1
package/README.md CHANGED
@@ -25,7 +25,7 @@ Plugins are required to create custom widgets.
25
25
 
26
26
  ```ts
27
27
  type ItemManipulationCallback = (eventData: {
28
- layout: Layouts;
28
+ layout: Layout[];
29
29
  oldItem: Layout;
30
30
  newItem: Layout;
31
31
  placeholder: Layout;
@@ -25,7 +25,7 @@ interface DashKitDefaultProps {
25
25
  itemsStateAndParams: ItemsStateAndParams;
26
26
  groups?: DashKitGroup[];
27
27
  }) => void;
28
- onDrop?: (dropProps: ItemDropProps) => void;
28
+ onDrop: (dropProps: ItemDropProps) => void;
29
29
  onItemMountChange?: (item: ConfigItem, state: {
30
30
  isAsync: boolean;
31
31
  isMounted: boolean;
@@ -73,7 +73,7 @@ export declare class DashKit extends React.PureComponent<DashKitInnerProps> {
73
73
  }): ConfigLayout[];
74
74
  metaRef: React.RefObject<GridLayout>;
75
75
  render(): JSX.Element;
76
- getItemsMeta(): any;
76
+ getItemsMeta(): Promise<any>[];
77
77
  reloadItems(options?: {
78
78
  targetIds?: string[];
79
79
  force?: boolean;
@@ -88,8 +88,8 @@ class DashKit extends react_1.default.PureComponent {
88
88
  return content;
89
89
  }
90
90
  getItemsMeta() {
91
- var _a;
92
- return (_a = this.metaRef.current) === null || _a === void 0 ? void 0 : _a.getItemsMeta();
91
+ var _a, _b;
92
+ return (_b = (_a = this.metaRef.current) === null || _a === void 0 ? void 0 : _a.getItemsMeta()) !== null && _b !== void 0 ? _b : [];
93
93
  }
94
94
  reloadItems(options) {
95
95
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"DashKit.js","sourceRoot":"../../../../src","sources":["components/DashKit/DashKit.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport noop from 'lodash/noop';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../../constants';\nimport {DashKitDnDContext} from '../../context';\nimport type {\n Config,\n ConfigItem,\n ConfigLayout,\n GlobalParams,\n ItemDropProps,\n ItemsStateAndParams,\n} from '../../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ContextProps,\n DashKitGroup,\n GridReflowOptions,\n ItemManipulationCallback,\n MenuItem,\n Plugin,\n ReactGridLayoutProps,\n SetConfigItem,\n Settings,\n SettingsProps,\n} from '../../typings';\nimport {RegisterManager, UpdateManager, reflowLayout} from '../../utils';\nimport {DashKitDnDWrapper} from '../DashKitDnDWrapper/DashKitDnDWrapper';\nimport DashKitView from '../DashKitView/DashKitView';\nimport GridLayout from '../GridLayout/GridLayout';\nimport type {OverlayControlItem, PreparedCopyItemOptions} from '../OverlayControls/OverlayControls';\n\ninterface DashKitGeneralProps {\n config: Config;\n editMode: boolean;\n draggableHandleClassName?: string;\n overlayControls?: Record<string, OverlayControlItem[]> | null;\n overlayMenuItems?: MenuItem[] | null;\n}\n\ninterface DashKitDefaultProps {\n defaultGlobalParams: GlobalParams;\n globalParams: GlobalParams;\n itemsStateAndParams: ItemsStateAndParams;\n settings: SettingsProps;\n context: ContextProps;\n noOverlay: boolean;\n focusable?: boolean;\n groups?: DashKitGroup[];\n\n onItemEdit: (item: ConfigItem) => void;\n onChange: (data: {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n groups?: DashKitGroup[];\n }) => void;\n\n onDrop?: (dropProps: ItemDropProps) => void;\n\n onItemMountChange?: (item: ConfigItem, state: {isAsync: boolean; isMounted: boolean}) => void;\n onItemRender?: (item: ConfigItem) => void;\n\n getPreparedCopyItemOptions?: (options: PreparedCopyItemOptions) => PreparedCopyItemOptions;\n onCopyFulfill?: (error: null | Error, data?: PreparedCopyItemOptions) => void;\n\n onItemFocus?: (item: ConfigItem) => void;\n onItemBlur?: (item: ConfigItem) => void;\n\n onDragStart?: ItemManipulationCallback;\n onDrag?: ItemManipulationCallback;\n onDragStop?: ItemManipulationCallback;\n onResizeStart?: ItemManipulationCallback;\n onResize?: ItemManipulationCallback;\n onResizeStop?: ItemManipulationCallback;\n}\n\nexport interface DashKitProps extends DashKitGeneralProps, Partial<DashKitDefaultProps> {}\n\ntype DashKitInnerProps = DashKitGeneralProps & DashKitDefaultProps;\n\nconst registerManager = new RegisterManager();\n\nconst getReflowProps = (props: ReactGridLayoutProps): GridReflowOptions =>\n Object.assign(\n {compactType: 'vertical', cols: 36},\n pick(props, 'cols', 'maxRows', 'compactType'),\n );\n\nconst getReflowGroupsConfig = (groups: DashKitGroup[] = []) => {\n const defaultGridProps = getReflowProps(registerManager.gridLayout);\n\n return {\n defaultProps: defaultGridProps,\n groups: groups.reduce<Record<string, GridReflowOptions>>((memo, g) => {\n const groupId = g.id || DEFAULT_GROUP;\n memo[groupId] = g.gridProperties\n ? getReflowProps(g.gridProperties(defaultGridProps))\n : defaultGridProps;\n\n return memo;\n }, {}),\n };\n};\n\nexport class DashKit extends React.PureComponent<DashKitInnerProps> {\n static defaultProps: DashKitDefaultProps = {\n onItemEdit: noop,\n onChange: noop,\n onDrop: noop,\n defaultGlobalParams: {},\n globalParams: {},\n itemsStateAndParams: {},\n settings: {\n autoupdateInterval: 0,\n silentLoading: false,\n },\n context: {},\n noOverlay: false,\n focusable: false,\n };\n\n static contextType = DashKitDnDContext;\n\n static registerPlugins(...plugins: Plugin[]) {\n plugins.forEach((plugin) => {\n registerManager.registerPlugin(plugin);\n });\n }\n\n static reloadPlugins(...plugins: Plugin[]) {\n plugins.forEach((plugin) => {\n registerManager.reloadPlugin(plugin);\n });\n }\n\n static setSettings(settings: Settings) {\n registerManager.setSettings(settings);\n }\n\n static setItem({\n item: setItem,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n groups = [],\n }: {\n item: SetConfigItem;\n namespace?: string;\n config: Config;\n options?: Omit<AddNewItemOptions, 'reflowLayoutOptions'>;\n groups?: DashKitGroup[];\n }): Config {\n if (setItem.id) {\n return UpdateManager.editItem({\n item: setItem,\n namespace,\n config,\n options,\n });\n } else {\n const item = setItem as AddConfigItem;\n const layout = {...registerManager.getItem(item.type).defaultLayout};\n\n const reflowLayoutOptions = getReflowGroupsConfig(groups);\n\n const copyItem = {...item};\n\n if (copyItem.layout) {\n Object.assign(layout, copyItem.layout);\n delete copyItem.layout;\n }\n\n return UpdateManager.addItem({\n item: copyItem,\n namespace,\n config,\n layout,\n options: {...options, reflowLayoutOptions},\n });\n }\n }\n\n static removeItem({\n id,\n config,\n itemsStateAndParams,\n }: {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n }): {config: Config; itemsStateAndParams: ItemsStateAndParams} {\n return UpdateManager.removeItem({id, config, itemsStateAndParams});\n }\n\n static reflowLayout({\n newLayoutItem,\n layout,\n groups,\n }: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n groups?: DashKitGroup[];\n }) {\n return reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions: getReflowGroupsConfig(groups),\n });\n }\n\n metaRef = React.createRef<GridLayout>();\n\n render() {\n const content = (\n <DashKitView registerManager={registerManager} ref={this.metaRef} {...this.props} />\n );\n\n if (!this.context && this.props.groups) {\n return <DashKitDnDWrapper>{content}</DashKitDnDWrapper>;\n }\n\n return content;\n }\n\n getItemsMeta() {\n return this.metaRef.current?.getItemsMeta();\n }\n\n reloadItems(options?: {targetIds?: string[]; force?: boolean}) {\n this.metaRef.current?.reloadItems(options);\n }\n}\n"]}
1
+ {"version":3,"file":"DashKit.js","sourceRoot":"../../../../src","sources":["components/DashKit/DashKit.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport noop from 'lodash/noop';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../../constants';\nimport {DashKitDnDContext} from '../../context';\nimport type {\n Config,\n ConfigItem,\n ConfigLayout,\n GlobalParams,\n ItemDropProps,\n ItemsStateAndParams,\n} from '../../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ContextProps,\n DashKitGroup,\n GridReflowOptions,\n ItemManipulationCallback,\n MenuItem,\n Plugin,\n ReactGridLayoutProps,\n SetConfigItem,\n Settings,\n SettingsProps,\n} from '../../typings';\nimport {RegisterManager, UpdateManager, reflowLayout} from '../../utils';\nimport {DashKitDnDWrapper} from '../DashKitDnDWrapper/DashKitDnDWrapper';\nimport DashKitView from '../DashKitView/DashKitView';\nimport GridLayout from '../GridLayout/GridLayout';\nimport type {OverlayControlItem, PreparedCopyItemOptions} from '../OverlayControls/OverlayControls';\n\ninterface DashKitGeneralProps {\n config: Config;\n editMode: boolean;\n draggableHandleClassName?: string;\n overlayControls?: Record<string, OverlayControlItem[]> | null;\n overlayMenuItems?: MenuItem[] | null;\n}\n\ninterface DashKitDefaultProps {\n defaultGlobalParams: GlobalParams;\n globalParams: GlobalParams;\n itemsStateAndParams: ItemsStateAndParams;\n settings: SettingsProps;\n context: ContextProps;\n noOverlay: boolean;\n focusable?: boolean;\n groups?: DashKitGroup[];\n\n onItemEdit: (item: ConfigItem) => void;\n onChange: (data: {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n groups?: DashKitGroup[];\n }) => void;\n\n onDrop: (dropProps: ItemDropProps) => void;\n\n onItemMountChange?: (item: ConfigItem, state: {isAsync: boolean; isMounted: boolean}) => void;\n onItemRender?: (item: ConfigItem) => void;\n\n getPreparedCopyItemOptions?: (options: PreparedCopyItemOptions) => PreparedCopyItemOptions;\n onCopyFulfill?: (error: null | Error, data?: PreparedCopyItemOptions) => void;\n\n onItemFocus?: (item: ConfigItem) => void;\n onItemBlur?: (item: ConfigItem) => void;\n\n onDragStart?: ItemManipulationCallback;\n onDrag?: ItemManipulationCallback;\n onDragStop?: ItemManipulationCallback;\n onResizeStart?: ItemManipulationCallback;\n onResize?: ItemManipulationCallback;\n onResizeStop?: ItemManipulationCallback;\n}\n\nexport interface DashKitProps extends DashKitGeneralProps, Partial<DashKitDefaultProps> {}\n\ntype DashKitInnerProps = DashKitGeneralProps & DashKitDefaultProps;\n\nconst registerManager = new RegisterManager();\n\nconst getReflowProps = (props: ReactGridLayoutProps): GridReflowOptions =>\n Object.assign(\n {compactType: 'vertical', cols: 36},\n pick(props, 'cols', 'maxRows', 'compactType'),\n );\n\nconst getReflowGroupsConfig = (groups: DashKitGroup[] = []) => {\n const defaultGridProps = getReflowProps(registerManager.gridLayout);\n\n return {\n defaultProps: defaultGridProps,\n groups: groups.reduce<Record<string, GridReflowOptions>>((memo, g) => {\n const groupId = g.id || DEFAULT_GROUP;\n memo[groupId] = g.gridProperties\n ? getReflowProps(g.gridProperties(defaultGridProps))\n : defaultGridProps;\n\n return memo;\n }, {}),\n };\n};\n\nexport class DashKit extends React.PureComponent<DashKitInnerProps> {\n static defaultProps: DashKitDefaultProps = {\n onItemEdit: noop,\n onChange: noop,\n onDrop: noop,\n defaultGlobalParams: {},\n globalParams: {},\n itemsStateAndParams: {},\n settings: {\n autoupdateInterval: 0,\n silentLoading: false,\n },\n context: {},\n noOverlay: false,\n focusable: false,\n };\n\n static contextType = DashKitDnDContext;\n\n static registerPlugins(...plugins: Plugin[]) {\n plugins.forEach((plugin) => {\n registerManager.registerPlugin(plugin);\n });\n }\n\n static reloadPlugins(...plugins: Plugin[]) {\n plugins.forEach((plugin) => {\n registerManager.reloadPlugin(plugin);\n });\n }\n\n static setSettings(settings: Settings) {\n registerManager.setSettings(settings);\n }\n\n static setItem({\n item: setItem,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n groups = [],\n }: {\n item: SetConfigItem;\n namespace?: string;\n config: Config;\n options?: Omit<AddNewItemOptions, 'reflowLayoutOptions'>;\n groups?: DashKitGroup[];\n }): Config {\n if (setItem.id) {\n return UpdateManager.editItem({\n item: setItem,\n namespace,\n config,\n options,\n });\n } else {\n const item = setItem as AddConfigItem;\n const layout = {...registerManager.getItem(item.type).defaultLayout};\n\n const reflowLayoutOptions = getReflowGroupsConfig(groups);\n\n const copyItem = {...item};\n\n if (copyItem.layout) {\n Object.assign(layout, copyItem.layout);\n delete copyItem.layout;\n }\n\n return UpdateManager.addItem({\n item: copyItem,\n namespace,\n config,\n layout,\n options: {...options, reflowLayoutOptions},\n });\n }\n }\n\n static removeItem({\n id,\n config,\n itemsStateAndParams,\n }: {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n }): {config: Config; itemsStateAndParams: ItemsStateAndParams} {\n return UpdateManager.removeItem({id, config, itemsStateAndParams});\n }\n\n static reflowLayout({\n newLayoutItem,\n layout,\n groups,\n }: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n groups?: DashKitGroup[];\n }) {\n return reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions: getReflowGroupsConfig(groups),\n });\n }\n\n metaRef = React.createRef<GridLayout>();\n\n render() {\n const content = (\n <DashKitView registerManager={registerManager} ref={this.metaRef} {...this.props} />\n );\n\n if (!this.context && this.props.groups) {\n return <DashKitDnDWrapper>{content}</DashKitDnDWrapper>;\n }\n\n return content;\n }\n\n getItemsMeta() {\n return this.metaRef.current?.getItemsMeta() ?? [];\n }\n\n reloadItems(options?: {targetIds?: string[]; force?: boolean}) {\n this.metaRef.current?.reloadItems(options);\n }\n}\n"]}
@@ -1,8 +1,6 @@
1
1
  import React from 'react';
2
- import type { RegisterManager } from "../../utils/index.js";
3
- import type { DashKitProps } from "../DashKit/index.js";
2
+ import type { DashKitWithContextProps } from "../../hocs/withContext.js";
4
3
  import "./DashKitView.css";
5
- declare const DashKitViewForwardedMeta: React.ForwardRefExoticComponent<DashKitProps & {
6
- registerManager: RegisterManager;
7
- } & React.RefAttributes<unknown>>;
4
+ type DashKitViewProps = Omit<DashKitWithContextProps, 'layout' | 'forwardedMetaRef'>;
5
+ declare const DashKitViewForwardedMeta: React.ForwardRefExoticComponent<DashKitViewProps & React.RefAttributes<unknown>>;
8
6
  export default DashKitViewForwardedMeta;
@@ -1 +1 @@
1
- {"version":3,"file":"DashKitView.js","sourceRoot":"../../../../src","sources":["components/DashKitView/DashKitView.tsx"],"names":[],"mappings":";;;AAAA,0DAA0B;AAE1B,oDAA6C;AAC7C,2DAAmD;AACnD,gEAA6D;AAE7D,0CAAkC;AAElC,qFAAkD;AAClD,2FAAwD;AAExD,6BAA4B;AAE5B,MAAM,CAAC,GAAG,IAAA,OAAE,EAAC,SAAS,CAAC,CAAC;AAMxB,SAAS,WAAW;IAChB,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;IACjD,MAAM,EAAC,eAAe,EAAE,gBAAgB,EAAC,GAAG,OAAO,CAAC;IAEpD,OAAO,CACH,uCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,IACrD,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjC,8BAAC,sBAAY,OAAG,CACnB,CAAC,CAAC,CAAC,CACA,8BAAC,oBAAU,IAAC,GAAG,EAAE,gBAAgB,GAAI,CACxC,CACC,CACT,CAAC;AACN,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAA,yBAAW,EAAC,WAAW,CAAC,CAAC;AAExD,MAAM,wBAAwB,GAAG,eAAK,CAAC,UAAU,CAAC,CAAC,KAAuB,EAAE,GAAG,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAA,kCAAkB,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvE,OAAO,8BAAC,sBAAsB,oBAAK,KAAK,IAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;AACxF,CAAC,CAAC,CAAC;AAEH,wBAAwB,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAElE,kBAAe,wBAAwB,CAAC","sourcesContent":["import React from 'react';\n\nimport {DashKitContext} from '../../context';\nimport {withContext} from '../../hocs/withContext';\nimport {useCalcPropsLayout} from '../../hooks/useCalcLayout';\nimport type {RegisterManager} from '../../utils';\nimport {cn} from '../../utils/cn';\nimport type {DashKitProps} from '../DashKit';\nimport GridLayout from '../GridLayout/GridLayout';\nimport MobileLayout from '../MobileLayout/MobileLayout';\n\nimport './DashKitView.scss';\n\nconst b = cn('dashkit');\n\ntype DashKitViewProps = DashKitProps & {\n registerManager: RegisterManager;\n};\n\nfunction DashKitView() {\n const context = React.useContext(DashKitContext);\n const {registerManager, forwardedMetaRef} = context;\n\n return (\n <div className={b({theme: registerManager.settings.theme})}>\n {registerManager.settings.isMobile ? (\n <MobileLayout />\n ) : (\n <GridLayout ref={forwardedMetaRef} />\n )}\n </div>\n );\n}\n\nconst DashKitViewWithContext = withContext(DashKitView);\n\nconst DashKitViewForwardedMeta = React.forwardRef((props: DashKitViewProps, ref) => {\n const layout = useCalcPropsLayout(props.config, props.registerManager);\n\n return <DashKitViewWithContext {...props} layout={layout} forwardedMetaRef={ref} />;\n});\n\nDashKitViewForwardedMeta.displayName = 'DashKitViewForwardedMeta';\n\nexport default DashKitViewForwardedMeta;\n"]}
1
+ {"version":3,"file":"DashKitView.js","sourceRoot":"../../../../src","sources":["components/DashKitView/DashKitView.tsx"],"names":[],"mappings":";;;AAAA,0DAA0B;AAE1B,oDAA6C;AAC7C,2DAAmD;AAEnD,gEAA6D;AAC7D,0CAAkC;AAClC,qFAAkD;AAClD,2FAAwD;AAExD,6BAA4B;AAE5B,MAAM,CAAC,GAAG,IAAA,OAAE,EAAC,SAAS,CAAC,CAAC;AAIxB,SAAS,WAAW;IAChB,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;IACjD,MAAM,EAAC,eAAe,EAAE,gBAAgB,EAAC,GAAG,OAAO,CAAC;IAEpD,OAAO,CACH,uCAAK,SAAS,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,IACrD,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjC,8BAAC,sBAAY,OAAG,CACnB,CAAC,CAAC,CAAC,CACA,8BAAC,oBAAU,IAAC,GAAG,EAAE,gBAAgB,GAAI,CACxC,CACC,CACT,CAAC;AACN,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAA,yBAAW,EAAC,WAAW,CAAC,CAAC;AAExD,MAAM,wBAAwB,GAAG,eAAK,CAAC,UAAU,CAAC,CAAC,KAAuB,EAAE,GAAG,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAA,kCAAkB,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvE,OAAO,8BAAC,sBAAsB,oBAAK,KAAK,IAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;AACxF,CAAC,CAAC,CAAC;AAEH,wBAAwB,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAElE,kBAAe,wBAAwB,CAAC","sourcesContent":["import React from 'react';\n\nimport {DashKitContext} from '../../context';\nimport {withContext} from '../../hocs/withContext';\nimport type {DashKitWithContextProps} from '../../hocs/withContext';\nimport {useCalcPropsLayout} from '../../hooks/useCalcLayout';\nimport {cn} from '../../utils/cn';\nimport GridLayout from '../GridLayout/GridLayout';\nimport MobileLayout from '../MobileLayout/MobileLayout';\n\nimport './DashKitView.scss';\n\nconst b = cn('dashkit');\n\ntype DashKitViewProps = Omit<DashKitWithContextProps, 'layout' | 'forwardedMetaRef'>;\n\nfunction DashKitView() {\n const context = React.useContext(DashKitContext);\n const {registerManager, forwardedMetaRef} = context;\n\n return (\n <div className={b({theme: registerManager.settings.theme})}>\n {registerManager.settings.isMobile ? (\n <MobileLayout />\n ) : (\n <GridLayout ref={forwardedMetaRef} />\n )}\n </div>\n );\n}\n\nconst DashKitViewWithContext = withContext(DashKitView);\n\nconst DashKitViewForwardedMeta = React.forwardRef((props: DashKitViewProps, ref) => {\n const layout = useCalcPropsLayout(props.config, props.registerManager);\n\n return <DashKitViewWithContext {...props} layout={layout} forwardedMetaRef={ref} />;\n});\n\nDashKitViewForwardedMeta.displayName = 'DashKitViewForwardedMeta';\n\nexport default DashKitViewForwardedMeta;\n"]}
@@ -1,3 +1,33 @@
1
- export default GridItemForwarderRef;
2
- declare const GridItemForwarderRef: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
3
1
  import React from 'react';
2
+ import type { ConfigItem, ConfigLayout } from "../../shared/index.js";
3
+ import type { PluginRef, PluginWidgetProps, ReactGridLayoutProps } from "../../typings/index.js";
4
+ import type { DashKitProps } from "../DashKit/index.js";
5
+ import "./GridItem.css";
6
+ type GridItemProps = {
7
+ adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'];
8
+ gridLayout?: ReactGridLayoutProps;
9
+ id: string;
10
+ item: ConfigItem;
11
+ isDragging?: boolean;
12
+ isDraggedOut?: boolean;
13
+ layout: ConfigLayout[];
14
+ forwardedRef?: React.Ref<HTMLDivElement>;
15
+ forwardedPluginRef?: (pluginRef: PluginRef) => void;
16
+ isPlaceholder?: boolean;
17
+ onItemMountChange?: DashKitProps['onItemMountChange'];
18
+ onItemRender?: DashKitProps['onItemRender'];
19
+ children?: React.ReactNode;
20
+ className?: string;
21
+ style?: React.CSSProperties;
22
+ noOverlay?: boolean;
23
+ focusable?: boolean;
24
+ withCustomHandle?: boolean;
25
+ onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;
26
+ onMouseUp?: (e: React.MouseEvent<HTMLDivElement>) => void;
27
+ onTouchEnd?: (e: React.TouchEvent<HTMLDivElement>) => void;
28
+ onTouchStart?: (e: React.TouchEvent<HTMLDivElement>) => void;
29
+ onItemFocus?: DashKitProps['onItemFocus'];
30
+ onItemBlur?: DashKitProps['onItemBlur'];
31
+ };
32
+ declare const GridItemForwarderRef: React.ForwardRefExoticComponent<Omit<GridItemProps, "forwardedRef"> & React.RefAttributes<HTMLDivElement>>;
33
+ export default GridItemForwarderRef;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const react_1 = tslib_1.__importDefault(require("react"));
5
- const prop_types_1 = tslib_1.__importDefault(require("prop-types"));
6
5
  const constants_1 = require("../../constants/index.js");
7
6
  const context_1 = require("../../context/index.js");
8
7
  const cn_1 = require("../../utils/cn.js");
@@ -12,6 +11,8 @@ require("./GridItem.css");
12
11
  const b = (0, cn_1.cn)('dashkit-grid-item');
13
12
  class WindowFocusObserver {
14
13
  constructor() {
14
+ this.subscribers = 0;
15
+ this.isFocused = !document.hidden;
15
16
  this.blurHandler = (e) => {
16
17
  if (e.target === window) {
17
18
  this.isFocused = false;
@@ -22,8 +23,6 @@ class WindowFocusObserver {
22
23
  this.isFocused = true;
23
24
  }
24
25
  };
25
- this.subscribers = 0;
26
- this.isFocused = !document.hidden;
27
26
  window.addEventListener('blur', this.blurHandler, true);
28
27
  window.addEventListener('focus', this.focusHandler, true);
29
28
  }
@@ -41,22 +40,20 @@ class GridItem extends react_1.default.PureComponent {
41
40
  constructor() {
42
41
  super(...arguments);
43
42
  this._isAsyncItem = false;
43
+ this.controller = null;
44
44
  this.state = {
45
45
  isFocused: false,
46
46
  };
47
47
  this.onOverlayItemClick = () => {
48
48
  // Creating button element to trigger focus out
49
49
  const focusDummy = document.createElement('button');
50
- const styles = {
50
+ Object.assign(focusDummy.style, {
51
51
  width: '0',
52
52
  height: '0',
53
53
  opacity: '0',
54
54
  position: 'fixed',
55
55
  top: '0',
56
56
  left: '0',
57
- };
58
- Object.entries(styles).forEach(([key, value]) => {
59
- focusDummy.style[key] = value;
60
57
  });
61
58
  // requestAnimationFrame to make call after alert() or confirm()
62
59
  requestAnimationFrame(() => {
@@ -105,7 +102,7 @@ class GridItem extends react_1.default.PureComponent {
105
102
  const { item, focusable } = this.props;
106
103
  return (react_1.default.createElement(react_1.default.Fragment, null,
107
104
  react_1.default.createElement("div", { className: b('overlay') }),
108
- react_1.default.createElement(OverlayControls_1.default, { configItem: item, onItemClick: focusable ? this.onOverlayItemClick : null })));
105
+ react_1.default.createElement(OverlayControls_1.default, { configItem: item, onItemClick: focusable ? this.onOverlayItemClick : undefined })));
109
106
  }
110
107
  render() {
111
108
  // из-за бага, что Grid Items unmounts при изменении static, isDraggable, isResaizable
@@ -113,15 +110,12 @@ class GridItem extends react_1.default.PureComponent {
113
110
  const { style, onMouseDown, onMouseUp, onTouchEnd, onTouchStart, children, className, isDragging, isDraggedOut, noOverlay, focusable, withCustomHandle, isPlaceholder = false, } = this.props;
114
111
  const { editMode } = this.context;
115
112
  const { isFocused } = this.state;
116
- const width = Number.parseInt(style.width, 10);
117
- const height = Number.parseInt(style.height, 10);
118
- const transform = style.transform;
113
+ const width = (style === null || style === void 0 ? void 0 : style.width) === undefined ? undefined : Number.parseInt(String(style.width), 10);
114
+ const height = (style === null || style === void 0 ? void 0 : style.height) === undefined ? undefined : Number.parseInt(String(style.height), 10);
115
+ const transform = style === null || style === void 0 ? void 0 : style.transform;
119
116
  const preparedClassName = (editMode
120
117
  ? className
121
- : className
122
- .replace('react-resizable', '')
123
- .replace('react-draggable', '')
124
- .replace(constants_1.FOCUSED_CLASS_NAME, '')) +
118
+ : className === null || className === void 0 ? void 0 : className.replace('react-resizable', '').replace('react-draggable', '').replace(constants_1.FOCUSED_CLASS_NAME, '')) +
125
119
  (isFocused ? ` ${constants_1.FOCUSED_CLASS_NAME}` : '');
126
120
  const computedClassName = b({
127
121
  'is-dragging': isDragging,
@@ -148,33 +142,6 @@ class GridItem extends react_1.default.PureComponent {
148
142
  preparedChildren));
149
143
  }
150
144
  }
151
- GridItem.propTypes = {
152
- adjustWidgetLayout: prop_types_1.default.func.isRequired,
153
- gridLayout: prop_types_1.default.object,
154
- id: prop_types_1.default.string,
155
- item: prop_types_1.default.object,
156
- isDragging: prop_types_1.default.bool,
157
- isDraggedOut: prop_types_1.default.bool,
158
- layout: prop_types_1.default.array,
159
- forwardedRef: prop_types_1.default.any,
160
- forwardedPluginRef: prop_types_1.default.any,
161
- isPlaceholder: prop_types_1.default.bool,
162
- onItemMountChange: prop_types_1.default.func,
163
- onItemRender: prop_types_1.default.func,
164
- // from react-grid-layout:
165
- children: prop_types_1.default.node,
166
- className: prop_types_1.default.string,
167
- style: prop_types_1.default.object,
168
- noOverlay: prop_types_1.default.bool,
169
- focusable: prop_types_1.default.bool,
170
- withCustomHandle: prop_types_1.default.bool,
171
- onMouseDown: prop_types_1.default.func,
172
- onMouseUp: prop_types_1.default.func,
173
- onTouchEnd: prop_types_1.default.func,
174
- onTouchStart: prop_types_1.default.func,
175
- onItemFocus: prop_types_1.default.func,
176
- onItemBlur: prop_types_1.default.func,
177
- };
178
145
  GridItem.contextType = context_1.DashKitContext;
179
146
  const GridItemForwarderRef = react_1.default.forwardRef((props, ref) => {
180
147
  return react_1.default.createElement(GridItem, Object.assign({}, props, { forwardedRef: ref }));
@@ -1 +1 @@
1
- {"version":3,"file":"GridItem.js","sourceRoot":"../../../../src","sources":["components/GridItem/GridItem.js"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport {FOCUSED_CLASS_NAME} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport {cn} from '../../utils/cn';\nimport Item from '../Item/Item';\nimport OverlayControls from '../OverlayControls/OverlayControls';\n\nimport './GridItem.scss';\n\nconst b = cn('dashkit-grid-item');\n\nclass WindowFocusObserver {\n constructor() {\n this.subscribers = 0;\n this.isFocused = !document.hidden;\n\n window.addEventListener('blur', this.blurHandler, true);\n window.addEventListener('focus', this.focusHandler, true);\n }\n\n blurHandler = (e) => {\n if (e.target === window) {\n this.isFocused = false;\n }\n };\n\n focusHandler = (e) => {\n if (e.target === window) {\n this.isFocused = true;\n }\n };\n\n // Method to get state after all blur\\focus events in document are triggered\n async getFocusedState() {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n resolve(this.isFocused);\n });\n });\n }\n}\n\nconst windowFocusObserver = new WindowFocusObserver();\n\nclass GridItem extends React.PureComponent {\n static propTypes = {\n adjustWidgetLayout: PropTypes.func.isRequired,\n gridLayout: PropTypes.object,\n id: PropTypes.string,\n item: PropTypes.object,\n isDragging: PropTypes.bool,\n isDraggedOut: PropTypes.bool,\n layout: PropTypes.array,\n\n forwardedRef: PropTypes.any,\n forwardedPluginRef: PropTypes.any,\n isPlaceholder: PropTypes.bool,\n\n onItemMountChange: PropTypes.func,\n onItemRender: PropTypes.func,\n\n // from react-grid-layout:\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n noOverlay: PropTypes.bool,\n focusable: PropTypes.bool,\n withCustomHandle: PropTypes.bool,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onTouchStart: PropTypes.func,\n onItemFocus: PropTypes.func,\n onItemBlur: PropTypes.func,\n };\n\n static contextType = DashKitContext;\n\n _isAsyncItem = false;\n\n state = {\n isFocused: false,\n };\n\n renderOverlay() {\n const {isPlaceholder} = this.props;\n const {editMode} = this.context;\n\n if (editMode && this.props.item.data._editActive) {\n // needed for correst pointer-events: none work in firefox\n return <div className={b('overlay-placeholder')} />;\n }\n\n if (!editMode || this.props.item.data._editActive || isPlaceholder) {\n return null;\n }\n\n const {item, focusable} = this.props;\n\n return (\n <React.Fragment>\n <div className={b('overlay')} />\n <OverlayControls\n configItem={item}\n onItemClick={focusable ? this.onOverlayItemClick : null}\n />\n </React.Fragment>\n );\n }\n\n onOverlayItemClick = () => {\n // Creating button element to trigger focus out\n const focusDummy = document.createElement('button');\n const styles = {\n width: '0',\n height: '0',\n opacity: '0',\n position: 'fixed',\n top: '0',\n left: '0',\n };\n\n Object.entries(styles).forEach(([key, value]) => {\n focusDummy.style[key] = value;\n });\n\n // requestAnimationFrame to make call after alert() or confirm()\n requestAnimationFrame(() => {\n // Adding elment an changing focus\n document.body.appendChild(focusDummy);\n focusDummy.focus();\n document.body.removeChild(focusDummy);\n\n this.setState({isFocused: false});\n });\n };\n\n onFocusHandler = () => {\n this.setState({isFocused: true});\n\n if (this.props.onItemFocus) {\n // Sync focus and blur handlers\n windowFocusObserver.getFocusedState().then(() => {\n this.props.onItemFocus?.(this.props.item);\n });\n }\n\n if (this.controller) {\n this.controller.abort();\n }\n };\n\n onBlurHandler = () => {\n this.controller = new AbortController();\n\n windowFocusObserver.getFocusedState().then((isWindowFocused) => {\n if (!this.controller?.signal.aborted && isWindowFocused) {\n this.setState({isFocused: false});\n this.props.onItemBlur?.(this.props.item);\n }\n\n this.controller = null;\n });\n };\n\n render() {\n // из-за бага, что Grid Items unmounts при изменении static, isDraggable, isResaizable\n // https://github.com/STRML/react-grid-layout/issues/721\n const {\n style,\n onMouseDown,\n onMouseUp,\n onTouchEnd,\n onTouchStart,\n children,\n className,\n isDragging,\n isDraggedOut,\n noOverlay,\n focusable,\n withCustomHandle,\n isPlaceholder = false,\n } = this.props;\n const {editMode} = this.context;\n const {isFocused} = this.state;\n\n const width = Number.parseInt(style.width, 10);\n const height = Number.parseInt(style.height, 10);\n const transform = style.transform;\n const preparedClassName =\n (editMode\n ? className\n : className\n .replace('react-resizable', '')\n .replace('react-draggable', '')\n .replace(FOCUSED_CLASS_NAME, '')) +\n (isFocused ? ` ${FOCUSED_CLASS_NAME}` : '');\n const computedClassName = b(\n {\n 'is-dragging': isDragging,\n 'is-dragged-out': isDraggedOut,\n 'is-focused': isFocused,\n 'with-custom-handle': withCustomHandle,\n },\n preparedClassName,\n );\n\n const preparedChildren = editMode ? children : null;\n const reactGridLayoutProps = editMode\n ? {onMouseDown, onMouseUp, onTouchEnd, onTouchStart}\n : {};\n const reactFocusProps = focusable\n ? {\n onFocus: this.onFocusHandler,\n onBlur: this.onBlurHandler,\n tabIndex: -1,\n }\n : {};\n const {_editActive} = this.props.item.data;\n\n return (\n <div\n className={computedClassName}\n data-qa=\"dashkit-grid-item\"\n style={style}\n ref={this.props.forwardedRef}\n {...reactGridLayoutProps}\n {...reactFocusProps}\n >\n <div className={b('item', {editMode: editMode && !_editActive && !noOverlay})}>\n <Item\n id={this.props.id}\n item={this.props.item}\n shouldItemUpdate={!isDragging}\n width={width}\n height={height}\n transform={transform}\n isPlaceholder={isPlaceholder}\n adjustWidgetLayout={this.props.adjustWidgetLayout}\n layout={this.props.layout}\n forwardedPluginRef={this.props.forwardedPluginRef}\n onItemMountChange={this.props.onItemMountChange}\n onItemRender={this.props.onItemRender}\n gridLayout={this.props.gridLayout}\n />\n </div>\n {!noOverlay && this.renderOverlay()}\n {preparedChildren}\n </div>\n );\n }\n}\n\nconst GridItemForwarderRef = React.forwardRef((props, ref) => {\n return <GridItem {...props} forwardedRef={ref} />;\n});\n\nGridItemForwarderRef.displayName = 'forwardRef(GridItem)';\n\nexport default GridItemForwarderRef;\n"]}
1
+ {"version":3,"file":"GridItem.js","sourceRoot":"../../../../src","sources":["components/GridItem/GridItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {FOCUSED_CLASS_NAME} from '../../constants';\nimport {DashKitContext} from '../../context';\nimport type {ConfigItem, ConfigLayout} from '../../shared';\nimport type {PluginRef, PluginWidgetProps, ReactGridLayoutProps} from '../../typings';\nimport {cn} from '../../utils/cn';\nimport type {DashKitProps} from '../DashKit';\nimport Item from '../Item/Item';\nimport OverlayControls from '../OverlayControls/OverlayControls';\n\nimport './GridItem.scss';\n\nconst b = cn('dashkit-grid-item');\n\nclass WindowFocusObserver {\n subscribers = 0;\n isFocused = !document.hidden;\n\n constructor() {\n window.addEventListener('blur', this.blurHandler, true);\n window.addEventListener('focus', this.focusHandler, true);\n }\n\n blurHandler = (e: FocusEvent) => {\n if (e.target === window) {\n this.isFocused = false;\n }\n };\n\n focusHandler = (e: FocusEvent) => {\n if (e.target === window) {\n this.isFocused = true;\n }\n };\n\n // Method to get state after all blur\\focus events in document are triggered\n async getFocusedState(): Promise<boolean> {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n resolve(this.isFocused);\n });\n });\n }\n}\n\nconst windowFocusObserver = new WindowFocusObserver();\n\ntype GridItemProps = {\n adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'];\n gridLayout?: ReactGridLayoutProps;\n id: string;\n item: ConfigItem;\n isDragging?: boolean;\n isDraggedOut?: boolean;\n layout: ConfigLayout[];\n\n forwardedRef?: React.Ref<HTMLDivElement>;\n forwardedPluginRef?: (pluginRef: PluginRef) => void;\n isPlaceholder?: boolean;\n\n onItemMountChange?: DashKitProps['onItemMountChange'];\n onItemRender?: DashKitProps['onItemRender'];\n\n // from react-grid-layout:\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n noOverlay?: boolean;\n focusable?: boolean;\n withCustomHandle?: boolean;\n onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onMouseUp?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onTouchEnd?: (e: React.TouchEvent<HTMLDivElement>) => void;\n onTouchStart?: (e: React.TouchEvent<HTMLDivElement>) => void;\n onItemFocus?: DashKitProps['onItemFocus'];\n onItemBlur?: DashKitProps['onItemBlur'];\n};\n\ntype GridItemState = {\n isFocused: boolean;\n};\n\nclass GridItem extends React.PureComponent<GridItemProps, GridItemState> {\n static contextType = DashKitContext;\n context!: React.ContextType<typeof DashKitContext>;\n\n _isAsyncItem = false;\n controller: AbortController | null = null;\n\n state: GridItemState = {\n isFocused: false,\n };\n\n renderOverlay() {\n const {isPlaceholder} = this.props;\n const {editMode} = this.context;\n\n if (editMode && this.props.item.data._editActive) {\n // needed for correst pointer-events: none work in firefox\n return <div className={b('overlay-placeholder')} />;\n }\n\n if (!editMode || this.props.item.data._editActive || isPlaceholder) {\n return null;\n }\n\n const {item, focusable} = this.props;\n\n return (\n <React.Fragment>\n <div className={b('overlay')} />\n <OverlayControls\n configItem={item}\n onItemClick={focusable ? this.onOverlayItemClick : undefined}\n />\n </React.Fragment>\n );\n }\n\n onOverlayItemClick = () => {\n // Creating button element to trigger focus out\n const focusDummy = document.createElement('button');\n Object.assign(focusDummy.style, {\n width: '0',\n height: '0',\n opacity: '0',\n position: 'fixed',\n top: '0',\n left: '0',\n });\n\n // requestAnimationFrame to make call after alert() or confirm()\n requestAnimationFrame(() => {\n // Adding elment an changing focus\n document.body.appendChild(focusDummy);\n focusDummy.focus();\n document.body.removeChild(focusDummy);\n\n this.setState({isFocused: false});\n });\n };\n\n onFocusHandler = () => {\n this.setState({isFocused: true});\n\n if (this.props.onItemFocus) {\n // Sync focus and blur handlers\n windowFocusObserver.getFocusedState().then(() => {\n this.props.onItemFocus?.(this.props.item);\n });\n }\n\n if (this.controller) {\n this.controller.abort();\n }\n };\n\n onBlurHandler = () => {\n this.controller = new AbortController();\n\n windowFocusObserver.getFocusedState().then((isWindowFocused) => {\n if (!this.controller?.signal.aborted && isWindowFocused) {\n this.setState({isFocused: false});\n this.props.onItemBlur?.(this.props.item);\n }\n\n this.controller = null;\n });\n };\n\n render() {\n // из-за бага, что Grid Items unmounts при изменении static, isDraggable, isResaizable\n // https://github.com/STRML/react-grid-layout/issues/721\n const {\n style,\n onMouseDown,\n onMouseUp,\n onTouchEnd,\n onTouchStart,\n children,\n className,\n isDragging,\n isDraggedOut,\n noOverlay,\n focusable,\n withCustomHandle,\n isPlaceholder = false,\n } = this.props;\n const {editMode} = this.context;\n const {isFocused} = this.state;\n\n const width =\n style?.width === undefined ? undefined : Number.parseInt(String(style.width), 10);\n const height =\n style?.height === undefined ? undefined : Number.parseInt(String(style.height), 10);\n const transform = style?.transform;\n const preparedClassName =\n (editMode\n ? className\n : className\n ?.replace('react-resizable', '')\n .replace('react-draggable', '')\n .replace(FOCUSED_CLASS_NAME, '')) +\n (isFocused ? ` ${FOCUSED_CLASS_NAME}` : '');\n const computedClassName = b(\n {\n 'is-dragging': isDragging,\n 'is-dragged-out': isDraggedOut,\n 'is-focused': isFocused,\n 'with-custom-handle': withCustomHandle,\n },\n preparedClassName,\n );\n\n const preparedChildren = editMode ? children : null;\n const reactGridLayoutProps = editMode\n ? {onMouseDown, onMouseUp, onTouchEnd, onTouchStart}\n : {};\n const reactFocusProps = focusable\n ? {\n onFocus: this.onFocusHandler,\n onBlur: this.onBlurHandler,\n tabIndex: -1,\n }\n : {};\n const {_editActive} = this.props.item.data;\n\n return (\n <div\n className={computedClassName}\n data-qa=\"dashkit-grid-item\"\n style={style}\n ref={this.props.forwardedRef}\n {...reactGridLayoutProps}\n {...reactFocusProps}\n >\n <div className={b('item', {editMode: editMode && !_editActive && !noOverlay})}>\n <Item\n id={this.props.id}\n item={this.props.item}\n shouldItemUpdate={!isDragging}\n width={width}\n height={height}\n transform={transform}\n isPlaceholder={isPlaceholder}\n adjustWidgetLayout={this.props.adjustWidgetLayout}\n layout={this.props.layout}\n forwardedPluginRef={this.props.forwardedPluginRef}\n onItemMountChange={this.props.onItemMountChange}\n onItemRender={this.props.onItemRender}\n gridLayout={this.props.gridLayout}\n />\n </div>\n {!noOverlay && this.renderOverlay()}\n {preparedChildren}\n </div>\n );\n }\n}\n\nconst GridItemForwarderRef = React.forwardRef<HTMLDivElement, Omit<GridItemProps, 'forwardedRef'>>(\n (props, ref) => {\n return <GridItem {...props} forwardedRef={ref} />;\n },\n);\n\nGridItemForwarderRef.displayName = 'forwardRef(GridItem)';\n\nexport default GridItemForwarderRef;\n"]}
@@ -1,73 +1,63 @@
1
- export default class GridLayout extends React.PureComponent<any, any, any> {
2
- static contextType: React.Context<import("../../context/index.js").DashKitCtxShape>;
3
- constructor(props: any, context: any);
4
- pluginsRefs: any[];
5
- state: {
6
- isDragging: boolean;
7
- isDraggedOut: boolean;
8
- isPageHidden: boolean;
9
- currentDraggingElement: null;
10
- draggedOverGroup: null;
11
- };
1
+ import React from 'react';
2
+ import type { DragOverEvent } from 'react-grid-layout';
3
+ import type { PluginRef, PluginWidgetProps, ReactGridLayoutProps } from 'src/typings';
4
+ import type { DashKitCtxShape } from "../../context/index.js";
5
+ import type { ConfigItem, ConfigLayout } from "../../shared/index.js";
6
+ import type { GridLayoutProps, GridLayoutState, GroupCallbacks, LayoutAndPropsByGroup, ManipulationCallbackArgs, MemoGroupLayout, ReloadItemsOptions } from "./types.js";
7
+ export default class GridLayout extends React.PureComponent<GridLayoutProps, GridLayoutState> {
8
+ static contextType: React.Context<DashKitCtxShape>;
9
+ context: DashKitCtxShape;
10
+ pluginsRefs: Array<PluginRef>;
11
+ private _memoForwardedPluginRef;
12
+ private _memoGroupsProps;
13
+ private _memoGroupsLayouts;
14
+ private _memoCallbacksForGroups;
15
+ private _timeout?;
16
+ private _lastReloadAt?;
17
+ private _parendDragNode;
18
+ constructor(props: GridLayoutProps, context: DashKitCtxShape);
12
19
  componentDidMount(): void;
13
20
  componentDidUpdate(): void;
14
21
  componentWillUnmount(): void;
15
- _memoCallbacksForGroups: {};
16
- _memoGroupsProps: {};
17
- _memoGroupsLayouts: {};
18
- _memoForwardedPluginRef: any[];
19
- _timeout: any;
20
- _lastReloadAt: any;
21
22
  onVisibilityChange: () => void;
22
- adjustWidgetLayout: ({ widgetId, needSetDefault, adjustedWidgetLayout }: {
23
- widgetId: any;
24
- needSetDefault: any;
25
- adjustedWidgetLayout: any;
26
- }) => void;
27
- getItemsMeta: () => any;
28
- getActiveLayout(): any;
29
- getMemoGroupLayout(group: any, layout: any): any;
30
- getMemoGroupCallbacks(group: any): any;
31
- getMemoGroupProps: (group: any, renderLayout: any, properties: any) => {
32
- layout: any;
33
- callbacks: any;
34
- };
35
- getLayoutAndPropsByGroup: (group: any) => {
36
- properties: any;
37
- layout: any;
23
+ adjustWidgetLayout: PluginWidgetProps['adjustWidgetLayout'];
24
+ getItemsMeta: () => Promise<any>[];
25
+ getActiveLayout(): ConfigLayout[];
26
+ getMemoGroupLayout(group: string, layout: ConfigLayout[]): MemoGroupLayout;
27
+ getMemoGroupCallbacks(group: string): GroupCallbacks;
28
+ getMemoGroupProps: (group: string, renderLayout: ConfigLayout[], properties: Partial<ReactGridLayoutProps>) => {
29
+ layout: ConfigLayout[];
30
+ callbacks: GroupCallbacks;
38
31
  };
39
- getMemoForwardRefCallback: (refIndex: any) => any;
40
- mergeGroupsLayout(group: any, newLayout: any, temporaryItem: any): any;
41
- reloadItems(options: any): void;
42
- prepareDefaultArguments(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): {
43
- group: any;
44
- layout: any;
45
- oldItem: any;
46
- newItem: any;
47
- placeholder: any;
48
- e: any;
49
- element: any;
50
- };
51
- updateDraggingElementState(group: any, layoutItem: any, e: any): void;
52
- _initDragCoordinatesWatcher(element: any): void;
53
- _parendDragNode: any;
54
- _forceCursorCapture(parentElement: any, position: any, parentRect: any): void;
55
- _updateDragCoordinates(e: any): void;
32
+ getLayoutAndPropsByGroup: (group: string) => LayoutAndPropsByGroup;
33
+ getMemoForwardRefCallback: (refIndex: number) => (pluginRef: PluginRef) => void;
34
+ mergeGroupsLayout(group: string, newLayout: ConfigLayout[], temporaryItem?: ConfigLayout): ConfigLayout[];
35
+ reloadItems(options?: ReloadItemsOptions): void;
36
+ prepareDefaultArguments(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): ManipulationCallbackArgs;
37
+ updateDraggingElementState(group: string, layoutItem: ConfigLayout, e: MouseEvent): void;
38
+ _initDragCoordinatesWatcher(element: HTMLElement): void;
39
+ _forceCursorCapture(parentElement: HTMLElement, position: {
40
+ top: number;
41
+ left: number;
42
+ }, parentRect: DOMRect): void;
43
+ _updateDragCoordinates(e: MouseEvent): void;
56
44
  _resetDragWatcher(): void;
57
- _onDragStart(group: any, _newLayout: any, layoutItem: any, _newItem: any, _placeholder: any, e: any, element: any): void;
58
- _onDrag(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): void;
59
- _onDragStop(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): void;
60
- _onResizeStart(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): void;
61
- _onResize(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): void;
62
- _onResizeStop(group: any, layout: any, oldItem: any, newItem: any, placeholder: any, e: any, element: any): void;
45
+ _onDragStart(group: string, _newLayout: ConfigLayout[], layoutItem: ConfigLayout, _newItem: ConfigLayout, _placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
46
+ _onDrag(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
47
+ _onDragStop(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
48
+ _onResizeStart(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
49
+ _onResize(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
50
+ _onResizeStop(group: string, layout: ConfigLayout[], oldItem: ConfigLayout, newItem: ConfigLayout, placeholder: ConfigLayout, e: MouseEvent, element: HTMLElement): void;
63
51
  _onTargetRestore(): void;
64
- _onStop: (group: any, newLayout: any) => void;
65
- _onSharedDrop: (targetGroup: any, newLayout: any, tempItem: any) => void;
66
- _onExternalDrop: (group: any, newLayout: any, item: any, e: any) => void;
67
- _onDrop: (group: any, newLayout: any, item: any, e: any) => false | undefined;
68
- _onDropDragOver: (group: any, e: any) => any;
69
- renderTemporaryPlaceholder(gridLayout: any): JSX.Element | null;
70
- renderGroup(group: any, renderLayout: any, renderItems: any, offset: number | undefined, groupGridProperties: any): JSX.Element;
71
- render(): any;
52
+ _onStop: (group: string, newLayout: ConfigLayout[]) => void;
53
+ _onSharedDrop: (targetGroup: string, newLayout: ConfigLayout[], tempItem: ConfigLayout) => void;
54
+ _onExternalDrop: (group: string, newLayout: ConfigLayout[], item: ConfigLayout, e: MouseEvent) => void;
55
+ _onDrop: (group: string, newLayout: ConfigLayout[], item: ConfigLayout | undefined, e: MouseEvent) => void | false;
56
+ _onDropDragOver: (group: string, e: DragOverEvent) => {
57
+ w?: number;
58
+ h?: number;
59
+ } | false | undefined;
60
+ renderTemporaryPlaceholder(gridLayout: Partial<ReactGridLayoutProps>): JSX.Element | null;
61
+ renderGroup(group: string, renderLayout: ConfigLayout[], renderItems: ConfigItem[], offset?: number, groupGridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps): JSX.Element;
62
+ render(): JSX.Element | (string | number | boolean | JSX.Element | React.ReactFragment | null | undefined)[];
72
63
  }
73
- import React from 'react';