@cniot/android-pda-components 0.2.20 → 0.2.21
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/README.md +4 -21
- package/build/assets/index.51a8714a.css +1 -0
- package/build/assets/{index.66cd7994.js → index.b428d9a3.js} +16 -16
- package/build/assets/vendor.999402d8.js +40 -0
- package/build/index.html +3 -3
- package/package.json +1 -1
- package/packages/AppList/doc.jsx +138 -0
- package/packages/AppList/index.jsx +33 -0
- package/packages/AppList/index.less +52 -0
- package/packages/BaseLayout/BarcodeScan.jsx +88 -0
- package/packages/BaseLayout/BaseLayoutContainer.jsx +208 -0
- package/packages/BaseLayout/RfidOnce.jsx +106 -0
- package/packages/BaseLayout/RfidScan.jsx +118 -0
- package/packages/BaseLayout/doc.jsx +177 -0
- package/packages/BaseLayout/index.jsx +52 -0
- package/packages/BaseLayout/index.less +47 -0
- package/packages/Button/doc.jsx +62 -0
- package/packages/Button/index.jsx +27 -0
- package/packages/Button/index.less +62 -0
- package/packages/Confirm/doc.jsx +147 -0
- package/packages/Confirm/index.jsx +71 -0
- package/packages/Confirm/index.less +55 -0
- package/packages/Header/doc.jsx +171 -0
- package/packages/Header/index.jsx +191 -0
- package/packages/Header/index.less +71 -0
- package/packages/InfoCard/doc.jsx +244 -0
- package/packages/InfoCard/index.jsx +67 -0
- package/packages/InfoCard/index.less +111 -0
- package/packages/List/doc.jsx +89 -0
- package/packages/List/index.jsx +54 -0
- package/packages/List/index.less +43 -0
- package/packages/Overlay/doc.jsx +103 -0
- package/packages/Overlay/index.jsx +42 -0
- package/packages/Overlay/index.less +28 -0
- package/packages/PdaActionSheet/doc.jsx +193 -0
- package/packages/PdaActionSheet/index.jsx +44 -0
- package/packages/PdaActionSheet/index.less +65 -0
- package/packages/PdaDistanceCard/doc.jsx +62 -0
- package/packages/PdaDistanceCard/index.jsx +35 -0
- package/packages/PdaDistanceCard/index.less +42 -0
- package/packages/PdaFinishCard/doc.jsx +111 -0
- package/packages/PdaFinishCard/index.jsx +62 -0
- package/packages/PdaFinishCard/index.less +62 -0
- package/packages/PdaInfiniteScroll/doc.jsx +121 -0
- package/packages/PdaInfiniteScroll/index.jsx +114 -0
- package/packages/PdaInfiniteScroll/index.less +12 -0
- package/packages/PdaInfiniteScroll/utils.jsx +25 -0
- package/packages/PdaSteps/PdaStep/index.jsx +38 -0
- package/packages/PdaSteps/PdaStep/index.less +70 -0
- package/packages/PdaSteps/PdaSteps/index.jsx +33 -0
- package/packages/PdaSteps/PdaSteps/index.less +0 -0
- package/packages/PdaSteps/doc.jsx +131 -0
- package/packages/PdaSteps/index.jsx +5 -0
- package/packages/PdaTitle/doc.jsx +102 -0
- package/packages/PdaTitle/index.jsx +51 -0
- package/packages/Presentation/doc.jsx +72 -0
- package/packages/Presentation/index.jsx +25 -0
- package/packages/Presentation/index.less +31 -0
- package/packages/SelectCard/doc.jsx +57 -0
- package/packages/SelectCard/index.jsx +13 -0
- package/packages/SelectCard/index.less +30 -0
- package/packages/SimpleCard/doc.jsx +59 -0
- package/packages/SimpleCard/index.jsx +13 -0
- package/packages/SimpleCard/index.less +38 -0
- package/packages/SimpleCardBlock/doc.jsx +77 -0
- package/packages/SimpleCardBlock/index.jsx +43 -0
- package/packages/SimpleCardBlock/index.less +26 -0
- package/packages/SubCard/doc.jsx +63 -0
- package/packages/SubCard/index.jsx +28 -0
- package/packages/SubCard/index.less +64 -0
- package/packages/Tag/doc.jsx +47 -0
- package/packages/Tag/index.jsx +12 -0
- package/packages/Tag/index.less +22 -0
- package/packages/TaskCard/doc.jsx +151 -0
- package/packages/TaskCard/index.jsx +65 -0
- package/packages/TaskCard/index.less +101 -0
- package/packages/Toast/doc.jsx +112 -0
- package/packages/Toast/index.jsx +7 -0
- package/packages/Toast/index.less +23 -0
- package/packages/Toast/methods.jsx +77 -0
- package/packages/Toast/toast.jsx +96 -0
- package/packages/WakeKeyborard/doc.jsx +170 -0
- package/packages/WakeKeyborard/index.jsx +61 -0
- package/packages/WakeKeyborard/index.less +55 -0
- package/packages/WakeKeyborard/keyborard.jsx +61 -0
- package/packages/doc.jsx +19 -0
- package/packages/global.less +7 -0
- package/packages/index.jsx +60 -0
- package/packages/index.less +3 -0
- package/packages/pageflow-system-pages/alert/doc.jsx +70 -0
- package/packages/pageflow-system-pages/alert/index.jsx +22 -0
- package/packages/pageflow-system-pages/confirm/doc.jsx +118 -0
- package/packages/pageflow-system-pages/confirm/index.jsx +31 -0
- package/packages/pageflow-system-pages/debug/index.jsx +27 -0
- package/packages/pageflow-system-pages/debug/index.less +5 -0
- package/packages/pageflow-system-pages/index.jsx +38 -0
- package/packages/pageflow-system-pages/loading/index.jsx +37 -0
- package/packages/pageflow-system-pages/not-found/index.jsx +12 -0
- package/packages/pageflow-system-pages/not-found/index.less +26 -0
- package/packages/pageflow-system-pages/prompt/doc.jsx +95 -0
- package/packages/pageflow-system-pages/prompt/index.jsx +43 -0
- package/packages/pageflow-system-pages/prompt/index.less +44 -0
- package/packages/pageflow-system-pages/start/index.jsx +28 -0
- package/packages/pageflow-system-pages/start/index.less +12 -0
- package/packages/pageflow-system-pages/toast/doc.jsx +76 -0
- package/packages/pageflow-system-pages/toast/index.jsx +42 -0
- package/packages/utils/index.js +56 -0
- package/packages/variable.less +4 -0
- package/build/assets/index.b8d6d64c.css +0 -1
- package/build/assets/vendor.5080796b.js +0 -40
- package/es/index.cjs.js +0 -7
- package/es/index.es.js +0 -2194
- package/es/style.css +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
2
|
+
// import OPInput from "../OPInput";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
// import classNames from "classnames";
|
|
5
|
+
import Button from '../Button'
|
|
6
|
+
import Keyborard from "./keyborard";
|
|
7
|
+
|
|
8
|
+
const blankFunc = () => { };
|
|
9
|
+
export default function WakeKeyborard(props) {
|
|
10
|
+
const [inputVisible, setInputVisible] = useState(props.autoWakeup || false);
|
|
11
|
+
// const inputRef = useRef(null);
|
|
12
|
+
|
|
13
|
+
// const { label = "查询", onWakeKeyboard = blankFunc, onClick = blankFunc, onHidden = blankFunc } = props;
|
|
14
|
+
const { onClick = blankFunc, onHidden = blankFunc, ...keyborardProps } = props;
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<div className="wakekeyborard">
|
|
18
|
+
{
|
|
19
|
+
inputVisible ? (
|
|
20
|
+
<Keyborard
|
|
21
|
+
// label={label}
|
|
22
|
+
onClick={
|
|
23
|
+
(v, e) => {
|
|
24
|
+
onClick(v);
|
|
25
|
+
setInputVisible(!inputVisible);
|
|
26
|
+
// onHidden(true);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onHidden={
|
|
30
|
+
s => {
|
|
31
|
+
setInputVisible(false);
|
|
32
|
+
onHidden(s);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
{...keyborardProps}
|
|
36
|
+
/>
|
|
37
|
+
) : null
|
|
38
|
+
}
|
|
39
|
+
{
|
|
40
|
+
!inputVisible ? (
|
|
41
|
+
<div
|
|
42
|
+
className="wakekeyborard-icon"
|
|
43
|
+
onClick={
|
|
44
|
+
e => {
|
|
45
|
+
// this.setState({ inputVisible: !inputVisible });
|
|
46
|
+
setInputVisible(!inputVisible);
|
|
47
|
+
// requestAnimationFrame(() => {
|
|
48
|
+
// onWakeKeyboard();
|
|
49
|
+
// })
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
></div>
|
|
53
|
+
) : null
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
</div>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
WakeKeyborard.Keyborard = Keyborard;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.wakekeyborard {
|
|
2
|
+
.wakekeyborard-icon {
|
|
3
|
+
width: 80px;
|
|
4
|
+
height: 80px;
|
|
5
|
+
background-image: url(https://img.alicdn.com/imgextra/i3/O1CN01kxYh3U25Xzr9nAcYp_!!6000000007537-2-tps-240-240.png);
|
|
6
|
+
background-size: 100%;
|
|
7
|
+
|
|
8
|
+
position: fixed;
|
|
9
|
+
right: 24px;
|
|
10
|
+
bottom: 24px;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.wakekeyborard-overlay {
|
|
15
|
+
position: fixed;
|
|
16
|
+
top: 0;
|
|
17
|
+
right: 0;
|
|
18
|
+
left: 0;
|
|
19
|
+
bottom: 0;
|
|
20
|
+
background-color: rgba(222, 222, 222, 0.2);
|
|
21
|
+
}
|
|
22
|
+
.wakekeyborard-inputbox {
|
|
23
|
+
width: 100%;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: row;
|
|
26
|
+
height: 85px;
|
|
27
|
+
|
|
28
|
+
position: absolute;
|
|
29
|
+
bottom: 0;
|
|
30
|
+
left: 0;
|
|
31
|
+
right: 0;
|
|
32
|
+
|
|
33
|
+
input {
|
|
34
|
+
// width: 330px;
|
|
35
|
+
width:100%;
|
|
36
|
+
border-radius: 16px 0 0 0 ;
|
|
37
|
+
border: 0;
|
|
38
|
+
font-size: 42px;
|
|
39
|
+
background-color: white;
|
|
40
|
+
padding-left: 20px;
|
|
41
|
+
&:focus {
|
|
42
|
+
outline: none;
|
|
43
|
+
}
|
|
44
|
+
&::-webkit-input-placeholder {
|
|
45
|
+
color: rgb(209, 209, 214);
|
|
46
|
+
font-size: 32px;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
button {
|
|
50
|
+
width: 150px;
|
|
51
|
+
border: 0;
|
|
52
|
+
border-radius: 0 16px 0 0;
|
|
53
|
+
background-color: white;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
2
|
+
import "./index.less";
|
|
3
|
+
import Button from '../Button'
|
|
4
|
+
|
|
5
|
+
const blankFunc = () => { };
|
|
6
|
+
export default function Keyborard(props) {
|
|
7
|
+
const { label = "查询", onWakeKeyboard = blankFunc, onClick = blankFunc, onHidden = blankFunc, type='tel', placeholder='请输入' } = props;
|
|
8
|
+
const inputRef = useRef(null);
|
|
9
|
+
const [visible, setVisible] = useState(true);
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const handleKeyUp = e => {
|
|
13
|
+
const { code, keyCode, key } = e;
|
|
14
|
+
if (code === 'Enter') {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
onClick(inputRef.current.value, e);
|
|
17
|
+
onHidden(true);
|
|
18
|
+
setVisible(false);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
requestAnimationFrame(() => {
|
|
23
|
+
inputRef.current.focus();
|
|
24
|
+
onWakeKeyboard();
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
document.addEventListener('keyup', handleKeyUp);
|
|
28
|
+
return () => {
|
|
29
|
+
document.removeEventListener('keyup', handleKeyUp);
|
|
30
|
+
}
|
|
31
|
+
}, [])
|
|
32
|
+
|
|
33
|
+
if(!visible) return null;
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
className="wakekeyborard-overlay"
|
|
37
|
+
onClick={e => {
|
|
38
|
+
if (e.target.className && e.target.className.includes('wakekeyborard-overlay')) {
|
|
39
|
+
onHidden(false);
|
|
40
|
+
setVisible(false);
|
|
41
|
+
}
|
|
42
|
+
}}
|
|
43
|
+
>
|
|
44
|
+
<div className="wakekeyborard-inputbox">
|
|
45
|
+
<input
|
|
46
|
+
ref={inputRef}
|
|
47
|
+
type={type}
|
|
48
|
+
placeholder={placeholder}
|
|
49
|
+
/>
|
|
50
|
+
<Button
|
|
51
|
+
type="cutout"
|
|
52
|
+
onClick={ e => {
|
|
53
|
+
onClick(inputRef.current.value, e);
|
|
54
|
+
onHidden(true);
|
|
55
|
+
setVisible(false);
|
|
56
|
+
}}
|
|
57
|
+
>{label}</Button>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
)
|
|
61
|
+
}
|
package/packages/doc.jsx
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
// import Button from "./index";
|
|
3
|
+
export default function () {
|
|
4
|
+
return (
|
|
5
|
+
<div>
|
|
6
|
+
<h1>快速开始</h1>
|
|
7
|
+
|
|
8
|
+
<code className="code">{`
|
|
9
|
+
|
|
10
|
+
tnpm install @cniot/android-pda-components --save
|
|
11
|
+
|
|
12
|
+
import { Button } from '@cniot/android-pda-components';
|
|
13
|
+
|
|
14
|
+
import '@cniot/android-pda-components/es/style.css';
|
|
15
|
+
|
|
16
|
+
`}</code>
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import './global.less';
|
|
2
|
+
|
|
3
|
+
import Title from "./PdaTitle";
|
|
4
|
+
import Header from "./Header";
|
|
5
|
+
import Button from "./Button";
|
|
6
|
+
import InfoCard from "./InfoCard";
|
|
7
|
+
import TaskCard from "./TaskCard";
|
|
8
|
+
import Confirm from './Confirm';
|
|
9
|
+
import Toast from './Toast';
|
|
10
|
+
import Overlay from "./Overlay";
|
|
11
|
+
import PageFlowSystemPages from './pageflow-system-pages/index.jsx';
|
|
12
|
+
import Presentation from "./Presentation";
|
|
13
|
+
import List from "./List";
|
|
14
|
+
import BaseLayout from "./BaseLayout";
|
|
15
|
+
import WakeKeyborard from "./WakeKeyborard";
|
|
16
|
+
import Keyborard from './WakeKeyborard/keyborard';
|
|
17
|
+
|
|
18
|
+
import Steps from "./PdaSteps";
|
|
19
|
+
import FinishCard from "./PdaFinishCard";
|
|
20
|
+
import DistanceCard from "./PdaDistanceCard";
|
|
21
|
+
import SubCard from './SubCard';
|
|
22
|
+
import SelectCard from './SelectCard';
|
|
23
|
+
import AppList from './AppList';
|
|
24
|
+
import InfiniteScroll from './PdaInfiniteScroll';
|
|
25
|
+
import ActionSheet from './PdaActionSheet';
|
|
26
|
+
import Tag from './Tag';
|
|
27
|
+
import SimpleCard from './SimpleCard';
|
|
28
|
+
import SimpleCardBlock from './SimpleCardBlock';
|
|
29
|
+
|
|
30
|
+
// 兼容之前 ListItem 卡片命名逻辑
|
|
31
|
+
const ListItem = TaskCard;
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
Title,
|
|
35
|
+
Header,
|
|
36
|
+
Button,
|
|
37
|
+
InfoCard,
|
|
38
|
+
Steps,
|
|
39
|
+
ListItem,
|
|
40
|
+
TaskCard,
|
|
41
|
+
Confirm,
|
|
42
|
+
Toast,
|
|
43
|
+
Overlay,
|
|
44
|
+
DistanceCard,
|
|
45
|
+
PageFlowSystemPages,
|
|
46
|
+
Presentation,
|
|
47
|
+
List,
|
|
48
|
+
WakeKeyborard,
|
|
49
|
+
Keyborard,
|
|
50
|
+
SubCard,
|
|
51
|
+
SelectCard,
|
|
52
|
+
FinishCard,
|
|
53
|
+
InfiniteScroll,
|
|
54
|
+
BaseLayout,
|
|
55
|
+
ActionSheet,
|
|
56
|
+
AppList,
|
|
57
|
+
Tag,
|
|
58
|
+
SimpleCard,
|
|
59
|
+
SimpleCardBlock,
|
|
60
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import SystemAlert from "./index";
|
|
3
|
+
|
|
4
|
+
import service from '../../../mock/service';
|
|
5
|
+
export default function () {
|
|
6
|
+
return (
|
|
7
|
+
<div>
|
|
8
|
+
<h1>/system/alert</h1>
|
|
9
|
+
<p>弹出一个警告窗,用户必须点击确认才能继续</p>
|
|
10
|
+
<h2>示例</h2>
|
|
11
|
+
<code className="code">
|
|
12
|
+
{
|
|
13
|
+
`
|
|
14
|
+
// gs 代码如下
|
|
15
|
+
pageFlow.alert({
|
|
16
|
+
title: '111',
|
|
17
|
+
message: '2222',
|
|
18
|
+
okText: "确认"
|
|
19
|
+
})
|
|
20
|
+
`
|
|
21
|
+
}
|
|
22
|
+
</code>
|
|
23
|
+
<h2>页面效果</h2>
|
|
24
|
+
<div className="light-block light-block-overlay">
|
|
25
|
+
<SystemAlert service={service} data={{
|
|
26
|
+
title: '111',
|
|
27
|
+
message: '2222',
|
|
28
|
+
okText: "确认"
|
|
29
|
+
}} ></SystemAlert>
|
|
30
|
+
</div>
|
|
31
|
+
<h2>Alert</h2>
|
|
32
|
+
<table className="pure-table pure-table-bordered">
|
|
33
|
+
<thead>
|
|
34
|
+
<tr>
|
|
35
|
+
<th>属性</th>
|
|
36
|
+
<th>说明</th>
|
|
37
|
+
<th>类型</th>
|
|
38
|
+
<th>默认值</th>
|
|
39
|
+
</tr>
|
|
40
|
+
</thead>
|
|
41
|
+
<tbody>
|
|
42
|
+
<tr>
|
|
43
|
+
<td>title</td>
|
|
44
|
+
<td>标题</td>
|
|
45
|
+
<td>string</td>
|
|
46
|
+
<td></td>
|
|
47
|
+
</tr>
|
|
48
|
+
<tr>
|
|
49
|
+
<td>message</td>
|
|
50
|
+
<td>信息</td>
|
|
51
|
+
<td>string</td>
|
|
52
|
+
<td></td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>okText</td>
|
|
56
|
+
<td>确认文本</td>
|
|
57
|
+
<td>string</td>
|
|
58
|
+
<td></td>
|
|
59
|
+
</tr>
|
|
60
|
+
<tr>
|
|
61
|
+
<td>okDataClick</td>
|
|
62
|
+
<td>ok 按钮 arms 监控</td>
|
|
63
|
+
<td>string</td>
|
|
64
|
+
<td></td>
|
|
65
|
+
</tr>
|
|
66
|
+
</tbody>
|
|
67
|
+
</table>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Confirm from '../../Confirm';
|
|
3
|
+
import Overlay from "../../Overlay";
|
|
4
|
+
// import "./index.less";
|
|
5
|
+
|
|
6
|
+
export default function Alert(props) {
|
|
7
|
+
const { service, data = {} } = props;
|
|
8
|
+
// const { title = "title", message = "message", okText = "okText", cancelText="" } = data;
|
|
9
|
+
const onClickCallback = React.useCallback(
|
|
10
|
+
function () {
|
|
11
|
+
service.onNext(true);
|
|
12
|
+
},
|
|
13
|
+
[service]
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Overlay verticalPosition="bottom">
|
|
18
|
+
{/* <Confirm title={title} message={message} okText={okText} cancelText={cancelText} onClick={onClickCallback} ></Confirm> */}
|
|
19
|
+
<Confirm {...data} onClick={onClickCallback} ></Confirm>
|
|
20
|
+
</Overlay>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import SystemConfirm from "./index";
|
|
3
|
+
|
|
4
|
+
import service from '../../../mock/service';
|
|
5
|
+
export default function () {
|
|
6
|
+
return (
|
|
7
|
+
<div>
|
|
8
|
+
<h1>/system/confirm</h1>
|
|
9
|
+
<p>弹出一个确认框,用户必须点击确认才能继续</p>
|
|
10
|
+
<h2>示例</h2>
|
|
11
|
+
<code className="code">
|
|
12
|
+
{
|
|
13
|
+
`
|
|
14
|
+
// gs 代码如下
|
|
15
|
+
pageFlow.confirm({
|
|
16
|
+
title: '111',
|
|
17
|
+
message: '2222',
|
|
18
|
+
okText: "确认",
|
|
19
|
+
cancelText:"取消"
|
|
20
|
+
})
|
|
21
|
+
// 如果 message 需要多行显示,使用 subMessage 方式
|
|
22
|
+
pageFlow.confirm({
|
|
23
|
+
title: '111',
|
|
24
|
+
subMessage: [
|
|
25
|
+
{label: 'title1', content: 'content1'},
|
|
26
|
+
{label: 'title2', content: 'content2'},
|
|
27
|
+
{label: 'title3', content: 'content3'},
|
|
28
|
+
],
|
|
29
|
+
okText: "确认",
|
|
30
|
+
cancelText:"取消"
|
|
31
|
+
})
|
|
32
|
+
`
|
|
33
|
+
}
|
|
34
|
+
</code>
|
|
35
|
+
<h2>页面效果</h2>
|
|
36
|
+
<div className="light-block light-block-overlay">
|
|
37
|
+
<SystemConfirm service={service} data={{
|
|
38
|
+
title: '111',
|
|
39
|
+
message: <span>栈板码:<span style={{color: '#0091EA'}}>111</span><br/><span>箱码:222</span></span>,
|
|
40
|
+
okText: "确认",
|
|
41
|
+
cancelText:"取消"
|
|
42
|
+
}} ></SystemConfirm>
|
|
43
|
+
</div>
|
|
44
|
+
<h2>Confirm</h2>
|
|
45
|
+
<table className="pure-table pure-table-bordered">
|
|
46
|
+
<thead>
|
|
47
|
+
<tr>
|
|
48
|
+
<th>属性</th>
|
|
49
|
+
<th>说明</th>
|
|
50
|
+
<th>类型</th>
|
|
51
|
+
<th>默认值</th>
|
|
52
|
+
</tr>
|
|
53
|
+
</thead>
|
|
54
|
+
<tbody>
|
|
55
|
+
<tr>
|
|
56
|
+
<td>title</td>
|
|
57
|
+
<td>标题</td>
|
|
58
|
+
<td>string</td>
|
|
59
|
+
<td></td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td>message</td>
|
|
63
|
+
<td>信息</td>
|
|
64
|
+
<td>string</td>
|
|
65
|
+
<td></td>
|
|
66
|
+
</tr>
|
|
67
|
+
<tr>
|
|
68
|
+
<td>subMessage</td>
|
|
69
|
+
<td>副文本消息</td>
|
|
70
|
+
<td>string</td>
|
|
71
|
+
<td></td>
|
|
72
|
+
</tr>
|
|
73
|
+
<tr>
|
|
74
|
+
<td>okText</td>
|
|
75
|
+
<td>确认文本</td>
|
|
76
|
+
<td>string</td>
|
|
77
|
+
<td></td>
|
|
78
|
+
</tr>
|
|
79
|
+
<tr>
|
|
80
|
+
<td>cancelText</td>
|
|
81
|
+
<td>取消文本</td>
|
|
82
|
+
<td>string</td>
|
|
83
|
+
<td></td>
|
|
84
|
+
</tr>
|
|
85
|
+
<tr>
|
|
86
|
+
<td>okDataClick</td>
|
|
87
|
+
<td>ok 按钮 arms 监控</td>
|
|
88
|
+
<td>string</td>
|
|
89
|
+
<td></td>
|
|
90
|
+
</tr>
|
|
91
|
+
<tr>
|
|
92
|
+
<td>cancelDataClick</td>
|
|
93
|
+
<td>cancel 按钮 arms 监控</td>
|
|
94
|
+
<td>string</td>
|
|
95
|
+
<td></td>
|
|
96
|
+
</tr>
|
|
97
|
+
<tr>
|
|
98
|
+
<td>insertButtons</td>
|
|
99
|
+
<td>插入在默认按钮上面</td>
|
|
100
|
+
<td>{JSON.stringify([
|
|
101
|
+
{ label: '查看详情111', value: 'hello', dataClick: '查看详情1234' }
|
|
102
|
+
])}</td>
|
|
103
|
+
<td></td>
|
|
104
|
+
</tr>
|
|
105
|
+
<tr>
|
|
106
|
+
<td>appendButtons</td>
|
|
107
|
+
<td>追加到默认按钮下面</td>
|
|
108
|
+
<td>{JSON.stringify([
|
|
109
|
+
{ label: '查看详情222', value: 'hello', dataClick: '查看详情1234' }
|
|
110
|
+
])}</td>
|
|
111
|
+
<td></td>
|
|
112
|
+
</tr>
|
|
113
|
+
</tbody>
|
|
114
|
+
</table>
|
|
115
|
+
|
|
116
|
+
</div>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Confirm from '../../Confirm';
|
|
3
|
+
import Overlay from "../../Overlay";
|
|
4
|
+
// import "./index.less";
|
|
5
|
+
|
|
6
|
+
export default function confirm(props) {
|
|
7
|
+
const { service, data = {} } = props;
|
|
8
|
+
// const { title = "title", message, subMessage=[], okText = "okText", cancelText="" } = data;
|
|
9
|
+
// const { title = "title", message, subMessage=[], okText = "okText", cancelText="" } = data;
|
|
10
|
+
const onClickCallback = React.useCallback(
|
|
11
|
+
function (v) {
|
|
12
|
+
service.onNext(v);
|
|
13
|
+
},
|
|
14
|
+
[service]
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<Overlay verticalPosition="bottom">
|
|
19
|
+
{/* <Confirm
|
|
20
|
+
title={title}
|
|
21
|
+
message={message}
|
|
22
|
+
subMessage={subMessage}
|
|
23
|
+
okText={okText}
|
|
24
|
+
cancelText={cancelText}
|
|
25
|
+
onClick={onClickCallback}
|
|
26
|
+
>
|
|
27
|
+
</Confirm> */}
|
|
28
|
+
<Confirm {...data} onClick={onClickCallback}></Confirm>
|
|
29
|
+
</Overlay>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { createHashHistory } from "history";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
// debug
|
|
5
|
+
export default function Debug(props) {
|
|
6
|
+
const { appManager } = props;
|
|
7
|
+
const pages = Array.from(appManager.pageManager.keys()).reverse();
|
|
8
|
+
React.useEffect(function () {
|
|
9
|
+
const history = createHashHistory();
|
|
10
|
+
const unListen = history.listen(({ action, location }) => {
|
|
11
|
+
const pathname = location.pathname;
|
|
12
|
+
appManager.mockToPage(pathname, {});
|
|
13
|
+
});
|
|
14
|
+
return unListen;
|
|
15
|
+
}, []);
|
|
16
|
+
return (
|
|
17
|
+
<div className="local-debug-side">
|
|
18
|
+
<ul>
|
|
19
|
+
{pages.map((pathname) => (
|
|
20
|
+
<li key={pathname}>
|
|
21
|
+
<a href={`#${pathname}`}>{pathname}</a>
|
|
22
|
+
</li>
|
|
23
|
+
))}
|
|
24
|
+
</ul>
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import Alert from "./alert";
|
|
2
|
+
import Start from "./start";
|
|
3
|
+
import Confirm from "./confirm";
|
|
4
|
+
import Prompt from "./prompt";
|
|
5
|
+
import Toast from "./toast";
|
|
6
|
+
import NotFound from "./not-found";
|
|
7
|
+
import Debug from "./debug";
|
|
8
|
+
import Loading from "./loading";
|
|
9
|
+
|
|
10
|
+
function PlaySound({ data, service, action }) {
|
|
11
|
+
const { sound } = data;
|
|
12
|
+
if(window.WindVane) {
|
|
13
|
+
var params = {
|
|
14
|
+
domain: 'audio',
|
|
15
|
+
method: 'playSound',
|
|
16
|
+
params: { sound, }
|
|
17
|
+
}
|
|
18
|
+
WindVane.call(
|
|
19
|
+
'WindvanePlugin',
|
|
20
|
+
'invoke',
|
|
21
|
+
JSON.stringify(params),
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
service.onNext({});
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default {
|
|
29
|
+
Alert,
|
|
30
|
+
Start,
|
|
31
|
+
Toast,
|
|
32
|
+
Confirm,
|
|
33
|
+
NotFound,
|
|
34
|
+
Debug,
|
|
35
|
+
Prompt,
|
|
36
|
+
Loading,
|
|
37
|
+
PlaySound,
|
|
38
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
// import "./index.less";
|
|
3
|
+
|
|
4
|
+
export default function Loading(props) {
|
|
5
|
+
const [showLoading, setShowLoading] = React.useState(false);
|
|
6
|
+
const edgeService = props.edgeService;
|
|
7
|
+
React.useEffect(
|
|
8
|
+
function () {
|
|
9
|
+
let currentLoading = false;
|
|
10
|
+
const throttleSetShowLoading = function(loading){
|
|
11
|
+
currentLoading = loading;
|
|
12
|
+
if(loading){
|
|
13
|
+
setTimeout(function(){
|
|
14
|
+
if(currentLoading === loading){
|
|
15
|
+
setShowLoading(true)
|
|
16
|
+
}
|
|
17
|
+
}, 350)
|
|
18
|
+
}else{
|
|
19
|
+
setTimeout(function(){
|
|
20
|
+
if(currentLoading === loading){
|
|
21
|
+
setShowLoading(false)
|
|
22
|
+
}
|
|
23
|
+
}, 100)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
edgeService.on("IO_STATUS", throttleSetShowLoading);
|
|
27
|
+
return function () {
|
|
28
|
+
edgeService.off("IO_STATUS", throttleSetShowLoading);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
[edgeService]
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return showLoading ? (
|
|
35
|
+
<div style={{position:"absolute",left:0,top:0, zIndex: 100}} >LOADING...</div>
|
|
36
|
+
) : null;
|
|
37
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./index.less";
|
|
3
|
+
export default function NotFound(props) {
|
|
4
|
+
return (
|
|
5
|
+
<div style={{ padding: "20%" }}>
|
|
6
|
+
<h1>
|
|
7
|
+
404 <small style={{ fontSize: "60%" }}>Not found</small>
|
|
8
|
+
</h1>
|
|
9
|
+
<div>{props.action.getPage()}</div>
|
|
10
|
+
</div>
|
|
11
|
+
);
|
|
12
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.mini-app-start-page {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
align-items: center;
|
|
6
|
+
width: 100vw;
|
|
7
|
+
height: 100vh;
|
|
8
|
+
button {
|
|
9
|
+
padding: 0.3em 3em;
|
|
10
|
+
// height: 3em;
|
|
11
|
+
border-radius: 6px;
|
|
12
|
+
border: none;
|
|
13
|
+
font-size: 36px;
|
|
14
|
+
background-color: #00bdff;
|
|
15
|
+
color: #ffffff;
|
|
16
|
+
margin-top: 20px;
|
|
17
|
+
|
|
18
|
+
&:active {
|
|
19
|
+
transform: scale(0.95);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.desc {
|
|
24
|
+
opacity: 0.3;
|
|
25
|
+
}
|
|
26
|
+
}
|