@contentful/f36-entity-list 4.0.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/LICENSE.md ADDED
@@ -0,0 +1,7 @@
1
+ Copyright (c) 2018-present Contentful GmbH
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.mdx ADDED
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: 'EntityList'
3
+ type: 'component'
4
+ status: 'stable'
5
+ slug: /components/entity-list/
6
+ github: 'https://github.com/contentful/forma-36/tree/forma-v4/packages/components/entity-list'
7
+ storybook: 'https://v4-f36-storybook.netlify.app/?path=/story/components-entity-list--default'
8
+ typescript: ./src/EntityList.tsx,./src/EntityListItem/EntityListItem.tsx
9
+ ---
10
+
11
+ # EntityList
12
+
13
+ The EntityList is used to represent lists of entities (entries and assets).
14
+
15
+ ## How to use EntityList
16
+
17
+ This component should be used in combination with the EntityList.Item component. Its main purpose is to be used to entries or assets when in a list context, for example, a multiple entry reference field. It differs from existing EntryCard/AssetCard components as its intended use is for lists of entities, not individual ones.
18
+
19
+ ## Code examples
20
+
21
+ ```jsx
22
+ <EntityList>
23
+ <EntityList.Item
24
+ title="Entry 1"
25
+ description="Description"
26
+ contentType="My content type"
27
+ status="published"
28
+ />
29
+ <EntityList.Item
30
+ title="Entry 2"
31
+ description="Description"
32
+ contentType="My content type"
33
+ status="draft"
34
+ />
35
+ <EntityList.Item
36
+ title="Entry 3"
37
+ description="Description"
38
+ contentType="My content type"
39
+ status="archived"
40
+ />
41
+ </EntityList>
42
+ ```
43
+
44
+ ### With actions menu
45
+
46
+ ```jsx
47
+ <EntityList>
48
+ <EntityList.Item
49
+ title="Entry title"
50
+ description="Description"
51
+ contentType="My content type"
52
+ status="draft"
53
+ entityType="entry"
54
+ actions={[
55
+ <MenuSectionTitle key="title">Actions</MenuSectionTitle>,
56
+ <MenuItem key="edit">Edit</MenuItem>,
57
+ <MenuItem key="download">Download</MenuItem>,
58
+ <MenuItem key="remove">Remove</MenuItem>,
59
+ ]}
60
+ />
61
+ <EntityList.Item
62
+ title="Other entry title"
63
+ description="Description"
64
+ contentType="My content type"
65
+ status="published"
66
+ entityType="entry"
67
+ actions={[
68
+ <MenuSectionTitle key="title">Actions</MenuSectionTitle>,
69
+ <MenuItem key="edit">Edit</MenuItem>,
70
+ <MenuItem key="download">Download</MenuItem>,
71
+ <MenuItem key="remove">Remove</MenuItem>,
72
+ ]}
73
+ />
74
+ </EntityList>
75
+ ```
76
+
77
+ ### With drag handle
78
+
79
+ ```jsx
80
+ <EntityList>
81
+ <EntityList.Item
82
+ title="Entry 1"
83
+ description="Description"
84
+ contentType="My content type"
85
+ status="published"
86
+ withDragHandle
87
+ />
88
+ <EntityList.Item
89
+ title="Entry 2"
90
+ description="Description"
91
+ contentType="My content type"
92
+ status="draft"
93
+ withDragHandle
94
+ />
95
+ </EntityList>
96
+ ```
97
+
98
+ ## Props
99
+
100
+ import { Props } from '@contentful/f36-docs-utils';
101
+
102
+ ### EntityList
103
+
104
+ <Props of="EntityList" />
105
+
106
+ ### EntityList.Item
107
+
108
+ <Props of="EntityListItem" />
package/dist/main.js ADDED
@@ -0,0 +1,235 @@
1
+ var $hadoL$emotion = require("emotion");
2
+ var $hadoL$react = require("react");
3
+ var $hadoL$contentfulf36tokens = require("@contentful/f36-tokens");
4
+ var $hadoL$contentfulf36badge = require("@contentful/f36-badge");
5
+ var $hadoL$contentfulf36icons = require("@contentful/f36-icons");
6
+ var $hadoL$contentfulf36icon = require("@contentful/f36-icon");
7
+ var $hadoL$contentfulf36typography = require("@contentful/f36-typography");
8
+ var $hadoL$contentfulf36draghandle = require("@contentful/f36-drag-handle");
9
+ var $hadoL$contentfulf36button = require("@contentful/f36-button");
10
+ var $hadoL$contentfulf36menu = require("@contentful/f36-menu");
11
+ var $hadoL$contentfulf36skeleton = require("@contentful/f36-skeleton");
12
+ var $hadoL$contentfulf36core = require("@contentful/f36-core");
13
+
14
+ function $parcel$export(e, n, v, s) {
15
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
16
+ }
17
+ function $parcel$interopDefault(a) {
18
+ return a && a.__esModule ? a.default : a;
19
+ }
20
+
21
+ $parcel$export(module.exports, "EntityList", () => $e853778315da5e40$export$8bb466c13870163e);
22
+ $parcel$export(module.exports, "EntityListItem", () => $3f4d63406b2f6561$export$65b9c70c5f42a158);
23
+
24
+
25
+
26
+
27
+ const $e3aba86fc342822d$export$2b0a239870ba448d = ()=>({
28
+ root: /*#__PURE__*/ $hadoL$emotion.css({
29
+ display: 'block',
30
+ listStyle: 'none',
31
+ margin: 0,
32
+ padding: 0,
33
+ border: `1px solid ${($parcel$interopDefault($hadoL$contentfulf36tokens)).gray200}`,
34
+ borderBottom: 'none',
35
+ borderRadius: ($parcel$interopDefault($hadoL$contentfulf36tokens)).borderRadiusMedium,
36
+ overflow: 'hidden'
37
+ })
38
+ })
39
+ ;
40
+
41
+
42
+ function $42fa390001ac865a$var$_EntityList(props, ref) {
43
+ const styles = $e3aba86fc342822d$export$2b0a239870ba448d();
44
+ return(/*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("ul", {
45
+ "data-test-id": props.testId || 'cf-ui-entity-list',
46
+ ref: ref,
47
+ className: $hadoL$emotion.cx(styles.root, props.className),
48
+ style: props.style
49
+ }, props.children));
50
+ }
51
+ const $42fa390001ac865a$export$8bb466c13870163e = /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).forwardRef($42fa390001ac865a$var$_EntityList);
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+ const $07bceb135ccb0944$export$3bb342229d68a121 = ()=>({
66
+ root: (props)=>/*#__PURE__*/ $hadoL$emotion.css({
67
+ display: 'flex',
68
+ boxShadow: `inset 0 -1px 0 ${($parcel$interopDefault($hadoL$contentfulf36tokens)).gray200}`,
69
+ position: 'relative',
70
+ transition: `${($parcel$interopDefault($hadoL$contentfulf36tokens)).transitionDurationShort} ${($parcel$interopDefault($hadoL$contentfulf36tokens)).transitionEasingDefault}`,
71
+ transitionProperty: 'box-shadow, background-color',
72
+ backgroundColor: ($parcel$interopDefault($hadoL$contentfulf36tokens)).colorWhite,
73
+ ...props.isDragActive ? {
74
+ boxShadow: ($parcel$interopDefault($hadoL$contentfulf36tokens)).boxShadowHeavy
75
+ } : {
76
+ },
77
+ '&:hover': {
78
+ backgroundColor: ($parcel$interopDefault($hadoL$contentfulf36tokens)).gray100
79
+ }
80
+ })
81
+ ,
82
+ card: /*#__PURE__*/ $hadoL$emotion.css({
83
+ display: 'flex',
84
+ textDecoration: 'none',
85
+ width: '100%',
86
+ minHeight: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacing3Xl,
87
+ padding: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacingXs,
88
+ border: 'none',
89
+ background: 'none',
90
+ textAlign: 'left'
91
+ }),
92
+ content: /*#__PURE__*/ $hadoL$emotion.css({
93
+ name: "15ync0s",
94
+ styles: "flex-grow:1;min-width:0;"
95
+ }),
96
+ media: /*#__PURE__*/ $hadoL$emotion.css({
97
+ display: 'flex',
98
+ flexShrink: 0,
99
+ alignItems: 'center',
100
+ justifyContent: 'center',
101
+ backgroundColor: ($parcel$interopDefault($hadoL$contentfulf36tokens)).gray200,
102
+ width: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacing2Xl,
103
+ height: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacing2Xl,
104
+ margin: '0',
105
+ marginRight: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacingXs
106
+ }),
107
+ thumbnail: /*#__PURE__*/ $hadoL$emotion.css({
108
+ name: "12qah06",
109
+ styles: "display:block;width:100%;height:100%;object-fit:cover;"
110
+ }),
111
+ contentType: /*#__PURE__*/ $hadoL$emotion.css({
112
+ marginLeft: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacingXs
113
+ }),
114
+ description: /*#__PURE__*/ $hadoL$emotion.css({
115
+ marginTop: ($parcel$interopDefault($hadoL$contentfulf36tokens)).spacing2Xs
116
+ }),
117
+ meta: /*#__PURE__*/ $hadoL$emotion.css({
118
+ name: "1n0gfod",
119
+ styles: "margin-left:auto;flex-shrink:0;"
120
+ }),
121
+ dragHandle: /*#__PURE__*/ $hadoL$emotion.css({
122
+ borderBottomLeftRadius: '0',
123
+ borderTopLeftRadius: '0',
124
+ boxShadow: `inset 0 -1px 0 ${($parcel$interopDefault($hadoL$contentfulf36tokens)).gray200}`
125
+ }),
126
+ menuTrigger: /*#__PURE__*/ $hadoL$emotion.css({
127
+ name: "c1v07n",
128
+ styles: "padding:0 0.125rem;min-height:1.5rem;"
129
+ })
130
+ })
131
+ ;
132
+
133
+
134
+
135
+
136
+ const $3f4d63406b2f6561$var$ICON_MAP = {
137
+ asset: $hadoL$contentfulf36icons.AssetIcon,
138
+ entry: $hadoL$contentfulf36icons.EntryIcon,
139
+ release: $hadoL$contentfulf36icons.ReleaseIcon
140
+ };
141
+ function $3f4d63406b2f6561$export$65b9c70c5f42a158({ className: className , testId: testId = 'cf-ui-entity-list-item' , title: title , description: description , contentType: contentType , entityType: entityType = 'entry' , withThumbnail: withThumbnail = true , thumbnailUrl: thumbnailUrl , thumbnailAltText: thumbnailAltText , status: status , actions: actions , withDragHandle: withDragHandle , isDragActive: isDragActive , isLoading: isLoading , onClick: onClick , href: href , cardDragHandleProps: cardDragHandleProps , cardDragHandleComponent: cardDragHandleComponent , isActionsDisabled: isActionsDisabled = false , ...otherProps }) {
142
+ const styles = $07bceb135ccb0944$export$3bb342229d68a121();
143
+ const renderCardDragHandle = ()=>{
144
+ if (cardDragHandleComponent) return cardDragHandleComponent;
145
+ else if (withDragHandle) return(/*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36draghandle.DragHandle, {
146
+ className: styles.dragHandle,
147
+ isActive: isDragActive,
148
+ label: "Reorder entry",
149
+ ...cardDragHandleProps
150
+ }));
151
+ };
152
+ let Element = 'article';
153
+ if (href || onClick) Element = href ? 'a' : 'button';
154
+ // archived assets will not be available on the CDN, resulting in a broken image src
155
+ const isArchived = status === 'archived';
156
+ const asIcon = isArchived || !thumbnailUrl;
157
+ return(/*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("li", {
158
+ ...otherProps,
159
+ className: $hadoL$emotion.cx(styles.root({
160
+ isDragActive: isDragActive
161
+ }), className),
162
+ "data-test-id": testId
163
+ }, renderCardDragHandle(), isLoading ? /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("article", {
164
+ className: styles.card
165
+ }, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36skeleton.SkeletonContainer, {
166
+ clipId: "f36-entity-list-item-skeleton"
167
+ }, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36skeleton.SkeletonImage, {
168
+ height: 46,
169
+ width: 46
170
+ }), /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36skeleton.SkeletonBodyText, {
171
+ numberOfLines: 2,
172
+ lineHeight: 18,
173
+ offsetLeft: 54
174
+ }))) : /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement(Element, {
175
+ className: styles.card,
176
+ onClick: onClick,
177
+ href: href,
178
+ type: Element === 'button' ? 'button' : undefined,
179
+ target: href ? '_blank' : undefined
180
+ }, withThumbnail && /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("figure", {
181
+ className: styles.media
182
+ }, asIcon ? /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36icon.Icon, {
183
+ as: $3f4d63406b2f6561$var$ICON_MAP[entityType.toLowerCase()],
184
+ variant: "muted"
185
+ }) : /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("img", {
186
+ src: thumbnailUrl,
187
+ className: styles.thumbnail,
188
+ alt: thumbnailAltText
189
+ })), /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement("div", {
190
+ className: styles.content
191
+ }, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36core.Flex, null, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36typography.Text, {
192
+ as: "h3",
193
+ lineHeight: "lineHeightM",
194
+ fontColor: "gray900",
195
+ fontWeight: "fontWeightDemiBold",
196
+ isTruncated: true
197
+ }, title), contentType && /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36typography.Text, {
198
+ as: "span",
199
+ lineHeight: "lineHeightM",
200
+ fontColor: "gray600",
201
+ className: styles.contentType,
202
+ isTruncated: true
203
+ }, "(", contentType, ")")), description && /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36typography.Text, {
204
+ as: "p",
205
+ lineHeight: "lineHeightM",
206
+ fontColor: "gray900",
207
+ isTruncated: true,
208
+ className: styles.description
209
+ }, description)), /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36core.Flex, {
210
+ className: styles.meta,
211
+ alignItems: "flex-start",
212
+ paddingLeft: "spacingXs"
213
+ }, status && /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36core.Box, {
214
+ marginRight: actions ? 'spacingXs' : 'none'
215
+ }, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36badge.EntityStatusBadge, {
216
+ entityStatus: status
217
+ })), actions && /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36menu.Menu, null, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36menu.Menu.Trigger, null, /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36button.Button, {
218
+ isDisabled: isActionsDisabled,
219
+ startIcon: /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36icons.MoreHorizontalIcon, null),
220
+ variant: "transparent",
221
+ "aria-label": "Actions",
222
+ size: "small",
223
+ className: styles.menuTrigger
224
+ })), /*#__PURE__*/ ($parcel$interopDefault($hadoL$react)).createElement($hadoL$contentfulf36menu.Menu.List, null, actions))))));
225
+ }
226
+
227
+
228
+ const $e853778315da5e40$export$8bb466c13870163e = $42fa390001ac865a$export$8bb466c13870163e;
229
+ $e853778315da5e40$export$8bb466c13870163e.Item = $3f4d63406b2f6561$export$65b9c70c5f42a158;
230
+
231
+
232
+
233
+
234
+
235
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/components/entity-list/src/index.ts","packages/components/entity-list/src/CompoundEntityList.tsx","packages/components/entity-list/src/EntityList.tsx","packages/components/entity-list/src/EntityList.styles.ts","packages/components/entity-list/src/EntityListItem/EntityListItem.tsx","packages/components/entity-list/src/EntityListItem/EntityListItem.styles.ts"],"sourcesContent":["export { EntityList } from './CompoundEntityList';\nexport type { EntityListProps } from './EntityList';\nexport { EntityListItem } from './EntityListItem/EntityListItem';\nexport type { EntityListItemProps } from './EntityListItem/EntityListItem';\n","import { EntityList as OriginalEntityList } from './EntityList';\nimport { EntityListItem } from './EntityListItem/EntityListItem';\n\ntype CompoundEntityList = typeof OriginalEntityList & {\n Item: typeof EntityListItem;\n};\n\nexport const EntityList = OriginalEntityList as CompoundEntityList;\nEntityList.Item = EntityListItem;\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { CommonProps, ExpandProps } from '@contentful/f36-core';\n\nimport { getEntityListStyles } from './EntityList.styles';\n\nexport interface EntityListProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction _EntityList(\n props: ExpandProps<EntityListProps>,\n ref: React.Ref<HTMLUListElement>,\n) {\n const styles = getEntityListStyles();\n\n return (\n <ul\n data-test-id={props.testId || 'cf-ui-entity-list'}\n ref={ref}\n className={cx(styles.root, props.className)}\n style={props.style}\n >\n {props.children}\n </ul>\n );\n}\n\nexport const EntityList = React.forwardRef(_EntityList);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getEntityListStyles = () => ({\n root: css({\n display: 'block',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n border: `1px solid ${tokens.gray200}`,\n borderBottom: 'none',\n borderRadius: tokens.borderRadiusMedium,\n overflow: 'hidden',\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type { MouseEventHandler } from 'react';\n\nimport { EntityStatusBadge } from '@contentful/f36-badge';\nimport type {\n CommonProps,\n EntityStatus,\n PickUnion,\n} from '@contentful/f36-core';\nimport {\n AssetIcon,\n EntryIcon,\n ReleaseIcon,\n MoreHorizontalIcon,\n} from '@contentful/f36-icons';\nimport { Icon } from '@contentful/f36-icon';\nimport { Text } from '@contentful/f36-typography';\nimport { DragHandle } from '@contentful/f36-drag-handle';\nimport type { DragHandleProps } from '@contentful/f36-drag-handle';\nimport { Button } from '@contentful/f36-button';\nimport { Menu } from '@contentful/f36-menu';\n\nimport { getEntityListItemStyles } from './EntityListItem.styles';\n\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex, Box } from '@contentful/f36-core';\n\ntype EntityListItemStatus = PickUnion<\n EntityStatus,\n 'archived' | 'changed' | 'draft' | 'published'\n>;\n\nconst ICON_MAP = {\n asset: AssetIcon,\n entry: EntryIcon,\n release: ReleaseIcon,\n};\n\nexport interface EntityListItemProps extends CommonProps {\n /**\n * The title of the entity\n */\n title: string;\n /**\n * The description of the entity\n */\n description?: string;\n /**\n * The content type of the entity\n */\n contentType?: string;\n /**\n * The publish status of the entry\n */\n status?: EntityListItemStatus;\n /**\n * A boolean used to render the Thumbnail or not\n */\n withThumbnail?: boolean;\n /**\n * The URL of the entity's preview thumbnail. Use 46px x 46px images for best results\n */\n thumbnailUrl?: string;\n /**\n * The alt text for the thumbnail\n */\n thumbnailAltText?: string;\n /**\n * Menu elements rendered as actions in Menu\n */\n actions?: React.ReactNodeArray;\n /**\n * Renders a drag handle for the component for use in drag and drop contexts\n */\n withDragHandle?: boolean;\n /**\n * Applies styling for when the component is actively being dragged by the user\n */\n isDragActive?: boolean;\n /**\n * Prop to pass a custom CardDragHandle component to for use in drag and drop contexts\n */\n cardDragHandleComponent?: React.ReactNode;\n /**\n * Props to pass down to the default CardDragHandle component (does not work with cardDragHandleComponent prop)\n */\n cardDragHandleProps?: Partial<DragHandleProps>;\n /**\n * An entity can either be an Entry, an Asset or a Release. This prop will apply styling based on if the entity is an asset, a release or an entry\n *\n * Note: 'entry' and 'asset' are @deprecated but supported in v1.x for backwards compatibility\n */\n entityType?: 'Entry' | 'Asset' | 'entry' | 'asset' | 'Release';\n /**\n * Loading state for the component - when true will display loading feedback to the user\n */\n isLoading?: boolean;\n /**\n * The action to be performed on click of the EntryCard\n */\n onClick?: MouseEventHandler;\n /**\n * The href for the component. Will render the card as an `a` element for native browser link handling\n */\n href?: string;\n /**\n * A boolean used to disable the CardActions\n */\n isActionsDisabled?: boolean;\n}\n\nexport function EntityListItem({\n className,\n testId = 'cf-ui-entity-list-item',\n title,\n description,\n contentType,\n entityType = 'entry',\n withThumbnail = true,\n thumbnailUrl,\n thumbnailAltText,\n status,\n actions,\n withDragHandle,\n isDragActive,\n isLoading,\n onClick,\n href,\n cardDragHandleProps,\n cardDragHandleComponent,\n isActionsDisabled = false,\n ...otherProps\n}: EntityListItemProps): React.ReactElement {\n const styles = getEntityListItemStyles();\n\n const renderCardDragHandle = () => {\n if (cardDragHandleComponent) {\n return cardDragHandleComponent;\n } else if (withDragHandle) {\n return (\n <DragHandle\n className={styles.dragHandle}\n isActive={isDragActive}\n label=\"Reorder entry\"\n {...cardDragHandleProps}\n />\n );\n }\n };\n\n let Element: React.ElementType = 'article';\n if (href || onClick) {\n Element = href ? 'a' : 'button';\n }\n\n // archived assets will not be available on the CDN, resulting in a broken image src\n const isArchived = status === 'archived';\n const asIcon = isArchived || !thumbnailUrl;\n\n return (\n <li\n {...otherProps}\n className={cx(styles.root({ isDragActive }), className)}\n data-test-id={testId}\n >\n {renderCardDragHandle()}\n {isLoading ? (\n <article className={styles.card}>\n <SkeletonContainer clipId=\"f36-entity-list-item-skeleton\">\n <SkeletonImage height={46} width={46} />\n <SkeletonBodyText\n numberOfLines={2}\n lineHeight={18}\n offsetLeft={54}\n />\n </SkeletonContainer>\n </article>\n ) : (\n <Element\n className={styles.card}\n onClick={onClick}\n href={href}\n type={Element === 'button' ? 'button' : undefined}\n target={href ? '_blank' : undefined}\n >\n {withThumbnail && (\n <figure className={styles.media}>\n {asIcon ? (\n <Icon as={ICON_MAP[entityType.toLowerCase()]} variant=\"muted\" />\n ) : (\n <img\n src={thumbnailUrl}\n className={styles.thumbnail}\n alt={thumbnailAltText}\n />\n )}\n </figure>\n )}\n\n <div className={styles.content}>\n <Flex>\n <Text\n as=\"h3\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray900\"\n fontWeight=\"fontWeightDemiBold\"\n isTruncated\n >\n {title}\n </Text>\n\n {contentType && (\n <Text\n as=\"span\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray600\"\n className={styles.contentType}\n isTruncated\n >\n ({contentType})\n </Text>\n )}\n </Flex>\n {description && (\n <Text\n as=\"p\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray900\"\n isTruncated\n className={styles.description}\n >\n {description}\n </Text>\n )}\n </div>\n\n <Flex\n className={styles.meta}\n alignItems=\"flex-start\"\n paddingLeft=\"spacingXs\"\n >\n {status && (\n <Box marginRight={actions ? 'spacingXs' : 'none'}>\n <EntityStatusBadge entityStatus={status} />\n </Box>\n )}\n\n {actions && (\n <Menu>\n <Menu.Trigger>\n <Button\n isDisabled={isActionsDisabled}\n startIcon={<MoreHorizontalIcon />}\n variant=\"transparent\"\n aria-label=\"Actions\"\n size=\"small\"\n className={styles.menuTrigger}\n />\n </Menu.Trigger>\n <Menu.List>{actions}</Menu.List>\n </Menu>\n )}\n </Flex>\n </Element>\n )}\n </li>\n );\n}\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { EntityListItemProps } from './EntityListItem';\n\nexport const getEntityListItemStyles = () => ({\n root: (props: Pick<EntityListItemProps, 'isDragActive'>) =>\n css({\n display: 'flex',\n boxShadow: `inset 0 -1px 0 ${tokens.gray200}`,\n position: 'relative',\n transition: `${tokens.transitionDurationShort} ${tokens.transitionEasingDefault}`,\n transitionProperty: 'box-shadow, background-color',\n backgroundColor: tokens.colorWhite,\n ...(props.isDragActive\n ? {\n boxShadow: tokens.boxShadowHeavy,\n }\n : {}),\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n }),\n card: css({\n display: 'flex',\n textDecoration: 'none',\n width: '100%',\n minHeight: tokens.spacing3Xl,\n padding: tokens.spacingXs,\n border: 'none',\n background: 'none',\n textAlign: 'left',\n }),\n content: css({\n flexGrow: 1,\n minWidth: 0,\n }),\n media: css({\n display: 'flex',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: tokens.gray200,\n width: tokens.spacing2Xl,\n height: tokens.spacing2Xl,\n margin: '0',\n marginRight: tokens.spacingXs,\n }),\n thumbnail: css({\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }),\n contentType: css({\n marginLeft: tokens.spacingXs,\n }),\n description: css({\n marginTop: tokens.spacing2Xs,\n }),\n meta: css({\n marginLeft: 'auto',\n flexShrink: 0,\n }),\n dragHandle: css({\n borderBottomLeftRadius: '0',\n borderTopLeftRadius: '0',\n boxShadow: `inset 0 -1px 0 ${tokens.gray200}`,\n }),\n menuTrigger: css({\n padding: '0 0.125rem',\n minHeight: '1.5rem',\n }),\n});\n"],"names":["EntityList","EntityListProps","EntityListItem","EntityListItemProps","OriginalEntityList","CompoundEntityList","Item","React","CommonProps","ExpandProps","getEntityListStyles","children","ReactNode","_EntityList","props","ref","Ref","HTMLUListElement","styles","testId","root","className","style","forwardRef","tokens","display","listStyle","margin","padding","border","gray200","borderBottom","borderRadius","borderRadiusMedium","overflow","MouseEventHandler","EntityStatusBadge","EntityStatus","PickUnion","AssetIcon","EntryIcon","ReleaseIcon","MoreHorizontalIcon","Icon","Text","DragHandle","DragHandleProps","Button","Menu","getEntityListItemStyles","SkeletonBodyText","SkeletonContainer","SkeletonImage","Flex","Box","EntityListItemStatus","ICON_MAP","asset","entry","release","title","description","contentType","status","withThumbnail","thumbnailUrl","thumbnailAltText","actions","ReactNodeArray","withDragHandle","isDragActive","cardDragHandleComponent","cardDragHandleProps","Partial","entityType","isLoading","onClick","href","isActionsDisabled","otherProps","ReactElement","renderCardDragHandle","dragHandle","Element","ElementType","isArchived","asIcon","card","undefined","media","toLowerCase","thumbnail","content","meta","menuTrigger","Pick","boxShadow","position","transition","transitionDurationShort","transitionEasingDefault","transitionProperty","backgroundColor","colorWhite","boxShadowHeavy","gray100","textDecoration","width","minHeight","spacing3Xl","spacingXs","background","textAlign","flexShrink","alignItems","justifyContent","spacing2Xl","height","marginRight","marginLeft","marginTop","spacing2Xs","borderBottomLeftRadius","borderTopLeftRadius"],"version":3,"file":"main.js.map"}
package/dist/module.js ADDED
@@ -0,0 +1,227 @@
1
+ import {cx as $qeOF0$cx, css as $qeOF0$css} from "emotion";
2
+ import $qeOF0$react from "react";
3
+ import $qeOF0$contentfulf36tokens from "@contentful/f36-tokens";
4
+ import {EntityStatusBadge as $qeOF0$EntityStatusBadge} from "@contentful/f36-badge";
5
+ import {AssetIcon as $qeOF0$AssetIcon, EntryIcon as $qeOF0$EntryIcon, ReleaseIcon as $qeOF0$ReleaseIcon, MoreHorizontalIcon as $qeOF0$MoreHorizontalIcon} from "@contentful/f36-icons";
6
+ import {Icon as $qeOF0$Icon} from "@contentful/f36-icon";
7
+ import {Text as $qeOF0$Text} from "@contentful/f36-typography";
8
+ import {DragHandle as $qeOF0$DragHandle} from "@contentful/f36-drag-handle";
9
+ import {Button as $qeOF0$Button} from "@contentful/f36-button";
10
+ import {Menu as $qeOF0$Menu} from "@contentful/f36-menu";
11
+ import {SkeletonContainer as $qeOF0$SkeletonContainer, SkeletonImage as $qeOF0$SkeletonImage, SkeletonBodyText as $qeOF0$SkeletonBodyText} from "@contentful/f36-skeleton";
12
+ import {Flex as $qeOF0$Flex, Box as $qeOF0$Box} from "@contentful/f36-core";
13
+
14
+
15
+
16
+
17
+
18
+ const $32a4ed8cc58cbd41$export$2b0a239870ba448d = ()=>({
19
+ root: /*#__PURE__*/ $qeOF0$css({
20
+ display: 'block',
21
+ listStyle: 'none',
22
+ margin: 0,
23
+ padding: 0,
24
+ border: `1px solid ${$qeOF0$contentfulf36tokens.gray200}`,
25
+ borderBottom: 'none',
26
+ borderRadius: $qeOF0$contentfulf36tokens.borderRadiusMedium,
27
+ overflow: 'hidden'
28
+ })
29
+ })
30
+ ;
31
+
32
+
33
+ function $3382b9e83b849fa7$var$_EntityList(props, ref) {
34
+ const styles = $32a4ed8cc58cbd41$export$2b0a239870ba448d();
35
+ return(/*#__PURE__*/ $qeOF0$react.createElement("ul", {
36
+ "data-test-id": props.testId || 'cf-ui-entity-list',
37
+ ref: ref,
38
+ className: $qeOF0$cx(styles.root, props.className),
39
+ style: props.style
40
+ }, props.children));
41
+ }
42
+ const $3382b9e83b849fa7$export$8bb466c13870163e = /*#__PURE__*/ $qeOF0$react.forwardRef($3382b9e83b849fa7$var$_EntityList);
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+ const $7cd3138fd5d2efdd$export$3bb342229d68a121 = ()=>({
57
+ root: (props)=>/*#__PURE__*/ $qeOF0$css({
58
+ display: 'flex',
59
+ boxShadow: `inset 0 -1px 0 ${$qeOF0$contentfulf36tokens.gray200}`,
60
+ position: 'relative',
61
+ transition: `${$qeOF0$contentfulf36tokens.transitionDurationShort} ${$qeOF0$contentfulf36tokens.transitionEasingDefault}`,
62
+ transitionProperty: 'box-shadow, background-color',
63
+ backgroundColor: $qeOF0$contentfulf36tokens.colorWhite,
64
+ ...props.isDragActive ? {
65
+ boxShadow: $qeOF0$contentfulf36tokens.boxShadowHeavy
66
+ } : {
67
+ },
68
+ '&:hover': {
69
+ backgroundColor: $qeOF0$contentfulf36tokens.gray100
70
+ }
71
+ })
72
+ ,
73
+ card: /*#__PURE__*/ $qeOF0$css({
74
+ display: 'flex',
75
+ textDecoration: 'none',
76
+ width: '100%',
77
+ minHeight: $qeOF0$contentfulf36tokens.spacing3Xl,
78
+ padding: $qeOF0$contentfulf36tokens.spacingXs,
79
+ border: 'none',
80
+ background: 'none',
81
+ textAlign: 'left'
82
+ }),
83
+ content: /*#__PURE__*/ $qeOF0$css({
84
+ name: "15ync0s",
85
+ styles: "flex-grow:1;min-width:0;"
86
+ }),
87
+ media: /*#__PURE__*/ $qeOF0$css({
88
+ display: 'flex',
89
+ flexShrink: 0,
90
+ alignItems: 'center',
91
+ justifyContent: 'center',
92
+ backgroundColor: $qeOF0$contentfulf36tokens.gray200,
93
+ width: $qeOF0$contentfulf36tokens.spacing2Xl,
94
+ height: $qeOF0$contentfulf36tokens.spacing2Xl,
95
+ margin: '0',
96
+ marginRight: $qeOF0$contentfulf36tokens.spacingXs
97
+ }),
98
+ thumbnail: /*#__PURE__*/ $qeOF0$css({
99
+ name: "12qah06",
100
+ styles: "display:block;width:100%;height:100%;object-fit:cover;"
101
+ }),
102
+ contentType: /*#__PURE__*/ $qeOF0$css({
103
+ marginLeft: $qeOF0$contentfulf36tokens.spacingXs
104
+ }),
105
+ description: /*#__PURE__*/ $qeOF0$css({
106
+ marginTop: $qeOF0$contentfulf36tokens.spacing2Xs
107
+ }),
108
+ meta: /*#__PURE__*/ $qeOF0$css({
109
+ name: "1n0gfod",
110
+ styles: "margin-left:auto;flex-shrink:0;"
111
+ }),
112
+ dragHandle: /*#__PURE__*/ $qeOF0$css({
113
+ borderBottomLeftRadius: '0',
114
+ borderTopLeftRadius: '0',
115
+ boxShadow: `inset 0 -1px 0 ${$qeOF0$contentfulf36tokens.gray200}`
116
+ }),
117
+ menuTrigger: /*#__PURE__*/ $qeOF0$css({
118
+ name: "c1v07n",
119
+ styles: "padding:0 0.125rem;min-height:1.5rem;"
120
+ })
121
+ })
122
+ ;
123
+
124
+
125
+
126
+
127
+ const $b8d6b7ec5fedd0fe$var$ICON_MAP = {
128
+ asset: $qeOF0$AssetIcon,
129
+ entry: $qeOF0$EntryIcon,
130
+ release: $qeOF0$ReleaseIcon
131
+ };
132
+ function $b8d6b7ec5fedd0fe$export$65b9c70c5f42a158({ className: className , testId: testId = 'cf-ui-entity-list-item' , title: title , description: description , contentType: contentType , entityType: entityType = 'entry' , withThumbnail: withThumbnail = true , thumbnailUrl: thumbnailUrl , thumbnailAltText: thumbnailAltText , status: status , actions: actions , withDragHandle: withDragHandle , isDragActive: isDragActive , isLoading: isLoading , onClick: onClick , href: href , cardDragHandleProps: cardDragHandleProps , cardDragHandleComponent: cardDragHandleComponent , isActionsDisabled: isActionsDisabled = false , ...otherProps }) {
133
+ const styles = $7cd3138fd5d2efdd$export$3bb342229d68a121();
134
+ const renderCardDragHandle = ()=>{
135
+ if (cardDragHandleComponent) return cardDragHandleComponent;
136
+ else if (withDragHandle) return(/*#__PURE__*/ $qeOF0$react.createElement($qeOF0$DragHandle, {
137
+ className: styles.dragHandle,
138
+ isActive: isDragActive,
139
+ label: "Reorder entry",
140
+ ...cardDragHandleProps
141
+ }));
142
+ };
143
+ let Element = 'article';
144
+ if (href || onClick) Element = href ? 'a' : 'button';
145
+ // archived assets will not be available on the CDN, resulting in a broken image src
146
+ const isArchived = status === 'archived';
147
+ const asIcon = isArchived || !thumbnailUrl;
148
+ return(/*#__PURE__*/ $qeOF0$react.createElement("li", {
149
+ ...otherProps,
150
+ className: $qeOF0$cx(styles.root({
151
+ isDragActive: isDragActive
152
+ }), className),
153
+ "data-test-id": testId
154
+ }, renderCardDragHandle(), isLoading ? /*#__PURE__*/ $qeOF0$react.createElement("article", {
155
+ className: styles.card
156
+ }, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$SkeletonContainer, {
157
+ clipId: "f36-entity-list-item-skeleton"
158
+ }, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$SkeletonImage, {
159
+ height: 46,
160
+ width: 46
161
+ }), /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$SkeletonBodyText, {
162
+ numberOfLines: 2,
163
+ lineHeight: 18,
164
+ offsetLeft: 54
165
+ }))) : /*#__PURE__*/ $qeOF0$react.createElement(Element, {
166
+ className: styles.card,
167
+ onClick: onClick,
168
+ href: href,
169
+ type: Element === 'button' ? 'button' : undefined,
170
+ target: href ? '_blank' : undefined
171
+ }, withThumbnail && /*#__PURE__*/ $qeOF0$react.createElement("figure", {
172
+ className: styles.media
173
+ }, asIcon ? /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Icon, {
174
+ as: $b8d6b7ec5fedd0fe$var$ICON_MAP[entityType.toLowerCase()],
175
+ variant: "muted"
176
+ }) : /*#__PURE__*/ $qeOF0$react.createElement("img", {
177
+ src: thumbnailUrl,
178
+ className: styles.thumbnail,
179
+ alt: thumbnailAltText
180
+ })), /*#__PURE__*/ $qeOF0$react.createElement("div", {
181
+ className: styles.content
182
+ }, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Flex, null, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Text, {
183
+ as: "h3",
184
+ lineHeight: "lineHeightM",
185
+ fontColor: "gray900",
186
+ fontWeight: "fontWeightDemiBold",
187
+ isTruncated: true
188
+ }, title), contentType && /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Text, {
189
+ as: "span",
190
+ lineHeight: "lineHeightM",
191
+ fontColor: "gray600",
192
+ className: styles.contentType,
193
+ isTruncated: true
194
+ }, "(", contentType, ")")), description && /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Text, {
195
+ as: "p",
196
+ lineHeight: "lineHeightM",
197
+ fontColor: "gray900",
198
+ isTruncated: true,
199
+ className: styles.description
200
+ }, description)), /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Flex, {
201
+ className: styles.meta,
202
+ alignItems: "flex-start",
203
+ paddingLeft: "spacingXs"
204
+ }, status && /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Box, {
205
+ marginRight: actions ? 'spacingXs' : 'none'
206
+ }, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$EntityStatusBadge, {
207
+ entityStatus: status
208
+ })), actions && /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Menu, null, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Menu.Trigger, null, /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Button, {
209
+ isDisabled: isActionsDisabled,
210
+ startIcon: /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$MoreHorizontalIcon, null),
211
+ variant: "transparent",
212
+ "aria-label": "Actions",
213
+ size: "small",
214
+ className: styles.menuTrigger
215
+ })), /*#__PURE__*/ $qeOF0$react.createElement($qeOF0$Menu.List, null, actions))))));
216
+ }
217
+
218
+
219
+ const $bbd0ee2d7d3132a2$export$8bb466c13870163e = $3382b9e83b849fa7$export$8bb466c13870163e;
220
+ $bbd0ee2d7d3132a2$export$8bb466c13870163e.Item = $b8d6b7ec5fedd0fe$export$65b9c70c5f42a158;
221
+
222
+
223
+
224
+
225
+
226
+ export {$bbd0ee2d7d3132a2$export$8bb466c13870163e as EntityList, $b8d6b7ec5fedd0fe$export$65b9c70c5f42a158 as EntityListItem};
227
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/components/entity-list/src/index.ts","packages/components/entity-list/src/CompoundEntityList.tsx","packages/components/entity-list/src/EntityList.tsx","packages/components/entity-list/src/EntityList.styles.ts","packages/components/entity-list/src/EntityListItem/EntityListItem.tsx","packages/components/entity-list/src/EntityListItem/EntityListItem.styles.ts"],"sourcesContent":["export { EntityList } from './CompoundEntityList';\nexport type { EntityListProps } from './EntityList';\nexport { EntityListItem } from './EntityListItem/EntityListItem';\nexport type { EntityListItemProps } from './EntityListItem/EntityListItem';\n","import { EntityList as OriginalEntityList } from './EntityList';\nimport { EntityListItem } from './EntityListItem/EntityListItem';\n\ntype CompoundEntityList = typeof OriginalEntityList & {\n Item: typeof EntityListItem;\n};\n\nexport const EntityList = OriginalEntityList as CompoundEntityList;\nEntityList.Item = EntityListItem;\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { CommonProps, ExpandProps } from '@contentful/f36-core';\n\nimport { getEntityListStyles } from './EntityList.styles';\n\nexport interface EntityListProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction _EntityList(\n props: ExpandProps<EntityListProps>,\n ref: React.Ref<HTMLUListElement>,\n) {\n const styles = getEntityListStyles();\n\n return (\n <ul\n data-test-id={props.testId || 'cf-ui-entity-list'}\n ref={ref}\n className={cx(styles.root, props.className)}\n style={props.style}\n >\n {props.children}\n </ul>\n );\n}\n\nexport const EntityList = React.forwardRef(_EntityList);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getEntityListStyles = () => ({\n root: css({\n display: 'block',\n listStyle: 'none',\n margin: 0,\n padding: 0,\n border: `1px solid ${tokens.gray200}`,\n borderBottom: 'none',\n borderRadius: tokens.borderRadiusMedium,\n overflow: 'hidden',\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type { MouseEventHandler } from 'react';\n\nimport { EntityStatusBadge } from '@contentful/f36-badge';\nimport type {\n CommonProps,\n EntityStatus,\n PickUnion,\n} from '@contentful/f36-core';\nimport {\n AssetIcon,\n EntryIcon,\n ReleaseIcon,\n MoreHorizontalIcon,\n} from '@contentful/f36-icons';\nimport { Icon } from '@contentful/f36-icon';\nimport { Text } from '@contentful/f36-typography';\nimport { DragHandle } from '@contentful/f36-drag-handle';\nimport type { DragHandleProps } from '@contentful/f36-drag-handle';\nimport { Button } from '@contentful/f36-button';\nimport { Menu } from '@contentful/f36-menu';\n\nimport { getEntityListItemStyles } from './EntityListItem.styles';\n\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex, Box } from '@contentful/f36-core';\n\ntype EntityListItemStatus = PickUnion<\n EntityStatus,\n 'archived' | 'changed' | 'draft' | 'published'\n>;\n\nconst ICON_MAP = {\n asset: AssetIcon,\n entry: EntryIcon,\n release: ReleaseIcon,\n};\n\nexport interface EntityListItemProps extends CommonProps {\n /**\n * The title of the entity\n */\n title: string;\n /**\n * The description of the entity\n */\n description?: string;\n /**\n * The content type of the entity\n */\n contentType?: string;\n /**\n * The publish status of the entry\n */\n status?: EntityListItemStatus;\n /**\n * A boolean used to render the Thumbnail or not\n */\n withThumbnail?: boolean;\n /**\n * The URL of the entity's preview thumbnail. Use 46px x 46px images for best results\n */\n thumbnailUrl?: string;\n /**\n * The alt text for the thumbnail\n */\n thumbnailAltText?: string;\n /**\n * Menu elements rendered as actions in Menu\n */\n actions?: React.ReactNodeArray;\n /**\n * Renders a drag handle for the component for use in drag and drop contexts\n */\n withDragHandle?: boolean;\n /**\n * Applies styling for when the component is actively being dragged by the user\n */\n isDragActive?: boolean;\n /**\n * Prop to pass a custom CardDragHandle component to for use in drag and drop contexts\n */\n cardDragHandleComponent?: React.ReactNode;\n /**\n * Props to pass down to the default CardDragHandle component (does not work with cardDragHandleComponent prop)\n */\n cardDragHandleProps?: Partial<DragHandleProps>;\n /**\n * An entity can either be an Entry, an Asset or a Release. This prop will apply styling based on if the entity is an asset, a release or an entry\n *\n * Note: 'entry' and 'asset' are @deprecated but supported in v1.x for backwards compatibility\n */\n entityType?: 'Entry' | 'Asset' | 'entry' | 'asset' | 'Release';\n /**\n * Loading state for the component - when true will display loading feedback to the user\n */\n isLoading?: boolean;\n /**\n * The action to be performed on click of the EntryCard\n */\n onClick?: MouseEventHandler;\n /**\n * The href for the component. Will render the card as an `a` element for native browser link handling\n */\n href?: string;\n /**\n * A boolean used to disable the CardActions\n */\n isActionsDisabled?: boolean;\n}\n\nexport function EntityListItem({\n className,\n testId = 'cf-ui-entity-list-item',\n title,\n description,\n contentType,\n entityType = 'entry',\n withThumbnail = true,\n thumbnailUrl,\n thumbnailAltText,\n status,\n actions,\n withDragHandle,\n isDragActive,\n isLoading,\n onClick,\n href,\n cardDragHandleProps,\n cardDragHandleComponent,\n isActionsDisabled = false,\n ...otherProps\n}: EntityListItemProps): React.ReactElement {\n const styles = getEntityListItemStyles();\n\n const renderCardDragHandle = () => {\n if (cardDragHandleComponent) {\n return cardDragHandleComponent;\n } else if (withDragHandle) {\n return (\n <DragHandle\n className={styles.dragHandle}\n isActive={isDragActive}\n label=\"Reorder entry\"\n {...cardDragHandleProps}\n />\n );\n }\n };\n\n let Element: React.ElementType = 'article';\n if (href || onClick) {\n Element = href ? 'a' : 'button';\n }\n\n // archived assets will not be available on the CDN, resulting in a broken image src\n const isArchived = status === 'archived';\n const asIcon = isArchived || !thumbnailUrl;\n\n return (\n <li\n {...otherProps}\n className={cx(styles.root({ isDragActive }), className)}\n data-test-id={testId}\n >\n {renderCardDragHandle()}\n {isLoading ? (\n <article className={styles.card}>\n <SkeletonContainer clipId=\"f36-entity-list-item-skeleton\">\n <SkeletonImage height={46} width={46} />\n <SkeletonBodyText\n numberOfLines={2}\n lineHeight={18}\n offsetLeft={54}\n />\n </SkeletonContainer>\n </article>\n ) : (\n <Element\n className={styles.card}\n onClick={onClick}\n href={href}\n type={Element === 'button' ? 'button' : undefined}\n target={href ? '_blank' : undefined}\n >\n {withThumbnail && (\n <figure className={styles.media}>\n {asIcon ? (\n <Icon as={ICON_MAP[entityType.toLowerCase()]} variant=\"muted\" />\n ) : (\n <img\n src={thumbnailUrl}\n className={styles.thumbnail}\n alt={thumbnailAltText}\n />\n )}\n </figure>\n )}\n\n <div className={styles.content}>\n <Flex>\n <Text\n as=\"h3\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray900\"\n fontWeight=\"fontWeightDemiBold\"\n isTruncated\n >\n {title}\n </Text>\n\n {contentType && (\n <Text\n as=\"span\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray600\"\n className={styles.contentType}\n isTruncated\n >\n ({contentType})\n </Text>\n )}\n </Flex>\n {description && (\n <Text\n as=\"p\"\n lineHeight=\"lineHeightM\"\n fontColor=\"gray900\"\n isTruncated\n className={styles.description}\n >\n {description}\n </Text>\n )}\n </div>\n\n <Flex\n className={styles.meta}\n alignItems=\"flex-start\"\n paddingLeft=\"spacingXs\"\n >\n {status && (\n <Box marginRight={actions ? 'spacingXs' : 'none'}>\n <EntityStatusBadge entityStatus={status} />\n </Box>\n )}\n\n {actions && (\n <Menu>\n <Menu.Trigger>\n <Button\n isDisabled={isActionsDisabled}\n startIcon={<MoreHorizontalIcon />}\n variant=\"transparent\"\n aria-label=\"Actions\"\n size=\"small\"\n className={styles.menuTrigger}\n />\n </Menu.Trigger>\n <Menu.List>{actions}</Menu.List>\n </Menu>\n )}\n </Flex>\n </Element>\n )}\n </li>\n );\n}\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { EntityListItemProps } from './EntityListItem';\n\nexport const getEntityListItemStyles = () => ({\n root: (props: Pick<EntityListItemProps, 'isDragActive'>) =>\n css({\n display: 'flex',\n boxShadow: `inset 0 -1px 0 ${tokens.gray200}`,\n position: 'relative',\n transition: `${tokens.transitionDurationShort} ${tokens.transitionEasingDefault}`,\n transitionProperty: 'box-shadow, background-color',\n backgroundColor: tokens.colorWhite,\n ...(props.isDragActive\n ? {\n boxShadow: tokens.boxShadowHeavy,\n }\n : {}),\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n }),\n card: css({\n display: 'flex',\n textDecoration: 'none',\n width: '100%',\n minHeight: tokens.spacing3Xl,\n padding: tokens.spacingXs,\n border: 'none',\n background: 'none',\n textAlign: 'left',\n }),\n content: css({\n flexGrow: 1,\n minWidth: 0,\n }),\n media: css({\n display: 'flex',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: tokens.gray200,\n width: tokens.spacing2Xl,\n height: tokens.spacing2Xl,\n margin: '0',\n marginRight: tokens.spacingXs,\n }),\n thumbnail: css({\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }),\n contentType: css({\n marginLeft: tokens.spacingXs,\n }),\n description: css({\n marginTop: tokens.spacing2Xs,\n }),\n meta: css({\n marginLeft: 'auto',\n flexShrink: 0,\n }),\n dragHandle: css({\n borderBottomLeftRadius: '0',\n borderTopLeftRadius: '0',\n boxShadow: `inset 0 -1px 0 ${tokens.gray200}`,\n }),\n menuTrigger: css({\n padding: '0 0.125rem',\n minHeight: '1.5rem',\n }),\n});\n"],"names":["EntityList","EntityListProps","EntityListItem","EntityListItemProps","OriginalEntityList","CompoundEntityList","Item","React","CommonProps","ExpandProps","getEntityListStyles","children","ReactNode","_EntityList","props","ref","Ref","HTMLUListElement","styles","testId","root","className","style","forwardRef","tokens","display","listStyle","margin","padding","border","gray200","borderBottom","borderRadius","borderRadiusMedium","overflow","MouseEventHandler","EntityStatusBadge","EntityStatus","PickUnion","AssetIcon","EntryIcon","ReleaseIcon","MoreHorizontalIcon","Icon","Text","DragHandle","DragHandleProps","Button","Menu","getEntityListItemStyles","SkeletonBodyText","SkeletonContainer","SkeletonImage","Flex","Box","EntityListItemStatus","ICON_MAP","asset","entry","release","title","description","contentType","status","withThumbnail","thumbnailUrl","thumbnailAltText","actions","ReactNodeArray","withDragHandle","isDragActive","cardDragHandleComponent","cardDragHandleProps","Partial","entityType","isLoading","onClick","href","isActionsDisabled","otherProps","ReactElement","renderCardDragHandle","dragHandle","Element","ElementType","isArchived","asIcon","card","undefined","media","toLowerCase","thumbnail","content","meta","menuTrigger","Pick","boxShadow","position","transition","transitionDurationShort","transitionEasingDefault","transitionProperty","backgroundColor","colorWhite","boxShadowHeavy","gray100","textDecoration","width","minHeight","spacing3Xl","spacingXs","background","textAlign","flexShrink","alignItems","justifyContent","spacing2Xl","height","marginRight","marginLeft","marginTop","spacing2Xs","borderBottomLeftRadius","borderTopLeftRadius"],"version":3,"file":"module.js.map"}
@@ -0,0 +1,92 @@
1
+ import React, { MouseEventHandler } from "react";
2
+ import { CommonProps, EntityStatus, PickUnion } from "@contentful/f36-core";
3
+ import { DragHandleProps } from "@contentful/f36-drag-handle";
4
+ export interface EntityListProps extends CommonProps {
5
+ children?: React.ReactNode;
6
+ }
7
+ declare const _EntityList1: React.ForwardRefExoticComponent<{
8
+ children?: React.ReactNode;
9
+ className?: string;
10
+ testId?: string;
11
+ style?: React.CSSProperties;
12
+ } & React.RefAttributes<HTMLUListElement>>;
13
+ type EntityListItemStatus = PickUnion<EntityStatus, 'archived' | 'changed' | 'draft' | 'published'>;
14
+ export interface EntityListItemProps extends CommonProps {
15
+ /**
16
+ * The title of the entity
17
+ */
18
+ title: string;
19
+ /**
20
+ * The description of the entity
21
+ */
22
+ description?: string;
23
+ /**
24
+ * The content type of the entity
25
+ */
26
+ contentType?: string;
27
+ /**
28
+ * The publish status of the entry
29
+ */
30
+ status?: EntityListItemStatus;
31
+ /**
32
+ * A boolean used to render the Thumbnail or not
33
+ */
34
+ withThumbnail?: boolean;
35
+ /**
36
+ * The URL of the entity's preview thumbnail. Use 46px x 46px images for best results
37
+ */
38
+ thumbnailUrl?: string;
39
+ /**
40
+ * The alt text for the thumbnail
41
+ */
42
+ thumbnailAltText?: string;
43
+ /**
44
+ * Menu elements rendered as actions in Menu
45
+ */
46
+ actions?: React.ReactNodeArray;
47
+ /**
48
+ * Renders a drag handle for the component for use in drag and drop contexts
49
+ */
50
+ withDragHandle?: boolean;
51
+ /**
52
+ * Applies styling for when the component is actively being dragged by the user
53
+ */
54
+ isDragActive?: boolean;
55
+ /**
56
+ * Prop to pass a custom CardDragHandle component to for use in drag and drop contexts
57
+ */
58
+ cardDragHandleComponent?: React.ReactNode;
59
+ /**
60
+ * Props to pass down to the default CardDragHandle component (does not work with cardDragHandleComponent prop)
61
+ */
62
+ cardDragHandleProps?: Partial<DragHandleProps>;
63
+ /**
64
+ * An entity can either be an Entry, an Asset or a Release. This prop will apply styling based on if the entity is an asset, a release or an entry
65
+ *
66
+ * Note: 'entry' and 'asset' are @deprecated but supported in v1.x for backwards compatibility
67
+ */
68
+ entityType?: 'Entry' | 'Asset' | 'entry' | 'asset' | 'Release';
69
+ /**
70
+ * Loading state for the component - when true will display loading feedback to the user
71
+ */
72
+ isLoading?: boolean;
73
+ /**
74
+ * The action to be performed on click of the EntryCard
75
+ */
76
+ onClick?: MouseEventHandler;
77
+ /**
78
+ * The href for the component. Will render the card as an `a` element for native browser link handling
79
+ */
80
+ href?: string;
81
+ /**
82
+ * A boolean used to disable the CardActions
83
+ */
84
+ isActionsDisabled?: boolean;
85
+ }
86
+ export function EntityListItem({ className, testId, title, description, contentType, entityType, withThumbnail, thumbnailUrl, thumbnailAltText, status, actions, withDragHandle, isDragActive, isLoading, onClick, href, cardDragHandleProps, cardDragHandleComponent, isActionsDisabled, ...otherProps }: EntityListItemProps): React.ReactElement;
87
+ type CompoundEntityList = typeof _EntityList1 & {
88
+ Item: typeof EntityListItem;
89
+ };
90
+ export const EntityList: CompoundEntityList;
91
+
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;ACMA,gCAAiC,SAAQ,WAAW;IAClD,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;CAC5B;AAoBD,QAAO,MAAM;eArBA,MAAM,SAAS;;;;0CAqB2B,CAAC;AEIxD,4BAA4B,UAC1B,YAAY,EACZ,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAC/C,CAAC;AAQF,oCAAqC,SAAQ,WAAW;IACtD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,cAAc,CAAC;IAC/B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,SAAS,CAAC;IAC1C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/D;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,+BAA+B,EAC7B,SAAS,EACT,MAAiC,EACjC,KAAK,EACL,WAAW,EACX,WAAW,EACX,UAAoB,EACpB,aAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,cAAc,EACd,YAAY,EACZ,SAAS,EACT,OAAO,EACP,IAAI,EACJ,mBAAmB,EACnB,uBAAuB,EACvB,iBAAyB,EACzB,GAAG,UAAU,EACd,EAAE,mBAAmB,GAAG,MAAM,YAAY,CAuI1C;AC7QD,0BAA0B,mBAAyB,GAAG;IACpD,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC;AAEF,OAAO,MAAM,8BAAqD,CAAC","sources":["packages/components/entity-list/src/src/EntityList.styles.ts","packages/components/entity-list/src/src/EntityList.tsx","packages/components/entity-list/src/src/EntityListItem/EntityListItem.styles.ts","packages/components/entity-list/src/src/EntityListItem/EntityListItem.tsx","packages/components/entity-list/src/src/CompoundEntityList.tsx","packages/components/entity-list/src/src/index.ts","packages/components/entity-list/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,"export { EntityList } from './CompoundEntityList';\nexport type { EntityListProps } from './EntityList';\nexport { EntityListItem } from './EntityListItem/EntityListItem';\nexport type { EntityListItemProps } from './EntityListItem/EntityListItem';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@contentful/f36-entity-list",
3
+ "version": "4.0.0",
4
+ "description": "Forma 36: EntityList component",
5
+ "scripts": {
6
+ "build": "parcel build"
7
+ },
8
+ "dependencies": {
9
+ "@babel/runtime": "^7.6.2",
10
+ "@contentful/f36-badge": "^4.0.0",
11
+ "@contentful/f36-button": "^4.0.0",
12
+ "@contentful/f36-core": "^4.0.0",
13
+ "@contentful/f36-drag-handle": "^4.0.0",
14
+ "@contentful/f36-icon": "^4.0.0",
15
+ "@contentful/f36-icons": "^4.0.0",
16
+ "@contentful/f36-menu": "^4.0.0",
17
+ "@contentful/f36-skeleton": "^4.0.0",
18
+ "@contentful/f36-tokens": "^4.0.0",
19
+ "@contentful/f36-typography": "^4.0.0",
20
+ "emotion": "^10.0.17"
21
+ },
22
+ "peerDependencies": {
23
+ "react": ">=16.8"
24
+ },
25
+ "license": "MIT",
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "main": "dist/main.js",
30
+ "module": "dist/module.js",
31
+ "types": "dist/types.d.ts",
32
+ "source": "src/index.ts",
33
+ "sideEffects": false,
34
+ "browserslist": "extends @contentful/browserslist-config",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/contentful/forma-36"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "gitHead": "01d931c77410619d05cd00dbb3b5acc5d8ae2cdf"
43
+ }