@unif/react-native-design 0.36.0 → 0.38.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/lib/module/components/ui/ActionMenuContent/ActionMenuContent.js +2 -1
- package/lib/module/components/ui/ActionMenuContent/ActionMenuContent.js.map +1 -1
- package/lib/module/components/ui/ImagePreview/ImagePreview.js +81 -72
- package/lib/module/components/ui/ImagePreview/ImagePreview.js.map +1 -1
- package/lib/module/components/ui/ImagePreview/constants.js +2 -0
- package/lib/module/components/ui/ImagePreview/constants.js.map +1 -1
- package/lib/module/components/ui/ImagePreview/styles.js +5 -1
- package/lib/module/components/ui/ImagePreview/styles.js.map +1 -1
- package/lib/module/components/ui/Sheet/Sheet.js +2 -1
- package/lib/module/components/ui/Sheet/Sheet.js.map +1 -1
- package/lib/module/components/ui/TextEntryContent/TextEntryContent.js +20 -8
- package/lib/module/components/ui/TextEntryContent/TextEntryContent.js.map +1 -1
- package/lib/module/components/ui/TextEntryContent/styles.js +14 -1
- package/lib/module/components/ui/TextEntryContent/styles.js.map +1 -1
- package/lib/typescript/src/components/ui/ActionMenuContent/ActionMenuContent.d.ts +1 -1
- package/lib/typescript/src/components/ui/ActionMenuContent/ActionMenuContent.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/ActionMenuContent/types.d.ts +1 -0
- package/lib/typescript/src/components/ui/ActionMenuContent/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/ImagePreview/ImagePreview.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/ImagePreview/constants.d.ts +1 -0
- package/lib/typescript/src/components/ui/ImagePreview/constants.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/ImagePreview/styles.d.ts +4 -1
- package/lib/typescript/src/components/ui/ImagePreview/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Sheet/Sheet.d.ts +1 -1
- package/lib/typescript/src/components/ui/Sheet/Sheet.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Sheet/types.d.ts +1 -0
- package/lib/typescript/src/components/ui/Sheet/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextEntryContent/TextEntryContent.d.ts +1 -1
- package/lib/typescript/src/components/ui/TextEntryContent/TextEntryContent.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextEntryContent/styles.d.ts +13 -0
- package/lib/typescript/src/components/ui/TextEntryContent/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextEntryContent/types.d.ts +4 -0
- package/lib/typescript/src/components/ui/TextEntryContent/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/ui/ActionMenuContent/ActionMenuContent.tsx +2 -0
- package/src/components/ui/ActionMenuContent/types.ts +1 -0
- package/src/components/ui/ImagePreview/ImagePreview.tsx +92 -76
- package/src/components/ui/ImagePreview/constants.ts +3 -0
- package/src/components/ui/ImagePreview/styles.ts +5 -1
- package/src/components/ui/Sheet/Sheet.tsx +4 -1
- package/src/components/ui/Sheet/types.ts +1 -0
- package/src/components/ui/TextEntryContent/TextEntryContent.tsx +34 -11
- package/src/components/ui/TextEntryContent/styles.ts +12 -1
- package/src/components/ui/TextEntryContent/types.ts +4 -0
|
@@ -14,6 +14,7 @@ export function ActionMenuContent({
|
|
|
14
14
|
title,
|
|
15
15
|
cancelLabel = '取消',
|
|
16
16
|
style,
|
|
17
|
+
contentStyle,
|
|
17
18
|
testID = 'action-menu'
|
|
18
19
|
}) {
|
|
19
20
|
const styles = useThemedStyles(makeStyles);
|
|
@@ -29,7 +30,7 @@ export function ActionMenuContent({
|
|
|
29
30
|
testID: `${testID}-card`,
|
|
30
31
|
style: [isSheet ? styles.sheetCard : styles.dialogCard, isSheet && {
|
|
31
32
|
paddingBottom: insets.bottom + space[5]
|
|
32
|
-
}],
|
|
33
|
+
}, contentStyle],
|
|
33
34
|
onPress: event => event.stopPropagation(),
|
|
34
35
|
children: [title ? /*#__PURE__*/_jsx(Text, {
|
|
35
36
|
testID: `${testID}-title`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","Pressable","Text","View","useSafeAreaInsets","space","useThemedStyles","Button","makeStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ActionMenuContent","actions","onClose","presentation","title","cancelLabel","style","testID","styles","insets","confirmationId","setConfirmationId","isSheet","confirming","find","action","id","confirmation","undefined","content","accessible","sheetCard","dialogCard","paddingBottom","bottom","onPress","event","stopPropagation","children","numberOfLines","ellipsizeMode","accessibilityLiveRegion","message","sheetActions","label","variant","sheetAction","confirmLabel","disabled","loading","map","tone","sheetRoot","dialogRoot"],"sourceRoot":"../../../../../src","sources":["components/ui/ActionMenuContent/ActionMenuContent.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,SAAS,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACpD,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,KAAK,EAAEC,eAAe,QAAQ,yBAAgB;AACvD,SAASC,MAAM,QAAQ,oBAAW;AAElC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAEtC,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,OAAO;EACPC,OAAO;EACPC,YAAY,GAAG,QAAQ;EACvBC,KAAK;EACLC,WAAW,GAAG,IAAI;EAClBC,KAAK;EACLC,MAAM,GAAG;AACa,CAAC,EAAqB;EAC5C,MAAMC,MAAM,
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Pressable","Text","View","useSafeAreaInsets","space","useThemedStyles","Button","makeStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ActionMenuContent","actions","onClose","presentation","title","cancelLabel","style","contentStyle","testID","styles","insets","confirmationId","setConfirmationId","isSheet","confirming","find","action","id","confirmation","undefined","content","accessible","sheetCard","dialogCard","paddingBottom","bottom","onPress","event","stopPropagation","children","numberOfLines","ellipsizeMode","accessibilityLiveRegion","message","sheetActions","label","variant","sheetAction","confirmLabel","disabled","loading","map","tone","sheetRoot","dialogRoot"],"sourceRoot":"../../../../../src","sources":["components/ui/ActionMenuContent/ActionMenuContent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ import { radius, useThemedStyles } from "../../../theme/index.js";
|
|
|
6
6
|
import { IconButton } from "../IconButton/index.js";
|
|
7
7
|
import { Thumbnail } from "../Thumbnail/index.js";
|
|
8
8
|
import { Carousel } from 'react-native-reanimated-carousel';
|
|
9
|
-
import { DELETE_LABEL, IMAGE_UNAVAILABLE } from "./constants.js";
|
|
9
|
+
import { DELETE_LABEL, IMAGE_COUNTER_HEIGHT, IMAGE_UNAVAILABLE } from "./constants.js";
|
|
10
10
|
import { makeStyles } from "./styles.js";
|
|
11
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
export const ImagePreview = /*#__PURE__*/forwardRef(function ImagePreviewInner({
|
|
@@ -106,86 +106,95 @@ export const ImagePreview = /*#__PURE__*/forwardRef(function ImagePreviewInner({
|
|
|
106
106
|
return /*#__PURE__*/_jsxs(View, {
|
|
107
107
|
style: [styles.container, style],
|
|
108
108
|
testID: testID,
|
|
109
|
-
children: [/*#__PURE__*/
|
|
110
|
-
ref: carouselRef,
|
|
111
|
-
data: data,
|
|
112
|
-
defaultIndex: selection.index,
|
|
113
|
-
loop: false,
|
|
114
|
-
itemSize: width,
|
|
109
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
115
110
|
style: {
|
|
116
111
|
width,
|
|
117
|
-
height
|
|
112
|
+
height: height + IMAGE_COUNTER_HEIGHT / 2
|
|
118
113
|
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
source: item.source,
|
|
162
|
-
size: {
|
|
114
|
+
children: [/*#__PURE__*/_jsx(Carousel, {
|
|
115
|
+
ref: carouselRef,
|
|
116
|
+
data: data,
|
|
117
|
+
defaultIndex: selection.index,
|
|
118
|
+
loop: false,
|
|
119
|
+
itemSize: width,
|
|
120
|
+
style: {
|
|
121
|
+
width,
|
|
122
|
+
height
|
|
123
|
+
},
|
|
124
|
+
keyExtractor: id => id,
|
|
125
|
+
testID: testID ? `${testID}-carousel` : undefined,
|
|
126
|
+
onScrollStart: () => {
|
|
127
|
+
if (mounted.current && selection.carouselRevision === committed.current.carouselRevision) {
|
|
128
|
+
moving.current = true;
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
onSnapToItem: index => {
|
|
132
|
+
const latest = committed.current;
|
|
133
|
+
if (!mounted.current || selection.carouselRevision !== latest.carouselRevision || items.length !== latest.items.length || items.some((item, itemIndex) => item.id !== latest.items[itemIndex]?.id)) return;
|
|
134
|
+
moving.current = false;
|
|
135
|
+
const id = items[index]?.id;
|
|
136
|
+
const nextIndex = latest.items.findIndex(item => item.id === id);
|
|
137
|
+
if (nextIndex >= 0 && nextIndex !== latest.index) {
|
|
138
|
+
const next = {
|
|
139
|
+
...latest,
|
|
140
|
+
index: nextIndex
|
|
141
|
+
};
|
|
142
|
+
// SDK 已完成落位;句柄同步可读,不等待 React 下一次提交。
|
|
143
|
+
committed.current = next;
|
|
144
|
+
setSelection(next);
|
|
145
|
+
notifiedId.current = id;
|
|
146
|
+
currentChange.current?.(next.items[nextIndex]);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
renderItem: ({
|
|
150
|
+
item: id,
|
|
151
|
+
index
|
|
152
|
+
}) => {
|
|
153
|
+
const item = items.find(candidate => candidate.id === id);
|
|
154
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
155
|
+
style: [styles.media, {
|
|
163
156
|
width,
|
|
164
|
-
height
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
resizeMode: "contain",
|
|
168
|
-
imageStyle: styles.image,
|
|
169
|
-
accessibilityLabel: item.label ?? `图片第 ${index + 1} 张`,
|
|
170
|
-
fallback: /*#__PURE__*/_jsx(View, {
|
|
157
|
+
height
|
|
158
|
+
}],
|
|
159
|
+
children: [item.source === undefined ? /*#__PURE__*/_jsx(View, {
|
|
171
160
|
style: styles.placeholder,
|
|
172
161
|
children: /*#__PURE__*/_jsx(Text, {
|
|
173
162
|
style: styles.placeholderText,
|
|
174
163
|
children: IMAGE_UNAVAILABLE
|
|
175
164
|
})
|
|
176
|
-
})
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
165
|
+
}) : /*#__PURE__*/_jsx(Thumbnail, {
|
|
166
|
+
source: item.source,
|
|
167
|
+
size: {
|
|
168
|
+
width,
|
|
169
|
+
height,
|
|
170
|
+
borderRadius: radius.xl
|
|
171
|
+
},
|
|
172
|
+
resizeMode: "contain",
|
|
173
|
+
imageStyle: styles.image,
|
|
174
|
+
accessibilityLabel: item.label ?? `图片第 ${index + 1} 张`,
|
|
175
|
+
fallback: /*#__PURE__*/_jsx(View, {
|
|
176
|
+
style: styles.placeholder,
|
|
177
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
178
|
+
style: styles.placeholderText,
|
|
179
|
+
children: IMAGE_UNAVAILABLE
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
183
|
+
pointerEvents: "none",
|
|
184
|
+
style: styles.border
|
|
185
|
+
})]
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}, selection.carouselRevision), /*#__PURE__*/_jsx(View, {
|
|
189
|
+
style: styles.counter,
|
|
190
|
+
accessible: true,
|
|
191
|
+
accessibilityLiveRegion: "polite",
|
|
192
|
+
accessibilityLabel: `第${selection.index + 1}张,共${items.length}张`,
|
|
193
|
+
children: /*#__PURE__*/_jsxs(Text, {
|
|
194
|
+
style: styles.counterText,
|
|
195
|
+
children: ["\u7B2C", selection.index + 1, "/", items.length, "\u5F20"]
|
|
196
|
+
})
|
|
197
|
+
})]
|
|
189
198
|
}), current.canDelete && onRequestDelete ? /*#__PURE__*/_jsx(IconButton, {
|
|
190
199
|
icon: "trash",
|
|
191
200
|
size: "sm",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Text","View","radius","useThemedStyles","IconButton","Thumbnail","Carousel","DELETE_LABEL","IMAGE_UNAVAILABLE","makeStyles","jsx","_jsx","jsxs","_jsxs","ImagePreview","ImagePreviewInner","items","width","height","initialId","onCurrentChange","onRequestDelete","style","testID","ref","styles","carouselRef","mounted","moving","pendingScroll","undefined","selection","setSelection","index","Math","max","findIndex","item","id","initialized","length","carouselRevision","retainedIndex","identityChanged","some","current","min","committed","currentChange","request","scrollTo","animated","notifiedId","displayed","getCurrent","next","data","map","container","children","defaultIndex","loop","itemSize","keyExtractor","onScrollStart","onSnapToItem","latest","itemIndex","nextIndex","renderItem","find","candidate","media","source","placeholder","placeholderText","size","borderRadius","xl","resizeMode","imageStyle","image","accessibilityLabel","label","fallback","pointerEvents","border","counter","counterText","canDelete","icon","variant","disabled","deleting","deleteButton","onPress"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/ImagePreview.tsx"],"mappings":";;AAAA,SACEA,UAAU,EACVC,SAAS,EACTC,mBAAmB,EACnBC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,MAAM,EAAEC,eAAe,QAAQ,yBAAgB;AACxD,SAASC,UAAU,QAAQ,wBAAe;AAC1C,SAASC,SAAS,QAAQ,uBAAc;AACxC,SAASC,QAAQ,QAA0B,kCAAkC;AAC7E,
|
|
1
|
+
{"version":3,"names":["forwardRef","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Text","View","radius","useThemedStyles","IconButton","Thumbnail","Carousel","DELETE_LABEL","IMAGE_COUNTER_HEIGHT","IMAGE_UNAVAILABLE","makeStyles","jsx","_jsx","jsxs","_jsxs","ImagePreview","ImagePreviewInner","items","width","height","initialId","onCurrentChange","onRequestDelete","style","testID","ref","styles","carouselRef","mounted","moving","pendingScroll","undefined","selection","setSelection","index","Math","max","findIndex","item","id","initialized","length","carouselRevision","retainedIndex","identityChanged","some","current","min","committed","currentChange","request","scrollTo","animated","notifiedId","displayed","getCurrent","next","data","map","container","children","defaultIndex","loop","itemSize","keyExtractor","onScrollStart","onSnapToItem","latest","itemIndex","nextIndex","renderItem","find","candidate","media","source","placeholder","placeholderText","size","borderRadius","xl","resizeMode","imageStyle","image","accessibilityLabel","label","fallback","pointerEvents","border","counter","accessible","accessibilityLiveRegion","counterText","canDelete","icon","variant","disabled","deleting","deleteButton","onPress"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/ImagePreview.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["IMAGE_UNAVAILABLE","DELETE_LABEL"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/constants.ts"],"mappings":";;AAAA,OAAO,
|
|
1
|
+
{"version":3,"names":["r","IMAGE_UNAVAILABLE","DELETE_LABEL","IMAGE_COUNTER_HEIGHT"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/constants.ts"],"mappings":";;AAAA,SAASA,CAAC,QAAQ,yBAAgB;AAElC,OAAO,MAAMC,iBAAiB,GAAG,SAAS;AAC1C,OAAO,MAAMC,YAAY,GAAG,QAAQ;AACpC,OAAO,MAAMC,oBAAoB,GAAGH,CAAC,CAAC,EAAE,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
4
|
import { fontMono, radius, space, type as typography } from "../../../theme/index.js";
|
|
5
|
+
import { IMAGE_COUNTER_HEIGHT } from "./constants.js";
|
|
5
6
|
export const makeStyles = colors => StyleSheet.create({
|
|
6
7
|
container: {
|
|
7
8
|
alignItems: 'center',
|
|
@@ -35,8 +36,11 @@ export const makeStyles = colors => StyleSheet.create({
|
|
|
35
36
|
textAlign: 'center'
|
|
36
37
|
},
|
|
37
38
|
counter: {
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
bottom: 0,
|
|
38
41
|
alignSelf: 'center',
|
|
39
|
-
|
|
42
|
+
height: IMAGE_COUNTER_HEIGHT,
|
|
43
|
+
justifyContent: 'center',
|
|
40
44
|
paddingHorizontal: space[3],
|
|
41
45
|
borderRadius: radius.pill,
|
|
42
46
|
borderWidth: StyleSheet.hairlineWidth,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fontMono","radius","space","type","typography","makeStyles","colors","create","container","alignItems","gap","media","backgroundColor","borderRadius","xl","overflow","border","absoluteFill","borderColor","outline","borderWidth","hairlineWidth","image","placeholder","width","height","justifyContent","paddingHorizontal","placeholderText","color","fontSize","sm","textAlign","counter","
|
|
1
|
+
{"version":3,"names":["StyleSheet","fontMono","radius","space","type","typography","IMAGE_COUNTER_HEIGHT","makeStyles","colors","create","container","alignItems","gap","media","backgroundColor","borderRadius","xl","overflow","border","absoluteFill","borderColor","outline","borderWidth","hairlineWidth","image","placeholder","width","height","justifyContent","paddingHorizontal","placeholderText","color","fontSize","sm","textAlign","counter","position","bottom","alignSelf","pill","glassPillBorder","glassHighlight","counterText","foreground","fontFamily","deleteButton"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,UAAU,QAAQ,yBAAgB;AAE5E,SAASC,oBAAoB,QAAQ,gBAAa;AAElD,OAAO,MAAMC,UAAU,GAAIC,MAAmB,IAC5CR,UAAU,CAACS,MAAM,CAAC;EAChBC,SAAS,EAAE;IAAEC,UAAU,EAAE,QAAQ;IAAEC,GAAG,EAAET,KAAK,CAAC,CAAC;EAAE,CAAC;EAClDU,KAAK,EAAE;IACLC,eAAe,EAAE,OAAO;IACxBC,YAAY,EAAEb,MAAM,CAACc,EAAE;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE;IACN,GAAGlB,UAAU,CAACmB,YAAY;IAC1BC,WAAW,EAAEZ,MAAM,CAACa,OAAO;IAC3BC,WAAW,EAAEtB,UAAU,CAACuB,aAAa;IACrCR,YAAY,EAAEb,MAAM,CAACc;EACvB,CAAC;EACDQ,KAAK,EAAE;IAAEV,eAAe,EAAE;EAAQ,CAAC;EACnCW,WAAW,EAAE;IACXC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,MAAM;IACdb,eAAe,EAAE,OAAO;IACxBc,cAAc,EAAE,QAAQ;IACxBjB,UAAU,EAAE,QAAQ;IACpBkB,iBAAiB,EAAE1B,KAAK,CAAC,CAAC;EAC5B,CAAC;EACD2B,eAAe,EAAE;IACfC,KAAK,EAAE,OAAO;IACdC,QAAQ,EAAE3B,UAAU,CAAC4B,EAAE;IACvBC,SAAS,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACPC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,QAAQ;IACnBX,MAAM,EAAErB,oBAAoB;IAC5BsB,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAE1B,KAAK,CAAC,CAAC,CAAC;IAC3BY,YAAY,EAAEb,MAAM,CAACqC,IAAI;IACzBjB,WAAW,EAAEtB,UAAU,CAACuB,aAAa;IACrCH,WAAW,EAAEZ,MAAM,CAACgC,eAAe;IACnC1B,eAAe,EAAEN,MAAM,CAACiC;EAC1B,CAAC;EACDC,WAAW,EAAE;IACXX,KAAK,EAAEvB,MAAM,CAACmC,UAAU;IACxBX,QAAQ,EAAE3B,UAAU,CAAC4B,EAAE;IACvBW,UAAU,EAAE3C;EACd,CAAC;EACD4C,YAAY,EAAE;IAAE9B,YAAY,EAAEb,MAAM,CAACqC;EAAK;AAC5C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ export function Sheet({
|
|
|
11
11
|
footer,
|
|
12
12
|
contentMode = 'fixed',
|
|
13
13
|
contentContainerStyle,
|
|
14
|
+
footerStyle,
|
|
14
15
|
style,
|
|
15
16
|
testID
|
|
16
17
|
}) {
|
|
@@ -32,7 +33,7 @@ export function Sheet({
|
|
|
32
33
|
style: [styles.contentRegion, styles.content, contentContainerStyle],
|
|
33
34
|
children: children
|
|
34
35
|
}), footer ? /*#__PURE__*/_jsx(View, {
|
|
35
|
-
style: styles.footer,
|
|
36
|
+
style: [styles.footer, footerStyle],
|
|
36
37
|
children: footer
|
|
37
38
|
}) : null]
|
|
38
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ScrollView","View","useThemedStyles","makeStyles","jsx","_jsx","jsxs","_jsxs","Sheet","children","header","footer","contentMode","contentContainerStyle","style","testID","styles","root","grabberContainer","grabber","contentRegion","content","keyboardShouldPersistTaps"],"sourceRoot":"../../../../../src","sources":["components/ui/Sheet/Sheet.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,OAAO,SAASC,KAAKA,CAAC;EACpBC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC,WAAW,GAAG,OAAO;EACrBC,qBAAqB;EACrBC,KAAK;EACLC;AACU,CAAC,EAAqB;EAChC,MAAMC,MAAM,
|
|
1
|
+
{"version":3,"names":["React","ScrollView","View","useThemedStyles","makeStyles","jsx","_jsx","jsxs","_jsxs","Sheet","children","header","footer","contentMode","contentContainerStyle","footerStyle","style","testID","styles","root","grabberContainer","grabber","contentRegion","content","keyboardShouldPersistTaps"],"sourceRoot":"../../../../../src","sources":["components/ui/Sheet/Sheet.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,OAAO,SAASC,KAAKA,CAAC;EACpBC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC,WAAW,GAAG,OAAO;EACrBC,qBAAqB;EACrBC,WAAW;EACXC,KAAK;EACLC;AACU,CAAC,EAAqB;EAChC,MAAMC,MAAM,GAAGf,eAAe,CAACC,UAAU,CAAC;EAE1C,oBACEI,KAAA,CAACN,IAAI;IAACc,KAAK,EAAE,CAACE,MAAM,CAACC,IAAI,EAAEH,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAP,QAAA,GAC/CC,MAAM,iBACLL,IAAA,CAACJ,IAAI;MAACc,KAAK,EAAEE,MAAM,CAACE,gBAAiB;MAAAV,QAAA,eACnCJ,IAAA,CAACJ,IAAI;QAACc,KAAK,EAAEE,MAAM,CAACG;MAAQ,CAAE;IAAC,CAC3B,CACP,EACAR,WAAW,KAAK,QAAQ,gBACvBP,IAAA,CAACL,UAAU;MACTe,KAAK,EAAEE,MAAM,CAACI,aAAc;MAC5BR,qBAAqB,EAAE,CAACI,MAAM,CAACK,OAAO,EAAET,qBAAqB,CAAE;MAC/DU,yBAAyB,EAAC,SAAS;MAAAd,QAAA,EAElCA;IAAQ,CACC,CAAC,gBAEbJ,IAAA,CAACJ,IAAI;MACHc,KAAK,EAAE,CAACE,MAAM,CAACI,aAAa,EAAEJ,MAAM,CAACK,OAAO,EAAET,qBAAqB,CAAE;MAAAJ,QAAA,EAEpEA;IAAQ,CACL,CACP,EACAE,MAAM,gBACLN,IAAA,CAACJ,IAAI;MAACc,KAAK,EAAE,CAACE,MAAM,CAACN,MAAM,EAAEG,WAAW,CAAE;MAAAL,QAAA,EAAEE;IAAM,CAAO,CAAC,GACxD,IAAI;EAAA,CACJ,CAAC;AAEX","ignoreList":[]}
|
|
@@ -5,9 +5,12 @@ import { Text, View } from 'react-native';
|
|
|
5
5
|
import { useThemedStyles } from "../../../theme/index.js";
|
|
6
6
|
import { Button } from "../Button/index.js";
|
|
7
7
|
import { Textarea } from "../Textarea/index.js";
|
|
8
|
+
import { Input } from "../Input/index.js";
|
|
8
9
|
import { makeStyles } from "./styles.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
export function TextEntryContent({
|
|
12
|
+
variant = 'card',
|
|
13
|
+
placeholder,
|
|
11
14
|
title,
|
|
12
15
|
value,
|
|
13
16
|
onChangeText,
|
|
@@ -23,37 +26,46 @@ export function TextEntryContent({
|
|
|
23
26
|
testID
|
|
24
27
|
}) {
|
|
25
28
|
const styles = useThemedStyles(makeStyles);
|
|
29
|
+
const compact = variant === 'compact';
|
|
30
|
+
const Field = compact ? Input : Textarea;
|
|
26
31
|
return /*#__PURE__*/_jsxs(View, {
|
|
27
|
-
style: [styles.root, style],
|
|
32
|
+
style: [styles.root, compact && styles.compactRoot, style],
|
|
28
33
|
testID: testID,
|
|
29
34
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
30
|
-
style: styles.title,
|
|
35
|
+
style: [styles.title, compact && styles.compactTitle],
|
|
31
36
|
accessibilityRole: "header",
|
|
32
37
|
children: title
|
|
33
38
|
}), message ? /*#__PURE__*/_jsx(Text, {
|
|
34
39
|
style: styles.message,
|
|
35
40
|
children: message
|
|
36
|
-
}) : null, /*#__PURE__*/_jsx(
|
|
41
|
+
}) : null, /*#__PURE__*/_jsx(Field, {
|
|
37
42
|
value: value,
|
|
38
43
|
onChangeText: onChangeText,
|
|
39
44
|
maxLength: maxLength,
|
|
40
45
|
editable: !busy,
|
|
41
46
|
autoFocus: autoFocus,
|
|
42
|
-
accessibilityLabel: title
|
|
47
|
+
accessibilityLabel: title,
|
|
48
|
+
placeholder: placeholder
|
|
43
49
|
}), /*#__PURE__*/_jsxs(View, {
|
|
44
|
-
style: styles.actions,
|
|
45
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
50
|
+
style: [styles.actions, compact && styles.compactActions],
|
|
51
|
+
children: [compact ? /*#__PURE__*/_jsx(Button, {
|
|
52
|
+
label: cancelLabel,
|
|
53
|
+
size: "sm",
|
|
54
|
+
variant: "ghost",
|
|
55
|
+
disabled: busy,
|
|
56
|
+
onPress: onCancel
|
|
57
|
+
}) : null, /*#__PURE__*/_jsx(Button, {
|
|
46
58
|
label: confirmLabel,
|
|
47
59
|
size: "sm",
|
|
48
60
|
loading: busy,
|
|
49
61
|
onPress: () => onSubmit(value)
|
|
50
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
62
|
+
}), !compact ? /*#__PURE__*/_jsx(Button, {
|
|
51
63
|
label: cancelLabel,
|
|
52
64
|
size: "sm",
|
|
53
65
|
variant: "outline",
|
|
54
66
|
disabled: busy,
|
|
55
67
|
onPress: onCancel
|
|
56
|
-
})]
|
|
68
|
+
}) : null]
|
|
57
69
|
})]
|
|
58
70
|
});
|
|
59
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","View","useThemedStyles","Button","Textarea","makeStyles","jsx","_jsx","jsxs","_jsxs","TextEntryContent","title","value","onChangeText","onSubmit","onCancel","message","busy","maxLength","confirmLabel","cancelLabel","autoFocus","style","testID","styles","root","children","accessibilityRole","editable","accessibilityLabel","actions","label","size","
|
|
1
|
+
{"version":3,"names":["React","Text","View","useThemedStyles","Button","Textarea","Input","makeStyles","jsx","_jsx","jsxs","_jsxs","TextEntryContent","variant","placeholder","title","value","onChangeText","onSubmit","onCancel","message","busy","maxLength","confirmLabel","cancelLabel","autoFocus","style","testID","styles","compact","Field","root","compactRoot","children","compactTitle","accessibilityRole","editable","accessibilityLabel","actions","compactActions","label","size","disabled","onPress","loading"],"sourceRoot":"../../../../../src","sources":["components/ui/TextEntryContent/TextEntryContent.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,eAAe,QAAQ,yBAAgB;AAChD,SAASC,MAAM,QAAQ,oBAAW;AAClC,SAASC,QAAQ,QAAQ,sBAAa;AACtC,SAASC,KAAK,QAAQ,mBAAU;AAChC,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,OAAO,GAAG,MAAM;EAChBC,WAAW;EACXC,KAAK;EACLC,KAAK;EACLC,YAAY;EACZC,QAAQ;EACRC,QAAQ;EACRC,OAAO;EACPC,IAAI,GAAG,KAAK;EACZC,SAAS;EACTC,YAAY,GAAG,IAAI;EACnBC,WAAW,GAAG,IAAI;EAClBC,SAAS,GAAG,IAAI;EAChBC,KAAK;EACLC;AACqB,CAAC,EAAqB;EAC3C,MAAMC,MAAM,GAAGzB,eAAe,CAACI,UAAU,CAAC;EAC1C,MAAMsB,OAAO,GAAGhB,OAAO,KAAK,SAAS;EACrC,MAAMiB,KAAK,GAAGD,OAAO,GAAGvB,KAAK,GAAGD,QAAQ;EACxC,oBACEM,KAAA,CAACT,IAAI;IACHwB,KAAK,EAAE,CAACE,MAAM,CAACG,IAAI,EAAEF,OAAO,IAAID,MAAM,CAACI,WAAW,EAAEN,KAAK,CAAE;IAC3DC,MAAM,EAAEA,MAAO;IAAAM,QAAA,gBAEfxB,IAAA,CAACR,IAAI;MACHyB,KAAK,EAAE,CAACE,MAAM,CAACb,KAAK,EAAEc,OAAO,IAAID,MAAM,CAACM,YAAY,CAAE;MACtDC,iBAAiB,EAAC,QAAQ;MAAAF,QAAA,EAEzBlB;IAAK,CACF,CAAC,EACNK,OAAO,gBAAGX,IAAA,CAACR,IAAI;MAACyB,KAAK,EAAEE,MAAM,CAACR,OAAQ;MAAAa,QAAA,EAAEb;IAAO,CAAO,CAAC,GAAG,IAAI,eAC/DX,IAAA,CAACqB,KAAK;MACJd,KAAK,EAAEA,KAAM;MACbC,YAAY,EAAEA,YAAa;MAC3BK,SAAS,EAAEA,SAAU;MACrBc,QAAQ,EAAE,CAACf,IAAK;MAChBI,SAAS,EAAEA,SAAU;MACrBY,kBAAkB,EAAEtB,KAAM;MAC1BD,WAAW,EAAEA;IAAY,CAC1B,CAAC,eACFH,KAAA,CAACT,IAAI;MAACwB,KAAK,EAAE,CAACE,MAAM,CAACU,OAAO,EAAET,OAAO,IAAID,MAAM,CAACW,cAAc,CAAE;MAAAN,QAAA,GAC7DJ,OAAO,gBACNpB,IAAA,CAACL,MAAM;QACLoC,KAAK,EAAEhB,WAAY;QACnBiB,IAAI,EAAC,IAAI;QACT5B,OAAO,EAAC,OAAO;QACf6B,QAAQ,EAAErB,IAAK;QACfsB,OAAO,EAAExB;MAAS,CACnB,CAAC,GACA,IAAI,eACRV,IAAA,CAACL,MAAM;QACLoC,KAAK,EAAEjB,YAAa;QACpBkB,IAAI,EAAC,IAAI;QACTG,OAAO,EAAEvB,IAAK;QACdsB,OAAO,EAAEA,CAAA,KAAMzB,QAAQ,CAACF,KAAK;MAAE,CAChC,CAAC,EACD,CAACa,OAAO,gBACPpB,IAAA,CAACL,MAAM;QACLoC,KAAK,EAAEhB,WAAY;QACnBiB,IAAI,EAAC,IAAI;QACT5B,OAAO,EAAC,SAAS;QACjB6B,QAAQ,EAAErB,IAAK;QACfsB,OAAO,EAAExB;MAAS,CACnB,CAAC,GACA,IAAI;IAAA,CACJ,CAAC;EAAA,CACH,CAAC;AAEX","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
|
-
import { fw, radius, space, type } from "../../../theme/index.js";
|
|
4
|
+
import { fw, r, radius, space, type } from "../../../theme/index.js";
|
|
5
5
|
export const makeStyles = colors => StyleSheet.create({
|
|
6
6
|
root: {
|
|
7
7
|
gap: space[4],
|
|
@@ -16,6 +16,15 @@ export const makeStyles = colors => StyleSheet.create({
|
|
|
16
16
|
fontSize: type.h3,
|
|
17
17
|
fontWeight: fw.semi
|
|
18
18
|
},
|
|
19
|
+
compactRoot: {
|
|
20
|
+
borderWidth: 0,
|
|
21
|
+
borderRadius: r(14),
|
|
22
|
+
padding: space[6],
|
|
23
|
+
gap: space[5]
|
|
24
|
+
},
|
|
25
|
+
compactTitle: {
|
|
26
|
+
fontSize: type.sm
|
|
27
|
+
},
|
|
19
28
|
message: {
|
|
20
29
|
color: colors.foregroundMuted,
|
|
21
30
|
fontSize: type.sm
|
|
@@ -24,6 +33,10 @@ export const makeStyles = colors => StyleSheet.create({
|
|
|
24
33
|
flexDirection: 'row',
|
|
25
34
|
flexWrap: 'wrap',
|
|
26
35
|
gap: space[3]
|
|
36
|
+
},
|
|
37
|
+
compactActions: {
|
|
38
|
+
justifyContent: 'flex-end',
|
|
39
|
+
gap: space[4]
|
|
27
40
|
}
|
|
28
41
|
});
|
|
29
42
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","radius","space","type","makeStyles","colors","create","root","gap","padding","borderWidth","borderColor","outline","borderRadius","xl","backgroundColor","surface","title","color","foreground","fontSize","h3","fontWeight","semi","
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","r","radius","space","type","makeStyles","colors","create","root","gap","padding","borderWidth","borderColor","outline","borderRadius","xl","backgroundColor","surface","title","color","foreground","fontSize","h3","fontWeight","semi","compactRoot","compactTitle","sm","message","foregroundMuted","actions","flexDirection","flexWrap","compactActions","justifyContent"],"sourceRoot":"../../../../../src","sources":["components/ui/TextEntryContent/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,QAA0B,yBAAgB;AAE7E,OAAO,MAAMC,UAAU,GAAIC,MAAmB,IAC5CP,UAAU,CAACQ,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,GAAG,EAAEN,KAAK,CAAC,CAAC,CAAC;IACbO,OAAO,EAAEP,KAAK,CAAC,CAAC,CAAC;IACjBQ,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEN,MAAM,CAACO,OAAO;IAC3BC,YAAY,EAAEZ,MAAM,CAACa,EAAE;IACvBC,eAAe,EAAEV,MAAM,CAACW;EAC1B,CAAC;EACDC,KAAK,EAAE;IAAEC,KAAK,EAAEb,MAAM,CAACc,UAAU;IAAEC,QAAQ,EAAEjB,IAAI,CAACkB,EAAE;IAAEC,UAAU,EAAEvB,EAAE,CAACwB;EAAK,CAAC;EAC3EC,WAAW,EAAE;IACXd,WAAW,EAAE,CAAC;IACdG,YAAY,EAAEb,CAAC,CAAC,EAAE,CAAC;IACnBS,OAAO,EAAEP,KAAK,CAAC,CAAC,CAAC;IACjBM,GAAG,EAAEN,KAAK,CAAC,CAAC;EACd,CAAC;EACDuB,YAAY,EAAE;IAAEL,QAAQ,EAAEjB,IAAI,CAACuB;EAAG,CAAC;EACnCC,OAAO,EAAE;IAAET,KAAK,EAAEb,MAAM,CAACuB,eAAe;IAAER,QAAQ,EAAEjB,IAAI,CAACuB;EAAG,CAAC;EAC7DG,OAAO,EAAE;IAAEC,aAAa,EAAE,KAAK;IAAEC,QAAQ,EAAE,MAAM;IAAEvB,GAAG,EAAEN,KAAK,CAAC,CAAC;EAAE,CAAC;EAClE8B,cAAc,EAAE;IACdC,cAAc,EAAE,UAAU;IAC1BzB,GAAG,EAAEN,KAAK,CAAC,CAAC;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ActionMenuContentProps } from './types';
|
|
3
|
-
export declare function ActionMenuContent({ actions, onClose, presentation, title, cancelLabel, style, testID, }: ActionMenuContentProps): React.JSX.Element;
|
|
3
|
+
export declare function ActionMenuContent({ actions, onClose, presentation, title, cancelLabel, style, contentStyle, testID, }: ActionMenuContentProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=ActionMenuContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionMenuContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ActionMenuContent/ActionMenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGtD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,OAAO,EACP,YAAuB,EACvB,KAAK,EACL,WAAkB,EAClB,KAAK,EACL,MAAsB,GACvB,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"ActionMenuContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ActionMenuContent/ActionMenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGtD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,OAAO,EACP,YAAuB,EACvB,KAAK,EACL,WAAkB,EAClB,KAAK,EACL,YAAY,EACZ,MAAsB,GACvB,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsG5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ActionMenuContent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC;AAED,2BAA2B;AAC3B,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ActionMenuContent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC;AAED,2BAA2B;AAC3B,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePreview.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/ImagePreview.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImagePreview.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/ImagePreview.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,YAAY,kHAuOxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,+CAAY,CAAC;AAC3C,eAAO,MAAM,YAAY,yCAAW,CAAC;AACrC,eAAO,MAAM,oBAAoB,QAAQ,CAAC"}
|
|
@@ -36,8 +36,11 @@ export declare const makeStyles: (colors: ColorTokens) => Readonly<{
|
|
|
36
36
|
textAlign: "center";
|
|
37
37
|
};
|
|
38
38
|
counter: {
|
|
39
|
+
position: "absolute";
|
|
40
|
+
bottom: number;
|
|
39
41
|
alignSelf: "center";
|
|
40
|
-
|
|
42
|
+
height: number;
|
|
43
|
+
justifyContent: "center";
|
|
41
44
|
paddingHorizontal: number;
|
|
42
45
|
borderRadius: 999;
|
|
43
46
|
borderWidth: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8C1C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SheetProps } from './types';
|
|
3
|
-
export declare function Sheet({ children, header, footer, contentMode, contentContainerStyle, style, testID, }: SheetProps): React.JSX.Element;
|
|
3
|
+
export declare function Sheet({ children, header, footer, contentMode, contentContainerStyle, footerStyle, style, testID, }: SheetProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=Sheet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sheet.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Sheet/Sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAAqB,EACrB,qBAAqB,EACrB,KAAK,EACL,MAAM,GACP,EAAE,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Sheet.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Sheet/Sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA8BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Sheet/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Sheet/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { TextEntryContentProps } from './types';
|
|
3
|
-
export declare function TextEntryContent({ title, value, onChangeText, onSubmit, onCancel, message, busy, maxLength, confirmLabel, cancelLabel, autoFocus, style, testID, }: TextEntryContentProps): React.JSX.Element;
|
|
3
|
+
export declare function TextEntryContent({ variant, placeholder, title, value, onChangeText, onSubmit, onCancel, message, busy, maxLength, confirmLabel, cancelLabel, autoFocus, style, testID, }: TextEntryContentProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=TextEntryContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextEntryContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/TextEntryContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TextEntryContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/TextEntryContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAgB,EAChB,WAAW,EACX,KAAK,EACL,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAY,EACZ,SAAS,EACT,YAAmB,EACnB,WAAkB,EAClB,SAAgB,EAChB,KAAK,EACL,MAAM,GACP,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqD3C"}
|
|
@@ -13,6 +13,15 @@ export declare const makeStyles: (colors: ColorTokens) => Readonly<{
|
|
|
13
13
|
fontSize: number;
|
|
14
14
|
fontWeight: "600";
|
|
15
15
|
};
|
|
16
|
+
compactRoot: {
|
|
17
|
+
borderWidth: number;
|
|
18
|
+
borderRadius: number;
|
|
19
|
+
padding: number;
|
|
20
|
+
gap: number;
|
|
21
|
+
};
|
|
22
|
+
compactTitle: {
|
|
23
|
+
fontSize: number;
|
|
24
|
+
};
|
|
16
25
|
message: {
|
|
17
26
|
color: string;
|
|
18
27
|
fontSize: number;
|
|
@@ -22,5 +31,9 @@ export declare const makeStyles: (colors: ColorTokens) => Readonly<{
|
|
|
22
31
|
flexWrap: "wrap";
|
|
23
32
|
gap: number;
|
|
24
33
|
};
|
|
34
|
+
compactActions: {
|
|
35
|
+
justifyContent: "flex-end";
|
|
36
|
+
gap: number;
|
|
37
|
+
};
|
|
25
38
|
}>;
|
|
26
39
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/styles.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9E,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB1C,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
2
|
/** 受控文字编辑内容;弹层、键盘和业务提交结果由宿主负责。 */
|
|
3
3
|
export interface TextEntryContentProps {
|
|
4
|
+
/** card 保留多行卡片;compact 使用单行输入和紧凑操作。 */
|
|
5
|
+
variant?: 'card' | 'compact';
|
|
6
|
+
/** 交给实际输入控件;缺省不添加提示。 */
|
|
7
|
+
placeholder?: string;
|
|
4
8
|
title: string;
|
|
5
9
|
value: string;
|
|
6
10
|
onChangeText(value: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,kCAAkC;AAClC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextEntryContent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,kCAAkC;AAClC,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ export function ActionMenuContent({
|
|
|
13
13
|
title,
|
|
14
14
|
cancelLabel = '取消',
|
|
15
15
|
style,
|
|
16
|
+
contentStyle,
|
|
16
17
|
testID = 'action-menu',
|
|
17
18
|
}: ActionMenuContentProps): React.JSX.Element {
|
|
18
19
|
const styles = useThemedStyles(makeStyles);
|
|
@@ -35,6 +36,7 @@ export function ActionMenuContent({
|
|
|
35
36
|
style={[
|
|
36
37
|
isSheet ? styles.sheetCard : styles.dialogCard,
|
|
37
38
|
isSheet && { paddingBottom: insets.bottom + space[5] },
|
|
39
|
+
contentStyle,
|
|
38
40
|
]}
|
|
39
41
|
onPress={(event) => event.stopPropagation()}
|
|
40
42
|
>
|
|
@@ -12,7 +12,11 @@ import { radius, useThemedStyles } from '../../../theme';
|
|
|
12
12
|
import { IconButton } from '../IconButton';
|
|
13
13
|
import { Thumbnail } from '../Thumbnail';
|
|
14
14
|
import { Carousel, type CarouselRef } from 'react-native-reanimated-carousel';
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
DELETE_LABEL,
|
|
17
|
+
IMAGE_COUNTER_HEIGHT,
|
|
18
|
+
IMAGE_UNAVAILABLE,
|
|
19
|
+
} from './constants';
|
|
16
20
|
import { makeStyles } from './styles';
|
|
17
21
|
import type {
|
|
18
22
|
ImagePreviewHandle,
|
|
@@ -149,82 +153,94 @@ export const ImagePreview = forwardRef<ImagePreviewHandle, ImagePreviewProps>(
|
|
|
149
153
|
|
|
150
154
|
return (
|
|
151
155
|
<View style={[styles.container, style]} testID={testID}>
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
156
|
+
<View style={{ width, height: height + IMAGE_COUNTER_HEIGHT / 2 }}>
|
|
157
|
+
<Carousel
|
|
158
|
+
key={selection.carouselRevision}
|
|
159
|
+
ref={carouselRef}
|
|
160
|
+
data={data}
|
|
161
|
+
defaultIndex={selection.index}
|
|
162
|
+
loop={false}
|
|
163
|
+
itemSize={width}
|
|
164
|
+
style={{ width, height }}
|
|
165
|
+
keyExtractor={(id) => id}
|
|
166
|
+
testID={testID ? `${testID}-carousel` : undefined}
|
|
167
|
+
onScrollStart={() => {
|
|
168
|
+
if (
|
|
169
|
+
mounted.current &&
|
|
170
|
+
selection.carouselRevision ===
|
|
171
|
+
committed.current.carouselRevision
|
|
172
|
+
) {
|
|
173
|
+
moving.current = true;
|
|
174
|
+
}
|
|
175
|
+
}}
|
|
176
|
+
onSnapToItem={(index) => {
|
|
177
|
+
const latest = committed.current;
|
|
178
|
+
if (
|
|
179
|
+
!mounted.current ||
|
|
180
|
+
selection.carouselRevision !== latest.carouselRevision ||
|
|
181
|
+
items.length !== latest.items.length ||
|
|
182
|
+
items.some(
|
|
183
|
+
(item, itemIndex) => item.id !== latest.items[itemIndex]?.id
|
|
184
|
+
)
|
|
178
185
|
)
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
186
|
+
return;
|
|
187
|
+
moving.current = false;
|
|
188
|
+
const id = items[index]?.id;
|
|
189
|
+
const nextIndex = latest.items.findIndex(
|
|
190
|
+
(item) => item.id === id
|
|
191
|
+
);
|
|
192
|
+
if (nextIndex >= 0 && nextIndex !== latest.index) {
|
|
193
|
+
const next = { ...latest, index: nextIndex };
|
|
194
|
+
// SDK 已完成落位;句柄同步可读,不等待 React 下一次提交。
|
|
195
|
+
committed.current = next;
|
|
196
|
+
setSelection(next);
|
|
197
|
+
notifiedId.current = id;
|
|
198
|
+
currentChange.current?.(next.items[nextIndex]!);
|
|
199
|
+
}
|
|
200
|
+
}}
|
|
201
|
+
renderItem={({ item: id, index }) => {
|
|
202
|
+
const item = items.find((candidate) => candidate.id === id)!;
|
|
203
|
+
return (
|
|
204
|
+
<View style={[styles.media, { width, height }]}>
|
|
205
|
+
{item.source === undefined ? (
|
|
206
|
+
<View style={styles.placeholder}>
|
|
207
|
+
<Text style={styles.placeholderText}>
|
|
208
|
+
{IMAGE_UNAVAILABLE}
|
|
209
|
+
</Text>
|
|
210
|
+
</View>
|
|
211
|
+
) : (
|
|
212
|
+
<Thumbnail
|
|
213
|
+
source={item.source}
|
|
214
|
+
size={{ width, height, borderRadius: radius.xl }}
|
|
215
|
+
resizeMode="contain"
|
|
216
|
+
imageStyle={styles.image}
|
|
217
|
+
accessibilityLabel={
|
|
218
|
+
item.label ?? `图片第 ${index + 1} 张`
|
|
219
|
+
}
|
|
220
|
+
fallback={
|
|
221
|
+
<View style={styles.placeholder}>
|
|
222
|
+
<Text style={styles.placeholderText}>
|
|
223
|
+
{IMAGE_UNAVAILABLE}
|
|
224
|
+
</Text>
|
|
225
|
+
</View>
|
|
226
|
+
}
|
|
227
|
+
/>
|
|
228
|
+
)}
|
|
229
|
+
<View pointerEvents="none" style={styles.border} />
|
|
230
|
+
</View>
|
|
231
|
+
);
|
|
232
|
+
}}
|
|
233
|
+
/>
|
|
234
|
+
<View
|
|
235
|
+
style={styles.counter}
|
|
236
|
+
accessible
|
|
237
|
+
accessibilityLiveRegion="polite"
|
|
238
|
+
accessibilityLabel={`第${selection.index + 1}张,共${items.length}张`}
|
|
239
|
+
>
|
|
240
|
+
<Text style={styles.counterText}>
|
|
241
|
+
第{selection.index + 1}/{items.length}张
|
|
242
|
+
</Text>
|
|
243
|
+
</View>
|
|
228
244
|
</View>
|
|
229
245
|
{current.canDelete && onRequestDelete ? (
|
|
230
246
|
<IconButton
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StyleSheet } from 'react-native';
|
|
2
2
|
import { fontMono, radius, space, type as typography } from '../../../theme';
|
|
3
3
|
import type { ColorTokens } from '../../../theme';
|
|
4
|
+
import { IMAGE_COUNTER_HEIGHT } from './constants';
|
|
4
5
|
|
|
5
6
|
export const makeStyles = (colors: ColorTokens) =>
|
|
6
7
|
StyleSheet.create({
|
|
@@ -31,8 +32,11 @@ export const makeStyles = (colors: ColorTokens) =>
|
|
|
31
32
|
textAlign: 'center',
|
|
32
33
|
},
|
|
33
34
|
counter: {
|
|
35
|
+
position: 'absolute',
|
|
36
|
+
bottom: 0,
|
|
34
37
|
alignSelf: 'center',
|
|
35
|
-
|
|
38
|
+
height: IMAGE_COUNTER_HEIGHT,
|
|
39
|
+
justifyContent: 'center',
|
|
36
40
|
paddingHorizontal: space[3],
|
|
37
41
|
borderRadius: radius.pill,
|
|
38
42
|
borderWidth: StyleSheet.hairlineWidth,
|
|
@@ -10,6 +10,7 @@ export function Sheet({
|
|
|
10
10
|
footer,
|
|
11
11
|
contentMode = 'fixed',
|
|
12
12
|
contentContainerStyle,
|
|
13
|
+
footerStyle,
|
|
13
14
|
style,
|
|
14
15
|
testID,
|
|
15
16
|
}: SheetProps): React.JSX.Element {
|
|
@@ -37,7 +38,9 @@ export function Sheet({
|
|
|
37
38
|
{children}
|
|
38
39
|
</View>
|
|
39
40
|
)}
|
|
40
|
-
{footer ?
|
|
41
|
+
{footer ? (
|
|
42
|
+
<View style={[styles.footer, footerStyle]}>{footer}</View>
|
|
43
|
+
) : null}
|
|
41
44
|
</View>
|
|
42
45
|
);
|
|
43
46
|
}
|
|
@@ -3,10 +3,13 @@ import { Text, View } from 'react-native';
|
|
|
3
3
|
import { useThemedStyles } from '../../../theme';
|
|
4
4
|
import { Button } from '../Button';
|
|
5
5
|
import { Textarea } from '../Textarea';
|
|
6
|
+
import { Input } from '../Input';
|
|
6
7
|
import { makeStyles } from './styles';
|
|
7
8
|
import type { TextEntryContentProps } from './types';
|
|
8
9
|
|
|
9
10
|
export function TextEntryContent({
|
|
11
|
+
variant = 'card',
|
|
12
|
+
placeholder,
|
|
10
13
|
title,
|
|
11
14
|
value,
|
|
12
15
|
onChangeText,
|
|
@@ -22,34 +25,54 @@ export function TextEntryContent({
|
|
|
22
25
|
testID,
|
|
23
26
|
}: TextEntryContentProps): React.JSX.Element {
|
|
24
27
|
const styles = useThemedStyles(makeStyles);
|
|
28
|
+
const compact = variant === 'compact';
|
|
29
|
+
const Field = compact ? Input : Textarea;
|
|
25
30
|
return (
|
|
26
|
-
<View
|
|
27
|
-
|
|
31
|
+
<View
|
|
32
|
+
style={[styles.root, compact && styles.compactRoot, style]}
|
|
33
|
+
testID={testID}
|
|
34
|
+
>
|
|
35
|
+
<Text
|
|
36
|
+
style={[styles.title, compact && styles.compactTitle]}
|
|
37
|
+
accessibilityRole="header"
|
|
38
|
+
>
|
|
28
39
|
{title}
|
|
29
40
|
</Text>
|
|
30
41
|
{message ? <Text style={styles.message}>{message}</Text> : null}
|
|
31
|
-
<
|
|
42
|
+
<Field
|
|
32
43
|
value={value}
|
|
33
44
|
onChangeText={onChangeText}
|
|
34
45
|
maxLength={maxLength}
|
|
35
46
|
editable={!busy}
|
|
36
47
|
autoFocus={autoFocus}
|
|
37
48
|
accessibilityLabel={title}
|
|
49
|
+
placeholder={placeholder}
|
|
38
50
|
/>
|
|
39
|
-
<View style={styles.actions}>
|
|
51
|
+
<View style={[styles.actions, compact && styles.compactActions]}>
|
|
52
|
+
{compact ? (
|
|
53
|
+
<Button
|
|
54
|
+
label={cancelLabel}
|
|
55
|
+
size="sm"
|
|
56
|
+
variant="ghost"
|
|
57
|
+
disabled={busy}
|
|
58
|
+
onPress={onCancel}
|
|
59
|
+
/>
|
|
60
|
+
) : null}
|
|
40
61
|
<Button
|
|
41
62
|
label={confirmLabel}
|
|
42
63
|
size="sm"
|
|
43
64
|
loading={busy}
|
|
44
65
|
onPress={() => onSubmit(value)}
|
|
45
66
|
/>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
{!compact ? (
|
|
68
|
+
<Button
|
|
69
|
+
label={cancelLabel}
|
|
70
|
+
size="sm"
|
|
71
|
+
variant="outline"
|
|
72
|
+
disabled={busy}
|
|
73
|
+
onPress={onCancel}
|
|
74
|
+
/>
|
|
75
|
+
) : null}
|
|
53
76
|
</View>
|
|
54
77
|
</View>
|
|
55
78
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StyleSheet } from 'react-native';
|
|
2
|
-
import { fw, radius, space, type, type ColorTokens } from '../../../theme';
|
|
2
|
+
import { fw, r, radius, space, type, type ColorTokens } from '../../../theme';
|
|
3
3
|
|
|
4
4
|
export const makeStyles = (colors: ColorTokens) =>
|
|
5
5
|
StyleSheet.create({
|
|
@@ -12,6 +12,17 @@ export const makeStyles = (colors: ColorTokens) =>
|
|
|
12
12
|
backgroundColor: colors.surface,
|
|
13
13
|
},
|
|
14
14
|
title: { color: colors.foreground, fontSize: type.h3, fontWeight: fw.semi },
|
|
15
|
+
compactRoot: {
|
|
16
|
+
borderWidth: 0,
|
|
17
|
+
borderRadius: r(14),
|
|
18
|
+
padding: space[6],
|
|
19
|
+
gap: space[5],
|
|
20
|
+
},
|
|
21
|
+
compactTitle: { fontSize: type.sm },
|
|
15
22
|
message: { color: colors.foregroundMuted, fontSize: type.sm },
|
|
16
23
|
actions: { flexDirection: 'row', flexWrap: 'wrap', gap: space[3] },
|
|
24
|
+
compactActions: {
|
|
25
|
+
justifyContent: 'flex-end',
|
|
26
|
+
gap: space[4],
|
|
27
|
+
},
|
|
17
28
|
});
|
|
@@ -2,6 +2,10 @@ import type { StyleProp, ViewStyle } from 'react-native';
|
|
|
2
2
|
|
|
3
3
|
/** 受控文字编辑内容;弹层、键盘和业务提交结果由宿主负责。 */
|
|
4
4
|
export interface TextEntryContentProps {
|
|
5
|
+
/** card 保留多行卡片;compact 使用单行输入和紧凑操作。 */
|
|
6
|
+
variant?: 'card' | 'compact';
|
|
7
|
+
/** 交给实际输入控件;缺省不添加提示。 */
|
|
8
|
+
placeholder?: string;
|
|
5
9
|
title: string;
|
|
6
10
|
value: string;
|
|
7
11
|
onChangeText(value: string): void;
|