@chayns-components/core 5.0.0-beta.4 → 5.0.0-beta.40
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/lib/components/accordion/Accordion.d.ts +51 -6
- package/lib/components/accordion/Accordion.js +86 -165
- package/lib/components/accordion/Accordion.js.map +1 -1
- package/lib/components/accordion/Accordion.styles.d.ts +7 -0
- package/lib/components/accordion/Accordion.styles.js +81 -0
- package/lib/components/accordion/Accordion.styles.js.map +1 -0
- package/lib/components/accordion/accordion-body/AccordionBody.d.ts +1 -2
- package/lib/components/accordion/accordion-body/AccordionBody.js +12 -18
- package/lib/components/accordion/accordion-body/AccordionBody.js.map +1 -1
- package/lib/components/accordion/accordion-body/AccordionBody.styles.d.ts +1 -0
- package/lib/components/accordion/accordion-body/AccordionBody.styles.js +14 -0
- package/lib/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -0
- package/lib/components/accordion/accordion-content/AccordionContent.d.ts +6 -3
- package/lib/components/accordion/accordion-content/AccordionContent.js +15 -22
- package/lib/components/accordion/accordion-content/AccordionContent.js.map +1 -1
- package/lib/components/accordion/accordion-content/AccordionContent.styles.d.ts +5 -0
- package/lib/components/accordion/accordion-content/AccordionContent.styles.js +24 -0
- package/lib/components/accordion/accordion-content/AccordionContent.styles.js.map +1 -0
- package/lib/components/accordion/accordion-group/AccordionGroup.d.ts +26 -0
- package/lib/components/accordion/accordion-group/AccordionGroup.js +57 -0
- package/lib/components/accordion/accordion-group/AccordionGroup.js.map +1 -0
- package/lib/components/accordion/accordion-head/AccordionHead.d.ts +9 -3
- package/lib/components/accordion/accordion-head/AccordionHead.js +94 -126
- package/lib/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/components/accordion/accordion-head/AccordionHead.styles.d.ts +19 -0
- package/lib/components/accordion/accordion-head/AccordionHead.styles.js +158 -0
- package/lib/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.d.ts +9 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.js +21 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.js.map +1 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.styles.d.ts +1 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.styles.js +13 -0
- package/lib/components/accordion/accordion-intro/AccordionIntro.styles.js.map +1 -0
- package/lib/components/accordion/utils.d.ts +11 -0
- package/lib/components/accordion/utils.js +36 -0
- package/lib/components/accordion/utils.js.map +1 -0
- package/lib/components/badge/Badge.d.ts +9 -1
- package/lib/components/badge/Badge.js +14 -26
- package/lib/components/badge/Badge.js.map +1 -1
- package/lib/components/badge/Badge.styles.d.ts +4 -0
- package/lib/components/badge/Badge.styles.js +32 -0
- package/lib/components/badge/Badge.styles.js.map +1 -0
- package/lib/components/button/Button.d.ts +2 -2
- package/lib/components/button/Button.js +15 -44
- package/lib/components/button/Button.js.map +1 -1
- package/lib/components/button/Button.styles.d.ts +7 -0
- package/lib/components/button/Button.styles.js +60 -0
- package/lib/components/button/Button.styles.js.map +1 -0
- package/lib/components/checkbox/Checkbox.d.ts +25 -0
- package/lib/components/checkbox/Checkbox.js +44 -0
- package/lib/components/checkbox/Checkbox.js.map +1 -0
- package/lib/components/checkbox/Checkbox.styles.d.ts +6 -0
- package/lib/components/checkbox/Checkbox.styles.js +125 -0
- package/lib/components/checkbox/Checkbox.styles.js.map +1 -0
- package/lib/components/color-scheme-provider/ColorSchemeProvider.d.ts +6 -0
- package/lib/components/color-scheme-provider/ColorSchemeProvider.js +38 -78
- package/lib/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/components/context-menu/ContextMenu.d.ts +51 -0
- package/lib/components/context-menu/ContextMenu.js +154 -0
- package/lib/components/context-menu/ContextMenu.js.map +1 -0
- package/lib/components/context-menu/ContextMenu.styles.d.ts +1 -0
- package/lib/components/context-menu/ContextMenu.styles.js +13 -0
- package/lib/components/context-menu/ContextMenu.styles.js.map +1 -0
- package/lib/components/context-menu/constants/alignment.d.ts +8 -0
- package/lib/components/context-menu/constants/alignment.js +17 -0
- package/lib/components/context-menu/constants/alignment.js.map +1 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.d.ts +10 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.js +78 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +11 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.styles.js +117 -0
- package/lib/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -0
- package/lib/components/grid-image/GridImage.d.ts +19 -0
- package/lib/components/grid-image/GridImage.js +46 -0
- package/lib/components/grid-image/GridImage.js.map +1 -0
- package/lib/components/grid-image/GridImage.styles.d.ts +21 -0
- package/lib/components/grid-image/GridImage.styles.js +105 -0
- package/lib/components/grid-image/GridImage.styles.js.map +1 -0
- package/lib/components/icon/Icon.d.ts +11 -3
- package/lib/components/icon/Icon.js +36 -80
- package/lib/components/icon/Icon.js.map +1 -1
- package/lib/components/icon/Icon.styles.d.ts +15 -0
- package/lib/components/icon/Icon.styles.js +76 -0
- package/lib/components/icon/Icon.styles.js.map +1 -0
- package/lib/components/icon/utils.d.ts +1 -0
- package/lib/components/icon/utils.js +13 -0
- package/lib/components/icon/utils.js.map +1 -0
- package/lib/components/input/Input.d.ts +33 -0
- package/lib/components/input/Input.js +72 -0
- package/lib/components/input/Input.js.map +1 -0
- package/lib/components/input/Input.styles.d.ts +6 -0
- package/lib/components/input/Input.styles.js +58 -0
- package/lib/components/input/Input.styles.js.map +1 -0
- package/lib/components/list/List.d.ts +18 -0
- package/lib/components/list/List.js +54 -0
- package/lib/components/list/List.js.map +1 -0
- package/lib/components/list/list-item/ListItem.d.ts +67 -0
- package/lib/components/list/list-item/ListItem.js +90 -0
- package/lib/components/list/list-item/ListItem.js.map +1 -0
- package/lib/components/list/list-item/ListItem.styles.d.ts +6 -0
- package/lib/components/list/list-item/ListItem.styles.js +56 -0
- package/lib/components/list/list-item/ListItem.styles.js.map +1 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.d.ts +3 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.js +36 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.js.map +1 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +1 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.styles.js +14 -0
- package/lib/components/list/list-item/list-item-body/ListItemBody.styles.js.map +1 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.d.ts +3 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.js +21 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.js.map +1 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.styles.d.ts +1 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.styles.js +19 -0
- package/lib/components/list/list-item/list-item-content/ListItemContent.styles.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.d.ts +18 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.js +100 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +20 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.styles.js +110 -0
- package/lib/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.d.ts +6 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.js +23 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.styles.d.ts +1 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.styles.js +32 -0
- package/lib/components/list/list-item/list-item-head/list-item-icon/ListItemIcon.styles.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.d.ts +7 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.js +44 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.js.map +1 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.styles.d.ts +10 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.styles.js +52 -0
- package/lib/components/list/list-item/list-item-head/list-item-image/ListItemImage.styles.js.map +1 -0
- package/lib/hooks/uuid.d.ts +1 -0
- package/lib/hooks/uuid.js +14 -0
- package/lib/hooks/uuid.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +75 -11
- package/lib/index.js.map +1 -1
- package/lib/types/chayns.d.ts +56 -0
- package/lib/types/chayns.js +14 -0
- package/lib/types/chayns.js.map +1 -0
- package/package.json +64 -62
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { FC, MouseEventHandler, ReactNode, TouchEventHandler } from 'react';
|
|
2
|
+
declare type ListItemProps = {
|
|
3
|
+
/**
|
|
4
|
+
* The content of the `ListItem` body. When the `ListItem` has children,
|
|
5
|
+
* it can be opened and also gets an icon as an indicator automatically.
|
|
6
|
+
*/
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Element that is displayed when hovering over the `ListItem` on the right
|
|
10
|
+
* side. On mobile devices, this element is not displayed.
|
|
11
|
+
*/
|
|
12
|
+
hoverItem?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* The FontAwesome or tobit icons to render like an image on the left side
|
|
15
|
+
* of the header. Multiple icons are stacked. See the `Icon` component
|
|
16
|
+
* documentation for more information.
|
|
17
|
+
*/
|
|
18
|
+
icons?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* A list of image URLs that are displayed on the left side of the header.
|
|
21
|
+
* If multiple URLs are passed, the image is assembled from the first three
|
|
22
|
+
* image URLs as a puzzle.
|
|
23
|
+
*/
|
|
24
|
+
images?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* This can be used to automatically expand the `ListItem` during the first render.
|
|
27
|
+
*/
|
|
28
|
+
isDefaultOpen?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* This overrides the internal opening state of the item and makes it controlled.
|
|
31
|
+
*/
|
|
32
|
+
isOpen?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Function to be executed when the header of the `ListItem` was clicked
|
|
35
|
+
*/
|
|
36
|
+
onClick?: MouseEventHandler<HTMLDivElement>;
|
|
37
|
+
/**
|
|
38
|
+
* Function to be executed when the header of the `ListItem` is pressed for
|
|
39
|
+
* 400 milliseconds.
|
|
40
|
+
*/
|
|
41
|
+
onLongPress?: TouchEventHandler<HTMLDivElement>;
|
|
42
|
+
/**
|
|
43
|
+
* Elements that are displayed on the left side of the header. If multiple
|
|
44
|
+
* elements are specified, they are displayed one aside the other.
|
|
45
|
+
*/
|
|
46
|
+
leftElements?: [ReactNode, ...ReactNode[]];
|
|
47
|
+
/**
|
|
48
|
+
* Elements that are displayed on the right side of the header. If multiple
|
|
49
|
+
* elements are specified, they are displayed one below the other.
|
|
50
|
+
*/
|
|
51
|
+
rightElements?: [ReactNode, ...ReactNode[]];
|
|
52
|
+
/**
|
|
53
|
+
* Images of users should always be displayed in a round shape. Therefore
|
|
54
|
+
* this property can be set to true.
|
|
55
|
+
*/
|
|
56
|
+
shouldShowRoundImage?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Subtitle of the `ListItem` displayed in the head below the title
|
|
59
|
+
*/
|
|
60
|
+
subtitle?: ReactNode;
|
|
61
|
+
/**
|
|
62
|
+
* Title of the `ListItem` displayed in the head
|
|
63
|
+
*/
|
|
64
|
+
title: ReactNode;
|
|
65
|
+
};
|
|
66
|
+
declare const ListItem: FC<ListItemProps>;
|
|
67
|
+
export default ListItem;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _framerMotion = require("framer-motion");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _uuid = require("../../../hooks/uuid");
|
|
10
|
+
var _List = require("../List");
|
|
11
|
+
var _ListItemBody = _interopRequireDefault(require("./list-item-body/ListItemBody"));
|
|
12
|
+
var _ListItemHead = _interopRequireDefault(require("./list-item-head/ListItemHead"));
|
|
13
|
+
var _ListItem = require("./ListItem.styles");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
const ListItem = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
children,
|
|
20
|
+
hoverItem,
|
|
21
|
+
icons,
|
|
22
|
+
images,
|
|
23
|
+
isDefaultOpen,
|
|
24
|
+
isOpen,
|
|
25
|
+
onClick,
|
|
26
|
+
onLongPress,
|
|
27
|
+
leftElements,
|
|
28
|
+
rightElements,
|
|
29
|
+
subtitle,
|
|
30
|
+
shouldShowRoundImage,
|
|
31
|
+
title
|
|
32
|
+
} = _ref;
|
|
33
|
+
const {
|
|
34
|
+
incrementExpandableItemCount,
|
|
35
|
+
isAnyItemExpandable,
|
|
36
|
+
openItemUuid,
|
|
37
|
+
updateOpenItemUuid
|
|
38
|
+
} = (0, _react.useContext)(_List.ListContext);
|
|
39
|
+
const uuid = (0, _uuid.useUuid)();
|
|
40
|
+
const isExpandable = children !== undefined;
|
|
41
|
+
const isItemOpen = isOpen !== null && isOpen !== void 0 ? isOpen : openItemUuid === uuid;
|
|
42
|
+
const handleHeadClick = (0, _react.useCallback)(event => {
|
|
43
|
+
if (isExpandable) {
|
|
44
|
+
updateOpenItemUuid(uuid);
|
|
45
|
+
}
|
|
46
|
+
if (typeof onClick === 'function') {
|
|
47
|
+
onClick(event);
|
|
48
|
+
}
|
|
49
|
+
}, [isExpandable, onClick, updateOpenItemUuid, uuid]);
|
|
50
|
+
(0, _react.useEffect)(() => {
|
|
51
|
+
if (isExpandable) {
|
|
52
|
+
// The incrementExpandableItemCount function returns an cleanup
|
|
53
|
+
// function to decrement expandableItemCount if component unmounts
|
|
54
|
+
return incrementExpandableItemCount();
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}, [incrementExpandableItemCount, isExpandable]);
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
59
|
+
if (isDefaultOpen) {
|
|
60
|
+
updateOpenItemUuid(uuid, {
|
|
61
|
+
shouldOnlyOpen: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}, [isDefaultOpen, updateOpenItemUuid, uuid]);
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(_ListItem.StyledListItem, {
|
|
66
|
+
className: "beta-chayns-list-item",
|
|
67
|
+
isClickable: typeof onClick === 'function' || isExpandable,
|
|
68
|
+
isOpen: isItemOpen
|
|
69
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemHead.default, {
|
|
70
|
+
hoverItem: hoverItem,
|
|
71
|
+
icons: icons,
|
|
72
|
+
images: images,
|
|
73
|
+
isAnyItemExpandable: isAnyItemExpandable,
|
|
74
|
+
isExpandable: isExpandable,
|
|
75
|
+
isOpen: isItemOpen,
|
|
76
|
+
onClick: handleHeadClick,
|
|
77
|
+
onLongPress: onLongPress,
|
|
78
|
+
leftElements: leftElements,
|
|
79
|
+
rightElements: rightElements,
|
|
80
|
+
subtitle: subtitle,
|
|
81
|
+
shouldShowRoundImage: shouldShowRoundImage,
|
|
82
|
+
title: title
|
|
83
|
+
}), /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
|
|
84
|
+
initial: false
|
|
85
|
+
}, isExpandable && isItemOpen && /*#__PURE__*/_react.default.createElement(_ListItemBody.default, null, children)));
|
|
86
|
+
};
|
|
87
|
+
ListItem.displayName = 'ListItem';
|
|
88
|
+
var _default = ListItem;
|
|
89
|
+
exports.default = _default;
|
|
90
|
+
//# sourceMappingURL=ListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.js","names":["ListItem","children","hoverItem","icons","images","isDefaultOpen","isOpen","onClick","onLongPress","leftElements","rightElements","subtitle","shouldShowRoundImage","title","incrementExpandableItemCount","isAnyItemExpandable","openItemUuid","updateOpenItemUuid","useContext","ListContext","uuid","useUuid","isExpandable","undefined","isItemOpen","handleHeadClick","useCallback","event","useEffect","shouldOnlyOpen","displayName"],"sources":["../../../../src/components/list/list-item/ListItem.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, {\n FC,\n MouseEventHandler,\n ReactNode,\n TouchEventHandler,\n useCallback,\n useContext,\n useEffect,\n} from 'react';\nimport { useUuid } from '../../../hooks/uuid';\nimport { ListContext } from '../List';\nimport ListItemBody from './list-item-body/ListItemBody';\nimport ListItemHead from './list-item-head/ListItemHead';\nimport { StyledListItem } from './ListItem.styles';\n\ntype ListItemProps = {\n /**\n * The content of the `ListItem` body. When the `ListItem` has children,\n * it can be opened and also gets an icon as an indicator automatically.\n */\n children?: ReactNode;\n /**\n * Element that is displayed when hovering over the `ListItem` on the right\n * side. On mobile devices, this element is not displayed.\n */\n hoverItem?: ReactNode;\n /**\n * The FontAwesome or tobit icons to render like an image on the left side\n * of the header. Multiple icons are stacked. See the `Icon` component\n * documentation for more information.\n */\n icons?: string[];\n /**\n * A list of image URLs that are displayed on the left side of the header.\n * If multiple URLs are passed, the image is assembled from the first three\n * image URLs as a puzzle.\n */\n images?: string[];\n /**\n * This can be used to automatically expand the `ListItem` during the first render.\n */\n isDefaultOpen?: boolean;\n /**\n * This overrides the internal opening state of the item and makes it controlled.\n */\n isOpen?: boolean;\n /**\n * Function to be executed when the header of the `ListItem` was clicked\n */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /**\n * Function to be executed when the header of the `ListItem` is pressed for\n * 400 milliseconds.\n */\n onLongPress?: TouchEventHandler<HTMLDivElement>;\n /**\n * Elements that are displayed on the left side of the header. If multiple\n * elements are specified, they are displayed one aside the other.\n */\n leftElements?: [ReactNode, ...ReactNode[]];\n /**\n * Elements that are displayed on the right side of the header. If multiple\n * elements are specified, they are displayed one below the other.\n */\n rightElements?: [ReactNode, ...ReactNode[]];\n /**\n * Images of users should always be displayed in a round shape. Therefore\n * this property can be set to true.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Subtitle of the `ListItem` displayed in the head below the title\n */\n subtitle?: ReactNode;\n /**\n * Title of the `ListItem` displayed in the head\n */\n title: ReactNode;\n};\n\nconst ListItem: FC<ListItemProps> = ({\n children,\n hoverItem,\n icons,\n images,\n isDefaultOpen,\n isOpen,\n onClick,\n onLongPress,\n leftElements,\n rightElements,\n subtitle,\n shouldShowRoundImage,\n title,\n}) => {\n const { incrementExpandableItemCount, isAnyItemExpandable, openItemUuid, updateOpenItemUuid } =\n useContext(ListContext);\n\n const uuid = useUuid();\n\n const isExpandable = children !== undefined;\n const isItemOpen = isOpen ?? openItemUuid === uuid;\n\n const handleHeadClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n if (isExpandable) {\n updateOpenItemUuid(uuid);\n }\n\n if (typeof onClick === 'function') {\n onClick(event);\n }\n },\n [isExpandable, onClick, updateOpenItemUuid, uuid]\n );\n\n useEffect(() => {\n if (isExpandable) {\n // The incrementExpandableItemCount function returns an cleanup\n // function to decrement expandableItemCount if component unmounts\n return incrementExpandableItemCount();\n }\n\n return undefined;\n }, [incrementExpandableItemCount, isExpandable]);\n\n useEffect(() => {\n if (isDefaultOpen) {\n updateOpenItemUuid(uuid, { shouldOnlyOpen: true });\n }\n }, [isDefaultOpen, updateOpenItemUuid, uuid]);\n\n return (\n <StyledListItem\n className=\"beta-chayns-list-item\"\n isClickable={typeof onClick === 'function' || isExpandable}\n isOpen={isItemOpen}\n >\n <ListItemHead\n hoverItem={hoverItem}\n icons={icons}\n images={images}\n isAnyItemExpandable={isAnyItemExpandable}\n isExpandable={isExpandable}\n isOpen={isItemOpen}\n onClick={handleHeadClick}\n onLongPress={onLongPress}\n leftElements={leftElements}\n rightElements={rightElements}\n subtitle={subtitle}\n shouldShowRoundImage={shouldShowRoundImage}\n title={title}\n />\n <AnimatePresence initial={false}>\n {isExpandable && isItemOpen && <ListItemBody>{children}</ListItemBody>}\n </AnimatePresence>\n </StyledListItem>\n );\n};\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n"],"mappings":";;;;;;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AAAmD;AAAA;AAAA;AAmEnD,MAAMA,QAA2B,GAAG,QAc9B;EAAA,IAd+B;IACjCC,QAAQ;IACRC,SAAS;IACTC,KAAK;IACLC,MAAM;IACNC,aAAa;IACbC,MAAM;IACNC,OAAO;IACPC,WAAW;IACXC,YAAY;IACZC,aAAa;IACbC,QAAQ;IACRC,oBAAoB;IACpBC;EACJ,CAAC;EACG,MAAM;IAAEC,4BAA4B;IAAEC,mBAAmB;IAAEC,YAAY;IAAEC;EAAmB,CAAC,GACzF,IAAAC,iBAAU,EAACC,iBAAW,CAAC;EAE3B,MAAMC,IAAI,GAAG,IAAAC,aAAO,GAAE;EAEtB,MAAMC,YAAY,GAAGrB,QAAQ,KAAKsB,SAAS;EAC3C,MAAMC,UAAU,GAAGlB,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIU,YAAY,KAAKI,IAAI;EAElD,MAAMK,eAAe,GAAG,IAAAC,kBAAW,EAC9BC,KAAK,IAAK;IACP,IAAIL,YAAY,EAAE;MACdL,kBAAkB,CAACG,IAAI,CAAC;IAC5B;IAEA,IAAI,OAAOb,OAAO,KAAK,UAAU,EAAE;MAC/BA,OAAO,CAACoB,KAAK,CAAC;IAClB;EACJ,CAAC,EACD,CAACL,YAAY,EAAEf,OAAO,EAAEU,kBAAkB,EAAEG,IAAI,CAAC,CACpD;EAED,IAAAQ,gBAAS,EAAC,MAAM;IACZ,IAAIN,YAAY,EAAE;MACd;MACA;MACA,OAAOR,4BAA4B,EAAE;IACzC;IAEA,OAAOS,SAAS;EACpB,CAAC,EAAE,CAACT,4BAA4B,EAAEQ,YAAY,CAAC,CAAC;EAEhD,IAAAM,gBAAS,EAAC,MAAM;IACZ,IAAIvB,aAAa,EAAE;MACfY,kBAAkB,CAACG,IAAI,EAAE;QAAES,cAAc,EAAE;MAAK,CAAC,CAAC;IACtD;EACJ,CAAC,EAAE,CAACxB,aAAa,EAAEY,kBAAkB,EAAEG,IAAI,CAAC,CAAC;EAE7C,oBACI,6BAAC,wBAAc;IACX,SAAS,EAAC,uBAAuB;IACjC,WAAW,EAAE,OAAOb,OAAO,KAAK,UAAU,IAAIe,YAAa;IAC3D,MAAM,EAAEE;EAAW,gBAEnB,6BAAC,qBAAY;IACT,SAAS,EAAEtB,SAAU;IACrB,KAAK,EAAEC,KAAM;IACb,MAAM,EAAEC,MAAO;IACf,mBAAmB,EAAEW,mBAAoB;IACzC,YAAY,EAAEO,YAAa;IAC3B,MAAM,EAAEE,UAAW;IACnB,OAAO,EAAEC,eAAgB;IACzB,WAAW,EAAEjB,WAAY;IACzB,YAAY,EAAEC,YAAa;IAC3B,aAAa,EAAEC,aAAc;IAC7B,QAAQ,EAAEC,QAAS;IACnB,oBAAoB,EAAEC,oBAAqB;IAC3C,KAAK,EAAEC;EAAM,EACf,eACF,6BAAC,6BAAe;IAAC,OAAO,EAAE;EAAM,GAC3BS,YAAY,IAAIE,UAAU,iBAAI,6BAAC,qBAAY,QAAEvB,QAAQ,CAAgB,CACxD,CACL;AAEzB,CAAC;AAEDD,QAAQ,CAAC8B,WAAW,GAAG,UAAU;AAAC,eAEnB9B,QAAQ;AAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledListItem = void 0;
|
|
7
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
+
const StyledListItem = _styledComponents.default.div`
|
|
11
|
+
${_ref => {
|
|
12
|
+
let {
|
|
13
|
+
isOpen
|
|
14
|
+
} = _ref;
|
|
15
|
+
return isOpen && (0, _styledComponents.css)`
|
|
16
|
+
background-color: rgba(${_ref2 => {
|
|
17
|
+
let {
|
|
18
|
+
theme
|
|
19
|
+
} = _ref2;
|
|
20
|
+
return theme['100-rgb'];
|
|
21
|
+
}}, 0.85);
|
|
22
|
+
`;
|
|
23
|
+
}}
|
|
24
|
+
|
|
25
|
+
transition: background-color 0.3s ease;
|
|
26
|
+
|
|
27
|
+
${_ref3 => {
|
|
28
|
+
let {
|
|
29
|
+
isClickable
|
|
30
|
+
} = _ref3;
|
|
31
|
+
return isClickable && (0, _styledComponents.css)`
|
|
32
|
+
:hover {
|
|
33
|
+
background-color: rgba(
|
|
34
|
+
${_ref4 => {
|
|
35
|
+
let {
|
|
36
|
+
theme
|
|
37
|
+
} = _ref4;
|
|
38
|
+
return theme['100-rgb'];
|
|
39
|
+
}},
|
|
40
|
+
0.85
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
}}
|
|
45
|
+
|
|
46
|
+
:not(:last-child) {
|
|
47
|
+
border-bottom: 1px solid ${_ref5 => {
|
|
48
|
+
let {
|
|
49
|
+
theme
|
|
50
|
+
} = _ref5;
|
|
51
|
+
return theme.headline;
|
|
52
|
+
}};
|
|
53
|
+
}
|
|
54
|
+
`;
|
|
55
|
+
exports.StyledListItem = StyledListItem;
|
|
56
|
+
//# sourceMappingURL=ListItem.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItem.styles.js","names":["StyledListItem","styled","div","isOpen","css","theme","isClickable","headline"],"sources":["../../../../src/components/list/list-item/ListItem.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledListItemProps = WithTheme<{\n isClickable: boolean;\n isOpen: boolean;\n}>;\n\nexport const StyledListItem = styled.div<StyledListItemProps>`\n ${({ isOpen }) =>\n isOpen &&\n css`\n background-color: rgba(${({ theme }: StyledListItemProps) => theme['100-rgb']}, 0.85);\n `}\n\n transition: background-color 0.3s ease;\n\n ${({ isClickable }) =>\n isClickable &&\n css`\n :hover {\n background-color: rgba(\n ${({ theme }: StyledListItemProps) => theme['100-rgb']},\n 0.85\n );\n }\n `}\n\n :not(:last-child) {\n border-bottom: 1px solid ${({ theme }: StyledListItemProps) => theme.headline};\n }\n`;\n"],"mappings":";;;;;;AAAA;AAAgD;AAAA;AAQzC,MAAMA,cAAc,GAAGC,yBAAM,CAACC,GAAyB;AAC9D,MAAM;EAAA,IAAC;IAAEC;EAAO,CAAC;EAAA,OACTA,MAAM,IACN,IAAAC,qBAAG,CAAC;AACZ,qCAAqC;IAAA,IAAC;MAAEC;IAA2B,CAAC;IAAA,OAAKA,KAAK,CAAC,SAAS,CAAC;EAAA,CAAC;AAC1F,SAAS;AAAA,CAAC;AACV;AACA;AACA;AACA,MAAM;EAAA,IAAC;IAAEC;EAAY,CAAC;EAAA,OACdA,WAAW,IACX,IAAAF,qBAAG,CAAC;AACZ;AACA;AACA,sBAAsB;IAAA,IAAC;MAAEC;IAA2B,CAAC;IAAA,OAAKA,KAAK,CAAC,SAAS,CAAC;EAAA,CAAC;AAC3E;AACA;AACA;AACA,SAAS;AAAA,CAAC;AACV;AACA;AACA,mCAAmC;EAAA,IAAC;IAAEA;EAA2B,CAAC;EAAA,OAAKA,KAAK,CAACE,QAAQ;AAAA,CAAC;AACtF;AACA,CAAC;AAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _ListItemBody = require("./ListItemBody.styles");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const ListItemBody = _ref => {
|
|
11
|
+
let {
|
|
12
|
+
children
|
|
13
|
+
} = _ref;
|
|
14
|
+
return /*#__PURE__*/_react.default.createElement(_ListItemBody.StyledMotionListItemBody, {
|
|
15
|
+
animate: {
|
|
16
|
+
height: 'auto',
|
|
17
|
+
opacity: 1
|
|
18
|
+
},
|
|
19
|
+
className: "beta-chayns-list-item-body",
|
|
20
|
+
exit: {
|
|
21
|
+
height: 0,
|
|
22
|
+
opacity: 0
|
|
23
|
+
},
|
|
24
|
+
initial: {
|
|
25
|
+
height: 0,
|
|
26
|
+
opacity: 0
|
|
27
|
+
},
|
|
28
|
+
transition: {
|
|
29
|
+
type: 'tween'
|
|
30
|
+
}
|
|
31
|
+
}, children);
|
|
32
|
+
};
|
|
33
|
+
ListItemBody.displayName = 'ListItemBody';
|
|
34
|
+
var _default = ListItemBody;
|
|
35
|
+
exports.default = _default;
|
|
36
|
+
//# sourceMappingURL=ListItemBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItemBody.js","names":["ListItemBody","children","height","opacity","type","displayName"],"sources":["../../../../../src/components/list/list-item/list-item-body/ListItemBody.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyledMotionListItemBody } from './ListItemBody.styles';\n\nconst ListItemBody: FC = ({ children }) => (\n <StyledMotionListItemBody\n animate={{ height: 'auto', opacity: 1 }}\n className=\"beta-chayns-list-item-body\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n transition={{ type: 'tween' }}\n >\n {children}\n </StyledMotionListItemBody>\n);\n\nListItemBody.displayName = 'ListItemBody';\n\nexport default ListItemBody;\n"],"mappings":";;;;;;AAAA;AACA;AAAiE;AAEjE,MAAMA,YAAgB,GAAG;EAAA,IAAC;IAAEC;EAAS,CAAC;EAAA,oBAClC,6BAAC,sCAAwB;IACrB,OAAO,EAAE;MAAEC,MAAM,EAAE,MAAM;MAAEC,OAAO,EAAE;IAAE,CAAE;IACxC,SAAS,EAAC,4BAA4B;IACtC,IAAI,EAAE;MAAED,MAAM,EAAE,CAAC;MAAEC,OAAO,EAAE;IAAE,CAAE;IAChC,OAAO,EAAE;MAAED,MAAM,EAAE,CAAC;MAAEC,OAAO,EAAE;IAAE,CAAE;IACnC,UAAU,EAAE;MAAEC,IAAI,EAAE;IAAQ;EAAE,GAE7BH,QAAQ,CACc;AAAA,CAC9B;AAEDD,YAAY,CAACK,WAAW,GAAG,cAAc;AAAC,eAE3BL,YAAY;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StyledMotionListItemBody: import("styled-components").StyledComponent<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, any, {}, never>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledMotionListItemBody = void 0;
|
|
7
|
+
var _framerMotion = require("framer-motion");
|
|
8
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const StyledMotionListItemBody = (0, _styledComponents.default)(_framerMotion.motion.div)`
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
`;
|
|
13
|
+
exports.StyledMotionListItemBody = StyledMotionListItemBody;
|
|
14
|
+
//# sourceMappingURL=ListItemBody.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItemBody.styles.js","names":["StyledMotionListItemBody","styled","motion","div"],"sources":["../../../../../src/components/list/list-item/list-item-body/ListItemBody.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledMotionListItemBody = styled(motion.div)`\n overflow: hidden;\n`;\n"],"mappings":";;;;;;AAAA;AACA;AAAuC;AAEhC,MAAMA,wBAAwB,GAAG,IAAAC,yBAAM,EAACC,oBAAM,CAACC,GAAG,CAAE;AAC3D;AACA,CAAC;AAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _ListItemContent = require("./ListItemContent.styles");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const ListItemContent = _ref => {
|
|
11
|
+
let {
|
|
12
|
+
children
|
|
13
|
+
} = _ref;
|
|
14
|
+
return /*#__PURE__*/_react.default.createElement(_ListItemContent.StyledListItemContent, {
|
|
15
|
+
className: "beta-chayns-list-item-content"
|
|
16
|
+
}, children);
|
|
17
|
+
};
|
|
18
|
+
ListItemContent.displayName = 'ListItemContent';
|
|
19
|
+
var _default = ListItemContent;
|
|
20
|
+
exports.default = _default;
|
|
21
|
+
//# sourceMappingURL=ListItemContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItemContent.js","names":["ListItemContent","children","displayName"],"sources":["../../../../../src/components/list/list-item/list-item-content/ListItemContent.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyledListItemContent } from './ListItemContent.styles';\n\nconst ListItemContent: FC = ({ children }) => (\n <StyledListItemContent className=\"beta-chayns-list-item-content\">\n {children}\n </StyledListItemContent>\n);\n\nListItemContent.displayName = 'ListItemContent';\n\nexport default ListItemContent;\n"],"mappings":";;;;;;AAAA;AACA;AAAiE;AAEjE,MAAMA,eAAmB,GAAG;EAAA,IAAC;IAAEC;EAAS,CAAC;EAAA,oBACrC,6BAAC,sCAAqB;IAAC,SAAS,EAAC;EAA+B,GAC3DA,QAAQ,CACW;AAAA,CAC3B;AAEDD,eAAe,CAACE,WAAW,GAAG,iBAAiB;AAAC,eAEjCF,eAAe;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StyledListItemContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledListItemContent = void 0;
|
|
7
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
const StyledListItemContent = _styledComponents.default.div`
|
|
10
|
+
color: ${_ref => {
|
|
11
|
+
let {
|
|
12
|
+
theme
|
|
13
|
+
} = _ref;
|
|
14
|
+
return theme.text;
|
|
15
|
+
}};
|
|
16
|
+
padding: 9px 18px 8px 35px;
|
|
17
|
+
`;
|
|
18
|
+
exports.StyledListItemContent = StyledListItemContent;
|
|
19
|
+
//# sourceMappingURL=ListItemContent.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItemContent.styles.js","names":["StyledListItemContent","styled","div","theme","text"],"sources":["../../../../../src/components/list/list-item/list-item-content/ListItemContent.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport type { WithTheme } from '../../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledListItemContentProps = WithTheme<unknown>;\n\nexport const StyledListItemContent = styled.div`\n color: ${({ theme }: StyledListItemContentProps) => theme.text};\n padding: 9px 18px 8px 35px;\n`;\n"],"mappings":";;;;;;AAAA;AAAuC;AAKhC,MAAMA,qBAAqB,GAAGC,yBAAM,CAACC,GAAI;AAChD,aAAa;EAAA,IAAC;IAAEC;EAAkC,CAAC;EAAA,OAAKA,KAAK,CAACC,IAAI;AAAA,CAAC;AACnE;AACA,CAAC;AAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FC, MouseEventHandler, ReactNode, TouchEventHandler } from 'react';
|
|
2
|
+
declare type ListItemHeadProps = {
|
|
3
|
+
hoverItem?: ReactNode;
|
|
4
|
+
icons?: string[];
|
|
5
|
+
images?: string[];
|
|
6
|
+
isAnyItemExpandable: boolean;
|
|
7
|
+
isExpandable: boolean;
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
onClick?: MouseEventHandler<HTMLDivElement>;
|
|
10
|
+
onLongPress?: TouchEventHandler<HTMLDivElement>;
|
|
11
|
+
rightElements?: [ReactNode, ...ReactNode[]];
|
|
12
|
+
subtitle?: ReactNode;
|
|
13
|
+
leftElements?: ReactNode;
|
|
14
|
+
shouldShowRoundImage?: boolean;
|
|
15
|
+
title: ReactNode;
|
|
16
|
+
};
|
|
17
|
+
declare const ListItemHead: FC<ListItemHeadProps>;
|
|
18
|
+
export default ListItemHead;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _Icon = _interopRequireDefault(require("../../../icon/Icon"));
|
|
9
|
+
var _ListItemIcon = _interopRequireDefault(require("./list-item-icon/ListItemIcon"));
|
|
10
|
+
var _ListItemImage = _interopRequireDefault(require("./list-item-image/ListItemImage"));
|
|
11
|
+
var _ListItemHead = require("./ListItemHead.styles");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
const ListItemHead = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
hoverItem,
|
|
18
|
+
icons,
|
|
19
|
+
images,
|
|
20
|
+
isAnyItemExpandable,
|
|
21
|
+
isExpandable,
|
|
22
|
+
isOpen,
|
|
23
|
+
onClick,
|
|
24
|
+
onLongPress,
|
|
25
|
+
rightElements,
|
|
26
|
+
subtitle,
|
|
27
|
+
shouldShowRoundImage,
|
|
28
|
+
title,
|
|
29
|
+
leftElements
|
|
30
|
+
} = _ref;
|
|
31
|
+
const [shouldShowHoverItem, setShouldShowHoverItem] = (0, _react.useState)(false);
|
|
32
|
+
const longPressTimeoutRef = (0, _react.useRef)();
|
|
33
|
+
const handleMouseEnter = (0, _react.useCallback)(() => setShouldShowHoverItem(true), []);
|
|
34
|
+
const handleMouseLeave = (0, _react.useCallback)(() => setShouldShowHoverItem(false), []);
|
|
35
|
+
const handleTouchStart = (0, _react.useCallback)(event => {
|
|
36
|
+
longPressTimeoutRef.current = window.setTimeout(() => {
|
|
37
|
+
if (typeof onLongPress === 'function') {
|
|
38
|
+
onLongPress(event);
|
|
39
|
+
}
|
|
40
|
+
}, 400);
|
|
41
|
+
}, [onLongPress]);
|
|
42
|
+
const handleTouchEnd = (0, _react.useCallback)(() => {
|
|
43
|
+
clearTimeout(longPressTimeoutRef.current);
|
|
44
|
+
}, []);
|
|
45
|
+
const iconOrImageElement = (0, _react.useMemo)(() => {
|
|
46
|
+
if (icons) {
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, {
|
|
48
|
+
icons: icons
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (images) {
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement(_ListItemImage.default, {
|
|
53
|
+
images: images,
|
|
54
|
+
shouldShowRoundImage: !!shouldShowRoundImage
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}, [icons, images, shouldShowRoundImage]);
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHead, {
|
|
60
|
+
className: "beta-chayns-list-item-head",
|
|
61
|
+
isClickable: typeof onClick === 'function' || isExpandable,
|
|
62
|
+
onClick: onClick,
|
|
63
|
+
onMouseEnter: handleMouseEnter,
|
|
64
|
+
onMouseLeave: handleMouseLeave,
|
|
65
|
+
onTouchStart: typeof onLongPress === 'function' ? handleTouchStart : undefined,
|
|
66
|
+
onTouchEnd: typeof onLongPress === 'function' ? handleTouchEnd : undefined
|
|
67
|
+
}, isAnyItemExpandable && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledMotionListItemHeadIndicator, {
|
|
68
|
+
animate: {
|
|
69
|
+
rotate: isOpen ? 90 : 0
|
|
70
|
+
},
|
|
71
|
+
initial: false,
|
|
72
|
+
transition: {
|
|
73
|
+
type: 'tween'
|
|
74
|
+
}
|
|
75
|
+
}, isExpandable && /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
76
|
+
icons: ['fa fa-chevron-right']
|
|
77
|
+
})), leftElements, iconOrImageElement, /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadContent, {
|
|
78
|
+
isIconOrImageGiven: iconOrImageElement !== undefined,
|
|
79
|
+
isOpen: isOpen
|
|
80
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadTitle, null, /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadTitleText, {
|
|
81
|
+
className: "ellipsis"
|
|
82
|
+
}, title), rightElements && rightElements.length > 1 && rightElements[0] && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadTopRightElement, null, rightElements[0])), subtitle && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadSubtitle, null, /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadSubtitleText, {
|
|
83
|
+
className: "ellipsis"
|
|
84
|
+
}, subtitle), rightElements && rightElements.length > 1 && rightElements[1] && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadBottomRightElement, null, rightElements[1]))), (rightElements === null || rightElements === void 0 ? void 0 : rightElements.length) === 1 && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledListItemHeadRightElement, null, rightElements[0]), hoverItem && /*#__PURE__*/_react.default.createElement(_ListItemHead.StyledMotionListItemHeadHoverItem, {
|
|
85
|
+
animate: {
|
|
86
|
+
marginLeft: shouldShowHoverItem ? 8 : 0,
|
|
87
|
+
opacity: shouldShowHoverItem ? 1 : 0,
|
|
88
|
+
width: shouldShowHoverItem ? 'auto' : 0
|
|
89
|
+
},
|
|
90
|
+
initial: false,
|
|
91
|
+
transition: {
|
|
92
|
+
duration: 0.15,
|
|
93
|
+
type: 'tween'
|
|
94
|
+
}
|
|
95
|
+
}, hoverItem));
|
|
96
|
+
};
|
|
97
|
+
ListItemHead.displayName = 'ListItemHead';
|
|
98
|
+
var _default = ListItemHead;
|
|
99
|
+
exports.default = _default;
|
|
100
|
+
//# sourceMappingURL=ListItemHead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListItemHead.js","names":["ListItemHead","hoverItem","icons","images","isAnyItemExpandable","isExpandable","isOpen","onClick","onLongPress","rightElements","subtitle","shouldShowRoundImage","title","leftElements","shouldShowHoverItem","setShouldShowHoverItem","useState","longPressTimeoutRef","useRef","handleMouseEnter","useCallback","handleMouseLeave","handleTouchStart","event","current","window","setTimeout","handleTouchEnd","clearTimeout","iconOrImageElement","useMemo","undefined","rotate","type","length","marginLeft","opacity","width","duration","displayName"],"sources":["../../../../../src/components/list/list-item/list-item-head/ListItemHead.tsx"],"sourcesContent":["import React, {\n FC,\n MouseEventHandler,\n ReactNode,\n TouchEventHandler,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Icon from '../../../icon/Icon';\nimport ListItemIcon from './list-item-icon/ListItemIcon';\nimport ListItemImage from './list-item-image/ListItemImage';\nimport {\n StyledListItemHead,\n StyledListItemHeadBottomRightElement,\n StyledListItemHeadContent,\n StyledListItemHeadRightElement,\n StyledListItemHeadSubtitle,\n StyledListItemHeadSubtitleText,\n StyledListItemHeadTitle,\n StyledListItemHeadTitleText,\n StyledListItemHeadTopRightElement,\n StyledMotionListItemHeadHoverItem,\n StyledMotionListItemHeadIndicator,\n} from './ListItemHead.styles';\n\ntype ListItemHeadProps = {\n hoverItem?: ReactNode;\n icons?: string[];\n images?: string[];\n isAnyItemExpandable: boolean;\n isExpandable: boolean;\n isOpen: boolean;\n onClick?: MouseEventHandler<HTMLDivElement>;\n onLongPress?: TouchEventHandler<HTMLDivElement>;\n rightElements?: [ReactNode, ...ReactNode[]];\n subtitle?: ReactNode;\n leftElements?: ReactNode;\n shouldShowRoundImage?: boolean;\n title: ReactNode;\n};\n\nconst ListItemHead: FC<ListItemHeadProps> = ({\n hoverItem,\n icons,\n images,\n isAnyItemExpandable,\n isExpandable,\n isOpen,\n onClick,\n onLongPress,\n rightElements,\n subtitle,\n shouldShowRoundImage,\n title,\n leftElements,\n}) => {\n const [shouldShowHoverItem, setShouldShowHoverItem] = useState(false);\n\n const longPressTimeoutRef = useRef<number>();\n\n const handleMouseEnter = useCallback(() => setShouldShowHoverItem(true), []);\n\n const handleMouseLeave = useCallback(() => setShouldShowHoverItem(false), []);\n\n const handleTouchStart = useCallback<TouchEventHandler<HTMLDivElement>>(\n (event) => {\n longPressTimeoutRef.current = window.setTimeout(() => {\n if (typeof onLongPress === 'function') {\n onLongPress(event);\n }\n }, 400);\n },\n [onLongPress]\n );\n\n const handleTouchEnd = useCallback(() => {\n clearTimeout(longPressTimeoutRef.current);\n }, []);\n\n const iconOrImageElement = useMemo(() => {\n if (icons) {\n return <ListItemIcon icons={icons} />;\n }\n\n if (images) {\n return <ListItemImage images={images} shouldShowRoundImage={!!shouldShowRoundImage} />;\n }\n\n return undefined;\n }, [icons, images, shouldShowRoundImage]);\n\n return (\n <StyledListItemHead\n className=\"beta-chayns-list-item-head\"\n isClickable={typeof onClick === 'function' || isExpandable}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onTouchStart={typeof onLongPress === 'function' ? handleTouchStart : undefined}\n onTouchEnd={typeof onLongPress === 'function' ? handleTouchEnd : undefined}\n >\n {isAnyItemExpandable && (\n <StyledMotionListItemHeadIndicator\n animate={{ rotate: isOpen ? 90 : 0 }}\n initial={false}\n transition={{ type: 'tween' }}\n >\n {isExpandable && <Icon icons={['fa fa-chevron-right']} />}\n </StyledMotionListItemHeadIndicator>\n )}\n {leftElements}\n {iconOrImageElement}\n <StyledListItemHeadContent\n isIconOrImageGiven={iconOrImageElement !== undefined}\n isOpen={isOpen}\n >\n <StyledListItemHeadTitle>\n <StyledListItemHeadTitleText className=\"ellipsis\">\n {title}\n </StyledListItemHeadTitleText>\n {rightElements && rightElements.length > 1 && rightElements[0] && (\n <StyledListItemHeadTopRightElement>\n {rightElements[0]}\n </StyledListItemHeadTopRightElement>\n )}\n </StyledListItemHeadTitle>\n {subtitle && (\n <StyledListItemHeadSubtitle>\n <StyledListItemHeadSubtitleText className=\"ellipsis\">\n {subtitle}\n </StyledListItemHeadSubtitleText>\n {rightElements && rightElements.length > 1 && rightElements[1] && (\n <StyledListItemHeadBottomRightElement>\n {rightElements[1]}\n </StyledListItemHeadBottomRightElement>\n )}\n </StyledListItemHeadSubtitle>\n )}\n </StyledListItemHeadContent>\n {rightElements?.length === 1 && (\n <StyledListItemHeadRightElement>{rightElements[0]}</StyledListItemHeadRightElement>\n )}\n {hoverItem && (\n <StyledMotionListItemHeadHoverItem\n animate={{\n marginLeft: shouldShowHoverItem ? 8 : 0,\n opacity: shouldShowHoverItem ? 1 : 0,\n width: shouldShowHoverItem ? 'auto' : 0,\n }}\n initial={false}\n transition={{ duration: 0.15, type: 'tween' }}\n >\n {hoverItem}\n </StyledMotionListItemHeadHoverItem>\n )}\n </StyledListItemHead>\n );\n};\n\nListItemHead.displayName = 'ListItemHead';\n\nexport default ListItemHead;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const StyledListItemHead: import("styled-components").StyledComponent<"div", any, {
|
|
2
|
+
isClickable: boolean;
|
|
3
|
+
} & {
|
|
4
|
+
theme: import("../../../color-scheme-provider/ColorSchemeProvider").Theme;
|
|
5
|
+
}, never>;
|
|
6
|
+
export declare const StyledMotionListItemHeadIndicator: import("styled-components").StyledComponent<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, any, {}, never>;
|
|
7
|
+
declare type StyledListItemHeadContentProps = {
|
|
8
|
+
isIconOrImageGiven: boolean;
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const StyledListItemHeadContent: import("styled-components").StyledComponent<"div", any, StyledListItemHeadContentProps, never>;
|
|
12
|
+
export declare const StyledListItemHeadTitle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
13
|
+
export declare const StyledListItemHeadTitleText: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
14
|
+
export declare const StyledListItemHeadSubtitle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
15
|
+
export declare const StyledListItemHeadSubtitleText: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
16
|
+
export declare const StyledListItemHeadTopRightElement: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
17
|
+
export declare const StyledListItemHeadBottomRightElement: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
18
|
+
export declare const StyledListItemHeadRightElement: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
19
|
+
export declare const StyledMotionListItemHeadHoverItem: import("styled-components").StyledComponent<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, any, {}, never>;
|
|
20
|
+
export {};
|