@gravity-ui/dashkit 3.0.1

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 (232) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/LICENSE +21 -0
  3. package/README.md +364 -0
  4. package/build/cjs/components/DashKit/DashKit.d.ts +50 -0
  5. package/build/cjs/components/DashKit/DashKit.js +70 -0
  6. package/build/cjs/components/DashKit/index.d.ts +1 -0
  7. package/build/cjs/components/DashKit/index.js +4 -0
  8. package/build/cjs/components/DashKitView/DashKitView.css +4 -0
  9. package/build/cjs/components/DashKitView/DashKitView.d.ts +3 -0
  10. package/build/cjs/components/DashKitView/DashKitView.js +23 -0
  11. package/build/cjs/components/GridItem/GridItem.css +83 -0
  12. package/build/cjs/components/GridItem/GridItem.d.ts +3 -0
  13. package/build/cjs/components/GridItem/GridItem.js +70 -0
  14. package/build/cjs/components/GridLayout/GridLayout.d.ts +25 -0
  15. package/build/cjs/components/GridLayout/GridLayout.js +89 -0
  16. package/build/cjs/components/Item/Item.css +19 -0
  17. package/build/cjs/components/Item/Item.d.ts +67 -0
  18. package/build/cjs/components/Item/Item.js +23 -0
  19. package/build/cjs/components/MobileLayout/MobileLayout.css +10 -0
  20. package/build/cjs/components/MobileLayout/MobileLayout.d.ts +16 -0
  21. package/build/cjs/components/MobileLayout/MobileLayout.js +54 -0
  22. package/build/cjs/components/MobileLayout/helpers.d.ts +3 -0
  23. package/build/cjs/components/MobileLayout/helpers.js +32 -0
  24. package/build/cjs/components/OverlayControls/OverlayControls.css +28 -0
  25. package/build/cjs/components/OverlayControls/OverlayControls.d.ts +54 -0
  26. package/build/cjs/components/OverlayControls/OverlayControls.js +212 -0
  27. package/build/cjs/components/index.d.ts +1 -0
  28. package/build/cjs/components/index.js +4 -0
  29. package/build/cjs/constants/common.d.ts +7 -0
  30. package/build/cjs/constants/common.js +10 -0
  31. package/build/cjs/constants/index.d.ts +1 -0
  32. package/build/cjs/constants/index.js +4 -0
  33. package/build/cjs/context/DashKitContext.d.ts +2 -0
  34. package/build/cjs/context/DashKitContext.js +7 -0
  35. package/build/cjs/hocs/prepareItem.d.ts +66 -0
  36. package/build/cjs/hocs/prepareItem.js +66 -0
  37. package/build/cjs/hocs/withContext.d.ts +165 -0
  38. package/build/cjs/hocs/withContext.js +203 -0
  39. package/build/cjs/hooks/useCalcLayout.d.ts +13 -0
  40. package/build/cjs/hooks/useCalcLayout.js +31 -0
  41. package/build/cjs/i18n/en.json +8 -0
  42. package/build/cjs/i18n/index.d.ts +4 -0
  43. package/build/cjs/i18n/index.js +19 -0
  44. package/build/cjs/i18n/ru.json +8 -0
  45. package/build/cjs/icons/CloseIcon.d.ts +2 -0
  46. package/build/cjs/icons/CloseIcon.js +10 -0
  47. package/build/cjs/icons/CogIcon.d.ts +2 -0
  48. package/build/cjs/icons/CogIcon.js +10 -0
  49. package/build/cjs/icons/CopyIcon.d.ts +2 -0
  50. package/build/cjs/icons/CopyIcon.js +10 -0
  51. package/build/cjs/icons/DeleteIcon.d.ts +2 -0
  52. package/build/cjs/icons/DeleteIcon.js +12 -0
  53. package/build/cjs/icons/DotsIcon.d.ts +2 -0
  54. package/build/cjs/icons/DotsIcon.js +10 -0
  55. package/build/cjs/icons/TickIcon.d.ts +2 -0
  56. package/build/cjs/icons/TickIcon.js +10 -0
  57. package/build/cjs/icons/WarningIcon.d.ts +2 -0
  58. package/build/cjs/icons/WarningIcon.js +10 -0
  59. package/build/cjs/index.d.ts +5 -0
  60. package/build/cjs/index.js +8 -0
  61. package/build/cjs/plugins/Text/Text.css +34 -0
  62. package/build/cjs/plugins/Text/Text.d.ts +52 -0
  63. package/build/cjs/plugins/Text/Text.js +119 -0
  64. package/build/cjs/plugins/Title/Title.css +24 -0
  65. package/build/cjs/plugins/Title/Title.d.ts +14 -0
  66. package/build/cjs/plugins/Title/Title.js +25 -0
  67. package/build/cjs/shared/constants/common.d.ts +2 -0
  68. package/build/cjs/shared/constants/common.js +5 -0
  69. package/build/cjs/shared/constants/index.d.ts +1 -0
  70. package/build/cjs/shared/constants/index.js +4 -0
  71. package/build/cjs/shared/index.d.ts +4 -0
  72. package/build/cjs/shared/index.js +7 -0
  73. package/build/cjs/shared/modules/__tests__/helpers.test.d.ts +1 -0
  74. package/build/cjs/shared/modules/__tests__/helpers.test.js +217 -0
  75. package/build/cjs/shared/modules/helpers.d.ts +42 -0
  76. package/build/cjs/shared/modules/helpers.js +172 -0
  77. package/build/cjs/shared/modules/index.d.ts +2 -0
  78. package/build/cjs/shared/modules/index.js +5 -0
  79. package/build/cjs/shared/modules/state-and-params.d.ts +16 -0
  80. package/build/cjs/shared/modules/state-and-params.js +94 -0
  81. package/build/cjs/shared/types/common.d.ts +5 -0
  82. package/build/cjs/shared/types/common.js +2 -0
  83. package/build/cjs/shared/types/config.d.ts +49 -0
  84. package/build/cjs/shared/types/config.js +2 -0
  85. package/build/cjs/shared/types/index.d.ts +4 -0
  86. package/build/cjs/shared/types/index.js +7 -0
  87. package/build/cjs/shared/types/plugin.d.ts +8 -0
  88. package/build/cjs/shared/types/plugin.js +2 -0
  89. package/build/cjs/shared/types/state-and-params.d.ts +22 -0
  90. package/build/cjs/shared/types/state-and-params.js +3 -0
  91. package/build/cjs/shared/units/__tests__/state-and-params.test.d.ts +241 -0
  92. package/build/cjs/shared/units/__tests__/state-and-params.test.js +299 -0
  93. package/build/cjs/shared/units/datalens/index.d.ts +5 -0
  94. package/build/cjs/shared/units/datalens/index.js +25 -0
  95. package/build/cjs/shared/units/index.d.ts +1 -0
  96. package/build/cjs/shared/units/index.js +4 -0
  97. package/build/cjs/typings/common.d.ts +32 -0
  98. package/build/cjs/typings/common.js +2 -0
  99. package/build/cjs/typings/config.d.ts +7 -0
  100. package/build/cjs/typings/config.js +2 -0
  101. package/build/cjs/typings/global.d.ts +7 -0
  102. package/build/cjs/typings/index.d.ts +3 -0
  103. package/build/cjs/typings/index.js +6 -0
  104. package/build/cjs/typings/plugin.d.ts +39 -0
  105. package/build/cjs/typings/plugin.js +2 -0
  106. package/build/cjs/utils/__tests__/mock.test.d.ts +1 -0
  107. package/build/cjs/utils/__tests__/mock.test.js +8 -0
  108. package/build/cjs/utils/configure.d.ts +9 -0
  109. package/build/cjs/utils/configure.js +21 -0
  110. package/build/cjs/utils/i18n.d.ts +7 -0
  111. package/build/cjs/utils/i18n.js +13 -0
  112. package/build/cjs/utils/index.d.ts +3 -0
  113. package/build/cjs/utils/index.js +6 -0
  114. package/build/cjs/utils/register-manager.d.ts +46 -0
  115. package/build/cjs/utils/register-manager.js +58 -0
  116. package/build/cjs/utils/update-manager.d.ts +37 -0
  117. package/build/cjs/utils/update-manager.js +274 -0
  118. package/build/esm/components/DashKit/DashKit.d.ts +50 -0
  119. package/build/esm/components/DashKit/DashKit.js +65 -0
  120. package/build/esm/components/DashKit/index.d.ts +1 -0
  121. package/build/esm/components/DashKit/index.js +1 -0
  122. package/build/esm/components/DashKitView/DashKitView.css +4 -0
  123. package/build/esm/components/DashKitView/DashKitView.d.ts +3 -0
  124. package/build/esm/components/DashKitView/DashKitView.js +21 -0
  125. package/build/esm/components/GridItem/GridItem.css +83 -0
  126. package/build/esm/components/GridItem/GridItem.d.ts +3 -0
  127. package/build/esm/components/GridItem/GridItem.js +68 -0
  128. package/build/esm/components/GridLayout/GridLayout.d.ts +25 -0
  129. package/build/esm/components/GridLayout/GridLayout.js +85 -0
  130. package/build/esm/components/Item/Item.css +19 -0
  131. package/build/esm/components/Item/Item.d.ts +67 -0
  132. package/build/esm/components/Item/Item.js +21 -0
  133. package/build/esm/components/MobileLayout/MobileLayout.css +10 -0
  134. package/build/esm/components/MobileLayout/MobileLayout.d.ts +16 -0
  135. package/build/esm/components/MobileLayout/MobileLayout.js +51 -0
  136. package/build/esm/components/MobileLayout/helpers.d.ts +3 -0
  137. package/build/esm/components/MobileLayout/helpers.js +28 -0
  138. package/build/esm/components/OverlayControls/OverlayControls.css +28 -0
  139. package/build/esm/components/OverlayControls/OverlayControls.d.ts +55 -0
  140. package/build/esm/components/OverlayControls/OverlayControls.js +209 -0
  141. package/build/esm/components/index.d.ts +1 -0
  142. package/build/esm/components/index.js +1 -0
  143. package/build/esm/constants/common.d.ts +7 -0
  144. package/build/esm/constants/common.js +7 -0
  145. package/build/esm/constants/index.d.ts +1 -0
  146. package/build/esm/constants/index.js +1 -0
  147. package/build/esm/context/DashKitContext.d.ts +2 -0
  148. package/build/esm/context/DashKitContext.js +3 -0
  149. package/build/esm/hocs/prepareItem.d.ts +66 -0
  150. package/build/esm/hocs/prepareItem.js +61 -0
  151. package/build/esm/hocs/withContext.d.ts +165 -0
  152. package/build/esm/hocs/withContext.js +198 -0
  153. package/build/esm/hooks/useCalcLayout.d.ts +13 -0
  154. package/build/esm/hooks/useCalcLayout.js +26 -0
  155. package/build/esm/i18n/en.json +8 -0
  156. package/build/esm/i18n/index.d.ts +4 -0
  157. package/build/esm/i18n/index.js +15 -0
  158. package/build/esm/i18n/ru.json +8 -0
  159. package/build/esm/icons/CloseIcon.d.ts +2 -0
  160. package/build/esm/icons/CloseIcon.js +5 -0
  161. package/build/esm/icons/CogIcon.d.ts +2 -0
  162. package/build/esm/icons/CogIcon.js +5 -0
  163. package/build/esm/icons/CopyIcon.d.ts +2 -0
  164. package/build/esm/icons/CopyIcon.js +5 -0
  165. package/build/esm/icons/DeleteIcon.d.ts +2 -0
  166. package/build/esm/icons/DeleteIcon.js +7 -0
  167. package/build/esm/icons/DotsIcon.d.ts +2 -0
  168. package/build/esm/icons/DotsIcon.js +5 -0
  169. package/build/esm/icons/TickIcon.d.ts +2 -0
  170. package/build/esm/icons/TickIcon.js +5 -0
  171. package/build/esm/icons/WarningIcon.d.ts +2 -0
  172. package/build/esm/icons/WarningIcon.js +5 -0
  173. package/build/esm/index.d.ts +5 -0
  174. package/build/esm/index.js +5 -0
  175. package/build/esm/plugins/Text/Text.css +34 -0
  176. package/build/esm/plugins/Text/Text.d.ts +53 -0
  177. package/build/esm/plugins/Text/Text.js +115 -0
  178. package/build/esm/plugins/Title/Title.css +24 -0
  179. package/build/esm/plugins/Title/Title.d.ts +15 -0
  180. package/build/esm/plugins/Title/Title.js +21 -0
  181. package/build/esm/shared/constants/common.d.ts +2 -0
  182. package/build/esm/shared/constants/common.js +2 -0
  183. package/build/esm/shared/constants/index.d.ts +1 -0
  184. package/build/esm/shared/constants/index.js +1 -0
  185. package/build/esm/shared/index.d.ts +4 -0
  186. package/build/esm/shared/index.js +4 -0
  187. package/build/esm/shared/modules/__tests__/helpers.test.d.ts +1 -0
  188. package/build/esm/shared/modules/__tests__/helpers.test.js +215 -0
  189. package/build/esm/shared/modules/helpers.d.ts +42 -0
  190. package/build/esm/shared/modules/helpers.js +157 -0
  191. package/build/esm/shared/modules/index.d.ts +2 -0
  192. package/build/esm/shared/modules/index.js +2 -0
  193. package/build/esm/shared/modules/state-and-params.d.ts +16 -0
  194. package/build/esm/shared/modules/state-and-params.js +87 -0
  195. package/build/esm/shared/types/common.d.ts +5 -0
  196. package/build/esm/shared/types/common.js +1 -0
  197. package/build/esm/shared/types/config.d.ts +49 -0
  198. package/build/esm/shared/types/config.js +1 -0
  199. package/build/esm/shared/types/index.d.ts +4 -0
  200. package/build/esm/shared/types/index.js +4 -0
  201. package/build/esm/shared/types/plugin.d.ts +8 -0
  202. package/build/esm/shared/types/plugin.js +1 -0
  203. package/build/esm/shared/types/state-and-params.d.ts +22 -0
  204. package/build/esm/shared/types/state-and-params.js +1 -0
  205. package/build/esm/shared/units/__tests__/state-and-params.test.d.ts +241 -0
  206. package/build/esm/shared/units/__tests__/state-and-params.test.js +295 -0
  207. package/build/esm/shared/units/datalens/index.d.ts +5 -0
  208. package/build/esm/shared/units/datalens/index.js +20 -0
  209. package/build/esm/shared/units/index.d.ts +1 -0
  210. package/build/esm/shared/units/index.js +1 -0
  211. package/build/esm/typings/common.d.ts +32 -0
  212. package/build/esm/typings/common.js +1 -0
  213. package/build/esm/typings/config.d.ts +7 -0
  214. package/build/esm/typings/config.js +1 -0
  215. package/build/esm/typings/global.d.ts +7 -0
  216. package/build/esm/typings/index.d.ts +3 -0
  217. package/build/esm/typings/index.js +3 -0
  218. package/build/esm/typings/plugin.d.ts +39 -0
  219. package/build/esm/typings/plugin.js +1 -0
  220. package/build/esm/utils/__tests__/mock.test.d.ts +1 -0
  221. package/build/esm/utils/__tests__/mock.test.js +8 -0
  222. package/build/esm/utils/configure.d.ts +9 -0
  223. package/build/esm/utils/configure.js +15 -0
  224. package/build/esm/utils/i18n.d.ts +7 -0
  225. package/build/esm/utils/i18n.js +9 -0
  226. package/build/esm/utils/index.d.ts +3 -0
  227. package/build/esm/utils/index.js +3 -0
  228. package/build/esm/utils/register-manager.d.ts +46 -0
  229. package/build/esm/utils/register-manager.js +54 -0
  230. package/build/esm/utils/update-manager.d.ts +37 -0
  231. package/build/esm/utils/update-manager.js +269 -0
  232. package/package.json +107 -0
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OverlayControlsPosition = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const bem_cn_lite_1 = tslib_1.__importDefault(require("bem-cn-lite"));
7
+ const i18n_1 = tslib_1.__importDefault(require("../../i18n"));
8
+ const noop_1 = tslib_1.__importDefault(require("lodash/noop"));
9
+ const DashKitContext_1 = require("../../context/DashKitContext");
10
+ const uikit_1 = require("@gravity-ui/uikit");
11
+ const constants_1 = require("../../constants");
12
+ const DotsIcon_1 = require("../../icons/DotsIcon");
13
+ const CogIcon_1 = require("../../icons/CogIcon");
14
+ const CloseIcon_1 = require("../../icons/CloseIcon");
15
+ const b = (0, bem_cn_lite_1.default)('dashkit-overlay-controls');
16
+ var OverlayControlsPosition;
17
+ (function (OverlayControlsPosition) {
18
+ OverlayControlsPosition["TopRight"] = "top_right";
19
+ OverlayControlsPosition["TopLeft"] = "top_left";
20
+ OverlayControlsPosition["BottomRight"] = "bottom_right";
21
+ OverlayControlsPosition["BottomLeft"] = "bottom_left";
22
+ })(OverlayControlsPosition = exports.OverlayControlsPosition || (exports.OverlayControlsPosition = {}));
23
+ const DEFAULT_DROPDOWN_MENU = [constants_1.MenuItems.Copy, constants_1.MenuItems.Delete];
24
+ class OverlayControls extends react_1.default.Component {
25
+ constructor() {
26
+ super(...arguments);
27
+ this.renderControlsItem = (item, index, length) => {
28
+ const { view, size } = this.props;
29
+ const { title, handler, icon, iconSize } = item;
30
+ const onItemClickHandler = typeof handler === 'function' ? handler : noop_1.default;
31
+ return (react_1.default.createElement(uikit_1.Button, { key: index, view: view, size: size, title: title, pin: this.getControlItemPinStyle(index, length), onClick: () => onItemClickHandler(this.props.configItem) },
32
+ react_1.default.createElement(uikit_1.Icon, { data: icon || CogIcon_1.CogIcon, size: icon ? iconSize : 24 })));
33
+ };
34
+ this.getCustomLeftOverlayControls = () => {
35
+ // выбираем только items-ы у которых проставлено поле `allWidgetsControls:true`
36
+ // те контролы, которые будут показываться слева от меню
37
+ let controls = [];
38
+ for (const controlItem of Object.values(this.context.overlayControls || {})) {
39
+ controls = controls.concat((controlItem.filter((item) => {
40
+ var _a;
41
+ // если тип виджета-плагина в списке исключаемых, то не показываем такой контрол
42
+ if ((_a = item.excludeWidgetsTypes) === null || _a === void 0 ? void 0 : _a.includes(this.props.configItem.type)) {
43
+ return false;
44
+ }
45
+ return item.allWidgetsControls;
46
+ }) || []).map((item) => {
47
+ var _a;
48
+ if (!(item === null || item === void 0 ? void 0 : item.id)) {
49
+ return item;
50
+ }
51
+ return Object.assign(Object.assign({}, item), { handler: typeof item.handler === 'function'
52
+ ? item.handler
53
+ : ((_a = this.getDropDownMenuItemConfig(item.id)) === null || _a === void 0 ? void 0 : _a.action) || (() => { }) });
54
+ }));
55
+ }
56
+ return controls;
57
+ };
58
+ this.onCopyItem = () => {
59
+ const correspondedItemLayout = this.context.config.layout.find((item) => {
60
+ return item.i === this.props.configItem.id;
61
+ });
62
+ const options = {
63
+ timestamp: Date.now(),
64
+ data: this.props.configItem.data,
65
+ type: this.props.configItem.type,
66
+ defaults: this.props.configItem.defaults,
67
+ namespace: this.props.configItem.namespace,
68
+ layout: {
69
+ w: correspondedItemLayout.w,
70
+ h: correspondedItemLayout.h,
71
+ },
72
+ };
73
+ localStorage.setItem(constants_1.COPIED_WIDGET_STORE_KEY, JSON.stringify(options));
74
+ };
75
+ this.onEditItem = () => {
76
+ this.context.editItem(this.props.configItem);
77
+ };
78
+ this.onRemoveItem = () => {
79
+ const { id } = this.props.configItem;
80
+ this.context.removeItem(id);
81
+ };
82
+ }
83
+ render() {
84
+ const { items = [], position } = this.props;
85
+ const hasCustomControlsWithWidgets = items.length > 0;
86
+ const controls = hasCustomControlsWithWidgets
87
+ ? this.getCustomControlsWithWidgets()
88
+ : this.renderControls();
89
+ return react_1.default.createElement("div", { className: b({ position }) }, controls);
90
+ }
91
+ getDropDownMenuItemConfig(menuName, isDefaultMenu) {
92
+ switch (menuName) {
93
+ case constants_1.MenuItems.Copy: {
94
+ return {
95
+ action: this.onCopyItem,
96
+ text: (0, i18n_1.default)('label_copy'),
97
+ };
98
+ }
99
+ case constants_1.MenuItems.Delete: {
100
+ return {
101
+ action: this.onRemoveItem,
102
+ text: (0, i18n_1.default)('label_delete'),
103
+ };
104
+ }
105
+ case constants_1.MenuItems.Settings: {
106
+ // для дефолтного состояния меню нет настройки settings, а для кастомного можно использовать дефолтный action и text
107
+ if (isDefaultMenu) {
108
+ return null;
109
+ }
110
+ return {
111
+ action: this.onEditItem,
112
+ text: (0, i18n_1.default)('label_settings'),
113
+ };
114
+ }
115
+ }
116
+ return null;
117
+ }
118
+ renderControls() {
119
+ const { view, size } = this.props;
120
+ const customLeftControls = this.getCustomLeftOverlayControls();
121
+ const hasCustomOverlayLeftControls = Boolean(customLeftControls.length);
122
+ const defaultControl = (react_1.default.createElement(uikit_1.Button, { view: view, size: size, title: (0, i18n_1.default)('label_settings'), pin: "round-brick", onClick: this.onEditItem, qa: "dashkit-overlay-control-settings" },
123
+ react_1.default.createElement(uikit_1.Icon, { data: CogIcon_1.CogIcon, size: "24" })));
124
+ const controls = hasCustomOverlayLeftControls
125
+ ? customLeftControls.map((item, index, items) => this.renderControlsItem(item, index, items.length + 1))
126
+ : defaultControl;
127
+ const menu = this.renderMenu();
128
+ return (react_1.default.createElement("div", { className: b('default-controls', {
129
+ 'with-custom-left': hasCustomOverlayLeftControls,
130
+ }) },
131
+ controls,
132
+ menu));
133
+ }
134
+ renderMenu() {
135
+ const { view, size } = this.props;
136
+ const { registerManager } = this.context;
137
+ const withMenu = Array.isArray(registerManager.settings.menu) && registerManager.settings.menu.length;
138
+ return (react_1.default.createElement(react_1.default.Fragment, null, withMenu ? (this.renderDropdownMenu()) : (react_1.default.createElement(uikit_1.Button, { view: view, size: size, title: (0, i18n_1.default)('label_delete'), pin: "brick-round", onClick: this.onRemoveItem, qa: "dashkit-overlay-control-menu" },
139
+ react_1.default.createElement(uikit_1.Icon, { data: CloseIcon_1.CloseIcon, size: "12" })))));
140
+ }
141
+ isDefaultMenu(menu) {
142
+ return menu === null || menu === void 0 ? void 0 : menu.every((item) => Object.values(constants_1.MenuItems).includes(String(item)));
143
+ }
144
+ renderDropdownMenu() {
145
+ const { view, size } = this.props;
146
+ const { registerManager } = this.context;
147
+ let menu = registerManager.settings.menu;
148
+ if (!menu.length) {
149
+ menu = DEFAULT_DROPDOWN_MENU;
150
+ }
151
+ const isDefaultMenu = this.isDefaultMenu(menu);
152
+ let items = isDefaultMenu
153
+ ? (menu || []).map((name) => this.getDropDownMenuItemConfig(name, true))
154
+ : menu.map((item) => {
155
+ var _a;
156
+ if (typeof item === 'string') {
157
+ return null;
158
+ }
159
+ // custom menu dropdown item filter
160
+ if (item.visible && !item.visible(this.props.configItem)) {
161
+ return null;
162
+ }
163
+ const itemHandler = item.handler;
164
+ const itemAction = typeof itemHandler === 'function'
165
+ ? () => itemHandler(this.props.configItem)
166
+ : ((_a = this.getDropDownMenuItemConfig(item.id)) === null || _a === void 0 ? void 0 : _a.action) || (() => { });
167
+ return {
168
+ text: item.title || (0, i18n_1.default)(item.id),
169
+ icon: item.icon,
170
+ action: itemAction,
171
+ className: item.className,
172
+ };
173
+ });
174
+ items = items.filter(Boolean);
175
+ return (react_1.default.createElement(uikit_1.DropdownMenu, { items: items, switcher: react_1.default.createElement(uikit_1.Button, { view: view, size: size, pin: "brick-round" },
176
+ react_1.default.createElement(uikit_1.Icon, { data: DotsIcon_1.DotsIcon, size: "16" })) }));
177
+ }
178
+ getControlItemPinStyle(index, itemsLength) {
179
+ const isOnlyOneItem = itemsLength === 1;
180
+ const isFirstItem = index === 0;
181
+ const isLastItem = index === itemsLength - 1;
182
+ if (isOnlyOneItem) {
183
+ return 'round-round';
184
+ }
185
+ if (isFirstItem) {
186
+ return 'round-brick';
187
+ }
188
+ if (isLastItem) {
189
+ return 'brick-round';
190
+ }
191
+ return 'brick-brick';
192
+ }
193
+ getCustomControlsWithWidgets() {
194
+ // Добавляем контрол удаления виджета по умолчанию
195
+ const deleteControl = {
196
+ title: (0, i18n_1.default)('label_delete'),
197
+ icon: CloseIcon_1.CloseIcon,
198
+ iconSize: 12,
199
+ handler: this.onRemoveItem,
200
+ };
201
+ const { items = [] } = this.props;
202
+ const customOverlayControls = [...items, deleteControl];
203
+ return customOverlayControls.map((item, index, controlItems) => this.renderControlsItem(item, index, controlItems.length));
204
+ }
205
+ }
206
+ OverlayControls.contextType = DashKitContext_1.DashKitContext;
207
+ OverlayControls.defaultProps = {
208
+ position: OverlayControlsPosition.TopRight,
209
+ view: 'normal',
210
+ size: 'm',
211
+ };
212
+ exports.default = OverlayControls;
@@ -0,0 +1 @@
1
+ export * from './DashKit';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DashKit"), exports);
@@ -0,0 +1,7 @@
1
+ export declare const COPIED_WIDGET_STORE_KEY = "dashCopiedItem";
2
+ export declare const DEFAULT_NAMESPACE = "default";
3
+ export declare const MenuItems: {
4
+ readonly Copy: "copy";
5
+ readonly Delete: "delete";
6
+ readonly Settings: "settings";
7
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MenuItems = exports.DEFAULT_NAMESPACE = exports.COPIED_WIDGET_STORE_KEY = void 0;
4
+ exports.COPIED_WIDGET_STORE_KEY = 'dashCopiedItem';
5
+ exports.DEFAULT_NAMESPACE = 'default';
6
+ exports.MenuItems = {
7
+ Copy: 'copy',
8
+ Delete: 'delete',
9
+ Settings: 'settings',
10
+ };
@@ -0,0 +1 @@
1
+ export * from './common';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./common"), exports);
@@ -0,0 +1,2 @@
1
+ export const DashKitContext: React.Context<any>;
2
+ import React from "react";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DashKitContext = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const DashKitContext = react_1.default.createContext();
7
+ exports.DashKitContext = DashKitContext;
@@ -0,0 +1,66 @@
1
+ export function prepareItem(Component: any): {
2
+ new (props: any): {
3
+ shouldComponentUpdate(nextProps: any): boolean;
4
+ _onStateAndParamsChange: (stateAndParams: any) => void;
5
+ render(): JSX.Element;
6
+ context: any;
7
+ setState<K extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
8
+ forceUpdate(callback?: (() => void) | undefined): void;
9
+ readonly props: Readonly<any> & Readonly<{
10
+ children?: React.ReactNode;
11
+ }>;
12
+ state: Readonly<any>;
13
+ refs: {
14
+ [key: string]: React.ReactInstance;
15
+ };
16
+ componentDidMount?(): void;
17
+ componentWillUnmount?(): void;
18
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
19
+ getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>): any;
20
+ componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any): void;
21
+ componentWillMount?(): void;
22
+ UNSAFE_componentWillMount?(): void;
23
+ componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
24
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
25
+ componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
26
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
27
+ };
28
+ new (props: any, context: any): {
29
+ shouldComponentUpdate(nextProps: any): boolean;
30
+ _onStateAndParamsChange: (stateAndParams: any) => void;
31
+ render(): JSX.Element;
32
+ context: any;
33
+ setState<K extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
34
+ forceUpdate(callback?: (() => void) | undefined): void;
35
+ readonly props: Readonly<any> & Readonly<{
36
+ children?: React.ReactNode;
37
+ }>;
38
+ state: Readonly<any>;
39
+ refs: {
40
+ [key: string]: React.ReactInstance;
41
+ };
42
+ componentDidMount?(): void;
43
+ componentWillUnmount?(): void;
44
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
45
+ getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>): any;
46
+ componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any): void;
47
+ componentWillMount?(): void;
48
+ UNSAFE_componentWillMount?(): void;
49
+ componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
50
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
51
+ componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
52
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
53
+ };
54
+ propTypes: {
55
+ adjustWidgetLayout: PropTypes.Validator<(...args: any[]) => any>;
56
+ layout: PropTypes.Requireable<any[]>;
57
+ id: PropTypes.Requireable<string>;
58
+ item: PropTypes.Requireable<object>;
59
+ shouldItemUpdate: PropTypes.Requireable<boolean>;
60
+ width: PropTypes.Requireable<number>;
61
+ height: PropTypes.Requireable<number>;
62
+ transform: PropTypes.Requireable<string>;
63
+ forwardedPluginRef: PropTypes.Requireable<any>;
64
+ };
65
+ contextType: React.Context<any>;
66
+ };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareItem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const DashKitContext_1 = require("../context/DashKitContext");
7
+ const prop_types_1 = tslib_1.__importDefault(require("prop-types"));
8
+ function prepareItem(Component) {
9
+ var _a;
10
+ return _a = class PrepareItem extends react_1.default.Component {
11
+ constructor() {
12
+ super(...arguments);
13
+ this._onStateAndParamsChange = (stateAndParams) => {
14
+ this.context.onItemStateAndParamsChange(this.props.id, stateAndParams);
15
+ };
16
+ }
17
+ shouldComponentUpdate(nextProps) {
18
+ const { width, height, transform } = this.props;
19
+ const { width: widthNext, height: heightNext, transform: transformNext } = nextProps;
20
+ if (!nextProps.shouldItemUpdate &&
21
+ width === widthNext &&
22
+ height === heightNext &&
23
+ transform === transformNext) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ render() {
29
+ const { id, width, height, item, adjustWidgetLayout, layout } = this.props;
30
+ const { itemsState, itemsParams, registerManager, settings, context, editMode } = this.context;
31
+ const { type, data, defaults, namespace } = item;
32
+ const rendererProps = {
33
+ data,
34
+ editMode,
35
+ params: itemsParams[id],
36
+ state: itemsState[id],
37
+ onStateAndParamsChange: this._onStateAndParamsChange,
38
+ width,
39
+ height,
40
+ id,
41
+ defaults,
42
+ namespace,
43
+ settings,
44
+ context,
45
+ layout,
46
+ gridLayout: registerManager.gridLayout,
47
+ adjustWidgetLayout,
48
+ };
49
+ return (react_1.default.createElement(Component, { forwardedPluginRef: this.props.forwardedPluginRef, rendererProps: rendererProps, registerManager: registerManager, type: type }));
50
+ }
51
+ },
52
+ _a.propTypes = {
53
+ adjustWidgetLayout: prop_types_1.default.func.isRequired,
54
+ layout: prop_types_1.default.array,
55
+ id: prop_types_1.default.string,
56
+ item: prop_types_1.default.object,
57
+ shouldItemUpdate: prop_types_1.default.bool,
58
+ width: prop_types_1.default.number,
59
+ height: prop_types_1.default.number,
60
+ transform: prop_types_1.default.string,
61
+ forwardedPluginRef: prop_types_1.default.any,
62
+ },
63
+ _a.contextType = DashKitContext_1.DashKitContext,
64
+ _a;
65
+ }
66
+ exports.prepareItem = prepareItem;
@@ -0,0 +1,165 @@
1
+ export function withContext(Component: any): {
2
+ new (props: any): {
3
+ state: {
4
+ currentLayout: any;
5
+ };
6
+ originalLayouts: {};
7
+ adjustedLayouts: {};
8
+ _onChange({ config, itemsStateAndParams, }: {
9
+ config?: any;
10
+ itemsStateAndParams?: any;
11
+ }): void;
12
+ _onLayoutChange: (layout: any) => void;
13
+ _onItemRemove: (id: any) => void;
14
+ _onItemEdit: (configItem: any) => void;
15
+ _onItemStateAndParamsChange: (id: any, stateAndParams: any) => void;
16
+ _memorizeOriginalLayout: (widgetId: any, preAutoHeightLayout: any, postAutoHeightLayout: any) => void;
17
+ _revertToOriginalLayout: (widgetId: any) => void;
18
+ readonly _itemsParams: {
19
+ [x: string]: import("../shared").StringParams;
20
+ };
21
+ readonly _itemsState: Record<string, import("../shared").ItemState>;
22
+ _getItemsMeta: (pluginsRefs: any) => any;
23
+ _getLayout: () => any;
24
+ _reloadItems: (pluginsRefs: any, data: any) => void;
25
+ readonly _contextValue: {
26
+ getLayout: () => any;
27
+ config: any;
28
+ context: any;
29
+ overlayControls: any;
30
+ noOverlay: any;
31
+ defaultGlobalParams: any;
32
+ globalParams: any;
33
+ editMode: any;
34
+ settings: any;
35
+ itemsState: Record<string, import("../shared").ItemState>;
36
+ itemsParams: {
37
+ [x: string]: import("../shared").StringParams;
38
+ };
39
+ registerManager: any;
40
+ onItemStateAndParamsChange: (id: any, stateAndParams: any) => void;
41
+ removeItem: (id: any) => void;
42
+ editItem: (configItem: any) => void;
43
+ layoutChange: (layout: any) => void;
44
+ getItemsMeta: (pluginsRefs: any) => any;
45
+ reloadItems: (pluginsRefs: any, data: any) => void;
46
+ memorizeOriginalLayout: (widgetId: any, preAutoHeightLayout: any, postAutoHeightLayout: any) => void;
47
+ revertToOriginalLayout: (widgetId: any) => void;
48
+ forwardedMetaRef: any;
49
+ draggableHandleClassName: any;
50
+ };
51
+ render(): JSX.Element;
52
+ context: any;
53
+ setState<K extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
54
+ forceUpdate(callback?: (() => void) | undefined): void;
55
+ readonly props: Readonly<any> & Readonly<{
56
+ children?: React.ReactNode;
57
+ }>;
58
+ refs: {
59
+ [key: string]: React.ReactInstance;
60
+ };
61
+ componentDidMount?(): void;
62
+ shouldComponentUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): boolean;
63
+ componentWillUnmount?(): void;
64
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
65
+ getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>): any;
66
+ componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any): void;
67
+ componentWillMount?(): void;
68
+ UNSAFE_componentWillMount?(): void;
69
+ componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
70
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
71
+ componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
72
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
73
+ };
74
+ new (props: any, context: any): {
75
+ state: {
76
+ currentLayout: any;
77
+ };
78
+ originalLayouts: {};
79
+ adjustedLayouts: {};
80
+ _onChange({ config, itemsStateAndParams, }: {
81
+ config?: any;
82
+ itemsStateAndParams?: any;
83
+ }): void;
84
+ _onLayoutChange: (layout: any) => void;
85
+ _onItemRemove: (id: any) => void;
86
+ _onItemEdit: (configItem: any) => void;
87
+ _onItemStateAndParamsChange: (id: any, stateAndParams: any) => void;
88
+ _memorizeOriginalLayout: (widgetId: any, preAutoHeightLayout: any, postAutoHeightLayout: any) => void;
89
+ _revertToOriginalLayout: (widgetId: any) => void;
90
+ readonly _itemsParams: {
91
+ [x: string]: import("../shared").StringParams;
92
+ };
93
+ readonly _itemsState: Record<string, import("../shared").ItemState>;
94
+ _getItemsMeta: (pluginsRefs: any) => any;
95
+ _getLayout: () => any;
96
+ _reloadItems: (pluginsRefs: any, data: any) => void;
97
+ readonly _contextValue: {
98
+ getLayout: () => any;
99
+ config: any;
100
+ context: any;
101
+ overlayControls: any;
102
+ noOverlay: any;
103
+ defaultGlobalParams: any;
104
+ globalParams: any;
105
+ editMode: any;
106
+ settings: any;
107
+ itemsState: Record<string, import("../shared").ItemState>;
108
+ itemsParams: {
109
+ [x: string]: import("../shared").StringParams;
110
+ };
111
+ registerManager: any;
112
+ onItemStateAndParamsChange: (id: any, stateAndParams: any) => void;
113
+ removeItem: (id: any) => void;
114
+ editItem: (configItem: any) => void;
115
+ layoutChange: (layout: any) => void;
116
+ getItemsMeta: (pluginsRefs: any) => any;
117
+ reloadItems: (pluginsRefs: any, data: any) => void;
118
+ memorizeOriginalLayout: (widgetId: any, preAutoHeightLayout: any, postAutoHeightLayout: any) => void;
119
+ revertToOriginalLayout: (widgetId: any) => void;
120
+ forwardedMetaRef: any;
121
+ draggableHandleClassName: any;
122
+ };
123
+ render(): JSX.Element;
124
+ context: any;
125
+ setState<K extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
126
+ forceUpdate(callback?: (() => void) | undefined): void;
127
+ readonly props: Readonly<any> & Readonly<{
128
+ children?: React.ReactNode;
129
+ }>;
130
+ refs: {
131
+ [key: string]: React.ReactInstance;
132
+ };
133
+ componentDidMount?(): void;
134
+ shouldComponentUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): boolean;
135
+ componentWillUnmount?(): void;
136
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
137
+ getSnapshotBeforeUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>): any;
138
+ componentDidUpdate?(prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any): void;
139
+ componentWillMount?(): void;
140
+ UNSAFE_componentWillMount?(): void;
141
+ componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
142
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<any>, nextContext: any): void;
143
+ componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
144
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any): void;
145
+ };
146
+ propTypes: {
147
+ editMode: PropTypes.Requireable<boolean>;
148
+ context: PropTypes.Requireable<object>;
149
+ overlayControls: PropTypes.Requireable<object>;
150
+ config: PropTypes.Requireable<object>;
151
+ onItemEdit: PropTypes.Requireable<(...args: any[]) => any>;
152
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
153
+ defaultGlobalParams: PropTypes.Requireable<object>;
154
+ globalParams: PropTypes.Requireable<object>;
155
+ itemsStateAndParams: PropTypes.Requireable<object>;
156
+ registerManager: PropTypes.Requireable<object>;
157
+ layout: PropTypes.Requireable<any[]>;
158
+ settings: PropTypes.Requireable<object>;
159
+ forwardedMetaRef: PropTypes.Requireable<object>;
160
+ noOverlay: PropTypes.Requireable<boolean>;
161
+ draggableHandleClassName: PropTypes.Requireable<string>;
162
+ _EXPERIMENTAL_preventDoubleCompact: PropTypes.Requireable<boolean>;
163
+ };
164
+ contextType?: React.Context<any> | undefined;
165
+ };