@unif/react-native-design 0.37.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.
Files changed (31) hide show
  1. package/lib/module/components/ui/ActionMenuContent/ActionMenuContent.js +2 -1
  2. package/lib/module/components/ui/ActionMenuContent/ActionMenuContent.js.map +1 -1
  3. package/lib/module/components/ui/ImagePreview/ImagePreview.js +81 -72
  4. package/lib/module/components/ui/ImagePreview/ImagePreview.js.map +1 -1
  5. package/lib/module/components/ui/ImagePreview/constants.js +2 -0
  6. package/lib/module/components/ui/ImagePreview/constants.js.map +1 -1
  7. package/lib/module/components/ui/ImagePreview/styles.js +5 -1
  8. package/lib/module/components/ui/ImagePreview/styles.js.map +1 -1
  9. package/lib/module/components/ui/Sheet/Sheet.js +2 -1
  10. package/lib/module/components/ui/Sheet/Sheet.js.map +1 -1
  11. package/lib/typescript/src/components/ui/ActionMenuContent/ActionMenuContent.d.ts +1 -1
  12. package/lib/typescript/src/components/ui/ActionMenuContent/ActionMenuContent.d.ts.map +1 -1
  13. package/lib/typescript/src/components/ui/ActionMenuContent/types.d.ts +1 -0
  14. package/lib/typescript/src/components/ui/ActionMenuContent/types.d.ts.map +1 -1
  15. package/lib/typescript/src/components/ui/ImagePreview/ImagePreview.d.ts.map +1 -1
  16. package/lib/typescript/src/components/ui/ImagePreview/constants.d.ts +1 -0
  17. package/lib/typescript/src/components/ui/ImagePreview/constants.d.ts.map +1 -1
  18. package/lib/typescript/src/components/ui/ImagePreview/styles.d.ts +4 -1
  19. package/lib/typescript/src/components/ui/ImagePreview/styles.d.ts.map +1 -1
  20. package/lib/typescript/src/components/ui/Sheet/Sheet.d.ts +1 -1
  21. package/lib/typescript/src/components/ui/Sheet/Sheet.d.ts.map +1 -1
  22. package/lib/typescript/src/components/ui/Sheet/types.d.ts +1 -0
  23. package/lib/typescript/src/components/ui/Sheet/types.d.ts.map +1 -1
  24. package/package.json +1 -1
  25. package/src/components/ui/ActionMenuContent/ActionMenuContent.tsx +2 -0
  26. package/src/components/ui/ActionMenuContent/types.ts +1 -0
  27. package/src/components/ui/ImagePreview/ImagePreview.tsx +92 -76
  28. package/src/components/ui/ImagePreview/constants.ts +3 -0
  29. package/src/components/ui/ImagePreview/styles.ts +5 -1
  30. package/src/components/ui/Sheet/Sheet.tsx +4 -1
  31. package/src/components/ui/Sheet/types.ts +1 -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":"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","ignoreList":[]}
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__*/_jsx(Carousel, {
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
- keyExtractor: id => id,
120
- testID: testID ? `${testID}-carousel` : undefined,
121
- onScrollStart: () => {
122
- if (mounted.current && selection.carouselRevision === committed.current.carouselRevision) {
123
- moving.current = true;
124
- }
125
- },
126
- onSnapToItem: index => {
127
- const latest = committed.current;
128
- if (!mounted.current || selection.carouselRevision !== latest.carouselRevision || items.length !== latest.items.length || items.some((item, itemIndex) => item.id !== latest.items[itemIndex]?.id)) return;
129
- moving.current = false;
130
- const id = items[index]?.id;
131
- const nextIndex = latest.items.findIndex(item => item.id === id);
132
- if (nextIndex >= 0 && nextIndex !== latest.index) {
133
- const next = {
134
- ...latest,
135
- index: nextIndex
136
- };
137
- // SDK 已完成落位;句柄同步可读,不等待 React 下一次提交。
138
- committed.current = next;
139
- setSelection(next);
140
- notifiedId.current = id;
141
- currentChange.current?.(next.items[nextIndex]);
142
- }
143
- },
144
- renderItem: ({
145
- item: id,
146
- index
147
- }) => {
148
- const item = items.find(candidate => candidate.id === id);
149
- return /*#__PURE__*/_jsxs(View, {
150
- style: [styles.media, {
151
- width,
152
- height
153
- }],
154
- children: [item.source === undefined ? /*#__PURE__*/_jsx(View, {
155
- style: styles.placeholder,
156
- children: /*#__PURE__*/_jsx(Text, {
157
- style: styles.placeholderText,
158
- children: IMAGE_UNAVAILABLE
159
- })
160
- }) : /*#__PURE__*/_jsx(Thumbnail, {
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
- borderRadius: radius.xl
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
- }), /*#__PURE__*/_jsx(View, {
178
- pointerEvents: "none",
179
- style: styles.border
180
- })]
181
- });
182
- }
183
- }, selection.carouselRevision), /*#__PURE__*/_jsx(View, {
184
- style: styles.counter,
185
- children: /*#__PURE__*/_jsxs(Text, {
186
- style: styles.counterText,
187
- children: ["\u7B2C", selection.index + 1, "/", items.length, "\u5F20"]
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":"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","ignoreList":[]}
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,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import { r } from "../../../theme/index.js";
3
4
  export const IMAGE_UNAVAILABLE = '图片暂不可预览';
4
5
  export const DELETE_LABEL = '删除当前照片';
6
+ export const IMAGE_COUNTER_HEIGHT = r(26);
5
7
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IMAGE_UNAVAILABLE","DELETE_LABEL"],"sourceRoot":"../../../../../src","sources":["components/ui/ImagePreview/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,iBAAiB,GAAG,SAAS;AAC1C,OAAO,MAAMC,YAAY,GAAG,QAAQ","ignoreList":[]}
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
- paddingVertical: space[1],
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","alignSelf","paddingVertical","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;AAG5E,OAAO,MAAMC,UAAU,GAAIC,MAAmB,IAC5CP,UAAU,CAACQ,MAAM,CAAC;EAChBC,SAAS,EAAE;IAAEC,UAAU,EAAE,QAAQ;IAAEC,GAAG,EAAER,KAAK,CAAC,CAAC;EAAE,CAAC;EAClDS,KAAK,EAAE;IACLC,eAAe,EAAE,OAAO;IACxBC,YAAY,EAAEZ,MAAM,CAACa,EAAE;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE;IACN,GAAGjB,UAAU,CAACkB,YAAY;IAC1BC,WAAW,EAAEZ,MAAM,CAACa,OAAO;IAC3BC,WAAW,EAAErB,UAAU,CAACsB,aAAa;IACrCR,YAAY,EAAEZ,MAAM,CAACa;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,EAAEzB,KAAK,CAAC,CAAC;EAC5B,CAAC;EACD0B,eAAe,EAAE;IACfC,KAAK,EAAE,OAAO;IACdC,QAAQ,EAAE1B,UAAU,CAAC2B,EAAE;IACvBC,SAAS,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACPC,SAAS,EAAE,QAAQ;IACnBC,eAAe,EAAEjC,KAAK,CAAC,CAAC,CAAC;IACzByB,iBAAiB,EAAEzB,KAAK,CAAC,CAAC,CAAC;IAC3BW,YAAY,EAAEZ,MAAM,CAACmC,IAAI;IACzBhB,WAAW,EAAErB,UAAU,CAACsB,aAAa;IACrCH,WAAW,EAAEZ,MAAM,CAAC+B,eAAe;IACnCzB,eAAe,EAAEN,MAAM,CAACgC;EAC1B,CAAC;EACDC,WAAW,EAAE;IACXV,KAAK,EAAEvB,MAAM,CAACkC,UAAU;IACxBV,QAAQ,EAAE1B,UAAU,CAAC2B,EAAE;IACvBU,UAAU,EAAEzC;EACd,CAAC;EACD0C,YAAY,EAAE;IAAE7B,YAAY,EAAEZ,MAAM,CAACmC;EAAK;AAC5C,CAAC,CAAC","ignoreList":[]}
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,GAAGd,eAAe,CAACC,UAAU,CAAC;EAE1C,oBACEI,KAAA,CAACN,IAAI;IAACa,KAAK,EAAE,CAACE,MAAM,CAACC,IAAI,EAAEH,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAN,QAAA,GAC/CC,MAAM,iBACLL,IAAA,CAACJ,IAAI;MAACa,KAAK,EAAEE,MAAM,CAACE,gBAAiB;MAAAT,QAAA,eACnCJ,IAAA,CAACJ,IAAI;QAACa,KAAK,EAAEE,MAAM,CAACG;MAAQ,CAAE;IAAC,CAC3B,CACP,EACAP,WAAW,KAAK,QAAQ,gBACvBP,IAAA,CAACL,UAAU;MACTc,KAAK,EAAEE,MAAM,CAACI,aAAc;MAC5BP,qBAAqB,EAAE,CAACG,MAAM,CAACK,OAAO,EAAER,qBAAqB,CAAE;MAC/DS,yBAAyB,EAAC,SAAS;MAAAb,QAAA,EAElCA;IAAQ,CACC,CAAC,gBAEbJ,IAAA,CAACJ,IAAI;MACHa,KAAK,EAAE,CAACE,MAAM,CAACI,aAAa,EAAEJ,MAAM,CAACK,OAAO,EAAER,qBAAqB,CAAE;MAAAJ,QAAA,EAEpEA;IAAQ,CACL,CACP,EACAE,MAAM,gBAAGN,IAAA,CAACJ,IAAI;MAACa,KAAK,EAAEE,MAAM,CAACL,MAAO;MAAAF,QAAA,EAAEE;IAAM,CAAO,CAAC,GAAG,IAAI;EAAA,CACxD,CAAC;AAEX","ignoreList":[]}
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":[]}
@@ -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,CAqG5C"}
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"}
@@ -20,6 +20,7 @@ export interface ActionMenuContentProps {
20
20
  cancelLabel?: string;
21
21
  onClose(): void;
22
22
  style?: StyleProp<ViewStyle>;
23
+ contentStyle?: StyleProp<ViewStyle>;
23
24
  testID?: string;
24
25
  }
25
26
  //# sourceMappingURL=types.d.ts.map
@@ -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":"AAgBA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,YAAY,kHA2NxB,CAAC"}
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,3 +1,4 @@
1
1
  export declare const IMAGE_UNAVAILABLE = "\u56FE\u7247\u6682\u4E0D\u53EF\u9884\u89C8";
2
2
  export declare const DELETE_LABEL = "\u5220\u9664\u5F53\u524D\u7167\u7247";
3
+ export declare const IMAGE_COUNTER_HEIGHT: number;
3
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/ImagePreview/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,+CAAY,CAAC;AAC3C,eAAO,MAAM,YAAY,yCAAW,CAAC"}
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
- paddingVertical: number;
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;AAElD,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2C1C,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,CA4BhC"}
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"}
@@ -7,6 +7,7 @@ export interface SheetProps {
7
7
  footer?: ReactNode;
8
8
  contentMode?: SheetContentMode;
9
9
  contentContainerStyle?: StyleProp<ViewStyle>;
10
+ footerStyle?: StyleProp<ViewStyle>;
10
11
  style?: StyleProp<ViewStyle>;
11
12
  testID?: string;
12
13
  }
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-design",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "description": "Unif React Native 设计系统:基础组件、主题、字体和图标",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -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
  >
@@ -23,5 +23,6 @@ export interface ActionMenuContentProps {
23
23
  cancelLabel?: string;
24
24
  onClose(): void;
25
25
  style?: StyleProp<ViewStyle>;
26
+ contentStyle?: StyleProp<ViewStyle>;
26
27
  testID?: string;
27
28
  }
@@ -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 { DELETE_LABEL, IMAGE_UNAVAILABLE } from './constants';
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
- <Carousel
153
- key={selection.carouselRevision}
154
- ref={carouselRef}
155
- data={data}
156
- defaultIndex={selection.index}
157
- loop={false}
158
- itemSize={width}
159
- style={{ width, height }}
160
- keyExtractor={(id) => id}
161
- testID={testID ? `${testID}-carousel` : undefined}
162
- onScrollStart={() => {
163
- if (
164
- mounted.current &&
165
- selection.carouselRevision === committed.current.carouselRevision
166
- ) {
167
- moving.current = true;
168
- }
169
- }}
170
- onSnapToItem={(index) => {
171
- const latest = committed.current;
172
- if (
173
- !mounted.current ||
174
- selection.carouselRevision !== latest.carouselRevision ||
175
- items.length !== latest.items.length ||
176
- items.some(
177
- (item, itemIndex) => item.id !== latest.items[itemIndex]?.id
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
- return;
181
- moving.current = false;
182
- const id = items[index]?.id;
183
- const nextIndex = latest.items.findIndex((item) => item.id === id);
184
- if (nextIndex >= 0 && nextIndex !== latest.index) {
185
- const next = { ...latest, index: nextIndex };
186
- // SDK 已完成落位;句柄同步可读,不等待 React 下一次提交。
187
- committed.current = next;
188
- setSelection(next);
189
- notifiedId.current = id;
190
- currentChange.current?.(next.items[nextIndex]!);
191
- }
192
- }}
193
- renderItem={({ item: id, index }) => {
194
- const item = items.find((candidate) => candidate.id === id)!;
195
- return (
196
- <View style={[styles.media, { width, height }]}>
197
- {item.source === undefined ? (
198
- <View style={styles.placeholder}>
199
- <Text style={styles.placeholderText}>
200
- {IMAGE_UNAVAILABLE}
201
- </Text>
202
- </View>
203
- ) : (
204
- <Thumbnail
205
- source={item.source}
206
- size={{ width, height, borderRadius: radius.xl }}
207
- resizeMode="contain"
208
- imageStyle={styles.image}
209
- accessibilityLabel={item.label ?? `图片第 ${index + 1} 张`}
210
- fallback={
211
- <View style={styles.placeholder}>
212
- <Text style={styles.placeholderText}>
213
- {IMAGE_UNAVAILABLE}
214
- </Text>
215
- </View>
216
- }
217
- />
218
- )}
219
- <View pointerEvents="none" style={styles.border} />
220
- </View>
221
- );
222
- }}
223
- />
224
- <View style={styles.counter}>
225
- <Text style={styles.counterText}>
226
- 第{selection.index + 1}/{items.length}张
227
- </Text>
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,2 +1,5 @@
1
+ import { r } from '../../../theme';
2
+
1
3
  export const IMAGE_UNAVAILABLE = '图片暂不可预览';
2
4
  export const DELETE_LABEL = '删除当前照片';
5
+ export const IMAGE_COUNTER_HEIGHT = r(26);
@@ -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
- paddingVertical: space[1],
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 ? <View style={styles.footer}>{footer}</View> : null}
41
+ {footer ? (
42
+ <View style={[styles.footer, footerStyle]}>{footer}</View>
43
+ ) : null}
41
44
  </View>
42
45
  );
43
46
  }
@@ -9,6 +9,7 @@ export interface SheetProps {
9
9
  footer?: ReactNode;
10
10
  contentMode?: SheetContentMode;
11
11
  contentContainerStyle?: StyleProp<ViewStyle>;
12
+ footerStyle?: StyleProp<ViewStyle>;
12
13
  style?: StyleProp<ViewStyle>;
13
14
  testID?: string;
14
15
  }