wz-h5-design 1.0.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/README.md +51 -0
- package/dist/Button/index.js +84 -0
- package/dist/Button/index.umd.cjs +1 -0
- package/dist/Button/style/index.css +1 -0
- package/dist/Button/style/index.js +1 -0
- package/dist/Button/style.css +1 -0
- package/dist/Card/index.js +32 -0
- package/dist/Card/index.umd.cjs +1 -0
- package/dist/Card/style/index.css +1 -0
- package/dist/Card/style/index.js +1 -0
- package/dist/Card/style.css +1 -0
- package/dist/Cascader/index.js +94 -0
- package/dist/Cascader/index.umd.cjs +1 -0
- package/dist/Cascader/style/index.css +1 -0
- package/dist/Cascader/style/index.js +1 -0
- package/dist/Cascader/style.css +1 -0
- package/dist/Cell/index.js +135 -0
- package/dist/Cell/index.umd.cjs +6 -0
- package/dist/Cell/style/index.css +1 -0
- package/dist/Cell/style/index.js +1 -0
- package/dist/Cell/style.css +1 -0
- package/dist/CheckList/index.js +34 -0
- package/dist/CheckList/index.umd.cjs +1 -0
- package/dist/CheckList/style/index.css +1 -0
- package/dist/CheckList/style/index.js +1 -0
- package/dist/CheckList/style.css +1 -0
- package/dist/Checkbox/index.js +84 -0
- package/dist/Checkbox/index.umd.cjs +1 -0
- package/dist/Checkbox/style/index.css +1 -0
- package/dist/Checkbox/style/index.js +1 -0
- package/dist/Checkbox/style.css +1 -0
- package/dist/Collapse/index.js +72 -0
- package/dist/Collapse/index.umd.cjs +1 -0
- package/dist/Collapse/style/index.css +1 -0
- package/dist/Collapse/style/index.js +1 -0
- package/dist/Collapse/style.css +1 -0
- package/dist/DatePicker/index.js +154 -0
- package/dist/DatePicker/index.umd.cjs +1 -0
- package/dist/DatePicker/style/index.css +1 -0
- package/dist/DatePicker/style/index.js +1 -0
- package/dist/DatePicker/style.css +1 -0
- package/dist/DateRangePicker/index.js +220 -0
- package/dist/DateRangePicker/index.umd.cjs +1 -0
- package/dist/DateRangePicker/style/index.css +1 -0
- package/dist/DateRangePicker/style/index.js +1 -0
- package/dist/DateRangePicker/style.css +1 -0
- package/dist/Dialog/index.js +216 -0
- package/dist/Dialog/index.umd.cjs +6 -0
- package/dist/Dialog/style/index.css +1 -0
- package/dist/Dialog/style/index.js +1 -0
- package/dist/Dialog/style.css +1 -0
- package/dist/Divider/index.js +27 -0
- package/dist/Divider/index.umd.cjs +1 -0
- package/dist/Divider/style/index.css +1 -0
- package/dist/Divider/style/index.js +1 -0
- package/dist/Divider/style.css +1 -0
- package/dist/DropDownMenu/index.js +111 -0
- package/dist/DropDownMenu/index.umd.cjs +1 -0
- package/dist/DropDownMenu/style/index.css +1 -0
- package/dist/DropDownMenu/style/index.js +1 -0
- package/dist/DropDownMenu/style.css +1 -0
- package/dist/Flex/index.js +85 -0
- package/dist/Flex/index.umd.cjs +1 -0
- package/dist/Flex/style/index.css +1 -0
- package/dist/Flex/style/index.js +1 -0
- package/dist/Flex/style.css +1 -0
- package/dist/Grid/index.js +54 -0
- package/dist/Grid/index.umd.cjs +1 -0
- package/dist/Grid/style/index.css +1 -0
- package/dist/Grid/style/index.js +1 -0
- package/dist/Grid/style.css +1 -0
- package/dist/GridView/index.js +90 -0
- package/dist/GridView/index.umd.cjs +1 -0
- package/dist/GridView/style/index.css +1 -0
- package/dist/GridView/style/index.js +1 -0
- package/dist/GridView/style.css +1 -0
- package/dist/Icon/index.js +31 -0
- package/dist/Icon/index.umd.cjs +1 -0
- package/dist/Icon/style/index.css +1 -0
- package/dist/Icon/style/index.js +1 -0
- package/dist/Icon/style.css +1 -0
- package/dist/Input/index.js +148 -0
- package/dist/Input/index.umd.cjs +1 -0
- package/dist/Input/style/index.css +1 -0
- package/dist/Input/style/index.js +1 -0
- package/dist/Input/style.css +1 -0
- package/dist/NavBar/index.js +175 -0
- package/dist/NavBar/index.umd.cjs +6 -0
- package/dist/NavBar/style/index.css +1 -0
- package/dist/NavBar/style/index.js +1 -0
- package/dist/NavBar/style.css +1 -0
- package/dist/Popup/index.js +124 -0
- package/dist/Popup/index.umd.cjs +1 -0
- package/dist/Popup/style/index.css +1 -0
- package/dist/Popup/style/index.js +1 -0
- package/dist/Popup/style.css +1 -0
- package/dist/Radio/index.js +82 -0
- package/dist/Radio/index.umd.cjs +1 -0
- package/dist/Radio/style/index.css +1 -0
- package/dist/Radio/style/index.js +1 -0
- package/dist/Radio/style.css +1 -0
- package/dist/Search/index.js +158 -0
- package/dist/Search/index.umd.cjs +1 -0
- package/dist/Search/style/index.css +1 -0
- package/dist/Search/style/index.js +1 -0
- package/dist/Search/style.css +1 -0
- package/dist/Stepper/index.js +140 -0
- package/dist/Stepper/index.umd.cjs +1 -0
- package/dist/Stepper/style/index.css +1 -0
- package/dist/Stepper/style/index.js +1 -0
- package/dist/Stepper/style.css +1 -0
- package/dist/Switch/index.js +53 -0
- package/dist/Switch/index.umd.cjs +1 -0
- package/dist/Switch/style/index.css +1 -0
- package/dist/Switch/style/index.js +1 -0
- package/dist/Switch/style.css +1 -0
- package/dist/Tabbar/index.js +159 -0
- package/dist/Tabbar/index.umd.cjs +6 -0
- package/dist/Tabbar/style/index.css +1 -0
- package/dist/Tabbar/style/index.js +1 -0
- package/dist/Tabbar/style.css +1 -0
- package/dist/Tabs/index.js +50 -0
- package/dist/Tabs/index.umd.cjs +1 -0
- package/dist/Tabs/style/index.css +1 -0
- package/dist/Tabs/style/index.js +1 -0
- package/dist/Tabs/style.css +1 -0
- package/dist/Tag/index.js +96 -0
- package/dist/Tag/index.umd.cjs +6 -0
- package/dist/Tag/style/index.css +1 -0
- package/dist/Tag/style/index.js +1 -0
- package/dist/Tag/style.css +1 -0
- package/dist/TimePicker/index.js +201 -0
- package/dist/TimePicker/index.umd.cjs +1 -0
- package/dist/TimePicker/style/index.css +1 -0
- package/dist/TimePicker/style/index.js +1 -0
- package/dist/TimePicker/style.css +1 -0
- package/dist/Tip/index.js +104 -0
- package/dist/Tip/index.umd.cjs +6 -0
- package/dist/Tip/style/index.css +1 -0
- package/dist/Tip/style/index.js +1 -0
- package/dist/Tip/style.css +1 -0
- package/dist/Toast/index.js +183 -0
- package/dist/Toast/index.umd.cjs +6 -0
- package/dist/Toast/style/index.css +1 -0
- package/dist/Toast/style/index.js +1 -0
- package/dist/Toast/style.css +1 -0
- package/dist/Tooltip/index.js +172 -0
- package/dist/Tooltip/index.umd.cjs +6 -0
- package/dist/Tooltip/style/index.css +1 -0
- package/dist/Tooltip/style/index.js +1 -0
- package/dist/Tooltip/style.css +1 -0
- package/dist/assets/fonts/qitu/iconfont.css +140 -0
- package/dist/assets/fonts/qitu/iconfont.ttf +0 -0
- package/dist/assets/fonts/qitu/iconfont.woff +0 -0
- package/dist/assets/fonts/qitu/iconfont.woff2 +0 -0
- package/dist/assets/fonts/qituyonghu/iconfont.css +64 -0
- package/dist/assets/fonts/qituyonghu/iconfont.ttf +0 -0
- package/dist/assets/fonts/qituyonghu/iconfont.woff +0 -0
- package/dist/assets/fonts/qituyonghu/iconfont.woff2 +0 -0
- package/dist/assets/fonts/wzdaili/iconfont.css +71 -0
- package/dist/assets/fonts/wzdaili/iconfont.ttf +0 -0
- package/dist/assets/fonts/wzdaili/iconfont.woff +0 -0
- package/dist/assets/fonts/wzdaili/iconfont.woff2 +0 -0
- package/dist/assets/fonts/wzyonghu/iconfont.css +97 -0
- package/dist/assets/fonts/wzyonghu/iconfont.ttf +0 -0
- package/dist/assets/fonts/wzyonghu/iconfont.woff +0 -0
- package/dist/assets/fonts/wzyonghu/iconfont.woff2 +0 -0
- package/dist/assets/fonts/yunying/iconfont.css +303 -0
- package/dist/assets/fonts/yunying/iconfont.ttf +0 -0
- package/dist/assets/fonts/yunying/iconfont.woff +0 -0
- package/dist/assets/fonts/yunying/iconfont.woff2 +0 -0
- package/dist/style.css +1 -0
- package/dist/types/components/Button/Button.d.ts +16 -0
- package/dist/types/components/Button/index.d.ts +5 -0
- package/dist/types/components/Card/Card.d.ts +15 -0
- package/dist/types/components/Card/index.d.ts +3 -0
- package/dist/types/components/Cascader/Cascader.d.ts +14 -0
- package/dist/types/components/Cascader/index.d.ts +3 -0
- package/dist/types/components/Cell/Cell.d.ts +24 -0
- package/dist/types/components/Cell/CellGroup.d.ts +8 -0
- package/dist/types/components/Cell/index.d.ts +8 -0
- package/dist/types/components/CheckList/CheckList.d.ts +11 -0
- package/dist/types/components/CheckList/index.d.ts +3 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +62 -0
- package/dist/types/components/Checkbox/index.d.ts +3 -0
- package/dist/types/components/Collapse/Collapse.d.ts +17 -0
- package/dist/types/components/Collapse/index.d.ts +3 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +13 -0
- package/dist/types/components/DatePicker/index.d.ts +3 -0
- package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +13 -0
- package/dist/types/components/DateRangePicker/index.d.ts +3 -0
- package/dist/types/components/Dialog/Dialog.d.ts +16 -0
- package/dist/types/components/Dialog/imperative.d.ts +8 -0
- package/dist/types/components/Dialog/index.d.ts +8 -0
- package/dist/types/components/Divider/Divider.d.ts +11 -0
- package/dist/types/components/Divider/index.d.ts +3 -0
- package/dist/types/components/DropDownMenu/DropdownMenu.d.ts +19 -0
- package/dist/types/components/DropDownMenu/index.d.ts +2 -0
- package/dist/types/components/Flex/Flex.d.ts +25 -0
- package/dist/types/components/Flex/index.d.ts +3 -0
- package/dist/types/components/Grid/Grid.d.ts +22 -0
- package/dist/types/components/Grid/index.d.ts +3 -0
- package/dist/types/components/GridView/GridView.d.ts +59 -0
- package/dist/types/components/GridView/index.d.ts +2 -0
- package/dist/types/components/Icon/Icon.d.ts +12 -0
- package/dist/types/components/Icon/icon-data.d.ts +42 -0
- package/dist/types/components/Icon/index.d.ts +3 -0
- package/dist/types/components/Input/Input.d.ts +17 -0
- package/dist/types/components/Input/index.d.ts +3 -0
- package/dist/types/components/NavBar/NavBar.d.ts +20 -0
- package/dist/types/components/NavBar/index.d.ts +3 -0
- package/dist/types/components/Popup/Popup.d.ts +23 -0
- package/dist/types/components/Popup/index.d.ts +3 -0
- package/dist/types/components/Radio/Radio.d.ts +62 -0
- package/dist/types/components/Radio/index.d.ts +3 -0
- package/dist/types/components/Search/Search.d.ts +26 -0
- package/dist/types/components/Search/index.d.ts +3 -0
- package/dist/types/components/Stepper/Stepper.d.ts +22 -0
- package/dist/types/components/Stepper/index.d.ts +3 -0
- package/dist/types/components/Switch/Switch.d.ts +16 -0
- package/dist/types/components/Switch/index.d.ts +3 -0
- package/dist/types/components/Tabbar/Tabbar.d.ts +39 -0
- package/dist/types/components/Tabbar/index.d.ts +3 -0
- package/dist/types/components/Tabs/Tabs.d.ts +25 -0
- package/dist/types/components/Tabs/index.d.ts +3 -0
- package/dist/types/components/Tag/Tag.d.ts +39 -0
- package/dist/types/components/Tag/index.d.ts +3 -0
- package/dist/types/components/TimePicker/TimePicker.d.ts +12 -0
- package/dist/types/components/TimePicker/index.d.ts +3 -0
- package/dist/types/components/Tip/Tip.d.ts +32 -0
- package/dist/types/components/Tip/index.d.ts +3 -0
- package/dist/types/components/Toast/Toast.d.ts +11 -0
- package/dist/types/components/Toast/index.d.ts +15 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +17 -0
- package/dist/types/components/Tooltip/index.d.ts +3 -0
- package/dist/types/components/index.d.ts +31 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/utils/color.d.ts +1 -0
- package/dist/wz-h5-design.es.js +2449 -0
- package/dist/wz-h5-design.umd.js +6 -0
- package/package.json +84 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
const Popup = ({
|
|
4
|
+
visible = false,
|
|
5
|
+
position = "bottom",
|
|
6
|
+
mask = true,
|
|
7
|
+
maskClosable = true,
|
|
8
|
+
round = false,
|
|
9
|
+
duration = 300,
|
|
10
|
+
zIndex = 1e3,
|
|
11
|
+
destroyOnClose = false,
|
|
12
|
+
className = "",
|
|
13
|
+
style = {},
|
|
14
|
+
maskStyle = {},
|
|
15
|
+
children,
|
|
16
|
+
onClose,
|
|
17
|
+
onClosed,
|
|
18
|
+
afterShow,
|
|
19
|
+
closeable = false,
|
|
20
|
+
title
|
|
21
|
+
}) => {
|
|
22
|
+
const [display, setDisplay] = useState(visible);
|
|
23
|
+
const [animating, setAnimating] = useState(false);
|
|
24
|
+
const [active, setActive] = useState(visible);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (visible) {
|
|
27
|
+
open();
|
|
28
|
+
} else {
|
|
29
|
+
close();
|
|
30
|
+
}
|
|
31
|
+
}, [visible]);
|
|
32
|
+
const open = () => {
|
|
33
|
+
if (display) return;
|
|
34
|
+
setDisplay(true);
|
|
35
|
+
setAnimating(true);
|
|
36
|
+
requestAnimationFrame(() => {
|
|
37
|
+
requestAnimationFrame(() => {
|
|
38
|
+
setActive(true);
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
setAnimating(false);
|
|
41
|
+
afterShow == null ? void 0 : afterShow();
|
|
42
|
+
}, duration);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const close = () => {
|
|
47
|
+
if (!display) return;
|
|
48
|
+
setActive(false);
|
|
49
|
+
setAnimating(true);
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
setAnimating(false);
|
|
52
|
+
setDisplay(false);
|
|
53
|
+
onClosed == null ? void 0 : onClosed();
|
|
54
|
+
}, duration);
|
|
55
|
+
};
|
|
56
|
+
const handleMaskClick = () => {
|
|
57
|
+
if (maskClosable && !animating) {
|
|
58
|
+
onClose == null ? void 0 : onClose();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const handleCloseClick = () => {
|
|
62
|
+
if (!animating) {
|
|
63
|
+
onClose == null ? void 0 : onClose();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const popupStyle = {
|
|
67
|
+
...style,
|
|
68
|
+
zIndex,
|
|
69
|
+
transitionDuration: `${duration}ms`
|
|
70
|
+
};
|
|
71
|
+
const maskBaseStyle = {
|
|
72
|
+
...maskStyle,
|
|
73
|
+
zIndex,
|
|
74
|
+
transitionDuration: `${duration}ms`
|
|
75
|
+
};
|
|
76
|
+
if (!display && destroyOnClose) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return /* @__PURE__ */ jsxs(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
className: `wz-popup-container ${display ? "wz-popup--display" : ""}`,
|
|
83
|
+
style: { zIndex },
|
|
84
|
+
children: [
|
|
85
|
+
mask && /* @__PURE__ */ jsx(
|
|
86
|
+
"div",
|
|
87
|
+
{
|
|
88
|
+
className: `wz-popup-mask ${active ? "wz-popup-mask--active" : ""}`,
|
|
89
|
+
style: maskBaseStyle,
|
|
90
|
+
onClick: handleMaskClick
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsxs(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
className: `
|
|
97
|
+
wz-popup
|
|
98
|
+
wz-popup--${position}
|
|
99
|
+
${active ? "wz-popup--active" : ""}
|
|
100
|
+
${round ? "wz-popup--round" : ""}
|
|
101
|
+
${className}
|
|
102
|
+
`,
|
|
103
|
+
style: popupStyle,
|
|
104
|
+
children: [
|
|
105
|
+
closeable && /* @__PURE__ */ jsx(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
className: "wz-popup-close",
|
|
109
|
+
onClick: handleCloseClick,
|
|
110
|
+
children: /* @__PURE__ */ jsx("span", { className: "wz-popup-close-icon", children: "×" })
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
title && /* @__PURE__ */ jsx("div", { className: "wz-popup-title", children: title }),
|
|
114
|
+
children
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
export {
|
|
123
|
+
Popup as default
|
|
124
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["react/jsx-runtime","react"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).Popup=s(e.jsxRuntime,e.React)}(this,(function(e,s){"use strict";return({visible:n=!1,position:t="bottom",mask:o=!0,maskClosable:i=!0,round:l=!1,duration:a=300,zIndex:u=1e3,destroyOnClose:p=!1,className:r="",style:c={},maskStyle:d={},children:m,onClose:f,onClosed:x,afterShow:z,closeable:w=!1,title:y})=>{const[h,j]=s.useState(n),[v,b]=s.useState(!1),[k,N]=s.useState(n);s.useEffect((()=>{n?C():$()}),[n]);const C=()=>{h||(j(!0),b(!0),requestAnimationFrame((()=>{requestAnimationFrame((()=>{N(!0),setTimeout((()=>{b(!1),null==z||z()}),a)}))})))},$=()=>{h&&(N(!1),b(!0),setTimeout((()=>{b(!1),j(!1),null==x||x()}),a))},S={...c,zIndex:u,transitionDuration:`${a}ms`},q={...d,zIndex:u,transitionDuration:`${a}ms`};return!h&&p?null:e.jsxs("div",{className:"wz-popup-container "+(h?"wz-popup--display":""),style:{zIndex:u},children:[o&&e.jsx("div",{className:"wz-popup-mask "+(k?"wz-popup-mask--active":""),style:q,onClick:()=>{i&&!v&&(null==f||f())}}),e.jsxs("div",{className:`\n wz-popup \n wz-popup--${t} \n ${k?"wz-popup--active":""} \n ${l?"wz-popup--round":""}\n ${r}\n `,style:S,children:[w&&e.jsx("div",{className:"wz-popup-close",onClick:()=>{v||null==f||f()},children:e.jsx("span",{className:"wz-popup-close-icon",children:"×"})}),y&&e.jsx("div",{className:"wz-popup-title",children:y}),m]})]})}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-popup-container{pointer-events:none;z-index:var(--wz-popup-z-index,1000);width:100%;height:100%;display:none;position:fixed;top:0;left:0}.wz-popup--display{display:block}.wz-popup-mask{background-color:var(--wz-popup-mask-color,#0009);opacity:0;transition:opacity var(--wz-popup-transition-duration,.3s)ease;pointer-events:auto;width:100%;height:100%;position:absolute;top:0;left:0}.wz-popup-mask--active{opacity:1}.wz-popup{background-color:var(--wz-popup-background,#fff);transition:all var(--wz-popup-transition-duration,.3s)ease;pointer-events:auto;-webkit-overflow-scrolling:touch;max-height:100%;padding:10px;position:absolute;overflow:auto}.wz-popup-title{text-align:center;color:var(--wz-popup-title-color,#323233);padding:5px;font-size:16px;font-weight:600;line-height:24px;position:relative}.wz-popup-close{z-index:1;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:absolute;top:10px;right:16px}.wz-popup-close-icon{text-align:center;color:var(--wz-popup-close-icon-color,#969799);width:24px;height:24px;font-size:24px;font-weight:300;line-height:24px;display:block}.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)}.wz-popup--top{width:100%;top:0;left:0;transform:translateY(-100%)}.wz-popup--top.wz-popup--active{transform:translateY(0)}.wz-popup--right{height:100%;top:0;right:0;transform:translate(100%)}.wz-popup--right.wz-popup--active{transform:translate(0)}.wz-popup--bottom{width:100%;bottom:0;left:0;transform:translateY(100%)}.wz-popup--bottom.wz-popup--active{transform:translateY(0)}.wz-popup--left{height:100%;top:0;left:0;transform:translate(-100%)}.wz-popup--left.wz-popup--active{transform:translate(0)}.wz-popup--bottom.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)0 0}.wz-popup--top.wz-popup--round{border-radius:0 0 var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)}.wz-popup--right.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)0 0 var(--wz-popup-round-radius,16px)}.wz-popup--left.wz-popup--round{border-radius:0 var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)0}@media (max-width:767px){.wz-popup--bottom,.wz-popup--top{max-height:80%}.wz-popup--left,.wz-popup--right{max-width:80%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-popup-container{pointer-events:none;z-index:var(--wz-popup-z-index,1000);width:100%;height:100%;display:none;position:fixed;top:0;left:0}.wz-popup--display{display:block}.wz-popup-mask{background-color:var(--wz-popup-mask-color,#0009);opacity:0;transition:opacity var(--wz-popup-transition-duration,.3s)ease;pointer-events:auto;width:100%;height:100%;position:absolute;top:0;left:0}.wz-popup-mask--active{opacity:1}.wz-popup{background-color:var(--wz-popup-background,#fff);transition:all var(--wz-popup-transition-duration,.3s)ease;pointer-events:auto;-webkit-overflow-scrolling:touch;max-height:100%;padding:10px;position:absolute;overflow:auto}.wz-popup-title{text-align:center;color:var(--wz-popup-title-color,#323233);padding:5px;font-size:16px;font-weight:600;line-height:24px;position:relative}.wz-popup-close{z-index:1;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:absolute;top:10px;right:16px}.wz-popup-close-icon{text-align:center;color:var(--wz-popup-close-icon-color,#969799);width:24px;height:24px;font-size:24px;font-weight:300;line-height:24px;display:block}.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)}.wz-popup--top{width:100%;top:0;left:0;transform:translateY(-100%)}.wz-popup--top.wz-popup--active{transform:translateY(0)}.wz-popup--right{height:100%;top:0;right:0;transform:translate(100%)}.wz-popup--right.wz-popup--active{transform:translate(0)}.wz-popup--bottom{width:100%;bottom:0;left:0;transform:translateY(100%)}.wz-popup--bottom.wz-popup--active{transform:translateY(0)}.wz-popup--left{height:100%;top:0;left:0;transform:translate(-100%)}.wz-popup--left.wz-popup--active{transform:translate(0)}.wz-popup--bottom.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)0 0}.wz-popup--top.wz-popup--round{border-radius:0 0 var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)}.wz-popup--right.wz-popup--round{border-radius:var(--wz-popup-round-radius,16px)0 0 var(--wz-popup-round-radius,16px)}.wz-popup--left.wz-popup--round{border-radius:0 var(--wz-popup-round-radius,16px)var(--wz-popup-round-radius,16px)0}@media (max-width:767px){.wz-popup--bottom,.wz-popup--top{max-height:80%}.wz-popup--left,.wz-popup--right{max-width:80%}}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useContext, createContext } from "react";
|
|
3
|
+
const RadioGroupContext = createContext({});
|
|
4
|
+
const Radio = ({
|
|
5
|
+
size,
|
|
6
|
+
checked,
|
|
7
|
+
disabled,
|
|
8
|
+
onChange,
|
|
9
|
+
children,
|
|
10
|
+
value,
|
|
11
|
+
className = "",
|
|
12
|
+
style,
|
|
13
|
+
...rest
|
|
14
|
+
}) => {
|
|
15
|
+
const groupContext = useContext(RadioGroupContext);
|
|
16
|
+
const isInGroup = !!groupContext.value;
|
|
17
|
+
const handleChange = (e) => {
|
|
18
|
+
var _a;
|
|
19
|
+
if (!disabled && !groupContext.disabled) {
|
|
20
|
+
if (isInGroup) {
|
|
21
|
+
(_a = groupContext.onChange) == null ? void 0 : _a.call(groupContext, value);
|
|
22
|
+
} else {
|
|
23
|
+
onChange == null ? void 0 : onChange(e.target.checked);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const isChecked = isInGroup ? groupContext.value === value : checked;
|
|
28
|
+
const isDisabled = disabled || groupContext.disabled;
|
|
29
|
+
const radioSize = size || groupContext.size || "medium";
|
|
30
|
+
return /* @__PURE__ */ jsxs(
|
|
31
|
+
"label",
|
|
32
|
+
{
|
|
33
|
+
className: `wz-radio-wrapper ${isDisabled ? "wz-radio--disabled" : ""} wz-radio--${radioSize} ${className}`,
|
|
34
|
+
style,
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
"input",
|
|
38
|
+
{
|
|
39
|
+
type: "radio",
|
|
40
|
+
className: "wz-radio-input",
|
|
41
|
+
checked: isChecked,
|
|
42
|
+
disabled: isDisabled,
|
|
43
|
+
onChange: handleChange,
|
|
44
|
+
value,
|
|
45
|
+
...rest
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: "wz-radio-inner" }),
|
|
49
|
+
children && /* @__PURE__ */ jsx("span", { className: "wz-radio-label", children })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
const RadioGroup = ({
|
|
55
|
+
value,
|
|
56
|
+
defaultValue,
|
|
57
|
+
onChange,
|
|
58
|
+
disabled,
|
|
59
|
+
size,
|
|
60
|
+
children,
|
|
61
|
+
className = "",
|
|
62
|
+
style
|
|
63
|
+
}) => {
|
|
64
|
+
const [innerValue, setInnerValue] = React.useState(defaultValue);
|
|
65
|
+
const handleChange = (newValue) => {
|
|
66
|
+
setInnerValue(newValue);
|
|
67
|
+
onChange == null ? void 0 : onChange(newValue);
|
|
68
|
+
};
|
|
69
|
+
const contextValue = {
|
|
70
|
+
value: value !== void 0 ? value : innerValue,
|
|
71
|
+
onChange: handleChange,
|
|
72
|
+
disabled,
|
|
73
|
+
size
|
|
74
|
+
};
|
|
75
|
+
return /* @__PURE__ */ jsx(RadioGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { className: `wz-radio-group ${className}`, style, children }) });
|
|
76
|
+
};
|
|
77
|
+
Radio.Group = RadioGroup;
|
|
78
|
+
Radio.displayName = "Radio";
|
|
79
|
+
RadioGroup.displayName = "Radio.Group";
|
|
80
|
+
export {
|
|
81
|
+
Radio as default
|
|
82
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["react/jsx-runtime","react"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).Radio=a(e.jsxRuntime,e.React)}(this,(function(e,a){"use strict";const s=a.createContext({}),i=({size:i,checked:l,disabled:d,onChange:n,children:r,value:t,className:o="",style:u,...c})=>{const p=a.useContext(s),h=!!p.value,m=h?p.value===t:l,f=d||p.disabled,x=i||p.size||"medium";return e.jsxs("label",{className:`wz-radio-wrapper ${f?"wz-radio--disabled":""} wz-radio--${x} ${o}`,style:u,children:[e.jsx("input",{type:"radio",className:"wz-radio-input",checked:m,disabled:f,onChange:e=>{var a;d||p.disabled||(h?null==(a=p.onChange)||a.call(p,t):null==n||n(e.target.checked))},value:t,...c}),e.jsx("span",{className:"wz-radio-inner"}),r&&e.jsx("span",{className:"wz-radio-label",children:r})]})},l=({value:i,defaultValue:l,onChange:d,disabled:n,size:r,children:t,className:o="",style:u})=>{const[c,p]=a.useState(l),h={value:void 0!==i?i:c,onChange:e=>{p(e),null==d||d(e)},disabled:n,size:r};return e.jsx(s.Provider,{value:h,children:e.jsx("div",{className:`wz-radio-group ${o}`,style:u,children:t})})};return i.Group=l,i.displayName="Radio",l.displayName="Radio.Group",i}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-radio-group{flex-direction:column;gap:12px;display:inline-flex}.wz-radio-group.wz-radio-group--horizontal{flex-direction:row;align-items:center}.wz-radio-wrapper{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;outline:none;align-items:center;padding:8px 0;font-family:"Alibaba PuHuiTi 2.0",Alibaba-PuHuiTi-Regular,PingFang SC,Microsoft YaHei,Arial,sans-serif;transition:all .2s ease-in-out;display:inline-flex;position:relative}.wz-radio-wrapper.wz-radio--small .wz-radio-inner{width:16px;height:16px}.wz-radio-wrapper.wz-radio--small .wz-radio-label{margin-left:8px;font-size:13px}.wz-radio-wrapper.wz-radio--medium .wz-radio-inner{width:18px;height:18px}.wz-radio-wrapper.wz-radio--medium .wz-radio-label{margin-left:12px;font-size:14px}.wz-radio-wrapper.wz-radio--large .wz-radio-inner{width:20px;height:20px}.wz-radio-wrapper.wz-radio--large .wz-radio-label{margin-left:16px;font-size:16px}.wz-radio-wrapper.wz-radio--disabled{cursor:not-allowed;opacity:.6}.wz-radio-wrapper.wz-radio--disabled .wz-radio-inner{background-color:#f5f7fa;border-color:#e4e7ed}.wz-radio-wrapper.wz-radio--disabled .wz-radio-label{color:#c0c4cc}.wz-radio-input{opacity:0;z-index:-1;width:0;height:0;margin:0;padding:0;position:absolute}.wz-radio-inner{background-color:#fff;border:1px solid #dcdfe6;border-radius:50%;transition:all .2s ease-in-out;display:inline-block;position:relative}.wz-radio-inner:after{content:"";background-color:var(--wz-primary-color,#22c94d);border-radius:50%;width:10px;height:10px;transition:all .2s ease-in-out;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.wz-radio-input:checked+.wz-radio-inner{border-color:var(--wz-primary-color,#22c94d)}.wz-radio-input:checked+.wz-radio-inner:after{transform:translate(-50%,-50%)scale(1)}.wz-radio-input:focus+.wz-radio-inner{border-color:var(--wz-primary-color,#22c94d);box-shadow:0 0 0 2px #22c94d26}.wz-radio-wrapper:hover .wz-radio-inner{border-color:var(--wz-primary-color,#22c94d)}.wz-radio-label{color:#333;font-family:"Alibaba PuHuiTi 2.0",Alibaba-PuHuiTi-Regular,PingFang SC,Microsoft YaHei,Arial,sans-serif;line-height:1.5}@media screen and (max-width:767px){.wz-radio-group{gap:8px}.wz-radio-wrapper.wz-radio--small .wz-radio-label{font-size:14px}.wz-radio-wrapper.wz-radio--medium .wz-radio-label{font-size:15px}.wz-radio-wrapper.wz-radio--large .wz-radio-label{font-size:16px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-radio-group{flex-direction:column;gap:12px;display:inline-flex}.wz-radio-group.wz-radio-group--horizontal{flex-direction:row;align-items:center}.wz-radio-wrapper{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;outline:none;align-items:center;padding:8px 0;font-family:"Alibaba PuHuiTi 2.0",Alibaba-PuHuiTi-Regular,PingFang SC,Microsoft YaHei,Arial,sans-serif;transition:all .2s ease-in-out;display:inline-flex;position:relative}.wz-radio-wrapper.wz-radio--small .wz-radio-inner{width:16px;height:16px}.wz-radio-wrapper.wz-radio--small .wz-radio-label{margin-left:8px;font-size:13px}.wz-radio-wrapper.wz-radio--medium .wz-radio-inner{width:18px;height:18px}.wz-radio-wrapper.wz-radio--medium .wz-radio-label{margin-left:12px;font-size:14px}.wz-radio-wrapper.wz-radio--large .wz-radio-inner{width:20px;height:20px}.wz-radio-wrapper.wz-radio--large .wz-radio-label{margin-left:16px;font-size:16px}.wz-radio-wrapper.wz-radio--disabled{cursor:not-allowed;opacity:.6}.wz-radio-wrapper.wz-radio--disabled .wz-radio-inner{background-color:#f5f7fa;border-color:#e4e7ed}.wz-radio-wrapper.wz-radio--disabled .wz-radio-label{color:#c0c4cc}.wz-radio-input{opacity:0;z-index:-1;width:0;height:0;margin:0;padding:0;position:absolute}.wz-radio-inner{background-color:#fff;border:1px solid #dcdfe6;border-radius:50%;transition:all .2s ease-in-out;display:inline-block;position:relative}.wz-radio-inner:after{content:"";background-color:var(--wz-primary-color,#22c94d);border-radius:50%;width:10px;height:10px;transition:all .2s ease-in-out;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.wz-radio-input:checked+.wz-radio-inner{border-color:var(--wz-primary-color,#22c94d)}.wz-radio-input:checked+.wz-radio-inner:after{transform:translate(-50%,-50%)scale(1)}.wz-radio-input:focus+.wz-radio-inner{border-color:var(--wz-primary-color,#22c94d);box-shadow:0 0 0 2px #22c94d26}.wz-radio-wrapper:hover .wz-radio-inner{border-color:var(--wz-primary-color,#22c94d)}.wz-radio-label{color:#333;font-family:"Alibaba PuHuiTi 2.0",Alibaba-PuHuiTi-Regular,PingFang SC,Microsoft YaHei,Arial,sans-serif;line-height:1.5}@media screen and (max-width:767px){.wz-radio-group{gap:8px}.wz-radio-wrapper.wz-radio--small .wz-radio-label{font-size:14px}.wz-radio-wrapper.wz-radio--medium .wz-radio-label{font-size:15px}.wz-radio-wrapper.wz-radio--large .wz-radio-label{font-size:16px}}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useState, useRef, useImperativeHandle } from "react";
|
|
3
|
+
const Icon = ({
|
|
4
|
+
name,
|
|
5
|
+
size = 24,
|
|
6
|
+
color = "currentColor",
|
|
7
|
+
className = "",
|
|
8
|
+
style,
|
|
9
|
+
onClick,
|
|
10
|
+
type = "yunying"
|
|
11
|
+
// 默认使用yunying图标库
|
|
12
|
+
}) => {
|
|
13
|
+
const iconStyle = {
|
|
14
|
+
fontSize: typeof size === "number" ? `${size}px` : size,
|
|
15
|
+
color,
|
|
16
|
+
...style
|
|
17
|
+
};
|
|
18
|
+
const iconFontClass = `iconfont-${type}`;
|
|
19
|
+
const iconPrefix = "icon-";
|
|
20
|
+
const iconClass = `${iconPrefix}${name}`;
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"i",
|
|
23
|
+
{
|
|
24
|
+
className: `wz-icon ${iconFontClass} ${iconClass} ${className}`,
|
|
25
|
+
style: iconStyle,
|
|
26
|
+
onClick
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
const Search = forwardRef(
|
|
31
|
+
({
|
|
32
|
+
value,
|
|
33
|
+
defaultValue,
|
|
34
|
+
placeholder = "输入关键词搜索",
|
|
35
|
+
shape = "round",
|
|
36
|
+
clearable = true,
|
|
37
|
+
disabled = false,
|
|
38
|
+
prefix,
|
|
39
|
+
suffix,
|
|
40
|
+
leftIcon = /* @__PURE__ */ jsx(Icon, { name: "search", size: 16 }),
|
|
41
|
+
actionText = "搜索",
|
|
42
|
+
showCancel = false,
|
|
43
|
+
cancelText = "返回",
|
|
44
|
+
background,
|
|
45
|
+
style,
|
|
46
|
+
className = "",
|
|
47
|
+
onSearch,
|
|
48
|
+
onClear,
|
|
49
|
+
onChange,
|
|
50
|
+
onFocus,
|
|
51
|
+
onBlur,
|
|
52
|
+
onCancel,
|
|
53
|
+
...props
|
|
54
|
+
}, ref) => {
|
|
55
|
+
const isControlled = value !== void 0;
|
|
56
|
+
const [innerValue, setInnerValue] = useState(defaultValue || "");
|
|
57
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
58
|
+
const inputRef = useRef(null);
|
|
59
|
+
useImperativeHandle(ref, () => inputRef.current);
|
|
60
|
+
const inputValue = isControlled ? value : innerValue;
|
|
61
|
+
const showClear = clearable && inputValue && isFocused && !disabled;
|
|
62
|
+
const handleChange = (e) => {
|
|
63
|
+
const newValue = e.target.value;
|
|
64
|
+
if (!isControlled) setInnerValue(newValue);
|
|
65
|
+
onChange == null ? void 0 : onChange(newValue);
|
|
66
|
+
};
|
|
67
|
+
const handleFocus = (e) => {
|
|
68
|
+
setIsFocused(true);
|
|
69
|
+
onFocus == null ? void 0 : onFocus(e);
|
|
70
|
+
};
|
|
71
|
+
const handleBlur = (e) => {
|
|
72
|
+
setIsFocused(false);
|
|
73
|
+
onBlur == null ? void 0 : onBlur(e);
|
|
74
|
+
};
|
|
75
|
+
const handleSearch = () => {
|
|
76
|
+
var _a;
|
|
77
|
+
if (disabled) return;
|
|
78
|
+
(_a = inputRef.current) == null ? void 0 : _a.blur();
|
|
79
|
+
onSearch == null ? void 0 : onSearch(inputValue);
|
|
80
|
+
};
|
|
81
|
+
const handleClear = (e) => {
|
|
82
|
+
var _a;
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
if (!isControlled) setInnerValue("");
|
|
85
|
+
onChange == null ? void 0 : onChange("");
|
|
86
|
+
onClear == null ? void 0 : onClear();
|
|
87
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
88
|
+
};
|
|
89
|
+
const handleKeyDown = (e) => {
|
|
90
|
+
if (e.key === "Enter" && !disabled) handleSearch();
|
|
91
|
+
};
|
|
92
|
+
const handleCancel = () => {
|
|
93
|
+
setIsFocused(false);
|
|
94
|
+
onCancel == null ? void 0 : onCancel();
|
|
95
|
+
};
|
|
96
|
+
const renderCancel = () => {
|
|
97
|
+
if (prefix || !showCancel || !isFocused) return null;
|
|
98
|
+
return /* @__PURE__ */ jsx("div", { className: "wz-search-cancel", onClick: handleCancel, children: cancelText });
|
|
99
|
+
};
|
|
100
|
+
const combinedStyle = {
|
|
101
|
+
...style,
|
|
102
|
+
backgroundColor: background
|
|
103
|
+
};
|
|
104
|
+
return /* @__PURE__ */ jsxs(
|
|
105
|
+
"div",
|
|
106
|
+
{
|
|
107
|
+
className: `wz-search ${isFocused ? "wz-search-focused" : ""} ${className}`,
|
|
108
|
+
style: combinedStyle,
|
|
109
|
+
children: [
|
|
110
|
+
prefix && /* @__PURE__ */ jsx("div", { className: "wz-search-prefix", children: prefix }),
|
|
111
|
+
renderCancel(),
|
|
112
|
+
/* @__PURE__ */ jsxs(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
className: `wz-search-content wz-search-shape-${shape} ${disabled ? "wz-search-disabled" : ""}`,
|
|
116
|
+
children: [
|
|
117
|
+
/* @__PURE__ */ jsxs(
|
|
118
|
+
"div",
|
|
119
|
+
{
|
|
120
|
+
className: `wz-search-input-wrapper ${showClear ? "wz-search-input-wrapper--with-clear" : ""}`,
|
|
121
|
+
children: [
|
|
122
|
+
leftIcon && /* @__PURE__ */ jsx("div", { className: "wz-search-left-icon", children: leftIcon }),
|
|
123
|
+
/* @__PURE__ */ jsx(
|
|
124
|
+
"input",
|
|
125
|
+
{
|
|
126
|
+
ref: inputRef,
|
|
127
|
+
className: "wz-search-input",
|
|
128
|
+
value: inputValue,
|
|
129
|
+
onChange: handleChange,
|
|
130
|
+
onFocus: handleFocus,
|
|
131
|
+
onBlur: handleBlur,
|
|
132
|
+
onKeyDown: handleKeyDown,
|
|
133
|
+
placeholder,
|
|
134
|
+
disabled,
|
|
135
|
+
...props
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
showClear && /* @__PURE__ */ jsx("div", { className: "wz-search-clear", onMouseDown: handleClear, children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 16, color: "#BDBDBD" }) })
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
),
|
|
142
|
+
actionText && /* @__PURE__ */ jsxs("div", { className: "wz-search-action", onClick: handleSearch, children: [
|
|
143
|
+
/* @__PURE__ */ jsx("div", { className: "wz-search-divider" }),
|
|
144
|
+
/* @__PURE__ */ jsx("div", { className: "wz-search-action-text", children: actionText })
|
|
145
|
+
] })
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
suffix && /* @__PURE__ */ jsx("div", { className: "wz-search-suffix", children: suffix })
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
Search.displayName = "Search";
|
|
156
|
+
export {
|
|
157
|
+
Search as default
|
|
158
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["react/jsx-runtime","react"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).Search=s(e.jsxRuntime,e.React)}(this,(function(e,s){"use strict";const a=({name:s,size:a=24,color:n="currentColor",className:c="",style:l,onClick:r,type:i="yunying"})=>{const o={fontSize:"number"==typeof a?`${a}px`:a,color:n,...l},t=`iconfont-${i}`,u=`icon-${s}`;return e.jsx("i",{className:`wz-icon ${t} ${u} ${c}`,style:o,onClick:r})},n=s.forwardRef((({value:n,defaultValue:c,placeholder:l="输入关键词搜索",shape:r="round",clearable:i=!0,disabled:o=!1,prefix:t,suffix:u,leftIcon:d=e.jsx(a,{name:"search",size:16}),actionText:h="搜索",showCancel:f=!1,cancelText:x="返回",background:m,style:p,className:w="",onSearch:z,onClear:v,onChange:j,onFocus:N,onBlur:y,onCancel:b,...C},$)=>{const g=void 0!==n,[k,D]=s.useState(c||""),[S,B]=s.useState(!1),R=s.useRef(null);s.useImperativeHandle($,(()=>R.current));const T=g?n:k,q=i&&T&&S&&!o,F=()=>{var e;o||(null==(e=R.current)||e.blur(),null==z||z(T))},I=()=>{B(!1),null==b||b()},E={...p,backgroundColor:m};return e.jsxs("div",{className:`wz-search ${S?"wz-search-focused":""} ${w}`,style:E,children:[t&&e.jsx("div",{className:"wz-search-prefix",children:t}),!t&&f&&S?e.jsx("div",{className:"wz-search-cancel",onClick:I,children:x}):null,e.jsxs("div",{className:`wz-search-content wz-search-shape-${r} ${o?"wz-search-disabled":""}`,children:[e.jsxs("div",{className:"wz-search-input-wrapper "+(q?"wz-search-input-wrapper--with-clear":""),children:[d&&e.jsx("div",{className:"wz-search-left-icon",children:d}),e.jsx("input",{ref:R,className:"wz-search-input",value:T,onChange:e=>{const s=e.target.value;g||D(s),null==j||j(s)},onFocus:e=>{B(!0),null==N||N(e)},onBlur:e=>{B(!1),null==y||y(e)},onKeyDown:e=>{"Enter"!==e.key||o||F()},placeholder:l,disabled:o,...C}),q&&e.jsx("div",{className:"wz-search-clear",onMouseDown:e=>{var s;e.preventDefault(),g||D(""),null==j||j(""),null==v||v(),null==(s=R.current)||s.focus()},children:e.jsx(a,{name:"close",size:16,color:"#BDBDBD"})})]}),h&&e.jsxs("div",{className:"wz-search-action",onClick:F,children:[e.jsx("div",{className:"wz-search-divider"}),e.jsx("div",{className:"wz-search-action-text",children:h})]})]}),u&&e.jsx("div",{className:"wz-search-suffix",children:u})]})}));return n.displayName="Search",n}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--wz-search-height:48px;--wz-search-radius:8px;--wz-search-bg:#f5f5f5;--wz-search-active-bg:#f0f0f0;--wz-search-border:#ebebeb;--wz-search-shadow:0 2px 8px #00000008;--wz-search-font-size:16px;--wz-search-placeholder-color:#c0c4cc;--wz-search-text-color:#333;--wz-search-divider-color:#ebebeb;--wz-search-btn-color:#1890ff;--wz-search-btn-active-color:#096dd9;--wz-search-btn-text:"搜索";--wz-search-padding:12px;--wz-search-inner-padding:0 16px;--wz-search-disabled-opacity:.5}.wz-search{box-sizing:border-box;background-color:#f7f8fa;align-items:center;width:100%;padding:8px 12px;display:flex}.wz-search-cancel{color:var(--wz-primary-color,#22c94d);cursor:pointer;white-space:nowrap;padding-right:12px;font-size:14px}.wz-search-prefix{flex-shrink:0;align-items:center;padding-right:12px;display:flex}.wz-search-content{background-color:#fff;flex:1;align-items:center;min-width:0;padding:6px 12px;transition:all .2s;display:flex}.wz-search-content.wz-search-shape-round{border-radius:100px}.wz-search-content.wz-search-shape-square{border-radius:4px}.wz-search-content.wz-search-disabled{opacity:.6;cursor:not-allowed;background-color:#f2f3f5}.wz-search-focused .wz-search.wz-search-content{border:1px solid var(--wz-primary-color,#22c94d);padding:5px 11px}.wz-search-input-wrapper{flex:1;align-items:center;min-width:0;display:flex;position:relative}.wz-search-left-icon{color:#999;align-items:center;margin-right:6px;display:flex}.wz-search-input{color:#333;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:14px;line-height:1.5;overflow:hidden}.wz-search-input-wrapper--with-clear .wz-search-input{padding-right:22px}.wz-search-input::placeholder{color:#b3b3b3}.wz-search-clear{cursor:pointer;align-items:center;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.wz-search-action{cursor:pointer;align-items:center;display:flex}.wz-search-divider{background-color:#e0e0e0;width:1px;height:16px;margin:0 12px}.wz-search-action-text{color:var(--wz-primary-color,#22c94d);white-space:nowrap;font-size:14px}.wz-search-suffix{cursor:pointer;white-space:nowrap;flex-shrink:0;align-items:center;padding-left:12px;display:flex}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-icon{justify-content:center;align-items:center;transition:color .2s ease-in-out;display:inline-flex}.wz-icon-home:before{content:""}.wz-icon-search:before{content:""}.wz-icon-person:before{content:""}.wz-icon-settings:before{content:""}.wz-icon-notifications:before{content:""}.wz-icon-message:before{content:""}.wz-icon-favorite:before{content:""}.wz-icon-star:before{content:""}.wz-icon-close:before{content:""}.wz-icon-check:before{content:""}.wz-icon-arrow-back:before{content:""}.wz-icon-arrow-forward:before{content:""}.wz-icon-menu:before{content:""}.wz-icon-more:before{content:""}.wz-icon-add:before{content:""}.wz-icon-edit:before{content:""}.wz-icon-delete:before{content:""}.wz-icon-share:before{content:""}.wz-icon-download:before{content:""}.wz-icon-upload:before{content:""}.wz-icon-refresh:before{content:""}.wz-icon-help:before{content:""}.wz-icon-info:before{content:""}.wz-icon-warning:before{content:""}.wz-icon-error:before{content:""}.wz-icon-success:before{content:""}:root{--wz-search-height:48px;--wz-search-radius:8px;--wz-search-bg:#f5f5f5;--wz-search-active-bg:#f0f0f0;--wz-search-border:#ebebeb;--wz-search-shadow:0 2px 8px #00000008;--wz-search-font-size:16px;--wz-search-placeholder-color:#c0c4cc;--wz-search-text-color:#333;--wz-search-divider-color:#ebebeb;--wz-search-btn-color:#1890ff;--wz-search-btn-active-color:#096dd9;--wz-search-btn-text:"搜索";--wz-search-padding:12px;--wz-search-inner-padding:0 16px;--wz-search-disabled-opacity:.5}.wz-search{box-sizing:border-box;background-color:#f7f8fa;align-items:center;width:100%;padding:8px 12px;display:flex}.wz-search-cancel{color:var(--wz-primary-color,#22c94d);cursor:pointer;white-space:nowrap;padding-right:12px;font-size:14px}.wz-search-prefix{flex-shrink:0;align-items:center;padding-right:12px;display:flex}.wz-search-content{background-color:#fff;flex:1;align-items:center;min-width:0;padding:6px 12px;transition:all .2s;display:flex}.wz-search-content.wz-search-shape-round{border-radius:100px}.wz-search-content.wz-search-shape-square{border-radius:4px}.wz-search-content.wz-search-disabled{opacity:.6;cursor:not-allowed;background-color:#f2f3f5}.wz-search-focused .wz-search.wz-search-content{border:1px solid var(--wz-primary-color,#22c94d);padding:5px 11px}.wz-search-input-wrapper{flex:1;align-items:center;min-width:0;display:flex;position:relative}.wz-search-left-icon{color:#999;align-items:center;margin-right:6px;display:flex}.wz-search-input{color:#333;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:14px;line-height:1.5;overflow:hidden}.wz-search-input-wrapper--with-clear .wz-search-input{padding-right:22px}.wz-search-input::placeholder{color:#b3b3b3}.wz-search-clear{cursor:pointer;align-items:center;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.wz-search-action{cursor:pointer;align-items:center;display:flex}.wz-search-divider{background-color:#e0e0e0;width:1px;height:16px;margin:0 12px}.wz-search-action-text{color:var(--wz-primary-color,#22c94d);white-space:nowrap;font-size:14px}.wz-search-suffix{cursor:pointer;white-space:nowrap;flex-shrink:0;align-items:center;padding-left:12px;display:flex}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from "react";
|
|
3
|
+
const Icon = ({
|
|
4
|
+
name,
|
|
5
|
+
size = 24,
|
|
6
|
+
color = "currentColor",
|
|
7
|
+
className = "",
|
|
8
|
+
style,
|
|
9
|
+
onClick,
|
|
10
|
+
type = "yunying"
|
|
11
|
+
// 默认使用yunying图标库
|
|
12
|
+
}) => {
|
|
13
|
+
const iconStyle = {
|
|
14
|
+
fontSize: typeof size === "number" ? `${size}px` : size,
|
|
15
|
+
color,
|
|
16
|
+
...style
|
|
17
|
+
};
|
|
18
|
+
const iconFontClass = `iconfont-${type}`;
|
|
19
|
+
const iconPrefix = "icon-";
|
|
20
|
+
const iconClass = `${iconPrefix}${name}`;
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"i",
|
|
23
|
+
{
|
|
24
|
+
className: `wz-icon ${iconFontClass} ${iconClass} ${className}`,
|
|
25
|
+
style: iconStyle,
|
|
26
|
+
onClick
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
const Stepper = ({
|
|
31
|
+
value,
|
|
32
|
+
min = -Infinity,
|
|
33
|
+
max = Infinity,
|
|
34
|
+
step = 1,
|
|
35
|
+
onChange,
|
|
36
|
+
disabled = false,
|
|
37
|
+
prefix,
|
|
38
|
+
suffix,
|
|
39
|
+
showMinus = true,
|
|
40
|
+
// 默认显示减号按钮
|
|
41
|
+
showPlus = true,
|
|
42
|
+
// 默认显示加号按钮
|
|
43
|
+
precision,
|
|
44
|
+
className = "",
|
|
45
|
+
style,
|
|
46
|
+
inputStyle,
|
|
47
|
+
inputClassName = "",
|
|
48
|
+
buttonStyle,
|
|
49
|
+
buttonClassName = ""
|
|
50
|
+
}) => {
|
|
51
|
+
const [inputValue, setInputValue] = useState(String(value));
|
|
52
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!isFocused) {
|
|
55
|
+
setInputValue(String(value));
|
|
56
|
+
}
|
|
57
|
+
}, [value, isFocused]);
|
|
58
|
+
const handleAdd = () => {
|
|
59
|
+
if (disabled) return;
|
|
60
|
+
let num = Number(value) + step;
|
|
61
|
+
if (num > max) num = max;
|
|
62
|
+
num = precision !== void 0 ? parseFloat(num.toFixed(precision)) : num;
|
|
63
|
+
onChange(num);
|
|
64
|
+
setInputValue(String(num));
|
|
65
|
+
};
|
|
66
|
+
const handleMinus = () => {
|
|
67
|
+
if (disabled) return;
|
|
68
|
+
let num = Number(value) - step;
|
|
69
|
+
if (num < min) num = min;
|
|
70
|
+
num = precision !== void 0 ? parseFloat(num.toFixed(precision)) : num;
|
|
71
|
+
onChange(num);
|
|
72
|
+
setInputValue(String(num));
|
|
73
|
+
};
|
|
74
|
+
const handleInputFocus = (e) => {
|
|
75
|
+
setIsFocused(true);
|
|
76
|
+
e.target.select();
|
|
77
|
+
};
|
|
78
|
+
const handleInputChange = (e) => {
|
|
79
|
+
setInputValue(e.target.value);
|
|
80
|
+
};
|
|
81
|
+
const handleInputBlur = () => {
|
|
82
|
+
setIsFocused(false);
|
|
83
|
+
let num = Number(inputValue);
|
|
84
|
+
if (isNaN(num)) {
|
|
85
|
+
setInputValue(String(value));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (num > max) num = max;
|
|
89
|
+
if (num < min) num = min;
|
|
90
|
+
num = precision !== void 0 ? parseFloat(num.toFixed(precision)) : num;
|
|
91
|
+
onChange(num);
|
|
92
|
+
setInputValue(String(num));
|
|
93
|
+
};
|
|
94
|
+
const minusDisabled = disabled || Number(value) <= min;
|
|
95
|
+
const addDisabled = disabled || Number(value) >= max;
|
|
96
|
+
return /* @__PURE__ */ jsxs("div", { className: `wz-stepper ${className}`, style, children: [
|
|
97
|
+
showMinus && /* @__PURE__ */ jsx(
|
|
98
|
+
"button",
|
|
99
|
+
{
|
|
100
|
+
className: `wz-stepper-btn wz-stepper-btn-minus ${buttonClassName}`,
|
|
101
|
+
onClick: handleMinus,
|
|
102
|
+
disabled: minusDisabled,
|
|
103
|
+
type: "button",
|
|
104
|
+
style: buttonStyle,
|
|
105
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "jian", type: "yunying", size: 21 })
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ jsxs("div", { className: "wz-stepper-input-wrapper", children: [
|
|
109
|
+
prefix && /* @__PURE__ */ jsx("span", { className: "wz-stepper-prefix", children: prefix }),
|
|
110
|
+
/* @__PURE__ */ jsx(
|
|
111
|
+
"input",
|
|
112
|
+
{
|
|
113
|
+
className: `wz-stepper-input ${inputClassName}`,
|
|
114
|
+
type: "text",
|
|
115
|
+
value: inputValue,
|
|
116
|
+
onChange: handleInputChange,
|
|
117
|
+
onFocus: handleInputFocus,
|
|
118
|
+
onBlur: handleInputBlur,
|
|
119
|
+
disabled,
|
|
120
|
+
style: inputStyle
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
suffix && /* @__PURE__ */ jsx("span", { className: "wz-stepper-suffix", children: suffix })
|
|
124
|
+
] }),
|
|
125
|
+
showPlus && /* @__PURE__ */ jsx(
|
|
126
|
+
"button",
|
|
127
|
+
{
|
|
128
|
+
className: `wz-stepper-btn wz-stepper-btn-plus ${buttonClassName}`,
|
|
129
|
+
onClick: handleAdd,
|
|
130
|
+
disabled: addDisabled,
|
|
131
|
+
type: "button",
|
|
132
|
+
style: buttonStyle,
|
|
133
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "jia", type: "yunying", size: 21 })
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
] });
|
|
137
|
+
};
|
|
138
|
+
export {
|
|
139
|
+
Stepper as default
|
|
140
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["react/jsx-runtime","react"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Stepper=t(e.jsxRuntime,e.React)}(this,(function(e,t){"use strict";const s=({name:t,size:s=24,color:n="currentColor",className:i="",style:r,onClick:a,type:l="yunying"})=>{const o={fontSize:"number"==typeof s?`${s}px`:s,color:n,...r},u=`iconfont-${l}`,p=`icon-${t}`;return e.jsx("i",{className:`wz-icon ${u} ${p} ${i}`,style:o,onClick:a})};return({value:n,min:i=-1/0,max:r=1/0,step:a=1,onChange:l,disabled:o=!1,prefix:u,suffix:p,showMinus:c=!0,showPlus:d=!0,precision:m,className:f="",style:y,inputStyle:x,inputClassName:b="",buttonStyle:N,buttonClassName:j=""})=>{const[g,z]=t.useState(String(n)),[h,w]=t.useState(!1);t.useEffect((()=>{h||z(String(n))}),[n,h]);const S=o||Number(n)<=i,$=o||Number(n)>=r;return e.jsxs("div",{className:`wz-stepper ${f}`,style:y,children:[c&&e.jsx("button",{className:`wz-stepper-btn wz-stepper-btn-minus ${j}`,onClick:()=>{if(o)return;let e=Number(n)-a;e<i&&(e=i),e=void 0!==m?parseFloat(e.toFixed(m)):e,l(e),z(String(e))},disabled:S,type:"button",style:N,children:e.jsx(s,{name:"jian",type:"yunying",size:21})}),e.jsxs("div",{className:"wz-stepper-input-wrapper",children:[u&&e.jsx("span",{className:"wz-stepper-prefix",children:u}),e.jsx("input",{className:`wz-stepper-input ${b}`,type:"text",value:g,onChange:e=>{z(e.target.value)},onFocus:e=>{w(!0),e.target.select()},onBlur:()=>{w(!1);let e=Number(g);isNaN(e)?z(String(n)):(e>r&&(e=r),e<i&&(e=i),e=void 0!==m?parseFloat(e.toFixed(m)):e,l(e),z(String(e)))},disabled:o,style:x}),p&&e.jsx("span",{className:"wz-stepper-suffix",children:p})]}),d&&e.jsx("button",{className:`wz-stepper-btn wz-stepper-btn-plus ${j}`,onClick:()=>{if(o)return;let e=Number(n)+a;e>r&&(e=r),e=void 0!==m?parseFloat(e.toFixed(m)):e,l(e),z(String(e))},disabled:$,type:"button",style:N,children:e.jsx(s,{name:"jia",type:"yunying",size:21})})]})}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-stepper{box-sizing:border-box;color:#333;background:0 0;border-radius:8px;align-items:center;width:-moz-fit-content;width:fit-content;min-width:0;font-size:15px;display:flex}.wz-stepper .wz-stepper-btn{color:var(--wz-primary-color-b,#22c94d);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:#fff;border:none;border-radius:50%;outline:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:24px;transition:border-color .2s,color .2s,background .2s;display:flex}.wz-stepper .wz-stepper-btn:hover:not(:disabled){border-color:var(--wz-primary-color-b,#22c94d);color:var(--wz-primary-color-b,#22c94d);background:#f8f8f8}.wz-stepper .wz-stepper-btn:active:not(:disabled){background:#f7f7f7}.wz-stepper .wz-stepper-btn:disabled{color:#c0c4cc;cursor:not-allowed;background:#f8f8f8;border-color:#dcdfe6}.wz-stepper .wz-stepper-input-wrapper{box-sizing:border-box;background:#f8f8f8;border:1.5px solid #f7f7f7;border-radius:8px;align-items:center;width:-moz-fit-content;width:fit-content;min-width:0;height:40px;margin:0 8px;padding:0;transition:border-color .2s;display:flex}.wz-stepper .wz-stepper-input-wrapper:focus-within{border-color:var(--wz-primary-color-b,#22c94d)}.wz-stepper .wz-stepper-input-wrapper:disabled{background:#f8f8f8;border-color:#dcdfe6}.wz-stepper .wz-stepper-prefix,.wz-stepper .wz-stepper-suffix{color:#999;pointer-events:none;white-space:nowrap;flex-shrink:0;align-items:center;height:100%;padding:0 8px;font-size:15px;display:flex}.wz-stepper .wz-stepper-input{text-align:center;color:#333;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:textfield;caret-color:var(--wz-primary-color-b,#22c94d);background:0 0;border:none;outline:none;flex-shrink:0;width:100px;height:100%;margin:0;padding:0;font-family:inherit;font-size:15px;font-weight:600;transition:color .2s}.wz-stepper .wz-stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.wz-stepper .wz-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.wz-stepper .wz-stepper-input:disabled{color:#c0c4cc;cursor:not-allowed;background:0 0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.wz-stepper{box-sizing:border-box;color:#333;background:0 0;border-radius:8px;align-items:center;width:-moz-fit-content;width:fit-content;min-width:0;font-size:15px;display:flex}.wz-stepper .wz-stepper-btn{color:var(--wz-primary-color-b,#22c94d);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:#fff;border:none;border-radius:50%;outline:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:24px;transition:border-color .2s,color .2s,background .2s;display:flex}.wz-stepper .wz-stepper-btn:hover:not(:disabled){border-color:var(--wz-primary-color-b,#22c94d);color:var(--wz-primary-color-b,#22c94d);background:#f8f8f8}.wz-stepper .wz-stepper-btn:active:not(:disabled){background:#f7f7f7}.wz-stepper .wz-stepper-btn:disabled{color:#c0c4cc;cursor:not-allowed;background:#f8f8f8;border-color:#dcdfe6}.wz-stepper .wz-stepper-input-wrapper{box-sizing:border-box;background:#f8f8f8;border:1.5px solid #f7f7f7;border-radius:8px;align-items:center;width:-moz-fit-content;width:fit-content;min-width:0;height:40px;margin:0 8px;padding:0;transition:border-color .2s;display:flex}.wz-stepper .wz-stepper-input-wrapper:focus-within{border-color:var(--wz-primary-color-b,#22c94d)}.wz-stepper .wz-stepper-input-wrapper:disabled{background:#f8f8f8;border-color:#dcdfe6}.wz-stepper .wz-stepper-prefix,.wz-stepper .wz-stepper-suffix{color:#999;pointer-events:none;white-space:nowrap;flex-shrink:0;align-items:center;height:100%;padding:0 8px;font-size:15px;display:flex}.wz-stepper .wz-stepper-input{text-align:center;color:#333;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:textfield;caret-color:var(--wz-primary-color-b,#22c94d);background:0 0;border:none;outline:none;flex-shrink:0;width:100px;height:100%;margin:0;padding:0;font-family:inherit;font-size:15px;font-weight:600;transition:color .2s}.wz-stepper .wz-stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.wz-stepper .wz-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.wz-stepper .wz-stepper-input:disabled{color:#c0c4cc;cursor:not-allowed;background:0 0}.wz-icon{justify-content:center;align-items:center;transition:color .2s ease-in-out;display:inline-flex}.wz-icon-home:before{content:""}.wz-icon-search:before{content:""}.wz-icon-person:before{content:""}.wz-icon-settings:before{content:""}.wz-icon-notifications:before{content:""}.wz-icon-message:before{content:""}.wz-icon-favorite:before{content:""}.wz-icon-star:before{content:""}.wz-icon-close:before{content:""}.wz-icon-check:before{content:""}.wz-icon-arrow-back:before{content:""}.wz-icon-arrow-forward:before{content:""}.wz-icon-menu:before{content:""}.wz-icon-more:before{content:""}.wz-icon-add:before{content:""}.wz-icon-edit:before{content:""}.wz-icon-delete:before{content:""}.wz-icon-share:before{content:""}.wz-icon-download:before{content:""}.wz-icon-upload:before{content:""}.wz-icon-refresh:before{content:""}.wz-icon-help:before{content:""}.wz-icon-info:before{content:""}.wz-icon-warning:before{content:""}.wz-icon-error:before{content:""}.wz-icon-success:before{content:""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
const DEFAULT_ACTIVE_TEXT = "开启";
|
|
4
|
+
const DEFAULT_INACTIVE_TEXT = "关闭";
|
|
5
|
+
const Switch = ({
|
|
6
|
+
value,
|
|
7
|
+
defaultValue = false,
|
|
8
|
+
onChange,
|
|
9
|
+
disabled = false,
|
|
10
|
+
showText = true,
|
|
11
|
+
activeText = "",
|
|
12
|
+
inactiveText = "",
|
|
13
|
+
style,
|
|
14
|
+
className = "",
|
|
15
|
+
size = "default",
|
|
16
|
+
activeColor
|
|
17
|
+
}) => {
|
|
18
|
+
const [innerValue, setInnerValue] = useState(defaultValue);
|
|
19
|
+
const isControlled = value !== void 0;
|
|
20
|
+
const checked = isControlled ? value : innerValue;
|
|
21
|
+
const text = checked ? activeText || DEFAULT_ACTIVE_TEXT : inactiveText || DEFAULT_INACTIVE_TEXT;
|
|
22
|
+
const textWidth = showText ? `${text.length * 12 + 8}px` : "0px";
|
|
23
|
+
const baseWidth = size === "large" ? 62 : 60;
|
|
24
|
+
const switchWidthNum = showText ? text.length * 12 + 40 : baseWidth;
|
|
25
|
+
const switchWidth = `${switchWidthNum}px`;
|
|
26
|
+
const onBg = activeColor ? activeColor.includes("gradient") ? activeColor : activeColor : void 0;
|
|
27
|
+
const handleClick = () => {
|
|
28
|
+
if (disabled) return;
|
|
29
|
+
if (!isControlled) setInnerValue(!checked);
|
|
30
|
+
onChange == null ? void 0 : onChange(!checked);
|
|
31
|
+
};
|
|
32
|
+
const bgStyle = checked ? activeColor ? { background: onBg } : {} : {};
|
|
33
|
+
return /* @__PURE__ */ jsxs(
|
|
34
|
+
"div",
|
|
35
|
+
{
|
|
36
|
+
className: `wz-switch-bg ${checked ? "wz-switch-on" : "wz-switch-off"}${disabled ? " wz-switch-disabled" : ""}${className ? " " + className : ""} wz-switch-${size}`,
|
|
37
|
+
style: { width: switchWidth, minWidth: `${baseWidth}px`, ...style, ...bgStyle },
|
|
38
|
+
onClick: handleClick,
|
|
39
|
+
children: [
|
|
40
|
+
showText && /* @__PURE__ */ jsx("span", { className: "wz-switch-text", style: { width: textWidth }, children: text }),
|
|
41
|
+
/* @__PURE__ */ jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: `wz-switch-slider ${checked ? "wz-switch-slider-on" : "wz-switch-slider-off"}`
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
export {
|
|
52
|
+
Switch as default
|
|
53
|
+
};
|