@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.
- package/CHANGELOG.md +58 -0
- package/LICENSE +21 -0
- package/README.md +364 -0
- package/build/cjs/components/DashKit/DashKit.d.ts +50 -0
- package/build/cjs/components/DashKit/DashKit.js +70 -0
- package/build/cjs/components/DashKit/index.d.ts +1 -0
- package/build/cjs/components/DashKit/index.js +4 -0
- package/build/cjs/components/DashKitView/DashKitView.css +4 -0
- package/build/cjs/components/DashKitView/DashKitView.d.ts +3 -0
- package/build/cjs/components/DashKitView/DashKitView.js +23 -0
- package/build/cjs/components/GridItem/GridItem.css +83 -0
- package/build/cjs/components/GridItem/GridItem.d.ts +3 -0
- package/build/cjs/components/GridItem/GridItem.js +70 -0
- package/build/cjs/components/GridLayout/GridLayout.d.ts +25 -0
- package/build/cjs/components/GridLayout/GridLayout.js +89 -0
- package/build/cjs/components/Item/Item.css +19 -0
- package/build/cjs/components/Item/Item.d.ts +67 -0
- package/build/cjs/components/Item/Item.js +23 -0
- package/build/cjs/components/MobileLayout/MobileLayout.css +10 -0
- package/build/cjs/components/MobileLayout/MobileLayout.d.ts +16 -0
- package/build/cjs/components/MobileLayout/MobileLayout.js +54 -0
- package/build/cjs/components/MobileLayout/helpers.d.ts +3 -0
- package/build/cjs/components/MobileLayout/helpers.js +32 -0
- package/build/cjs/components/OverlayControls/OverlayControls.css +28 -0
- package/build/cjs/components/OverlayControls/OverlayControls.d.ts +54 -0
- package/build/cjs/components/OverlayControls/OverlayControls.js +212 -0
- package/build/cjs/components/index.d.ts +1 -0
- package/build/cjs/components/index.js +4 -0
- package/build/cjs/constants/common.d.ts +7 -0
- package/build/cjs/constants/common.js +10 -0
- package/build/cjs/constants/index.d.ts +1 -0
- package/build/cjs/constants/index.js +4 -0
- package/build/cjs/context/DashKitContext.d.ts +2 -0
- package/build/cjs/context/DashKitContext.js +7 -0
- package/build/cjs/hocs/prepareItem.d.ts +66 -0
- package/build/cjs/hocs/prepareItem.js +66 -0
- package/build/cjs/hocs/withContext.d.ts +165 -0
- package/build/cjs/hocs/withContext.js +203 -0
- package/build/cjs/hooks/useCalcLayout.d.ts +13 -0
- package/build/cjs/hooks/useCalcLayout.js +31 -0
- package/build/cjs/i18n/en.json +8 -0
- package/build/cjs/i18n/index.d.ts +4 -0
- package/build/cjs/i18n/index.js +19 -0
- package/build/cjs/i18n/ru.json +8 -0
- package/build/cjs/icons/CloseIcon.d.ts +2 -0
- package/build/cjs/icons/CloseIcon.js +10 -0
- package/build/cjs/icons/CogIcon.d.ts +2 -0
- package/build/cjs/icons/CogIcon.js +10 -0
- package/build/cjs/icons/CopyIcon.d.ts +2 -0
- package/build/cjs/icons/CopyIcon.js +10 -0
- package/build/cjs/icons/DeleteIcon.d.ts +2 -0
- package/build/cjs/icons/DeleteIcon.js +12 -0
- package/build/cjs/icons/DotsIcon.d.ts +2 -0
- package/build/cjs/icons/DotsIcon.js +10 -0
- package/build/cjs/icons/TickIcon.d.ts +2 -0
- package/build/cjs/icons/TickIcon.js +10 -0
- package/build/cjs/icons/WarningIcon.d.ts +2 -0
- package/build/cjs/icons/WarningIcon.js +10 -0
- package/build/cjs/index.d.ts +5 -0
- package/build/cjs/index.js +8 -0
- package/build/cjs/plugins/Text/Text.css +34 -0
- package/build/cjs/plugins/Text/Text.d.ts +52 -0
- package/build/cjs/plugins/Text/Text.js +119 -0
- package/build/cjs/plugins/Title/Title.css +24 -0
- package/build/cjs/plugins/Title/Title.d.ts +14 -0
- package/build/cjs/plugins/Title/Title.js +25 -0
- package/build/cjs/shared/constants/common.d.ts +2 -0
- package/build/cjs/shared/constants/common.js +5 -0
- package/build/cjs/shared/constants/index.d.ts +1 -0
- package/build/cjs/shared/constants/index.js +4 -0
- package/build/cjs/shared/index.d.ts +4 -0
- package/build/cjs/shared/index.js +7 -0
- package/build/cjs/shared/modules/__tests__/helpers.test.d.ts +1 -0
- package/build/cjs/shared/modules/__tests__/helpers.test.js +217 -0
- package/build/cjs/shared/modules/helpers.d.ts +42 -0
- package/build/cjs/shared/modules/helpers.js +172 -0
- package/build/cjs/shared/modules/index.d.ts +2 -0
- package/build/cjs/shared/modules/index.js +5 -0
- package/build/cjs/shared/modules/state-and-params.d.ts +16 -0
- package/build/cjs/shared/modules/state-and-params.js +94 -0
- package/build/cjs/shared/types/common.d.ts +5 -0
- package/build/cjs/shared/types/common.js +2 -0
- package/build/cjs/shared/types/config.d.ts +49 -0
- package/build/cjs/shared/types/config.js +2 -0
- package/build/cjs/shared/types/index.d.ts +4 -0
- package/build/cjs/shared/types/index.js +7 -0
- package/build/cjs/shared/types/plugin.d.ts +8 -0
- package/build/cjs/shared/types/plugin.js +2 -0
- package/build/cjs/shared/types/state-and-params.d.ts +22 -0
- package/build/cjs/shared/types/state-and-params.js +3 -0
- package/build/cjs/shared/units/__tests__/state-and-params.test.d.ts +241 -0
- package/build/cjs/shared/units/__tests__/state-and-params.test.js +299 -0
- package/build/cjs/shared/units/datalens/index.d.ts +5 -0
- package/build/cjs/shared/units/datalens/index.js +25 -0
- package/build/cjs/shared/units/index.d.ts +1 -0
- package/build/cjs/shared/units/index.js +4 -0
- package/build/cjs/typings/common.d.ts +32 -0
- package/build/cjs/typings/common.js +2 -0
- package/build/cjs/typings/config.d.ts +7 -0
- package/build/cjs/typings/config.js +2 -0
- package/build/cjs/typings/global.d.ts +7 -0
- package/build/cjs/typings/index.d.ts +3 -0
- package/build/cjs/typings/index.js +6 -0
- package/build/cjs/typings/plugin.d.ts +39 -0
- package/build/cjs/typings/plugin.js +2 -0
- package/build/cjs/utils/__tests__/mock.test.d.ts +1 -0
- package/build/cjs/utils/__tests__/mock.test.js +8 -0
- package/build/cjs/utils/configure.d.ts +9 -0
- package/build/cjs/utils/configure.js +21 -0
- package/build/cjs/utils/i18n.d.ts +7 -0
- package/build/cjs/utils/i18n.js +13 -0
- package/build/cjs/utils/index.d.ts +3 -0
- package/build/cjs/utils/index.js +6 -0
- package/build/cjs/utils/register-manager.d.ts +46 -0
- package/build/cjs/utils/register-manager.js +58 -0
- package/build/cjs/utils/update-manager.d.ts +37 -0
- package/build/cjs/utils/update-manager.js +274 -0
- package/build/esm/components/DashKit/DashKit.d.ts +50 -0
- package/build/esm/components/DashKit/DashKit.js +65 -0
- package/build/esm/components/DashKit/index.d.ts +1 -0
- package/build/esm/components/DashKit/index.js +1 -0
- package/build/esm/components/DashKitView/DashKitView.css +4 -0
- package/build/esm/components/DashKitView/DashKitView.d.ts +3 -0
- package/build/esm/components/DashKitView/DashKitView.js +21 -0
- package/build/esm/components/GridItem/GridItem.css +83 -0
- package/build/esm/components/GridItem/GridItem.d.ts +3 -0
- package/build/esm/components/GridItem/GridItem.js +68 -0
- package/build/esm/components/GridLayout/GridLayout.d.ts +25 -0
- package/build/esm/components/GridLayout/GridLayout.js +85 -0
- package/build/esm/components/Item/Item.css +19 -0
- package/build/esm/components/Item/Item.d.ts +67 -0
- package/build/esm/components/Item/Item.js +21 -0
- package/build/esm/components/MobileLayout/MobileLayout.css +10 -0
- package/build/esm/components/MobileLayout/MobileLayout.d.ts +16 -0
- package/build/esm/components/MobileLayout/MobileLayout.js +51 -0
- package/build/esm/components/MobileLayout/helpers.d.ts +3 -0
- package/build/esm/components/MobileLayout/helpers.js +28 -0
- package/build/esm/components/OverlayControls/OverlayControls.css +28 -0
- package/build/esm/components/OverlayControls/OverlayControls.d.ts +55 -0
- package/build/esm/components/OverlayControls/OverlayControls.js +209 -0
- package/build/esm/components/index.d.ts +1 -0
- package/build/esm/components/index.js +1 -0
- package/build/esm/constants/common.d.ts +7 -0
- package/build/esm/constants/common.js +7 -0
- package/build/esm/constants/index.d.ts +1 -0
- package/build/esm/constants/index.js +1 -0
- package/build/esm/context/DashKitContext.d.ts +2 -0
- package/build/esm/context/DashKitContext.js +3 -0
- package/build/esm/hocs/prepareItem.d.ts +66 -0
- package/build/esm/hocs/prepareItem.js +61 -0
- package/build/esm/hocs/withContext.d.ts +165 -0
- package/build/esm/hocs/withContext.js +198 -0
- package/build/esm/hooks/useCalcLayout.d.ts +13 -0
- package/build/esm/hooks/useCalcLayout.js +26 -0
- package/build/esm/i18n/en.json +8 -0
- package/build/esm/i18n/index.d.ts +4 -0
- package/build/esm/i18n/index.js +15 -0
- package/build/esm/i18n/ru.json +8 -0
- package/build/esm/icons/CloseIcon.d.ts +2 -0
- package/build/esm/icons/CloseIcon.js +5 -0
- package/build/esm/icons/CogIcon.d.ts +2 -0
- package/build/esm/icons/CogIcon.js +5 -0
- package/build/esm/icons/CopyIcon.d.ts +2 -0
- package/build/esm/icons/CopyIcon.js +5 -0
- package/build/esm/icons/DeleteIcon.d.ts +2 -0
- package/build/esm/icons/DeleteIcon.js +7 -0
- package/build/esm/icons/DotsIcon.d.ts +2 -0
- package/build/esm/icons/DotsIcon.js +5 -0
- package/build/esm/icons/TickIcon.d.ts +2 -0
- package/build/esm/icons/TickIcon.js +5 -0
- package/build/esm/icons/WarningIcon.d.ts +2 -0
- package/build/esm/icons/WarningIcon.js +5 -0
- package/build/esm/index.d.ts +5 -0
- package/build/esm/index.js +5 -0
- package/build/esm/plugins/Text/Text.css +34 -0
- package/build/esm/plugins/Text/Text.d.ts +53 -0
- package/build/esm/plugins/Text/Text.js +115 -0
- package/build/esm/plugins/Title/Title.css +24 -0
- package/build/esm/plugins/Title/Title.d.ts +15 -0
- package/build/esm/plugins/Title/Title.js +21 -0
- package/build/esm/shared/constants/common.d.ts +2 -0
- package/build/esm/shared/constants/common.js +2 -0
- package/build/esm/shared/constants/index.d.ts +1 -0
- package/build/esm/shared/constants/index.js +1 -0
- package/build/esm/shared/index.d.ts +4 -0
- package/build/esm/shared/index.js +4 -0
- package/build/esm/shared/modules/__tests__/helpers.test.d.ts +1 -0
- package/build/esm/shared/modules/__tests__/helpers.test.js +215 -0
- package/build/esm/shared/modules/helpers.d.ts +42 -0
- package/build/esm/shared/modules/helpers.js +157 -0
- package/build/esm/shared/modules/index.d.ts +2 -0
- package/build/esm/shared/modules/index.js +2 -0
- package/build/esm/shared/modules/state-and-params.d.ts +16 -0
- package/build/esm/shared/modules/state-and-params.js +87 -0
- package/build/esm/shared/types/common.d.ts +5 -0
- package/build/esm/shared/types/common.js +1 -0
- package/build/esm/shared/types/config.d.ts +49 -0
- package/build/esm/shared/types/config.js +1 -0
- package/build/esm/shared/types/index.d.ts +4 -0
- package/build/esm/shared/types/index.js +4 -0
- package/build/esm/shared/types/plugin.d.ts +8 -0
- package/build/esm/shared/types/plugin.js +1 -0
- package/build/esm/shared/types/state-and-params.d.ts +22 -0
- package/build/esm/shared/types/state-and-params.js +1 -0
- package/build/esm/shared/units/__tests__/state-and-params.test.d.ts +241 -0
- package/build/esm/shared/units/__tests__/state-and-params.test.js +295 -0
- package/build/esm/shared/units/datalens/index.d.ts +5 -0
- package/build/esm/shared/units/datalens/index.js +20 -0
- package/build/esm/shared/units/index.d.ts +1 -0
- package/build/esm/shared/units/index.js +1 -0
- package/build/esm/typings/common.d.ts +32 -0
- package/build/esm/typings/common.js +1 -0
- package/build/esm/typings/config.d.ts +7 -0
- package/build/esm/typings/config.js +1 -0
- package/build/esm/typings/global.d.ts +7 -0
- package/build/esm/typings/index.d.ts +3 -0
- package/build/esm/typings/index.js +3 -0
- package/build/esm/typings/plugin.d.ts +39 -0
- package/build/esm/typings/plugin.js +1 -0
- package/build/esm/utils/__tests__/mock.test.d.ts +1 -0
- package/build/esm/utils/__tests__/mock.test.js +8 -0
- package/build/esm/utils/configure.d.ts +9 -0
- package/build/esm/utils/configure.js +15 -0
- package/build/esm/utils/i18n.d.ts +7 -0
- package/build/esm/utils/i18n.js +9 -0
- package/build/esm/utils/index.d.ts +3 -0
- package/build/esm/utils/index.js +3 -0
- package/build/esm/utils/register-manager.d.ts +46 -0
- package/build/esm/utils/register-manager.js +54 -0
- package/build/esm/utils/update-manager.d.ts +37 -0
- package/build/esm/utils/update-manager.js +269 -0
- package/package.json +107 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [3.0.1](https://github.com/gravity-ui/dashkit/compare/v3.0.0...v3.0.1) (2022-10-03)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* move to gravity-ui org ([#17](https://github.com/gravity-ui/dashkit/issues/17)) ([6748e5f](https://github.com/gravity-ui/dashkit/commit/6748e5f51589dfa027ef69ef5d4d59abb13e9d79))
|
|
9
|
+
|
|
10
|
+
## [3.0.0](https://github.com/yandex-cloud/dashkit/compare/v2.0.1...v3.0.0) (2022-09-30)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* migrate to gravity-ui deps and new i18n usage (#15)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* migrate to gravity-ui deps and new i18n usage ([#15](https://github.com/yandex-cloud/dashkit/issues/15)) ([1b4eeb1](https://github.com/yandex-cloud/dashkit/commit/1b4eeb1165b02f37af27d11958858ae571160194))
|
|
20
|
+
|
|
21
|
+
## [2.0.1](https://github.com/yandex-cloud/dashkit/compare/v2.0.0...v2.0.1) (2022-08-22)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* downgrade dependent package ([#13](https://github.com/yandex-cloud/dashkit/issues/13)) ([d0a30d3](https://github.com/yandex-cloud/dashkit/commit/d0a30d3b0fbf3da6f1c82608a430f6a989b3cd3a))
|
|
27
|
+
|
|
28
|
+
## [2.0.0](https://github.com/yandex-cloud/dashkit/compare/v1.2.0...v2.0.0) (2022-08-11)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### ⚠ BREAKING CHANGES
|
|
32
|
+
|
|
33
|
+
* migrate to i18n 0.6.0 (#11)
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
* migrate to i18n 0.6.0 ([#11](https://github.com/yandex-cloud/dashkit/issues/11)) ([8cbdda6](https://github.com/yandex-cloud/dashkit/commit/8cbdda6d035411cb8f6b6c5d11f7949a997314f5))
|
|
38
|
+
|
|
39
|
+
## [1.2.0](https://github.com/yandex-cloud/dashkit/compare/v1.1.0...v1.2.0) (2022-08-08)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
* add custom dropdown menu item filter in edit mode ([#8](https://github.com/yandex-cloud/dashkit/issues/8)) ([5c2824a](https://github.com/yandex-cloud/dashkit/commit/5c2824a4a9a25174eff69b2f0b7b04b74cf74e0c))
|
|
45
|
+
|
|
46
|
+
## [1.1.0](https://github.com/yandex-cloud/dashkit/compare/v1.0.0...v1.1.0) (2022-08-02)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* flag to prevent double height optimizer ([#6](https://github.com/yandex-cloud/dashkit/issues/6)) ([8503a59](https://github.com/yandex-cloud/dashkit/commit/8503a59293bdff0b69a28ffb171b96d0b2551c16))
|
|
52
|
+
|
|
53
|
+
## 1.0.0 (2022-07-15)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Bug Fixes
|
|
57
|
+
|
|
58
|
+
* try publish ([#2](https://github.com/yandex-cloud/dashkit/issues/2)) ([a76fb55](https://github.com/yandex-cloud/dashkit/commit/a76fb5552e0f4697f3d889e03d9740fa8ad948d4))
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 YANDEX LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
# DashKit
|
|
2
|
+
|
|
3
|
+
A dashboard grid rendering library.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @gravity-ui/dashkit @gravity-ui/uikit @gravity-ui/i18n
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
The library is used to line up widgets in a grid, resize them, add new ones, and delete them.
|
|
14
|
+
The widget is a react component. For example, text, graphics, and images.
|
|
15
|
+
|
|
16
|
+
New widgets are added via a plugin system.
|
|
17
|
+
|
|
18
|
+
### Plugins
|
|
19
|
+
|
|
20
|
+
Plugins are required to create custom widgets.
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
interface DashKitProps {
|
|
26
|
+
config: Config;
|
|
27
|
+
editMode: boolean;
|
|
28
|
+
onItemEdit: ({id}: {id: string}) => void;
|
|
29
|
+
onChange: (data: {config: Config; itemsStateAndParams: ItemsStateAndParams}) => void;
|
|
30
|
+
defaultGlobalParams: GlobalParams;
|
|
31
|
+
globalParams: GlobalParams;
|
|
32
|
+
itemsStateAndParams: ItemsStateAndParams;
|
|
33
|
+
settings: SettingsProps;
|
|
34
|
+
context: ContextProps;
|
|
35
|
+
overlayControls?: Record<string, OverlayControlItem[]>;
|
|
36
|
+
noOverlay?: boolean;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- **config**: [сonfig](#Config).
|
|
41
|
+
- **editMode**: Whether edit mode is enabled.
|
|
42
|
+
- **onItemEdit**: Called when you click to edit a widget.
|
|
43
|
+
- **onChange**: Called when config or [itemsStateAndParams](#temsStateAndParams) are changed.
|
|
44
|
+
- **defaultGlobalParams**, **globalParams**: [Parameters](#Params) that affect all widgets. In DataLens, `defaultGlobalParams` are global parameters set in the dashboard settings. `globalParams` are globals parameters that can be set in the url.
|
|
45
|
+
- **itemsStateAndParams**: [itemsStateAndParams](#temsStateAndParams).
|
|
46
|
+
- **settings**: DashKit settings.
|
|
47
|
+
- **context**: Object that will be propped up on all widgets.
|
|
48
|
+
- **overlayControls**: Object that overrides widget controls at the time of editing. If not transmitted, basic controls will be displayed.
|
|
49
|
+
- **noOverlay**: If `true`, overlay and controls are not displayed while editing.
|
|
50
|
+
- **draggableHandleClassName** : СSS class name of the element that makes the widget draggable.
|
|
51
|
+
|
|
52
|
+
## Usage
|
|
53
|
+
|
|
54
|
+
### DashKit configuration
|
|
55
|
+
|
|
56
|
+
Before using `DashKit` as a react component, it must be configured.
|
|
57
|
+
|
|
58
|
+
- setLang
|
|
59
|
+
|
|
60
|
+
Used for setting the language of DashKit provided ui elements. Currently the languages supported are: ru, en.
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
import {setLang} from '@gravity-ui/dashkit';
|
|
64
|
+
|
|
65
|
+
setLang('en');
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**From version 3.0.0 the language must be set separately for each DashKit and Gravity-ui instances**
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
import {setLang} from '@gravity-ui/dashkit';
|
|
72
|
+
import {configure as uiKitConfigure, Lang as UILang} from '@gravity-ui/uikit';
|
|
73
|
+
|
|
74
|
+
setLang('en');
|
|
75
|
+
uiKitConfigure({lang: lang as UILang});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
- DashKit.setSettings
|
|
79
|
+
|
|
80
|
+
Used for global DashKit settings (such as margins between widgets, default widget sizes and widget overlay menu)
|
|
81
|
+
|
|
82
|
+
```js
|
|
83
|
+
import {DashKit} from '@gravity-ui/dashkit';
|
|
84
|
+
|
|
85
|
+
DashKit.setSettings({
|
|
86
|
+
gridLayout: {margin: [8, 8]},
|
|
87
|
+
isMobile: true,
|
|
88
|
+
// menu: [] as Array<MenuItem>,
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
- DashKit.registerPlugins
|
|
93
|
+
|
|
94
|
+
Registering and configuring plugins
|
|
95
|
+
|
|
96
|
+
```js
|
|
97
|
+
import {DashKit} from '@gravity-ui/dashkit';
|
|
98
|
+
import pluginTitle from '@gravity-ui/dashkit/build/esm/plugins/Title/Title';
|
|
99
|
+
import pluginText from '@gravity-ui/dashkit/build/esm/plugins/Text/Text';
|
|
100
|
+
|
|
101
|
+
DashKit.registerPlugins(
|
|
102
|
+
pluginTitle,
|
|
103
|
+
pluginText.setSettings({
|
|
104
|
+
apiHandler({text}) {
|
|
105
|
+
return api.getMarkdown(text);
|
|
106
|
+
},
|
|
107
|
+
}),
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
DashKit.registerPlugins({
|
|
111
|
+
type: 'custom',
|
|
112
|
+
defaultLayout: {
|
|
113
|
+
w: 10,
|
|
114
|
+
h: 8,
|
|
115
|
+
},
|
|
116
|
+
renderer: function CustomPlugin() {
|
|
117
|
+
return <div>Custom widget with custom controls</div>;
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Config
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
export interface Config {
|
|
126
|
+
salt: string; // to form a unique id
|
|
127
|
+
counter: number; // to form a unique id, only increases
|
|
128
|
+
items: ConfigItem[]; // initial widget states
|
|
129
|
+
layout: ConfigLayout[]; // widget position on the grid https://github.com/react-grid-layout
|
|
130
|
+
aliases: ConfigAliases; // aliases for parameters see #Params
|
|
131
|
+
connections: ConfigConnection[]; // links between widgets see #Params
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Config example:
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import {DashKitProps} from '@gravity-ui/dashkit';
|
|
139
|
+
|
|
140
|
+
const config: DashKitProps['config'] = {
|
|
141
|
+
salt: '0.46703554571365613',
|
|
142
|
+
counter: 4,
|
|
143
|
+
items: [
|
|
144
|
+
{
|
|
145
|
+
id: 'tT',
|
|
146
|
+
data: {
|
|
147
|
+
size: 'm',
|
|
148
|
+
text: 'Caption',
|
|
149
|
+
showInTOC: true,
|
|
150
|
+
},
|
|
151
|
+
type: 'title',
|
|
152
|
+
namespace: 'default',
|
|
153
|
+
orderId: 1,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: 'Ea',
|
|
157
|
+
data: {
|
|
158
|
+
text: 'mode _editActive',
|
|
159
|
+
_editActive: true,
|
|
160
|
+
},
|
|
161
|
+
type: 'text',
|
|
162
|
+
namespace: 'default',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: 'zR',
|
|
166
|
+
data: {
|
|
167
|
+
text: '### Text',
|
|
168
|
+
},
|
|
169
|
+
type: 'text',
|
|
170
|
+
namespace: 'default',
|
|
171
|
+
orderId: 0,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'Dk',
|
|
175
|
+
data: {
|
|
176
|
+
foo: 'bar',
|
|
177
|
+
},
|
|
178
|
+
type: 'custom',
|
|
179
|
+
namespace: 'default',
|
|
180
|
+
orderId: 5,
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
layout: [
|
|
184
|
+
{
|
|
185
|
+
h: 2,
|
|
186
|
+
i: 'tT',
|
|
187
|
+
w: 36,
|
|
188
|
+
x: 0,
|
|
189
|
+
y: 0,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
h: 6,
|
|
193
|
+
i: 'Ea',
|
|
194
|
+
w: 12,
|
|
195
|
+
x: 0,
|
|
196
|
+
y: 2,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
h: 6,
|
|
200
|
+
i: 'zR',
|
|
201
|
+
w: 12,
|
|
202
|
+
x: 12,
|
|
203
|
+
y: 2,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
h: 4,
|
|
207
|
+
i: 'Dk',
|
|
208
|
+
w: 8,
|
|
209
|
+
x: 0,
|
|
210
|
+
y: 8,
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
aliases: {},
|
|
214
|
+
connections: [],
|
|
215
|
+
};
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Add a new item to the config:
|
|
219
|
+
|
|
220
|
+
```ts
|
|
221
|
+
const newConfig = DashKit.setItem({
|
|
222
|
+
item: {
|
|
223
|
+
data: {
|
|
224
|
+
text: `Some text`,
|
|
225
|
+
},
|
|
226
|
+
namespace: 'default',
|
|
227
|
+
type: 'text',
|
|
228
|
+
},
|
|
229
|
+
config: config,
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Change an existing item in the config:
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
const newConfig = DashKit.setItem({
|
|
237
|
+
item: {
|
|
238
|
+
id: 'tT', // item.id
|
|
239
|
+
data: {
|
|
240
|
+
size: 'm',
|
|
241
|
+
text: `New caption`,
|
|
242
|
+
},
|
|
243
|
+
namespace: 'default',
|
|
244
|
+
type: 'title',
|
|
245
|
+
},
|
|
246
|
+
config: config,
|
|
247
|
+
});
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Delete an item from the config:
|
|
251
|
+
|
|
252
|
+
```ts
|
|
253
|
+
import {DashKitProps} from '@gravity-ui/dashkit';
|
|
254
|
+
|
|
255
|
+
const oldItemsStateAndParams: DashKitProps['itemsStateAndParams'] = {};
|
|
256
|
+
|
|
257
|
+
const {config: newConfig, itemsStateAndParams} = DashKit.removeItem({
|
|
258
|
+
id: 'tT', // item.id
|
|
259
|
+
config: config,
|
|
260
|
+
itemsStateAndParams: this.state.itemsStateAndParams,
|
|
261
|
+
});
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Params
|
|
265
|
+
|
|
266
|
+
```ts
|
|
267
|
+
type Params = Record<string, string | string[]>;
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
`DashKit` generates parameters according to the default parameters for widgets, links, and aliases. These parameters are required for the [ChartKit](https://github.com/gravity-ui/chartkit) library.
|
|
271
|
+
|
|
272
|
+
Generation order:
|
|
273
|
+
|
|
274
|
+
1. `defaultGlobalParams`
|
|
275
|
+
2. Default widget parameters `item.default`
|
|
276
|
+
3. `globalParams`
|
|
277
|
+
4. Parameters from [itemsStateAndParams](#itemsStateAndParams) according to the queue.
|
|
278
|
+
|
|
279
|
+
### itemsStateAndParams
|
|
280
|
+
|
|
281
|
+
Object that stores widget parameters and states as well as a parameter change queue.
|
|
282
|
+
It has a `__meta__` field for storing queue and meta information.
|
|
283
|
+
|
|
284
|
+
```ts
|
|
285
|
+
interface StateAndParamsMeta = {
|
|
286
|
+
__meta__: {
|
|
287
|
+
queue: {id: string}[]; // queue
|
|
288
|
+
version: number; // current version itemsStateAndParams
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
And also widget states and parameters:
|
|
294
|
+
|
|
295
|
+
```ts
|
|
296
|
+
interface ItemsStateAndParamsBase {
|
|
297
|
+
[itemId: string]: {
|
|
298
|
+
state?: Record<string, any>;
|
|
299
|
+
params?: Params;
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
```ts
|
|
305
|
+
type ItemsStateAndParams = StateAndParamsMeta & ItemsStateAndParamsBase;
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Menu
|
|
309
|
+
|
|
310
|
+
You can specify custom DashKit widget overlay menu in edit mode
|
|
311
|
+
|
|
312
|
+
```ts
|
|
313
|
+
type MenuItem = {
|
|
314
|
+
id: string; // uniq id
|
|
315
|
+
title?: string; // string title
|
|
316
|
+
icon?: ReactNode; // node of icon
|
|
317
|
+
iconSize?: number | string; // icon size in px as number or as string with units
|
|
318
|
+
handler?: (item: ConfigItem) => void; // custom item action handler
|
|
319
|
+
visible?: (item: ConfigItem) => boolean; // optional visibility handler for filtering menu items
|
|
320
|
+
className?: string; // custom class property
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
// use array of menu items in settings
|
|
324
|
+
DashKit.setSettings({menu: [] as Array<MenuItem>});
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Development
|
|
328
|
+
|
|
329
|
+
### Build & watch
|
|
330
|
+
|
|
331
|
+
- Build dependencies `npm ci`
|
|
332
|
+
- Build a project `npm run build`
|
|
333
|
+
- Build storybook `npm run start`
|
|
334
|
+
|
|
335
|
+
By default, storybook runs on `http://localhost:7120/`.
|
|
336
|
+
New changes from a project aren't always picked up when storybook is running, so it's better to rebuild a project manually and restart storybook.
|
|
337
|
+
|
|
338
|
+
### Example of an nginx config for development on a dev machine
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
server {
|
|
342
|
+
server_name dashkit.username.ru;
|
|
343
|
+
|
|
344
|
+
include common/ssl;
|
|
345
|
+
|
|
346
|
+
access_log /home/username/logs/common.access.log;
|
|
347
|
+
error_log /home/username/logs/common.error.log;
|
|
348
|
+
|
|
349
|
+
root /home/username/projects/dashkit;
|
|
350
|
+
|
|
351
|
+
location / {
|
|
352
|
+
try_files $uri @node;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
location @node {
|
|
356
|
+
proxy_set_header Host $host;
|
|
357
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
358
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
359
|
+
proxy_pass http://127.0.0.1:7120;
|
|
360
|
+
proxy_redirect off;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import GridLayout from '../GridLayout/GridLayout';
|
|
3
|
+
import { SetConfigItem, Settings, SettingsProps, ContextProps, Plugin } from '../../typings';
|
|
4
|
+
import { GlobalParams, Config, ConfigItem, ItemsStateAndParams } from '../../shared';
|
|
5
|
+
import { OverlayControlItem } from '../OverlayControls/OverlayControls';
|
|
6
|
+
interface DashKitGeneralProps {
|
|
7
|
+
config: Config;
|
|
8
|
+
editMode: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface DashKitDefaultProps {
|
|
11
|
+
onItemEdit: (item: ConfigItem) => void;
|
|
12
|
+
onChange: (data: {
|
|
13
|
+
config: Config;
|
|
14
|
+
itemsStateAndParams: ItemsStateAndParams;
|
|
15
|
+
}) => void;
|
|
16
|
+
defaultGlobalParams: GlobalParams;
|
|
17
|
+
globalParams: GlobalParams;
|
|
18
|
+
itemsStateAndParams: ItemsStateAndParams;
|
|
19
|
+
settings: SettingsProps;
|
|
20
|
+
context: ContextProps;
|
|
21
|
+
overlayControls?: Record<string, OverlayControlItem[]>;
|
|
22
|
+
noOverlay?: boolean;
|
|
23
|
+
draggableHandleClassName?: string;
|
|
24
|
+
_EXPERIMENTAL_preventDoubleCompact?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface DashKitProps extends DashKitGeneralProps, Partial<DashKitDefaultProps> {
|
|
27
|
+
}
|
|
28
|
+
declare type DashKitInnerProps = DashKitGeneralProps & DashKitDefaultProps;
|
|
29
|
+
export declare class DashKit extends React.PureComponent<DashKitInnerProps> {
|
|
30
|
+
static defaultProps: DashKitDefaultProps;
|
|
31
|
+
static registerPlugins(...plugins: Plugin[]): void;
|
|
32
|
+
static setSettings(settings: Settings): void;
|
|
33
|
+
static setItem({ item: setItem, namespace, config, }: {
|
|
34
|
+
item: SetConfigItem;
|
|
35
|
+
namespace?: string;
|
|
36
|
+
config: Config;
|
|
37
|
+
}): Config;
|
|
38
|
+
static removeItem({ id, config, itemsStateAndParams, }: {
|
|
39
|
+
id: string;
|
|
40
|
+
config: Config;
|
|
41
|
+
itemsStateAndParams: ItemsStateAndParams;
|
|
42
|
+
}): {
|
|
43
|
+
config: Config;
|
|
44
|
+
itemsStateAndParams: ItemsStateAndParams;
|
|
45
|
+
};
|
|
46
|
+
metaRef: React.RefObject<GridLayout>;
|
|
47
|
+
render(): JSX.Element;
|
|
48
|
+
getItemsMeta(): any;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DashKit = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const noop_1 = tslib_1.__importDefault(require("lodash/noop"));
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const DashKitView_1 = tslib_1.__importDefault(require("../DashKitView/DashKitView"));
|
|
9
|
+
const constants_1 = require("../../constants");
|
|
10
|
+
const registerManager = new utils_1.RegisterManager();
|
|
11
|
+
class DashKit extends react_1.default.PureComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.metaRef = react_1.default.createRef();
|
|
15
|
+
}
|
|
16
|
+
static registerPlugins(...plugins) {
|
|
17
|
+
plugins.forEach((plugin) => {
|
|
18
|
+
registerManager.registerPlugin(plugin);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
static setSettings(settings) {
|
|
22
|
+
registerManager.setSettings(settings);
|
|
23
|
+
}
|
|
24
|
+
static setItem({ item: setItem, namespace = constants_1.DEFAULT_NAMESPACE, config, }) {
|
|
25
|
+
if (setItem.id) {
|
|
26
|
+
return utils_1.UpdateManager.editItem({ item: setItem, namespace, config });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const item = setItem;
|
|
30
|
+
const layout = Object.assign({}, registerManager.getItem(item.type).defaultLayout);
|
|
31
|
+
if (item.layout) {
|
|
32
|
+
Object.assign(layout, item.layout);
|
|
33
|
+
}
|
|
34
|
+
return utils_1.UpdateManager.addItem({
|
|
35
|
+
item,
|
|
36
|
+
namespace,
|
|
37
|
+
config,
|
|
38
|
+
layout,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static removeItem({ id, config, itemsStateAndParams, }) {
|
|
43
|
+
return utils_1.UpdateManager.removeItem({ id, config, itemsStateAndParams });
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
46
|
+
return (react_1.default.createElement(DashKitView_1.default
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
, Object.assign({
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
registerManager: registerManager, ref: this.metaRef }, this.props)));
|
|
51
|
+
}
|
|
52
|
+
getItemsMeta() {
|
|
53
|
+
var _a;
|
|
54
|
+
return (_a = this.metaRef.current) === null || _a === void 0 ? void 0 : _a.getItemsMeta();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.DashKit = DashKit;
|
|
58
|
+
DashKit.defaultProps = {
|
|
59
|
+
onItemEdit: noop_1.default,
|
|
60
|
+
onChange: noop_1.default,
|
|
61
|
+
defaultGlobalParams: {},
|
|
62
|
+
globalParams: {},
|
|
63
|
+
itemsStateAndParams: {},
|
|
64
|
+
settings: {
|
|
65
|
+
autoupdateInterval: 0,
|
|
66
|
+
silentLoading: false,
|
|
67
|
+
},
|
|
68
|
+
context: {},
|
|
69
|
+
noOverlay: false,
|
|
70
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DashKit';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
5
|
+
const bem_cn_lite_1 = tslib_1.__importDefault(require("bem-cn-lite"));
|
|
6
|
+
const DashKitContext_1 = require("../../context/DashKitContext");
|
|
7
|
+
const GridLayout_1 = tslib_1.__importDefault(require("../GridLayout/GridLayout"));
|
|
8
|
+
const MobileLayout_1 = tslib_1.__importDefault(require("../MobileLayout/MobileLayout"));
|
|
9
|
+
const withContext_1 = require("../../hocs/withContext");
|
|
10
|
+
const useCalcLayout_1 = require("../../hooks/useCalcLayout");
|
|
11
|
+
const b = (0, bem_cn_lite_1.default)('dashkit');
|
|
12
|
+
function DashKitView() {
|
|
13
|
+
const context = react_1.default.useContext(DashKitContext_1.DashKitContext);
|
|
14
|
+
const { registerManager, forwardedMetaRef } = context;
|
|
15
|
+
return (react_1.default.createElement("div", { className: b({ theme: registerManager.settings.theme }) }, registerManager.settings.isMobile ? (react_1.default.createElement(MobileLayout_1.default, null)) : (react_1.default.createElement(GridLayout_1.default, { ref: forwardedMetaRef }))));
|
|
16
|
+
}
|
|
17
|
+
const DashKitViewWithContext = (0, withContext_1.withContext)(DashKitView);
|
|
18
|
+
const DashKitViewForwardedMeta = react_1.default.forwardRef((props, ref) => {
|
|
19
|
+
const layout = (0, useCalcLayout_1.useCalcPropsLayout)(props.config, props.registerManager);
|
|
20
|
+
return react_1.default.createElement(DashKitViewWithContext, Object.assign({}, props, { layout: layout, forwardedMetaRef: ref }));
|
|
21
|
+
});
|
|
22
|
+
DashKitViewForwardedMeta.displayName = 'DashKitViewForwardedMeta';
|
|
23
|
+
exports.default = DashKitViewForwardedMeta;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
.dashkit-grid-item {
|
|
2
|
+
position: relative;
|
|
3
|
+
}
|
|
4
|
+
.dashkit-grid-item__overlay {
|
|
5
|
+
position: absolute;
|
|
6
|
+
top: 0;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
left: 0;
|
|
9
|
+
right: 0;
|
|
10
|
+
border-radius: 3px;
|
|
11
|
+
background-color: rgba(230, 230, 230, 0.2);
|
|
12
|
+
border: solid 1px rgba(0, 0, 0, 0.1);
|
|
13
|
+
}
|
|
14
|
+
.dashkit-grid-item__item {
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 0;
|
|
17
|
+
bottom: 0;
|
|
18
|
+
left: 0;
|
|
19
|
+
right: 0;
|
|
20
|
+
border-radius: 3px;
|
|
21
|
+
}
|
|
22
|
+
.dashkit-grid-item__item_editMode {
|
|
23
|
+
opacity: 0.5;
|
|
24
|
+
border-color: transparent;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.react-grid-layout {
|
|
29
|
+
position: relative;
|
|
30
|
+
transition: height 200ms ease;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.react-grid-item {
|
|
34
|
+
transition: all 200ms ease;
|
|
35
|
+
transition-property: left, top;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.react-grid-item.cssTransforms {
|
|
39
|
+
transition-property: transform;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.react-grid-item.resizing {
|
|
43
|
+
z-index: 1;
|
|
44
|
+
will-change: width, height;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.react-grid-item.react-draggable:not(.dashkit-grid-item_with-custom-handle) {
|
|
48
|
+
cursor: move;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.react-grid-item.react-draggable-dragging {
|
|
52
|
+
transition: none;
|
|
53
|
+
z-index: 3;
|
|
54
|
+
will-change: transform;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.react-grid-item.react-grid-placeholder {
|
|
58
|
+
background: #fc0;
|
|
59
|
+
opacity: 0.2;
|
|
60
|
+
transition-duration: 100ms;
|
|
61
|
+
z-index: 2;
|
|
62
|
+
user-select: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.react-grid-item .react-resizable-handle {
|
|
66
|
+
position: absolute;
|
|
67
|
+
width: 20px;
|
|
68
|
+
height: 20px;
|
|
69
|
+
bottom: 0;
|
|
70
|
+
right: 0;
|
|
71
|
+
cursor: se-resize;
|
|
72
|
+
z-index: 6;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.react-grid-item .react-resizable-handle::after {
|
|
76
|
+
content: "";
|
|
77
|
+
position: absolute;
|
|
78
|
+
right: 3px;
|
|
79
|
+
bottom: 3px;
|
|
80
|
+
border: 4px solid transparent;
|
|
81
|
+
border-right-color: rgba(0, 0, 0, 0.4);
|
|
82
|
+
border-bottom-color: rgba(0, 0, 0, 0.4);
|
|
83
|
+
}
|