@gravity-ui/navigation 3.10.1 → 5.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +16 -5
- package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +2 -0
- package/build/cjs/components/AsideHeader/__stories__/moc.d.ts +5 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesGroupHeader.d.ts +13 -0
- package/build/cjs/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesListItem/AllPagesListItem.d.ts +2 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.d.ts +4 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +14 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +3 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.d.ts +3 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +33 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +13 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +10 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/index.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -0
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.d.ts +6 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +2 -1
- package/build/cjs/components/AsideHeader/components/Panels.d.ts +1 -1
- package/build/cjs/components/AsideHeader/hooks/useDelayedToggle.d.ts +6 -0
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.d.ts +6 -0
- package/build/cjs/components/AsideHeader/i18n/index.d.ts +8 -0
- package/build/cjs/components/AsideHeader/index.d.ts +7 -0
- package/build/cjs/components/AsideHeader/types.d.ts +60 -8
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +4 -0
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.d.ts +2 -0
- package/build/cjs/components/MobileHeader/i18n/index.d.ts +8 -0
- package/build/cjs/components/MobileHeader/types.d.ts +2 -1
- package/build/cjs/components/Settings/i18n/index.d.ts +8 -0
- package/build/cjs/components/Title/i18n/index.d.ts +8 -0
- package/build/cjs/components/constants.d.ts +2 -2
- package/build/cjs/components/index.d.ts +1 -7
- package/build/cjs/components/types.d.ts +18 -10
- package/build/cjs/{index-BlcEvPtS.js → index-B9p8boXH.js} +2 -2
- package/build/cjs/{index-BlcEvPtS.js.map → index-B9p8boXH.js.map} +1 -1
- package/build/cjs/{index-8E4JW4bt.js → index-BF-1v7O1.js} +762 -900
- package/build/cjs/index-BF-1v7O1.js.map +1 -0
- package/build/cjs/index.js +1 -1
- package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +16 -5
- package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +2 -0
- package/build/esm/components/AsideHeader/__stories__/moc.d.ts +5 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesGroupHeader.d.ts +13 -0
- package/build/esm/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesListItem/AllPagesListItem.d.ts +2 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.d.ts +4 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +14 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +3 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.d.ts +3 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +33 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +13 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +10 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/index.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -0
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.d.ts +6 -0
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +2 -1
- package/build/esm/components/AsideHeader/components/Panels.d.ts +1 -1
- package/build/esm/components/AsideHeader/hooks/useDelayedToggle.d.ts +6 -0
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.d.ts +6 -0
- package/build/esm/components/AsideHeader/i18n/index.d.ts +8 -0
- package/build/esm/components/AsideHeader/index.d.ts +7 -0
- package/build/esm/components/AsideHeader/types.d.ts +60 -8
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +4 -0
- package/build/esm/components/AsideHeader/utils/getGroupHeight.d.ts +2 -0
- package/build/esm/components/MobileHeader/i18n/index.d.ts +8 -0
- package/build/esm/components/MobileHeader/types.d.ts +2 -1
- package/build/esm/components/Settings/i18n/index.d.ts +8 -0
- package/build/esm/components/Title/i18n/index.d.ts +8 -0
- package/build/esm/components/constants.d.ts +2 -2
- package/build/esm/components/index.d.ts +1 -7
- package/build/esm/components/types.d.ts +18 -10
- package/build/esm/{index-n2JA2W2G.js → index-BzBUevHu.js} +2 -2
- package/build/esm/{index-n2JA2W2G.js.map → index-BzBUevHu.js.map} +1 -1
- package/build/esm/{index-Cqnwnlke.js → index-DH4SSAb2.js} +765 -903
- package/build/esm/index-DH4SSAb2.js.map +1 -0
- package/build/esm/index.js +1 -1
- package/package.json +2 -2
- package/build/cjs/components/AllPagesPanel/constants.d.ts +0 -3
- package/build/cjs/components/AllPagesPanel/i18n/index.d.ts +0 -6
- package/build/cjs/components/AllPagesPanel/useGroupedMenuItems.d.ts +0 -4
- package/build/cjs/components/AllPagesPanel/useVisibleMenuItems.d.ts +0 -2
- package/build/cjs/components/CompositeBar/CompositeBar.d.ts +0 -20
- package/build/cjs/components/CompositeBar/Item/Item.d.ts +0 -43
- package/build/cjs/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
- package/build/cjs/components/CompositeBar/utils.d.ts +0 -12
- package/build/cjs/components/FooterItem/FooterItem.d.ts +0 -7
- package/build/cjs/index-8E4JW4bt.js.map +0 -1
- package/build/esm/components/AllPagesPanel/constants.d.ts +0 -3
- package/build/esm/components/AllPagesPanel/i18n/index.d.ts +0 -6
- package/build/esm/components/AllPagesPanel/useGroupedMenuItems.d.ts +0 -4
- package/build/esm/components/AllPagesPanel/useVisibleMenuItems.d.ts +0 -2
- package/build/esm/components/CompositeBar/CompositeBar.d.ts +0 -20
- package/build/esm/components/CompositeBar/Item/Item.d.ts +0 -43
- package/build/esm/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
- package/build/esm/components/CompositeBar/utils.d.ts +0 -12
- package/build/esm/components/FooterItem/FooterItem.d.ts +0 -7
- package/build/esm/index-Cqnwnlke.js.map +0 -1
- package/build/cjs/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesListItem/index.d.ts +0 -0
- package/build/cjs/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesPanel.d.ts +0 -0
- package/build/cjs/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/index.d.ts +0 -0
- package/build/cjs/components/{CompositeBar → AsideHeader/components/CompositeBar}/HighlightedItem/HighlightedItem.d.ts +0 -0
- package/build/{esm → cjs/components/AsideHeader}/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +1 -1
- package/build/cjs/components/{CompositeBar → AsideHeader/components/CompositeBar}/MultipleTooltip/index.d.ts +0 -0
- package/build/cjs/components/{CompositeBar → AsideHeader/components/CompositeBar}/constants.d.ts +0 -0
- package/build/cjs/components/{FooterItem → AsideHeader/components/FooterItem}/__stories__/FooterItem.stories.d.ts +0 -0
- package/build/cjs/components/{FooterItem → AsideHeader/components/FooterItem}/__tests__/helpersPlaywright.d.ts +0 -0
- package/build/esm/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesListItem/index.d.ts +0 -0
- package/build/esm/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/AllPagesPanel.d.ts +0 -0
- package/build/esm/components/{AllPagesPanel → AsideHeader/components/AllPagesPanel}/index.d.ts +0 -0
- package/build/esm/components/{CompositeBar → AsideHeader/components/CompositeBar}/HighlightedItem/HighlightedItem.d.ts +0 -0
- package/build/{cjs → esm/components/AsideHeader}/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +1 -1
- /package/build/esm/components/{CompositeBar → AsideHeader/components/CompositeBar}/MultipleTooltip/index.d.ts +0 -0
- /package/build/esm/components/{CompositeBar → AsideHeader/components/CompositeBar}/constants.d.ts +0 -0
- /package/build/esm/components/{FooterItem → AsideHeader/components/FooterItem}/__stories__/FooterItem.stories.d.ts +0 -0
- /package/build/esm/components/{FooterItem → AsideHeader/components/FooterItem}/__tests__/helpersPlaywright.d.ts +0 -0
|
@@ -72,10 +72,10 @@ className, cssSizeVariableName = '--gn-aside-header-size', renderContent, childr
|
|
|
72
72
|
return (React.createElement("div", { className: className, style: Object.assign({}, { [cssSizeVariableName]: `${size}px` }) }, typeof renderContent === 'function' ? (React.createElement(RenderContent, { size: size, renderContent: renderContent })) : (children)));
|
|
73
73
|
};
|
|
74
74
|
|
|
75
|
-
const ASIDE_HEADER_ICON_SIZE =
|
|
75
|
+
const ASIDE_HEADER_ICON_SIZE = 16;
|
|
76
76
|
const ASIDE_HEADER_COMPACT_WIDTH = 56;
|
|
77
77
|
const ASIDE_HEADER_EXPANDED_WIDTH = 236;
|
|
78
|
-
const ITEM_HEIGHT =
|
|
78
|
+
const ITEM_HEIGHT = 36;
|
|
79
79
|
const HEADER_DIVIDER_HEIGHT = 29;
|
|
80
80
|
|
|
81
81
|
const AsideHeaderInnerContext = React.createContext(undefined);
|
|
@@ -92,6 +92,10 @@ const useAsideHeaderInnerContext = () => {
|
|
|
92
92
|
const AsideHeaderContext = React.createContext({
|
|
93
93
|
compact: false,
|
|
94
94
|
size: 0,
|
|
95
|
+
isExpanded: false,
|
|
96
|
+
onChangeCompact: () => { },
|
|
97
|
+
onMouseEnter: () => { },
|
|
98
|
+
onMouseLeave: () => { },
|
|
95
99
|
});
|
|
96
100
|
AsideHeaderContext.displayName = 'AsideHeaderContext';
|
|
97
101
|
const AsideHeaderContextProvider = AsideHeaderContext.Provider;
|
|
@@ -105,11 +109,100 @@ const useAsideHeaderContext = () => {
|
|
|
105
109
|
return contextValue;
|
|
106
110
|
};
|
|
107
111
|
|
|
112
|
+
function defaultComparator(value, previousValue) {
|
|
113
|
+
return value !== previousValue;
|
|
114
|
+
}
|
|
115
|
+
function isTogglingOn(currentValue, previousValue) {
|
|
116
|
+
return !previousValue && Boolean(currentValue);
|
|
117
|
+
}
|
|
118
|
+
function isTogglingOff(currentValue, previousValue) {
|
|
119
|
+
return Boolean(previousValue) && !currentValue;
|
|
120
|
+
}
|
|
121
|
+
function useDelayedToggle(currentValue, config, maybeShouldThrottleFn) {
|
|
122
|
+
const shouldThrottleFn = defaultComparator;
|
|
123
|
+
const timerRef = React.useRef(null);
|
|
124
|
+
const valueCacheRef = React.useRef(currentValue);
|
|
125
|
+
const [value, setValue] = React.useState(currentValue);
|
|
126
|
+
const delayConfig = config;
|
|
127
|
+
React.useEffect(() => {
|
|
128
|
+
function clear() {
|
|
129
|
+
if (timerRef.current) {
|
|
130
|
+
clearTimeout(timerRef.current);
|
|
131
|
+
timerRef.current = null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (currentValue !== valueCacheRef.current) {
|
|
135
|
+
clear();
|
|
136
|
+
const shouldThrottle = shouldThrottleFn(currentValue, valueCacheRef.current);
|
|
137
|
+
const previousValue = valueCacheRef.current;
|
|
138
|
+
valueCacheRef.current = currentValue;
|
|
139
|
+
if (shouldThrottle) {
|
|
140
|
+
let delay;
|
|
141
|
+
if (isTogglingOn(currentValue, previousValue)) {
|
|
142
|
+
delay = delayConfig.enableDelay;
|
|
143
|
+
}
|
|
144
|
+
else if (isTogglingOff(currentValue, previousValue)) {
|
|
145
|
+
delay = delayConfig.disableDelay;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
delay = delayConfig.enableDelay;
|
|
149
|
+
}
|
|
150
|
+
timerRef.current = setTimeout(() => {
|
|
151
|
+
setValue(currentValue);
|
|
152
|
+
}, delay);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
setValue(currentValue);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return clear;
|
|
159
|
+
}, [currentValue, delayConfig.enableDelay, delayConfig.disableDelay, shouldThrottleFn]);
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const HOVER_DELAY = 150;
|
|
164
|
+
const useIsExpanded = (externalCompact) => {
|
|
165
|
+
const [isExpanded, setIsExpanded] = React.useState(!externalCompact);
|
|
166
|
+
const [isMouseInside, setIsMouseInside] = React.useState(false);
|
|
167
|
+
React.useEffect(() => {
|
|
168
|
+
if (externalCompact && isExpanded) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
setIsExpanded(!externalCompact);
|
|
172
|
+
// We need to run this effect only when externalCompact changes
|
|
173
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
174
|
+
}, [externalCompact]);
|
|
175
|
+
const shouldExpand = externalCompact && isMouseInside;
|
|
176
|
+
const delayedShouldExpand = useDelayedToggle(shouldExpand, {
|
|
177
|
+
enableDelay: HOVER_DELAY,
|
|
178
|
+
disableDelay: HOVER_DELAY,
|
|
179
|
+
});
|
|
180
|
+
// Update isExpanded based on hover
|
|
181
|
+
React.useEffect(() => {
|
|
182
|
+
if (externalCompact) {
|
|
183
|
+
setIsExpanded(delayedShouldExpand);
|
|
184
|
+
}
|
|
185
|
+
// We need to run this effect only when delayedShouldExpand changes
|
|
186
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
187
|
+
}, [delayedShouldExpand]);
|
|
188
|
+
const handleMouseEnter = React.useCallback(() => {
|
|
189
|
+
setIsMouseInside(true);
|
|
190
|
+
}, []);
|
|
191
|
+
const handleMouseLeave = React.useCallback(() => {
|
|
192
|
+
setIsMouseInside(false);
|
|
193
|
+
}, []);
|
|
194
|
+
return {
|
|
195
|
+
isExpanded,
|
|
196
|
+
onMouseEnter: handleMouseEnter,
|
|
197
|
+
onMouseLeave: handleMouseLeave,
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
|
|
108
201
|
const NAMESPACE = 'gn-';
|
|
109
202
|
classname.withNaming({ e: '__', m: '_' });
|
|
110
203
|
const block = classname.withNaming({ n: NAMESPACE, e: '__', m: '_' });
|
|
111
204
|
|
|
112
|
-
const b$
|
|
205
|
+
const b$w = block('aside-header');
|
|
113
206
|
|
|
114
207
|
function styleInject(css, ref) {
|
|
115
208
|
if ( ref === undefined ) ref = {};
|
|
@@ -138,63 +231,36 @@ function styleInject(css, ref) {
|
|
|
138
231
|
}
|
|
139
232
|
}
|
|
140
233
|
|
|
141
|
-
var css_248z$
|
|
142
|
-
styleInject(css_248z$
|
|
234
|
+
var css_248z$v = ".g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:36px;--_--item-icon-background-size:36px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:\"\";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.gn-aside-header_compact .gn-aside-header__aside{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__aside_expanded-by-hover{left:0;position:fixed;top:0}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:\"\";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:\"\";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button{margin:0 10px 2px}.gn-aside-header__logo-button .gn-aside-header__logo-icon-place{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) 10px}.gn-aside-header__panels{display:flex;flex-direction:column;inset:var(--gn-top-alert-height,0) 0 0;max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:auto;position:fixed;z-index:var(--gn-aside-header-panel-z-index,98)}.gn-aside-header__panel{flex-grow:1;height:auto}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__top-alert{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.gn-aside-header__content{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size))}.gn-aside-header__content_expanded-by-hover{padding-left:var(--gn-aside-header-min-width)}";
|
|
235
|
+
styleInject(css_248z$v);
|
|
143
236
|
|
|
144
|
-
const TopAlert$1 = React.lazy(() => Promise.resolve().then(function () { return require('./index-
|
|
145
|
-
const Layout = ({ compact, className, children, topAlert }) => {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
237
|
+
const TopAlert$1 = React.lazy(() => Promise.resolve().then(function () { return require('./index-B9p8boXH.js'); }).then((module) => ({ default: module.TopAlert })));
|
|
238
|
+
const Layout = ({ compact, className, children, topAlert, onChangeCompact }) => {
|
|
239
|
+
const { isExpanded, onMouseEnter, onMouseLeave } = useIsExpanded(compact);
|
|
240
|
+
const size = isExpanded ? ASIDE_HEADER_EXPANDED_WIDTH : ASIDE_HEADER_COMPACT_WIDTH;
|
|
241
|
+
const asideHeaderContextValue = React.useMemo(() => ({
|
|
242
|
+
size,
|
|
243
|
+
compact,
|
|
244
|
+
isExpanded,
|
|
245
|
+
onChangeCompact,
|
|
246
|
+
onMouseEnter,
|
|
247
|
+
onMouseLeave,
|
|
248
|
+
}), [size, compact, isExpanded, onChangeCompact, onMouseEnter, onMouseLeave]);
|
|
148
249
|
return (React.createElement(AsideHeaderContextProvider, { value: asideHeaderContextValue },
|
|
149
|
-
React.createElement("div", { className: b$
|
|
250
|
+
React.createElement("div", { className: b$w({ compact: !isExpanded }, className), style: Object.assign({}, { '--gn-aside-header-size': `${size}px` }) },
|
|
150
251
|
topAlert && (React.createElement(React.Suspense, { fallback: null },
|
|
151
|
-
React.createElement(TopAlert$1, { className: b$
|
|
152
|
-
React.createElement("div", { className: b$
|
|
252
|
+
React.createElement(TopAlert$1, { className: b$w('top-alert'), alert: topAlert }))),
|
|
253
|
+
React.createElement("div", { className: b$w('pane-container') }, children))));
|
|
153
254
|
};
|
|
154
255
|
const ConnectedContent = ({ children, renderContent, }) => {
|
|
155
|
-
const { size } = useAsideHeaderContext();
|
|
156
|
-
|
|
256
|
+
const { size, compact, isExpanded } = useAsideHeaderContext();
|
|
257
|
+
const isExpandedByHover = compact && isExpanded;
|
|
258
|
+
return (React.createElement(Content, { size: size, className: b$w('content', { 'expanded-by-hover': isExpandedByHover }), renderContent: renderContent }, children));
|
|
157
259
|
};
|
|
158
260
|
const PageLayout = Object.assign(Layout, {
|
|
159
261
|
Content: ConnectedContent,
|
|
160
262
|
});
|
|
161
263
|
|
|
162
|
-
var css_248z$t = ".gn-all-pages-list-item{align-items:center;background:none;border:none;color:inherit;column-gap:var(--g-spacing-4);cursor:pointer;display:flex;font:inherit;height:40px;outline:inherit;padding:0 var(--g-spacing-6);text-decoration:inherit;width:100%}.gn-all-pages-list-item:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-all-pages-list-item__text{flex:1;text-align:initial}.gn-all-pages-list-item__icon{color:var(--g-color-text-misc)}.gn-all-pages-list-item_edit-mode{padding:0 0 0 var(--g-spacing-4)}";
|
|
163
|
-
styleInject(css_248z$t);
|
|
164
|
-
|
|
165
|
-
const b$u = block('all-pages-list-item');
|
|
166
|
-
const AllPagesListItem = (props) => {
|
|
167
|
-
const { item, editMode, onToggle } = props;
|
|
168
|
-
const ref = React.useRef(null);
|
|
169
|
-
const onPinButtonClick = React.useCallback((e) => {
|
|
170
|
-
e.stopPropagation();
|
|
171
|
-
e.preventDefault();
|
|
172
|
-
onToggle();
|
|
173
|
-
}, [onToggle]);
|
|
174
|
-
const onItemClick = (e) => {
|
|
175
|
-
if (editMode) {
|
|
176
|
-
e.stopPropagation();
|
|
177
|
-
e.preventDefault();
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
const [Tag, tagProps] = item.link ? ['a', { href: item.link }] : ['button', {}];
|
|
181
|
-
const makeNode = React.useCallback((params) => {
|
|
182
|
-
return (React.createElement(Tag, Object.assign({}, tagProps, { className: b$u(), onClick: onItemClick, ref: ref }),
|
|
183
|
-
params.icon,
|
|
184
|
-
React.createElement("span", { className: b$u('text') }, params.title),
|
|
185
|
-
editMode && !item.preventUserRemoving && (React.createElement(uikit.Button, { onClick: onPinButtonClick, view: item.hidden ? 'flat-secondary' : 'flat-action' },
|
|
186
|
-
React.createElement(uikit.Button.Icon, null, item.hidden ? React.createElement(icons.Pin, null) : React.createElement(icons.PinFill, null))))));
|
|
187
|
-
}, [Tag, tagProps, onItemClick, editMode, item, onPinButtonClick]);
|
|
188
|
-
const iconNode = item.icon ? (React.createElement(uikit.Icon, { className: b$u('icon'), data: item.icon, size: item.iconSize })) : null;
|
|
189
|
-
const titleNode = item.title;
|
|
190
|
-
const params = { icon: iconNode, title: titleNode };
|
|
191
|
-
const opts = { collapsed: false, compact: false, item, ref };
|
|
192
|
-
if (typeof item.itemWrapper === 'function') {
|
|
193
|
-
return item.itemWrapper(params, makeNode, opts);
|
|
194
|
-
}
|
|
195
|
-
return makeNode(params);
|
|
196
|
-
};
|
|
197
|
-
|
|
198
264
|
var en$4 = {
|
|
199
265
|
"menu-item.all-pages.title": "All pages",
|
|
200
266
|
"all-panel.menu.category.allOther": "All other",
|
|
@@ -215,6 +281,7 @@ const COMPONENT$4 = 'AllPagesPanel';
|
|
|
215
281
|
var i18n$4 = i18n$5.addComponentKeysets({ en: en$4, ru: ru$4 }, `${NAMESPACE}${COMPONENT$4}`);
|
|
216
282
|
|
|
217
283
|
const ALL_PAGES_ID = 'all-pages';
|
|
284
|
+
const UNGROUPED_ID = 'ungrouped';
|
|
218
285
|
function getAllPagesMenuItem() {
|
|
219
286
|
return {
|
|
220
287
|
id: ALL_PAGES_ID,
|
|
@@ -224,519 +291,138 @@ function getAllPagesMenuItem() {
|
|
|
224
291
|
};
|
|
225
292
|
}
|
|
226
293
|
|
|
227
|
-
const useGroupedMenuItems = (
|
|
228
|
-
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
294
|
+
const useGroupedMenuItems = (menuItems, menuGroups, isEditMode = false) => {
|
|
295
|
+
return React.useMemo(() => {
|
|
296
|
+
const visibleItems = menuItems.filter((item) => {
|
|
297
|
+
if (isEditMode && item.id === ALL_PAGES_ID) {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
return true;
|
|
301
|
+
});
|
|
302
|
+
visibleItems.sort(({ type: typeA }, { type: typeB }) => {
|
|
303
|
+
if (typeA === 'action') {
|
|
232
304
|
return 1;
|
|
233
305
|
}
|
|
234
|
-
if (
|
|
306
|
+
if (typeB === 'action') {
|
|
235
307
|
return -1;
|
|
236
308
|
}
|
|
237
309
|
return 0;
|
|
238
310
|
});
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
311
|
+
const groupsMap = new Map();
|
|
312
|
+
menuGroups === null || menuGroups === undefined ? undefined : menuGroups.forEach((group) => {
|
|
313
|
+
groupsMap.set(group.id, group);
|
|
314
|
+
});
|
|
315
|
+
const groupedItems = new Map();
|
|
316
|
+
const processedGroups = new Set();
|
|
317
|
+
visibleItems.forEach((item) => {
|
|
318
|
+
const groupId = item.groupId;
|
|
319
|
+
if (groupId) {
|
|
320
|
+
if (!groupedItems.has(groupId)) {
|
|
321
|
+
groupedItems.set(groupId, []);
|
|
322
|
+
}
|
|
323
|
+
const group = groupedItems.get(groupId);
|
|
324
|
+
if (group) {
|
|
325
|
+
group.push(item);
|
|
326
|
+
}
|
|
243
327
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
328
|
+
});
|
|
329
|
+
const flatListItems = [];
|
|
330
|
+
visibleItems.forEach((item) => {
|
|
331
|
+
var _a, _b;
|
|
332
|
+
const groupId = item.groupId;
|
|
333
|
+
if (groupId) {
|
|
334
|
+
if (!processedGroups.has(groupId)) {
|
|
335
|
+
processedGroups.add(groupId);
|
|
336
|
+
const items = groupedItems.get(groupId) || [];
|
|
337
|
+
if (items.length > 0) {
|
|
338
|
+
const itemsWithVisible = items.filter((sortedItem) => !sortedItem.hidden);
|
|
339
|
+
const group = groupsMap.get(groupId);
|
|
340
|
+
const isAllGroupItemsHidden = itemsWithVisible.length === 0;
|
|
341
|
+
const isGroupHidden = isAllGroupItemsHidden
|
|
342
|
+
? true
|
|
343
|
+
: ((_a = group === null || group === undefined ? undefined : group.hidden) !== null && _a !== undefined ? _a : false);
|
|
344
|
+
flatListItems.push({
|
|
345
|
+
id: groupId,
|
|
346
|
+
title: (_b = group === null || group === undefined ? undefined : group.title) !== null && _b !== undefined ? _b : groupId,
|
|
347
|
+
icon: group === null || group === undefined ? undefined : group.icon,
|
|
348
|
+
hidden: isGroupHidden,
|
|
349
|
+
isDisabled: isAllGroupItemsHidden,
|
|
350
|
+
collapsible: group === null || group === undefined ? undefined : group.collapsible,
|
|
351
|
+
collapsedByDefault: group === null || group === undefined ? undefined : group.collapsedByDefault,
|
|
352
|
+
isCollapsed: group === null || group === undefined ? undefined : group.collapsed,
|
|
353
|
+
groupId: groupId,
|
|
354
|
+
items,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (!groupId) {
|
|
360
|
+
flatListItems.push(item);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
return flatListItems;
|
|
364
|
+
}, [menuItems, menuGroups, isEditMode]);
|
|
250
365
|
};
|
|
251
366
|
|
|
252
|
-
var
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const menuItemsRef = React.useRef(menuItems);
|
|
260
|
-
menuItemsRef.current = menuItems;
|
|
261
|
-
const [isEditMode, setIsEditMode] = React.useState(false);
|
|
262
|
-
const [draggingItemTitle, setDraggingItemTitle] = React.useState(null);
|
|
263
|
-
const toggleEditMode = React.useCallback(() => {
|
|
264
|
-
setIsEditMode((prev) => !prev);
|
|
265
|
-
}, []);
|
|
266
|
-
const groupedItems = useGroupedMenuItems(menuItems);
|
|
267
|
-
React.useEffect(() => {
|
|
268
|
-
var _a;
|
|
269
|
-
onEditModeChanged === null || onEditModeChanged === undefined ? undefined : onEditModeChanged(isEditMode);
|
|
270
|
-
if (isEditMode) {
|
|
271
|
-
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onOpenEditMode) === null || _a === undefined ? undefined : _a.call(editMenuProps);
|
|
272
|
-
}
|
|
273
|
-
}, [isEditMode, onEditModeChanged, editMenuProps]);
|
|
274
|
-
const onItemClick = React.useCallback((item, _index, _fromKeyboard, event) => {
|
|
275
|
-
var _a;
|
|
276
|
-
(_a = item.onItemClick) === null || _a === undefined ? undefined : _a.call(item, item, false, event);
|
|
277
|
-
}, []);
|
|
278
|
-
const togglePageVisibility = React.useCallback((item) => {
|
|
279
|
-
var _a;
|
|
280
|
-
if (!onMenuItemsChanged) {
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
const changedItem = Object.assign(Object.assign({}, item), { hidden: !item.hidden });
|
|
284
|
-
const originItems = menuItemsRef.current.filter((menuItem) => menuItem.id !== ALL_PAGES_ID);
|
|
285
|
-
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onToggleMenuItem) === null || _a === undefined ? undefined : _a.call(editMenuProps, changedItem);
|
|
286
|
-
onMenuItemsChanged(originItems.map((menuItem) => {
|
|
287
|
-
if (menuItem.id !== changedItem.id) {
|
|
288
|
-
return menuItem;
|
|
289
|
-
}
|
|
290
|
-
return changedItem;
|
|
291
|
-
}));
|
|
292
|
-
}, [onMenuItemsChanged, editMenuProps]);
|
|
293
|
-
const onDragEnd = React.useCallback(() => {
|
|
294
|
-
setDraggingItemTitle(null);
|
|
295
|
-
}, [setDraggingItemTitle]);
|
|
296
|
-
const itemRender = React.useCallback((item, _isActive, _itemIndex) => {
|
|
297
|
-
const onDragStart = () => {
|
|
298
|
-
setDraggingItemTitle(item.title);
|
|
299
|
-
};
|
|
300
|
-
return (React.createElement(AllPagesListItem, { item: item, onDragStart: onDragStart, onDragEnd: onDragEnd, editMode: isEditMode, onToggle: () => togglePageVisibility(item), enableSorting: editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting }));
|
|
301
|
-
}, [isEditMode, togglePageVisibility, onDragEnd, setDraggingItemTitle, editMenuProps]);
|
|
302
|
-
const onResetToDefaultClick = React.useCallback(() => {
|
|
303
|
-
var _a;
|
|
304
|
-
if (!onMenuItemsChanged) {
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onResetSettingsToDefault) === null || _a === undefined ? undefined : _a.call(editMenuProps);
|
|
308
|
-
const originItems = defaultMenuItems === null || defaultMenuItems === undefined ? undefined : defaultMenuItems.filter((item) => item.id !== ALL_PAGES_ID);
|
|
309
|
-
if (originItems) {
|
|
310
|
-
onMenuItemsChanged(originItems);
|
|
311
|
-
}
|
|
312
|
-
}, [onMenuItemsChanged, editMenuProps, defaultMenuItems]);
|
|
313
|
-
const changeItemsOrder = React.useCallback(({ oldIndex, newIndex }) => {
|
|
314
|
-
var _a;
|
|
315
|
-
const newItems = menuItemsRef.current.filter((item) => item.id !== ALL_PAGES_ID);
|
|
316
|
-
const element = newItems.splice(oldIndex, 1)[0];
|
|
317
|
-
newItems.splice(newIndex, 0, element);
|
|
318
|
-
onMenuItemsChanged === null || onMenuItemsChanged === undefined ? undefined : onMenuItemsChanged(newItems.filter((item) => item.type !== 'divider'));
|
|
319
|
-
setDraggingItemTitle(null);
|
|
320
|
-
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onChangeItemsOrder) === null || _a === undefined ? undefined : _a.call(editMenuProps, element, oldIndex, newIndex);
|
|
321
|
-
}, [onMenuItemsChanged, editMenuProps]);
|
|
322
|
-
const sortableItems = React.useMemo(() => {
|
|
323
|
-
return menuItemsRef.current.filter((item) => item.id !== ALL_PAGES_ID && !item.afterMoreButton && item.type !== 'divider');
|
|
324
|
-
}, [menuItems]);
|
|
325
|
-
return (React.createElement(uikit.Flex, { className: b$t(null, className), gap: "5", direction: "column" },
|
|
326
|
-
React.createElement(uikit.Flex, { gap: "4", alignItems: "center", justifyContent: "space-between" },
|
|
327
|
-
React.createElement(uikit.Text, { variant: "subheader-2" }, isEditMode ? i18n$4('all-panel.title.editing') : i18n$4('all-panel.title.main')),
|
|
328
|
-
React.createElement(uikit.Tooltip, { content: i18n$4('all-panel.title.editing') },
|
|
329
|
-
React.createElement(uikit.Button, { selected: isEditMode, view: "normal", onClick: toggleEditMode }, startEditIcon ? startEditIcon : React.createElement(uikit.Icon, { data: icons.Gear })))),
|
|
330
|
-
React.createElement(uikit.Flex, { className: b$t('content'), gap: "5", direction: "column" }, isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting) ? (React.createElement("div", null,
|
|
331
|
-
React.createElement(uikit.List, { itemClassName: b$t('item', { editMode: true }), itemHeight: 40, onSortEnd: changeItemsOrder, sortable: true, virtualized: false, filterable: false, items: sortableItems, onItemClick: onItemClick, renderItem: itemRender }),
|
|
332
|
-
draggingItemTitle && (React.createElement("div", { className: b$t('drag-placeholder') }, draggingItemTitle)))) : (Object.keys(groupedItems).map((category) => {
|
|
333
|
-
return (React.createElement(uikit.Flex, { key: category, direction: "column", gap: "3" },
|
|
334
|
-
React.createElement(uikit.Text, { className: b$t('category'), variant: "body-1", color: "secondary" }, category),
|
|
335
|
-
React.createElement(uikit.List, { virtualized: false, filterable: false, items: groupedItems[category], onItemClick: onItemClick, renderItem: itemRender })));
|
|
336
|
-
}))),
|
|
337
|
-
isEditMode && (React.createElement(uikit.Button, { onClick: onResetToDefaultClick }, i18n$4('all-panel.resetToDefault')))));
|
|
367
|
+
var button_collapse$1 = "Collapse";
|
|
368
|
+
var button_expand$1 = "Expand";
|
|
369
|
+
var label_more$1 = "More";
|
|
370
|
+
var en$3 = {
|
|
371
|
+
button_collapse: button_collapse$1,
|
|
372
|
+
button_expand: button_expand$1,
|
|
373
|
+
label_more: label_more$1
|
|
338
374
|
};
|
|
339
375
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
return menuItems.filter((item, index, items) => {
|
|
348
|
-
if (item.hidden) {
|
|
349
|
-
return false;
|
|
350
|
-
}
|
|
351
|
-
if (index > 0 &&
|
|
352
|
-
item.type === 'divider' &&
|
|
353
|
-
(items[lastVisibleIndex].type === 'divider' || items[lastVisibleIndex].hidden)) {
|
|
354
|
-
return false;
|
|
355
|
-
}
|
|
356
|
-
lastVisibleIndex = index;
|
|
357
|
-
return true;
|
|
358
|
-
});
|
|
359
|
-
}, [allPagesIsAvailable, menuItems]);
|
|
376
|
+
var button_collapse = "Свернуть";
|
|
377
|
+
var button_expand = "Развернуть";
|
|
378
|
+
var label_more = "Ещё";
|
|
379
|
+
var ru$3 = {
|
|
380
|
+
button_collapse: button_collapse,
|
|
381
|
+
button_expand: button_expand,
|
|
382
|
+
label_more: label_more
|
|
360
383
|
};
|
|
361
384
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
* https://github.com/sdecima/javascript-detect-element-resize
|
|
365
|
-
* Sebastian Decima
|
|
366
|
-
*
|
|
367
|
-
* Forked from version 0.5.3; includes the following modifications:
|
|
368
|
-
* 1) Guard against unsafe 'window' and 'document' references (to support SSR).
|
|
369
|
-
* 2) Defer initialization code via a top-level function wrapper (to support SSR).
|
|
370
|
-
* 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
|
|
371
|
-
* 4) Add nonce for style element.
|
|
372
|
-
* 5) Use 'export' statement over 'module.exports' assignment
|
|
373
|
-
**/
|
|
374
|
-
|
|
375
|
-
// Check `document` and `window` in case of server-side rendering
|
|
376
|
-
let windowObject;
|
|
377
|
-
if (typeof window !== "undefined") {
|
|
378
|
-
windowObject = window;
|
|
379
|
-
|
|
380
|
-
// eslint-disable-next-line no-restricted-globals
|
|
381
|
-
} else if (typeof self !== "undefined") {
|
|
382
|
-
// eslint-disable-next-line no-restricted-globals
|
|
383
|
-
windowObject = self;
|
|
384
|
-
} else {
|
|
385
|
-
windowObject = global;
|
|
386
|
-
}
|
|
387
|
-
let cancelFrame = null;
|
|
388
|
-
let requestFrame = null;
|
|
389
|
-
const TIMEOUT_DURATION = 20;
|
|
390
|
-
const clearTimeoutFn = windowObject.clearTimeout;
|
|
391
|
-
const setTimeoutFn = windowObject.setTimeout;
|
|
392
|
-
const cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;
|
|
393
|
-
const requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;
|
|
394
|
-
if (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {
|
|
395
|
-
// For environments that don't support animation frame,
|
|
396
|
-
// fallback to a setTimeout based approach.
|
|
397
|
-
cancelFrame = clearTimeoutFn;
|
|
398
|
-
requestFrame = function requestAnimationFrameViaSetTimeout(callback) {
|
|
399
|
-
return setTimeoutFn(callback, TIMEOUT_DURATION);
|
|
400
|
-
};
|
|
401
|
-
} else {
|
|
402
|
-
// Counter intuitively, environments that support animation frames can be trickier.
|
|
403
|
-
// Chrome's "Throttle non-visible cross-origin iframes" flag can prevent rAFs from being called.
|
|
404
|
-
// In this case, we should fallback to a setTimeout() implementation.
|
|
405
|
-
cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {
|
|
406
|
-
cancelAnimationFrameFn(animationFrameID);
|
|
407
|
-
clearTimeoutFn(timeoutID);
|
|
408
|
-
};
|
|
409
|
-
requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {
|
|
410
|
-
const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {
|
|
411
|
-
clearTimeoutFn(timeoutID);
|
|
412
|
-
callback();
|
|
413
|
-
});
|
|
414
|
-
const timeoutID = setTimeoutFn(function timeoutCallback() {
|
|
415
|
-
cancelAnimationFrameFn(animationFrameID);
|
|
416
|
-
callback();
|
|
417
|
-
}, TIMEOUT_DURATION);
|
|
418
|
-
return [animationFrameID, timeoutID];
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
function createDetectElementResize(nonce) {
|
|
422
|
-
let animationKeyframes;
|
|
423
|
-
let animationName;
|
|
424
|
-
let animationStartEvent;
|
|
425
|
-
let animationStyle;
|
|
426
|
-
let checkTriggers;
|
|
427
|
-
let resetTriggers;
|
|
428
|
-
let scrollListener;
|
|
429
|
-
const attachEvent = typeof document !== "undefined" && document.attachEvent;
|
|
430
|
-
if (!attachEvent) {
|
|
431
|
-
resetTriggers = function (element) {
|
|
432
|
-
const triggers = element.__resizeTriggers__,
|
|
433
|
-
expand = triggers.firstElementChild,
|
|
434
|
-
contract = triggers.lastElementChild,
|
|
435
|
-
expandChild = expand.firstElementChild;
|
|
436
|
-
contract.scrollLeft = contract.scrollWidth;
|
|
437
|
-
contract.scrollTop = contract.scrollHeight;
|
|
438
|
-
expandChild.style.width = expand.offsetWidth + 1 + "px";
|
|
439
|
-
expandChild.style.height = expand.offsetHeight + 1 + "px";
|
|
440
|
-
expand.scrollLeft = expand.scrollWidth;
|
|
441
|
-
expand.scrollTop = expand.scrollHeight;
|
|
442
|
-
};
|
|
443
|
-
checkTriggers = function (element) {
|
|
444
|
-
return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;
|
|
445
|
-
};
|
|
446
|
-
scrollListener = function (e) {
|
|
447
|
-
// Don't measure (which forces) reflow for scrolls that happen inside of children!
|
|
448
|
-
if (e.target.className && typeof e.target.className.indexOf === "function" && e.target.className.indexOf("contract-trigger") < 0 && e.target.className.indexOf("expand-trigger") < 0) {
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
const element = this;
|
|
452
|
-
resetTriggers(this);
|
|
453
|
-
if (this.__resizeRAF__) {
|
|
454
|
-
cancelFrame(this.__resizeRAF__);
|
|
455
|
-
}
|
|
456
|
-
this.__resizeRAF__ = requestFrame(function animationFrame() {
|
|
457
|
-
if (checkTriggers(element)) {
|
|
458
|
-
element.__resizeLast__.width = element.offsetWidth;
|
|
459
|
-
element.__resizeLast__.height = element.offsetHeight;
|
|
460
|
-
element.__resizeListeners__.forEach(function forEachResizeListener(fn) {
|
|
461
|
-
fn.call(element, e);
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
});
|
|
465
|
-
};
|
|
385
|
+
const COMPONENT$3 = 'AsideHeader';
|
|
386
|
+
var i18n$3 = i18n$5.addComponentKeysets({ en: en$3, ru: ru$3 }, `${NAMESPACE}${COMPONENT$3}`);
|
|
466
387
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
for (let i = 0; i < domPrefixes.length; i++) {
|
|
481
|
-
if (elm.style[domPrefixes[i] + "AnimationName"] !== undefined) {
|
|
482
|
-
pfx = domPrefixes[i];
|
|
483
|
-
keyframeprefix = "-" + pfx.toLowerCase() + "-";
|
|
484
|
-
animationStartEvent = startEvents[i];
|
|
485
|
-
animation = true;
|
|
486
|
-
break;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
animationName = "resizeanim";
|
|
492
|
-
animationKeyframes = "@" + keyframeprefix + "keyframes " + animationName + " { from { opacity: 0; } to { opacity: 0; } } ";
|
|
493
|
-
animationStyle = keyframeprefix + "animation: 1ms " + animationName + "; ";
|
|
494
|
-
}
|
|
495
|
-
const createStyles = function (doc) {
|
|
496
|
-
if (!doc.getElementById("detectElementResize")) {
|
|
497
|
-
//opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
|
|
498
|
-
const css = (animationKeyframes ? animationKeyframes : "") + ".resize-triggers { " + (animationStyle ? animationStyle : "") + "visibility: hidden; opacity: 0; } " + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
|
|
499
|
-
head = doc.head || doc.getElementsByTagName("head")[0],
|
|
500
|
-
style = doc.createElement("style");
|
|
501
|
-
style.id = "detectElementResize";
|
|
502
|
-
style.type = "text/css";
|
|
503
|
-
if (nonce != null) {
|
|
504
|
-
style.setAttribute("nonce", nonce);
|
|
505
|
-
}
|
|
506
|
-
if (style.styleSheet) {
|
|
507
|
-
style.styleSheet.cssText = css;
|
|
508
|
-
} else {
|
|
509
|
-
style.appendChild(doc.createTextNode(css));
|
|
510
|
-
}
|
|
511
|
-
head.appendChild(style);
|
|
512
|
-
}
|
|
513
|
-
};
|
|
514
|
-
const addResizeListener = function (element, fn) {
|
|
515
|
-
if (attachEvent) {
|
|
516
|
-
element.attachEvent("onresize", fn);
|
|
517
|
-
} else {
|
|
518
|
-
if (!element.__resizeTriggers__) {
|
|
519
|
-
const doc = element.ownerDocument;
|
|
520
|
-
const elementStyle = windowObject.getComputedStyle(element);
|
|
521
|
-
if (elementStyle && elementStyle.position === "static") {
|
|
522
|
-
element.style.position = "relative";
|
|
523
|
-
}
|
|
524
|
-
createStyles(doc);
|
|
525
|
-
element.__resizeLast__ = {};
|
|
526
|
-
element.__resizeListeners__ = [];
|
|
527
|
-
(element.__resizeTriggers__ = doc.createElement("div")).className = "resize-triggers";
|
|
528
|
-
const expandTrigger = doc.createElement("div");
|
|
529
|
-
expandTrigger.className = "expand-trigger";
|
|
530
|
-
expandTrigger.appendChild(doc.createElement("div"));
|
|
531
|
-
const contractTrigger = doc.createElement("div");
|
|
532
|
-
contractTrigger.className = "contract-trigger";
|
|
533
|
-
element.__resizeTriggers__.appendChild(expandTrigger);
|
|
534
|
-
element.__resizeTriggers__.appendChild(contractTrigger);
|
|
535
|
-
element.appendChild(element.__resizeTriggers__);
|
|
536
|
-
resetTriggers(element);
|
|
537
|
-
element.addEventListener("scroll", scrollListener, true);
|
|
538
|
-
|
|
539
|
-
/* Listen for a css animation to detect element display/re-attach */
|
|
540
|
-
if (animationStartEvent) {
|
|
541
|
-
element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
|
|
542
|
-
if (e.animationName === animationName) {
|
|
543
|
-
resetTriggers(element);
|
|
544
|
-
}
|
|
545
|
-
};
|
|
546
|
-
element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
element.__resizeListeners__.push(fn);
|
|
550
|
-
}
|
|
551
|
-
};
|
|
552
|
-
const removeResizeListener = function (element, fn) {
|
|
553
|
-
if (attachEvent) {
|
|
554
|
-
element.detachEvent("onresize", fn);
|
|
555
|
-
} else {
|
|
556
|
-
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
557
|
-
if (!element.__resizeListeners__.length) {
|
|
558
|
-
element.removeEventListener("scroll", scrollListener, true);
|
|
559
|
-
if (element.__resizeTriggers__.__animationListener__) {
|
|
560
|
-
element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
|
|
561
|
-
element.__resizeTriggers__.__animationListener__ = null;
|
|
562
|
-
}
|
|
563
|
-
try {
|
|
564
|
-
element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
|
|
565
|
-
} catch (e) {
|
|
566
|
-
// Preact compat; see developit/preact-compat/issues/228
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
};
|
|
571
|
-
return {
|
|
572
|
-
addResizeListener,
|
|
573
|
-
removeResizeListener
|
|
574
|
-
};
|
|
575
|
-
}
|
|
388
|
+
var _path$1;
|
|
389
|
+
function _extends$2() { return _extends$2 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$2.apply(null, arguments); }
|
|
390
|
+
var SvgControlMenuButton = function SvgControlMenuButton(props) {
|
|
391
|
+
return /*#__PURE__*/React__namespace.createElement("svg", _extends$2({
|
|
392
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
393
|
+
width: 8,
|
|
394
|
+
height: 8,
|
|
395
|
+
fill: "currentColor",
|
|
396
|
+
viewBox: "0 0 8 8"
|
|
397
|
+
}, props), _path$1 || (_path$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
398
|
+
d: "m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45"
|
|
399
|
+
})));
|
|
400
|
+
};
|
|
576
401
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
} = this.props;
|
|
598
|
-
if (this._parentNode) {
|
|
599
|
-
// Guard against AutoSizer component being removed from the DOM immediately after being added.
|
|
600
|
-
// This can result in invalid style values which can result in NaN values if we don't handle them.
|
|
601
|
-
// See issue #150 for more context.
|
|
602
|
-
|
|
603
|
-
const style = window.getComputedStyle(this._parentNode) || {};
|
|
604
|
-
const paddingLeft = parseFloat(style.paddingLeft || "0");
|
|
605
|
-
const paddingRight = parseFloat(style.paddingRight || "0");
|
|
606
|
-
const paddingTop = parseFloat(style.paddingTop || "0");
|
|
607
|
-
const paddingBottom = parseFloat(style.paddingBottom || "0");
|
|
608
|
-
const rect = this._parentNode.getBoundingClientRect();
|
|
609
|
-
const scaledHeight = rect.height - paddingTop - paddingBottom;
|
|
610
|
-
const scaledWidth = rect.width - paddingLeft - paddingRight;
|
|
611
|
-
const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;
|
|
612
|
-
const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;
|
|
613
|
-
if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {
|
|
614
|
-
this.setState({
|
|
615
|
-
height,
|
|
616
|
-
width,
|
|
617
|
-
scaledHeight,
|
|
618
|
-
scaledWidth
|
|
619
|
-
});
|
|
620
|
-
if (typeof onResize === "function") {
|
|
621
|
-
onResize({
|
|
622
|
-
height,
|
|
623
|
-
scaledHeight,
|
|
624
|
-
scaledWidth,
|
|
625
|
-
width
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
};
|
|
631
|
-
this._setRef = autoSizer => {
|
|
632
|
-
this._autoSizer = autoSizer;
|
|
633
|
-
};
|
|
634
|
-
}
|
|
635
|
-
componentDidMount() {
|
|
636
|
-
const {
|
|
637
|
-
nonce
|
|
638
|
-
} = this.props;
|
|
639
|
-
const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;
|
|
640
|
-
if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {
|
|
641
|
-
// Delay access of parentNode until mount.
|
|
642
|
-
// This handles edge-cases where the component has already been unmounted before its ref has been set,
|
|
643
|
-
// As well as libraries like react-lite which have a slightly different lifecycle.
|
|
644
|
-
this._parentNode = parentNode;
|
|
645
|
-
|
|
646
|
-
// Use ResizeObserver from the same context where parentNode (which we will observe) was defined
|
|
647
|
-
// Using just global can result into onResize events not being emitted in cases with multiple realms
|
|
648
|
-
const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;
|
|
649
|
-
if (ResizeObserverInstance != null) {
|
|
650
|
-
this._resizeObserver = new ResizeObserverInstance(() => {
|
|
651
|
-
// Guard against "ResizeObserver loop limit exceeded" error;
|
|
652
|
-
// could be triggered if the state update causes the ResizeObserver handler to run long.
|
|
653
|
-
// See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55
|
|
654
|
-
this._timeoutId = setTimeout(this._onResize, 0);
|
|
402
|
+
var css_248z$u = ".gn-collapse-button{--_--focus-outline-color:var(--g-color-line-focus);--_--focus-outline-offset:0;align-items:center;background:none;border:none;border-top:1px solid var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));box-sizing:content-box;color:inherit;cursor:pointer;display:flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);justify-content:center;min-height:20px;outline:none;padding:0;position:relative;width:100%}.gn-collapse-button:before{content:\"\";inset:0 2px 2px;position:absolute;z-index:-1}.gn-collapse-button:focus-visible:before{outline:var(--_--focus-outline-color) solid 2px;outline-offset:var(--_--focus-outline-offset)}.gn-collapse-button:not(.gn-collapse-button_compact) .gn-collapse-button__icon{transform:rotate(180deg)}.gn-collapse-button:hover .gn-collapse-button__icon{color:var(--g-color-text-primary)}.gn-collapse-button__icon{color:var(--g-color-text-secondary)}";
|
|
403
|
+
styleInject(css_248z$u);
|
|
404
|
+
|
|
405
|
+
const b$v = block('collapse-button');
|
|
406
|
+
const CollapseButton = ({ className }) => {
|
|
407
|
+
const { compact, onChangeCompact } = useAsideHeaderContext();
|
|
408
|
+
const { expandTitle, collapseTitle, collapseButtonWrapper } = useAsideHeaderInnerContext();
|
|
409
|
+
const onCollapseButtonClick = React.useCallback(() => {
|
|
410
|
+
const newCompact = !compact;
|
|
411
|
+
onChangeCompact === null || onChangeCompact === undefined ? undefined : onChangeCompact(newCompact);
|
|
412
|
+
}, [compact, onChangeCompact]);
|
|
413
|
+
const buttonTitle = compact
|
|
414
|
+
? expandTitle || i18n$3('button_expand')
|
|
415
|
+
: collapseTitle || i18n$3('button_collapse');
|
|
416
|
+
const defaultButton = (React.createElement("button", { className: b$v({ compact: compact }, className), onClick: onCollapseButtonClick, title: buttonTitle },
|
|
417
|
+
React.createElement(uikit.Icon, { data: SvgControlMenuButton, className: b$v('icon'), width: "16", height: "10" })));
|
|
418
|
+
if (collapseButtonWrapper) {
|
|
419
|
+
return collapseButtonWrapper(defaultButton, {
|
|
420
|
+
compact,
|
|
421
|
+
onChangeCompact,
|
|
655
422
|
});
|
|
656
|
-
this._resizeObserver.observe(parentNode);
|
|
657
|
-
} else {
|
|
658
|
-
// Defer requiring resize handler in order to support server-side rendering.
|
|
659
|
-
// See issue #41
|
|
660
|
-
this._detectElementResize = createDetectElementResize(nonce);
|
|
661
|
-
this._detectElementResize.addResizeListener(parentNode, this._onResize);
|
|
662
|
-
}
|
|
663
|
-
this._onResize();
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
componentWillUnmount() {
|
|
667
|
-
if (this._parentNode) {
|
|
668
|
-
if (this._detectElementResize) {
|
|
669
|
-
this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);
|
|
670
|
-
}
|
|
671
|
-
if (this._timeoutId !== null) {
|
|
672
|
-
clearTimeout(this._timeoutId);
|
|
673
|
-
}
|
|
674
|
-
if (this._resizeObserver) {
|
|
675
|
-
this._resizeObserver.disconnect();
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
render() {
|
|
680
|
-
const {
|
|
681
|
-
children,
|
|
682
|
-
defaultHeight,
|
|
683
|
-
defaultWidth,
|
|
684
|
-
disableHeight = false,
|
|
685
|
-
disableWidth = false,
|
|
686
|
-
doNotBailOutOnEmptyChildren = false,
|
|
687
|
-
nonce,
|
|
688
|
-
onResize,
|
|
689
|
-
style = {},
|
|
690
|
-
tagName = "div",
|
|
691
|
-
...rest
|
|
692
|
-
} = this.props;
|
|
693
|
-
const {
|
|
694
|
-
height,
|
|
695
|
-
scaledHeight,
|
|
696
|
-
scaledWidth,
|
|
697
|
-
width
|
|
698
|
-
} = this.state;
|
|
699
|
-
|
|
700
|
-
// Outer div should not force width/height since that may prevent containers from shrinking.
|
|
701
|
-
// Inner component should overflow and use calculated width/height.
|
|
702
|
-
// See issue #68 for more information.
|
|
703
|
-
const outerStyle = {
|
|
704
|
-
overflow: "visible"
|
|
705
|
-
};
|
|
706
|
-
const childParams = {};
|
|
707
|
-
|
|
708
|
-
// Avoid rendering children before the initial measurements have been collected.
|
|
709
|
-
// At best this would just be wasting cycles.
|
|
710
|
-
let bailoutOnChildren = false;
|
|
711
|
-
if (!disableHeight) {
|
|
712
|
-
if (height === 0) {
|
|
713
|
-
bailoutOnChildren = true;
|
|
714
|
-
}
|
|
715
|
-
outerStyle.height = 0;
|
|
716
|
-
childParams.height = height;
|
|
717
|
-
childParams.scaledHeight = scaledHeight;
|
|
718
|
-
}
|
|
719
|
-
if (!disableWidth) {
|
|
720
|
-
if (width === 0) {
|
|
721
|
-
bailoutOnChildren = true;
|
|
722
|
-
}
|
|
723
|
-
outerStyle.width = 0;
|
|
724
|
-
childParams.width = width;
|
|
725
|
-
childParams.scaledWidth = scaledWidth;
|
|
726
|
-
}
|
|
727
|
-
if (doNotBailOutOnEmptyChildren) {
|
|
728
|
-
bailoutOnChildren = false;
|
|
729
423
|
}
|
|
730
|
-
return
|
|
731
|
-
|
|
732
|
-
style: {
|
|
733
|
-
...outerStyle,
|
|
734
|
-
...style
|
|
735
|
-
},
|
|
736
|
-
...rest
|
|
737
|
-
}, !bailoutOnChildren && children(childParams));
|
|
738
|
-
}
|
|
739
|
-
}
|
|
424
|
+
return defaultButton;
|
|
425
|
+
};
|
|
740
426
|
|
|
741
427
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
742
428
|
|
|
@@ -1398,14 +1084,14 @@ function requireDebounce () {
|
|
|
1398
1084
|
var debounceExports = requireDebounce();
|
|
1399
1085
|
var debounceFn = /*@__PURE__*/getDefaultExportFromCjs(debounceExports);
|
|
1400
1086
|
|
|
1401
|
-
var css_248z$
|
|
1402
|
-
styleInject(css_248z$
|
|
1087
|
+
var css_248z$t = ".gn-composite-bar-highlighted-item{--_--background-color:var(--g-color-base-background);--_--item-icon-background-size:38px;--_--item-background-color-hover:var(--g-color-base-selection-hover);--_--item-selected-background-color-active:var(--g-color-base-selection);display:flex;justify-content:center;position:absolute;z-index:10000}.gn-composite-bar-highlighted-item__icon{align-items:center;background-color:var(--gn-aside-header-background-color,var(--_--background-color));border-radius:7px;box-shadow:0 8px 20px 0 var(--g-color-sfx-shadow);cursor:pointer;display:flex;height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));justify-content:center;overflow:hidden;position:relative;transform:translateY(1px);width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size))}.gn-composite-bar-highlighted-item__icon:before{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color-active));content:\"\";height:100%;position:absolute;width:100%;z-index:-1}.gn-composite-bar-highlighted-item__icon:hover:before{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover))}";
|
|
1088
|
+
styleInject(css_248z$t);
|
|
1403
1089
|
|
|
1404
|
-
const b$
|
|
1090
|
+
const b$u = block('composite-bar-highlighted-item');
|
|
1405
1091
|
const DEBOUNCE_TIME = 200;
|
|
1406
1092
|
const HighlightedItem = ({ iconRef, iconNode, onClick, onClickCapture, }) => {
|
|
1407
1093
|
const { openModalSubscriber } = useAsideHeaderInnerContext();
|
|
1408
|
-
const [
|
|
1094
|
+
const [position, setPosition] = React.useState({
|
|
1409
1095
|
top: 0,
|
|
1410
1096
|
left: 0,
|
|
1411
1097
|
width: 0,
|
|
@@ -1425,193 +1111,74 @@ const HighlightedItem = ({ iconRef, iconNode, onClick, onClickCapture, }) => {
|
|
|
1425
1111
|
const handleResize = React.useCallback(() => handleResizeDebounced(), [handleResizeDebounced]);
|
|
1426
1112
|
React.useEffect(() => {
|
|
1427
1113
|
if (!isModalOpen) {
|
|
1428
|
-
return;
|
|
1114
|
+
return undefined;
|
|
1429
1115
|
}
|
|
1430
1116
|
handleResize();
|
|
1431
1117
|
window.addEventListener('resize', handleResize);
|
|
1432
|
-
return () =>
|
|
1118
|
+
return () => {
|
|
1119
|
+
window.removeEventListener('resize', handleResize);
|
|
1120
|
+
};
|
|
1433
1121
|
}, [handleResize, isModalOpen]);
|
|
1434
1122
|
openModalSubscriber === null || openModalSubscriber === undefined ? undefined : openModalSubscriber((open) => {
|
|
1435
|
-
setIsModalOpen(open);
|
|
1436
|
-
});
|
|
1437
|
-
if (!iconNode || !isModalOpen) {
|
|
1438
|
-
return null;
|
|
1439
|
-
}
|
|
1440
|
-
return (React.createElement(uikit.Portal, null,
|
|
1441
|
-
React.createElement("div", { className: b$s(), style: { left, top, width, height }, onClick: onClick, onClickCapture: onClickCapture, "data-toast": true },
|
|
1442
|
-
React.createElement("div", { className: b$s('icon') }, iconNode))));
|
|
1443
|
-
};
|
|
1444
|
-
HighlightedItem.displayName = 'HighlightedItem';
|
|
1445
|
-
|
|
1446
|
-
const ITEM_TYPE_REGULAR = 'regular';
|
|
1447
|
-
const COLLAPSE_ITEM_ID = 'collapse-item-id';
|
|
1448
|
-
const POPUP_PLACEMENT = ['right-start', 'right-end', 'right'];
|
|
1449
|
-
const POPUP_ITEM_HEIGHT = 28;
|
|
1450
|
-
|
|
1451
|
-
function getItemHeight$1(item) {
|
|
1452
|
-
if (!isMenuItem(item)) {
|
|
1453
|
-
return ITEM_HEIGHT;
|
|
1454
|
-
}
|
|
1455
|
-
switch (item.type) {
|
|
1456
|
-
case 'action':
|
|
1457
|
-
return 50;
|
|
1458
|
-
case 'divider':
|
|
1459
|
-
return 15;
|
|
1460
|
-
default:
|
|
1461
|
-
return ITEM_HEIGHT;
|
|
1462
|
-
}
|
|
1463
|
-
}
|
|
1464
|
-
function getItemsHeight(items) {
|
|
1465
|
-
return items.reduce((sum, item) => sum + getItemHeight$1(item), 0);
|
|
1466
|
-
}
|
|
1467
|
-
function getSelectedItemIndex$1(items) {
|
|
1468
|
-
const index = items.findIndex(({ current }) => Boolean(current));
|
|
1469
|
-
return index === -1 ? undefined : index;
|
|
1470
|
-
}
|
|
1471
|
-
function getPinnedItems(items) {
|
|
1472
|
-
const pinnedItems = [];
|
|
1473
|
-
for (const item of items) {
|
|
1474
|
-
if (item.pinned) {
|
|
1475
|
-
pinnedItems.push(item);
|
|
1476
|
-
}
|
|
1477
|
-
else if (item.type === 'divider') {
|
|
1478
|
-
if (pinnedItems.length > 0 && pinnedItems[pinnedItems.length - 1].type !== 'divider') {
|
|
1479
|
-
pinnedItems.push(item);
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
}
|
|
1483
|
-
return pinnedItems;
|
|
1484
|
-
}
|
|
1485
|
-
function getItemsMinHeight(items) {
|
|
1486
|
-
const pinnedItems = getPinnedItems(items);
|
|
1487
|
-
const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);
|
|
1488
|
-
return (getItemsHeight(pinnedItems) +
|
|
1489
|
-
getItemsHeight(afterMoreButtonItems) +
|
|
1490
|
-
(pinnedItems.length === items.length ? 0 : ITEM_HEIGHT));
|
|
1491
|
-
}
|
|
1492
|
-
function getMoreButtonItem(menuMoreTitle) {
|
|
1493
|
-
return {
|
|
1494
|
-
id: COLLAPSE_ITEM_ID,
|
|
1495
|
-
title: menuMoreTitle,
|
|
1496
|
-
icon: icons.Ellipsis,
|
|
1497
|
-
iconSize: 18,
|
|
1498
|
-
};
|
|
1499
|
-
}
|
|
1500
|
-
function getAutosizeListItems(items, height, collapseItem) {
|
|
1501
|
-
var _a, _b, _c;
|
|
1502
|
-
const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);
|
|
1503
|
-
const regularItems = items.filter((item) => !item.afterMoreButton);
|
|
1504
|
-
const listItems = [...regularItems, ...afterMoreButtonItems];
|
|
1505
|
-
const allItemsHeight = getItemsHeight(listItems);
|
|
1506
|
-
if (allItemsHeight <= height) {
|
|
1507
|
-
return { listItems, collapseItems: [] };
|
|
1508
|
-
}
|
|
1509
|
-
const collapseItemHeight = getItemHeight$1(collapseItem);
|
|
1510
|
-
listItems.splice(regularItems.length, 0, collapseItem);
|
|
1511
|
-
const collapseItems = [];
|
|
1512
|
-
let listHeight = allItemsHeight + collapseItemHeight;
|
|
1513
|
-
let index = listItems.length;
|
|
1514
|
-
while (listHeight > height) {
|
|
1515
|
-
if (index === 0) {
|
|
1516
|
-
break;
|
|
1517
|
-
}
|
|
1518
|
-
index--;
|
|
1519
|
-
const item = listItems[index];
|
|
1520
|
-
if (item.pinned || item.id === COLLAPSE_ITEM_ID || item.afterMoreButton) {
|
|
1521
|
-
continue;
|
|
1522
|
-
}
|
|
1523
|
-
if (item.type === 'divider') {
|
|
1524
|
-
if (index + 1 < listItems.length && ((_a = listItems[index + 1]) === null || _a === undefined ? undefined : _a.type) === 'divider') {
|
|
1525
|
-
listHeight -= getItemHeight$1(item);
|
|
1526
|
-
listItems.splice(index, 1);
|
|
1527
|
-
}
|
|
1528
|
-
continue;
|
|
1529
|
-
}
|
|
1530
|
-
listHeight -= getItemHeight$1(item);
|
|
1531
|
-
collapseItems.unshift(...listItems.splice(index, 1));
|
|
1532
|
-
}
|
|
1533
|
-
if (((_b = listItems[index]) === null || _b === undefined ? undefined : _b.type) === 'divider' &&
|
|
1534
|
-
(index === 0 || ((_c = listItems[index - 1]) === null || _c === undefined ? undefined : _c.type) === 'divider')) {
|
|
1535
|
-
listItems.splice(index, 1);
|
|
1123
|
+
setIsModalOpen(open);
|
|
1124
|
+
});
|
|
1125
|
+
if (!iconNode || !isModalOpen) {
|
|
1126
|
+
return null;
|
|
1536
1127
|
}
|
|
1537
|
-
return
|
|
1538
|
-
}
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1128
|
+
return (React.createElement(uikit.Portal, null,
|
|
1129
|
+
React.createElement("div", { className: b$u(), style: position, onClick: onClick, onClickCapture: onClickCapture, "data-toast": true },
|
|
1130
|
+
React.createElement("div", { className: b$u('icon') }, iconNode))));
|
|
1131
|
+
};
|
|
1132
|
+
HighlightedItem.displayName = 'HighlightedItem';
|
|
1542
1133
|
|
|
1543
|
-
|
|
1544
|
-
|
|
1134
|
+
const ITEM_TYPE_REGULAR = 'regular';
|
|
1135
|
+
const COLLAPSE_ITEM_ID = 'collapse-item-id';
|
|
1545
1136
|
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1137
|
+
var css_248z$s = ".gn-composite-bar-item{--gn-composite-bar-item-action-size:36px;--_--horizontal-divider-line-color:var(--g-color-line-generic);--_--item-background-color-hover:var(--g-color-base-simple-hover);--_--item-general-icon-color:var(--g-color-text-primary);--_--item-icon-color:var(--g-color-text-complementary);--_--item-text-color:var(--g-color-text-primary);--_--item-collapsed-radius:7px;--_--item-selected-text-color:var(--g-color-text-primary);--_--item-selected-background-color:var(--g-color-base-selection);align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;height:100%;min-width:0;outline:inherit;padding:0;text-decoration:inherit;width:100%}.gn-composite-bar-item:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-composite-bar-item__icon{color:var(--gn-aside-header-item-icon-color,var(--_--item-icon-color))}.gn-composite-bar-item_current .gn-composite-bar-item__icon{color:var(--gn-aside-header-item-current-icon-color,var(--gn-aside-header-item-icon-color,var(--_--item-icon-color)))}.gn-composite-bar-highlighted-item .gn-composite-bar-item__icon,.gn-composite-bar_subheader .gn-composite-bar-item__icon,.gn-footer-item .gn-composite-bar-item__icon{color:var(--gn-aside-header-general-item-icon-color,var(--_--item-general-icon-color))}.gn-composite-bar-highlighted-item.gn-composite-bar-item_current .gn-composite-bar-item__icon,.gn-composite-bar_subheader .gn-composite-bar-item_current .gn-composite-bar-item__icon,.gn-footer-item.gn-composite-bar-item_current .gn-composite-bar-item__icon{color:var(--gn-aside-header-item-current-icon-color,var(--gn-aside-header-general-item-icon-color,var(--_--item-general-icon-color)))}.gn-composite-bar-item__icon-tooltip .g-action-tooltip__description{color:var(--g-color-text-light-primary);margin-block-start:0}.gn-composite-bar-item__icon-place{align-items:center;display:flex;flex-shrink:0;height:100%;justify-content:center;width:var(--gn-aside-header-min-width)}.gn-composite-bar-item__title{align-items:center;display:flex;margin:0 var(--g-spacing-4) 0 var(--g-spacing-2);overflow:hidden}.gn-composite-bar-item__title-text{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--gn-aside-header-item-text-color,var(--_--item-text-color));display:-webkit-box;overflow:hidden;text-align:start}.gn-composite-bar-item_current .gn-composite-bar-item__title-text{color:var(--gn-aside-header-item-current-text-color,var(--_--item-selected-text-color))}.gn-composite-bar-item__title-adornment{margin:0 10px}.gn-composite-bar-item__collapse-item{--_--item-icon-color:var(--g-color-text-misc);align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;height:100%;outline:inherit;padding:0 16px;text-decoration:inherit;width:100%}.gn-composite-bar-item__collapse-item:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-composite-bar-item__collapse-item-icon{color:var(--gn-aside-header-item-icon-color,var(--_--item-icon-color));margin-right:10px}.gn-composite-bar-item__collapse-item .gn-composite-bar-item__title-adornment{margin-right:0}.gn-composite-bar-item__menu-divider{border-top:1px solid var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));cursor:default;margin:0 10px;width:100%}.gn-composite-bar-item__collapse-items-popup-content{padding:4px 0}.gn-composite-bar-item__link{align-items:center;display:flex;height:100%;width:100%}.gn-composite-bar-item__link,.gn-composite-bar-item__link:active,.gn-composite-bar-item__link:focus,.gn-composite-bar-item__link:hover,.gn-composite-bar-item__link:visited{color:inherit;outline:none;text-decoration:none}.gn-composite-bar-item__btn-icon{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.gn-composite-bar-item_type_action{background:var(--g-color-base-float);border-radius:var(--gn-composite-bar-item-action-size);box-shadow:0 0 0 1px rgba(0,0,0,.03),0 5px 6px rgba(0,0,0,.12);height:var(--gn-composite-bar-item-action-size);justify-content:center;margin-bottom:var(--g-spacing-2);transition:transform .1s ease-out,background-color .15s linear}.gn-composite-bar-item_type_action:focus-visible{box-shadow:0 0 0 2px var(--g-color-line-misc)}.gn-composite-bar-item_type_action:hover{background-color:var(--g-color-base-float-hover)}.gn-composite-bar-item_type_action:active{box-shadow:0 1px 2px var(--g-color-sfx-shadow);transform:scale(.96);transition:none}.gn-composite-bar-item_type_action .gn-composite-bar-item__icon-place{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_type_action.gn-footer-item{width:calc(100% - 20px)}.gn-composite-bar-item__icon-tooltip_item-type_action{margin-left:10px}.gn-composite-bar-item:not(.gn-composite-bar-item_compact).gn-composite-bar-item_current.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color));border-radius:var(--gn-aside-header-item-expanded-radius)}.gn-composite-bar-item:not(.gn-composite-bar-item_compact):hover.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-current-background-color-hover,var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color)));border-radius:var(--gn-aside-header-item-expanded-radius)}.gn-composite-bar-item:not(.gn-composite-bar-item_compact):not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover));border-radius:var(--gn-aside-header-item-expanded-radius)}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action{width:var(--gn-composite-bar-item-action-size)}.gn-composite-bar-item_compact.gn-composite-bar-item_type_action .gn-composite-bar-item__title{margin:0}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact.gn-composite-bar-item_current.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color));border-radius:var(--gn-aside-header-item-collapsed-radius,var(--_--item-collapsed-radius));content:\"\";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-18px;margin-top:-18px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}.gn-composite-bar-item_compact:hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact:hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-current-background-color-hover,var(--gn-aside-header-item-current-background-color,var(--_--item-selected-background-color)));border-radius:var(--gn-aside-header-item-collapsed-radius,var(--_--item-collapsed-radius));content:\"\";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-18px;margin-top:-18px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon{background-color:transparent;position:relative}.gn-composite-bar-item_compact:not(.gn-composite-bar-item_current):hover.gn-composite-bar-item_type_regular .gn-composite-bar-item__btn-icon:before{background-color:var(--gn-aside-header-item-background-color-hover,var(--_--item-background-color-hover));border-radius:var(--gn-aside-header-item-collapsed-radius,var(--_--item-collapsed-radius));content:\"\";height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));left:50%;margin-left:-18px;margin-top:-18px;position:absolute;top:50%;width:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));z-index:-1}";
|
|
1138
|
+
styleInject(css_248z$s);
|
|
1139
|
+
|
|
1140
|
+
const b$t = block('composite-bar-item');
|
|
1141
|
+
function renderItemTitle(params) {
|
|
1142
|
+
let titleNode = React.createElement("div", { className: b$t('title-text') }, params.title);
|
|
1143
|
+
if (params.rightAdornment) {
|
|
1550
1144
|
titleNode = (React.createElement(React.Fragment, null,
|
|
1551
1145
|
titleNode,
|
|
1552
|
-
React.createElement("div", { className: b$
|
|
1146
|
+
React.createElement("div", { className: b$t('title-adornment') }, params.rightAdornment)));
|
|
1553
1147
|
}
|
|
1554
1148
|
return titleNode;
|
|
1555
1149
|
}
|
|
1556
1150
|
const defaultPopupPlacement = ['right-end'];
|
|
1557
1151
|
const defaultPopupOffset = { mainAxis: 8, crossAxis: -20 };
|
|
1558
1152
|
const Item$1 = (props) => {
|
|
1559
|
-
const {
|
|
1560
|
-
const { compact } = useAsideHeaderContext();
|
|
1561
|
-
const [open, toggleOpen] = React.useState(false);
|
|
1153
|
+
const { className, onMouseLeave, onMouseEnter, popupVisible = false, popupRef: anchoreRefProp, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onOpenChangePopup, onItemClick, onItemClickCapture, itemWrapper, bringForward, rightAdornment, title, href, qa, compact, } = props;
|
|
1562
1154
|
const ref = React.useRef(null);
|
|
1563
|
-
const anchorRef =
|
|
1155
|
+
const anchorRef = (anchoreRefProp === null || anchoreRefProp === undefined ? undefined : anchoreRefProp.current) ? anchoreRefProp : ref;
|
|
1564
1156
|
const highlightedRef = React.useRef(null);
|
|
1565
|
-
const type =
|
|
1566
|
-
const current =
|
|
1567
|
-
const
|
|
1568
|
-
const
|
|
1569
|
-
const
|
|
1570
|
-
const
|
|
1571
|
-
const collapsedItem = item.id === COLLAPSE_ITEM_ID;
|
|
1572
|
-
const handleClosePopup = React.useCallback((event) => {
|
|
1573
|
-
var _a;
|
|
1574
|
-
if (event instanceof MouseEvent &&
|
|
1575
|
-
event.target &&
|
|
1576
|
-
((_a = ref.current) === null || _a === undefined ? undefined : _a.contains(event.target))) {
|
|
1577
|
-
return;
|
|
1578
|
-
}
|
|
1579
|
-
onClosePopup === null || onClosePopup === undefined ? undefined : onClosePopup();
|
|
1580
|
-
}, [onClosePopup]);
|
|
1581
|
-
const handleOpenChangePopup = React.useCallback((open, event, reason) => {
|
|
1157
|
+
const type = props.type || ITEM_TYPE_REGULAR;
|
|
1158
|
+
const current = props.current || false;
|
|
1159
|
+
const icon = props.icon;
|
|
1160
|
+
const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;
|
|
1161
|
+
const iconQa = props.iconQa;
|
|
1162
|
+
const handleOpenChangePopup = React.useCallback((newOpen, event, reason) => {
|
|
1582
1163
|
var _a;
|
|
1583
1164
|
if (event instanceof MouseEvent &&
|
|
1584
1165
|
event.target &&
|
|
1585
1166
|
((_a = ref.current) === null || _a === undefined ? undefined : _a.contains(event.target))) {
|
|
1586
1167
|
return;
|
|
1587
1168
|
}
|
|
1588
|
-
onOpenChangePopup === null || onOpenChangePopup === undefined ? undefined : onOpenChangePopup(
|
|
1589
|
-
}, [
|
|
1590
|
-
if (
|
|
1591
|
-
return React.createElement("div", { className: b$
|
|
1169
|
+
onOpenChangePopup === null || onOpenChangePopup === undefined ? undefined : onOpenChangePopup(newOpen, event, reason);
|
|
1170
|
+
}, [onOpenChangePopup]);
|
|
1171
|
+
if (type === 'divider') {
|
|
1172
|
+
return React.createElement("div", { className: b$t('menu-divider') });
|
|
1592
1173
|
}
|
|
1593
1174
|
const makeIconNode = (iconEl) => {
|
|
1594
|
-
return compact ?
|
|
1595
|
-
React.createElement("div", { onMouseEnter: () => onMouseEnter === null || onMouseEnter === undefined ? undefined : onMouseEnter(), onMouseLeave: () => onMouseLeave === null || onMouseLeave === undefined ? undefined : onMouseLeave(), className: b$r('btn-icon') }, iconEl))) : (iconEl);
|
|
1175
|
+
return compact ? React.createElement("div", { className: b$t('btn-icon') }, iconEl) : iconEl;
|
|
1596
1176
|
};
|
|
1597
1177
|
const makeNode = ({ icon: iconEl, title: titleEl }) => {
|
|
1598
|
-
const [Tag, tagProps] =
|
|
1599
|
-
? ['a', { href: item.link }]
|
|
1600
|
-
: ['button', {}];
|
|
1178
|
+
const [Tag, tagProps] = href ? ['a', { href }] : ['button', {}];
|
|
1601
1179
|
const createdNode = (React.createElement(React.Fragment, null,
|
|
1602
|
-
React.createElement(Tag, Object.assign({}, tagProps, { className: b$
|
|
1603
|
-
|
|
1604
|
-
/**
|
|
1605
|
-
* If we call onItemClick for collapsedItem then:
|
|
1606
|
-
* - User get unexpected item in onItemClick callback
|
|
1607
|
-
* - onClosePanel calls twice for each popuped item, as result it will prevent opening of panelItems
|
|
1608
|
-
*/
|
|
1609
|
-
toggleOpen(!open);
|
|
1610
|
-
onCollapseItemClick === null || onCollapseItemClick === undefined ? undefined : onCollapseItemClick();
|
|
1611
|
-
}
|
|
1612
|
-
else {
|
|
1613
|
-
onItemClick === null || onItemClick === undefined ? undefined : onItemClick(item, false, event);
|
|
1614
|
-
}
|
|
1180
|
+
React.createElement(Tag, Object.assign({}, tagProps, { className: b$t({ type, current, compact }, className), ref: ref, "data-qa": qa, onClick: (event) => {
|
|
1181
|
+
onItemClick === null || onItemClick === undefined ? undefined : onItemClick(props, false, event);
|
|
1615
1182
|
}, onClickCapture: onItemClickCapture, onMouseEnter: () => {
|
|
1616
1183
|
if (!compact) {
|
|
1617
1184
|
onMouseEnter === null || onMouseEnter === undefined ? undefined : onMouseEnter();
|
|
@@ -1621,65 +1188,32 @@ const Item$1 = (props) => {
|
|
|
1621
1188
|
onMouseLeave === null || onMouseLeave === undefined ? undefined : onMouseLeave();
|
|
1622
1189
|
}
|
|
1623
1190
|
} }),
|
|
1624
|
-
React.createElement("div", { className: b$
|
|
1625
|
-
React.createElement("div", { className: b$
|
|
1626
|
-
renderPopupContent && Boolean(anchorRef === null || anchorRef === undefined ? undefined : anchorRef.current) && (React.createElement(uikit.Popup, { strategy: "fixed", open: popupVisible, keepMounted: popupKeepMounted, placement: popupPlacement, offset: popupOffset,
|
|
1191
|
+
React.createElement("div", { className: b$t('icon-place'), ref: highlightedRef }, makeIconNode(iconEl)),
|
|
1192
|
+
React.createElement("div", { className: b$t('title'), title: typeof title === 'string' ? title : undefined }, titleEl)),
|
|
1193
|
+
renderPopupContent && Boolean(anchorRef === null || anchorRef === undefined ? undefined : anchorRef.current) && (React.createElement(uikit.Popup, { strategy: "fixed", open: popupVisible, keepMounted: popupKeepMounted, placement: popupPlacement, offset: popupOffset, anchorElement: anchorRef.current, onOpenChange: handleOpenChangePopup }, renderPopupContent()))));
|
|
1627
1194
|
return createdNode;
|
|
1628
1195
|
};
|
|
1629
|
-
const iconNode = icon ? (React.createElement(uikit.Icon, { qa: iconQa, data: icon, size: iconSize, className: b$
|
|
1630
|
-
const titleNode = renderItemTitle(
|
|
1196
|
+
const iconNode = icon ? (React.createElement(uikit.Icon, { qa: iconQa, data: icon, size: iconSize, className: b$t('icon') })) : null;
|
|
1197
|
+
const titleNode = renderItemTitle({ title, rightAdornment });
|
|
1631
1198
|
const params = { icon: iconNode, title: titleNode };
|
|
1632
1199
|
let highlightedNode = null;
|
|
1633
1200
|
let node;
|
|
1634
|
-
const opts = { compact: Boolean(compact), collapsed: false, item, ref };
|
|
1635
|
-
if (typeof
|
|
1636
|
-
node =
|
|
1201
|
+
const opts = { compact: Boolean(compact), collapsed: false, item: props, ref };
|
|
1202
|
+
if (typeof itemWrapper === 'function') {
|
|
1203
|
+
node = itemWrapper(params, makeNode, opts);
|
|
1637
1204
|
highlightedNode =
|
|
1638
1205
|
bringForward &&
|
|
1639
|
-
|
|
1206
|
+
itemWrapper(params, ({ icon: iconEl }) => makeIconNode(iconEl), opts);
|
|
1640
1207
|
}
|
|
1641
1208
|
else {
|
|
1642
1209
|
node = makeNode(params);
|
|
1643
1210
|
highlightedNode = bringForward && makeIconNode(iconNode);
|
|
1644
1211
|
}
|
|
1645
1212
|
return (React.createElement(React.Fragment, null,
|
|
1646
|
-
bringForward && (React.createElement(HighlightedItem, { iconNode: highlightedNode, iconRef: highlightedRef, onClick: (event) => onItemClick === null || onItemClick === undefined ? undefined : onItemClick(
|
|
1647
|
-
node
|
|
1648
|
-
open && collapsedItem && (collapseItems === null || collapseItems === undefined ? undefined : collapseItems.length) && Boolean(anchorRef === null || anchorRef === undefined ? undefined : anchorRef.current) && (React.createElement(CollapsedPopup, Object.assign({}, props, { anchorRef: ref, onClose: () => toggleOpen(false) })))));
|
|
1213
|
+
bringForward && (React.createElement(HighlightedItem, { iconNode: highlightedNode, iconRef: highlightedRef, onClick: (event) => onItemClick === null || onItemClick === undefined ? undefined : onItemClick(props, false, event), onClickCapture: onItemClickCapture })),
|
|
1214
|
+
node));
|
|
1649
1215
|
};
|
|
1650
1216
|
Item$1.displayName = 'Item';
|
|
1651
|
-
function CollapsedPopup({ onItemClick, collapseItems, anchorRef, onClose, }) {
|
|
1652
|
-
const { compact } = useAsideHeaderContext();
|
|
1653
|
-
return (collapseItems === null || collapseItems === undefined ? undefined : collapseItems.length) ? (React.createElement(uikit.Popup, { strategy: "fixed", placement: POPUP_PLACEMENT, open: true, anchorRef: anchorRef, onClose: onClose },
|
|
1654
|
-
React.createElement("div", { className: b$r('collapse-items-popup-content') },
|
|
1655
|
-
React.createElement(uikit.List, { itemClassName: b$r('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex$1(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, onItemClick: onClose, renderItem: (collapseItem) => {
|
|
1656
|
-
const makeCollapseNode = ({ title: titleEl, icon: iconEl, }) => {
|
|
1657
|
-
const [Tag, tagProps] = collapseItem.link
|
|
1658
|
-
? ['a', { href: collapseItem.link }]
|
|
1659
|
-
: ['button', {}];
|
|
1660
|
-
return (React.createElement(Tag, Object.assign({}, tagProps, { className: b$r('collapse-item'), onClick: (event) => {
|
|
1661
|
-
onItemClick === null || onItemClick === undefined ? undefined : onItemClick(collapseItem, true, event);
|
|
1662
|
-
} }),
|
|
1663
|
-
iconEl,
|
|
1664
|
-
titleEl));
|
|
1665
|
-
};
|
|
1666
|
-
const titleNode = renderItemTitle(collapseItem);
|
|
1667
|
-
const iconNode = collapseItem.icon && (React.createElement(uikit.Icon, { data: collapseItem.icon, size: 14, className: b$r('collapse-item-icon') }));
|
|
1668
|
-
const params = { title: titleNode, icon: iconNode };
|
|
1669
|
-
const opts = {
|
|
1670
|
-
compact: Boolean(compact),
|
|
1671
|
-
collapsed: true,
|
|
1672
|
-
item: collapseItem,
|
|
1673
|
-
ref: anchorRef,
|
|
1674
|
-
};
|
|
1675
|
-
if (typeof collapseItem.itemWrapper === 'function') {
|
|
1676
|
-
return collapseItem.itemWrapper(params, makeCollapseNode, opts);
|
|
1677
|
-
}
|
|
1678
|
-
else {
|
|
1679
|
-
return makeCollapseNode(params);
|
|
1680
|
-
}
|
|
1681
|
-
} })))) : null;
|
|
1682
|
-
}
|
|
1683
1217
|
|
|
1684
1218
|
const multipleTooltipContextDefaults = {
|
|
1685
1219
|
active: false,
|
|
@@ -1703,40 +1237,80 @@ class MultipleTooltipProvider extends React.PureComponent {
|
|
|
1703
1237
|
}
|
|
1704
1238
|
}
|
|
1705
1239
|
|
|
1706
|
-
var css_248z$
|
|
1707
|
-
styleInject(css_248z$
|
|
1240
|
+
var css_248z$r = ".g-root_theme_dark .gn-multiple-tooltip,.g-root_theme_dark-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:var(\n --g-color-base-float-medium,var(--g-color-private-white-100-solid)\n );--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,var(--g-color-base-background) 50%,transparent);--multiple-tooltip-backdrop-filter:blur(16px)}.g-root_theme_dark-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:var(\n --g-color-base-float-medium,var(--g-color-private-white-150-solid)\n )}.g-root_theme_light .gn-multiple-tooltip,.g-root_theme_light-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:var(\n --g-color-base-float-medium,var(--g-color-private-black-550-solid)\n );--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,var(--g-color-base-background) 50%,transparent);--multiple-tooltip-backdrop-filter:blur(12px)}.gn-multiple-tooltip:before{background:var(--multiple-tooltip-backdrop-background);box-shadow:none;content:\"\";filter:var(--multiple-tooltip-backdrop-filter);height:100%;opacity:.7;position:absolute;width:100%;z-index:-1}.g-popup.gn-multiple-tooltip__popup,.gn-multiple-tooltip__popup{--g-popup-background-color:transparent;--g-popup-border-color:transparent;--g-popup-border-width:0;background-color:transparent;box-shadow:none}.gn-multiple-tooltip__items-container{align-items:flex-start;display:flex;flex-direction:column;padding:32px 40px 32px 12px}.gn-multiple-tooltip__item{align-items:center;background-color:var(--multiple-tooltip-item-bg-color);border-radius:5px;box-sizing:border-box;color:var(--g-color-text-light-primary);display:flex;height:30px;margin-bottom:5px;padding:8px 12px;position:relative;transition:transform .1s ease-in-out}.gn-multiple-tooltip__item:first-child,.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider)+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:5px}.gn-multiple-tooltip__item_divider+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:4px}.gn-multiple-tooltip__item_active{background-color:var(--multiple-tooltip-item-active-bg-color);transform:translateX(-12px)}.gn-multiple-tooltip__item_divider{height:15px;margin:0;visibility:hidden}";
|
|
1241
|
+
styleInject(css_248z$r);
|
|
1708
1242
|
|
|
1709
|
-
const b$
|
|
1243
|
+
const b$s = block('multiple-tooltip');
|
|
1710
1244
|
const POPUP_OFFSET = { mainAxis: 4, crossAxis: -32 };
|
|
1711
1245
|
const MultipleTooltip = ({ items, open, anchorRef, placement, }) => {
|
|
1712
1246
|
const { activeIndex, hideCollapseItemTooltip } = React.useContext(MultipleTooltipContext);
|
|
1713
1247
|
const activeItem = activeIndex === undefined ? null : items[activeIndex];
|
|
1714
|
-
return (React.createElement(uikit.Popup, { open: open, className: b$
|
|
1715
|
-
React.createElement("div", { className: b$
|
|
1716
|
-
React.createElement("div", { className: b$
|
|
1248
|
+
return (React.createElement(uikit.Popup, { open: open, className: b$s('popup'), anchorElement: anchorRef.current, strategy: "fixed", placement: placement, offset: POPUP_OFFSET },
|
|
1249
|
+
React.createElement("div", { className: b$s() },
|
|
1250
|
+
React.createElement("div", { className: b$s('items-container') }, items
|
|
1717
1251
|
.filter(({ type = 'regular', id }) => !hideCollapseItemTooltip ||
|
|
1718
1252
|
(id !== COLLAPSE_ITEM_ID && type !== 'action'))
|
|
1719
|
-
.map((
|
|
1720
|
-
switch (
|
|
1253
|
+
.map((currentItem, idx) => {
|
|
1254
|
+
switch (currentItem.type) {
|
|
1721
1255
|
case 'divider':
|
|
1722
|
-
return (React.createElement("div", { className: b$
|
|
1256
|
+
return (React.createElement("div", { className: b$s('item', { divider: true }), key: idx }, currentItem.title));
|
|
1723
1257
|
default:
|
|
1724
|
-
return (React.createElement("div", { className: b$
|
|
1725
|
-
active:
|
|
1726
|
-
}), key: idx },
|
|
1258
|
+
return (React.createElement("div", { className: b$s('item', {
|
|
1259
|
+
active: currentItem === activeItem,
|
|
1260
|
+
}), key: idx }, currentItem.title));
|
|
1727
1261
|
}
|
|
1728
1262
|
})))));
|
|
1729
1263
|
};
|
|
1730
1264
|
|
|
1731
|
-
|
|
1732
|
-
|
|
1265
|
+
const GAP = 2;
|
|
1266
|
+
function getGroupBlockHeight(items) {
|
|
1267
|
+
if (items.length === 0) {
|
|
1268
|
+
return ITEM_HEIGHT;
|
|
1269
|
+
}
|
|
1270
|
+
const gaps = items.length * GAP;
|
|
1271
|
+
// +1 accounts for the group header item in addition to the menu items
|
|
1272
|
+
return (items.length + 1) * ITEM_HEIGHT + gaps;
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
function getGroupHeight(compositeItem) {
|
|
1276
|
+
var _a;
|
|
1277
|
+
const visibleItemsCount = ((_a = compositeItem.items) === null || _a === undefined ? undefined : _a.filter(({ hidden }) => !hidden)) || [];
|
|
1278
|
+
const visibleGroupItems = compositeItem.isCollapsed ? [] : visibleItemsCount;
|
|
1279
|
+
return getGroupBlockHeight(visibleGroupItems);
|
|
1280
|
+
}
|
|
1281
|
+
function getItemHeight$1(compositeItem) {
|
|
1282
|
+
var _a;
|
|
1283
|
+
if ('items' in compositeItem && compositeItem.items && ((_a = compositeItem.items) === null || _a === undefined ? undefined : _a.length) > 0) {
|
|
1284
|
+
return getGroupHeight(compositeItem);
|
|
1285
|
+
}
|
|
1286
|
+
switch (compositeItem.type) {
|
|
1287
|
+
case 'action':
|
|
1288
|
+
return 50;
|
|
1289
|
+
case 'divider':
|
|
1290
|
+
return 15;
|
|
1291
|
+
default:
|
|
1292
|
+
return ITEM_HEIGHT;
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
function getItemsHeight(items) {
|
|
1296
|
+
return items.reduce((sum, item) => sum + getItemHeight$1(item), 0);
|
|
1297
|
+
}
|
|
1298
|
+
function getSelectedItemIndex$1(compositeItems) {
|
|
1299
|
+
const index = compositeItems.findIndex(({ current }) => Boolean(current));
|
|
1300
|
+
return index === -1 ? undefined : index;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
var css_248z$q = ".gn-composite-bar{--gn-aside-header-item-expanded-radius:6px;display:flex;flex:1 1 auto;flex-direction:column;min-height:40px;width:100%}.gn-composite-bar .gn-composite-bar__root-menu-item[class]{background-color:transparent}.gn-composite-bar .gn-composite-bar__root-menu-item[class],.gn-composite-bar__menu-group-header,.gn-composite-bar__menu-group-item{margin-bottom:2px}.gn-composite-bar .gn-composite-bar__root-menu-item[class]:last-child,.gn-composite-bar__menu-group-header:last-child,.gn-composite-bar__menu-group-item:last-child{margin-bottom:0}.gn-composite-bar_scrollable{-ms-overflow-style:none;flex:1 1 auto;overflow-y:auto;scrollbar-width:none}.gn-composite-bar_scrollable::-webkit-scrollbar{display:none}.gn-composite-bar__menu-group{height:100%;position:relative;width:100%}.gn-composite-bar__menu-group:before{border-left:2px solid var(--g-color-line-generic);border-radius:0;content:\"\";height:100%;left:0;position:absolute;top:0;transition:border-radius .15s ease-out;width:100%;z-index:-1}.gn-composite-bar__menu-group:hover:before,.gn-composite-bar__menu-group_expanded:before{border-radius:var(--gn-aside-header-item-expanded-radius)}.gn-composite-bar__menu-group,.gn-composite-bar__menu-item{margin-inline:10px}.gn-composite-bar__menu-group-header,.gn-composite-bar__menu-group-item{height:36px}.gn-composite-bar__menu-group-toggle,.gn-composite-bar__menu-group-toggle-placeholder{align-items:center;cursor:pointer;display:inline-flex;height:24px;width:24px}.gn-composite-bar__menu-group-toggle{margin-left:auto}.gn-composite-bar__menu-group-icon{margin-right:var(--g-spacing-3)}";
|
|
1304
|
+
styleInject(css_248z$q);
|
|
1733
1305
|
|
|
1734
|
-
const b$
|
|
1735
|
-
const CompositeBarView = ({ type, items, onItemClick, onMoreClick,
|
|
1306
|
+
const b$r = block('composite-bar');
|
|
1307
|
+
const CompositeBarView = ({ type, items, onItemClick, onMoreClick, multipleTooltip = false, compositeId, className, onToggleGroupCollapsed, enableSorting = false, onFirstLevelSortEnd, onSecondLevelSortEnd, }) => {
|
|
1736
1308
|
const ref = React.useRef(null);
|
|
1737
1309
|
const tooltipRef = React.useRef(null);
|
|
1310
|
+
const [hoveredGroupId, setHoveredGroupId] = React.useState(null);
|
|
1738
1311
|
const { setValue: setMultipleTooltipContextValue, active: multipleTooltipActive, activeIndex, lastClickedItemIndex, } = React.useContext(MultipleTooltipContext);
|
|
1739
|
-
const {
|
|
1312
|
+
const { isExpanded } = useAsideHeaderInnerContext();
|
|
1313
|
+
const compact = !isExpanded;
|
|
1740
1314
|
React.useEffect(() => {
|
|
1741
1315
|
function handleBlurWindow() {
|
|
1742
1316
|
if (multipleTooltip && multipleTooltipActive) {
|
|
@@ -1816,7 +1390,7 @@ const CompositeBarView = ({ type, items, onItemClick, onMoreClick, collapseItems
|
|
|
1816
1390
|
multipleTooltip,
|
|
1817
1391
|
setMultipleTooltipContextValue,
|
|
1818
1392
|
]);
|
|
1819
|
-
const onItemClickByIndex = React.useCallback((itemIndex) => (item, collapsed, event) => {
|
|
1393
|
+
const onItemClickByIndex = React.useCallback((itemIndex, orginalItemClick) => (item, collapsed, event) => {
|
|
1820
1394
|
if (compact &&
|
|
1821
1395
|
multipleTooltip &&
|
|
1822
1396
|
itemIndex !== lastClickedItemIndex &&
|
|
@@ -1826,107 +1400,130 @@ const CompositeBarView = ({ type, items, onItemClick, onMoreClick, collapseItems
|
|
|
1826
1400
|
active: false,
|
|
1827
1401
|
});
|
|
1828
1402
|
}
|
|
1829
|
-
|
|
1403
|
+
// Handle clicks on the "more" button (collapse item)
|
|
1404
|
+
if (item.id === COLLAPSE_ITEM_ID && collapsed) {
|
|
1405
|
+
onMoreClick === null || onMoreClick === undefined ? undefined : onMoreClick();
|
|
1406
|
+
}
|
|
1407
|
+
else {
|
|
1408
|
+
onItemClick === null || onItemClick === undefined ? undefined : onItemClick(Object.assign(Object.assign({}, item), { onItemClick: orginalItemClick }), collapsed, event);
|
|
1409
|
+
}
|
|
1830
1410
|
}, [
|
|
1831
1411
|
compact,
|
|
1832
1412
|
lastClickedItemIndex,
|
|
1833
1413
|
multipleTooltip,
|
|
1834
1414
|
onItemClick,
|
|
1415
|
+
onMoreClick,
|
|
1835
1416
|
setMultipleTooltipContextValue,
|
|
1836
1417
|
]);
|
|
1418
|
+
const handleFirstLevelSortEnd = React.useCallback(({ oldIndex, newIndex }) => {
|
|
1419
|
+
if (onFirstLevelSortEnd) {
|
|
1420
|
+
onFirstLevelSortEnd({ oldIndex, newIndex });
|
|
1421
|
+
}
|
|
1422
|
+
}, [onFirstLevelSortEnd]);
|
|
1423
|
+
const handleSecondLevelSortEnd = React.useCallback((groupId) => ({ oldIndex, newIndex }) => {
|
|
1424
|
+
if (onSecondLevelSortEnd) {
|
|
1425
|
+
onSecondLevelSortEnd(groupId)({ oldIndex, newIndex });
|
|
1426
|
+
}
|
|
1427
|
+
}, [onSecondLevelSortEnd]);
|
|
1428
|
+
const renderNestedItem = React.useCallback((nestedItem, parentItemIndex, _nestedItemIndex, _parentGroupId) => {
|
|
1429
|
+
var _a;
|
|
1430
|
+
if ('items' in nestedItem && nestedItem.items && nestedItem.items.length > 0) {
|
|
1431
|
+
const isCollapsible = Boolean('collapsible' in nestedItem && nestedItem.collapsible);
|
|
1432
|
+
const isCollapsed = Boolean('isCollapsed' in nestedItem && nestedItem.isCollapsed);
|
|
1433
|
+
const nestedGroupListItems = ((_a = nestedItem.items) === null || _a === undefined ? undefined : _a.filter((item) => !item.hidden)) || [];
|
|
1434
|
+
const hasHeader = nestedItem.title || nestedItem.icon || isCollapsible;
|
|
1435
|
+
const isNestedGroupHovered = hoveredGroupId === nestedItem.id;
|
|
1436
|
+
let nestedGroupIcon = nestedItem.icon;
|
|
1437
|
+
if (!isCollapsed) {
|
|
1438
|
+
nestedGroupIcon = icons.ChevronDown;
|
|
1439
|
+
}
|
|
1440
|
+
else if (isNestedGroupHovered) {
|
|
1441
|
+
nestedGroupIcon = icons.ChevronRight;
|
|
1442
|
+
}
|
|
1443
|
+
return (React.createElement("div", { className: b$r('menu-group', { expanded: !isCollapsed, nested: true }) },
|
|
1444
|
+
hasHeader && (React.createElement(Item$1, Object.assign({}, nestedItem, { className: b$r('menu-group-header', { collapsed: isCollapsed }), icon: nestedGroupIcon, compact: compact, onMouseEnter: () => {
|
|
1445
|
+
setHoveredGroupId(nestedItem.id);
|
|
1446
|
+
}, onMouseLeave: () => {
|
|
1447
|
+
setHoveredGroupId(null);
|
|
1448
|
+
}, onItemClick: (item) => {
|
|
1449
|
+
onToggleGroupCollapsed === null || onToggleGroupCollapsed === undefined ? undefined : onToggleGroupCollapsed(item.id);
|
|
1450
|
+
} }))),
|
|
1451
|
+
!isCollapsed && (React.createElement(uikit.List, { items: nestedGroupListItems, sortable: enableSorting, onSortEnd: handleSecondLevelSortEnd(nestedItem.id), virtualized: false, filterable: false, itemClassName: b$r('menu-group-item'), itemsHeight: getItemsHeight, renderItem: (deepNestedItem, _isDeepItemActive, deepNestedIndex) => {
|
|
1452
|
+
return renderNestedItem(deepNestedItem, parentItemIndex, deepNestedIndex, nestedItem.id);
|
|
1453
|
+
} }))));
|
|
1454
|
+
}
|
|
1455
|
+
return (React.createElement(Item$1, Object.assign({ className: b$r('menu-group-item'), key: nestedItem.id }, nestedItem, { compact: compact, onMouseEnter: onMouseEnterByIndex(parentItemIndex), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(parentItemIndex, nestedItem.onItemClick) })));
|
|
1456
|
+
}, [
|
|
1457
|
+
compact,
|
|
1458
|
+
enableSorting,
|
|
1459
|
+
handleSecondLevelSortEnd,
|
|
1460
|
+
hoveredGroupId,
|
|
1461
|
+
onItemClickByIndex,
|
|
1462
|
+
onMouseEnterByIndex,
|
|
1463
|
+
onMouseLeave,
|
|
1464
|
+
onToggleGroupCollapsed,
|
|
1465
|
+
setHoveredGroupId,
|
|
1466
|
+
]);
|
|
1467
|
+
if (!items || items.length === 0) {
|
|
1468
|
+
return null;
|
|
1469
|
+
}
|
|
1837
1470
|
return (React.createElement(React.Fragment, null,
|
|
1838
|
-
React.createElement("div", { ref: tooltipRef, onMouseEnter: onTooltipMouseEnter, onMouseLeave: onTooltipMouseLeave },
|
|
1839
|
-
React.createElement(uikit.List, { id: compositeId, ref: ref, items: items, selectedItemIndex: type === 'menu' ? getSelectedItemIndex$1(items) : undefined, itemHeight: getItemHeight$1, itemsHeight: getItemsHeight, itemClassName: b$
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1471
|
+
React.createElement("div", { className: className, ref: tooltipRef, onMouseEnter: onTooltipMouseEnter, onMouseLeave: onTooltipMouseLeave },
|
|
1472
|
+
React.createElement(uikit.List, { id: compositeId, ref: ref, items: items, selectedItemIndex: type === 'menu' ? getSelectedItemIndex$1(items) : undefined, itemHeight: getItemHeight$1, itemsHeight: getItemsHeight, itemClassName: b$r('root-menu-item'), virtualized: false, filterable: false, sortable: enableSorting, onSortEnd: enableSorting ? handleFirstLevelSortEnd : undefined, renderItem: (item, _isItemActive, itemIndex) => {
|
|
1473
|
+
var _a;
|
|
1474
|
+
if (!item.groupId) {
|
|
1475
|
+
return (React.createElement(Item$1, Object.assign({}, item, { className: b$r('menu-item', { compact }), compact: compact, onMouseEnter: onMouseEnterByIndex(itemIndex), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(itemIndex, item.onItemClick) })));
|
|
1476
|
+
}
|
|
1477
|
+
const isCollapsible = Boolean('collapsible' in item && item.collapsible);
|
|
1478
|
+
const isCollapsed = Boolean('isCollapsed' in item && item.isCollapsed);
|
|
1479
|
+
const groupListItems = ('items' in item &&
|
|
1480
|
+
((_a = item.items) === null || _a === undefined ? undefined : _a.filter((groupItem) => !groupItem.hidden))) ||
|
|
1481
|
+
[];
|
|
1482
|
+
const hasHeader = item.title || item.icon || isCollapsible;
|
|
1483
|
+
const isUngrouped = item.id === UNGROUPED_ID;
|
|
1484
|
+
const isGroupHovered = hoveredGroupId === item.id;
|
|
1485
|
+
let groupIcon = item.icon;
|
|
1486
|
+
if (!isCollapsed) {
|
|
1487
|
+
groupIcon = icons.ChevronDown;
|
|
1488
|
+
}
|
|
1489
|
+
else if (isGroupHovered) {
|
|
1490
|
+
groupIcon = icons.ChevronRight;
|
|
1491
|
+
}
|
|
1492
|
+
return (React.createElement("div", { className: b$r('menu-group', { expanded: !isCollapsed }) },
|
|
1493
|
+
hasHeader && !isUngrouped && (React.createElement(Item$1, Object.assign({}, item, { className: b$r('menu-group-header', { collapsed: isCollapsed }), icon: groupIcon, compact: compact, onMouseEnter: () => {
|
|
1494
|
+
setHoveredGroupId(item.id);
|
|
1495
|
+
}, onMouseLeave: () => {
|
|
1496
|
+
setHoveredGroupId(null);
|
|
1497
|
+
}, onItemClick: (clickedItem) => {
|
|
1498
|
+
onToggleGroupCollapsed === null || onToggleGroupCollapsed === undefined ? undefined : onToggleGroupCollapsed(clickedItem.id);
|
|
1499
|
+
} }))),
|
|
1500
|
+
!isCollapsed && (React.createElement(uikit.List, { items: groupListItems, sortable: enableSorting, onSortEnd: handleSecondLevelSortEnd(item.id), virtualized: false, filterable: false, itemClassName: b$r('menu-group-item'), itemHeight: getItemHeight$1, itemsHeight: getItemsHeight, renderItem: (nestedItem, _isNestedItemActive, nestedItemIndex) => {
|
|
1501
|
+
return renderNestedItem(nestedItem, itemIndex, nestedItemIndex, item.id);
|
|
1502
|
+
} }))));
|
|
1845
1503
|
} })),
|
|
1846
1504
|
type === 'menu' && multipleTooltip && (React.createElement(MultipleTooltip, { open: compact && multipleTooltipActive, anchorRef: tooltipRef, placement: ['right-start'], items: items }))));
|
|
1847
1505
|
};
|
|
1848
|
-
const CompositeBar = ({ type, items,
|
|
1849
|
-
|
|
1506
|
+
const CompositeBar = ({ type, items, onItemClick, onMoreClick, onToggleGroupCollapsed, multipleTooltip = false, compact, compositeId, className, }) => {
|
|
1507
|
+
const visibleItems = items === null || items === undefined ? undefined : items.filter((item) => !item.hidden);
|
|
1508
|
+
if (!visibleItems || visibleItems.length === 0) {
|
|
1850
1509
|
return null;
|
|
1851
1510
|
}
|
|
1852
1511
|
let node;
|
|
1853
1512
|
if (type === 'menu') {
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
node = (React.createElement("div", { className: b$p({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React.createElement(AutoSizer, null, (size) => {
|
|
1857
|
-
const width = Number.isNaN(size.width) ? 0 : size.width;
|
|
1858
|
-
const height = Number.isNaN(size.height) ? 0 : size.height;
|
|
1859
|
-
const { listItems, collapseItems } = getAutosizeListItems(items, height, collapseItem);
|
|
1860
|
-
return (React.createElement("div", { style: { width, height } },
|
|
1861
|
-
React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", items: listItems, onItemClick: onItemClick, onMoreClick: onMoreClick, collapseItems: collapseItems, multipleTooltip: multipleTooltip })));
|
|
1862
|
-
}))));
|
|
1513
|
+
node = (React.createElement("div", { className: b$r({ scrollable: true }, className) },
|
|
1514
|
+
React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", compact: compact, items: visibleItems, onItemClick: onItemClick, onMoreClick: onMoreClick, multipleTooltip: multipleTooltip, onToggleGroupCollapsed: onToggleGroupCollapsed })));
|
|
1863
1515
|
}
|
|
1864
1516
|
else {
|
|
1865
|
-
node = (React.createElement("div", { className: b$
|
|
1866
|
-
React.createElement(CompositeBarView, { type: "subheader", items:
|
|
1517
|
+
node = (React.createElement("div", { className: b$r({ subheader: true }, className) },
|
|
1518
|
+
React.createElement(CompositeBarView, { type: "subheader", compact: compact, items: visibleItems, onItemClick: onItemClick })));
|
|
1867
1519
|
}
|
|
1868
1520
|
return React.createElement(MultipleTooltipProvider, null, node);
|
|
1869
1521
|
};
|
|
1870
1522
|
|
|
1871
|
-
var
|
|
1872
|
-
|
|
1873
|
-
var label_more$1 = "More";
|
|
1874
|
-
var en$3 = {
|
|
1875
|
-
button_collapse: button_collapse$1,
|
|
1876
|
-
button_expand: button_expand$1,
|
|
1877
|
-
label_more: label_more$1
|
|
1878
|
-
};
|
|
1879
|
-
|
|
1880
|
-
var button_collapse = "Свернуть";
|
|
1881
|
-
var button_expand = "Развернуть";
|
|
1882
|
-
var label_more = "Ещё";
|
|
1883
|
-
var ru$3 = {
|
|
1884
|
-
button_collapse: button_collapse,
|
|
1885
|
-
button_expand: button_expand,
|
|
1886
|
-
label_more: label_more
|
|
1887
|
-
};
|
|
1888
|
-
|
|
1889
|
-
const COMPONENT$3 = 'AsideHeader';
|
|
1890
|
-
var i18n$3 = i18n$5.addComponentKeysets({ en: en$3, ru: ru$3 }, `${NAMESPACE}${COMPONENT$3}`);
|
|
1891
|
-
|
|
1892
|
-
var _path$1;
|
|
1893
|
-
function _extends$2() { return _extends$2 = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$2.apply(null, arguments); }
|
|
1894
|
-
var SvgControlMenuButton = function SvgControlMenuButton(props) {
|
|
1895
|
-
return /*#__PURE__*/React__namespace.createElement("svg", _extends$2({
|
|
1896
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1897
|
-
width: 8,
|
|
1898
|
-
height: 8,
|
|
1899
|
-
fill: "currentColor",
|
|
1900
|
-
viewBox: "0 0 8 8"
|
|
1901
|
-
}, props), _path$1 || (_path$1 = /*#__PURE__*/React__namespace.createElement("path", {
|
|
1902
|
-
d: "m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45"
|
|
1903
|
-
})));
|
|
1904
|
-
};
|
|
1905
|
-
|
|
1906
|
-
var css_248z$n = ".gn-collapse-button{--_--focus-outline-color:var(--g-color-line-focus);--_--focus-outline-offset:0;align-items:center;background:none;border:none;border-top:1px solid var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));box-sizing:content-box;color:inherit;cursor:pointer;display:flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);justify-content:center;min-height:20px;outline:none;padding:0;position:relative;width:100%}.gn-collapse-button:before{content:\"\";inset:0 2px 2px;position:absolute;z-index:-1}.gn-collapse-button:focus-visible:before{outline:var(--_--focus-outline-color) solid 2px;outline-offset:var(--_--focus-outline-offset)}.gn-collapse-button:not(.gn-collapse-button_compact) .gn-collapse-button__icon{transform:rotate(180deg)}.gn-collapse-button:hover .gn-collapse-button__icon{color:var(--g-color-text-primary)}.gn-collapse-button__icon{color:var(--g-color-text-secondary)}";
|
|
1907
|
-
styleInject(css_248z$n);
|
|
1908
|
-
|
|
1909
|
-
const b$o = block('collapse-button');
|
|
1910
|
-
const CollapseButton = ({ className }) => {
|
|
1911
|
-
const { onChangeCompact, compact, expandTitle, collapseTitle, collapseButtonWrapper } = useAsideHeaderInnerContext();
|
|
1912
|
-
const onCollapseButtonClick = React.useCallback(() => {
|
|
1913
|
-
onChangeCompact === null || onChangeCompact === undefined ? undefined : onChangeCompact(!compact);
|
|
1914
|
-
}, [compact, onChangeCompact]);
|
|
1915
|
-
const buttonTitle = compact
|
|
1916
|
-
? expandTitle || i18n$3('button_expand')
|
|
1917
|
-
: collapseTitle || i18n$3('button_collapse');
|
|
1918
|
-
const defaultButton = (React.createElement("button", { className: b$o({ compact }, className), onClick: onCollapseButtonClick, title: buttonTitle },
|
|
1919
|
-
React.createElement(uikit.Icon, { data: SvgControlMenuButton, className: b$o('icon'), width: "16", height: "10" })));
|
|
1920
|
-
if (collapseButtonWrapper) {
|
|
1921
|
-
return collapseButtonWrapper(defaultButton, { compact, onChangeCompact });
|
|
1922
|
-
}
|
|
1923
|
-
return defaultButton;
|
|
1924
|
-
};
|
|
1925
|
-
|
|
1926
|
-
var css_248z$m = ".gn-logo{height:40px}.gn-logo,.gn-logo__btn-logo{align-items:center;display:flex}.gn-logo__btn-logo{cursor:pointer;flex-shrink:0;justify-content:flex-start;overflow-wrap:break-word;width:100%;word-break:break-word}.gn-logo__btn-logo,.gn-logo__btn-logo:active,.gn-logo__btn-logo:focus,.gn-logo__btn-logo:hover,.gn-logo__btn-logo:visited{color:inherit;outline:none;text-decoration:none}.gn-logo__btn-logo:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-logo__logo-icon-place{align-items:center;display:flex;flex-shrink:0;justify-content:center;width:36px}";
|
|
1927
|
-
styleInject(css_248z$m);
|
|
1523
|
+
var css_248z$p = ".gn-logo{height:40px}.gn-logo,.gn-logo__btn-logo{align-items:center;display:flex}.gn-logo__btn-logo{cursor:pointer;flex-shrink:0;justify-content:flex-start;overflow-wrap:break-word;width:100%;word-break:break-word}.gn-logo__btn-logo,.gn-logo__btn-logo:active,.gn-logo__btn-logo:focus,.gn-logo__btn-logo:hover,.gn-logo__btn-logo:visited{color:inherit;outline:none;text-decoration:none}.gn-logo__btn-logo:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-logo__logo{margin:0 var(--g-spacing-4) 0 var(--g-spacing-2)}.gn-logo__logo-icon-place{align-items:center;display:flex;flex-shrink:0;justify-content:center;width:36px}";
|
|
1524
|
+
styleInject(css_248z$p);
|
|
1928
1525
|
|
|
1929
|
-
const b$
|
|
1526
|
+
const b$q = block('logo');
|
|
1930
1527
|
const Logo = ({ text, icon, iconSrc, iconClassName, iconPlaceClassName, iconSize = 24, textSize = 15, href, target = '_self', wrapper, onClick, compact, className, buttonClassName, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, }) => {
|
|
1931
1528
|
const hasWrapper = typeof wrapper === 'function';
|
|
1932
1529
|
let buttonIcon;
|
|
@@ -1942,7 +1539,7 @@ const Logo = ({ text, icon, iconSrc, iconClassName, iconPlaceClassName, iconSize
|
|
|
1942
1539
|
logo = text();
|
|
1943
1540
|
}
|
|
1944
1541
|
else {
|
|
1945
|
-
logo = (React.createElement("div", { className: b$
|
|
1542
|
+
logo = (React.createElement("div", { className: b$q('logo'), style: { fontSize: textSize } }, text));
|
|
1946
1543
|
}
|
|
1947
1544
|
const _a = href
|
|
1948
1545
|
? {
|
|
@@ -1954,10 +1551,10 @@ const Logo = ({ text, icon, iconSrc, iconClassName, iconPlaceClassName, iconSize
|
|
|
1954
1551
|
'aria-labelledby': ariaLabelledby,
|
|
1955
1552
|
}
|
|
1956
1553
|
: { tag: 'span' }, { tag: Button } = _a, buttonProps = __rest(_a, ["tag"]);
|
|
1957
|
-
const button = (React.createElement(Button, Object.assign({}, buttonProps, { className: b$
|
|
1958
|
-
React.createElement("span", { className: b$
|
|
1554
|
+
const button = (React.createElement(Button, Object.assign({}, buttonProps, { className: b$q('btn-logo', buttonClassName), onClick: onClick }),
|
|
1555
|
+
React.createElement("span", { className: b$q('logo-icon-place', iconPlaceClassName) }, buttonIcon),
|
|
1959
1556
|
!compact && logo));
|
|
1960
|
-
return (React.createElement("div", { className: b$
|
|
1557
|
+
return (React.createElement("div", { className: b$q(null, className) }, hasWrapper ? wrapper(button, Boolean(compact)) : button));
|
|
1961
1558
|
};
|
|
1962
1559
|
|
|
1963
1560
|
var _path;
|
|
@@ -1977,17 +1574,18 @@ var SvgDividerCollapsed = function SvgDividerCollapsed(props) {
|
|
|
1977
1574
|
const DEFAULT_SUBHEADER_ITEMS = [];
|
|
1978
1575
|
const HEADER_COMPOSITE_ID = 'gravity-ui/navigation-header-composite-bar';
|
|
1979
1576
|
const Header = () => {
|
|
1980
|
-
const { logo, onItemClick, onClosePanel, headerDecoration, subheaderItems } = useAsideHeaderInnerContext();
|
|
1981
|
-
const {
|
|
1577
|
+
const { logo, compact, onItemClick, onClosePanel, headerDecoration, subheaderItems } = useAsideHeaderInnerContext();
|
|
1578
|
+
const { isExpanded } = useAsideHeaderInnerContext();
|
|
1579
|
+
const items = useGroupedMenuItems(subheaderItems || DEFAULT_SUBHEADER_ITEMS);
|
|
1982
1580
|
const onLogoClick = React.useCallback((event) => {
|
|
1983
1581
|
var _a;
|
|
1984
1582
|
onClosePanel === null || onClosePanel === undefined ? undefined : onClosePanel();
|
|
1985
1583
|
(_a = logo === null || logo === undefined ? undefined : logo.onClick) === null || _a === undefined ? undefined : _a.call(logo, event);
|
|
1986
1584
|
}, [onClosePanel, logo]);
|
|
1987
|
-
return (React.createElement("div", { className: b$
|
|
1988
|
-
logo && (React.createElement(Logo, Object.assign({}, logo, { onClick: onLogoClick, compact:
|
|
1989
|
-
React.createElement(CompositeBar, { compositeId: HEADER_COMPOSITE_ID, type: "subheader",
|
|
1990
|
-
headerDecoration && (React.createElement(uikit.Icon, { data: SvgDividerCollapsed, className: b$
|
|
1585
|
+
return (React.createElement("div", { className: b$w('header', { ['with-decoration']: headerDecoration }) },
|
|
1586
|
+
logo && (React.createElement(Logo, Object.assign({}, logo, { onClick: onLogoClick, compact: !isExpanded, buttonClassName: b$w('logo-button'), iconPlaceClassName: b$w('logo-icon-place') }))),
|
|
1587
|
+
React.createElement(CompositeBar, { compositeId: HEADER_COMPOSITE_ID, type: "subheader", compact: compact, items: items, onItemClick: onItemClick }),
|
|
1588
|
+
headerDecoration && (React.createElement(uikit.Icon, { data: SvgDividerCollapsed, className: b$w('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: HEADER_DIVIDER_HEIGHT }))));
|
|
1991
1589
|
};
|
|
1992
1590
|
|
|
1993
1591
|
// Avoid Chrome DevTools blue warning.
|
|
@@ -1999,12 +1597,20 @@ function getPlatform() {
|
|
|
1999
1597
|
return navigator.platform;
|
|
2000
1598
|
}
|
|
2001
1599
|
|
|
2002
|
-
var
|
|
1600
|
+
var isClient = typeof document !== 'undefined';
|
|
1601
|
+
|
|
1602
|
+
var noop$1 = function noop() {};
|
|
1603
|
+
var index = isClient ? React.useLayoutEffect : noop$1;
|
|
1604
|
+
|
|
2003
1605
|
if (process.env.NODE_ENV !== "production") ;
|
|
2004
1606
|
|
|
2005
1607
|
let lockCount = 0;
|
|
1608
|
+
const scrollbarProperty = '--floating-ui-scrollbar-width';
|
|
2006
1609
|
function enableScrollLock() {
|
|
2007
|
-
const
|
|
1610
|
+
const platform = getPlatform();
|
|
1611
|
+
const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||
|
|
1612
|
+
// iPads can claim to be MacIntel
|
|
1613
|
+
platform === 'MacIntel' && navigator.maxTouchPoints > 1;
|
|
2008
1614
|
const bodyStyle = document.body.style;
|
|
2009
1615
|
// RTL <body> scrollbar
|
|
2010
1616
|
const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;
|
|
@@ -2013,6 +1619,7 @@ function enableScrollLock() {
|
|
|
2013
1619
|
const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;
|
|
2014
1620
|
const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;
|
|
2015
1621
|
bodyStyle.overflow = 'hidden';
|
|
1622
|
+
bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + "px");
|
|
2016
1623
|
if (scrollbarWidth) {
|
|
2017
1624
|
bodyStyle[paddingProp] = scrollbarWidth + "px";
|
|
2018
1625
|
}
|
|
@@ -2036,6 +1643,7 @@ function enableScrollLock() {
|
|
|
2036
1643
|
overflow: '',
|
|
2037
1644
|
[paddingProp]: ''
|
|
2038
1645
|
});
|
|
1646
|
+
bodyStyle.removeProperty(scrollbarProperty);
|
|
2039
1647
|
if (isIOS) {
|
|
2040
1648
|
Object.assign(bodyStyle, {
|
|
2041
1649
|
position: '',
|
|
@@ -2102,7 +1710,7 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
2102
1710
|
if (null == r) return {};
|
|
2103
1711
|
var t = {};
|
|
2104
1712
|
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
2105
|
-
if (e.indexOf(n)
|
|
1713
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
2106
1714
|
t[n] = r[n];
|
|
2107
1715
|
}
|
|
2108
1716
|
return t;
|
|
@@ -4500,10 +4108,10 @@ function useResizableDrawerItem(params) {
|
|
|
4500
4108
|
return { resizedWidth: displayWidth, resizerHandlers: handlers, isResizing };
|
|
4501
4109
|
}
|
|
4502
4110
|
|
|
4503
|
-
var css_248z$
|
|
4504
|
-
styleInject(css_248z$
|
|
4111
|
+
var css_248z$o = ".gn-drawer{--_--item-shadow-default:0 1px 5px 0 var(--g-color-sfx-shadow);--_--item-position:fixed;--_--resizer-width:8px;--_--resizer-color:var(--g-color-base-generic);--_--resizer-handle-color:var(--g-color-line-generic);--_--resizer-handle-color-hover:var(--g-color-line-generic-hover);--_--resizer-z-index:100;--_--veil-background-color:var(--g-color-sfx-veil);pointer-events:none;z-index:var(--gn-drawer-z-index)}.gn-drawer_hideVeil{--_--item-shadow:var(--gn-drawer-item-shadow,var(--_--item-shadow-default))}.gn-drawer__item{background-color:var(--g-color-base-background);bottom:0;box-shadow:var(--_--item-shadow,none);left:var(--gn-aside-header-size,0);pointer-events:auto;position:var(--gn-drawer-item-position,var(--_--item-position));top:var(--gn-top-alert-height,0);will-change:transform;z-index:var(--gn-drawer-item-z-index)}.gn-drawer__item_direction_right{left:auto;right:0}.gn-drawer__item_direction_top{bottom:auto;height:100%;right:0}.gn-drawer__item_direction_bottom{height:100%;right:0;top:auto}.gn-drawer__item-transition-enter{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-enter{transform:translate(100%)}.gn-drawer__item-transition_direction_top-enter{transform:translateY(-100%)}.gn-drawer__item-transition_direction_bottom-enter{transform:translateY(100%)}.gn-drawer__item-transition-enter-active,.gn-drawer__item-transition_direction_bottom-enter-active,.gn-drawer__item-transition_direction_right-enter-active,.gn-drawer__item-transition_direction_top-enter-active{transform:translate(0);transition:transform .3s}.gn-drawer__item-transition-enter-done,.gn-drawer__item-transition_direction_bottom-enter-done,.gn-drawer__item-transition_direction_right-enter-done,.gn-drawer__item-transition_direction_top-enter-done{filter:blur(0);transform:translateZ(0)}.gn-drawer__item-transition-exit,.gn-drawer__item-transition_direction_bottom-exit,.gn-drawer__item-transition_direction_right-exit,.gn-drawer__item-transition_direction_top-exit{transform:translate(0)}.gn-drawer__item-transition-exit-active,.gn-drawer__item-transition_direction_bottom-exit-active,.gn-drawer__item-transition_direction_right-exit-active,.gn-drawer__item-transition_direction_top-exit-active{transition:transform .3s}.gn-drawer__item-transition-exit-active{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-exit-active{transform:translate(100%)}.gn-drawer__item-transition_direction_top-exit-active{transform:translateY(-100%)}.gn-drawer__item-transition_direction_bottom-exit-active{transform:translateY(100%)}.gn-drawer__item-transition-exit-done,.gn-drawer__item-transition_direction_bottom-exit-done,.gn-drawer__item-transition_direction_right-exit-done,.gn-drawer__item-transition_direction_top-exit-done,.gn-drawer__item_hidden{visibility:hidden}.gn-drawer__veil{background-color:var(--gn-drawer-veil-background-color,var(--_--veil-background-color));inset:0;pointer-events:auto;position:absolute;z-index:var(--gn-drawer-veil-z-index)}.gn-drawer__veil_hidden{display:none}.gn-drawer__veil-transition-enter{opacity:0}.gn-drawer__veil-transition-enter-active{opacity:1;transition:opacity .3s}.gn-drawer__veil-transition-exit{opacity:1}.gn-drawer__veil-transition-exit-active{opacity:0;transition:opacity .3s}.gn-drawer__veil-transition-exit-done{visibility:hidden}.gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color,var(--_--resizer-handle-color));border-radius:2px;height:28px;width:2px}.gn-drawer__resizer-handle_direction_bottom,.gn-drawer__resizer-handle_direction_top{height:2px;width:28px}.gn-drawer__resizer{align-items:center;background:var(--gn-drawer-item-resizer-color,var(--_--resizer-color));cursor:col-resize;display:flex;flex-direction:column;height:100%;justify-content:center;position:absolute;top:0;width:var(--gn-drawer-item-resizer-width,var(--_--resizer-width));z-index:var(--gn-drawer-item-resizer-z-index,var(--_--resizer-z-index))}.gn-drawer__resizer_direction_right{left:0;top:var(--gn-top-alert-height,0)}.gn-drawer__resizer_direction_left{right:0;top:var(--gn-top-alert-height,0)}.gn-drawer__resizer_direction_top{bottom:0;left:0;top:unset}.gn-drawer__resizer_direction_bottom{left:0;top:0}.gn-drawer__resizer_direction_bottom,.gn-drawer__resizer_direction_top{cursor:row-resize;height:var(--gn-drawer-item-resizer-width,var(--_--resizer-width));width:100%}.gn-drawer__resizer:hover .gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color-hover,var(--_--resizer-handle-color-hover))}";
|
|
4112
|
+
styleInject(css_248z$o);
|
|
4505
4113
|
|
|
4506
|
-
const b$
|
|
4114
|
+
const b$p = block('drawer');
|
|
4507
4115
|
const TIMEOUT = 300;
|
|
4508
4116
|
const DrawerItem = React.forwardRef(function DrawerItem(props, ref) {
|
|
4509
4117
|
const { visible, content, children, direction = 'left', className, resizable, width, minResizeWidth, maxResizeWidth, onResizeStart, onResizeContinue, onResize, keepMounted = false, style = {}, } = props;
|
|
@@ -4535,10 +4143,10 @@ const DrawerItem = React.forwardRef(function DrawerItem(props, ref) {
|
|
|
4535
4143
|
React.useEffect(() => {
|
|
4536
4144
|
setInitialRender(true);
|
|
4537
4145
|
}, [direction]);
|
|
4538
|
-
const resizerElement = resizable ? (React.createElement("div", Object.assign({ className: b$
|
|
4539
|
-
React.createElement("div", { className: b$
|
|
4540
|
-
return (React.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, mountOnEnter: !keepMounted, unmountOnExit: !keepMounted, classNames: b$
|
|
4541
|
-
React.createElement("div", { ref: handleRef, className: b$
|
|
4146
|
+
const resizerElement = resizable ? (React.createElement("div", Object.assign({ className: b$p('resizer', { direction }) }, resizerHandlers),
|
|
4147
|
+
React.createElement("div", { className: b$p('resizer-handle', { direction }) }))) : null;
|
|
4148
|
+
return (React.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, mountOnEnter: !keepMounted, unmountOnExit: !keepMounted, classNames: b$p('item-transition', { direction: cssDirection }), nodeRef: itemRef, onEnter: () => setInitialRender(false), onExit: () => setInitialRender(false) },
|
|
4149
|
+
React.createElement("div", { ref: handleRef, className: b$p('item', {
|
|
4542
4150
|
direction: cssDirection,
|
|
4543
4151
|
hidden: isInitialRender && !visible,
|
|
4544
4152
|
resize: isResizing,
|
|
@@ -4574,9 +4182,9 @@ const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEsca
|
|
|
4574
4182
|
useScrollLock(shouldApplyScrollLock);
|
|
4575
4183
|
return (React.createElement(Transition, { in: someItemVisible, timeout: { enter: 0, exit: TIMEOUT }, mountOnEnter: !keepMounted, unmountOnExit: !keepMounted, nodeRef: containerRef }, (state) => {
|
|
4576
4184
|
const childrenVisible = someItemVisible && state === 'entered';
|
|
4577
|
-
const content = (React.createElement("div", { ref: containerRef, className: b$
|
|
4578
|
-
React.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$
|
|
4579
|
-
React.createElement("div", { ref: veilRef, className: b$
|
|
4185
|
+
const content = (React.createElement("div", { ref: containerRef, className: b$p({ hideVeil }, className), style: style },
|
|
4186
|
+
React.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$p('veil-transition'), nodeRef: veilRef },
|
|
4187
|
+
React.createElement("div", { ref: veilRef, className: b$p('veil', { hidden: hideVeil }, veilClassName), onClick: onVeilClick })),
|
|
4580
4188
|
React.Children.map(children, (child) => {
|
|
4581
4189
|
if (React.isValidElement(child) &&
|
|
4582
4190
|
child.type === DrawerItem) {
|
|
@@ -4598,26 +4206,27 @@ const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEsca
|
|
|
4598
4206
|
};
|
|
4599
4207
|
|
|
4600
4208
|
const Panels = () => {
|
|
4601
|
-
const { panelItems,
|
|
4602
|
-
return panelItems ? (React.createElement(Drawer, { className: b$
|
|
4209
|
+
const { panelItems, size, onClosePanel } = useAsideHeaderInnerContext();
|
|
4210
|
+
return panelItems ? (React.createElement(Drawer, { className: b$w('panels'), onVeilClick: onClosePanel, onEscape: onClosePanel, style: { left: size } }, panelItems.map((item) => (React.createElement(DrawerItem, Object.assign({ key: item.id, className: b$w('panel') }, item)))))) : null;
|
|
4603
4211
|
};
|
|
4604
4212
|
|
|
4605
4213
|
const MENU_ITEMS_COMPOSITE_ID = 'gravity-ui/navigation-menu-items-composite-bar';
|
|
4606
4214
|
const FirstPanel = React.forwardRef((_props, ref) => {
|
|
4607
|
-
const { size, onItemClick, headerDecoration, multipleTooltip,
|
|
4608
|
-
const
|
|
4215
|
+
const { size, onItemClick, headerDecoration, multipleTooltip, onMenuMoreClick, renderFooter, onToggleGroupCollapsed, compact, customBackground, customBackgroundClassName, className, hideCollapseButton, menuItems, menuGroups, qa, onMouseEnter, onMouseLeave, isExpanded, } = useAsideHeaderInnerContext();
|
|
4216
|
+
const flatListItems = useGroupedMenuItems(menuItems, menuGroups);
|
|
4609
4217
|
const asideRef = React.useRef(null);
|
|
4610
4218
|
React.useEffect(() => {
|
|
4611
4219
|
uikit.setRef(ref, asideRef.current);
|
|
4612
4220
|
}, [ref]);
|
|
4221
|
+
const isExpandedByHover = compact && isExpanded;
|
|
4613
4222
|
return (React.createElement(React.Fragment, null,
|
|
4614
|
-
React.createElement("div", { className: b$
|
|
4615
|
-
React.createElement("div", { className: b$
|
|
4616
|
-
customBackground && (React.createElement("div", { className: b$
|
|
4617
|
-
React.createElement("div", { className: b$
|
|
4223
|
+
React.createElement("div", { className: b$w('aside', { 'expanded-by-hover': isExpandedByHover }, className), style: { width: size }, "data-qa": qa, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave },
|
|
4224
|
+
React.createElement("div", { className: b$w('aside-popup-anchor'), ref: asideRef }),
|
|
4225
|
+
customBackground && (React.createElement("div", { className: b$w('aside-custom-background', customBackgroundClassName) }, customBackground)),
|
|
4226
|
+
React.createElement("div", { className: b$w('aside-content', { ['with-decoration']: headerDecoration }) },
|
|
4618
4227
|
React.createElement(Header, null),
|
|
4619
|
-
(
|
|
4620
|
-
React.createElement("div", { className: b$
|
|
4228
|
+
(flatListItems === null || flatListItems === undefined ? undefined : flatListItems.length) ? (React.createElement(CompositeBar, { compositeId: MENU_ITEMS_COMPOSITE_ID, className: b$w('menu-items'), compact: compact, type: "menu", items: flatListItems, onItemClick: onItemClick, onMoreClick: onMenuMoreClick, onToggleGroupCollapsed: onToggleGroupCollapsed, multipleTooltip: multipleTooltip })) : (React.createElement("div", { className: b$w('menu-items') })),
|
|
4229
|
+
React.createElement("div", { className: b$w('footer') }, renderFooter === null || renderFooter === undefined ? undefined : renderFooter({
|
|
4621
4230
|
size,
|
|
4622
4231
|
compact: Boolean(compact),
|
|
4623
4232
|
asideRef,
|
|
@@ -4627,6 +4236,242 @@ const FirstPanel = React.forwardRef((_props, ref) => {
|
|
|
4627
4236
|
});
|
|
4628
4237
|
FirstPanel.displayName = 'FirstPanel';
|
|
4629
4238
|
|
|
4239
|
+
var css_248z$n = ".gn-all-pages-group-header{height:40px;padding:0 var(--g-spacing-6)}";
|
|
4240
|
+
styleInject(css_248z$n);
|
|
4241
|
+
|
|
4242
|
+
const b$o = block('all-pages-group-header');
|
|
4243
|
+
const AllPagesGroupHeader = ({ onToggleHidden, editMode, id, icon, title, hidden, isDisabled, }) => {
|
|
4244
|
+
const onHideButtonClick = React.useCallback((e) => {
|
|
4245
|
+
e.stopPropagation();
|
|
4246
|
+
e.preventDefault();
|
|
4247
|
+
onToggleHidden === null || onToggleHidden === undefined ? undefined : onToggleHidden(id);
|
|
4248
|
+
}, [id, onToggleHidden]);
|
|
4249
|
+
return (React.createElement(uikit.Flex, { className: b$o(), gap: "2", alignItems: "center", justifyContent: "space-between" },
|
|
4250
|
+
React.createElement(uikit.Flex, { gap: "2", alignItems: "center" },
|
|
4251
|
+
icon && React.createElement(uikit.Icon, { data: icon, size: 16 }),
|
|
4252
|
+
React.createElement(uikit.Text, { className: b$o('title'), variant: "body-1", color: "secondary" }, title)),
|
|
4253
|
+
editMode && id !== UNGROUPED_ID && (React.createElement(uikit.Button, { onClick: onHideButtonClick, disabled: isDisabled, view: hidden ? 'flat-secondary' : 'flat-action' },
|
|
4254
|
+
React.createElement(uikit.Button.Icon, null, hidden ? React.createElement(icons.Pin, null) : React.createElement(icons.PinFill, null))))));
|
|
4255
|
+
};
|
|
4256
|
+
|
|
4257
|
+
var css_248z$m = ".gn-all-pages-list-item{align-items:center;background:none;border:none;color:inherit;column-gap:var(--g-spacing-4);cursor:pointer;display:flex;font:inherit;height:40px;outline:inherit;padding:0 var(--g-spacing-6);text-decoration:inherit;width:100%}.gn-all-pages-list-item:focus-visible{outline:solid var(--g-color-line-misc);outline-offset:-2px}.gn-all-pages-list-item__text{flex:1;text-align:initial}.gn-all-pages-list-item__icon{color:var(--g-color-text-misc)}.gn-all-pages-list-item_edit-mode{padding:0 0 0 var(--g-spacing-4)}";
|
|
4258
|
+
styleInject(css_248z$m);
|
|
4259
|
+
|
|
4260
|
+
const b$n = block('all-pages-list-item');
|
|
4261
|
+
const AllPagesListItem = (props) => {
|
|
4262
|
+
const { item, editMode, onToggle } = props;
|
|
4263
|
+
const ref = React.useRef(null);
|
|
4264
|
+
const onPinButtonClick = React.useCallback((e) => {
|
|
4265
|
+
e.stopPropagation();
|
|
4266
|
+
e.preventDefault();
|
|
4267
|
+
onToggle();
|
|
4268
|
+
}, [onToggle]);
|
|
4269
|
+
const onItemClick = (e) => {
|
|
4270
|
+
if (editMode) {
|
|
4271
|
+
e.stopPropagation();
|
|
4272
|
+
e.preventDefault();
|
|
4273
|
+
}
|
|
4274
|
+
};
|
|
4275
|
+
const [Tag, tagProps] = item.href ? ['a', { href: item.href }] : ['button', {}];
|
|
4276
|
+
const makeNode = React.useCallback((params) => {
|
|
4277
|
+
return (React.createElement(Tag, Object.assign({}, tagProps, { className: b$n(), onClick: onItemClick, ref: ref }),
|
|
4278
|
+
params.icon,
|
|
4279
|
+
React.createElement("span", { className: b$n('text') }, params.title),
|
|
4280
|
+
editMode && !item.preventUserRemoving && (React.createElement(uikit.Button, { onClick: onPinButtonClick, view: item.hidden ? 'flat-secondary' : 'flat-action' },
|
|
4281
|
+
React.createElement(uikit.Button.Icon, null, item.hidden ? React.createElement(icons.Pin, null) : React.createElement(icons.PinFill, null))))));
|
|
4282
|
+
}, [Tag, tagProps, onItemClick, editMode, item, onPinButtonClick]);
|
|
4283
|
+
const iconNode = item.icon ? (React.createElement(uikit.Icon, { className: b$n('icon'), data: item.icon, size: item.iconSize })) : null;
|
|
4284
|
+
const titleNode = item.title;
|
|
4285
|
+
const params = { icon: iconNode, title: titleNode };
|
|
4286
|
+
const opts = { collapsed: false, compact: false, item, ref };
|
|
4287
|
+
if (typeof item.itemWrapper === 'function') {
|
|
4288
|
+
return item.itemWrapper(params, makeNode, opts);
|
|
4289
|
+
}
|
|
4290
|
+
return makeNode(params);
|
|
4291
|
+
};
|
|
4292
|
+
|
|
4293
|
+
function buildExpandedFromFlatList(flatList) {
|
|
4294
|
+
const expanded = [];
|
|
4295
|
+
flatList.forEach((item) => {
|
|
4296
|
+
if ('items' in item && item.items && item.items.length > 0) {
|
|
4297
|
+
expanded.push(...item.items);
|
|
4298
|
+
}
|
|
4299
|
+
else {
|
|
4300
|
+
expanded.push(item);
|
|
4301
|
+
}
|
|
4302
|
+
});
|
|
4303
|
+
return expanded;
|
|
4304
|
+
}
|
|
4305
|
+
|
|
4306
|
+
function getRealIndexInExpandedMenu(flatListIndex, flatList) {
|
|
4307
|
+
let realIndex = 0;
|
|
4308
|
+
for (let i = 0; i < flatListIndex; i++) {
|
|
4309
|
+
const item = flatList[i];
|
|
4310
|
+
if ('items' in item && item.items && item.items.length > 0) {
|
|
4311
|
+
realIndex += item.items.length;
|
|
4312
|
+
}
|
|
4313
|
+
else {
|
|
4314
|
+
realIndex += 1;
|
|
4315
|
+
}
|
|
4316
|
+
}
|
|
4317
|
+
return realIndex;
|
|
4318
|
+
}
|
|
4319
|
+
function getRealIndexInGroup(groupIndex, itemIndexInGroup, flatList) {
|
|
4320
|
+
const groupStartIndex = getRealIndexInExpandedMenu(groupIndex, flatList);
|
|
4321
|
+
return groupStartIndex + itemIndexInGroup;
|
|
4322
|
+
}
|
|
4323
|
+
|
|
4324
|
+
function sortMenuItems(oldIndex, newIndex, items) {
|
|
4325
|
+
if (items[oldIndex] === undefined || items[newIndex] === undefined) {
|
|
4326
|
+
return buildExpandedFromFlatList(items);
|
|
4327
|
+
}
|
|
4328
|
+
const sortedItems = [...items];
|
|
4329
|
+
const [movedElement] = sortedItems.splice(oldIndex, 1);
|
|
4330
|
+
sortedItems.splice(newIndex, 0, movedElement);
|
|
4331
|
+
return buildExpandedFromFlatList(sortedItems);
|
|
4332
|
+
}
|
|
4333
|
+
|
|
4334
|
+
var css_248z$l = ".gn-all-pages-panel{box-sizing:border-box;height:100%;min-width:300px;padding:var(--g-spacing-4) var(--g-spacing-6)}.gn-all-pages-panel__content{flex:1;margin:0 calc(var(--g-spacing-6)*-1);overflow:auto}.gn-all-pages-panel__content_edit-mode{padding-left:var(--g-spacing-6)}.gn-all-pages-panel__category{padding:0 var(--g-spacing-6)}.gn-all-pages-panel__discoverable-feature-wrapper{display:flex}.gn-all-pages-panel__item_editMode{padding-left:var(--g-spacing-6)}.gn-all-pages-panel__groups-container{width:100%}.gn-all-pages-panel__groups-container:not(:last-child){border-bottom:1px solid var(--g-color-line-generic);padding-bottom:var(--g-spacing-2)}";
|
|
4335
|
+
styleInject(css_248z$l);
|
|
4336
|
+
|
|
4337
|
+
const b$m = block('all-pages-panel');
|
|
4338
|
+
const AllPagesPanel = (props) => {
|
|
4339
|
+
const { startEditIcon, onEditModeChanged, className } = props;
|
|
4340
|
+
const { defaultMenuItems, editMenuProps, menuItems, menuGroups, defaultMenuGroups, onMenuItemsChanged, onMenuGroupsChanged, } = useAsideHeaderInnerContext();
|
|
4341
|
+
const items = useGroupedMenuItems(menuItems, menuGroups, true);
|
|
4342
|
+
const menuItemsRef = React.useRef(items);
|
|
4343
|
+
menuItemsRef.current = items;
|
|
4344
|
+
const menuGroupsRef = React.useRef(menuGroups);
|
|
4345
|
+
menuGroupsRef.current = menuGroups;
|
|
4346
|
+
const [isEditMode, setIsEditMode] = React.useState(false);
|
|
4347
|
+
const toggleEditMode = React.useCallback(() => {
|
|
4348
|
+
setIsEditMode((prev) => !prev);
|
|
4349
|
+
}, []);
|
|
4350
|
+
React.useEffect(() => {
|
|
4351
|
+
var _a;
|
|
4352
|
+
onEditModeChanged === null || onEditModeChanged === undefined ? undefined : onEditModeChanged(isEditMode);
|
|
4353
|
+
if (isEditMode) {
|
|
4354
|
+
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onOpenEditMode) === null || _a === undefined ? undefined : _a.call(editMenuProps);
|
|
4355
|
+
}
|
|
4356
|
+
}, [isEditMode, onEditModeChanged, editMenuProps]);
|
|
4357
|
+
const onItemClick = React.useCallback((item, _index, _forwardKey, event) => {
|
|
4358
|
+
var _a;
|
|
4359
|
+
// TODO: make event an optional argument
|
|
4360
|
+
(_a = item.onItemClick) === null || _a === undefined ? undefined : _a.call(item, item, false, event);
|
|
4361
|
+
}, []);
|
|
4362
|
+
const onResetToDefaultClick = React.useCallback(() => {
|
|
4363
|
+
var _a;
|
|
4364
|
+
if (!onMenuItemsChanged) {
|
|
4365
|
+
return;
|
|
4366
|
+
}
|
|
4367
|
+
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onResetSettingsToDefault) === null || _a === undefined ? undefined : _a.call(editMenuProps);
|
|
4368
|
+
const originItems = defaultMenuItems === null || defaultMenuItems === undefined ? undefined : defaultMenuItems.filter(({ id }) => id !== ALL_PAGES_ID);
|
|
4369
|
+
if (originItems) {
|
|
4370
|
+
onMenuItemsChanged(originItems);
|
|
4371
|
+
}
|
|
4372
|
+
if (onMenuGroupsChanged && defaultMenuGroups) {
|
|
4373
|
+
onMenuGroupsChanged(defaultMenuGroups);
|
|
4374
|
+
}
|
|
4375
|
+
}, [
|
|
4376
|
+
onMenuItemsChanged,
|
|
4377
|
+
editMenuProps,
|
|
4378
|
+
defaultMenuItems,
|
|
4379
|
+
onMenuGroupsChanged,
|
|
4380
|
+
defaultMenuGroups,
|
|
4381
|
+
]);
|
|
4382
|
+
const toggleGroupVisibility = React.useCallback((groupId) => {
|
|
4383
|
+
if (!onMenuGroupsChanged) {
|
|
4384
|
+
return;
|
|
4385
|
+
}
|
|
4386
|
+
const currentGroups = menuGroupsRef.current || [];
|
|
4387
|
+
const updatedGroups = currentGroups.map((group) => {
|
|
4388
|
+
if (group.id === groupId) {
|
|
4389
|
+
return Object.assign(Object.assign({}, group), { hidden: !group.hidden });
|
|
4390
|
+
}
|
|
4391
|
+
return group;
|
|
4392
|
+
});
|
|
4393
|
+
onMenuGroupsChanged(updatedGroups);
|
|
4394
|
+
}, [onMenuGroupsChanged]);
|
|
4395
|
+
const toggleMenuItemsVisibility = React.useCallback((item) => {
|
|
4396
|
+
var _a;
|
|
4397
|
+
if (!onMenuItemsChanged) {
|
|
4398
|
+
return;
|
|
4399
|
+
}
|
|
4400
|
+
const changedItem = Object.assign(Object.assign({}, item), { hidden: !item.hidden });
|
|
4401
|
+
const originItems = menuItemsRef.current;
|
|
4402
|
+
const expandedItems = buildExpandedFromFlatList(originItems);
|
|
4403
|
+
(_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onToggleMenuItem) === null || _a === undefined ? undefined : _a.call(editMenuProps, changedItem);
|
|
4404
|
+
onMenuItemsChanged(expandedItems.map((menuItem) => {
|
|
4405
|
+
if (menuItem.id !== changedItem.id) {
|
|
4406
|
+
return menuItem;
|
|
4407
|
+
}
|
|
4408
|
+
return changedItem;
|
|
4409
|
+
}));
|
|
4410
|
+
}, [onMenuItemsChanged, editMenuProps]);
|
|
4411
|
+
const onFirstLevelSortEnd = React.useCallback(({ oldIndex, newIndex }) => {
|
|
4412
|
+
if (!onMenuItemsChanged) {
|
|
4413
|
+
return;
|
|
4414
|
+
}
|
|
4415
|
+
const currentFlatList = menuItemsRef.current || [];
|
|
4416
|
+
const updatedItems = sortMenuItems(oldIndex, newIndex, currentFlatList);
|
|
4417
|
+
if (updatedItems) {
|
|
4418
|
+
onMenuItemsChanged === null || onMenuItemsChanged === undefined ? undefined : onMenuItemsChanged(updatedItems);
|
|
4419
|
+
}
|
|
4420
|
+
}, [onMenuItemsChanged]);
|
|
4421
|
+
const onSecondLevelSortEnd = React.useCallback((groupIndex) => ({ oldIndex, newIndex }) => {
|
|
4422
|
+
if (!onMenuItemsChanged) {
|
|
4423
|
+
return;
|
|
4424
|
+
}
|
|
4425
|
+
const currentFlatList = menuItemsRef.current || [];
|
|
4426
|
+
const realOldIndex = getRealIndexInGroup(groupIndex, oldIndex, currentFlatList);
|
|
4427
|
+
const realNewIndex = getRealIndexInGroup(groupIndex, newIndex, currentFlatList);
|
|
4428
|
+
const expandedItems = buildExpandedFromFlatList(currentFlatList);
|
|
4429
|
+
const updatedItems = sortMenuItems(realOldIndex, realNewIndex, expandedItems);
|
|
4430
|
+
if (updatedItems) {
|
|
4431
|
+
onMenuItemsChanged === null || onMenuItemsChanged === undefined ? undefined : onMenuItemsChanged(updatedItems);
|
|
4432
|
+
}
|
|
4433
|
+
}, [onMenuItemsChanged]);
|
|
4434
|
+
const itemRender = React.useCallback((asideHeaderItem, _isActive, _itemIndex) => {
|
|
4435
|
+
return (React.createElement(AllPagesListItem, { item: asideHeaderItem, editMode: isEditMode, onToggle: () => toggleMenuItemsVisibility(asideHeaderItem), enableSorting: editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting }));
|
|
4436
|
+
}, [isEditMode, editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting, toggleMenuItemsVisibility]);
|
|
4437
|
+
const renderFirstLevelItem = React.useCallback((firstLevelItem, _isActive, itemIndex) => {
|
|
4438
|
+
if (!('items' in firstLevelItem) || firstLevelItem.items.length === 0) {
|
|
4439
|
+
return itemRender(firstLevelItem, _isActive, itemIndex);
|
|
4440
|
+
}
|
|
4441
|
+
const groupListItems = firstLevelItem.items;
|
|
4442
|
+
const sortableGroupItems = isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting)
|
|
4443
|
+
? groupListItems.filter(({ id }) => id !== ALL_PAGES_ID)
|
|
4444
|
+
: groupListItems;
|
|
4445
|
+
if (sortableGroupItems.length === 0) {
|
|
4446
|
+
return null;
|
|
4447
|
+
}
|
|
4448
|
+
const blockHeight = getGroupBlockHeight(sortableGroupItems);
|
|
4449
|
+
return (React.createElement(uikit.Flex, { className: b$m('groups-container'), direction: "column", style: { height: blockHeight } },
|
|
4450
|
+
firstLevelItem.title && (React.createElement(AllPagesGroupHeader, { id: firstLevelItem.id, icon: firstLevelItem.icon, title: firstLevelItem.title, hidden: Boolean(firstLevelItem.hidden), isDisabled: firstLevelItem.isDisabled, onToggleHidden: toggleGroupVisibility, editMode: isEditMode })),
|
|
4451
|
+
React.createElement(uikit.List, { itemClassName: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting)
|
|
4452
|
+
? b$m('item', { editMode: true })
|
|
4453
|
+
: undefined, itemHeight: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting) ? ITEM_HEIGHT : undefined, onSortEnd: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting)
|
|
4454
|
+
? onSecondLevelSortEnd(itemIndex)
|
|
4455
|
+
: undefined, sortable: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting), virtualized: false, filterable: false, items: sortableGroupItems, onItemClick: onItemClick, renderItem: itemRender })));
|
|
4456
|
+
}, [
|
|
4457
|
+
isEditMode,
|
|
4458
|
+
editMenuProps,
|
|
4459
|
+
toggleGroupVisibility,
|
|
4460
|
+
onSecondLevelSortEnd,
|
|
4461
|
+
onItemClick,
|
|
4462
|
+
itemRender,
|
|
4463
|
+
]);
|
|
4464
|
+
const data = items.filter((item) => item.id !== ALL_PAGES_ID && item.type !== 'action');
|
|
4465
|
+
return (React.createElement(uikit.Flex, { className: b$m(null, className), gap: "5", direction: "column" },
|
|
4466
|
+
React.createElement(uikit.Flex, { gap: "4", alignItems: "center", justifyContent: "space-between" },
|
|
4467
|
+
React.createElement(uikit.Text, { variant: "subheader-2" }, isEditMode ? i18n$4('all-panel.title.editing') : i18n$4('all-panel.title.main')),
|
|
4468
|
+
React.createElement(uikit.Tooltip, { content: i18n$4('all-panel.title.editing') },
|
|
4469
|
+
React.createElement(uikit.Button, { selected: isEditMode, view: "normal", onClick: toggleEditMode }, startEditIcon ? startEditIcon : React.createElement(uikit.Icon, { data: icons.Gear })))),
|
|
4470
|
+
React.createElement(uikit.Flex, { className: b$m('content', { 'edit-mode': isEditMode }), gap: "2", direction: "column" },
|
|
4471
|
+
React.createElement(uikit.List, { onSortEnd: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting) ? onFirstLevelSortEnd : undefined, sortable: isEditMode && (editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.enableSorting), virtualized: false, filterable: false, items: data, renderItem: renderFirstLevelItem })),
|
|
4472
|
+
isEditMode && (React.createElement(uikit.Button, { onClick: onResetToDefaultClick }, i18n$4('all-panel.resetToDefault')))));
|
|
4473
|
+
};
|
|
4474
|
+
|
|
4630
4475
|
var InnerPanels;
|
|
4631
4476
|
(function (InnerPanels) {
|
|
4632
4477
|
InnerPanels["AllPages"] = "all-pages";
|
|
@@ -4634,7 +4479,7 @@ var InnerPanels;
|
|
|
4634
4479
|
|
|
4635
4480
|
const EMPTY_MENU_ITEMS = [];
|
|
4636
4481
|
const useAsideHeaderInnerContextValue = (props) => {
|
|
4637
|
-
const { size, onClosePanel, menuItems, panelItems, onMenuItemsChanged, onAllPagesClick } = props;
|
|
4482
|
+
const { size, onClosePanel, menuItems, menuGroups, defaultMenuGroups, panelItems, onMenuItemsChanged, onMenuGroupsChanged, onAllPagesClick, } = props;
|
|
4638
4483
|
const [innerVisiblePanel, setInnerVisiblePanel] = React.useState();
|
|
4639
4484
|
const ALL_PAGES_MENU_ITEM = React.useMemo(() => {
|
|
4640
4485
|
return getAllPagesMenuItem();
|
|
@@ -4661,6 +4506,17 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
4661
4506
|
}
|
|
4662
4507
|
(_a = item.onItemClick) === null || _a === undefined ? undefined : _a.call(item, item, collapsed, event);
|
|
4663
4508
|
}, [innerOnClosePanel, ALL_PAGES_MENU_ITEM, onClosePanel]);
|
|
4509
|
+
const onToggleGroupCollapsed = React.useCallback((groupId) => {
|
|
4510
|
+
const updatedMenuGroups = menuGroups === null || menuGroups === undefined ? undefined : menuGroups.map((group) => {
|
|
4511
|
+
if (group.id === groupId) {
|
|
4512
|
+
return Object.assign(Object.assign({}, group), { collapsed: !group.collapsed });
|
|
4513
|
+
}
|
|
4514
|
+
return group;
|
|
4515
|
+
});
|
|
4516
|
+
if (updatedMenuGroups) {
|
|
4517
|
+
onMenuGroupsChanged === null || onMenuGroupsChanged === undefined ? undefined : onMenuGroupsChanged(updatedMenuGroups);
|
|
4518
|
+
}
|
|
4519
|
+
}, [menuGroups, onMenuGroupsChanged]);
|
|
4664
4520
|
const innerMenuItems = React.useMemo(() => allPagesIsAvailable
|
|
4665
4521
|
? [
|
|
4666
4522
|
...(menuItems || EMPTY_MENU_ITEMS),
|
|
@@ -4680,13 +4536,20 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
4680
4536
|
},
|
|
4681
4537
|
];
|
|
4682
4538
|
}, [allPagesIsAvailable, panelItems, innerVisiblePanel]);
|
|
4683
|
-
return Object.assign(Object.assign({}, props), { onClosePanel: innerOnClosePanel, allPagesIsAvailable, menuItems: innerMenuItems,
|
|
4684
|
-
|
|
4539
|
+
return Object.assign(Object.assign({}, props), { onClosePanel: innerOnClosePanel, allPagesIsAvailable, menuItems: innerMenuItems, menuGroups,
|
|
4540
|
+
defaultMenuGroups,
|
|
4541
|
+
onMenuGroupsChanged, panelItems: innerPanelItems, size,
|
|
4542
|
+
onItemClick,
|
|
4543
|
+
onToggleGroupCollapsed });
|
|
4685
4544
|
};
|
|
4686
4545
|
|
|
4687
4546
|
const PageLayoutAside = React.forwardRef((props, ref) => {
|
|
4688
|
-
const { size, compact } = useAsideHeaderContext();
|
|
4689
|
-
const asideHeaderInnerContextValue = useAsideHeaderInnerContextValue(Object.assign({ size,
|
|
4547
|
+
const { size, compact, isExpanded, onMouseEnter, onMouseLeave } = useAsideHeaderContext();
|
|
4548
|
+
const asideHeaderInnerContextValue = useAsideHeaderInnerContextValue(Object.assign({ size,
|
|
4549
|
+
compact,
|
|
4550
|
+
isExpanded,
|
|
4551
|
+
onMouseEnter,
|
|
4552
|
+
onMouseLeave }, props));
|
|
4690
4553
|
return (React.createElement(AsideHeaderInnerContextProvider, { value: asideHeaderInnerContextValue },
|
|
4691
4554
|
React.createElement(FirstPanel, { ref: ref })));
|
|
4692
4555
|
});
|
|
@@ -4694,30 +4557,29 @@ PageLayoutAside.displayName = 'PageLayoutAside';
|
|
|
4694
4557
|
|
|
4695
4558
|
const AsideHeader = React.forwardRef((_a, ref) => {
|
|
4696
4559
|
var { compact, className, topAlert } = _a, props = __rest(_a, ["compact", "className", "topAlert"]);
|
|
4697
|
-
return (React.createElement(PageLayout, { compact: compact, className: className, topAlert: topAlert },
|
|
4560
|
+
return (React.createElement(PageLayout, { compact: compact, onChangeCompact: props.onChangeCompact, className: className, topAlert: topAlert },
|
|
4698
4561
|
React.createElement(PageLayoutAside, Object.assign({ ref: ref }, props)),
|
|
4699
4562
|
React.createElement(PageLayout.Content, { renderContent: props.renderContent })));
|
|
4700
4563
|
});
|
|
4701
4564
|
AsideHeader.displayName = 'AsideHeader';
|
|
4702
4565
|
|
|
4703
|
-
var css_248z$k = ".gn-footer-item{height:
|
|
4566
|
+
var css_248z$k = ".gn-footer-item{--gn-aside-header-item-expanded-radius:6px;border-radius:var(--gn-aside-header-item-expanded-radius);height:36px;margin-bottom:2px;width:100%}.gn-footer-item:last-child{margin-bottom:0}";
|
|
4704
4567
|
styleInject(css_248z$k);
|
|
4705
4568
|
|
|
4706
4569
|
const b$l = block('footer-item');
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
};
|
|
4570
|
+
function FooterItem$1(props) {
|
|
4571
|
+
return (React.createElement(Item$1, Object.assign({}, props, { iconSize: ASIDE_HEADER_ICON_SIZE, className: b$l({ compact: props.compact }) })));
|
|
4572
|
+
}
|
|
4711
4573
|
|
|
4712
4574
|
const AsideFallback = ({ headerDecoration, subheaderItemsCount = 0, qa }) => {
|
|
4713
4575
|
const { compact } = useAsideHeaderContext();
|
|
4714
4576
|
const widthVar = compact ? '--gn-aside-header-min-width' : '--gn-aside-header-size';
|
|
4715
4577
|
const subheaderHeight = (1 + subheaderItemsCount) * ITEM_HEIGHT;
|
|
4716
|
-
return (React.createElement("div", { className: b$
|
|
4717
|
-
React.createElement("div", { className: b$
|
|
4718
|
-
React.createElement("div", { className: b$
|
|
4578
|
+
return (React.createElement("div", { className: b$w('aside'), style: { width: `var(${widthVar})` }, "data-qa": qa },
|
|
4579
|
+
React.createElement("div", { className: b$w('aside-content', { 'with-decoration': headerDecoration }) },
|
|
4580
|
+
React.createElement("div", { className: b$w('header', { 'with-decoration': headerDecoration }) },
|
|
4719
4581
|
React.createElement("div", { style: { height: subheaderHeight } }),
|
|
4720
|
-
compact && headerDecoration ? (React.createElement(uikit.Icon, { data: SvgDividerCollapsed, className: b$
|
|
4582
|
+
compact && headerDecoration ? (React.createElement(uikit.Icon, { data: SvgDividerCollapsed, className: b$w('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: HEADER_DIVIDER_HEIGHT })) : null),
|
|
4721
4583
|
React.createElement("div", { style: { flex: 1 } }))));
|
|
4722
4584
|
};
|
|
4723
4585
|
|
|
@@ -5420,7 +5282,7 @@ function SettingsSearch({ className, initialValue, onChange, debounce = 200, inp
|
|
|
5420
5282
|
} })));
|
|
5421
5283
|
}
|
|
5422
5284
|
|
|
5423
|
-
var css_248z$a = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__section:only-child .gn-settings__section-item:first-of-type{margin-top:0}.gn-settings__section:only-child .gn-settings__section-heading{display:none}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_title_hide{grid-template-columns:1fr;justify-
|
|
5285
|
+
var css_248z$a = ".gn-settings{display:grid;grid-template-columns:216px 1fr;height:100%;width:834px}.gn-settings_view_mobile{display:block;height:calc(80vh - 56px);overflow-x:hidden;width:auto}@supports (height:90dvh){.gn-settings_view_mobile{height:calc(90dvh - 56px)}}.gn-settings_view_mobile.gn-settings_loading{text-align:center}.gn-settings_view_mobile .gn-settings__loader{margin-top:20px}.gn-settings_view_mobile .gn-settings__search{margin:4px 0 16px;padding:0 20px}.gn-settings_view_mobile .gn-settings__page{overflow-y:visible}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:first-child{margin-left:20px}.gn-settings_view_mobile .gn-settings__tabs .g-tabs__item:last-child{margin-right:20px}.gn-settings_view_mobile .gn-settings__section-heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-3-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-3-line-height)}.gn-settings_view_mobile .gn-settings__section-subheader{color:var(--g-color-text-secondary)}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings-subheader{margin-top:8px}.gn-settings_view_mobile .gn-settings__section-item{margin-top:0}.gn-settings_view_mobile .gn-settings__section-heading+.gn-settings__section-item,.gn-settings_view_mobile .gn-settings__section-subheader+.gn-settings__section-item{margin-top:30px}.gn-settings_view_mobile .gn-settings__section-item+.gn-settings__section-item{margin-top:22px}.gn-settings_view_mobile .gn-settings__item:not(.gn-settings_view_mobile .gn-settings__item_mode_row){gap:8px;grid-template-columns:1fr}.gn-settings_view_mobile .gn-settings__item-heading{font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height)}.gn-settings_view_mobile .gn-settings__item-description{font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-1-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-1-line-height)}.gn-settings_view_mobile .gn-settings__item_mode_row{grid-template-columns:1fr auto}.gn-settings_view_mobile .gn-settings__item_mode_row .gn-settings__item-heading{padding-right:20px}.gn-settings_view_mobile .gn-settings__item-content{width:100%}.gn-settings_view_mobile .gn-settings__not-found{color:var(--g-color-text-hint);font-family:var(--g-text-body-font-family);font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);justify-items:start;line-height:var(--g-text-body-2-line-height);margin:20px 0 0 20px}.gn-settings_loading{grid-template-columns:auto}.gn-settings__loader{place-self:center}.gn-settings__not-found{display:grid;height:100%;place-items:center}.gn-settings__menu{border-right:1px solid var(--g-color-line-generic)}.gn-settings__heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:20px 20px 0}.gn-settings__search{margin:0 20px 16px}.gn-settings__page{overflow-y:auto}.gn-settings__content{padding:20px}.gn-settings__section-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__section-heading:hover .gn-settings__section-right-adornment_hidden{opacity:1}.gn-settings__section-heading{font-family:var(--g-text-subheader-font-family);font-size:var(--g-text-subheader-2-font-size);font-weight:var(--g-text-subheader-font-weight);line-height:var(--g-text-subheader-2-line-height);margin:0}.gn-settings__section-item{margin-top:24px}.gn-settings__section+.gn-settings__section{margin-top:32px}.gn-settings__section:only-child .gn-settings__section-item:first-of-type{margin-top:0}.gn-settings__section:only-child .gn-settings__section-heading{display:none}.gn-settings__item{display:grid;grid-template-columns:216px 1fr;justify-items:start}.gn-settings__item_title_hide{grid-template-columns:1fr;justify-content:normal}.gn-settings__item_align_top{align-items:start}.gn-settings__item_align_center{align-items:center}.gn-settings__item-title_badge{position:relative}.gn-settings__item-title_badge:after{background-color:var(--g-color-text-danger);border-radius:50%;content:\"\";display:block;height:6px;position:absolute;right:-8px;top:1px;width:6px}.gn-settings__item-description{color:var(--g-color-text-secondary);display:block;font-family:var(--g-text-caption-font-family);font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-top:2px;padding-right:20px}.gn-settings__item-right-adornment_hidden{opacity:0;transition:opacity .2s}.gn-settings__item:hover .gn-settings__item-right-adornment_hidden{opacity:1}.gn-settings__item_selected,.gn-settings__section_selected{background:var(--g-color-base-selection);border-radius:8px;margin-left:-8px;padding:8px}.gn-settings__found{background:var(--g-color-base-selection);font-weight:var(--g-text-accent-font-weight)}";
|
|
5424
5286
|
styleInject(css_248z$a);
|
|
5425
5287
|
|
|
5426
5288
|
function Settings(_a) {
|
|
@@ -5720,7 +5582,7 @@ const OverlapPanel = ({ title, renderContent, className, onClose, action, closeT
|
|
|
5720
5582
|
var css_248z$4 = ".gn-mobile-header{--mobile-header-min-heigth:50px;--mobile-header-icon-size:20px;background-color:var(--g-color-base-background)}.gn-mobile-header__header-container{background-color:var(--g-color-base-background);position:sticky;top:0;z-index:var(--gn-mobile-header-z-index,100)}.gn-mobile-header__header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);box-sizing:border-box;display:flex;justify-content:space-between;padding:0 10px}.gn-mobile-header__burger{padding:12px}.gn-mobile-header__panel-item{--gn-drawer-item-position:var(--gn-mobile-header-panel-position,absolute)}.gn-mobile-header__burger-menu,.gn-mobile-header__panel-item{background-color:var(--g-color-base-background);max-height:100%;max-width:90vw;width:320px}.gn-mobile-header__user-menu{overflow-y:auto}.gn-mobile-header__overlap-panel,.gn-mobile-header__panels{z-index:var(--gn-mobile-header-panel-z-index,98)}.gn-mobile-header__panels{inset:var(--mobile-header-min-heigth) 0 0;overflow:hidden;position:fixed}.gn-mobile-header__panel-item{height:100%;top:unset}.gn-mobile-header__content{overflow:auto}";
|
|
5721
5583
|
styleInject(css_248z$4);
|
|
5722
5584
|
|
|
5723
|
-
const TopAlert = React.lazy(() => Promise.resolve().then(function () { return require('./index-
|
|
5585
|
+
const TopAlert = React.lazy(() => Promise.resolve().then(function () { return require('./index-B9p8boXH.js'); }).then((module) => ({ default: module.TopAlert })));
|
|
5724
5586
|
const b$4 = block('mobile-header');
|
|
5725
5587
|
const MobileHeader = React.forwardRef(({ logo, burgerMenu, burgerCloseTitle = i18n('burger_button_close'), burgerOpenTitle = i18n('burger_button_open'), panelItems = [], renderContent, sideItemRenderContent, onClosePanel, onEvent, className, contentClassName, overlapPanel, topAlert, }, ref) => {
|
|
5726
5588
|
const targetRef = useForwardRef(ref);
|
|
@@ -6046,4 +5908,4 @@ exports.styleInject = styleInject;
|
|
|
6046
5908
|
exports.useAsideHeaderContext = useAsideHeaderContext;
|
|
6047
5909
|
exports.useSettingsContext = useSettingsContext;
|
|
6048
5910
|
exports.useSettingsSelectionContext = useSettingsSelectionContext;
|
|
6049
|
-
//# sourceMappingURL=index-
|
|
5911
|
+
//# sourceMappingURL=index-BF-1v7O1.js.map
|