@tamagui/list-item 2.7.7 → 3.0.0-beta.643.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ListItem.cjs +151 -222
- package/dist/cjs/ListItem.native.cjs +192 -0
- package/dist/cjs/ListItem.native.js +156 -223
- package/dist/cjs/ListItem.native.js.map +1 -1
- package/dist/cjs/index.cjs +10 -11
- package/dist/cjs/index.native.cjs +21 -0
- package/dist/cjs/index.native.js +10 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/ListItem.mjs +141 -210
- package/dist/esm/ListItem.mjs.map +1 -1
- package/dist/esm/ListItem.native.js +147 -213
- package/dist/esm/ListItem.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/jsx/ListItem.mjs +141 -210
- package/dist/jsx/ListItem.mjs.map +1 -1
- package/dist/jsx/ListItem.native.cjs +192 -0
- package/dist/jsx/ListItem.native.js +156 -223
- package/dist/jsx/ListItem.native.js.map +1 -1
- package/dist/jsx/index.js +1 -2
- package/dist/jsx/index.mjs +1 -2
- package/dist/jsx/index.native.cjs +21 -0
- package/dist/jsx/index.native.js +10 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +11 -10
- package/src/ListItem.tsx +159 -193
- package/types/ListItem.d.ts +121 -51
- package/types/ListItem.d.ts.map +1 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
package/dist/jsx/ListItem.mjs
CHANGED
|
@@ -1,231 +1,162 @@
|
|
|
1
|
-
import { getFontSize } from "@tamagui/font-size";
|
|
2
1
|
import { getFontSized } from "@tamagui/get-font-sized";
|
|
3
|
-
import {
|
|
2
|
+
import { oneSizeTokenSmaller } from "@tamagui/get-token";
|
|
4
3
|
import { withStaticProperties } from "@tamagui/helpers";
|
|
5
|
-
import {
|
|
4
|
+
import { getThemedIconSize, useGetThemedIcon } from "@tamagui/helpers-tamagui";
|
|
6
5
|
import { YStack } from "@tamagui/stacks";
|
|
6
|
+
import { resolveSizeToken } from "@tamagui/size";
|
|
7
7
|
import { SizableText, wrapChildrenInText } from "@tamagui/text";
|
|
8
|
-
import { createStyledContext, styled,
|
|
8
|
+
import { View, createStyledContext, createStyledHOC, getVariableValue, styled, useProps } from "@tamagui/web";
|
|
9
9
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
|
|
10
11
|
const NAME = "ListItem";
|
|
11
12
|
const context = createStyledContext({
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
size: void 0,
|
|
14
|
+
variant: void 0,
|
|
15
|
+
color: void 0
|
|
15
16
|
});
|
|
17
|
+
const listItemSizeVariant = (val, { tokens }) => {
|
|
18
|
+
const sizeToken = resolveSizeToken(val, "size");
|
|
19
|
+
const spaceToken = resolveSizeToken(val, "space");
|
|
20
|
+
const size = typeof sizeToken === "number" ? sizeToken : tokens.size[sizeToken];
|
|
21
|
+
const sizeVal = getVariableValue(size);
|
|
22
|
+
return {
|
|
23
|
+
minHeight: size,
|
|
24
|
+
paddingHorizontal: tokens.space[spaceToken],
|
|
25
|
+
paddingVertical: Math.max(0, Math.round(sizeVal * .36 - 9)),
|
|
26
|
+
gap: getThemedIconSize(sizeToken, .4)
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
const listItemSubtitleSizeVariant = (val, extras) => {
|
|
30
|
+
const fontSizeToken = resolveSizeToken(val, "fontSize");
|
|
31
|
+
const oneSmaller = oneSizeTokenSmaller(fontSizeToken);
|
|
32
|
+
return getFontSized(oneSmaller, extras);
|
|
33
|
+
};
|
|
16
34
|
const ListItemFrame = styled(View, {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
backgroundColor: "$backgroundHover",
|
|
37
|
-
borderColor: "$borderColorHover"
|
|
38
|
-
},
|
|
39
|
-
pressStyle: {
|
|
40
|
-
backgroundColor: "$backgroundPress",
|
|
41
|
-
borderColor: "$borderColorPress"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
variant: {
|
|
46
|
-
outlined: process.env.TAMAGUI_HEADLESS === "1" ? {} : {
|
|
47
|
-
backgroundColor: "transparent",
|
|
48
|
-
borderWidth: 1,
|
|
49
|
-
borderColor: "$borderColor",
|
|
50
|
-
hoverStyle: {
|
|
51
|
-
backgroundColor: "transparent",
|
|
52
|
-
borderColor: "$borderColorHover"
|
|
53
|
-
},
|
|
54
|
-
pressStyle: {
|
|
55
|
-
backgroundColor: "transparent",
|
|
56
|
-
borderColor: "$borderColorPress"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
size: {
|
|
61
|
-
"...size": (val, {
|
|
62
|
-
tokens
|
|
63
|
-
}) => {
|
|
64
|
-
return {
|
|
65
|
-
minHeight: tokens.size[val],
|
|
66
|
-
paddingHorizontal: tokens.space[val],
|
|
67
|
-
paddingVertical: getSpace(tokens.space[val], {
|
|
68
|
-
shift: -4
|
|
69
|
-
})
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
active: {
|
|
74
|
-
true: {
|
|
75
|
-
hoverStyle: {
|
|
76
|
-
backgroundColor: "$background"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
disabled: {
|
|
81
|
-
true: {
|
|
82
|
-
opacity: 0.5,
|
|
83
|
-
pointerEvents: "none"
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
defaultVariants: {
|
|
88
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
89
|
-
}
|
|
35
|
+
context,
|
|
36
|
+
displayName: NAME,
|
|
37
|
+
render: "li",
|
|
38
|
+
role: "listitem",
|
|
39
|
+
size: true,
|
|
40
|
+
alignItems: "center",
|
|
41
|
+
justifyContent: "space-between",
|
|
42
|
+
flexWrap: "nowrap",
|
|
43
|
+
width: "100%",
|
|
44
|
+
maxWidth: "100%",
|
|
45
|
+
overflow: "hidden",
|
|
46
|
+
flexDirection: "row",
|
|
47
|
+
variants: {
|
|
48
|
+
size: {
|
|
49
|
+
true: listItemSizeVariant,
|
|
50
|
+
Size: listItemSizeVariant
|
|
51
|
+
},
|
|
52
|
+
disabled: { true: { pointerEvents: "none" } }
|
|
53
|
+
}
|
|
90
54
|
});
|
|
91
55
|
const ListItemText = styled(SizableText, {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
flexGrow: 1,
|
|
100
|
-
flexShrink: 1,
|
|
101
|
-
ellipsis: true,
|
|
102
|
-
cursor: "inherit"
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
defaultVariants: {
|
|
107
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
108
|
-
}
|
|
56
|
+
context,
|
|
57
|
+
displayName: "ListItemText",
|
|
58
|
+
size: true,
|
|
59
|
+
flexGrow: 1,
|
|
60
|
+
flexShrink: 1,
|
|
61
|
+
ellipsis: true,
|
|
62
|
+
cursor: "inherit"
|
|
109
63
|
});
|
|
110
64
|
const ListItemSubtitle = styled(ListItemText, {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
size: {
|
|
122
|
-
"...size": (val, extras) => {
|
|
123
|
-
const oneSmaller = getSize(val, {
|
|
124
|
-
shift: -1,
|
|
125
|
-
excludeHalfSteps: true
|
|
126
|
-
});
|
|
127
|
-
const fontStyle = getFontSized(oneSmaller.key, extras);
|
|
128
|
-
return fontStyle;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
defaultVariants: {
|
|
133
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
134
|
-
}
|
|
65
|
+
displayName: "ListItemSubtitle",
|
|
66
|
+
context,
|
|
67
|
+
opacity: .6,
|
|
68
|
+
maxWidth: "100%",
|
|
69
|
+
variants: { size: {
|
|
70
|
+
true: listItemSubtitleSizeVariant,
|
|
71
|
+
Size: listItemSubtitleSizeVariant
|
|
72
|
+
} }
|
|
135
73
|
});
|
|
136
74
|
const ListItemTitle = styled(ListItemText, {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
variants: {
|
|
140
|
-
unstyled: {
|
|
141
|
-
false: {}
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
defaultVariants: {
|
|
145
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
146
|
-
}
|
|
75
|
+
displayName: "ListItemTitle",
|
|
76
|
+
context
|
|
147
77
|
});
|
|
148
|
-
const ListItemIcon = props => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
color: iconColor
|
|
164
|
-
});
|
|
78
|
+
const ListItemIcon = (props) => {
|
|
79
|
+
const { children, size, scaleIcon = 1 } = props;
|
|
80
|
+
const styledContext = context.useStyledContext();
|
|
81
|
+
if (!styledContext) {
|
|
82
|
+
throw new Error("ListItem.Icon must be used within a ListItem");
|
|
83
|
+
}
|
|
84
|
+
const sizeToken = size ?? styledContext.size ?? true;
|
|
85
|
+
const contextColor = styledContext.color;
|
|
86
|
+
const iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
|
|
87
|
+
const iconSize = getThemedIconSize(sizeToken, scaleIcon);
|
|
88
|
+
const getThemedIcon = useGetThemedIcon({
|
|
89
|
+
size: iconSize,
|
|
90
|
+
color: iconColorProp
|
|
91
|
+
});
|
|
92
|
+
return getThemedIcon(children);
|
|
165
93
|
};
|
|
166
|
-
const ListItemComponent = ListItemFrame
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
94
|
+
const ListItemComponent = createStyledHOC(ListItemFrame, function ListItem(propsIn, ref) {
|
|
95
|
+
const processedProps = useProps(propsIn, {
|
|
96
|
+
noNormalize: true,
|
|
97
|
+
noExpand: true
|
|
98
|
+
});
|
|
99
|
+
const { children, icon, iconAfter, scaleIcon = 1, subTitle, title, iconSize, color, ...rest } = processedProps;
|
|
100
|
+
const styledContext = context.useStyledContext();
|
|
101
|
+
const size = rest.size ?? propsIn.size ?? styledContext?.size ?? true;
|
|
102
|
+
const contextColor = color ?? propsIn.color ?? styledContext?.color;
|
|
103
|
+
const iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
|
|
104
|
+
const iconSizeNumber = getThemedIconSize(iconSize ?? size, scaleIcon);
|
|
105
|
+
const getThemedIcon = useGetThemedIcon({
|
|
106
|
+
size: iconSizeNumber,
|
|
107
|
+
color: iconColorProp
|
|
108
|
+
});
|
|
109
|
+
const themedIcon = icon ? getThemedIcon(icon) : null;
|
|
110
|
+
const themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;
|
|
111
|
+
const wrappedChildren = wrapChildrenInText(ListItemText, { children }, { size });
|
|
112
|
+
const listItemContext = {
|
|
113
|
+
...styledContext,
|
|
114
|
+
color: contextColor,
|
|
115
|
+
size,
|
|
116
|
+
variant: rest.variant ?? propsIn.variant ?? styledContext?.variant
|
|
117
|
+
};
|
|
118
|
+
const frameProps = {
|
|
119
|
+
size,
|
|
120
|
+
variant: listItemContext.variant,
|
|
121
|
+
...rest
|
|
122
|
+
};
|
|
123
|
+
return /* @__PURE__ */ jsx(context.Provider, {
|
|
124
|
+
...listItemContext,
|
|
125
|
+
children: /* @__PURE__ */ jsx(ListItemFrame, {
|
|
126
|
+
ref,
|
|
127
|
+
...frameProps,
|
|
128
|
+
children: /* @__PURE__ */ jsxs(context.Provider, {
|
|
129
|
+
...listItemContext,
|
|
130
|
+
children: [
|
|
131
|
+
themedIcon,
|
|
132
|
+
title || subTitle ? /* @__PURE__ */ jsxs(YStack, {
|
|
133
|
+
flex: 1,
|
|
134
|
+
children: [
|
|
135
|
+
title ? typeof title === "string" ? /* @__PURE__ */ jsx(ListItemTitle, {
|
|
136
|
+
size,
|
|
137
|
+
children: title
|
|
138
|
+
}) : title : null,
|
|
139
|
+
subTitle ? /* @__PURE__ */ jsx(Fragment, { children: typeof subTitle === "string" ? /* @__PURE__ */ jsx(ListItemSubtitle, {
|
|
140
|
+
size,
|
|
141
|
+
children: subTitle
|
|
142
|
+
}) : subTitle }) : null,
|
|
143
|
+
wrappedChildren
|
|
144
|
+
]
|
|
145
|
+
}) : wrappedChildren,
|
|
146
|
+
themedIconAfter
|
|
147
|
+
]
|
|
148
|
+
})
|
|
149
|
+
})
|
|
150
|
+
});
|
|
221
151
|
});
|
|
222
152
|
const ListItem2 = withStaticProperties(ListItemComponent, {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
153
|
+
Apply: context.Provider,
|
|
154
|
+
Frame: ListItemFrame,
|
|
155
|
+
Text: ListItemText,
|
|
156
|
+
Subtitle: ListItemSubtitle,
|
|
157
|
+
Icon: ListItemIcon,
|
|
158
|
+
Title: ListItemTitle
|
|
229
159
|
});
|
|
230
|
-
|
|
160
|
+
|
|
161
|
+
export { ListItem2 as ListItem, listItemSizeVariant };
|
|
231
162
|
//# sourceMappingURL=ListItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ListItem.js","names":[],"sources":["jsx/ListItem.js"],"sourcesContent":["import { getFontSized } from \"@tamagui/get-font-sized\";\nimport { oneSizeTokenSmaller } from \"@tamagui/get-token\";\nimport { withStaticProperties } from \"@tamagui/helpers\";\nimport { getThemedIconSize, useGetThemedIcon } from \"@tamagui/helpers-tamagui\";\nimport { YStack } from \"@tamagui/stacks\";\nimport { resolveSizeToken } from \"@tamagui/size\";\nimport { SizableText, wrapChildrenInText } from \"@tamagui/text\";\nimport {\n createStyledContext,\n createStyledHOC,\n getVariableValue,\n styled,\n useProps,\n View\n} from \"@tamagui/web\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nconst NAME = \"ListItem\";\nconst context = createStyledContext({\n size: void 0,\n variant: void 0,\n color: void 0\n});\nconst listItemSizeVariant = (val, { tokens }) => {\n const sizeToken = resolveSizeToken(val, \"size\");\n const spaceToken = resolveSizeToken(val, \"space\");\n const size = typeof sizeToken === \"number\" ? sizeToken : tokens.size[sizeToken];\n const sizeVal = getVariableValue(size);\n return {\n minHeight: size,\n paddingHorizontal: tokens.space[spaceToken],\n paddingVertical: Math.max(0, Math.round(sizeVal * 0.36 - 9)),\n gap: getThemedIconSize(sizeToken, 0.4)\n };\n};\nconst listItemSubtitleSizeVariant = (val, extras) => {\n const fontSizeToken = resolveSizeToken(val, \"fontSize\");\n const oneSmaller = oneSizeTokenSmaller(fontSizeToken);\n return getFontSized(oneSmaller, extras);\n};\nconst ListItemFrame = styled(View, {\n context,\n displayName: NAME,\n render: \"li\",\n role: \"listitem\",\n size: true,\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"nowrap\",\n width: \"100%\",\n maxWidth: \"100%\",\n overflow: \"hidden\",\n flexDirection: \"row\",\n variants: {\n size: {\n true: listItemSizeVariant,\n Size: listItemSizeVariant\n },\n disabled: {\n true: {\n pointerEvents: \"none\"\n }\n }\n }\n});\nconst ListItemText = styled(SizableText, {\n context,\n displayName: \"ListItemText\",\n size: true,\n flexGrow: 1,\n flexShrink: 1,\n ellipsis: true,\n cursor: \"inherit\"\n});\nconst ListItemSubtitle = styled(ListItemText, {\n displayName: \"ListItemSubtitle\",\n context,\n opacity: 0.6,\n maxWidth: \"100%\",\n variants: {\n size: {\n true: listItemSubtitleSizeVariant,\n Size: listItemSubtitleSizeVariant\n }\n }\n});\nconst ListItemTitle = styled(ListItemText, {\n displayName: \"ListItemTitle\",\n context\n});\nconst ListItemIcon = (props) => {\n const { children, size, scaleIcon = 1 } = props;\n const styledContext = context.useStyledContext();\n if (!styledContext) {\n throw new Error(\"ListItem.Icon must be used within a ListItem\");\n }\n const sizeToken = size ?? styledContext.size ?? true;\n const contextColor = styledContext.color;\n const iconColorProp = contextColor === \"unset\" || typeof contextColor === \"number\" ? void 0 : contextColor;\n const iconSize = getThemedIconSize(sizeToken, scaleIcon);\n const getThemedIcon = useGetThemedIcon({\n size: iconSize,\n color: iconColorProp\n });\n return getThemedIcon(children);\n};\nconst ListItemComponent = createStyledHOC(\n ListItemFrame,\n function ListItem(propsIn, ref) {\n const processedProps = useProps(propsIn, {\n noNormalize: true,\n noExpand: true\n });\n const {\n children,\n icon,\n iconAfter,\n scaleIcon = 1,\n subTitle,\n title,\n iconSize,\n color,\n ...rest\n } = processedProps;\n const styledContext = context.useStyledContext();\n const size = rest.size ?? propsIn.size ?? styledContext?.size ?? true;\n const contextColor = color ?? propsIn.color ?? styledContext?.color;\n const iconColorProp = contextColor === \"unset\" || typeof contextColor === \"number\" ? void 0 : contextColor;\n const iconSizeNumber = getThemedIconSize(iconSize ?? size, scaleIcon);\n const getThemedIcon = useGetThemedIcon({\n size: iconSizeNumber,\n color: iconColorProp\n });\n const themedIcon = icon ? getThemedIcon(icon) : null;\n const themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;\n const wrappedChildren = wrapChildrenInText(ListItemText, { children }, { size });\n const listItemContext = {\n ...styledContext,\n color: contextColor,\n size,\n variant: rest.variant ?? propsIn.variant ?? styledContext?.variant\n };\n const frameProps = {\n size,\n variant: listItemContext.variant,\n ...rest\n };\n return /* @__PURE__ */ jsx(context.Provider, { ...listItemContext, children: /* @__PURE__ */ jsx(ListItemFrame, { ref, ...frameProps, children: /* @__PURE__ */ jsxs(context.Provider, { ...listItemContext, children: [\n themedIcon,\n title || subTitle ? /* @__PURE__ */ jsxs(YStack, { flex: 1, children: [\n title ? typeof title === \"string\" ? /* @__PURE__ */ jsx(ListItemTitle, { size, children: title }) : title : null,\n subTitle ? /* @__PURE__ */ jsx(Fragment, { children: typeof subTitle === \"string\" ? /* @__PURE__ */ jsx(ListItemSubtitle, { size, children: subTitle }) : subTitle }) : null,\n wrappedChildren\n ] }) : wrappedChildren,\n themedIconAfter\n ] }) }) });\n }\n);\nconst ListItem2 = withStaticProperties(ListItemComponent, {\n Apply: context.Provider,\n Frame: ListItemFrame,\n Text: ListItemText,\n Subtitle: ListItemSubtitle,\n Icon: ListItemIcon,\n Title: ListItemTitle\n});\nexport {\n ListItem2 as ListItem,\n listItemSizeVariant\n};\n//# sourceMappingURL=ListItem.js.map\n"],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var ListItem_exports = {};
|
|
25
|
+
__export(ListItem_exports, {
|
|
26
|
+
ListItem: () => ListItem2,
|
|
27
|
+
listItemSizeVariant: () => listItemSizeVariant
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(ListItem_exports);
|
|
30
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
+
var import_get_font_sized = require("@tamagui/get-font-sized");
|
|
32
|
+
var import_get_token = require("@tamagui/get-token");
|
|
33
|
+
var import_helpers = require("@tamagui/helpers");
|
|
34
|
+
var import_helpers_tamagui = require("@tamagui/helpers-tamagui");
|
|
35
|
+
var import_stacks = require("@tamagui/stacks");
|
|
36
|
+
var import_size = require("@tamagui/size");
|
|
37
|
+
var import_text = require("@tamagui/text");
|
|
38
|
+
var import_web = require("@tamagui/web");
|
|
39
|
+
var NAME = "ListItem";
|
|
40
|
+
var context = (0, import_web.createStyledContext)({
|
|
41
|
+
size: void 0,
|
|
42
|
+
variant: void 0,
|
|
43
|
+
color: void 0
|
|
44
|
+
});
|
|
45
|
+
var listItemSizeVariant = function(val, param) {
|
|
46
|
+
var { tokens } = param;
|
|
47
|
+
var sizeToken = (0, import_size.resolveSizeToken)(val, "size");
|
|
48
|
+
var spaceToken = (0, import_size.resolveSizeToken)(val, "space");
|
|
49
|
+
var size = typeof sizeToken === "number" ? sizeToken : tokens.size[sizeToken];
|
|
50
|
+
var sizeVal = (0, import_web.getVariableValue)(size);
|
|
51
|
+
return {
|
|
52
|
+
minHeight: size,
|
|
53
|
+
paddingHorizontal: tokens.space[spaceToken],
|
|
54
|
+
paddingVertical: Math.max(0, Math.round(sizeVal * .36 - 9)),
|
|
55
|
+
gap: (0, import_helpers_tamagui.getThemedIconSize)(sizeToken, .4)
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
var listItemSubtitleSizeVariant = function(val, extras) {
|
|
59
|
+
var fontSizeToken = (0, import_size.resolveSizeToken)(val, "fontSize");
|
|
60
|
+
var oneSmaller = (0, import_get_token.oneSizeTokenSmaller)(fontSizeToken);
|
|
61
|
+
return (0, import_get_font_sized.getFontSized)(oneSmaller, extras);
|
|
62
|
+
};
|
|
63
|
+
var ListItemFrame = (0, import_web.styled)(import_web.View, {
|
|
64
|
+
context,
|
|
65
|
+
displayName: NAME,
|
|
66
|
+
render: "li",
|
|
67
|
+
role: "listitem",
|
|
68
|
+
size: true,
|
|
69
|
+
alignItems: "center",
|
|
70
|
+
justifyContent: "space-between",
|
|
71
|
+
flexWrap: "nowrap",
|
|
72
|
+
width: "100%",
|
|
73
|
+
maxWidth: "100%",
|
|
74
|
+
overflow: "hidden",
|
|
75
|
+
flexDirection: "row",
|
|
76
|
+
variants: {
|
|
77
|
+
size: {
|
|
78
|
+
true: listItemSizeVariant,
|
|
79
|
+
Size: listItemSizeVariant
|
|
80
|
+
},
|
|
81
|
+
disabled: { true: { pointerEvents: "none" } }
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
var ListItemText = (0, import_web.styled)(import_text.SizableText, {
|
|
85
|
+
context,
|
|
86
|
+
displayName: "ListItemText",
|
|
87
|
+
size: true,
|
|
88
|
+
flexGrow: 1,
|
|
89
|
+
flexShrink: 1,
|
|
90
|
+
ellipsis: true,
|
|
91
|
+
cursor: "inherit"
|
|
92
|
+
});
|
|
93
|
+
var ListItemSubtitle = (0, import_web.styled)(ListItemText, {
|
|
94
|
+
displayName: "ListItemSubtitle",
|
|
95
|
+
context,
|
|
96
|
+
opacity: .6,
|
|
97
|
+
maxWidth: "100%",
|
|
98
|
+
variants: { size: {
|
|
99
|
+
true: listItemSubtitleSizeVariant,
|
|
100
|
+
Size: listItemSubtitleSizeVariant
|
|
101
|
+
} }
|
|
102
|
+
});
|
|
103
|
+
var ListItemTitle = (0, import_web.styled)(ListItemText, {
|
|
104
|
+
displayName: "ListItemTitle",
|
|
105
|
+
context
|
|
106
|
+
});
|
|
107
|
+
var ListItemIcon = function(props) {
|
|
108
|
+
var { children, size, scaleIcon = 1 } = props;
|
|
109
|
+
var styledContext = context.useStyledContext();
|
|
110
|
+
if (!styledContext) {
|
|
111
|
+
throw new Error("ListItem.Icon must be used within a ListItem");
|
|
112
|
+
}
|
|
113
|
+
var _ref;
|
|
114
|
+
var sizeToken = (_ref = size !== null && size !== void 0 ? size : styledContext.size) !== null && _ref !== void 0 ? _ref : true;
|
|
115
|
+
var contextColor = styledContext.color;
|
|
116
|
+
var iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
|
|
117
|
+
var iconSize = (0, import_helpers_tamagui.getThemedIconSize)(sizeToken, scaleIcon);
|
|
118
|
+
var getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({
|
|
119
|
+
size: iconSize,
|
|
120
|
+
color: iconColorProp
|
|
121
|
+
});
|
|
122
|
+
return getThemedIcon(children);
|
|
123
|
+
};
|
|
124
|
+
var ListItemComponent = (0, import_web.createStyledHOC)(ListItemFrame, function ListItem(propsIn, ref) {
|
|
125
|
+
var processedProps = (0, import_web.useProps)(propsIn, {
|
|
126
|
+
noNormalize: true,
|
|
127
|
+
noExpand: true
|
|
128
|
+
});
|
|
129
|
+
var { children, icon, iconAfter, scaleIcon = 1, subTitle, title, iconSize, color, ...rest } = processedProps;
|
|
130
|
+
var styledContext = context.useStyledContext();
|
|
131
|
+
var _rest_size, _ref, _ref1;
|
|
132
|
+
var size = (_ref1 = (_ref = (_rest_size = rest.size) !== null && _rest_size !== void 0 ? _rest_size : propsIn.size) !== null && _ref !== void 0 ? _ref : styledContext === null || styledContext === void 0 ? void 0 : styledContext.size) !== null && _ref1 !== void 0 ? _ref1 : true;
|
|
133
|
+
var _ref2;
|
|
134
|
+
var contextColor = (_ref2 = color !== null && color !== void 0 ? color : propsIn.color) !== null && _ref2 !== void 0 ? _ref2 : styledContext === null || styledContext === void 0 ? void 0 : styledContext.color;
|
|
135
|
+
var iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
|
|
136
|
+
var iconSizeNumber = (0, import_helpers_tamagui.getThemedIconSize)(iconSize !== null && iconSize !== void 0 ? iconSize : size, scaleIcon);
|
|
137
|
+
var getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({
|
|
138
|
+
size: iconSizeNumber,
|
|
139
|
+
color: iconColorProp
|
|
140
|
+
});
|
|
141
|
+
var themedIcon = icon ? getThemedIcon(icon) : null;
|
|
142
|
+
var themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;
|
|
143
|
+
var wrappedChildren = (0, import_text.wrapChildrenInText)(ListItemText, { children }, { size });
|
|
144
|
+
var _rest_variant, _ref3;
|
|
145
|
+
var listItemContext = {
|
|
146
|
+
...styledContext,
|
|
147
|
+
color: contextColor,
|
|
148
|
+
size,
|
|
149
|
+
variant: (_ref3 = (_rest_variant = rest.variant) !== null && _rest_variant !== void 0 ? _rest_variant : propsIn.variant) !== null && _ref3 !== void 0 ? _ref3 : styledContext === null || styledContext === void 0 ? void 0 : styledContext.variant
|
|
150
|
+
};
|
|
151
|
+
var frameProps = {
|
|
152
|
+
size,
|
|
153
|
+
variant: listItemContext.variant,
|
|
154
|
+
...rest
|
|
155
|
+
};
|
|
156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(context.Provider, {
|
|
157
|
+
...listItemContext,
|
|
158
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemFrame, {
|
|
159
|
+
ref,
|
|
160
|
+
...frameProps,
|
|
161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(context.Provider, {
|
|
162
|
+
...listItemContext,
|
|
163
|
+
children: [
|
|
164
|
+
themedIcon,
|
|
165
|
+
title || subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stacks.YStack, {
|
|
166
|
+
flex: 1,
|
|
167
|
+
children: [
|
|
168
|
+
title ? typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemTitle, {
|
|
169
|
+
size,
|
|
170
|
+
children: title
|
|
171
|
+
}) : title : null,
|
|
172
|
+
subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: typeof subTitle === "string" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemSubtitle, {
|
|
173
|
+
size,
|
|
174
|
+
children: subTitle
|
|
175
|
+
}) : subTitle }) : null,
|
|
176
|
+
wrappedChildren
|
|
177
|
+
]
|
|
178
|
+
}) : wrappedChildren,
|
|
179
|
+
themedIconAfter
|
|
180
|
+
]
|
|
181
|
+
})
|
|
182
|
+
})
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
var ListItem2 = (0, import_helpers.withStaticProperties)(ListItemComponent, {
|
|
186
|
+
Apply: context.Provider,
|
|
187
|
+
Frame: ListItemFrame,
|
|
188
|
+
Text: ListItemText,
|
|
189
|
+
Subtitle: ListItemSubtitle,
|
|
190
|
+
Icon: ListItemIcon,
|
|
191
|
+
Title: ListItemTitle
|
|
192
|
+
});
|