@astral/ui 4.75.0 → 4.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/PageContent/PageContentHeader/Description/Description.js +2 -1
- package/components/PageContent/PageContentHeader/Description/styles.d.ts +5 -0
- package/components/PageContent/PageContentHeader/Description/styles.js +10 -0
- package/components/PageContent/PageContentHeader/PageContentHeader.js +10 -1
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/MobilePageContentHeaderActions.d.ts +3 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/MobilePageContentHeaderActions.js +12 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/styles.d.ts +38 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/styles.js +41 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/useLogic.d.ts +14 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/useLogic.js +23 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/composeCloseIntoActions.d.ts +14 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/composeCloseIntoActions.js +18 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActions.d.ts +2 -3
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActions.js +8 -3
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/PageContentHeaderActionsSkeleton.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/PageContentHeaderActionsSkeleton.js +5 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/styles.d.ts +8 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/styles.js +13 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/index.d.ts +2 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/index.js +2 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/types.d.ts +3 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderActions/types.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderContext.d.ts +9 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderContext.js +8 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/PageContentHeaderProvider.d.ts +7 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/PageContentHeaderProvider.js +7 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/index.js +1 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/index.d.ts +2 -0
- package/components/PageContent/PageContentHeader/PageContentHeaderContext/index.js +2 -0
- package/components/PageContent/PageContentHeader/Title/Title.js +2 -3
- package/components/PageContent/PageContentHeader/Title/styles.d.ts +7 -0
- package/components/PageContent/PageContentHeader/Title/styles.js +9 -0
- package/components/PageContent/PageContentHeader/styles.js +8 -6
- package/components/PageContent/PageContentHeader/useLogic/index.d.ts +1 -0
- package/components/PageContent/PageContentHeader/useLogic/index.js +1 -0
- package/components/PageContent/PageContentHeader/useLogic/useLogic.d.ts +4 -0
- package/components/PageContent/PageContentHeader/useLogic/useLogic.js +15 -0
- package/components/PageContent/public.d.ts +1 -1
- package/components/PageContent/public.js +1 -1
- package/components/PageContent/styles.js +4 -0
- package/components/TreeLikeAutocomplete/OptionsModal/styles.js +0 -1
- package/components/TreeLikeList/TreeLikeList.js +3 -1
- package/node/components/PageContent/PageContentHeader/Description/Description.js +2 -1
- package/node/components/PageContent/PageContentHeader/Description/styles.d.ts +5 -0
- package/node/components/PageContent/PageContentHeader/Description/styles.js +13 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeader.js +10 -1
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/MobilePageContentHeaderActions.d.ts +3 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/MobilePageContentHeaderActions.js +16 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/styles.d.ts +38 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/styles.js +44 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/useLogic.d.ts +14 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/useLogic.js +27 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/composeCloseIntoActions.d.ts +14 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/composeCloseIntoActions.js +22 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/composeCloseIntoActions/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/MobilePageContentHeaderActions/useLogic/utils/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActions.d.ts +2 -3
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActions.js +7 -2
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/PageContentHeaderActionsSkeleton.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/PageContentHeaderActionsSkeleton.js +9 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/styles.d.ts +8 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/PageContentHeaderActionsSkeleton/styles.js +16 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/index.d.ts +2 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/index.js +2 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/types.d.ts +3 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderActions/types.js +2 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderContext.d.ts +9 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderContext.js +11 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/PageContentHeaderProvider.d.ts +7 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/PageContentHeaderProvider.js +11 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/PageContentHeaderProvider/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/index.d.ts +2 -0
- package/node/components/PageContent/PageContentHeader/PageContentHeaderContext/index.js +18 -0
- package/node/components/PageContent/PageContentHeader/Title/Title.js +1 -2
- package/node/components/PageContent/PageContentHeader/Title/styles.d.ts +7 -0
- package/node/components/PageContent/PageContentHeader/Title/styles.js +10 -1
- package/node/components/PageContent/PageContentHeader/styles.js +8 -6
- package/node/components/PageContent/PageContentHeader/useLogic/index.d.ts +1 -0
- package/node/components/PageContent/PageContentHeader/useLogic/index.js +17 -0
- package/node/components/PageContent/PageContentHeader/useLogic/useLogic.d.ts +4 -0
- package/node/components/PageContent/PageContentHeader/useLogic/useLogic.js +19 -0
- package/node/components/PageContent/public.d.ts +1 -1
- package/node/components/PageContent/public.js +2 -1
- package/node/components/PageContent/styles.js +4 -0
- package/node/components/TreeLikeAutocomplete/OptionsModal/styles.js +0 -1
- package/node/components/TreeLikeList/TreeLikeList.js +3 -1
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Skeleton } from '../../../Skeleton';
|
|
3
3
|
import { Typography } from '../../../Typography';
|
|
4
|
+
import { SkeletonWrapper } from './styles';
|
|
4
5
|
export const Description = ({ className, description, isLoading, }) => {
|
|
5
6
|
if (!description && isLoading) {
|
|
6
|
-
return _jsx(Skeleton, { className: className, height:
|
|
7
|
+
return (_jsx(SkeletonWrapper, { children: _jsx(Skeleton, { className: className, height: 16, width: 300, variant: "rounded" }) }));
|
|
7
8
|
}
|
|
8
9
|
if (typeof description === 'string') {
|
|
9
10
|
return (_jsx(Typography, { className: className, variant: "body1", children: description }));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const SkeletonWrapper: import("../../../styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
2
3
|
import { pageContentHeaderClassnames } from './constants';
|
|
3
4
|
import { Description } from './Description';
|
|
5
|
+
import { PageContentHeaderProvider } from './PageContentHeaderContext';
|
|
4
6
|
import { TitleBlock, Wrapper } from './styles';
|
|
5
7
|
import { Title } from './Title';
|
|
8
|
+
import { useLogic } from './useLogic';
|
|
6
9
|
export const PageContentHeader = ({ title, description, actions, children, isLoading, }) => {
|
|
7
|
-
|
|
10
|
+
const { pageHeaderContainer, isMobile } = useLogic();
|
|
11
|
+
const content = (_jsx(PageContentHeaderProvider, { title: title, description: description, children: _jsxs(Wrapper, { className: pageContentHeaderClassnames.pageContentHeader, children: [_jsxs(TitleBlock, { children: [_jsx(Title, { title: title, isLoading: isLoading, children: children }), _jsx(Description, { className: pageContentHeaderClassnames.description, description: description, isLoading: isLoading })] }), actions] }) }));
|
|
12
|
+
// В мобильной версии pageContentHeader отображается внутри PageHeader страницы
|
|
13
|
+
if (isMobile && pageHeaderContainer) {
|
|
14
|
+
return createPortal(content, pageHeaderContainer);
|
|
15
|
+
}
|
|
16
|
+
return content;
|
|
8
17
|
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type ElementType } from 'react';
|
|
2
|
+
import { type PageContentHeaderActionsProps } from '../types';
|
|
3
|
+
export declare const MobilePageContentHeaderActions: <TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType>(props: PageContentHeaderActionsProps<TMainActionComponent, TSecondaryActionComponent>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { DotsVOutlineMd } from '../../../../../icons/DotsVOutlineMd';
|
|
3
|
+
import { BottomDrawer } from '../../../../BottomDrawer';
|
|
4
|
+
import { SecondaryActions, SecondaryVisibleActions, } from '../../../../PageHeader/PageActions';
|
|
5
|
+
import { Typography } from '../../../../Typography';
|
|
6
|
+
import { Description } from '../../Description';
|
|
7
|
+
import { ActionsWrapper, AddonInfoWrapper, BottomDrawerWrapper, StyledIconButton, StyledMainActions, } from './styles';
|
|
8
|
+
import { useLogic } from './useLogic';
|
|
9
|
+
export const MobilePageContentHeaderActions = (props) => {
|
|
10
|
+
const { open, handleOpenMenu, handleCloseMenu, main, secondary, secondaryVisible, title, description, } = useLogic(props);
|
|
11
|
+
return (_jsxs(_Fragment, { children: [_jsx(StyledIconButton, { title: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E", variant: "text", color: "grey", onClick: handleOpenMenu, children: _jsx(DotsVOutlineMd, {}) }), _jsx(BottomDrawer, { title: "\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F", onClose: handleCloseMenu, open: open, children: _jsxs(BottomDrawerWrapper, { children: [_jsxs(AddonInfoWrapper, { children: [_jsx(Typography, { variant: "h6", children: title }), _jsx(Description, { description: description })] }), _jsxs(ActionsWrapper, { children: [_jsx(StyledMainActions, { actions: main, size: "large" }), _jsx(SecondaryVisibleActions, { actions: secondaryVisible, size: "large" }), _jsx(SecondaryActions, { actions: secondary, size: "large" })] })] }) })] }));
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobilePageContentHeaderActions';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobilePageContentHeaderActions';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const BottomDrawerWrapper: import("../../../../styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
|
+
export declare const AddonInfoWrapper: import("../../../../styled").StyledComponent<{
|
|
7
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
8
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
9
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
10
|
+
export declare const StyledIconButton: import("../../../../styled").StyledComponent<Omit<import("../../../..").WithoutEmotionSpecific<import("@mui/material").ButtonProps>, "color" | "component" | "size" | "variant" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple"> & {
|
|
11
|
+
variant?: "light" | "link" | "text" | "contained" | "outlined" | undefined;
|
|
12
|
+
loading?: boolean | undefined;
|
|
13
|
+
color?: "primary" | "success" | "warning" | "error" | "grey" | undefined;
|
|
14
|
+
component?: import("react").ElementType | undefined;
|
|
15
|
+
selected?: boolean | undefined;
|
|
16
|
+
size?: "large" | "medium" | undefined;
|
|
17
|
+
} & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, ""> & import("react").RefAttributes<HTMLButtonElement> & {
|
|
18
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
19
|
+
}, {}, {}>;
|
|
20
|
+
export declare const ActionsWrapper: import("../../../../styled").StyledComponent<{
|
|
21
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
22
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
23
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
24
|
+
export declare const StyledMainActions: import("../../../../styled").StyledComponent<Omit<import("../../../../ActionGroup").MainActionsProps<import("react").ElementType>, "actions"> & {
|
|
25
|
+
actions?: import("../../../..").MainAction<import("react").ElementType>[] | undefined;
|
|
26
|
+
className?: string | undefined;
|
|
27
|
+
size: import("../../../..").ButtonSize;
|
|
28
|
+
spacing?: number | undefined;
|
|
29
|
+
} & {
|
|
30
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
31
|
+
}, {}, {}>;
|
|
32
|
+
export declare const StyledSkeleton: import("../../../../styled").StyledComponent<Omit<import("../../../..").WithoutEmotionSpecific<import("@mui/material").SkeletonProps<import("react").ElementType, unknown>>, "animation" | "variant"> & {
|
|
33
|
+
component?: import("react").ElementType | undefined;
|
|
34
|
+
variant?: "text" | "circular" | "rounded" | undefined;
|
|
35
|
+
shapeSize?: "large" | "medium" | "small" | undefined;
|
|
36
|
+
} & {
|
|
37
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
38
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { IconButton } from '../../../../IconButton';
|
|
2
|
+
import { MainActions } from '../../../../PageHeader/PageActions';
|
|
3
|
+
import { Skeleton } from '../../../../Skeleton';
|
|
4
|
+
import { styled } from '../../../../styled';
|
|
5
|
+
import { tooltipClassnames } from '../../../../Tooltip';
|
|
6
|
+
export const BottomDrawerWrapper = styled.div `
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
gap: ${({ theme }) => theme.spacing(6)};
|
|
10
|
+
|
|
11
|
+
padding: ${({ theme }) => theme.spacing(4)};
|
|
12
|
+
`;
|
|
13
|
+
export const AddonInfoWrapper = styled.div `
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: ${({ theme }) => theme.spacing(3)};
|
|
17
|
+
`;
|
|
18
|
+
export const StyledIconButton = styled(IconButton) `
|
|
19
|
+
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
export const ActionsWrapper = styled.div `
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
gap: ${({ theme }) => theme.spacing(2)};
|
|
27
|
+
|
|
28
|
+
& .${tooltipClassnames.contentWrapper} {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
export const StyledMainActions = styled(MainActions) `
|
|
33
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
34
|
+
padding-bottom: 0;
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
export const StyledSkeleton = styled(Skeleton) `
|
|
38
|
+
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ElementType } from 'react';
|
|
2
|
+
import { type PageContentHeaderActionsProps } from '../../types';
|
|
3
|
+
type UseLogicParams<TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType> = PageContentHeaderActionsProps<TMainActionComponent, TSecondaryActionComponent>;
|
|
4
|
+
export declare const useLogic: <TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType>({ main: rawMain, secondary: rawSecondary, secondaryVisible: rawSecondaryVisible, }: UseLogicParams<TMainActionComponent, TSecondaryActionComponent>) => {
|
|
5
|
+
open: boolean;
|
|
6
|
+
handleOpenMenu: () => void;
|
|
7
|
+
handleCloseMenu: () => void;
|
|
8
|
+
main: import("../../../../..").MainAction<TMainActionComponent>[];
|
|
9
|
+
secondary: import("../../../../../ActionGroup").SecondaryAction<TSecondaryActionComponent>[];
|
|
10
|
+
secondaryVisible: import("../../../../../ActionGroup").SecondaryVisibleAction[];
|
|
11
|
+
title: import("react").ReactNode;
|
|
12
|
+
description: import("react").ReactNode;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
|
+
import { useMenu } from '../../../../../useMenu';
|
|
3
|
+
import { PageContentHeaderContext } from '../../../PageContentHeaderContext';
|
|
4
|
+
import { composeCloseIntoActions } from './utils';
|
|
5
|
+
export const useLogic = ({ main: rawMain = [], secondary: rawSecondary = [], secondaryVisible: rawSecondaryVisible = [], }) => {
|
|
6
|
+
const { open, handleOpenMenu, handleCloseMenu } = useMenu();
|
|
7
|
+
const { title, description } = useContext(PageContentHeaderContext);
|
|
8
|
+
const [main, secondary, secondaryVisible] = useMemo(() => [
|
|
9
|
+
composeCloseIntoActions(rawMain, handleCloseMenu),
|
|
10
|
+
composeCloseIntoActions(rawSecondary, handleCloseMenu),
|
|
11
|
+
composeCloseIntoActions(rawSecondaryVisible, handleCloseMenu),
|
|
12
|
+
], [rawMain, rawSecondary, rawSecondaryVisible, handleCloseMenu]);
|
|
13
|
+
return {
|
|
14
|
+
open,
|
|
15
|
+
handleOpenMenu,
|
|
16
|
+
handleCloseMenu,
|
|
17
|
+
main,
|
|
18
|
+
secondary,
|
|
19
|
+
secondaryVisible,
|
|
20
|
+
title,
|
|
21
|
+
description,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type MouseEventHandler } from 'react';
|
|
2
|
+
type NestedAction = {
|
|
3
|
+
onClick?: MouseEventHandler;
|
|
4
|
+
};
|
|
5
|
+
type Action = {
|
|
6
|
+
onClick?: MouseEventHandler;
|
|
7
|
+
isNested?: boolean;
|
|
8
|
+
actions?: NestedAction[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Рекурсивно оборачивает onClick обработчики действий, добавляя вызов closeFn
|
|
12
|
+
*/
|
|
13
|
+
export declare const composeCloseIntoActions: <TAction extends Action>(actions: TAction[], closeFn: () => void) => TAction[];
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Рекурсивно оборачивает onClick обработчики действий, добавляя вызов closeFn
|
|
3
|
+
*/
|
|
4
|
+
export const composeCloseIntoActions = (actions, closeFn) => {
|
|
5
|
+
return actions.map((action) => {
|
|
6
|
+
const composed = {
|
|
7
|
+
...action,
|
|
8
|
+
onClick: (event) => {
|
|
9
|
+
action.onClick?.(event);
|
|
10
|
+
closeFn();
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
if (action.actions) {
|
|
14
|
+
composed.actions = composeCloseIntoActions(action.actions, closeFn);
|
|
15
|
+
}
|
|
16
|
+
return composed;
|
|
17
|
+
});
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './composeCloseIntoActions';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './composeCloseIntoActions';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './composeCloseIntoActions';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './composeCloseIntoActions';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { ElementType } from 'react';
|
|
2
|
-
import { type
|
|
3
|
-
export
|
|
4
|
-
export declare const PageContentHeaderActions: <TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType>(props: PageContentHeaderActionsProps<TMainActionComponent, TSecondaryActionComponent>) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
import { type PageContentHeaderActionsProps } from './types';
|
|
3
|
+
export declare const PageContentHeaderActions: <TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType>({ isLoading, ...props }: PageContentHeaderActionsProps<TMainActionComponent, TSecondaryActionComponent>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { PageActions } from '../../../PageHeader';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { MobilePageContentHeaderActions } from './MobilePageContentHeaderActions';
|
|
4
|
+
import { PageContentHeaderActionsSkeleton } from './PageContentHeaderActionsSkeleton';
|
|
5
|
+
export const PageContentHeaderActions = ({ isLoading, ...props }) => {
|
|
6
|
+
if (isLoading) {
|
|
7
|
+
return _jsx(PageContentHeaderActionsSkeleton, {});
|
|
8
|
+
}
|
|
9
|
+
return (_jsxs(_Fragment, { children: [_jsx(PageActions, { size: "medium", spacing: 1, ...props }), _jsx(MobilePageContentHeaderActions, { ...props })] }));
|
|
5
10
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PageContentHeaderActionsSkeleton: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageContentHeaderActionsSkeleton';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageContentHeaderActionsSkeleton';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const StyledSkeleton: import("../../../../styled").StyledComponent<Omit<import("../../../..").WithoutEmotionSpecific<import("@mui/material").SkeletonProps<import("react").ElementType, unknown>>, "animation" | "variant"> & {
|
|
3
|
+
component?: import("react").ElementType | undefined;
|
|
4
|
+
variant?: "text" | "circular" | "rounded" | undefined;
|
|
5
|
+
shapeSize?: "large" | "medium" | "small" | undefined;
|
|
6
|
+
} & {
|
|
7
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
8
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Skeleton } from '../../../../Skeleton';
|
|
2
|
+
import { styled } from '../../../../styled';
|
|
3
|
+
export const StyledSkeleton = styled(Skeleton) `
|
|
4
|
+
flex-shrink: 0;
|
|
5
|
+
|
|
6
|
+
width: 180px;
|
|
7
|
+
height: 32px;
|
|
8
|
+
|
|
9
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
10
|
+
width: 40px;
|
|
11
|
+
height: 40px;
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ElementType } from 'react';
|
|
2
|
+
import type { PageActionsProps } from '../../../PageHeader';
|
|
3
|
+
export type PageContentHeaderActionsProps<TMainActionComponent extends ElementType = ElementType, TSecondaryActionComponent extends ElementType = ElementType> = PageActionsProps<TMainActionComponent, TSecondaryActionComponent>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export type PageContentHeaderContextProps = {
|
|
3
|
+
title?: ReactNode;
|
|
4
|
+
description?: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Контекст для проброса параметров (title, description) для использования внутри bottomDrawer в мобильном отображении.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PageContentHeaderContext: import("react").Context<PageContentHeaderContextProps>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Контекст для проброса параметров (title, description) для использования внутри bottomDrawer в мобильном отображении.
|
|
4
|
+
*/
|
|
5
|
+
export const PageContentHeaderContext = createContext({
|
|
6
|
+
title: undefined,
|
|
7
|
+
description: undefined,
|
|
8
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type PageContentHeaderContextProps } from '../PageContentHeaderContext';
|
|
3
|
+
type Props = PageContentHeaderContextProps & {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export declare const PageContentHeaderProvider: ({ children, title, description, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { PageContentHeaderContext, } from '../PageContentHeaderContext';
|
|
4
|
+
export const PageContentHeaderProvider = ({ children, title, description, }) => {
|
|
5
|
+
const contextValue = useMemo(() => ({ title, description }), [title, description]);
|
|
6
|
+
return (_jsx(PageContentHeaderContext.Provider, { value: contextValue, children: children }));
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageContentHeaderProvider';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PageContentHeaderProvider';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { OverflowTypography } from '../../../OverflowTypography';
|
|
3
|
-
import {
|
|
4
|
-
import { TitleWrapper } from './styles';
|
|
3
|
+
import { StyledSkeleton, TitleWrapper } from './styles';
|
|
5
4
|
export const Title = ({ title, isLoading, children }) => {
|
|
6
5
|
if (!title && !children && isLoading) {
|
|
7
|
-
return _jsx(
|
|
6
|
+
return _jsx(StyledSkeleton, { variant: "rounded" });
|
|
8
7
|
}
|
|
9
8
|
if (typeof title === 'string') {
|
|
10
9
|
return (_jsxs(TitleWrapper, { component: "h3", variant: "h5", children: [_jsx(OverflowTypography, { component: "div", variant: "inherit", children: title }), children] }));
|
|
@@ -10,3 +10,10 @@ export declare const TitleWrapper: import("../../../styled").StyledComponent<imp
|
|
|
10
10
|
} & import("react").HTMLAttributes<HTMLParagraphElement> & import("react").RefAttributes<HTMLSpanElement> & {
|
|
11
11
|
theme?: import("@emotion/react").Theme | undefined;
|
|
12
12
|
}, {}, {}>;
|
|
13
|
+
export declare const StyledSkeleton: import("../../../styled").StyledComponent<Omit<import("../../..").WithoutEmotionSpecific<import("@mui/material").SkeletonProps<import("react").ElementType, unknown>>, "animation" | "variant"> & {
|
|
14
|
+
component?: import("react").ElementType | undefined;
|
|
15
|
+
variant?: "text" | "circular" | "rounded" | undefined;
|
|
16
|
+
shapeSize?: "large" | "medium" | "small" | undefined;
|
|
17
|
+
} & {
|
|
18
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
19
|
+
}, {}, {}>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Skeleton } from '../../../Skeleton';
|
|
1
2
|
import { styled } from '../../../styled';
|
|
2
3
|
import { Typography } from '../../../Typography';
|
|
3
4
|
export const TitleWrapper = styled(Typography) `
|
|
@@ -6,3 +7,11 @@ export const TitleWrapper = styled(Typography) `
|
|
|
6
7
|
gap: ${({ theme }) => theme.spacing(1)};
|
|
7
8
|
align-items: center;
|
|
8
9
|
`;
|
|
10
|
+
export const StyledSkeleton = styled(Skeleton) `
|
|
11
|
+
width: 200px;
|
|
12
|
+
height: 20px;
|
|
13
|
+
|
|
14
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
15
|
+
width: 100%;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
@@ -11,13 +11,13 @@ export const Wrapper = styled.header `
|
|
|
11
11
|
border-bottom: 1px solid ${({ theme }) => theme.palette.components.border.default};
|
|
12
12
|
|
|
13
13
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
14
|
-
|
|
14
|
+
gap: ${({ theme }) => theme.spacing(5)};
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
height: 48px;
|
|
17
|
+
padding: ${({ theme }) => theme.spacing(0, 1, 0, 4)};
|
|
18
|
+
|
|
19
|
+
background-color: ${({ theme }) => theme.palette.background.default};
|
|
20
|
+
border-bottom: 1px solid ${({ theme }) => theme.palette.components.border.default};
|
|
21
21
|
}
|
|
22
22
|
`;
|
|
23
23
|
export const TitleBlock = styled.div `
|
|
@@ -26,6 +26,8 @@ export const TitleBlock = styled.div `
|
|
|
26
26
|
flex-direction: column;
|
|
27
27
|
|
|
28
28
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
29
|
+
width: 100%;
|
|
30
|
+
|
|
29
31
|
& .${pageContentHeaderClassnames.description} {
|
|
30
32
|
display: none;
|
|
31
33
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { pageHeaderClassnames } from '../../../PageHeader';
|
|
3
|
+
import { useViewportType } from '../../../useViewportType';
|
|
4
|
+
export const useLogic = () => {
|
|
5
|
+
const [pageHeaderContainer, setPageHeaderContainer] = useState(null);
|
|
6
|
+
const { isMobile } = useViewportType();
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const container = document.querySelector(`.${pageHeaderClassnames.root}`);
|
|
9
|
+
setPageHeaderContainer(container);
|
|
10
|
+
}, []);
|
|
11
|
+
return {
|
|
12
|
+
pageHeaderContainer,
|
|
13
|
+
isMobile,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { pageContentClassnames } from './constants';
|
|
2
2
|
export { PageContent } from './PageContent';
|
|
3
|
-
export { PageContentHeader, PageContentHeaderActions, type PageContentHeaderActionsProps, type PageContentHeaderProps, } from './PageContentHeader';
|
|
3
|
+
export { PageContentHeader, PageContentHeaderActions, type PageContentHeaderActionsProps, PageContentHeaderActionsSkeleton, type PageContentHeaderProps, } from './PageContentHeader';
|
|
4
4
|
export type { PageContentProps } from './types';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { pageContentClassnames } from './constants';
|
|
2
2
|
export { PageContent } from './PageContent';
|
|
3
|
-
export { PageContentHeader, PageContentHeaderActions, } from './PageContentHeader';
|
|
3
|
+
export { PageContentHeader, PageContentHeaderActions, PageContentHeaderActionsSkeleton, } from './PageContentHeader';
|
|
@@ -67,6 +67,10 @@ export const Content = styled.div `
|
|
|
67
67
|
padding-right: ${({ theme }) => theme.spacing(4)};
|
|
68
68
|
padding-bottom: ${({ theme }) => theme.spacing(3)};
|
|
69
69
|
padding-left: ${({ theme }) => theme.spacing(4)};
|
|
70
|
+
|
|
71
|
+
&.${pageContentClassnames.contentHasHeader}, &.${pageContentClassnames.hasAside} {
|
|
72
|
+
padding: ${({ theme }) => theme.spacing(4, 4, 3)};
|
|
73
|
+
}
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { treeListClassnames } from '../Tree';
|
|
3
|
+
import { classNames } from '../utils/classNames';
|
|
2
4
|
import { List } from './styles';
|
|
3
5
|
import { TreeItem } from './TreeItem';
|
|
4
6
|
import { useLogic } from './useLogic';
|
|
@@ -6,5 +8,5 @@ const INITIAL_LEVEL = 0;
|
|
|
6
8
|
export const TreeLikeList = (props) => {
|
|
7
9
|
const { listProps, itemProps } = useLogic(props);
|
|
8
10
|
const { data, className, expandedLevel = 10, disabledItems, ...restProps } = props;
|
|
9
|
-
return (_jsx(List, { className: className, ...listProps, children: data.map((item) => (_jsx(TreeItem, { item: item, level: INITIAL_LEVEL, expandedLevel: expandedLevel, ...itemProps, ...restProps }, item.id))) }));
|
|
11
|
+
return (_jsx(List, { className: classNames(className, treeListClassnames.list), ...listProps, children: data.map((item) => (_jsx(TreeItem, { item: item, level: INITIAL_LEVEL, expandedLevel: expandedLevel, ...itemProps, ...restProps }, item.id))) }));
|
|
10
12
|
};
|
|
@@ -4,9 +4,10 @@ exports.Description = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const Skeleton_1 = require("../../../Skeleton");
|
|
6
6
|
const Typography_1 = require("../../../Typography");
|
|
7
|
+
const styles_1 = require("./styles");
|
|
7
8
|
const Description = ({ className, description, isLoading, }) => {
|
|
8
9
|
if (!description && isLoading) {
|
|
9
|
-
return (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { className: className, height:
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)(styles_1.SkeletonWrapper, { children: (0, jsx_runtime_1.jsx)(Skeleton_1.Skeleton, { className: className, height: 16, width: 300, variant: "rounded" }) }));
|
|
10
11
|
}
|
|
11
12
|
if (typeof description === 'string') {
|
|
12
13
|
return ((0, jsx_runtime_1.jsx)(Typography_1.Typography, { className: className, variant: "body1", children: description }));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const SkeletonWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkeletonWrapper = void 0;
|
|
4
|
+
const styled_1 = require("../../../styled");
|
|
5
|
+
exports.SkeletonWrapper = styled_1.styled.div `
|
|
6
|
+
display: flex;
|
|
7
|
+
|
|
8
|
+
padding: ${({ theme }) => theme.spacing(1, 0)};
|
|
9
|
+
|
|
10
|
+
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
`;
|