@cloud-ru/ds-uikit-product-header 2.1.3-preview-97040951.0 → 2.1.3
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 +4 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.js +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +8 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +2 -2
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +2 -6
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +10 -13
- package/dist/cjs/components/MainMenu/helperComponents/Content/styles.module.css +0 -15
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/constants.js +1 -1
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.js +0 -12
- package/dist/cjs/style.css +10 -36
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.js +1 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +8 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +2 -2
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +2 -6
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +1 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +10 -13
- package/dist/esm/components/MainMenu/helperComponents/Content/styles.module.css +0 -15
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/constants.js +1 -1
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.js +1 -10
- package/dist/esm/style.css +10 -36
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +28 -28
- package/src/components/MainMenu/helperComponents/Content/Content.tsx +1 -3
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.tsx +11 -1
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.tsx +4 -9
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.scss +19 -27
- package/src/components/MainMenu/helperComponents/Content/styles.module.scss +0 -22
- package/src/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.tsx +1 -1
- package/src/components/MainMenu/helperComponents/MenuDesktop/constants.ts +1 -1
- package/src/components/MainMenu/helperComponents/MenuDesktop/styles.module.scss +2 -6
- package/src/components/MainMenu/hooks/useMainMenuDnd.tsx +1 -12
- package/dist/cjs/components/MainMenu/styles.module.css +0 -8
- package/dist/esm/components/MainMenu/styles.module.css +0 -8
- package/src/components/MainMenu/styles.module.scss +0 -10
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloud-ru/ds-uikit-product-header",
|
|
3
|
-
"version": "2.1.3
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"description": "Продуктовая шапка консоли — HeaderLayout, MainMenu, UserMenu, Logo, PathBreadcrumbs и PlatformLogo.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -45,33 +45,33 @@
|
|
|
45
45
|
"@dnd-kit/utilities": "^3.2.2",
|
|
46
46
|
"classnames": "^2.5.1",
|
|
47
47
|
"fuse.js": "^7.1.0",
|
|
48
|
-
"@cloud-ru/ds-accordion": "1.2.1",
|
|
49
|
-
"@cloud-ru/ds-avatar": "1.0.11",
|
|
50
|
-
"@cloud-ru/ds-adaptive": "1.0.2",
|
|
51
|
-
"@cloud-ru/ds-
|
|
52
|
-
"@cloud-ru/ds-
|
|
53
|
-
"@cloud-ru/ds-card": "1.0.22",
|
|
54
|
-
"@cloud-ru/ds-drag-and-drop": "1.1.3",
|
|
55
|
-
"@cloud-ru/ds-
|
|
56
|
-
"@cloud-ru/ds-
|
|
57
|
-
"@cloud-ru/ds-icons": "1.5.0",
|
|
58
|
-
"@cloud-ru/ds-
|
|
59
|
-
"@cloud-ru/ds-
|
|
60
|
-
"@cloud-ru/ds-locale": "1.0.0",
|
|
61
|
-
"@cloud-ru/ds-
|
|
62
|
-
"@cloud-ru/ds-
|
|
63
|
-
"@cloud-ru/ds-promo-tag": "1.0.3",
|
|
64
|
-
"@cloud-ru/ds-scroll": "1.0.5",
|
|
65
|
-
"@cloud-ru/ds-
|
|
66
|
-
"@cloud-ru/ds-
|
|
67
|
-
"@cloud-ru/ds-
|
|
68
|
-
"@cloud-ru/ds-theme": "2.1.0",
|
|
69
|
-
"@cloud-ru/ds-tooltip": "1.0.11",
|
|
70
|
-
"@cloud-ru/ds-typography": "1.0.1",
|
|
71
|
-
"@cloud-ru/ds-uikit-product-
|
|
72
|
-
"@cloud-ru/ds-uikit-product-
|
|
73
|
-
"@cloud-ru/ds-utils": "1.2.0",
|
|
74
|
-
"@cloud-ru/ds-uikit-product-
|
|
48
|
+
"@cloud-ru/ds-accordion": "^1.2.1",
|
|
49
|
+
"@cloud-ru/ds-avatar": "^1.0.11",
|
|
50
|
+
"@cloud-ru/ds-adaptive": "^1.0.2",
|
|
51
|
+
"@cloud-ru/ds-button": "^1.0.4",
|
|
52
|
+
"@cloud-ru/ds-breadcrumbs": "^1.0.29",
|
|
53
|
+
"@cloud-ru/ds-card": "^1.0.22",
|
|
54
|
+
"@cloud-ru/ds-drag-and-drop": "^1.1.3",
|
|
55
|
+
"@cloud-ru/ds-divider": "^1.0.2",
|
|
56
|
+
"@cloud-ru/ds-drawer": "^2.0.0",
|
|
57
|
+
"@cloud-ru/ds-icons": "^1.5.0",
|
|
58
|
+
"@cloud-ru/ds-info-block": "^1.0.3",
|
|
59
|
+
"@cloud-ru/ds-list": "^2.3.2",
|
|
60
|
+
"@cloud-ru/ds-locale": "^1.0.0",
|
|
61
|
+
"@cloud-ru/ds-modal": "^2.0.0",
|
|
62
|
+
"@cloud-ru/ds-portal-context": "^1.0.2",
|
|
63
|
+
"@cloud-ru/ds-promo-tag": "^1.0.3",
|
|
64
|
+
"@cloud-ru/ds-scroll": "^1.0.5",
|
|
65
|
+
"@cloud-ru/ds-search": "^1.0.14",
|
|
66
|
+
"@cloud-ru/ds-skeleton": "^1.0.2",
|
|
67
|
+
"@cloud-ru/ds-segment-control": "^1.0.13",
|
|
68
|
+
"@cloud-ru/ds-theme": "^2.1.0",
|
|
69
|
+
"@cloud-ru/ds-tooltip": "^1.0.11",
|
|
70
|
+
"@cloud-ru/ds-typography": "^1.0.1",
|
|
71
|
+
"@cloud-ru/ds-uikit-product-switch-row": "^1.0.14",
|
|
72
|
+
"@cloud-ru/ds-uikit-product-title-clickable": "^1.0.16",
|
|
73
|
+
"@cloud-ru/ds-utils": "^1.2.0",
|
|
74
|
+
"@cloud-ru/ds-uikit-product-card-predefined": "^4.0.9"
|
|
75
75
|
},
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
import { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';
|
|
1
2
|
import { DragDropSVG } from '@cloud-ru/ds-icons/interface/system';
|
|
2
3
|
import { stopEventPropagation } from '@cloud-ru/ds-utils';
|
|
3
4
|
|
|
4
5
|
import { headerLocale } from '../../../../../../../locale';
|
|
5
6
|
import styles from '../styles.module.scss';
|
|
6
7
|
|
|
7
|
-
export
|
|
8
|
+
export type SortableGroupDragHandleProps = {
|
|
9
|
+
/** ARIA-атрибуты `dnd-kit` draggable-элемента. */
|
|
10
|
+
attributes?: DraggableAttributes;
|
|
11
|
+
/** Обработчики событий `dnd-kit` для инициации перетаскивания. */
|
|
12
|
+
listeners?: DraggableSyntheticListeners;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function SortableGroupDragHandle({ attributes, listeners }: SortableGroupDragHandleProps) {
|
|
8
16
|
const { t } = headerLocale.useTranslations();
|
|
9
17
|
|
|
10
18
|
return (
|
|
11
19
|
<button
|
|
20
|
+
{...attributes}
|
|
21
|
+
{...listeners}
|
|
12
22
|
type='button'
|
|
13
23
|
className={styles.dragHandle}
|
|
14
24
|
aria-label={t('dragGroup')}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';
|
|
2
1
|
import { Button } from '@cloud-ru/ds-button';
|
|
3
2
|
import { ChevronDownSVG, ChevronUpSVG } from '@cloud-ru/ds-icons/interface/system';
|
|
4
3
|
import { Typography } from '@cloud-ru/ds-typography';
|
|
@@ -8,18 +7,14 @@ import { memo, MouseEventHandler, useCallback } from 'react';
|
|
|
8
7
|
import { LinksGroup, LinksGroupTitle } from '../../../../../types';
|
|
9
8
|
import { getLinkEmblem } from '../../../../../utils';
|
|
10
9
|
import styles from '../styles.module.scss';
|
|
11
|
-
import { SortableGroupDragHandle } from './SortableGroupDragHandle';
|
|
10
|
+
import { SortableGroupDragHandle, SortableGroupDragHandleProps } from './SortableGroupDragHandle';
|
|
12
11
|
|
|
13
12
|
export type SortableGroupHeaderProps = Pick<LinksGroup, 'icon'> & {
|
|
14
13
|
label: LinksGroupTitle;
|
|
15
14
|
isExpanded?: boolean;
|
|
16
15
|
enableServiceDrag?: boolean;
|
|
17
16
|
isMobile?: boolean;
|
|
18
|
-
|
|
19
|
-
attributes?: DraggableAttributes;
|
|
20
|
-
/** Обработчики событий `dnd-kit` для инициации перетаскивания. */
|
|
21
|
-
listeners?: DraggableSyntheticListeners;
|
|
22
|
-
};
|
|
17
|
+
} & SortableGroupDragHandleProps;
|
|
23
18
|
|
|
24
19
|
function SortableGroupHeaderBase({
|
|
25
20
|
label,
|
|
@@ -40,7 +35,7 @@ function SortableGroupHeaderBase({
|
|
|
40
35
|
);
|
|
41
36
|
|
|
42
37
|
return (
|
|
43
|
-
<div className={styles.header} data-expanded={isExpanded || undefined}
|
|
38
|
+
<div className={styles.header} data-expanded={isExpanded || undefined}>
|
|
44
39
|
<Typography
|
|
45
40
|
variant='title'
|
|
46
41
|
size='m'
|
|
@@ -61,7 +56,7 @@ function SortableGroupHeaderBase({
|
|
|
61
56
|
|
|
62
57
|
{(enableServiceDrag || !isMobile) && (
|
|
63
58
|
<div className={styles.headerActions} data-always-visible={isMobile || undefined}>
|
|
64
|
-
{enableServiceDrag && <SortableGroupDragHandle />}
|
|
59
|
+
{enableServiceDrag && <SortableGroupDragHandle attributes={attributes} listeners={listeners} />}
|
|
65
60
|
|
|
66
61
|
{!isMobile && (
|
|
67
62
|
<Button
|
|
@@ -17,11 +17,6 @@ $map-block-color-decor: (
|
|
|
17
17
|
'pink': base.$sn-theme-color-pink-decor,
|
|
18
18
|
);
|
|
19
19
|
|
|
20
|
-
@mixin header-actions-visible {
|
|
21
|
-
pointer-events: auto;
|
|
22
|
-
opacity: 1;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
20
|
.headerActions {
|
|
26
21
|
pointer-events: none;
|
|
27
22
|
|
|
@@ -34,7 +29,7 @@ $map-block-color-decor: (
|
|
|
34
29
|
outline: none;
|
|
35
30
|
|
|
36
31
|
&[data-always-visible] {
|
|
37
|
-
|
|
32
|
+
opacity: 1;
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
35
|
|
|
@@ -52,7 +47,8 @@ $map-block-color-decor: (
|
|
|
52
47
|
&:focus-visible,
|
|
53
48
|
&:has(:focus-visible) {
|
|
54
49
|
.headerActions {
|
|
55
|
-
|
|
50
|
+
pointer-events: auto;
|
|
51
|
+
opacity: 1;
|
|
56
52
|
}
|
|
57
53
|
}
|
|
58
54
|
|
|
@@ -61,7 +57,8 @@ $map-block-color-decor: (
|
|
|
61
57
|
background-color: base.$sn-theme-color-neutral-decorTransparent;
|
|
62
58
|
|
|
63
59
|
.headerActions {
|
|
64
|
-
|
|
60
|
+
pointer-events: auto;
|
|
61
|
+
opacity: 1;
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
}
|
|
@@ -109,31 +106,22 @@ $map-block-color-decor: (
|
|
|
109
106
|
}
|
|
110
107
|
|
|
111
108
|
&[data-drag-preview] {
|
|
109
|
+
cursor: grabbing;
|
|
110
|
+
|
|
112
111
|
.header {
|
|
112
|
+
cursor: grabbing;
|
|
113
113
|
background-color: base.$sn-theme-color-neutral-decorTransparent;
|
|
114
114
|
|
|
115
115
|
.headerActions {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
&:has(:focus-visible) {
|
|
122
|
-
.headerActions {
|
|
123
|
-
@include header-actions-visible;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
@media (hover: hover) {
|
|
128
|
-
&:hover {
|
|
129
|
-
.headerActions {
|
|
130
|
-
@include header-actions-visible;
|
|
116
|
+
pointer-events: auto;
|
|
117
|
+
opacity: 1;
|
|
131
118
|
}
|
|
132
119
|
}
|
|
133
120
|
}
|
|
134
121
|
}
|
|
135
122
|
|
|
136
123
|
.groupDragPreview {
|
|
124
|
+
cursor: grabbing;
|
|
137
125
|
container-type: inline-size;
|
|
138
126
|
border-radius: $group-border-radius;
|
|
139
127
|
}
|
|
@@ -184,6 +172,7 @@ $map-block-color-decor: (
|
|
|
184
172
|
|
|
185
173
|
.groupBody {
|
|
186
174
|
display: grid;
|
|
175
|
+
grid-template-columns: repeat(3, minmax(auto, 1fr));
|
|
187
176
|
gap: base.$sn-primitive-dimension-4;
|
|
188
177
|
|
|
189
178
|
&:not([data-subcategory-body]) {
|
|
@@ -195,11 +184,14 @@ $map-block-color-decor: (
|
|
|
195
184
|
gap: 0;
|
|
196
185
|
}
|
|
197
186
|
|
|
198
|
-
// Drawer десктопного меню ресайзится пользователем (см. MenuDesktop.resizable), поэтому число
|
|
199
|
-
// колонок выводится из ширины контейнера автоматически: сколько карточек минимальной ширины влезает.
|
|
200
|
-
// Нет токена минимальной ширины карточки.
|
|
201
187
|
&:not([data-mobile]) {
|
|
202
|
-
|
|
188
|
+
// Drawer десктопного меню ресайзится пользователем (см. MenuDesktop.resizable),
|
|
189
|
+
// поэтому колонки реагируют на реальную ширину контейнера (container query
|
|
190
|
+
// от `.rightContent`), а не на ширину viewport.
|
|
191
|
+
// Перестраиваться должно при ширине дровера 1024px, поэтому width тут указан с вычетом
|
|
192
|
+
@container (width <= 728px) {
|
|
193
|
+
grid-template-columns: repeat(2, minmax(auto, 1fr));
|
|
194
|
+
}
|
|
203
195
|
}
|
|
204
196
|
|
|
205
197
|
&[data-mobile] {
|
|
@@ -27,28 +27,6 @@
|
|
|
27
27
|
gap: inherit;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
.rightTop {
|
|
31
|
-
width: 100%;
|
|
32
|
-
min-width: 0;
|
|
33
|
-
|
|
34
|
-
&:not([data-mobile]) {
|
|
35
|
-
// Не больше двух колонок: минимальная ширина колонки не меньше половины контейнера (за вычетом gap),
|
|
36
|
-
// а при ширине меньше 2 × 286px баннеры встают в одну колонку. `auto-fit` схлопывает пустые колонки: один баннер занимает всю ширину.
|
|
37
|
-
display: grid;
|
|
38
|
-
grid-template-columns: repeat(
|
|
39
|
-
auto-fit,
|
|
40
|
-
minmax(max(286px, calc((100% - #{base.$sn-primitive-dimension-4}) / 2)), 1fr)
|
|
41
|
-
);
|
|
42
|
-
gap: base.$sn-primitive-dimension-4;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
&[data-mobile] {
|
|
46
|
-
display: flex;
|
|
47
|
-
flex-direction: column;
|
|
48
|
-
gap: base.$sn-primitive-dimension-8;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
30
|
.noData {
|
|
53
31
|
flex: 1 1 auto;
|
|
54
32
|
place-self: center center;
|
|
@@ -167,7 +167,7 @@ export function MenuDesktop({
|
|
|
167
167
|
isNeedRightBlock
|
|
168
168
|
? {
|
|
169
169
|
min: MENU_WIDTH_MIN,
|
|
170
|
-
max:
|
|
170
|
+
max: MENU_WIDTH_MAX,
|
|
171
171
|
default: Math.min(Math.max(defaultWidth, MENU_WIDTH_MIN), MENU_WIDTH_MAX),
|
|
172
172
|
onResizeEnd: onWidthChangeEnd,
|
|
173
173
|
draggerTooltip,
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
@use '@cloud-ru/ds-figma-variables/build/scss/components/divider.module' as divider;
|
|
3
3
|
@use '@cloud-ru/ds-figma-variables/build/scss/components/drawer.module' as drawer;
|
|
4
4
|
|
|
5
|
-
$drawer-sidebar-width: 263px;
|
|
6
|
-
|
|
7
5
|
.drawer {
|
|
8
6
|
border-radius: drawer.$sn-drawer-anatomy-container-vertical-positionLeft-container-borderTopLeftRadius
|
|
9
7
|
drawer.$sn-drawer-anatomy-container-vertical-positionLeft-container-borderTopRightRadius
|
|
@@ -42,9 +40,7 @@ $drawer-sidebar-width: 263px;
|
|
|
42
40
|
// по умолчанию box-sizing: content-box; и из-за этого max-width определяется некорректно
|
|
43
41
|
box-sizing: border-box;
|
|
44
42
|
width: 100%;
|
|
45
|
-
max-width: calc(
|
|
46
|
-
#{$drawer-sidebar-width} + #{drawer.$sn-drawer-anatomy-container-vertical-positionLeft-paddingRight}
|
|
47
|
-
);
|
|
43
|
+
max-width: calc(263px + #{drawer.$sn-drawer-anatomy-container-vertical-positionLeft-paddingRight});
|
|
48
44
|
|
|
49
45
|
.left {
|
|
50
46
|
width: 100%;
|
|
@@ -80,7 +76,7 @@ $drawer-sidebar-width: 263px;
|
|
|
80
76
|
.menu {
|
|
81
77
|
--snack-menu-header-height: #{base.$sn-primitive-dimension-40};
|
|
82
78
|
// Нет токена ширины левой колонки меню.
|
|
83
|
-
--snack-menu-left-width:
|
|
79
|
+
--snack-menu-left-width: 263px;
|
|
84
80
|
|
|
85
81
|
position: relative;
|
|
86
82
|
height: 100vh;
|
|
@@ -13,11 +13,10 @@ import {
|
|
|
13
13
|
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
|
|
14
14
|
import { sortableKeyboardCoordinates } from '@dnd-kit/sortable';
|
|
15
15
|
import { usePortalContext } from '@cloud-ru/ds-portal-context';
|
|
16
|
-
import { createContext, ReactNode, useCallback, useContext,
|
|
16
|
+
import { createContext, ReactNode, useCallback, useContext, useMemo, useState } from 'react';
|
|
17
17
|
import { createPortal } from 'react-dom';
|
|
18
18
|
|
|
19
19
|
import { ServiceCard } from '../helperComponents/ServiceCard';
|
|
20
|
-
import styles from '../styles.module.scss';
|
|
21
20
|
import { FavoriteProps, InnerLink } from '../types';
|
|
22
21
|
import {
|
|
23
22
|
favoriteListCollisionDetection,
|
|
@@ -164,16 +163,6 @@ export function MainMenuDndContext({
|
|
|
164
163
|
overlayContextValue,
|
|
165
164
|
}: Partial<MainMenuDndContextProps>) {
|
|
166
165
|
const portalContextRef = usePortalContext();
|
|
167
|
-
const isDragging = Boolean(dragOverlay);
|
|
168
|
-
|
|
169
|
-
useEffect(() => {
|
|
170
|
-
if (!isDragging) return;
|
|
171
|
-
|
|
172
|
-
/* Для предотвращения случайных взаимодействий с любыми другими элементами при перетаскивании */
|
|
173
|
-
document.body.classList.add(styles.dragging);
|
|
174
|
-
|
|
175
|
-
return () => document.body.classList.remove(styles.dragging);
|
|
176
|
-
}, [isDragging]);
|
|
177
166
|
|
|
178
167
|
// `DragOverlay` рендерит `position: fixed` без собственного портала. Drawer-обёртка
|
|
179
168
|
// (`.snack-rc-drawer-content-wrapper`) держит `will-change: transform`, а это, как и
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// Класс ставится на `body` на время drag: превью в `DragOverlay` с `pointer-events: none`,
|
|
2
|
-
// поэтому курсор определяется элементами под ним, и `!important` перебивает их собственные.
|
|
3
|
-
.dragging,
|
|
4
|
-
.dragging * {
|
|
5
|
-
cursor: grabbing !important;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.dragging * {
|
|
9
|
-
pointer-events: none !important;
|
|
10
|
-
}
|