@consta/header 0.1.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/Badges/Badges.css +1 -0
- package/Badges/Badges.d.ts +5 -0
- package/Badges/Badges.js +2 -0
- package/Badges/Badges.js.map +1 -0
- package/Badges/helpers.d.ts +20 -0
- package/Badges/helpers.js +2 -0
- package/Badges/helpers.js.map +1 -0
- package/Badges/index.d.ts +1 -0
- package/Badges/index.js +2 -0
- package/Badges/index.js.map +1 -0
- package/Badges/types.d.ts +27 -0
- package/Badges/types.js +2 -0
- package/Badges/types.js.map +1 -0
- package/Header/Header.css +1 -0
- package/Header/Header.d.ts +5 -0
- package/Header/Header.js +2 -0
- package/Header/Header.js.map +1 -0
- package/Header/HeaderLogin/HeaderLogin.d.ts +15 -0
- package/Header/HeaderLogin/HeaderLogin.js +2 -0
- package/Header/HeaderLogin/HeaderLogin.js.map +1 -0
- package/Header/HeaderLogin/index.d.ts +1 -0
- package/Header/HeaderLogin/index.js +2 -0
- package/Header/HeaderLogin/index.js.map +1 -0
- package/Header/HeaderLogo/HeaderLogo.d.ts +9 -0
- package/Header/HeaderLogo/HeaderLogo.js +2 -0
- package/Header/HeaderLogo/HeaderLogo.js.map +1 -0
- package/Header/HeaderLogo/index.d.ts +1 -0
- package/Header/HeaderLogo/index.js +2 -0
- package/Header/HeaderLogo/index.js.map +1 -0
- package/Header/index.d.ts +1 -0
- package/Header/index.js +2 -0
- package/Header/index.js.map +1 -0
- package/Header/types.d.ts +80 -0
- package/Header/types.js +2 -0
- package/Header/types.js.map +1 -0
- package/Layout/Layout.css +1 -0
- package/Layout/Layout.d.ts +8 -0
- package/Layout/Layout.js +2 -0
- package/Layout/Layout.js.map +1 -0
- package/Layout/LayoutRow/LayoutRow.css +1 -0
- package/Layout/LayoutRow/LayoutRow.d.ts +11 -0
- package/Layout/LayoutRow/LayoutRow.js +2 -0
- package/Layout/LayoutRow/LayoutRow.js.map +1 -0
- package/Layout/helpers.d.ts +2 -0
- package/Layout/helpers.js +2 -0
- package/Layout/helpers.js.map +1 -0
- package/Layout/index.d.ts +1 -0
- package/Layout/index.js +2 -0
- package/Layout/index.js.map +1 -0
- package/Layout/types.d.ts +17 -0
- package/Layout/types.js +2 -0
- package/Layout/types.js.map +1 -0
- package/Menu/Menu.css +1 -0
- package/Menu/Menu.d.ts +5 -0
- package/Menu/Menu.js +2 -0
- package/Menu/Menu.js.map +1 -0
- package/Menu/helpers.d.ts +31 -0
- package/Menu/helpers.js +2 -0
- package/Menu/helpers.js.map +1 -0
- package/Menu/index.d.ts +1 -0
- package/Menu/index.js +2 -0
- package/Menu/index.js.map +1 -0
- package/Menu/types.d.ts +35 -0
- package/Menu/types.js +2 -0
- package/Menu/types.js.map +1 -0
- package/MobileMenu/MobileMenu.css +1 -0
- package/MobileMenu/MobileMenu.d.ts +5 -0
- package/MobileMenu/MobileMenu.js +2 -0
- package/MobileMenu/MobileMenu.js.map +1 -0
- package/MobileMenu/index.d.ts +1 -0
- package/MobileMenu/index.js +2 -0
- package/MobileMenu/index.js.map +1 -0
- package/MobileMenu/types.d.ts +21 -0
- package/MobileMenu/types.js +2 -0
- package/MobileMenu/types.js.map +1 -0
- package/Notifications/Notifications.css +1 -0
- package/Notifications/Notifications.d.ts +4 -0
- package/Notifications/Notifications.js +2 -0
- package/Notifications/Notifications.js.map +1 -0
- package/Notifications/index.d.ts +1 -0
- package/Notifications/index.js +2 -0
- package/Notifications/index.js.map +1 -0
- package/Notifications/types.d.ts +8 -0
- package/Notifications/types.js +2 -0
- package/Notifications/types.js.map +1 -0
- package/NotificationsList/NotificationsList.css +1 -0
- package/NotificationsList/NotificationsList.d.ts +5 -0
- package/NotificationsList/NotificationsList.js +2 -0
- package/NotificationsList/NotificationsList.js.map +1 -0
- package/NotificationsList/helpers.d.ts +4150 -0
- package/NotificationsList/helpers.js +2 -0
- package/NotificationsList/helpers.js.map +1 -0
- package/NotificationsList/index.d.ts +1 -0
- package/NotificationsList/index.js +2 -0
- package/NotificationsList/index.js.map +1 -0
- package/NotificationsList/types.d.ts +88 -0
- package/NotificationsList/types.js +2 -0
- package/NotificationsList/types.js.map +1 -0
- package/README.md +80 -0
- package/TileMenu/TileMenu.css +1 -0
- package/TileMenu/TileMenu.d.ts +5 -0
- package/TileMenu/TileMenu.js +2 -0
- package/TileMenu/TileMenu.js.map +1 -0
- package/TileMenu/TileMenuItem/TileMenuItem.css +1 -0
- package/TileMenu/TileMenuItem/TileMenuItem.d.ts +12 -0
- package/TileMenu/TileMenuItem/TileMenuItem.js +2 -0
- package/TileMenu/TileMenuItem/TileMenuItem.js.map +1 -0
- package/TileMenu/TileMenuList/TileMenuList.css +1 -0
- package/TileMenu/TileMenuList/TileMenuList.d.ts +4 -0
- package/TileMenu/TileMenuList/TileMenuList.js +2 -0
- package/TileMenu/TileMenuList/TileMenuList.js.map +1 -0
- package/TileMenu/TileMenuList/types.d.ts +32 -0
- package/TileMenu/TileMenuList/types.js +2 -0
- package/TileMenu/TileMenuList/types.js.map +1 -0
- package/TileMenu/helpers.d.ts +274 -0
- package/TileMenu/helpers.js +2 -0
- package/TileMenu/helpers.js.map +1 -0
- package/TileMenu/index.d.ts +1 -0
- package/TileMenu/index.js +2 -0
- package/TileMenu/index.js.map +1 -0
- package/TileMenu/types.d.ts +48 -0
- package/TileMenu/types.js +2 -0
- package/TileMenu/types.js.map +1 -0
- package/VerticalMenu/VerticalMenu.css +1 -0
- package/VerticalMenu/VerticalMenu.d.ts +5 -0
- package/VerticalMenu/VerticalMenu.js +2 -0
- package/VerticalMenu/VerticalMenu.js.map +1 -0
- package/VerticalMenu/VerticalMenuItem/VerticalMenuItem.css +1 -0
- package/VerticalMenu/VerticalMenuItem/VerticalMenuItem.d.ts +4 -0
- package/VerticalMenu/VerticalMenuItem/VerticalMenuItem.js +2 -0
- package/VerticalMenu/VerticalMenuItem/VerticalMenuItem.js.map +1 -0
- package/VerticalMenu/VerticalMenuLevel/VerticalMenuLevel.css +1 -0
- package/VerticalMenu/VerticalMenuLevel/VerticalMenuLevel.d.ts +5 -0
- package/VerticalMenu/VerticalMenuLevel/VerticalMenuLevel.js +2 -0
- package/VerticalMenu/VerticalMenuLevel/VerticalMenuLevel.js.map +1 -0
- package/VerticalMenu/helpers.d.ts +31 -0
- package/VerticalMenu/helpers.js +2 -0
- package/VerticalMenu/helpers.js.map +1 -0
- package/VerticalMenu/index.d.ts +1 -0
- package/VerticalMenu/index.js +2 -0
- package/VerticalMenu/index.js.map +1 -0
- package/VerticalMenu/types.d.ts +63 -0
- package/VerticalMenu/types.js +2 -0
- package/VerticalMenu/types.js.map +1 -0
- package/__private__/AnimatedContextMenu/AnimatedContextMenu.css +1 -0
- package/__private__/AnimatedContextMenu/AnimatedContextMenu.d.ts +8 -0
- package/__private__/AnimatedContextMenu/AnimatedContextMenu.js +2 -0
- package/__private__/AnimatedContextMenu/AnimatedContextMenu.js.map +1 -0
- package/__private__/components/NotificationCard/NotificationCard.css +1 -0
- package/__private__/components/NotificationCard/NotificationCard.d.ts +19 -0
- package/__private__/components/NotificationCard/NotificationCard.js +2 -0
- package/__private__/components/NotificationCard/NotificationCard.js.map +1 -0
- package/__private__/components/NotificationCard/helpers.d.ts +1 -0
- package/__private__/components/NotificationCard/helpers.js +2 -0
- package/__private__/components/NotificationCard/helpers.js.map +1 -0
- package/__private__/components/NotificationCard/index.d.ts +1 -0
- package/__private__/components/NotificationCard/index.js +2 -0
- package/__private__/components/NotificationCard/index.js.map +1 -0
- package/__private__/components/NotificationCard/types.d.ts +28 -0
- package/__private__/components/NotificationCard/types.js +2 -0
- package/__private__/components/NotificationCard/types.js.map +1 -0
- package/__private__/components/NotificationsActions/NotificationsActions.d.ts +2 -0
- package/__private__/components/NotificationsActions/NotificationsActions.js +2 -0
- package/__private__/components/NotificationsActions/NotificationsActions.js.map +1 -0
- package/__private__/components/NotificationsActions/helpers.d.ts +23 -0
- package/__private__/components/NotificationsActions/helpers.js +2 -0
- package/__private__/components/NotificationsActions/helpers.js.map +1 -0
- package/__private__/components/NotificationsActions/index.d.ts +1 -0
- package/__private__/components/NotificationsActions/index.js +2 -0
- package/__private__/components/NotificationsActions/index.js.map +1 -0
- package/__private__/components/NotificationsActions/types.d.ts +32 -0
- package/__private__/components/NotificationsActions/types.js +2 -0
- package/__private__/components/NotificationsActions/types.js.map +1 -0
- package/__private__/components/Sidebar/Sidebar.css +1 -0
- package/__private__/components/Sidebar/Sidebar.d.ts +9 -0
- package/__private__/components/Sidebar/Sidebar.js +2 -0
- package/__private__/components/Sidebar/Sidebar.js.map +1 -0
- package/__private__/components/Sidebar/index.d.ts +1 -0
- package/__private__/components/Sidebar/index.js +2 -0
- package/__private__/components/Sidebar/index.js.map +1 -0
- package/__private__/hooks/useHideElementsLine.d.ts +8 -0
- package/__private__/hooks/useHideElementsLine.js +2 -0
- package/__private__/hooks/useHideElementsLine.js.map +1 -0
- package/__private__/mixs/MixPopoverAnimate/MixPopoverAnimate.css +1 -0
- package/__private__/mixs/MixPopoverAnimate/MixPopoverAnimate.d.ts +4 -0
- package/__private__/mixs/MixPopoverAnimate/MixPopoverAnimate.js +2 -0
- package/__private__/mixs/MixPopoverAnimate/MixPopoverAnimate.js.map +1 -0
- package/__private__/mixs/MixPopoverArrow/MixPopoverArrow.css +1 -0
- package/__private__/mixs/MixPopoverArrow/MixPopoverArrow.d.ts +8 -0
- package/__private__/mixs/MixPopoverArrow/MixPopoverArrow.js +2 -0
- package/__private__/mixs/MixPopoverArrow/MixPopoverArrow.js.map +1 -0
- package/__private__/utils/bem.d.ts +1 -0
- package/__private__/utils/bem.js +2 -0
- package/__private__/utils/bem.js.map +1 -0
- package/__private__/utils/types/PropsWithHTMLAttributes.d.ts +3 -0
- package/__private__/utils/types/PropsWithHTMLAttributes.js +2 -0
- package/__private__/utils/types/PropsWithHTMLAttributes.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _objectSpread from"@babel/runtime/helpers/objectSpread";import{getGroups as constaGetGroups}from"@consta/uikit/__internal__/src/utils/getGroups";import{format,isToday,isYesterday,startOfDay}from"date-fns";const defaultGetActionIcon=a=>a.icon,defaultGetActionLabel=a=>a.label,defaultGetActionOnClick=a=>a.onClick,defaultGetGroupId=a=>a.id,defaultGetGroupLabel=a=>a.label,defaultGetItemActions=a=>a.actions,defaultGetItemBadges=a=>a.badges,defaultGetItemDate=a=>a.date,defaultGetItemDescription=a=>a.description,defaultGetItemGroup=a=>a.group,defaultGetItemImage=a=>a.image,defaultGetItemLabel=a=>a.label,defaultGetItemRead=a=>a.read,defaultGetItemView=a=>a.view;export function withDefaultGetters(a){return _objectSpread({},a,{getActionIcon:a.getActionIcon||defaultGetActionIcon,getActionLabel:a.getActionLabel||defaultGetActionLabel,getActionOnClick:a.getActionOnClick||defaultGetActionOnClick,getGroupId:a.getGroupId||defaultGetGroupId,getGroupLabel:a.getGroupLabel||defaultGetGroupLabel,getItemActions:a.getItemActions||defaultGetItemActions,getItemBadges:a.getItemBadges||defaultGetItemBadges,getItemDate:a.getItemDate||defaultGetItemDate,getItemDescription:a.getItemDescription||defaultGetItemDescription,getItemGroup:a.getItemGroup||defaultGetItemGroup,getItemImage:a.getItemImage||defaultGetItemImage,getItemLabel:a.getItemLabel||defaultGetItemLabel,getItemRead:a.getItemRead||defaultGetItemRead,getItemView:a.getItemView||defaultGetItemView})}export const noGroupKey="no-group";export const defaultGroupLabelFormat=a=>isToday(a)?"\u0421\u0435\u0433\u043E\u0434\u043D\u044F":isYesterday(a)?"\u0412\u0447\u0435\u0440\u0430":format(a,"dd.MM.yyyy");const sortGroup=(c,a)=>c.key<a.key?1:c.key>a.key?-1:0;export const getGroups=(a,b,c,d,e,f)=>{if(c){return constaGetGroups(a,a=>{const b=e(a);return b?startOfDay(b).getTime():void 0},void 0,void 0,sortGroup,noGroupKey)}return constaGetGroups(a,d,b,f,void 0,noGroupKey)};
|
|
2
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/NotificationsList/helpers.ts"],"names":["getGroups","constaGetGroups","format","isToday","isYesterday","startOfDay","defaultGetActionIcon","action","icon","defaultGetActionLabel","label","defaultGetActionOnClick","onClick","defaultGetGroupId","group","id","defaultGetGroupLabel","defaultGetItemActions","item","actions","defaultGetItemBadges","badges","defaultGetItemDate","date","defaultGetItemDescription","description","defaultGetItemGroup","defaultGetItemImage","image","defaultGetItemLabel","defaultGetItemRead","read","defaultGetItemView","view","withDefaultGetters","props","getActionIcon","getActionLabel","getActionOnClick","getGroupId","getGroupLabel","getItemActions","getItemBadges","getItemDate","getItemDescription","getItemGroup","getItemImage","getItemLabel","getItemRead","getItemView","noGroupKey","defaultGroupLabelFormat","timestamp","sortGroup","a","b","key","items","groups","groupByDay","getTime"],"mappings":"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","sourcesContent":["import {\n NotificationsListPropGetActionIcon,\n NotificationsListPropGetActionLabel,\n NotificationsListPropGetActionOnClick,\n NotificationsListPropGetGroupId,\n NotificationsListPropGetGroupLabel,\n NotificationsListPropGetItemActions,\n NotificationsListPropGetItemBadges,\n NotificationsListPropGetItemDate,\n NotificationsListPropGetItemDescription,\n NotificationsListPropGetItemGroup,\n NotificationsListPropGetItemImage,\n NotificationsListPropGetItemLabel,\n NotificationsListPropGetItemRead,\n NotificationsListPropGetItemView,\n DefaultAction,\n DefaultGroup,\n DefaultItem,\n NotificationsListProps,\n NotificationsListPropGroupLabelFormat,\n} from './types'\n\nimport { getGroups as constaGetGroups } from '@consta/uikit/__internal__/src/utils/getGroups'\nimport { format, isToday, isYesterday, startOfDay } from 'date-fns'\n\nconst defaultGetActionIcon: NotificationsListPropGetActionIcon<DefaultAction> = action =>\n action.icon\nconst defaultGetActionLabel: NotificationsListPropGetActionLabel<DefaultAction> = action =>\n action.label\nconst defaultGetActionOnClick: NotificationsListPropGetActionOnClick<DefaultAction> = action =>\n action.onClick\nconst defaultGetGroupId: NotificationsListPropGetGroupId<DefaultGroup> = group => group.id\nconst defaultGetGroupLabel: NotificationsListPropGetGroupLabel<DefaultGroup> = group => group.label\nconst defaultGetItemActions: NotificationsListPropGetItemActions<DefaultItem> = item => item.actions\nconst defaultGetItemBadges: NotificationsListPropGetItemBadges<DefaultItem> = item => item.badges\nconst defaultGetItemDate: NotificationsListPropGetItemDate<DefaultItem> = item => item.date\nconst defaultGetItemDescription: NotificationsListPropGetItemDescription<DefaultItem> = item =>\n item.description\nconst defaultGetItemGroup: NotificationsListPropGetItemGroup<DefaultItem> = item => item.group\nconst defaultGetItemImage: NotificationsListPropGetItemImage<DefaultItem> = item => item.image\nconst defaultGetItemLabel: NotificationsListPropGetItemLabel<DefaultItem> = item => item.label\nconst defaultGetItemRead: NotificationsListPropGetItemRead<DefaultItem> = item => item.read\nconst defaultGetItemView: NotificationsListPropGetItemView<DefaultItem> = item => item.view\n\nexport function withDefaultGetters<ITEM, GROUP, ACTION>(\n props: NotificationsListProps<ITEM, GROUP, ACTION>\n) {\n return {\n ...props,\n getActionIcon: props.getActionIcon || defaultGetActionIcon,\n getActionLabel: props.getActionLabel || defaultGetActionLabel,\n getActionOnClick: props.getActionOnClick || defaultGetActionOnClick,\n getGroupId: props.getGroupId || defaultGetGroupId,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getItemActions: props.getItemActions || defaultGetItemActions,\n getItemBadges: props.getItemBadges || defaultGetItemBadges,\n getItemDate: props.getItemDate || defaultGetItemDate,\n getItemDescription: props.getItemDescription || defaultGetItemDescription,\n getItemGroup: props.getItemGroup || defaultGetItemGroup,\n getItemImage: props.getItemImage || defaultGetItemImage,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemRead: props.getItemRead || defaultGetItemRead,\n getItemView: props.getItemView || defaultGetItemView,\n }\n}\n\ntype ReturnedGroup<ITEM, GROUP> = {\n items: ITEM[]\n key: string | number\n group?: GROUP\n groupIndex: number\n}\n\nexport const noGroupKey = 'no-group'\n\nexport const defaultGroupLabelFormat: NotificationsListPropGroupLabelFormat<true> = timestamp => {\n if (isToday(timestamp)) {\n return 'Сегодня'\n }\n if (isYesterday(timestamp)) {\n return 'Вчера'\n }\n return format(timestamp, 'dd.MM.yyyy')\n}\n\nconst sortGroup = (a: { key: string | number }, b: { key: string | number }) => {\n if (a.key < b.key) {\n return 1\n }\n if (a.key > b.key) {\n return -1\n }\n return 0\n}\n\nexport const getGroups = <ITEM, GROUP>(\n items: ITEM[],\n groups: GROUP[] | undefined,\n groupByDay: boolean,\n getItemGroup: NotificationsListPropGetItemGroup<ITEM>,\n getItemDate: NotificationsListPropGetItemDate<ITEM>,\n getGroupId: NotificationsListPropGetGroupId<GROUP>\n): Array<ReturnedGroup<ITEM, GROUP>> => {\n if (groupByDay) {\n const getItemGroupByDate = (item: ITEM) => {\n const date = getItemDate(item)\n return date ? startOfDay(date).getTime() : undefined\n }\n\n return constaGetGroups<ITEM, GROUP>(\n items,\n getItemGroupByDate,\n undefined,\n undefined,\n sortGroup,\n noGroupKey\n )\n }\n return constaGetGroups(items, getItemGroup, groups, getGroupId, undefined, noGroupKey)\n}\n"],"file":"helpers.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./NotificationsList";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/NotificationsList/index.ts"],"names":[],"mappings":"AAAA","sourcesContent":["export * from './NotificationsList'\n"],"file":"index.js"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BadgePropStatus } from '@consta/uikit/Badge';
|
|
3
|
+
import { IconProps } from '@consta/uikit/Icon';
|
|
4
|
+
import { PropsWithHTMLAttributesAndRef } from "../__private__/utils/types/PropsWithHTMLAttributes";
|
|
5
|
+
export declare type DefaultAction = {
|
|
6
|
+
label: string;
|
|
7
|
+
onClick?: React.EventHandler<React.MouseEvent>;
|
|
8
|
+
icon?: React.FC<IconProps>;
|
|
9
|
+
};
|
|
10
|
+
export declare type Badge = {
|
|
11
|
+
label: string;
|
|
12
|
+
status?: BadgePropStatus;
|
|
13
|
+
};
|
|
14
|
+
export declare type DefaultGroup = {
|
|
15
|
+
label: string;
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
export declare type DefaultItem = {
|
|
19
|
+
label: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
image?: string;
|
|
22
|
+
read?: boolean;
|
|
23
|
+
date?: Date;
|
|
24
|
+
badges?: Badge[];
|
|
25
|
+
actions?: DefaultAction[];
|
|
26
|
+
onClick?: React.EventHandler<React.MouseEvent>;
|
|
27
|
+
group?: string;
|
|
28
|
+
view?: 'default' | 'user';
|
|
29
|
+
};
|
|
30
|
+
export declare type NotificationsListPropGetItemLabel<ITEM> = (item: ITEM) => string;
|
|
31
|
+
export declare type NotificationsListPropGetItemDescription<ITEM> = (item: ITEM) => string | undefined;
|
|
32
|
+
export declare type NotificationsListPropGetItemImage<ITEM> = (item: ITEM) => string | undefined;
|
|
33
|
+
export declare type NotificationsListPropGetItemRead<ITEM> = (item: ITEM) => boolean | undefined;
|
|
34
|
+
export declare type NotificationsListPropGetItemDate<ITEM> = (item: ITEM) => Date | undefined;
|
|
35
|
+
export declare type NotificationsListPropGetItemBadges<ITEM> = (item: ITEM) => Badge[] | undefined;
|
|
36
|
+
export declare type NotificationsListPropGetItemActions<ITEM> = (item: ITEM) => DefaultAction[] | undefined;
|
|
37
|
+
export declare type NotificationsListPropGetItemGroup<ITEM> = (item: ITEM) => string | undefined;
|
|
38
|
+
export declare type NotificationsListPropGetItemView<ITEM> = (item: ITEM) => 'default' | 'user' | undefined;
|
|
39
|
+
export declare type NotificationsListPropItemDateFormat = (date: Date) => string;
|
|
40
|
+
export declare type NotificationsListPropGetActionLabel<ACTION> = (action: ACTION) => string;
|
|
41
|
+
export declare type NotificationsListPropGetActionIcon<ACTION> = (action: ACTION) => React.FC<IconProps> | undefined;
|
|
42
|
+
export declare type NotificationsListPropGetActionOnClick<ACTION> = (action: ACTION) => React.EventHandler<React.MouseEvent> | undefined;
|
|
43
|
+
export declare type NotificationsListPropGetGroupLabel<GROUP> = (group: GROUP) => string;
|
|
44
|
+
export declare type NotificationsListPropGetGroupId<GROUP> = (group: GROUP) => string | number;
|
|
45
|
+
export declare type NotificationsListPropGroupLabelFormat<GROUP_BY_DAY> = GROUP_BY_DAY extends true ? (timestamp: number) => string : never;
|
|
46
|
+
export declare type Props<ITEM, GROUP, ACTION, GROUP_BY_DAY extends boolean> = {
|
|
47
|
+
children?: never;
|
|
48
|
+
items: ITEM[];
|
|
49
|
+
itemDateFormat?: NotificationsListPropItemDateFormat;
|
|
50
|
+
title?: string;
|
|
51
|
+
actions?: ACTION[];
|
|
52
|
+
getItemLabel?: NotificationsListPropGetItemLabel<ITEM>;
|
|
53
|
+
getItemDescription?: NotificationsListPropGetItemDescription<ITEM>;
|
|
54
|
+
getItemImage?: NotificationsListPropGetItemImage<ITEM>;
|
|
55
|
+
getItemRead?: NotificationsListPropGetItemRead<ITEM>;
|
|
56
|
+
getItemDate?: NotificationsListPropGetItemDate<ITEM>;
|
|
57
|
+
getItemBadges?: NotificationsListPropGetItemBadges<ITEM>;
|
|
58
|
+
getItemActions?: NotificationsListPropGetItemActions<ITEM>;
|
|
59
|
+
getItemGroup?: NotificationsListPropGetItemGroup<ITEM>;
|
|
60
|
+
getItemView?: NotificationsListPropGetItemView<ITEM>;
|
|
61
|
+
getActionLabel?: NotificationsListPropGetActionLabel<ACTION>;
|
|
62
|
+
getActionIcon?: NotificationsListPropGetActionIcon<ACTION>;
|
|
63
|
+
getActionOnClick?: NotificationsListPropGetActionOnClick<ACTION>;
|
|
64
|
+
getGroupLabel?: NotificationsListPropGetGroupLabel<GROUP>;
|
|
65
|
+
getGroupId?: NotificationsListPropGetGroupId<GROUP>;
|
|
66
|
+
groupByDay?: GROUP_BY_DAY;
|
|
67
|
+
groupLabelFormat?: NotificationsListPropGroupLabelFormat<GROUP_BY_DAY>;
|
|
68
|
+
groups?: GROUP_BY_DAY extends true ? never : GROUP[];
|
|
69
|
+
onClose?: React.EventHandler<React.MouseEvent>;
|
|
70
|
+
} & (ACTION extends {
|
|
71
|
+
label: DefaultAction['label'];
|
|
72
|
+
} ? {} : {
|
|
73
|
+
getActionLabel: NotificationsListPropGetItemActions<ACTION>;
|
|
74
|
+
}) & (GROUP extends {
|
|
75
|
+
label: DefaultGroup['label'];
|
|
76
|
+
} ? {} : {
|
|
77
|
+
getGroupLabel: NotificationsListPropGetGroupLabel<GROUP>;
|
|
78
|
+
}) & (GROUP extends {
|
|
79
|
+
id: DefaultGroup['id'];
|
|
80
|
+
} ? {} : {
|
|
81
|
+
getGroupId: NotificationsListPropGetGroupId<GROUP>;
|
|
82
|
+
}) & (ITEM extends {
|
|
83
|
+
label: DefaultItem['label'];
|
|
84
|
+
} ? {} : {
|
|
85
|
+
getItemLabel: NotificationsListPropGetItemLabel<ITEM>;
|
|
86
|
+
});
|
|
87
|
+
export declare type NotificationsListProps<ITEM = DefaultItem, GROUP = DefaultGroup, ACTION = DefaultAction, GROUP_BY_DAY extends boolean = false> = PropsWithHTMLAttributesAndRef<Props<ITEM, GROUP, ACTION, GROUP_BY_DAY>, HTMLDivElement>;
|
|
88
|
+
export declare type NotificationsListComponent = <ITEM = DefaultItem, GROUP = DefaultGroup, ACTION = DefaultAction, GROUP_BY_DAY extends boolean = false>(props: NotificationsListProps<ITEM, GROUP, ACTION, GROUP_BY_DAY>) => React.ReactElement | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|
package/README.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# [Дизайн-система Consta](http://consta.gazprom-neft.ru/) | Header
|
|
2
|
+
|
|
3
|
+
# Как использовать
|
|
4
|
+
|
|
5
|
+
## Установите пакет
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
# NPM
|
|
9
|
+
$ npm install @consta/table
|
|
10
|
+
|
|
11
|
+
# Yarn
|
|
12
|
+
$ yarn add @consta/table
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Подключите зависимости
|
|
16
|
+
|
|
17
|
+
Чтобы начать работу, установите библиотеку [`@consta/uikit`](https://www.npmjs.com/package/@consta/uikit) и [настройте тему](https://consta-uikit.vercel.app/?path=/docs/components-theme--playground).
|
|
18
|
+
|
|
19
|
+
### Можно использовать компоненты
|
|
20
|
+
|
|
21
|
+
Например, так:
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
import { Theme, presetGpnDefault } from '@consta/uikit/Theme'
|
|
25
|
+
import { Header } from '@consta/header'
|
|
26
|
+
|
|
27
|
+
const App = () => {
|
|
28
|
+
return (
|
|
29
|
+
<Theme preset={presetGpnDefault}>
|
|
30
|
+
<Header />
|
|
31
|
+
</Theme>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Разработка
|
|
37
|
+
|
|
38
|
+
### Подготовка окружения
|
|
39
|
+
|
|
40
|
+
Рабочее окружение должно содержать NodeJS и Yarn, необходимые версии можно узнать в файле [package.json](./package.json) в блоке **engines**.
|
|
41
|
+
|
|
42
|
+
Чтобы установить зависимости, выполните команду:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
$ yarn install
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Основные команды
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
# Сборка и старт Storybook
|
|
52
|
+
$ yarn start
|
|
53
|
+
|
|
54
|
+
# Сборка для production
|
|
55
|
+
$ yarn build
|
|
56
|
+
|
|
57
|
+
# Линтинг всех файлов
|
|
58
|
+
$ yarn lint
|
|
59
|
+
|
|
60
|
+
# Форматирование всех файлов prettier
|
|
61
|
+
$ yarn format
|
|
62
|
+
|
|
63
|
+
# Запуск юнит-тестов
|
|
64
|
+
$ yarn unit
|
|
65
|
+
|
|
66
|
+
# Запуск юнит-тестов, тестирование TS, линтинг файлов
|
|
67
|
+
$ yarn test
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Документация
|
|
71
|
+
|
|
72
|
+
[Посмотреть документацию и примеры](https://rc-table.vercel.app/)
|
|
73
|
+
|
|
74
|
+
## Контрибьюторам
|
|
75
|
+
|
|
76
|
+
Будем рады, если вы захотите принять участие в разработке дизайн-системы =) Но сначала прочитайте [инструкцию для контрибьюторов](https://consta-uikit.vercel.app/?path=/docs/common-develop-contributors--page).
|
|
77
|
+
|
|
78
|
+
## Лицензия
|
|
79
|
+
|
|
80
|
+
Дизайн-систему можно использовать бесплатно, она распространяется ПАО «Газпром нефть» на условиях открытой [лицензии MIT](https://consta.gazprom-neft.ru/static/licence_mit.pdf).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.che--TileMenu-List{display:grid}.che--TileMenu-List_view_cards{grid-template-columns:repeat(3,1fr);grid-row-gap:var(--space-2xs);grid-column-gap:var(--space-2xs)}.che--TileMenu-List_view_lines{grid-template-columns:repeat(1,1fr)}.che--TileMenu-List_view_twoLines{grid-template-columns:repeat(2,1fr);grid-column-gap:calc(var(--space-xl) + var(--space-2xs))}.che--TileMenu-Popover{--popover-bg-color:var(--color-bg-default);--popover-arrow-bg-color:var(--popover-bg-color);position:relative;width:calc(100vw - var(--space-l));max-width:var(--popover-max-width);border-radius:var(--control-radius);background:var(--popover-bg-color);box-shadow:var(--shadow-layer)}.che--TileMenu-Popover_view_cards{--popover-max-width:320px}.che--TileMenu-Popover_view_lines{--popover-max-width:520px}.che--TileMenu-Popover_view_twoLines{--popover-max-width:1000px}.che--TileMenu-ListWrapper{overflow:hidden;border-radius:var(--control-radius)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _jsx from"@babel/runtime/helpers/jsx";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import React,{forwardRef,useRef,useState,useCallback}from"react";import{cn}from"../__private__/utils/bem";import{IconBento}from"@consta/uikit/IconBento";import{Button}from"@consta/uikit/Button";import{CSSTransition}from"react-transition-group";import{useFlag}from"@consta/uikit/useFlag";import{useForkRef}from"@consta/uikit/useForkRef";import{Popover}from"@consta/uikit/Popover";import{cnMixPopoverArrow}from"../__private__/mixs/MixPopoverArrow/MixPopoverArrow";import{cnMixPopoverAnimateForCssTransition}from"../__private__/mixs/MixPopoverAnimate/MixPopoverAnimate";import{Sidebar}from"../__private__/components/Sidebar";import{tileMenuPropViewDefault}from"./types";import{TileMenuList}from"./TileMenuList/TileMenuList";import"./TileMenu.css";export const cnTileMenu=cn("TileMenu");const ARROW_SIZE=6,ARROW_OFFSET=10;function TileMenuRender(a,b){var c;const{view:p=tileMenuPropViewDefault,items:d,isMobile:e,className:f,children:g,listClassName:h,getItemDescription:i,getItemHref:j,getItemImage:k,getItemOnClick:l,getItemTitle:m,title:n,onItemClick:o}=a,q=_objectWithoutProperties(a,["view","items","isMobile","className","children","listClassName","getItemDescription","getItemHref","getItemImage","getItemOnClick","getItemTitle","title","onItemClick"]),r=useRef(null),[s,t]=useState(void 0),[u,{toogle:v,off:w}]=useFlag(),x=useCallback(a=>{t(a)},[]),y={className:h,getItemDescription:i,getItemHref:j,getItemImage:k,getItemOnClick:l,getItemTitle:m,items:d,view:p,onItemClick:o},z="number"==typeof(null===(c=a.style)||void 0===c?void 0:c.zIndex)?a.style.zIndex+1:void 0;return React.createElement(React.Fragment,null,React.createElement(Button,Object.assign({},q,{size:"s",view:"clear",className:cnTileMenu(null,[f]),iconLeft:IconBento,ref:useForkRef([b,r]),onClick:v})),e?_jsx(Sidebar,{isOpen:u,onClickOutside:w,onClose:w,title:n,style:{zIndex:z}},void 0,React.createElement(TileMenuList,y)):_jsx(CSSTransition,{classNames:cnMixPopoverAnimateForCssTransition,timeout:200,unmountOnExit:!0,in:u},void 0,_jsx(Popover,{className:cnTileMenu("Popover",{view:p}),anchorRef:r,arrowOffset:ARROW_OFFSET+ARROW_SIZE,offset:10,onSetDirection:x,style:{"--popover-arrow-size":`${ARROW_SIZE}px`,"--popover-arrow-offset":`${ARROW_OFFSET}px`,zIndex:z},onClickOutside:w},void 0,_jsx("div",{className:cnMixPopoverArrow({direction:s})}),_jsx("div",{className:cnTileMenu("ListWrapper")},void 0,React.createElement(TileMenuList,y)))))}export const TileMenu=forwardRef(TileMenuRender);export*from"./types";
|
|
2
|
+
//# sourceMappingURL=TileMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/TileMenu/TileMenu.tsx"],"names":["React","forwardRef","useRef","useState","useCallback","cn","IconBento","Button","CSSTransition","useFlag","useForkRef","Popover","cnMixPopoverArrow","cnMixPopoverAnimateForCssTransition","Sidebar","tileMenuPropViewDefault","TileMenuList","cnTileMenu","ARROW_SIZE","ARROW_OFFSET","TileMenuRender","props","ref","view","items","isMobile","className","children","listClassName","getItemDescription","getItemHref","getItemImage","getItemOnClick","getItemTitle","title","onItemClick","otherProps","buttonRef","direction","setDirection","visibleMenu","toogle","off","onSetDirection","dir","listProps","elementZIndex","style","zIndex","TileMenu"],"mappings":"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","sourcesContent":["import React, { forwardRef, useRef, useState, useCallback } from 'react'\n\nimport { cn } from '@/__private__/utils/bem'\nimport { IconBento } from '@consta/uikit/IconBento'\nimport { Button } from '@consta/uikit/Button'\nimport { CSSTransition } from 'react-transition-group'\nimport { useFlag } from '@consta/uikit/useFlag'\nimport { useForkRef } from '@consta/uikit/useForkRef'\nimport { Popover, Direction } from '@consta/uikit/Popover'\nimport { cnMixPopoverArrow } from '@/__private__/mixs/MixPopoverArrow/MixPopoverArrow'\nimport { cnMixPopoverAnimateForCssTransition } from '@/__private__/mixs/MixPopoverAnimate/MixPopoverAnimate'\nimport { Sidebar } from '@/__private__/components/Sidebar'\nimport { TileMenuProps, tileMenuPropViewDefault, TileMenuComponent } from './types'\n\nimport { TileMenuList } from './TileMenuList/TileMenuList'\n\nimport './TileMenu.css'\n\nexport const cnTileMenu = cn('TileMenu')\n\nconst ARROW_SIZE = 6\nconst ARROW_OFFSET = 10\n\nfunction TileMenuRender(props: TileMenuProps, ref: React.Ref<HTMLButtonElement>) {\n const {\n view = tileMenuPropViewDefault,\n items,\n isMobile,\n className,\n children,\n listClassName,\n getItemDescription,\n getItemHref,\n getItemImage,\n getItemOnClick,\n getItemTitle,\n title,\n onItemClick,\n ...otherProps\n } = props\n\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n const [direction, setDirection] = useState<Direction | undefined>(undefined)\n\n const [visibleMenu, { toogle, off }] = useFlag()\n\n const onSetDirection = useCallback((dir: Direction) => {\n setDirection(dir)\n }, [])\n\n const listProps = {\n className: listClassName,\n getItemDescription,\n getItemHref,\n getItemImage,\n getItemOnClick,\n getItemTitle,\n items,\n view,\n onItemClick,\n }\n\n const elementZIndex = typeof props.style?.zIndex === 'number' ? props.style.zIndex + 1 : undefined\n\n return (\n <>\n <Button\n {...otherProps}\n size=\"s\"\n view=\"clear\"\n className={cnTileMenu(null, [className])}\n iconLeft={IconBento}\n ref={useForkRef([ref, buttonRef])}\n onClick={toogle}\n />\n {isMobile ? (\n <Sidebar\n isOpen={visibleMenu}\n onClickOutside={off}\n onClose={off}\n title={title}\n style={{ zIndex: elementZIndex }}\n >\n <TileMenuList {...listProps} />\n </Sidebar>\n ) : (\n <CSSTransition\n classNames={cnMixPopoverAnimateForCssTransition}\n timeout={200}\n unmountOnExit\n in={visibleMenu}\n >\n <Popover\n className={cnTileMenu('Popover', { view })}\n anchorRef={buttonRef}\n arrowOffset={ARROW_OFFSET + ARROW_SIZE}\n offset={ARROW_SIZE + 4}\n onSetDirection={onSetDirection}\n style={{\n ['--popover-arrow-size' as string]: `${ARROW_SIZE}px`,\n ['--popover-arrow-offset' as string]: `${ARROW_OFFSET}px`,\n zIndex: elementZIndex,\n }}\n onClickOutside={off}\n >\n <div className={cnMixPopoverArrow({ direction })} />\n <div className={cnTileMenu('ListWrapper')}>\n <TileMenuList {...listProps} />\n </div>\n </Popover>\n </CSSTransition>\n )}\n </>\n )\n}\n\nexport const TileMenu = forwardRef(TileMenuRender) as TileMenuComponent\n\nexport * from './types'\n"],"file":"TileMenu.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.che--TileMenuItem{--tile-menu-item-image-size:calc(var(--space-4xl) - var(--space-2xs));display:flex;cursor:pointer;text-decoration:none;color:var(--color-typo-primary)}.che--TileMenuItem_view_card{--tile-menu-item-image-margin:0 auto var(--space-xs) auto;flex-direction:column;border-radius:var(--control-radius);transition:background .2s}.che--TileMenuItem_view_card:hover{background:var(--color-control-bg-clear-hover)}.che--TileMenuItem_view_line{--tile-menu-item-image-margin:0 var(--space-xs) 0 0}.che--TileMenuItem_view_line:hover{--tile-menu-item-title-color:var(--color-typo-link-hover)}.che--TileMenuItem-ImageWrapper{overflow:hidden;flex:none;width:var(--tile-menu-item-image-size);height:var(--tile-menu-item-image-size);margin:var(--tile-menu-item-image-margin);border-radius:50%}.che--TileMenuItem-ImageWrapper>*{width:100%;height:100%}.che--TileMenuItem-Title{color:var(--tile-menu-item-title-color);transition:color .2s}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './TileMenuItem.css';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare const tileMenuItemPropView: readonly ["card", "line"];
|
|
4
|
+
export declare type TileMenuItemPropView = typeof tileMenuItemPropView[number];
|
|
5
|
+
declare type TileMenuItemProps = {
|
|
6
|
+
image?: string | React.FC;
|
|
7
|
+
title: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
view?: TileMenuItemPropView;
|
|
10
|
+
};
|
|
11
|
+
export declare const TileMenuItem: import("@consta/uikit/__internal__/src/utils/types/PropsWithAsAttributes").ComponentWithAs<TileMenuItemProps, "div">;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _jsx from"@babel/runtime/helpers/jsx";import"./TileMenuItem.css";import React from"react";import{cn}from"../../__private__/utils/bem";import{Text}from"@consta/uikit/Text";import{cnMixSpace}from"@consta/uikit/MixSpace";import{forwardRefWithAs}from"@consta/uikit/__internal__/src/utils/types/PropsWithAsAttributes";export const tileMenuItemPropView=["card","line"];const cnTileMenuItem=cn("TileMenuItem"),renderImage=(a,b)=>{if("string"==typeof a)return _jsx("img",{src:a,alt:b});return _jsx(a,{})};export const TileMenuItem=forwardRefWithAs((a,b)=>{const{image:c,className:d,title:e,description:f,view:g="line",as:h="div"}=a,i=_objectWithoutProperties(a,["image","className","title","description","view","as"]),j="card"===g,k="line"===g;return React.createElement(h,Object.assign({},i,{ref:b,className:cnTileMenuItem({view:g},[j?cnMixSpace({p:"s",pT:"m"}):cnMixSpace({pV:"s"}),d])}),c&&_jsx("div",{className:cnTileMenuItem("ImageWrapper")},void 0,renderImage(c,e)),_jsx("div",{className:cnTileMenuItem("ContentWrapper")},void 0,_jsx(Text,{weight:k?"bold":void 0,align:j?"center":void 0,className:cnTileMenuItem("Title",[k?cnMixSpace({pB:"2xs"}):void 0])},void 0,e),f&&k&&_jsx(Text,{view:"secondary",className:cnTileMenuItem("Description")},void 0,f)))});
|
|
2
|
+
//# sourceMappingURL=TileMenuItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/TileMenu/TileMenuItem/TileMenuItem.tsx"],"names":["React","cn","Text","cnMixSpace","forwardRefWithAs","tileMenuItemPropView","cnTileMenuItem","renderImage","image","title","TileMenuItem","props","ref","className","description","view","as","otherProps","viewIsCard","viewIsLine","p","pT","pV","pB"],"mappings":"kIAAA,2BAEA,MAAOA,CAAAA,KAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,mCAEA,OAASC,IAAT,KAAqB,oBAArB,CACA,OAASC,UAAT,KAA2B,wBAA3B,CACA,OAASC,gBAAT,KAAiC,kEAAjC,CAEA,MAAO,MAAMC,CAAAA,oBAAoB,CAAG,CAAC,MAAD,CAAS,MAAT,CAA7B,C,KAUDC,CAAAA,cAAc,CAAGL,EAAE,CAAC,cAAD,C,CAEnBM,WAAW,CAAG,CAACC,CAAD,CAA2BC,CAA3B,GAA6C,CAC/D,GAAqB,QAAjB,QAAOD,CAAAA,CAAX,CACE,MAAO,aAAK,GAAG,CAAEA,CAAV,CAAiB,GAAG,CAAEC,CAAtB,EAAP,CAGF,MAAO,MADgBD,CAChB,IACR,C,CAED,MAAO,MAAME,CAAAA,YAAY,CAAGN,gBAAgB,CAAoB,CAACO,CAAD,CAAQC,CAAR,GAAgB,MACxE,CAAEJ,KAAK,CAALA,CAAF,CAASK,SAAS,CAATA,CAAT,CAAoBJ,KAAK,CAALA,CAApB,CAA2BK,WAAW,CAAXA,CAA3B,CAAwCC,IAAI,CAAJA,CAAI,CAAG,MAA/C,CAAuDC,EAAE,CAAFA,CAAE,CAAG,KAA5D,EAAqFL,CADb,CACFM,CADE,0BACaN,CADb,0DAIxEO,CAAU,CAAY,MAAT,GAAAH,CAJ2D,CAKxEI,CAAU,CAAY,MAAT,GAAAJ,CAL2D,CAO9E,MACE,qBALUC,CAKV,kBACMC,CADN,EAEE,GAAG,CAAEL,CAFP,CAGE,SAAS,CAAEN,cAAc,CAAC,CAAES,IAAI,CAAJA,CAAF,CAAD,CAAW,CAClCG,CAAU,CAAGf,UAAU,CAAC,CAAEiB,CAAC,CAAE,GAAL,CAAUC,EAAE,CAAE,GAAd,CAAD,CAAb,CAAqClB,UAAU,CAAC,CAAEmB,EAAE,CAAE,GAAN,CAAD,CADvB,CAElCT,CAFkC,CAAX,CAH3B,GAQGL,CAAK,EAAI,YAAK,SAAS,CAAEF,cAAc,CAAC,cAAD,CAA9B,SAAiDC,WAAW,CAACC,CAAD,CAAQC,CAAR,CAA5D,CARZ,CASE,YAAK,SAAS,CAAEH,cAAc,CAAC,gBAAD,CAA9B,SACE,KAAC,IAAD,EACE,MAAM,CAAEa,CAAU,CAAG,MAAH,OADpB,CAEE,KAAK,CAAED,CAAU,CAAG,QAAH,OAFnB,CAGE,SAAS,CAAEZ,cAAc,CAAC,OAAD,CAAU,CAACa,CAAU,CAAGhB,UAAU,CAAC,CAAEoB,EAAE,CAAE,KAAN,CAAD,CAAb,OAAX,CAAV,CAH3B,SAKGd,CALH,CADF,CAQGK,CAAW,EAAIK,CAAf,EACC,KAAC,IAAD,EAAM,IAAI,CAAC,WAAX,CAAuB,SAAS,CAAEb,cAAc,CAAC,aAAD,CAAhD,SACGQ,CADH,CATJ,CATF,CAyBH,CAjC2C,CAArC","sourcesContent":["import './TileMenuItem.css'\n\nimport React from 'react'\n\nimport { cn } from '@/__private__/utils/bem'\n\nimport { Text } from '@consta/uikit/Text'\nimport { cnMixSpace } from '@consta/uikit/MixSpace'\nimport { forwardRefWithAs } from '@consta/uikit/__internal__/src/utils/types/PropsWithAsAttributes'\n\nexport const tileMenuItemPropView = ['card', 'line'] as const\nexport type TileMenuItemPropView = typeof tileMenuItemPropView[number]\n\ntype TileMenuItemProps = {\n image?: string | React.FC\n title: string\n description?: string\n view?: TileMenuItemPropView\n}\n\nconst cnTileMenuItem = cn('TileMenuItem')\n\nconst renderImage = (image: string | React.FC, title: string) => {\n if (typeof image === 'string') {\n return <img src={image} alt={title} />\n }\n const ImageComponent = image\n return <ImageComponent />\n}\n\nexport const TileMenuItem = forwardRefWithAs<TileMenuItemProps>((props, ref) => {\n const { image, className, title, description, view = 'line', as = 'div', ...otherProps } = props\n\n const Tag = as as string\n const viewIsCard = view === 'card'\n const viewIsLine = view === 'line'\n\n return (\n <Tag\n {...otherProps}\n ref={ref}\n className={cnTileMenuItem({ view }, [\n viewIsCard ? cnMixSpace({ p: 's', pT: 'm' }) : cnMixSpace({ pV: 's' }),\n className,\n ])}\n >\n {image && <div className={cnTileMenuItem('ImageWrapper')}>{renderImage(image, title)}</div>}\n <div className={cnTileMenuItem('ContentWrapper')}>\n <Text\n weight={viewIsLine ? 'bold' : undefined}\n align={viewIsCard ? 'center' : undefined}\n className={cnTileMenuItem('Title', [viewIsLine ? cnMixSpace({ pB: '2xs' }) : undefined])}\n >\n {title}\n </Text>\n {description && viewIsLine && (\n <Text view=\"secondary\" className={cnTileMenuItem('Description')}>\n {description}\n </Text>\n )}\n </div>\n </Tag>\n )\n})\n"],"file":"TileMenuItem.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.che--TileMenuList{display:grid;overflow:auto}.che--TileMenuList_view_cards{grid-template-columns:repeat(3,1fr);grid-row-gap:var(--space-2xs);grid-column-gap:var(--space-2xs)}.che--TileMenuList_view_lines{grid-template-columns:repeat(1,1fr)}.che--TileMenuList_view_twoLines{grid-template-columns:repeat(2,1fr);grid-column-gap:calc(var(--space-xl) + var(--space-2xs))}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _jsx from"@babel/runtime/helpers/jsx";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import React from"react";import{cn}from"../../__private__/utils/bem";import{withDefaultGetters}from"../helpers";import{TileMenuItem}from"../TileMenuItem/TileMenuItem";import{getByMap}from"@consta/uikit/__internal__/src/utils/getByMap";import{cnMixSpace}from"@consta/uikit/MixSpace";import"./TileMenuList.css";export const cnTileMenuList=cn("TileMenuList");const itemViewMap={lines:"line",twoLines:"line",cards:"card"};export const TileMenuList=a=>{const b=withDefaultGetters(a),{items:c,view:l="lines",className:d,children:e,getItemDescription:f,getItemImage:g,getItemTitle:h,getItemHref:i,getItemOnClick:j,onItemClick:k}=b,m=_objectWithoutProperties(b,["items","view","className","children","getItemDescription","getItemImage","getItemTitle","getItemHref","getItemOnClick","onItemClick"]);return React.createElement("div",Object.assign({},m,{className:cnTileMenuList({view:l},[cnMixSpace({p:"xl"}),d])}),c.map((a,b)=>_jsx(TileMenuItem,{className:cnTileMenuList("Item"),view:getByMap(itemViewMap,l),image:g(a),title:h(a),description:f(a),href:i(a),onClick:b=>{var c;null===k||void 0===k?void 0:k({item:a,e:b}),null===(c=j(a))||void 0===c?void 0:c(b)},as:"a"},cnTileMenuList("Item",{index:b}))))};
|
|
2
|
+
//# sourceMappingURL=TileMenuList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/TileMenu/TileMenuList/TileMenuList.tsx"],"names":["React","cn","withDefaultGetters","TileMenuItem","getByMap","cnMixSpace","cnTileMenuList","itemViewMap","lines","twoLines","cards","TileMenuList","props","items","view","className","children","getItemDescription","getItemImage","getItemTitle","getItemHref","getItemOnClick","onItemClick","otherProps","p","map","item","index","e"],"mappings":"kIAAA,MAAOA,CAAAA,KAAP,KAAkB,OAAlB,CAEA,OAASC,EAAT,mCAEA,OAASC,kBAAT,kBAEA,OAASC,YAAT,oCACA,OAASC,QAAT,KAAyB,+CAAzB,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAEA,2BAEA,MAAO,MAAMC,CAAAA,cAAc,CAAGL,EAAE,CAAC,cAAD,CAAzB,CAEP,KAAMM,CAAAA,WAAW,CAAG,CAClBC,KAAK,CAAE,MADW,CAElBC,QAAQ,CAAE,MAFQ,CAGlBC,KAAK,CAAE,MAHW,CAApB,CAMA,MAAO,MAAMC,CAAAA,YAAY,CAAKC,CAAD,EAA8B,CACzD,QAYIV,kBAAkB,CAACU,CAAD,CAZtB,CAAM,CACJC,KAAK,CAALA,CADI,CAEJC,IAAI,CAAJA,CAAI,CAAG,OAFH,CAGJC,SAAS,CAATA,CAHI,CAIJC,QAAQ,CAARA,CAJI,CAKJC,kBAAkB,CAAlBA,CALI,CAMJC,YAAY,CAAZA,CANI,CAOJC,YAAY,CAAZA,CAPI,CAQJC,WAAW,CAAXA,CARI,CASJC,cAAc,CAAdA,CATI,CAUJC,WAAW,CAAXA,CAVI,CAAN,GAWKC,CAXL,qKAcA,MACE,4CAASA,CAAT,EAAqB,SAAS,CAAEjB,cAAc,CAAC,CAAEQ,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACT,UAAU,CAAC,CAAEmB,CAAC,CAAE,IAAL,CAAD,CAAX,CAA0BT,CAA1B,CAAX,CAA9C,GACGF,CAAK,CAACY,GAAN,CAAU,CAACC,CAAD,CAAOC,CAAP,GAEP,KAAC,YAAD,EACE,SAAS,CAAErB,cAAc,CAAC,MAAD,CAD3B,CAGE,IAAI,CAAEF,QAAQ,CAACG,WAAD,CAAcO,CAAd,CAHhB,CAIE,KAAK,CAAEI,CAAY,CAACQ,CAAD,CAJrB,CAKE,KAAK,CAAEP,CAAY,CAACO,CAAD,CALrB,CAME,WAAW,CAAET,CAAkB,CAACS,CAAD,CANjC,CAOE,IAAI,CAAEN,CAAW,CAACM,CAAD,CAPnB,CAQE,OAAO,CAAEE,CAAC,EAAI,cACZN,CADY,WACZA,CADY,QACZA,CAAW,CAAG,CAAEI,IAAI,CAAJA,CAAF,CAAQE,CAAC,CAADA,CAAR,CAAH,CADC,WAEZP,CAAc,CAACK,CAAD,CAFF,qBAEZ,EAAuBE,CAAvB,CACD,CAXH,CAYE,EAAE,CAAC,GAZL,EAEOtB,cAAc,CAAC,MAAD,CAAS,CAAEqB,KAAK,CAALA,CAAF,CAAT,CAFrB,CAFH,CADH,CAqBH,CArCM","sourcesContent":["import React from 'react'\n\nimport { cn } from '@/__private__/utils/bem'\nimport { TileMenuListComponent, TileMenuListProps } from '../types'\nimport { withDefaultGetters } from '../helpers'\n\nimport { TileMenuItem } from '../TileMenuItem/TileMenuItem'\nimport { getByMap } from '@consta/uikit/__internal__/src/utils/getByMap'\nimport { cnMixSpace } from '@consta/uikit/MixSpace'\n\nimport './TileMenuList.css'\n\nexport const cnTileMenuList = cn('TileMenuList')\n\nconst itemViewMap = {\n lines: 'line',\n twoLines: 'line',\n cards: 'card',\n} as const\n\nexport const TileMenuList = ((props: TileMenuListProps) => {\n const {\n items,\n view = 'lines',\n className,\n children,\n getItemDescription,\n getItemImage,\n getItemTitle,\n getItemHref,\n getItemOnClick,\n onItemClick,\n ...otherProps\n } = withDefaultGetters(props)\n\n return (\n <div {...otherProps} className={cnTileMenuList({ view }, [cnMixSpace({ p: 'xl' }), className])}>\n {items.map((item, index) => {\n return (\n <TileMenuItem\n className={cnTileMenuList('Item')}\n key={cnTileMenuList('Item', { index })}\n view={getByMap(itemViewMap, view)}\n image={getItemImage(item)}\n title={getItemTitle(item)}\n description={getItemDescription(item)}\n href={getItemHref(item)}\n onClick={e => {\n onItemClick?.({ item, e })\n getItemOnClick(item)?.(e)\n }}\n as=\"a\"\n />\n )\n })}\n </div>\n )\n}) as TileMenuListComponent\n"],"file":"TileMenuList.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PropsWithHTMLAttributesAndRef } from "../../__private__/utils/types/PropsWithHTMLAttributes";
|
|
3
|
+
export declare type TileMenuPropView = 'lines' | 'twoLines' | 'cards';
|
|
4
|
+
export declare type TileMenuPropItem = {
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
image?: string;
|
|
8
|
+
} & ({
|
|
9
|
+
href: string;
|
|
10
|
+
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
|
|
11
|
+
} | {
|
|
12
|
+
href: undefined;
|
|
13
|
+
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
14
|
+
});
|
|
15
|
+
export declare type DefaultItem = {
|
|
16
|
+
image?: string | React.FC;
|
|
17
|
+
title: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
};
|
|
20
|
+
declare type GetItemImage<ITEM> = (item: ITEM) => string | React.FC | undefined;
|
|
21
|
+
declare type GetItemTitle<ITEM> = (item: ITEM) => string;
|
|
22
|
+
declare type GetItemDescription<ITEM> = (item: ITEM) => string;
|
|
23
|
+
export declare type TileMenuListProps<ITEM> = PropsWithHTMLAttributesAndRef<{
|
|
24
|
+
view?: TileMenuPropView;
|
|
25
|
+
items: ITEM[];
|
|
26
|
+
isMobile?: boolean;
|
|
27
|
+
getItemImage: GetItemImage<ITEM>;
|
|
28
|
+
getItemTitle: GetItemTitle<ITEM>;
|
|
29
|
+
getItemDescription: GetItemDescription<ITEM>;
|
|
30
|
+
}, HTMLDivElement>;
|
|
31
|
+
export declare type TileMenuListComponent = <ITEM = DefaultItem>(props: TileMenuListProps<ITEM>) => React.ReactElement | null;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|