@unif/react-native-hms-scan 0.4.0 → 0.5.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/Scanner/DeniedOverlay.js +4 -7
- package/lib/module/Scanner/DeniedOverlay.js.map +1 -1
- package/lib/module/Scanner/ResultFocus.js +4 -7
- package/lib/module/Scanner/ResultFocus.js.map +1 -1
- package/lib/module/Scanner/Scanner.js +13 -3
- package/lib/module/Scanner/Scanner.js.map +1 -1
- package/lib/typescript/src/Scanner/DeniedOverlay.d.ts.map +1 -1
- package/lib/typescript/src/Scanner/ResultFocus.d.ts.map +1 -1
- package/lib/typescript/src/Scanner/Scanner.d.ts +8 -0
- package/lib/typescript/src/Scanner/Scanner.d.ts.map +1 -1
- package/package.json +2 -4
- package/src/Scanner/DeniedOverlay.tsx +4 -3
- package/src/Scanner/ResultFocus.tsx +6 -4
- package/src/Scanner/Scanner.tsx +20 -3
|
@@ -20,14 +20,14 @@ export function DeniedOverlay({
|
|
|
20
20
|
children: [onClose && /*#__PURE__*/_jsx(Button, {
|
|
21
21
|
label: "\u53D6\u6D88",
|
|
22
22
|
variant: "ghost",
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
block: true,
|
|
24
|
+
onPress: onClose
|
|
25
25
|
}), /*#__PURE__*/_jsx(Button, {
|
|
26
26
|
label: "\u53BB\u8BBE\u7F6E\u5F00\u542F",
|
|
27
27
|
variant: "primary",
|
|
28
28
|
leftIcon: "settings",
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
block: true,
|
|
30
|
+
onPress: onSettings
|
|
31
31
|
})]
|
|
32
32
|
})]
|
|
33
33
|
});
|
|
@@ -37,9 +37,6 @@ const styles = StyleSheet.create({
|
|
|
37
37
|
flexDirection: 'row',
|
|
38
38
|
columnGap: r(12),
|
|
39
39
|
marginTop: r(8)
|
|
40
|
-
},
|
|
41
|
-
btn: {
|
|
42
|
-
flex: 1
|
|
43
40
|
}
|
|
44
41
|
});
|
|
45
42
|
const makeStyles = c => StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","DeniedOverlay","onClose","onSettings","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","Button","Empty","useThemedStyles","r","jsx","_jsx","jsxs","_jsxs","DeniedOverlay","onClose","onSettings","s","makeStyles","style","overlay","children","icon","title","desc","styles","row","label","variant","block","onPress","leftIcon","create","flexDirection","columnGap","marginTop","c","position","top","left","right","bottom","zIndex","backgroundColor","background","alignItems","justifyContent","paddingHorizontal","rowGap"],"sourceRoot":"../../../src","sources":["Scanner/DeniedOverlay.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,MAAM,EACNC,KAAK,EACLC,eAAe,EACfC,CAAC,QAEI,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOnC;AACA,OAAO,SAASC,aAAaA,CAAC;EAAEC,OAAO;EAAEC;AAA+B,CAAC,EAAE;EACzE,MAAMC,CAAC,GAAGT,eAAe,CAACU,UAAU,CAAC;EACrC,oBACEL,KAAA,CAACR,IAAI;IAACc,KAAK,EAAEF,CAAC,CAACG,OAAQ;IAAAC,QAAA,gBACrBV,IAAA,CAACJ,KAAK;MACJe,IAAI,EAAC,mBAAmB;MACxBC,KAAK,EAAC,sCAAQ;MACdC,IAAI,EAAC;IAAiC,CACvC,CAAC,eAGFX,KAAA,CAACR,IAAI;MAACc,KAAK,EAAEM,MAAM,CAACC,GAAI;MAAAL,QAAA,GACrBN,OAAO,iBAAIJ,IAAA,CAACL,MAAM;QAACqB,KAAK,EAAC,cAAI;QAACC,OAAO,EAAC,OAAO;QAACC,KAAK;QAACC,OAAO,EAAEf;MAAQ,CAAE,CAAC,eACzEJ,IAAA,CAACL,MAAM;QACLqB,KAAK,EAAC,gCAAO;QACbC,OAAO,EAAC,SAAS;QACjBG,QAAQ,EAAC,UAAU;QACnBF,KAAK;QACLC,OAAO,EAAEd;MAAW,CACrB,CAAC;IAAA,CACE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGrB,UAAU,CAAC4B,MAAM,CAAC;EAC/BN,GAAG,EAAE;IAAEO,aAAa,EAAE,KAAK;IAAEC,SAAS,EAAEzB,CAAC,CAAC,EAAE,CAAC;IAAE0B,SAAS,EAAE1B,CAAC,CAAC,CAAC;EAAE;AACjE,CAAC,CAAC;AAEF,MAAMS,UAAU,GAAIkB,CAAc,IAChChC,UAAU,CAAC4B,MAAM,CAAC;EAChBZ,OAAO,EAAE;IACPiB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,MAAM,EAAE,EAAE;IACVC,eAAe,EAAEP,CAAC,CAACQ,UAAU;IAC7BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAEtC,CAAC,CAAC,EAAE,CAAC;IACxBuC,MAAM,EAAEvC,CAAC,CAAC,CAAC;EACb;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -88,13 +88,13 @@ export function ResultFocus({
|
|
|
88
88
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
89
89
|
label: "\u91CD\u626B",
|
|
90
90
|
variant: "secondary",
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
block: true,
|
|
92
|
+
onPress: onRescan
|
|
93
93
|
}), /*#__PURE__*/_jsx(Button, {
|
|
94
94
|
label: "\u786E\u5B9A",
|
|
95
95
|
variant: "primary",
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
block: true,
|
|
97
|
+
onPress: onConfirm
|
|
98
98
|
})]
|
|
99
99
|
})]
|
|
100
100
|
})
|
|
@@ -132,9 +132,6 @@ const styles = StyleSheet.create({
|
|
|
132
132
|
actions: {
|
|
133
133
|
flexDirection: 'row',
|
|
134
134
|
columnGap: r(10)
|
|
135
|
-
},
|
|
136
|
-
btn: {
|
|
137
|
-
flex: 1
|
|
138
135
|
}
|
|
139
136
|
});
|
|
140
137
|
const makeStyles = c => StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","Animated","StyleSheet","Text","View","Avatar","Button","Card","StatusDot","useColors","useThemedStyles","r","rf","fw","fontMono","jsx","_jsx","jsxs","_jsxs","ResultFocus","product","detectMs","bottomInset","onRescan","onConfirm","c","s","makeStyles","anim","Value","current","timing","toValue","duration","useNativeDriver","start","brandChar","brand","name","charAt","badge","toFixed","caption","priceCaption","style","styles","wrap","bottom","opacity","transform","translateY","interpolate","inputRange","outputRange","children","borderColor","primary","borderWidth","borderRadius","padding","header","status","size","spacer","barcode","body","label","variant","info","numberOfLines","spec","stockShort","sub","filter","Boolean","join","price","priceCol","actions","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","Animated","StyleSheet","Text","View","Avatar","Button","Card","StatusDot","useColors","useThemedStyles","r","rf","fw","fontMono","jsx","_jsx","jsxs","_jsxs","ResultFocus","product","detectMs","bottomInset","onRescan","onConfirm","c","s","makeStyles","anim","Value","current","timing","toValue","duration","useNativeDriver","start","brandChar","brand","name","charAt","badge","toFixed","caption","priceCaption","style","styles","wrap","bottom","opacity","transform","translateY","interpolate","inputRange","outputRange","children","borderColor","primary","borderWidth","borderRadius","padding","header","status","size","spacer","barcode","body","label","variant","info","numberOfLines","spec","stockShort","sub","filter","Boolean","join","price","priceCol","actions","block","onPress","create","position","left","right","zIndex","flexDirection","alignItems","columnGap","marginBottom","flex","minWidth","fontSize","fontWeight","semi","color","foreground","foregroundSubtle","fontFamily","lineHeight","foregroundMuted","marginTop","heavy"],"sourceRoot":"../../../src","sources":["Scanner/ResultFocus.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,8 @@ import { ScanToolbar } from "./ScanToolbar.js";
|
|
|
13
13
|
import { ResultFocus } from "./ResultFocus.js";
|
|
14
14
|
import { ResultFail } from "./ResultFail.js";
|
|
15
15
|
import { DeniedOverlay } from "./DeniedOverlay.js";
|
|
16
|
+
|
|
17
|
+
// 'done':autoConfirm 自动回调后的终态——相机暂停、不出卡片、不自动重扫(宿主通常已导航离开)。
|
|
16
18
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
19
|
const VF_SIZE = 256;
|
|
18
20
|
const DEFAULT_HINT = '将条码 / 二维码放入框内,自动扫描';
|
|
@@ -38,6 +40,7 @@ function ScannerInner({
|
|
|
38
40
|
onClose,
|
|
39
41
|
resolveProduct,
|
|
40
42
|
onConfirm,
|
|
43
|
+
autoConfirm = false,
|
|
41
44
|
pickImage
|
|
42
45
|
}) {
|
|
43
46
|
const [phase, setPhase] = useState('init');
|
|
@@ -84,16 +87,23 @@ function ScannerInner({
|
|
|
84
87
|
setPhase('fail');
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
87
|
-
|
|
90
|
+
const p = {
|
|
88
91
|
barcode: result.value,
|
|
89
92
|
...resolved
|
|
90
|
-
}
|
|
93
|
+
};
|
|
94
|
+
if (autoConfirm) {
|
|
95
|
+
// 跳过结果卡:直接回调,进 'done' 终态(相机暂停、不自动重扫)。
|
|
96
|
+
onConfirm?.(p, result);
|
|
97
|
+
setPhase('done');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
setProduct(p);
|
|
91
101
|
setDetectMs(Date.now() - detectStartRef.current);
|
|
92
102
|
setPhase('success');
|
|
93
103
|
} catch {
|
|
94
104
|
if (mountedRef.current) setPhase('fail');
|
|
95
105
|
}
|
|
96
|
-
}, [resolveProduct]);
|
|
106
|
+
}, [resolveProduct, autoConfirm, onConfirm]);
|
|
97
107
|
const onCameraResult = useCallback(results => {
|
|
98
108
|
if (phase !== 'scan' || handlingRef.current) return;
|
|
99
109
|
const first = results[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","useState","Linking","StyleSheet","View","ThemeProvider","ToastHost","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","scanChrome","Viewfinder","ScanTopBar","ScanToolbar","ResultFocus","ResultFail","DeniedOverlay","jsx","_jsx","jsxs","_jsxs","VF_SIZE","DEFAULT_HINT","Scanner","props","children","ScannerInner","title","formats","hintText","topInset","bottomInset","showTorch","onClose","resolveProduct","onConfirm","pickImage","phase","setPhase","torch","setTorch","product","setProduct","detectMs","setDetectMs","handlingRef","detectStartRef","lastResultRef","mountedRef","current","status","reset","finalize","result","resolved","name","value","barcode","Date","now","onCameraResult","results","first","onScanError","error","code","onAlbum","uri","undefined","onConfirmPress","r","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","Linking","StyleSheet","View","ThemeProvider","ToastHost","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","scanChrome","Viewfinder","ScanTopBar","ScanToolbar","ResultFocus","ResultFail","DeniedOverlay","jsx","_jsx","jsxs","_jsxs","VF_SIZE","DEFAULT_HINT","Scanner","props","children","ScannerInner","title","formats","hintText","topInset","bottomInset","showTorch","onClose","resolveProduct","onConfirm","autoConfirm","pickImage","phase","setPhase","torch","setTorch","product","setProduct","detectMs","setDetectMs","handlingRef","detectStartRef","lastResultRef","mountedRef","current","status","reset","finalize","result","resolved","name","value","p","barcode","Date","now","onCameraResult","results","first","onScanError","error","code","onAlbum","uri","undefined","onConfirmPress","r","showChrome","style","styles","root","absoluteFill","paused","onScanResult","size","detecting","flash","onFlash","t","onRescan","onSettings","openSettings","create","flex","backgroundColor","cameraBg"],"sourceRoot":"../../../src","sources":["Scanner/Scanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAuBxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultFocus.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFocus.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uBAAuB;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAGD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ResultFocus.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFocus.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uBAAuB;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAGD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAmElB"}
|
|
@@ -21,6 +21,14 @@ export interface ScannerProps {
|
|
|
21
21
|
resolveProduct?: (result: ScanResult) => ScanProduct | null | undefined | Promise<ScanProduct | null | undefined>;
|
|
22
22
|
/** 用户点"确认":把结果带回上一级(宿主通常在此导航返回)。 */
|
|
23
23
|
onConfirm?: (product: ScanProduct, result: ScanResult) => void;
|
|
24
|
+
/**
|
|
25
|
+
* 自动确认:扫到并解析成功后**不显示结果卡**,直接触发 `onConfirm(product, result)`。
|
|
26
|
+
* 默认 `false`(显示结果卡,由用户点"确定")。
|
|
27
|
+
* 适合"扫到即用、不需要二次确认"的场景。回调后相机暂停、不自动重扫——宿主通常在
|
|
28
|
+
* `onConfirm` 里导航离开;若需再扫由宿主控制(如重新挂载 `<Scanner>`)。
|
|
29
|
+
* 注:未识别(`resolveProduct` 返回 `null`/抛错)仍走失败态可重扫,不会误触发。
|
|
30
|
+
*/
|
|
31
|
+
autoConfirm?: boolean;
|
|
24
32
|
/**
|
|
25
33
|
* 点"相册":宿主用自己的图片选择器选图并返回本地 uri(取消则返回 null)。
|
|
26
34
|
* 库不内置图片选择器(遵循 RN 惯例):**传了才显示相册按钮**,不传则隐藏。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Scanner.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Scanner.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAevE,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,UAAU,KACf,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9E,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/D;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAO1C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unif/react-native-hms-scan",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "华为 HMS 统一扫码服务 React Native bridge:定制视图扫码 + 图片识别 (Scan SDK-Plus / ScanKitFrameWork,@unif 私有)",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -72,7 +72,6 @@
|
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@commitlint/config-conventional": "^20.5.0",
|
|
74
74
|
"@eslint/js": "^9.39.0",
|
|
75
|
-
"@gorhom/bottom-sheet": "^5.2.14",
|
|
76
75
|
"@react-native/babel-preset": "0.85.3",
|
|
77
76
|
"@react-native/eslint-config": "0.85.0",
|
|
78
77
|
"@react-native/jest-preset": "0.85.3",
|
|
@@ -82,7 +81,7 @@
|
|
|
82
81
|
"@types/jest": "^29.5.0",
|
|
83
82
|
"@types/react": "^19.2.0",
|
|
84
83
|
"@types/react-test-renderer": "^19",
|
|
85
|
-
"@unif/react-native-design": "0.8.
|
|
84
|
+
"@unif/react-native-design": "0.8.1",
|
|
86
85
|
"commitlint": "^20.5.0",
|
|
87
86
|
"del-cli": "^7.0.0",
|
|
88
87
|
"eslint": "^9.39.4",
|
|
@@ -106,7 +105,6 @@
|
|
|
106
105
|
"typescript-eslint": "^8.20.0"
|
|
107
106
|
},
|
|
108
107
|
"peerDependencies": {
|
|
109
|
-
"@gorhom/bottom-sheet": ">=5",
|
|
110
108
|
"@sbaiahmed1/react-native-blur": ">=4",
|
|
111
109
|
"@unif/react-native-design": ">=0.8.0",
|
|
112
110
|
"react": ">=19.0.0",
|
|
@@ -22,14 +22,16 @@ export function DeniedOverlay({ onClose, onSettings }: DeniedOverlayProps) {
|
|
|
22
22
|
title="需要相机权限"
|
|
23
23
|
desc="开启相机后,才能扫描商品条码与门店二维码。请前往系统设置授权。"
|
|
24
24
|
/>
|
|
25
|
+
{/* block(flexGrow:1)而非 flex:1:ButtonBase 非 block 时硬编码 flexGrow:0,
|
|
26
|
+
会压过 style 里的 flex:1 → 按钮塌成 padding 宽、label 被裁(同 ResultFocus)。 */}
|
|
25
27
|
<View style={styles.row}>
|
|
26
|
-
{onClose && <Button label="取消" variant="ghost" onPress={onClose}
|
|
28
|
+
{onClose && <Button label="取消" variant="ghost" block onPress={onClose} />}
|
|
27
29
|
<Button
|
|
28
30
|
label="去设置开启"
|
|
29
31
|
variant="primary"
|
|
30
32
|
leftIcon="settings"
|
|
33
|
+
block
|
|
31
34
|
onPress={onSettings}
|
|
32
|
-
style={styles.btn}
|
|
33
35
|
/>
|
|
34
36
|
</View>
|
|
35
37
|
</View>
|
|
@@ -38,7 +40,6 @@ export function DeniedOverlay({ onClose, onSettings }: DeniedOverlayProps) {
|
|
|
38
40
|
|
|
39
41
|
const styles = StyleSheet.create({
|
|
40
42
|
row: { flexDirection: 'row', columnGap: r(12), marginTop: r(8) },
|
|
41
|
-
btn: { flex: 1 },
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
const makeStyles = (c: ColorTokens) =>
|
|
@@ -88,10 +88,13 @@ export function ResultFocus({
|
|
|
88
88
|
)}
|
|
89
89
|
</View>
|
|
90
90
|
|
|
91
|
-
{/* 操作:重扫(回取景)·
|
|
91
|
+
{/* 操作:重扫(回取景)· 确定(确认带回)。
|
|
92
|
+
block(flexGrow:1)而非 style={{flex:1}}:ButtonBase 非 block 时硬编码 flexGrow:0,
|
|
93
|
+
Yoga 里显式 flexGrow:0 压过 flex:1 → flex:1 撑不开按钮、且把 flexBasis 收成 0,
|
|
94
|
+
按钮塌成 padding 宽把 label 裁没。两个 block 按钮在 row 里均分(同 design ConfirmHost)。 */}
|
|
92
95
|
<View style={styles.actions}>
|
|
93
|
-
<Button label="重扫" variant="secondary" onPress={onRescan}
|
|
94
|
-
<Button label="确定" variant="primary" onPress={onConfirm}
|
|
96
|
+
<Button label="重扫" variant="secondary" block onPress={onRescan} />
|
|
97
|
+
<Button label="确定" variant="primary" block onPress={onConfirm} />
|
|
95
98
|
</View>
|
|
96
99
|
</Card>
|
|
97
100
|
</Animated.View>
|
|
@@ -106,7 +109,6 @@ const styles = StyleSheet.create({
|
|
|
106
109
|
info: { flex: 1, minWidth: 0 },
|
|
107
110
|
priceCol: { alignItems: 'flex-end' },
|
|
108
111
|
actions: { flexDirection: 'row', columnGap: r(10) },
|
|
109
|
-
btn: { flex: 1 },
|
|
110
112
|
});
|
|
111
113
|
|
|
112
114
|
const makeStyles = (c: ReturnType<typeof useColors>) =>
|
package/src/Scanner/Scanner.tsx
CHANGED
|
@@ -16,7 +16,8 @@ import { ResultFocus } from './ResultFocus';
|
|
|
16
16
|
import { ResultFail } from './ResultFail';
|
|
17
17
|
import { DeniedOverlay } from './DeniedOverlay';
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// 'done':autoConfirm 自动回调后的终态——相机暂停、不出卡片、不自动重扫(宿主通常已导航离开)。
|
|
20
|
+
type Phase = 'init' | 'scan' | 'detecting' | 'success' | 'fail' | 'denied' | 'done';
|
|
20
21
|
|
|
21
22
|
const VF_SIZE = 256;
|
|
22
23
|
const DEFAULT_HINT = '将条码 / 二维码放入框内,自动扫描';
|
|
@@ -45,6 +46,14 @@ export interface ScannerProps {
|
|
|
45
46
|
) => ScanProduct | null | undefined | Promise<ScanProduct | null | undefined>;
|
|
46
47
|
/** 用户点"确认":把结果带回上一级(宿主通常在此导航返回)。 */
|
|
47
48
|
onConfirm?: (product: ScanProduct, result: ScanResult) => void;
|
|
49
|
+
/**
|
|
50
|
+
* 自动确认:扫到并解析成功后**不显示结果卡**,直接触发 `onConfirm(product, result)`。
|
|
51
|
+
* 默认 `false`(显示结果卡,由用户点"确定")。
|
|
52
|
+
* 适合"扫到即用、不需要二次确认"的场景。回调后相机暂停、不自动重扫——宿主通常在
|
|
53
|
+
* `onConfirm` 里导航离开;若需再扫由宿主控制(如重新挂载 `<Scanner>`)。
|
|
54
|
+
* 注:未识别(`resolveProduct` 返回 `null`/抛错)仍走失败态可重扫,不会误触发。
|
|
55
|
+
*/
|
|
56
|
+
autoConfirm?: boolean;
|
|
48
57
|
/**
|
|
49
58
|
* 点"相册":宿主用自己的图片选择器选图并返回本地 uri(取消则返回 null)。
|
|
50
59
|
* 库不内置图片选择器(遵循 RN 惯例):**传了才显示相册按钮**,不传则隐藏。
|
|
@@ -76,6 +85,7 @@ function ScannerInner({
|
|
|
76
85
|
onClose,
|
|
77
86
|
resolveProduct,
|
|
78
87
|
onConfirm,
|
|
88
|
+
autoConfirm = false,
|
|
79
89
|
pickImage,
|
|
80
90
|
}: ScannerProps) {
|
|
81
91
|
const [phase, setPhase] = useState<Phase>('init');
|
|
@@ -126,14 +136,21 @@ function ScannerInner({
|
|
|
126
136
|
setPhase('fail');
|
|
127
137
|
return;
|
|
128
138
|
}
|
|
129
|
-
|
|
139
|
+
const p: ScanProduct = { barcode: result.value, ...resolved };
|
|
140
|
+
if (autoConfirm) {
|
|
141
|
+
// 跳过结果卡:直接回调,进 'done' 终态(相机暂停、不自动重扫)。
|
|
142
|
+
onConfirm?.(p, result);
|
|
143
|
+
setPhase('done');
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
setProduct(p);
|
|
130
147
|
setDetectMs(Date.now() - detectStartRef.current);
|
|
131
148
|
setPhase('success');
|
|
132
149
|
} catch {
|
|
133
150
|
if (mountedRef.current) setPhase('fail');
|
|
134
151
|
}
|
|
135
152
|
},
|
|
136
|
-
[resolveProduct]
|
|
153
|
+
[resolveProduct, autoConfirm, onConfirm]
|
|
137
154
|
);
|
|
138
155
|
|
|
139
156
|
const onCameraResult = useCallback(
|