taro-react-uilib 1.3.4-0 → 1.3.4-2
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/CHANGELOG.md +202 -4
- package/dist/components/ActionSheet/index.js +2 -0
- package/dist/components/ActionSheet/index.js.map +1 -0
- package/dist/components/ActivityIndicator/index.js +2 -0
- package/dist/components/ActivityIndicator/index.js.map +1 -0
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Captcha/index.js +1 -1
- package/dist/components/Captcha/index.js.map +1 -1
- package/dist/components/Cell/index.js +2 -0
- package/dist/components/Cell/index.js.map +1 -0
- package/dist/components/Dialog/Alert/index.js +1 -1
- package/dist/components/Dialog/Alert/index.js.map +1 -1
- package/dist/components/Dialog/Confirm/index.js +1 -1
- package/dist/components/Dialog/Confirm/index.js.map +1 -1
- package/dist/components/DialogComponent/index.js.map +1 -1
- package/dist/components/DialogRef/index.js +1 -1
- package/dist/components/DialogRef/index.js.map +1 -1
- package/dist/components/FormInput/index.js +1 -1
- package/dist/components/FormInput/index.js.map +1 -1
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/LinkMan/index.js +2 -0
- package/dist/components/LinkMan/index.js.map +1 -0
- package/dist/components/NumberKeyboard/index.js +1 -1
- package/dist/components/NumberKeyboard/index.js.map +1 -1
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/Progress/index.js.map +1 -1
- package/dist/components/Radio/index.js +1 -1
- package/dist/components/Radio/index.js.map +1 -1
- package/dist/components/Rank/index.js +2 -0
- package/dist/components/Rank/index.js.map +1 -0
- package/dist/components/Result/images/result-empty.png.js +2 -0
- package/dist/components/Result/images/result-empty.png.js.map +1 -0
- package/dist/components/Result/images/result-fail.png.js +2 -0
- package/dist/components/Result/images/result-fail.png.js.map +1 -0
- package/dist/components/Result/images/result-networkErr.png.js +2 -0
- package/dist/components/Result/images/result-networkErr.png.js.map +1 -0
- package/dist/components/Result/images/result-submitted.png.js +2 -0
- package/dist/components/Result/images/result-submitted.png.js.map +1 -0
- package/dist/components/Result/images/result-success.png.js +2 -0
- package/dist/components/Result/images/result-success.png.js.map +1 -0
- package/dist/components/Result/images/result-wait.png.js +2 -0
- package/dist/components/Result/images/result-wait.png.js.map +1 -0
- package/dist/components/Result/index.js +2 -0
- package/dist/components/Result/index.js.map +1 -0
- package/dist/components/Result/statusMap.js +2 -0
- package/dist/components/Result/statusMap.js.map +1 -0
- package/dist/components/Step/Steps/index.js +1 -1
- package/dist/components/Step/Steps/index.js.map +1 -1
- package/dist/components/Step/index.js +1 -1
- package/dist/components/Step/index.js.map +1 -1
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tabbar/index.js.map +1 -1
- package/dist/components/Tabbar/tabbar/TabItem.js.map +1 -1
- package/dist/components/Tabbar/tabbar/Tabbar.js +1 -1
- package/dist/components/Tabbar/tabbar/Tabbar.js.map +1 -1
- package/dist/components/src/index.js +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +6 -6
- package/dist/index.umd.js.map +1 -1
- package/dist/styles/components/actionsheet.scss +122 -0
- package/dist/styles/components/activityindicator.scss +43 -0
- package/dist/styles/components/amountinput.scss +5 -6
- package/dist/styles/components/amountkeyboard.scss +30 -12
- package/dist/styles/components/badge.scss +0 -1
- package/dist/styles/components/bankicon.scss +1 -1
- package/dist/styles/components/button.scss +14 -7
- package/dist/styles/components/captcha.scss +9 -3
- package/dist/styles/components/cell.scss +119 -0
- package/dist/styles/components/checkbox.scss +4 -5
- package/dist/styles/components/dialog.scss +14 -14
- package/dist/styles/components/dialogref.scss +14 -30
- package/dist/styles/components/font/iconfont.ttf +0 -0
- package/dist/styles/components/font/iconfont.woff +0 -0
- package/dist/styles/components/font/iconfont.woff2 +0 -0
- package/dist/styles/components/forminput.scss +40 -28
- package/dist/styles/components/icon.scss +2 -2
- package/dist/styles/components/index.scss +7 -0
- package/dist/styles/components/linkman.scss +81 -0
- package/dist/styles/components/list.scss +17 -5
- package/dist/styles/components/loading.scss +1 -9
- package/dist/styles/components/mask.scss +1 -1
- package/dist/styles/components/navbar.scss +1 -0
- package/dist/styles/components/numberkeyboard.scss +47 -36
- package/dist/styles/components/page.scss +2 -2
- package/dist/styles/components/passwordinput.scss +1 -1
- package/dist/styles/components/picker.scss +0 -1
- package/dist/styles/components/popup.scss +2 -3
- package/dist/styles/components/progress.scss +45 -3
- package/dist/styles/components/radio.scss +5 -6
- package/dist/styles/components/rank.scss +50 -0
- package/dist/styles/components/result.scss +39 -0
- package/dist/styles/components/step.scss +9 -1
- package/dist/styles/components/switch.scss +40 -0
- package/dist/styles/components/tabbar.scss +3 -0
- package/dist/styles/components/toast.scss +0 -1
- package/dist/styles/themes/default.scss +17 -8
- package/dist/styles/themes/variable.scss +8 -0
- package/lib/components/ActionSheet/index.js +57 -0
- package/lib/components/ActionSheet/index.js.map +1 -0
- package/lib/components/ActivityIndicator/index.js +14 -0
- package/lib/components/ActivityIndicator/index.js.map +1 -0
- package/lib/components/Button/index.js +3 -2
- package/lib/components/Button/index.js.map +1 -1
- package/lib/components/Captcha/index.js +2 -2
- package/lib/components/Captcha/index.js.map +1 -1
- package/lib/components/Cell/index.js +27 -0
- package/lib/components/Cell/index.js.map +1 -0
- package/lib/components/Dialog/Alert/index.js +3 -3
- package/lib/components/Dialog/Alert/index.js.map +1 -1
- package/lib/components/Dialog/Confirm/index.js +2 -2
- package/lib/components/Dialog/Confirm/index.js.map +1 -1
- package/lib/components/DialogComponent/index.js +0 -2
- package/lib/components/DialogComponent/index.js.map +1 -1
- package/lib/components/DialogRef/index.js +6 -14
- package/lib/components/DialogRef/index.js.map +1 -1
- package/lib/components/FormInput/index.js +3 -2
- package/lib/components/FormInput/index.js.map +1 -1
- package/lib/components/Icon/index.js.map +1 -1
- package/lib/components/LinkMan/index.js +358 -0
- package/lib/components/LinkMan/index.js.map +1 -0
- package/lib/components/NumberKeyboard/index.js +4 -2
- package/lib/components/NumberKeyboard/index.js.map +1 -1
- package/lib/components/Progress/index.js +15 -10
- package/lib/components/Progress/index.js.map +1 -1
- package/lib/components/Radio/index.js +1 -1
- package/lib/components/Radio/index.js.map +1 -1
- package/lib/components/Rank/index.js +22 -0
- package/lib/components/Rank/index.js.map +1 -0
- package/lib/components/Result/index.js +30 -0
- package/lib/components/Result/index.js.map +1 -0
- package/lib/components/Result/statusMap.js +15 -0
- package/lib/components/Result/statusMap.js.map +1 -0
- package/lib/components/Step/Steps/index.js +1 -0
- package/lib/components/Step/Steps/index.js.map +1 -1
- package/lib/components/Step/index.js +2 -1
- package/lib/components/Step/index.js.map +1 -1
- package/lib/components/Switch/index.js +26 -0
- package/lib/components/Switch/index.js.map +1 -0
- package/lib/components/Tabbar/index.js +1 -0
- package/lib/components/Tabbar/index.js.map +1 -1
- package/lib/components/Tabbar/tabbar/TabItem.js +0 -1
- package/lib/components/Tabbar/tabbar/TabItem.js.map +1 -1
- package/lib/components/Tabbar/tabbar/Tabbar.js +9 -8
- package/lib/components/Tabbar/tabbar/Tabbar.js.map +1 -1
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/types/components/Button/index.d.ts +6 -1
- package/types/components/Captcha/index.d.ts +1 -1
- package/types/components/DialogRef/index.d.ts +2 -0
- package/types/components/Icon/index.d.ts +1 -1
- package/types/components/LinkMan/index.d.ts +33 -0
- package/types/components/NumberKeyboard/index.d.ts +2 -0
- package/types/components/Progress/index.d.ts +4 -0
- package/types/components/Result/index.d.ts +16 -0
- package/types/components/Result/statusMap.d.ts +9 -0
- package/types/components/Step/index.d.ts +1 -0
- package/types/components/Tabbar/index.d.ts +1 -0
- package/types/components/Tabbar/tabbar/TabItem.d.ts +0 -1
- package/types/components/Tabbar/tabbar/Tabbar.d.ts +3 -2
- package/types/index.d.ts +7 -0
- package/dist/styles/components/images/backspace.png +0 -0
- package/dist/styles/components/images/closeKeyboard.png +0 -0
- package/dist/styles/components/images/icon-arrow-right.png +0 -0
- package/dist/styles/components/images/loading.png +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as i}from"@tarojs/components";import c from"classnames";import{inputRange as s}from"../src/utils/index.js";var u=n((function(n,u){var p=n.onChange,f=n.maxlength,h=n.value,d=n.type,
|
|
1
|
+
import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as i}from"@tarojs/components";import c from"classnames";import{inputRange as s}from"../src/utils/index.js";var u=n((function(n,u){var p=n.onChange,f=n.maxlength,h=n.value,d=n.type,v=n.placeholder,x=n.label,E=n.labelHtml,N=n.RightComponent,b=n.onBlur,g=n.pattern,y=n.LeftComponent,w=n.LeftIcon,L=n.name,C=n.readonly,I=void 0!==C&&C,_=n.withArrow,B=void 0!==_&&_,H=n.direction,j=void 0===H?"row":H,A=n.border,R=void 0===A||A,T=n.mainExtra,M=n.padding,S=void 0!==M&&M,O=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding"]);function V(e){var a=s(e.target.value);e.target.value=a,p&&p(a)}function k(e){var a=s(e.target.value);b&&b(a)}var q=l(null);r(u,(function(){return{focus:function(){var e;null===(e=q.current)||void 0===e||e.focus()}}}));var z=c("xh-form-input",{column:"column"===j,border:R,padding:S});return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:z},t.createElement(m,{className:"xh-form-input-main"},t.createElement(m,{className:"xh-form-input-main-left"},x&&t.createElement(m,{className:"xh-form-input-main-left-label"},x,w&&t.createElement(m,{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement(m,null,y)),t.createElement(m,{className:"xh-form-input-main-center"},I?t.createElement(o,{className:c("xh-form-input-readonly",{"xh-form-input-placeholder":!h})},h||v):t.createElement(i,a({},O,{ref:q,className:"xh-form-input-main-center-native",maxlength:f,name:L,placeholder:v,type:d,value:h,onBlur:k,onInput:V}))),T&&t.createElement(m,{className:"xh-form-input-main-extra"},T)),t.createElement(m,{className:"xh-form-input-right"},N,B&&t.createElement(m,{className:"arrow"}))):t.createElement("div",{className:z},t.createElement("div",{className:"xh-form-input-main"},t.createElement("div",{className:"xh-form-input-main-left"},x&&t.createElement("label",{className:"xh-form-input-main-left-label"},x,w&&t.createElement("div",{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement("div",null,y)),t.createElement("div",{className:"xh-form-input-main-center"},I?t.createElement("p",{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!h})},h||v):t.createElement("input",{ref:q,className:"xh-form-input-main-center-native",maxLength:f,name:L,pattern:g,placeholder:v,type:d,value:h,onBlur:k,onInput:V})),T&&t.createElement("div",{className:"xh-form-input-main-extra"},T)),t.createElement("div",{className:"xh-form-input-right"},N,B&&t.createElement("span",{className:"arrow"})))}));export{u as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n password?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n ...rest\n } = props;\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n password?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n ...rest\n } = props;\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current?.focus();\n },\n }));\n\n const wrapperCls = classNames(\"xh-form-input\", {\n column: direction === \"column\",\n border,\n padding,\n });\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View className={wrapperCls}>\n <View className=\"xh-form-input-main\">\n <View className=\"xh-form-input-main-left\">\n {label && (\n <View className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <View className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </View>\n )}\n </View>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <View>{LeftComponent}</View>\n </View>\n <View className=\"xh-form-input-main-center\">\n {readonly ? (\n <Text\n className={classNames(\"xh-form-input-readonly\", {\n \"xh-form-input-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxlength={maxlength}\n name={name}\n placeholder={placeholder}\n type={type as InputProps[\"type\"]}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </View>\n {mainExtra && (\n <View className=\"xh-form-input-main-extra\">{mainExtra}</View>\n )}\n </View>\n <View className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <View className=\"arrow\" />}\n </View>\n </View>\n );\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"xh-form-input-main\">\n <div className=\"xh-form-input-main-left\">\n {label && (\n <label className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <div className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </div>\n )}\n </label>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <div>{LeftComponent}</div>\n </div>\n <div className=\"xh-form-input-main-center\">\n {readonly ? (\n <p\n className={classNames(\"xh-form-input-main-center-readonly\", {\n \"xh-form-input-main-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxLength={maxlength}\n name={name}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </div>\n {mainExtra && (\n <div className=\"xh-form-input-main-extra\">{mainExtra}</div>\n )}\n </div>\n <div className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <span className=\"arrow\" />}\n </div>\n </div>\n );\n});\nexport default FormInput;\n"],"names":["FormInput","forwardRef","props","formRef","onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","_a","readonly","_b","withArrow","_c","direction","_d","border","mainExtra","_e","padding","rest","__rest","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","className","dangerouslySetInnerHTML","__html","Text","Input","ref","onInput","maxLength"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { pxTransform } from \"@/utils\";\nimport type { StandardLonghandProperties } from \"csstype\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type XHIcon =\n | \"prompt\"\n | \"score\"\n | \"info\"\n | \"failure\"\n | \"success\"\n | \"loading\"\n | \"back\"\n | \"notice\"\n | \"scan\"\n | \"light\"\n | \"faceScan\"\n | \"delete\"\n | \"radioFull\"\n | \"checkboxFull\"\n | \"checkedSquare\"\n | \"checked2\"\n | \"arrowTop\"\n | \"notice2\"\n | \"position\"\n | \"contacts\"\n | \"billFull\"\n | \"bill2\"\n | \"bill3\"\n | \"bill4\"\n | \"edit\"\n | \"editFull\"\n | \"camera\"\n | \"close\"\n | \"gift\"\n | \"message\"\n | \"user\"\n | \"wenhao\"\n | \"kefu\"\n | \"user\"\n | \"play\"\n | \"arrowLeft\"\n | \"arrowRight\"\n | \"keyboardClose\"\n | \"add\"\n | \"tongxunlu\";\n\nexport type XHIconProps = {\n icon: XHIcon;\n size?: number;\n color?: StandardLonghandProperties[\"color\"];\n style?: React.CSSProperties;\n onClick?: () => void;\n} & XHComponentCommonProps;\n\nconst Icon: React.FC<XHIconProps> = props => {\n const { icon = \"\", size = 0, className, color, style, ...rest } = props;\n\n const fixIcon = icon && `xh-icon-${icon}`;\n const iconCls = classNames(\"xh-icon\", fixIcon, className);\n\n const finalStyle: React.CSSProperties = {\n ...style,\n fontSize: pxTransform(size),\n color,\n };\n\n return <span className={iconCls} {...{ style: finalStyle }} {...rest} />;\n};\n\nexport default Icon;\n"],"names":["Icon","props","_a","icon","_b","size","className","color","style","rest","__rest","fixIcon","concat","iconCls","classNames","finalStyle","__assign","fontSize","pxTransform","React","createElement"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { pxTransform } from \"@/utils\";\nimport type { StandardLonghandProperties } from \"csstype\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type XHIcon =\n | \"prompt\"\n | \"score\"\n | \"info\"\n | \"failure\"\n | \"success\"\n | \"loading\"\n | \"back\"\n | \"notice\"\n | \"scan\"\n | \"light\"\n | \"faceScan\"\n | \"delete\"\n | \"radioFull\"\n | \"checkboxFull\"\n | \"checkedSquare\"\n | \"checked2\"\n | \"arrowTop\"\n | \"notice2\"\n | \"position\"\n | \"contacts\"\n | \"billFull\"\n | \"bill2\"\n | \"bill3\"\n | \"bill4\"\n | \"edit\"\n | \"editFull\"\n | \"camera\"\n | \"close\"\n | \"gift\"\n | \"message\"\n | \"user\"\n | \"wenhao\"\n | \"kefu\"\n | \"user\"\n | \"play\"\n | \"arrowLeft\"\n | \"arrowRight\"\n | \"keyboardClose\"\n | \"add\"\n | \"tongxunlu\"\n | \"zhuyi\";\n\nexport type XHIconProps = {\n icon: XHIcon;\n size?: number;\n color?: StandardLonghandProperties[\"color\"];\n style?: React.CSSProperties;\n onClick?: () => void;\n} & XHComponentCommonProps;\n\nconst Icon: React.FC<XHIconProps> = props => {\n const { icon = \"\", size = 0, className, color, style, ...rest } = props;\n\n const fixIcon = icon && `xh-icon-${icon}`;\n const iconCls = classNames(\"xh-icon\", fixIcon, className);\n\n const finalStyle: React.CSSProperties = {\n ...style,\n fontSize: pxTransform(size),\n color,\n };\n\n return <span className={iconCls} {...{ style: finalStyle }} {...rest} />;\n};\n\nexport default Icon;\n"],"names":["Icon","props","_a","icon","_b","size","className","color","style","rest","__rest","fixIcon","concat","iconCls","classNames","finalStyle","__assign","fontSize","pxTransform","React","createElement"],"mappings":"6KA2DM,IAAAA,EAA8B,SAAAC,GAC1B,IAAAC,EAA0DD,EAAKE,KAA/DA,aAAO,GAAED,EAAEE,EAA+CH,EAAvCI,KAARA,OAAO,IAAAD,EAAA,IAAGE,EAAqCL,YAA1BM,EAA0BN,EAAKM,MAAxBC,EAAmBP,EAAKO,MAAdC,EAAIC,EAAKT,EAA5D,CAAA,OAAA,OAAA,YAAA,QAAA,UAEAU,EAAUR,GAAQ,WAAWS,OAAAT,GAC7BU,EAAUC,EAAW,UAAWH,EAASL,GAEzCS,EAAUC,EAAAA,EAAA,CAAA,EACXR,GAAK,CACRS,SAAUC,EAAYb,GACtBE,MAAKA,IAGP,OAAOY,EAAMC,cAAA,OAAAJ,EAAA,CAAAV,UAAWO,GAAa,CAAEL,MAAOO,GAAkBN,GAClE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__read as n,__spreadArray as e}from"../node_modules/tslib/tslib.es6.js";import{View as a,Input as l}from"@tarojs/components";import t,{forwardRef as i,useState as m,useEffect as r,useCallback as o,useImperativeHandle as u}from"react";import{inputRange as c}from"../src/utils/index.js";import s from"../ActionSheet/index.js";var k=["一","二","三","四","五","六","七","八","九","十"],h={linkmanName:"请输入联系人姓名",linkmanPhone:"请输入正确的手机号",relationType:"请选择与联系人关系"},p=[{value:"FATHER",text:"父亲"},{value:"MOTHER",text:"母亲"},{value:"MATE",text:"配偶"},{value:"CHILDREN",text:"子女"},{value:"SIBLING",text:"兄弟姐妹"},{value:"FRIENDS",text:"朋友"},{value:"COLLEAGUE",text:"同事"},{value:"RELATIVES",text:"亲戚"},{value:"OTHER",text:"其他"}],N="h5"!==process.env.TARO_ENV||window.navigator.userAgent.includes("xhqb"),f=i((function(i,f){var x=i.linkManNum,E=i.relations,v=void 0===E?p:E,P=i.onChange,d=i.onGetContacts,g=i.showImportIcon,T=void 0===g?N:g,y=i.onBlur,V=i.onCheckRelation,b=i.onInputChange,A=n(m([]),2),C=A[0],R=A[1],I=n(m([]),2),O=I[0],L=I[1];r((function(){R(Array(x).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:"",relationValue:""}}))),L(Array(x).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:""}})))}),[x]);var S=o((function(n){return!!/1\d{10}/.test(n)}),[]),_=o((function(n,e){return"linkmanName"===n?!(!e||!e.replace(/^\s+|\s+$/gm,""))&&!(e.length>20):"linkmanPhone"===n?!(!e||!S(e)):"relationType"===n&&!!e}),[]),j=o((function(){for(var n=C,e=n.length,a={linkmanName:[],linkmanPhone:[],relationValue:[]},l=!0,t=0;t<e;t++){if(!_("linkmanName",n[t].linkmanName)){l=!1;break}if(0!==t&&a.linkmanName.includes(n[t].linkmanName)){l=!1;break}if(a.linkmanName.push(n[t].linkmanName),!_("linkmanPhone",n[t].linkmanPhone)){l=!1;break}if(0!==t&&a.linkmanPhone.includes(n[t].linkmanPhone)){l=!1;break}if(a.linkmanPhone.push(n[t].linkmanPhone),!_("relationType",n[t].relationValue)){l=!1;break}if(0!==t&&a.relationValue.includes(n[t].relationValue)){l=!1;break}a.relationValue.push(n[t].relationValue)}return l}),[C]);r((function(){null==P||P(C,j())}),[C]),u(f,(function(){return{canSubmit:j(),setContacts:function(a,l){R((function(t){return t[l].linkmanName=a.linkmanName,t[l].linkmanPhone=a.linkmanPhone,e([],n(t),!1)})),H("linkmanName",l),H("linkmanPhone",l)}}}),[]);var w=o((function(n,e){for(var a=C[e],l={linkmanName:[],linkmanPhone:[],relationValue:[]},t=0,i=C.length;t<i;t++)if(t!==e){var m=C[t];if("linkmanName"===n){if(l.linkmanName.push(C[t].linkmanName),""!==a.linkmanName&&""!==m.linkmanName&&m.linkmanName===a.linkmanName)return{pass:!1,message:"姓名与第".concat(t+1,"联系人姓名重复,请修改")}}else if("linkmanPhone"===n){if(""!==a.linkmanPhone&&""!==m.linkmanPhone&&m.linkmanPhone===a.linkmanPhone)return{pass:!1,message:"手机号与第".concat(t+1,"联系人号码重复,请修改")}}else if("relationValue"===n&&""!==a.relationValue&&m.relationValue===a.relationValue)return{pass:!1,message:"关系与第".concat(t+1,"联系人关系重复,请修改")}}return{pass:!0,message:""}}),[C]),B=o((function(a,l){var t=c(a.target.value);R((function(a){return a[l].linkmanName=t,e([],n(a),!1)})),null==b||b("linkmanName",l)}),[]),F=o((function(a,l){var t=c(a.target.value);R((function(a){return a[l].linkmanPhone=t,e([],n(a),!1)})),null==b||b("linkmanPhone",l)}),[]),H=o((function(a,l){if(_(a,C[l][a])){var t=w(a,l),i=t.pass,m=t.message;i||L((function(t){return t[l][a]=m,e([],n(t),!1)})),null==y||y(a,l)}else L((function(t){return t[l][a]=h[a],e([],n(t),!1)}))}),[C]),G=o((function(a,l){L((function(t){return t[l][a]="",e([],n(t),!1)}))}),[]);return t.createElement(a,{className:"xh-linkman"},C.map((function(i,m){return t.createElement(a,{key:m,className:"xh-linkman-item"},t.createElement(a,{className:"xh-linkman-title"},"第",k[m],"联系人"),t.createElement(a,{className:"xh-linkman-main"},t.createElement(a,{className:"xh-linkman-main-input"},t.createElement(a,{className:"xh-linkman-main-input-label"},"姓名"),t.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?t.createElement("input",{className:"xh-linkman-main-input-main-input",type:"text",placeholder:"紧急联系人姓名",onChange:function(n){return B(n,m)},value:i.linkmanName,onBlur:function(){return H("linkmanName",m)},onFocus:function(){return G("linkmanName",m)}}):t.createElement(l,{placeholder:"紧急联系人姓名",className:"xh-linkman-main-input-main-input"}),O[m].linkmanName&&t.createElement(a,{className:"xh-linkman-main-input-main-err"},O[m].linkmanName)),T&&t.createElement(a,{className:"xh-linkman-main-input-contacts",onClick:function(){return null==d?void 0:d(m)}}))),t.createElement(a,{className:"xh-linkman-main"},t.createElement(a,{className:"xh-linkman-main-input"},t.createElement(a,{className:"xh-linkman-main-input-label"},"电话"),t.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?t.createElement("input",{className:"xh-linkman-main-input-main-input",type:"tel",placeholder:"紧急联系人手机号",onBlur:function(){return H("linkmanPhone",m)},maxLength:11,onChange:function(n){return F(n,m)},value:i.linkmanPhone,onFocus:function(){return G("linkmanPhone",m)}}):t.createElement(l,{placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input"}),O[m].linkmanPhone&&t.createElement(a,{className:"xh-linkman-main-input-main-err"},O[m].linkmanPhone)))),t.createElement(s,{data:v,title:"选择与联系人的关系",onConfirm:function(a){L((function(a){return a[m].relationType="",e([],n(a),!1)})),R((function(l){return l[m].relationType=a.text,l[m].relationValue=a.value,e([],n(l),!1)}));var l=w("relationValue",m),t=l.pass,i=l.message;t||L((function(a){return a[m].relationType=i,e([],n(a),!1)})),null==V||V(a,m)},onCancel:function(){return H("relationType",m)}},t.createElement(a,{className:"xh-linkman-main"},t.createElement(a,{className:"xh-linkman-main-input"},t.createElement(a,{className:"xh-linkman-main-input-label"},"关系"),t.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?t.createElement("input",{type:"text",maxLength:11,className:"xh-linkman-main-input-main-input",readOnly:!0,placeholder:"选择与联系人关系",value:i.relationType}):t.createElement(l,{placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input",type:"digit",maxlength:11,value:i.relationType}),O[m].relationType&&t.createElement(a,{className:"xh-linkman-main-input-main-err"},O[m].relationType)),t.createElement(a,{className:"xh-linkman-main-input-arrow"})))))})))}));export{f as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/LinkMan/index.tsx"],"sourcesContent":["import { View, Input } from \"@tarojs/components\";\nimport React, {\n useCallback,\n useEffect,\n useState,\n forwardRef,\n useImperativeHandle,\n} from \"react\";\nimport { inputRange } from \"@/utils\";\n\nimport ActionSheet from \"../ActionSheet\";\n\nimport \"./index.scss\";\n\nexport type AddLinkManProps = {\n linkManNum: number;\n onChange?: (data: LinkManItem[], pass: boolean) => void;\n onGetContacts?: (index: number) => void;\n showImportIcon?: boolean;\n onBlur?: (type: keyof LinkManItem, index: number) => void;\n onCheckRelation?: (\n value: { text: string; value: string },\n index: number\n ) => void;\n onInputChange?: (type: \"linkmanName\" | \"linkmanPhone\", index: number) => void;\n /**\n * 可以选择的关系\n */\n relations?: { text: string; value: string }[];\n};\n\nconst LinkManTitleMap = [\n \"一\",\n \"二\",\n \"三\",\n \"四\",\n \"五\",\n \"六\",\n \"七\",\n \"八\",\n \"九\",\n \"十\",\n];\n\n/**\n * 错误信息提示\n */\nconst errorMessageMap = {\n linkmanName: \"请输入联系人姓名\",\n linkmanPhone: \"请输入正确的手机号\",\n relationType: \"请选择与联系人关系\",\n};\n\nconst defaultActionSheet = [\n {\n value: \"FATHER\",\n text: \"父亲\",\n },\n {\n value: \"MOTHER\",\n text: \"母亲\",\n },\n {\n value: \"MATE\",\n text: \"配偶\",\n },\n {\n value: \"CHILDREN\",\n text: \"子女\",\n },\n {\n value: \"SIBLING\",\n text: \"兄弟姐妹\",\n },\n {\n value: \"FRIENDS\",\n text: \"朋友\",\n },\n {\n value: \"COLLEAGUE\",\n text: \"同事\",\n },\n {\n value: \"RELATIVES\",\n text: \"亲戚\",\n },\n {\n value: \"OTHER\",\n text: \"其他\",\n },\n];\n\nexport type LinkManItem = {\n linkmanName: string;\n linkmanPhone: string;\n relationType: string;\n relationValue: string;\n};\n\nexport type LinkManRef = {\n canSubmit: boolean;\n setContacts: (\n item: Pick<LinkManItem, \"linkmanName\" | \"linkmanPhone\">,\n index: number\n ) => void;\n};\n\nconst defaultShowImportIcon =\n process.env.TARO_ENV === \"h5\"\n ? window.navigator.userAgent.includes(\"xhqb\")\n : true;\n\nconst XHAddLinMan = forwardRef<LinkManRef, AddLinkManProps>(\n (props, fromRef) => {\n const {\n linkManNum,\n relations = defaultActionSheet,\n onChange,\n onGetContacts,\n showImportIcon = defaultShowImportIcon,\n onBlur,\n onCheckRelation,\n onInputChange,\n } = props;\n\n // form信息\n const [formData, setFormData] = useState<LinkManItem[]>([]);\n\n // 错误提示语信息\n const [errMessage, setErrMessage] = useState<\n Omit<LinkManItem, \"relationValue\">[]\n >([]);\n\n useEffect(() => {\n setFormData(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n relationValue: \"\",\n };\n })\n );\n setErrMessage(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n };\n })\n );\n }, [linkManNum]);\n\n /**\n * 校验手机号\n */\n const validatePhone = useCallback((phone: string) => {\n if (/1\\d{10}/.test(phone)) {\n return true;\n }\n return false;\n }, []);\n\n /**\n * 非空校验\n */\n const validateForm = useCallback(\n (type: keyof LinkManItem, name: string) => {\n if (type === \"linkmanName\") {\n if (!name || !name.replace(/^\\s+|\\s+$/gm, \"\")) return false;\n if (name.length > 20) return false;\n return true;\n } else if (type === \"linkmanPhone\") {\n if (!name || !validatePhone(name)) return false;\n return true;\n } else if (type === \"relationType\") {\n if (!name) return false;\n return true;\n }\n return false;\n },\n []\n );\n\n /**\n * 校验联系人是否合法,默认找到不合法的就退出循环\n */\n const validateCanSubmit = useCallback(() => {\n const finalData = formData;\n const length = finalData.length;\n const map: Record<string, string[]> = {\n linkmanName: [],\n linkmanPhone: [],\n relationValue: [],\n };\n let flag = true;\n /**\n * 每次循环formData,不符合直接break,退出循环\n */\n for (let index = 0; index < length; index++) {\n const isNameValid = validateForm(\n \"linkmanName\",\n finalData[index].linkmanName\n );\n if (!isNameValid) {\n flag = false;\n break;\n }\n if (\n index !== 0 &&\n map.linkmanName.includes(finalData[index].linkmanName)\n ) {\n flag = false;\n break;\n }\n map.linkmanName.push(finalData[index].linkmanName);\n const isPhoneValid = validateForm(\n \"linkmanPhone\",\n finalData[index].linkmanPhone\n );\n if (!isPhoneValid) {\n flag = false;\n break;\n }\n if (\n index !== 0 &&\n map.linkmanPhone.includes(finalData[index].linkmanPhone)\n ) {\n flag = false;\n break;\n }\n map.linkmanPhone.push(finalData[index].linkmanPhone);\n const isRelationValid = validateForm(\n \"relationType\",\n finalData[index].relationValue\n );\n if (!isRelationValid) {\n flag = false;\n break;\n }\n if (\n index !== 0 &&\n map.relationValue.includes(finalData[index].relationValue)\n ) {\n flag = false;\n break;\n }\n map.relationValue.push(finalData[index].relationValue);\n }\n return flag;\n }, [formData]);\n\n useEffect(() => {\n onChange?.(formData, validateCanSubmit());\n }, [formData]);\n\n useImperativeHandle(\n fromRef,\n () => ({\n canSubmit: validateCanSubmit(),\n setContacts(item, index) {\n setFormData(old => {\n old[index].linkmanName = item.linkmanName;\n old[index].linkmanPhone = item.linkmanPhone;\n return [...old];\n });\n onFormBlur(\"linkmanName\", index);\n onFormBlur(\"linkmanPhone\", index);\n },\n }),\n []\n );\n\n /**\n * 重复校验\n */\n const validateDuplicate = useCallback(\n (\n type: keyof LinkManItem,\n currentIndex\n ): { pass: boolean; message: string } => {\n const currentItem = formData[currentIndex];\n const validStub: Record<\n Exclude<keyof LinkManItem, \"relationType\">,\n string[]\n > = {\n linkmanName: [],\n linkmanPhone: [],\n relationValue: [],\n };\n for (let index = 0, length = formData.length; index < length; index++) {\n if (index === currentIndex) continue; // 不能跟自己比较\n const current = formData[index];\n if (type === \"linkmanName\") {\n validStub.linkmanName.push(formData[index].linkmanName);\n if (\n currentItem.linkmanName !== \"\" &&\n current.linkmanName !== \"\" &&\n current.linkmanName === currentItem.linkmanName\n ) {\n return {\n pass: false,\n message: `姓名与第${index + 1}联系人姓名重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].linkmanName = \"\";\n // old[currentIndex].linkmanName = \"\";\n // return [...old];\n // });\n }\n } else if (type === \"linkmanPhone\") {\n if (\n currentItem.linkmanPhone !== \"\" &&\n current.linkmanPhone !== \"\" &&\n current.linkmanPhone === currentItem.linkmanPhone\n ) {\n // 如果没有重复需要清空错误信息\n return {\n pass: false,\n message: `手机号与第${index + 1}联系人号码重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].linkmanPhone = \"\";\n // old[currentIndex].linkmanPhone = \"\";\n // return [...old];\n // });\n }\n } else if (type === \"relationValue\") {\n if (\n currentItem.relationValue !== \"\" &&\n current.relationValue === currentItem.relationValue\n ) {\n return {\n pass: false,\n message: `关系与第${index + 1}联系人关系重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].relationType = \"\";\n // old[currentIndex].relationType = \"\";\n // return [...old];\n // });\n }\n }\n }\n return { pass: true, message: \"\" };\n },\n [formData]\n );\n\n /**\n * 联系人姓名改变\n */\n const onNameChange = useCallback((evt, index) => {\n const name = inputRange(evt.target.value);\n setFormData(old => {\n old[index].linkmanName = name;\n return [...old];\n });\n onInputChange?.(\"linkmanName\", index);\n }, []);\n\n /**\n * 联系人手机号改变\n */\n const onPhoneChange = useCallback((evt, index) => {\n const phone = inputRange(evt.target.value);\n setFormData(old => {\n old[index].linkmanPhone = phone;\n return [...old];\n });\n onInputChange?.(\"linkmanPhone\", index);\n }, []);\n\n /**\n * 输入框失去焦点做校验\n */\n const onFormBlur = useCallback(\n (type: keyof LinkManItem, index: number) => {\n const flag = validateForm(type, formData[index][type]); // 先做值的校验,再做重复校验\n if (!flag) {\n setErrMessage(old => {\n old[index][type] = errorMessageMap[type];\n return [...old];\n });\n return;\n }\n const { pass, message } = validateDuplicate(type, index);\n if (!pass)\n setErrMessage(old => {\n old[index][type] = message;\n return [...old];\n });\n\n onBlur?.(type, index);\n },\n [formData]\n );\n\n /**\n * 聚焦的时候设置错误信息为空\n */\n const onFormFocus = useCallback(\n (type: keyof LinkManItem, index: number) => {\n setErrMessage(old => {\n old[index][type] = \"\";\n return [...old];\n });\n },\n []\n );\n\n return (\n <View className=\"xh-linkman\">\n {formData.map((item, num) => (\n <View key={num} className=\"xh-linkman-item\">\n <View className=\"xh-linkman-title\">\n 第{LinkManTitleMap[num]}联系人\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">姓名</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"text\"\n placeholder=\"紧急联系人姓名\"\n onChange={e => onNameChange(e, num)}\n value={item.linkmanName}\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人姓名\"\n className=\"xh-linkman-main-input-main-input\"\n />\n )}\n {errMessage[num].linkmanName && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanName}\n </View>\n )}\n </View>\n {showImportIcon && (\n <View\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\n </View>\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">电话</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"tel\"\n placeholder=\"紧急联系人手机号\"\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n maxLength={11}\n onChange={e => onPhoneChange(e, num)}\n value={item.linkmanPhone}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人手机号\"\n className=\"xh-linkman-main-input-main-input\"\n />\n )}\n {errMessage[num].linkmanPhone && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanPhone}\n </View>\n )}\n </View>\n </View>\n </View>\n <ActionSheet\n data={relations}\n title=\"选择与联系人的关系\"\n onConfirm={value => {\n setErrMessage(old => {\n old[num].relationType = \"\";\n return [...old];\n });\n setFormData(old => {\n old[num].relationType = value.text;\n old[num].relationValue = value.value;\n return [...old];\n });\n const { pass, message } = validateDuplicate(\n \"relationValue\",\n num\n );\n if (!pass)\n setErrMessage(old => {\n old[num].relationType = message;\n return [...old];\n });\n onCheckRelation?.(value, num);\n }}\n onCancel={() => onFormBlur(\"relationType\", num)}\n >\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">关系</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n type=\"text\"\n maxLength={11}\n className=\"xh-linkman-main-input-main-input\"\n readOnly\n placeholder=\"选择与联系人关系\"\n value={item.relationType}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人手机号\"\n className=\"xh-linkman-main-input-main-input\"\n type=\"digit\"\n maxlength={11}\n value={item.relationType}\n />\n )}\n {errMessage[num].relationType && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].relationType}\n </View>\n )}\n </View>\n <View className=\"xh-linkman-main-input-arrow\"></View>\n </View>\n </View>\n </ActionSheet>\n </View>\n ))}\n </View>\n );\n }\n);\n\nexport default XHAddLinMan;\n"],"names":["LinkManTitleMap","errorMessageMap","linkmanName","linkmanPhone","relationType","defaultActionSheet","value","text","defaultShowImportIcon","process","env","TARO_ENV","window","navigator","userAgent","includes","XHAddLinMan","forwardRef","props","fromRef","linkManNum","_a","relations","onChange","onGetContacts","_b","showImportIcon","onBlur","onCheckRelation","onInputChange","_c","__read","useState","formData","setFormData","_d","errMessage","setErrMessage","useEffect","Array","fill","map","relationValue","validatePhone","useCallback","phone","test","validateForm","type","name","replace","length","validateCanSubmit","finalData","flag","index","push","useImperativeHandle","canSubmit","setContacts","item","old","__spreadArray","onFormBlur","validateDuplicate","currentIndex","currentItem","validStub","length_1","current","pass","message","concat","onNameChange","evt","inputRange","target","onPhoneChange","onFormFocus","React","createElement","View","className","num","key","placeholder","e","onFocus","Input","onClick","maxLength","ActionSheet","data","title","onConfirm","onCancel","readOnly","maxlength"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{useState as n,useEffect as o}from"react";import r from"classnames";import{View as a}from"@tarojs/components";import s from"../node_modules/react-transition-group/esm/CSSTransition.js";var
|
|
1
|
+
import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{useState as n,useEffect as o}from"react";import r from"classnames";import{View as a}from"@tarojs/components";import s from"../node_modules/react-transition-group/esm/CSSTransition.js";var l=function(l){var m=l.onBlur,c=l.show,i=l.maxLength,u=void 0===i?Number.MAX_SAFE_INTEGER:i,d=l.showClose,p=void 0===d||d,v=l.closeOnClickSpace,b=void 0===v||v,h=l.onClose,f=l.onChange,y=l.value,x=l.title,E=void 0===x?"安全键盘":x,k=l.closeText,N=void 0===k?"收起":k,C=l.className,g=e(n(y),2),_=g[0],S=g[1],T=function(){for(var e=[],t=1;t<=9;t++)e.push({text:t,value:t,type:"number"});return e.push({text:"",value:"",type:"none"},{text:0,value:0,type:"number"},{text:"",value:"",type:"delete"}),e}();function j(e){h&&h(e),m&&m(e)}o((function(){return b&&document.addEventListener("click",j),function(){document.removeEventListener("click",j)}}),[]),o((function(){S(y)}),[y]);var A=r("xh-number-keyboard",C);return t.createElement(s,{classNames:"slide-up",in:c,unmountOnExit:!0,timeout:200},t.createElement(a,{className:A},t.createElement(a,{className:"xh-number-keyboard-header"},t.createElement(a,{className:"xh-number-keyboard-header-title"},E),p&&t.createElement(a,{className:"xh-number-keyboard-header-close",onClick:j},N)),t.createElement(a,{className:"xh-number-keyboard-body"},T.map((function(e,n){return t.createElement(a,{key:n,className:r("xh-number-keyboard-body-key",{none:"none"===e.type,delete:"delete"===e.type}),onClick:function(t){!function(e,t){var n=t.type,o=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),"none"!==n){var r=_;"delete"===n?r=_.slice(0,_.length-1):r.length<u&&(r=_+o),S(r),f&&f(r)}}(t,e)}},e.text)})))))};export{l as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/NumberKeyboard/index.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, MouseEvent } from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type NumberKeyboardType = \"default\" | \"custom\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n type?: NumberKeyboardType;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n value: string;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst NumberKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n showClose = true,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n className,\n } = props;\n const [input, setInput] = useState(value);\n const keys = getKeys();\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n function handleKeyPress(e, { type, value }: IKey): void {\n if (process.env.TARO_ENV === \"h5\") {\n e.stopImmediatePropagation();\n }\n if (type === \"none\") return;\n\n let newInput = input;\n\n if (type === \"delete\") {\n newInput = input.slice(0, input.length - 1);\n } else if (newInput.length < maxLength) {\n newInput = input + value;\n }\n\n setInput(newInput);\n\n onChange && onChange(newInput);\n }\n\n function getKeys(): IKey[] {\n const keys: IKey[] = [];\n\n for (let i = 1; i <= 9; i++) {\n keys.push({ text: i, value: i, type: \"number\" });\n }\n\n keys.push(\n { text: \"\", value: \"\", type: \"none\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" }\n );\n\n return keys;\n }\n const keyboardcls = classNames(\"xh-number-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-number-keyboard-header\">\n {showClose && (\n <View
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/NumberKeyboard/index.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, MouseEvent } from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type NumberKeyboardType = \"default\" | \"custom\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n type?: NumberKeyboardType;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n value: string;\n title?: string;\n closeText?: string;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst NumberKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n showClose = true,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n title = \"安全键盘\",\n closeText = \"收起\",\n className,\n } = props;\n const [input, setInput] = useState(value);\n const keys = getKeys();\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n function handleKeyPress(e, { type, value }: IKey): void {\n if (process.env.TARO_ENV === \"h5\") {\n e.stopImmediatePropagation();\n }\n if (type === \"none\") return;\n\n let newInput = input;\n\n if (type === \"delete\") {\n newInput = input.slice(0, input.length - 1);\n } else if (newInput.length < maxLength) {\n newInput = input + value;\n }\n\n setInput(newInput);\n\n onChange && onChange(newInput);\n }\n\n function getKeys(): IKey[] {\n const keys: IKey[] = [];\n\n for (let i = 1; i <= 9; i++) {\n keys.push({ text: i, value: i, type: \"number\" });\n }\n\n keys.push(\n { text: \"\", value: \"\", type: \"none\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" }\n );\n\n return keys;\n }\n const keyboardcls = classNames(\"xh-number-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-number-keyboard-header\">\n <View className=\"xh-number-keyboard-header-title\">{title}</View>\n {showClose && (\n <View\n className=\"xh-number-keyboard-header-close\"\n onClick={handleClose}\n >\n {closeText}\n </View>\n )}\n </View>\n <View className=\"xh-number-keyboard-body\">\n {keys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-number-keyboard-body-key\", {\n none: key.type === \"none\",\n delete: key.type === \"delete\",\n })}\n onClick={e => {\n handleKeyPress(e, key);\n }}\n >\n {key.text}\n </View>\n ))}\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default NumberKeyboard;\n"],"names":["NumberKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","showClose","_c","closeOnClickSpace","onClose","onChange","value","_d","title","_e","closeText","className","_f","__read","useState","input","setInput","keys","i","push","text","type","getKeys","handleClose","e","useEffect","document","addEventListener","removeEventListener","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","onClick","map","key","index","none","delete","process","env","TARO_ENV","stopImmediatePropagation","newInput","slice","length","handleKeyPress"],"mappings":"8PAgCM,IAAAA,EAA0C,SAAAC,GAE5C,IAAAC,EAWED,EAXIC,OACNC,EAUEF,EAVEE,KACJC,EASEH,EAAKI,UATPA,aAAYC,OAAOC,iBAAgBH,EACnCI,EAQEP,EARcQ,UAAhBA,OAAY,IAAAD,GAAIA,EAChBE,EAOET,EAAKU,kBAPPA,cAAwBD,EACxBE,EAMEX,EAAKW,QALPC,EAKEZ,EAAKY,SAJPC,EAIEb,EAAKa,MAHPC,EAGEd,EAHYe,MAAdA,OAAK,IAAAD,EAAG,OAAMA,EACdE,EAEEhB,YAFFiB,OAAY,IAAAD,EAAA,OACZE,EACElB,YACEmB,EAAAC,EAAoBC,EAASR,GAAM,GAAlCS,EAAKH,EAAA,GAAEI,OACRC,EAwCN,WAGE,IAFA,IAAMA,EAAe,GAEZC,EAAI,EAAGA,GAAK,EAAGA,IACtBD,EAAKE,KAAK,CAAEC,KAAMF,EAAGZ,MAAOY,EAAGG,KAAM,WASvC,OANAJ,EAAKE,KACH,CAAEC,KAAM,GAAId,MAAO,GAAIe,KAAM,QAC7B,CAAED,KAAM,EAAGd,MAAO,EAAGe,KAAM,UAC3B,CAAED,KAAM,GAAId,MAAO,GAAIe,KAAM,WAGxBJ,CACR,CAtDYK,GAgBb,SAASC,EAAYC,GACnBpB,GAAWA,EAAQoB,GACnB9B,GAAUA,EAAO8B,EAClB,CAjBDC,GAAU,WAKR,OAJItB,GACFuB,SAASC,iBAAiB,QAASJ,GAG9B,WACLG,SAASE,oBAAoB,QAASL,EACxC,CACD,GAAE,IAEHE,GAAU,WACRT,EAASV,EACX,GAAG,CAACA,IAyCJ,IAAMuB,EAAcC,EAAW,qBAAsBnB,GAErD,OACEoB,EAACC,cAAAC,EAAc,CAAAH,WAAW,WAAWI,GAAIvC,EAAMwC,eAAc,EAAAC,QAAS,KACpEL,EAAAC,cAACK,EAAI,CAAC1B,UAAWkB,GACfE,EAAAC,cAACK,EAAI,CAAC1B,UAAU,6BACdoB,EAAAC,cAACK,EAAK,CAAA1B,UAAU,mCAAmCH,GAClDP,GACC8B,EAAAC,cAACK,EAAI,CACH1B,UAAU,kCACV2B,QAASf,GAERb,IAIPqB,EAAAC,cAACK,EAAI,CAAC1B,UAAU,2BACbM,EAAKsB,KAAI,SAACC,EAAKC,GAAU,OACxBV,EAAAC,cAACK,EAAI,CACHG,IAAKC,EACL9B,UAAWmB,EAAW,8BAA+B,CACnDY,KAAmB,SAAbF,EAAInB,KACVsB,OAAqB,WAAbH,EAAInB,OAEdiB,QAAS,SAAAd,IA1DrB,SAAwBA,EAAG5B,OAAEyB,EAAIzB,EAAAyB,KAAEf,EAAKV,EAAAU,MAItC,GAH6B,OAAzBsC,QAAQC,IAAIC,UACdtB,EAAEuB,2BAES,SAAT1B,EAAJ,CAEA,IAAI2B,EAAWjC,EAEF,WAATM,EACF2B,EAAWjC,EAAMkC,MAAM,EAAGlC,EAAMmC,OAAS,GAChCF,EAASE,OAASrD,IAC3BmD,EAAWjC,EAAQT,GAGrBU,EAASgC,GAET3C,GAAYA,EAAS2C,EAZO,CAa7B,CA0CaG,CAAe3B,EAAGgB,EACpB,GAECA,EAAIpB,KAXiB,MAkBpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import
|
|
1
|
+
import e from"react";import t from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as o}from"@tarojs/taro";var a=function(a){var s=a.percent,c=void 0===s?88:s,n=a.className,l=a.showPercent,m=void 0!==l&&l,i=a.doneColor,p=void 0===i?"":i,d=a.percentColor,g=void 0===d?"":d,h=a.height,v=a.dots,f=void 0===v?[]:v,u=t("xh-progress",n,{dots:f.length>0}),E=t("progress-bar",{dots:f.length>0}),N=t("progress-bar-percent");return e.createElement(r,{className:u},e.createElement(r,{className:"progress",style:{height:h&&"".concat(o(h))}},f.length>0?e.createElement(e.Fragment,null,f.map((function(t){return e.createElement(r,{style:{width:"".concat(t,"%")},key:t,"data-progress":t,className:E})})),e.createElement(r,{className:"progress-cover",style:{width:"".concat(c,"%")}})):e.createElement(r,{style:{width:"".concat(c,"%"),backgroundColor:p,color:g},className:E},m&&e.createElement(r,{className:N},"".concat(c,"%")))))};export{a as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> =
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n /**\n * @description 百分比,不要百分号\n */\n dots?: number[];\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> = props => {\n const {\n percent = 88,\n className,\n showPercent = false,\n doneColor = \"\",\n percentColor = \"\",\n height,\n dots = [],\n } = props;\n const progresslcs = classNames(\"xh-progress\", className, {\n dots: dots.length > 0,\n });\n\n const showPercentcls = classNames(\"progress-bar\", { dots: dots.length > 0 });\n const showbarPercentcls = classNames(\"progress-bar-percent\");\n return (\n <View className={progresslcs}>\n <View\n className=\"progress\"\n style={{ height: height && `${pxTransform(height)}` }}\n >\n {dots.length > 0 ? (\n <React.Fragment>\n {dots.map(item => (\n <View\n style={{\n width: `${item}%`,\n }}\n key={item}\n data-progress={item}\n className={showPercentcls}\n />\n ))}\n <View className=\"progress-cover\" style={{ width: `${percent}%` }} />\n </React.Fragment>\n ) : (\n <View\n style={{\n width: `${percent}%`,\n backgroundColor: doneColor,\n color: percentColor,\n }}\n className={showPercentcls}\n >\n {showPercent && (\n <View className={showbarPercentcls}>{`${percent}%`}</View>\n )}\n </View>\n )}\n </View>\n </View>\n );\n};\n\nexport default Progress;\n"],"names":["Progress","props","_a","percent","className","_b","showPercent","_c","doneColor","_d","percentColor","height","_e","dots","progresslcs","classNames","length","showPercentcls","showbarPercentcls","React","createElement","View","style","pxTransform","Fragment","map","item","width","concat","key","backgroundColor","color"],"mappings":"oIAmBM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EAOED,EAAKE,QAPPA,aAAU,GAAED,EACZE,EAMEH,YALFI,EAKEJ,EAAKK,YALPA,OAAc,IAAAD,GAAKA,EACnBE,EAIEN,EAJYO,UAAdA,OAAY,IAAAD,EAAA,GAAEA,EACdE,EAGER,eAHFS,OAAe,IAAAD,EAAA,GAAEA,EACjBE,EAEEV,EAFIU,OACNC,EACEX,EADOY,KAATA,OAAI,IAAAD,EAAG,GAAEA,EAELE,EAAcC,EAAW,cAAeX,EAAW,CACvDS,KAAMA,EAAKG,OAAS,IAGhBC,EAAiBF,EAAW,eAAgB,CAAEF,KAAMA,EAAKG,OAAS,IAClEE,EAAoBH,EAAW,wBACrC,OACEI,EAACC,cAAAC,EAAK,CAAAjB,UAAWU,GACfK,EAAAC,cAACC,EAAI,CACHjB,UAAU,WACVkB,MAAO,CAAEX,OAAQA,GAAU,UAAGY,EAAYZ,MAEzCE,EAAKG,OAAS,EACbG,EAACC,cAAAD,EAAMK,SAAQ,KACZX,EAAKY,KAAI,SAAAC,GAAQ,OAChBP,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAF,EAAO,MAEnBG,IAAKH,EAAI,gBACMA,EACftB,UAAWa,OAGfE,EAACC,cAAAC,EAAK,CAAAjB,UAAU,iBAAiBkB,MAAO,CAAEK,MAAO,GAAGC,OAAAzB,WAGtDgB,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAzB,EAAU,KACpB2B,gBAAiBtB,EACjBuB,MAAOrB,GAETN,UAAWa,GAEVX,GACCa,EAAAC,cAACC,EAAI,CAACjB,UAAWc,GAAoB,GAAAU,OAAGzB,EAAO,QAO7D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import a from"classnames";import{RadioGroup as t}from"@tarojs/components";import l from"../src/hooks/useGenerateId.js";import r from"./Group/index.js";var
|
|
1
|
+
import e from"react";import a from"classnames";import{RadioGroup as t}from"@tarojs/components";import l from"../src/hooks/useGenerateId.js";import r from"./Group/index.js";var o=function(r){var o=r.className,s=r.name,n=r.label,c=r.id,i=r.circle,m=void 0===i||i,d=r.onChange,p=r.align,u=r.direction,h=r.justify,v=r.checked,f=r.disabled,E=r.value,N=r.style,x=r.color,b=void 0===x?"#f6ab00":x,g=l(c,"xh-radio-id"),k=function(e){var a=v||!1,t="";"h5"===process.env.TARO_ENV?(a=e.target.checked,t=e.target.value):(a=e.detail.value.length>0,t=e.detail.value),null==d||d(a,t)},y=a("xh-radio",o,p,u,h);return"h5"!==process.env.TARO_ENV?e.createElement(t,{onChange:k},e.createElement("label",{htmlFor:g,className:y,style:N},e.createElement("input",{type:"radio",id:g,name:s,className:a("xh-radio-input",{tt:"tt"===process.env.TARO_ENV}),onChange:k,disabled:f,value:E,checked:v,color:b}),e.createElement("span",{className:a("xh-radio-input-fake",m&&"circle",{tt:"tt"===process.env.TARO_ENV})}),e.createElement("span",{className:"xh-radio-label"},n))):e.createElement("label",{htmlFor:g,className:y,style:N},e.createElement("input",{type:"radio",id:g,name:s,className:"xh-radio-input",onChange:k,value:E,disabled:f,defaultChecked:v}),e.createElement("span",{className:a("xh-radio-input-fake",m&&"circle")}),e.createElement("span",{className:"xh-radio-label"},n))};o.Group=r;export{o as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Radio/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { RadioGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\n\nimport Group from \"./Group\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHRadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHRadioProps = {\n onChange?: (check: boolean, value: string) => void;\n checked?: boolean;\n name?: string;\n label: string | ReactNode;\n size?: number;\n circle?: boolean;\n align?: \"center\" | \"end\";\n direction?: \"rtl\";\n justify?: \"around\" | \"between\";\n value?: string | number;\n id?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n /**\n * 抖音不支持属性选择器\n * @description 主要为抖音支持颜色\n */\n color?: string;\n} & XHComponentCommonProps;\n\nconst XHRadio: FC<XHRadioProps> = props => {\n const {\n className,\n name,\n label,\n id,\n circle,\n onChange,\n align,\n direction,\n justify,\n checked,\n disabled,\n value,\n style,\n color = \"#f6ab00\",\n } = props;\n\n const finalId = useGenerateId(id, \"xh-radio-id\");\n\n const handleOnchange = e => {\n let finalchecked = checked || false;\n let value = \"\";\n if (process.env.TARO_ENV === \"h5\") {\n finalchecked = e.target.checked;\n value = e.target.value;\n } else {\n finalchecked = e.detail.value.length > 0;\n value = e.detail.value;\n }\n onChange?.(finalchecked, value);\n };\n\n const cls = classNames(\"xh-radio\", className, align, direction, justify);\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <RadioGroup onChange={handleOnchange}>\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className={classNames(\"xh-radio-input\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n onChange={handleOnchange}\n disabled={disabled}\n value={value}\n checked={checked}\n color={color}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n </RadioGroup>\n );\n }\n\n return (\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className=\"xh-radio-input\"\n onChange={handleOnchange}\n value={value}\n disabled={disabled}\n defaultChecked={checked}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\")}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n );\n};\n\nconst Radio = XHRadio as CompoundedComponent;\nRadio.Group = Group;\n\nexport default Radio;\n"],"names":["Radio","props","className","name","label","id","circle","onChange","align","direction","justify","checked","disabled","value","style","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Radio/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { RadioGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\n\nimport Group from \"./Group\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHRadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHRadioProps = {\n onChange?: (check: boolean, value: string) => void;\n checked?: boolean;\n name?: string;\n label: string | ReactNode;\n size?: number;\n circle?: boolean;\n align?: \"center\" | \"end\";\n direction?: \"rtl\";\n justify?: \"around\" | \"between\";\n value?: string | number;\n id?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n /**\n * 抖音不支持属性选择器\n * @description 主要为抖音支持颜色\n */\n color?: string;\n} & XHComponentCommonProps;\n\nconst XHRadio: FC<XHRadioProps> = props => {\n const {\n className,\n name,\n label,\n id,\n circle = true,\n onChange,\n align,\n direction,\n justify,\n checked,\n disabled,\n value,\n style,\n color = \"#f6ab00\",\n } = props;\n\n const finalId = useGenerateId(id, \"xh-radio-id\");\n\n const handleOnchange = e => {\n let finalchecked = checked || false;\n let value = \"\";\n if (process.env.TARO_ENV === \"h5\") {\n finalchecked = e.target.checked;\n value = e.target.value;\n } else {\n finalchecked = e.detail.value.length > 0;\n value = e.detail.value;\n }\n onChange?.(finalchecked, value);\n };\n\n const cls = classNames(\"xh-radio\", className, align, direction, justify);\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <RadioGroup onChange={handleOnchange}>\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className={classNames(\"xh-radio-input\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n onChange={handleOnchange}\n disabled={disabled}\n value={value}\n checked={checked}\n color={color}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n </RadioGroup>\n );\n }\n\n return (\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className=\"xh-radio-input\"\n onChange={handleOnchange}\n value={value}\n disabled={disabled}\n defaultChecked={checked}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\")}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n );\n};\n\nconst Radio = XHRadio as CompoundedComponent;\nRadio.Group = Group;\n\nexport default Radio;\n"],"names":["Radio","props","className","name","label","id","_a","circle","onChange","align","direction","justify","checked","disabled","value","style","_b","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","React","createElement","RadioGroup","htmlFor","type","tt","defaultChecked","Group"],"mappings":"4KAqCA,IAkFMA,EAlF4B,SAAAC,GAE9B,IAAAC,EAcED,EAdOC,UACTC,EAaEF,EAbEE,KACJC,EAYEH,EAZGG,MACLC,EAWEJ,EAXAI,GACFC,EAUEL,EAAKM,OAVPA,cAAaD,EACbE,EASEP,EAAKO,SARPC,EAQER,EAAKQ,MAPPC,EAOET,EAAKS,UANPC,EAMEV,EAAKU,QALPC,EAKEX,EAAKW,QAJPC,EAIEZ,EAAKY,SAHPC,EAGEb,EAAKa,MAFPC,EAEEd,EAAKc,MADPC,EACEf,EADegB,MAAjBA,OAAQ,IAAAD,EAAA,YAGJE,EAAUC,EAAcd,EAAI,eAE5Be,EAAiB,SAAAC,GACrB,IAAIC,EAAeV,IAAW,EAC1BE,EAAQ,GACiB,OAAzBS,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOd,QACxBE,EAAQO,EAAEK,OAAOZ,QAEjBQ,EAAeD,EAAEM,OAAOb,MAAMc,OAAS,EACvCd,EAAQO,EAAEM,OAAOb,OAEnBN,SAAAA,EAAWc,EAAcR,EAC3B,EAEMe,EAAMC,EAAW,WAAY5B,EAAWO,EAAOC,EAAWC,GAChE,MAA6B,OAAzBY,QAAQC,IAAIC,SAEZM,EAACC,cAAAC,EAAW,CAAAzB,SAAUY,GACpBW,EAAOC,cAAA,QAAA,CAAAE,QAAShB,EAAShB,UAAW2B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL9B,GAAIa,EACJf,KAAMA,EACND,UAAW4B,EAAW,iBAAkB,CACtCM,GAA6B,OAAzBb,QAAQC,IAAIC,WAElBjB,SAAUY,EACVP,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTK,MAAOA,IAETc,EACEC,cAAA,OAAA,CAAA9B,UAAW4B,EAAW,sBAAuBvB,GAAU,SAAU,CAC/D6B,GAA6B,OAAzBb,QAAQC,IAAIC,aAGpBM,EAAMC,cAAA,OAAA,CAAA9B,UAAU,kBAAkBE,KAOxC2B,EAAAC,cAAA,QAAA,CAAOE,QAAShB,EAAShB,UAAW2B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL9B,GAAIa,EACJf,KAAMA,EACND,UAAU,iBACVM,SAAUY,EACVN,MAAOA,EACPD,SAAUA,EACVwB,eAAgBzB,IAElBmB,EACEC,cAAA,OAAA,CAAA9B,UAAW4B,EAAW,sBAAuBvB,GAAU,YAEzDwB,EAAMC,cAAA,OAAA,CAAA9B,UAAU,kBAAkBE,GAGxC,EAGAJ,EAAMsC,MAAQA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__read as e,__assign as t}from"../node_modules/tslib/tslib.es6.js";import r,{useState as a}from"react";import{View as n}from"@tarojs/components";import o from"classnames";import{pxTransform as s}from"../src/utils/index.js";var i=function(i){var m=i.defalutScore,l=void 0===m?-1:m,c=i.onChange,f=i.max,u=void 0===f?5:f,d=i.size,p=void 0===d?0:d,v=i.tip,x=void 0===v?"轻点星形以评分":v,k=i.style,h=void 0===k?{}:k,y=e(a(l),2),E=y[0],N=y[1];return r.createElement(n,{className:o("xh-rank"),style:t(p?{fontSize:s(p)}:{},h)},r.createElement(n,{className:"xh-rank-tip"},x),r.createElement(n,{className:"xh-rank-star"},Array(u).fill(1).map((function(e,t){return r.createElement(n,{key:t,className:o("xh-rank-star-active",{active:t<=E}),onClick:function(){return function(e){N(e),null==c||c(e+1)}(t)}})}))))};export{i as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Rank/index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { pxTransform } from \"@/utils\";\n\nimport \"./index.scss\";\n\ntype RankProps = {\n defalutScore?: number;\n onChange: (rank: number) => void;\n max?: number;\n size?: number;\n tip?: string;\n style?: React.CSSProperties & {\n \"--color-primary\": string;\n };\n};\n\nconst Rank: React.FC<RankProps> = props => {\n const {\n defalutScore = -1,\n onChange,\n max = 5,\n size = 0,\n tip = \"轻点星形以评分\",\n style = {},\n } = props;\n const [score, setScore] = useState(defalutScore);\n\n const selectRank = (index: number) => {\n setScore(index);\n onChange?.(index + 1);\n };\n\n return (\n <View\n className={classNames(\"xh-rank\")}\n style={size ? { fontSize: pxTransform(size), ...style } : { ...style }}\n >\n <View className=\"xh-rank-tip\">{tip}</View>\n <View className=\"xh-rank-star\">\n {Array(max)\n .fill(1)\n .map((_item, index) => (\n <View\n key={index}\n className={classNames(\"xh-rank-star-active\", {\n active: index <= score,\n })}\n onClick={() => selectRank(index)}\n ></View>\n ))}\n </View>\n </View>\n );\n};\n\nexport default Rank;\n"],"names":["Rank","props","_a","defalutScore","onChange","_b","max","_c","size","_d","tip","_e","style","_f","__read","useState","score","setScore","React","createElement","View","className","classNames","__assign","fontSize","pxTransform","Array","fill","map","_item","index","key","active","onClick","selectRank"],"mappings":"sOAkBM,IAAAA,EAA4B,SAAAC,GAE9B,IAAAC,EAMED,EANeE,aAAjBA,OAAe,IAAAD,GAAC,EAACA,EACjBE,EAKEH,EAAKG,SAJPC,EAIEJ,EAAKK,IAJPA,OAAG,IAAAD,EAAG,EAACA,EACPE,EAGEN,EAHMO,KAARA,OAAO,IAAAD,EAAA,IACPE,EAEER,EAAKS,IAFPA,aAAM,UAASD,EACfE,EACEV,EAAKW,MADPA,OAAK,IAAAD,EAAG,CAAE,EAAAA,EAENE,EAAAC,EAAoBC,EAASZ,GAAa,GAAzCa,EAAKH,EAAA,GAAEI,OAOd,OACEC,EAAAC,cAACC,EAAI,CACHC,UAAWC,EAAW,WACtBV,MAAgBW,EAATf,EAAS,CAAAgB,SAAUC,EAAYjB,IAAmB,GAATI,IAEhDM,EAAAC,cAACC,EAAK,CAAAC,UAAU,eAAeX,GAC/BQ,EAACC,cAAAC,GAAKC,UAAU,gBACbK,MAAMpB,GACJqB,KAAK,GACLC,KAAI,SAACC,EAAOC,GAAU,OACrBZ,EAACC,cAAAC,GACCW,IAAKD,EACLT,UAAWC,EAAW,sBAAuB,CAC3CU,OAAQF,GAASd,IAEnBiB,QAAS,WAAM,OApBR,SAACH,GAClBb,EAASa,GACT1B,SAAAA,EAAW0B,EAAQ,EACrB,CAiB2BI,CAAWJ,UAMxC"}
|