taro-react-uilib 1.4.27 → 1.4.28-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/components/ActionSheet/index.js +1 -1
  2. package/dist/components/ActionSheet/index.js.map +1 -1
  3. package/dist/components/AmountInput/index.js +1 -1
  4. package/dist/components/AmountInput/index.js.map +1 -1
  5. package/dist/components/AmountKeyboard/index.js +1 -1
  6. package/dist/components/AmountKeyboard/index.js.map +1 -1
  7. package/dist/components/Button/index.js +1 -1
  8. package/dist/components/Button/index.js.map +1 -1
  9. package/dist/components/Cell/index.js +1 -1
  10. package/dist/components/Cell/index.js.map +1 -1
  11. package/dist/components/Checkbox/index.js +1 -1
  12. package/dist/components/Checkbox/index.js.map +1 -1
  13. package/dist/components/CheckboxButton/index.js +1 -1
  14. package/dist/components/CheckboxButton/index.js.map +1 -1
  15. package/dist/components/Collapse/index.js +1 -1
  16. package/dist/components/Collapse/index.js.map +1 -1
  17. package/dist/components/Dialog/Alert/index.js +1 -1
  18. package/dist/components/Dialog/Alert/index.js.map +1 -1
  19. package/dist/components/Dialog/Confirm/index.js +1 -1
  20. package/dist/components/Dialog/Confirm/index.js.map +1 -1
  21. package/dist/components/DialogRef/index.js +1 -1
  22. package/dist/components/DialogRef/index.js.map +1 -1
  23. package/dist/components/FormInput/index.js +1 -1
  24. package/dist/components/FormInput/index.js.map +1 -1
  25. package/dist/components/IDNumberInput/index.js +1 -1
  26. package/dist/components/IDNumberInput/index.js.map +1 -1
  27. package/dist/components/Icon/index.js +1 -1
  28. package/dist/components/Icon/index.js.map +1 -1
  29. package/dist/components/Image/index.js +1 -1
  30. package/dist/components/Image/index.js.map +1 -1
  31. package/dist/components/LicensePlateInput/index.js +1 -1
  32. package/dist/components/LicensePlateInput/index.js.map +1 -1
  33. package/dist/components/LinkMan/index.js +1 -1
  34. package/dist/components/LinkMan/index.js.map +1 -1
  35. package/dist/components/List/index.js +1 -1
  36. package/dist/components/List/index.js.map +1 -1
  37. package/dist/components/Mask/index.js +1 -1
  38. package/dist/components/Mask/index.js.map +1 -1
  39. package/dist/components/NavBar/index.js +1 -1
  40. package/dist/components/NavBar/index.js.map +1 -1
  41. package/dist/components/NumberKeyboard/index.js +1 -1
  42. package/dist/components/NumberKeyboard/index.js.map +1 -1
  43. package/dist/components/Page/index.js +1 -1
  44. package/dist/components/Page/index.js.map +1 -1
  45. package/dist/components/Radio/index.js +1 -1
  46. package/dist/components/Radio/index.js.map +1 -1
  47. package/dist/components/Step/index.js +1 -1
  48. package/dist/components/Step/index.js.map +1 -1
  49. package/dist/components/Tabbar/tabbar/TabItem.js +1 -1
  50. package/dist/components/Tabbar/tabbar/TabItem.js.map +1 -1
  51. package/dist/components/Tabbar/tabbar/Tabbar.js +1 -1
  52. package/dist/components/Tabbar/tabbar/Tabbar.js.map +1 -1
  53. package/dist/index.esm.js +5 -5
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +5 -5
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.umd.js +5 -5
  58. package/dist/index.umd.js.map +1 -1
  59. package/package.json +1 -1
  60. package/types/components/ActionSheet/index.d.ts +1 -0
  61. package/types/components/AmountInput/index.d.ts +1 -0
  62. package/types/components/AmountKeyboard/index.d.ts +1 -0
  63. package/types/components/Button/index.d.ts +1 -0
  64. package/types/components/Captcha/index.d.ts +1 -1
  65. package/types/components/Cell/index.d.ts +1 -0
  66. package/types/components/Checkbox/index.d.ts +1 -0
  67. package/types/components/CheckboxButton/index.d.ts +1 -0
  68. package/types/components/Collapse/index.d.ts +1 -0
  69. package/types/components/DialogRef/index.d.ts +2 -0
  70. package/types/components/FormInput/index.d.ts +1 -0
  71. package/types/components/IDNumberInput/index.d.ts +2 -0
  72. package/types/components/Icon/index.d.ts +1 -0
  73. package/types/components/Image/index.d.ts +1 -0
  74. package/types/components/LicensePlateInput/index.d.ts +2 -0
  75. package/types/components/LinkMan/index.d.ts +1 -0
  76. package/types/components/List/index.d.ts +1 -0
  77. package/types/components/Mask/index.d.ts +1 -0
  78. package/types/components/NumberKeyboard/index.d.ts +1 -0
  79. package/types/components/Page/index.d.ts +1 -0
  80. package/types/components/Radio/index.d.ts +1 -0
  81. package/types/components/Step/index.d.ts +1 -0
  82. package/types/components/Tabbar/tabbar/TabItem.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Dialog/Confirm/index.tsx"],"sourcesContent":["import React, { createRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { showModal } from \"@tarojs/taro\";\nimport DialogComponent, { DialogRef } from \"../../DialogComponent\";\nimport Button from \"../../Button\";\nimport { XHComponentCommonProps } from \"../../../types\";\n\nexport type ConfirmProps = {\n title?: string;\n header?: string;\n content: string;\n cancelText?: string;\n confirmText?: string;\n} & {\n /** 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串 */\n cancelColor?: string;\n /** 取消按钮的文字,最多 4 个字符 */\n cancelText?: string;\n /** 接口调用结束的回调函数(调用成功、失败都会执行) */\n complete?: (res: TaroGeneral.CallbackResult) => void;\n /** 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串 */\n confirmColor?: string;\n /** 确认按钮的文字,最多 4 个字符 */\n confirmText?: string;\n /** 提示的内容 */\n content?: string;\n /** 接口调用失败的回调函数 */\n fail?: (res: TaroGeneral.CallbackResult) => void;\n /** 接口调用成功的回调函数 */\n success?: (result: ConfirmPropsResult) => void;\n /** 提示的标题 */\n title?: string;\n} & XHComponentCommonProps;\n\nexport type ConfirmPropsResult = {\n /** 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) */\n cancel: boolean;\n /** 为 true 时,表示用户点击了确定按钮 */\n confirm: boolean;\n /** 调用结果 */\n errMsg: string;\n};\nconst Comfirm = (props: ConfirmProps): Promise<ConfirmPropsResult> => {\n const {\n title = \"\",\n content,\n confirmText = \"确定\",\n cancelText = \"取消\",\n ...rest\n } = props;\n return new Promise(resolve => {\n if (process.env.TARO_ENV === \"h5\") {\n const div = document.createElement(\"div\");\n\n const dialogRef = createRef<DialogRef>();\n const alertFooter = (\n <div className=\"xh-confirm-footer\">\n <Button\n ghost\n type=\"default\"\n shape=\"rectangle\"\n className=\"xh-confirm-footer-button xh-confirm-footer-cancel-button\"\n onClick={() => {\n ReactDOM.unmountComponentAtNode(div);\n resolve({ errMsg: \"ok\", confirm: false, cancel: true });\n }}\n >\n {cancelText}\n </Button>\n <Button\n ghost\n type=\"primary\"\n shape=\"rectangle\"\n className=\"xh-confirm-footer-button xh-confirm-footer-confirm-button\"\n onClick={() => {\n ReactDOM.unmountComponentAtNode(div);\n resolve({ errMsg: \"ok\", confirm: true, cancel: false });\n }}\n >\n {confirmText}\n </Button>\n </div>\n );\n ReactDOM.render(\n <DialogComponent\n header={title}\n footer={alertFooter}\n content={content}\n visible\n ref={dialogRef}\n {...rest}\n />,\n div\n );\n } else {\n showModal({\n title,\n content,\n confirmColor: \"#fe5e00\",\n cancelText,\n cancelColor: \"#666\",\n confirmText,\n ...rest,\n }).then(resolve);\n }\n });\n};\n\nexport default Comfirm;\n"],"names":["Comfirm","props","_a","title","content","_b","confirmText","_c","cancelText","rest","__rest","Promise","resolve","process","env","TARO_ENV","div_1","document","createElement","dialogRef","createRef","alertFooter","React","className","Button","ghost","type","shape","onClick","ReactDOM","unmountComponentAtNode","errMsg","confirm","cancel","render","DialogComponent","__assign","header","footer","visible","ref","showModal","confirmColor","cancelColor","then"],"mappings":"uQA0CM,IAAAA,EAAU,SAACC,GAEb,IAAAC,EAKED,EAAKE,MALPA,aAAQ,GAAED,EACVE,EAIEH,EAAKG,QAHPC,EAGEJ,cAHFK,OAAc,IAAAD,EAAA,OACdE,EAEEN,EAAKO,WAFPA,OAAU,IAAAD,EAAG,KAAIA,EACdE,EAAIC,EACLT,EANE,CAAA,QAAA,UAAA,cAAA,eAON,OAAO,IAAIU,SAAQ,SAAAC,GACjB,GAA6B,OAAzBC,QAAQC,IAAIC,SAAmB,CACjC,IAAMC,EAAMC,SAASC,cAAc,OAE7BC,EAAYC,IACZC,EACJC,EAAKJ,cAAA,MAAA,CAAAK,UAAU,qBACbD,EAAAJ,cAACM,EACC,CAAAC,OACA,EAAAC,KAAK,UACLC,MAAM,YACNJ,UAAU,2DACVK,QAAS,WACPC,EAASC,uBAAuBd,GAChCJ,EAAQ,CAAEmB,OAAQ,KAAMC,SAAS,EAAOC,QAAQ,GACjD,GAEAzB,GAEHc,EAAAJ,cAACM,EACC,CAAAC,OACA,EAAAC,KAAK,UACLC,MAAM,YACNJ,UAAU,4DACVK,QAAS,WACPC,EAASC,uBAAuBd,GAChCJ,EAAQ,CAAEmB,OAAQ,KAAMC,SAAS,EAAMC,QAAQ,GACjD,GAEC3B,IAIPuB,EAASK,OACPZ,EAAAJ,cAACiB,EAAeC,EAAA,CACdC,OAAQlC,EACRmC,OAAQjB,EACRjB,QAASA,EACTmC,SAAO,EACPC,IAAKrB,GACDV,IAENO,EAEH,MACCyB,EACEL,EAAA,CAAAjC,MAAKA,EACLC,QAAOA,EACPsC,aAAc,UACdlC,WAAUA,EACVmC,YAAa,OACbrC,YAAWA,GACRG,IACFmC,KAAKhC,EAEZ,GACF"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Dialog/Confirm/index.tsx"],"sourcesContent":["import React, { createRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { showModal } from \"@tarojs/taro\";\nimport DialogComponent, { DialogRef } from \"../../DialogComponent\";\nimport Button from \"../../Button\";\nimport { XHComponentCommonProps } from \"../../../types\";\n\nexport type ConfirmProps = {\n title?: string;\n header?: string;\n content: string;\n cancelText?: string;\n confirmText?: string;\n} & {\n /** 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串 */\n cancelColor?: string;\n /** 取消按钮的文字,最多 4 个字符 */\n cancelText?: string;\n /** 接口调用结束的回调函数(调用成功、失败都会执行) */\n complete?: (res: TaroGeneral.CallbackResult) => void;\n /** 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串 */\n confirmColor?: string;\n /** 确认按钮的文字,最多 4 个字符 */\n confirmText?: string;\n /** 提示的内容 */\n content?: string;\n /** 接口调用失败的回调函数 */\n fail?: (res: TaroGeneral.CallbackResult) => void;\n /** 接口调用成功的回调函数 */\n success?: (result: ConfirmPropsResult) => void;\n /** 提示的标题 */\n title?: string;\n} & XHComponentCommonProps;\n\nexport type ConfirmPropsResult = {\n /** 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) */\n cancel: boolean;\n /** 为 true 时,表示用户点击了确定按钮 */\n confirm: boolean;\n /** 调用结果 */\n errMsg: string;\n};\nconst Comfirm = (props: ConfirmProps): Promise<ConfirmPropsResult> => {\n const {\n title = \"\",\n content,\n confirmText = \"确定\",\n cancelText = \"取消\",\n ...rest\n } = props;\n return new Promise(resolve => {\n if (process.env.TARO_ENV === \"h5\") {\n const div = document.createElement(\"div\");\n\n const dialogRef = createRef<DialogRef>();\n const alertFooter = (\n <div className=\"xh-confirm-footer\">\n <Button\n ghost\n type=\"default\"\n shape=\"rectangle\"\n className=\"xh-confirm-footer-button xh-confirm-footer-cancel-button\"\n dataTrackId=\"xh-confirm-footer-cancel-button\"\n onClick={() => {\n ReactDOM.unmountComponentAtNode(div);\n resolve({ errMsg: \"ok\", confirm: false, cancel: true });\n }}\n >\n {cancelText}\n </Button>\n <Button\n ghost\n type=\"primary\"\n shape=\"rectangle\"\n className=\"xh-confirm-footer-button xh-confirm-footer-confirm-button\"\n dataTrackId=\"xh-confirm-footer-confirm-button\"\n onClick={() => {\n ReactDOM.unmountComponentAtNode(div);\n resolve({ errMsg: \"ok\", confirm: true, cancel: false });\n }}\n >\n {confirmText}\n </Button>\n </div>\n );\n ReactDOM.render(\n <DialogComponent\n header={title}\n footer={alertFooter}\n content={content}\n visible\n ref={dialogRef}\n {...rest}\n />,\n div\n );\n } else {\n showModal({\n title,\n content,\n confirmColor: \"#fe5e00\",\n cancelText,\n cancelColor: \"#666\",\n confirmText,\n ...rest,\n }).then(resolve);\n }\n });\n};\n\nexport default Comfirm;\n"],"names":["Comfirm","props","_a","title","content","_b","confirmText","_c","cancelText","rest","__rest","Promise","resolve","process","env","TARO_ENV","div_1","document","createElement","dialogRef","createRef","alertFooter","React","className","Button","ghost","type","shape","dataTrackId","onClick","ReactDOM","unmountComponentAtNode","errMsg","confirm","cancel","render","DialogComponent","__assign","header","footer","visible","ref","showModal","confirmColor","cancelColor","then"],"mappings":"uQA0CM,IAAAA,EAAU,SAACC,GAEb,IAAAC,EAKED,EAAKE,MALPA,aAAQ,GAAED,EACVE,EAIEH,EAAKG,QAHPC,EAGEJ,cAHFK,OAAc,IAAAD,EAAA,OACdE,EAEEN,EAAKO,WAFPA,OAAU,IAAAD,EAAG,KAAIA,EACdE,EAAIC,EACLT,EANE,CAAA,QAAA,UAAA,cAAA,eAON,OAAO,IAAIU,SAAQ,SAAAC,GACjB,GAA6B,OAAzBC,QAAQC,IAAIC,SAAmB,CACjC,IAAMC,EAAMC,SAASC,cAAc,OAE7BC,EAAYC,IACZC,EACJC,EAAKJ,cAAA,MAAA,CAAAK,UAAU,qBACbD,EAACJ,cAAAM,GACCC,OAAK,EACLC,KAAK,UACLC,MAAM,YACNJ,UAAU,2DACVK,YAAY,kCACZC,QAAS,WACPC,EAASC,uBAAuBf,GAChCJ,EAAQ,CAAEoB,OAAQ,KAAMC,SAAS,EAAOC,QAAQ,GACjD,GAEA1B,GAEHc,EAACJ,cAAAM,GACCC,OAAK,EACLC,KAAK,UACLC,MAAM,YACNJ,UAAU,4DACVK,YAAY,mCACZC,QAAS,WACPC,EAASC,uBAAuBf,GAChCJ,EAAQ,CAAEoB,OAAQ,KAAMC,SAAS,EAAMC,QAAQ,GACjD,GAEC5B,IAIPwB,EAASK,OACPb,EAAAJ,cAACkB,EAAeC,EAAA,CACdC,OAAQnC,EACRoC,OAAQlB,EACRjB,QAASA,EACToC,SAAO,EACPC,IAAKtB,GACDV,IAENO,EAEH,MACC0B,EACEL,EAAA,CAAAlC,MAAKA,EACLC,QAAOA,EACPuC,aAAc,UACdnC,WAAUA,EACVoC,YAAa,OACbtC,YAAWA,GACRG,IACFoC,KAAKjC,EAEZ,GACF"}
@@ -1,2 +1,2 @@
1
- import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as n,useImperativeHandle as a,useEffect as r}from"react";import c from"classnames";import{View as s}from"@tarojs/components";import i from"../Button/index.js";import l from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,p=o.content,u=o.className,h=void 0===u?"":u,v=o.visible,g=o.showCancel,x=void 0===g||g,E=o.confirmText,N=void 0===E?"确定":E,C=o.cancelText,b=void 0===C?"取消":C,j=o.footer,T=void 0!==j&&j,y=o.onConfirm,k=o.onCancel,w=o.onClose,z=o.portrait,S=void 0!==z&&z,_=o.tranparent,B=void 0!==_&&_,M=o.fancy,q=void 0!==M&&M,A=e(n(!1),2),D=A[0],F=A[1];a(f,(function(){return{close:G,open:H}}));var G=function(){w&&w(),F(!1)},H=function(){F(!0)};r((function(){v||w&&w(),F(v)}),[v]);var I=c("xh-dialog-ref",h,{show:D}),J=t.createElement(s,{className:c("xh-dialog-ref-content-footer-buttons",{portrait:S,fancy:q})},x&&t.createElement(i,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){k&&k(),G()},className:"xh-dialog-ref-content-footer-buttons-cancel"},b),t.createElement(i,{type:"primary",shape:"rectangle",size:"full",ghost:!q,className:"xh-dialog-ref-content-footer-buttons-confirm",onClick:function(){y&&y()},preventTime:0},N));return t.createElement(s,{className:I},t.createElement(l,null),t.createElement(m,{in:D,timeout:200,classNames:"scale"},t.createElement(s,{className:c("xh-dialog-ref-content",{tranparent:B})},d&&t.createElement(s,{className:"xh-dialog-ref-content-header"},d),t.createElement(s,{className:"xh-dialog-ref-content-content"},p),T||t.createElement(s,{className:"xh-dialog-ref-content-footer"},J))))}));export{f as default};
1
+ import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as a,useImperativeHandle as n,useEffect as r}from"react";import c from"classnames";import{View as i}from"@tarojs/components";import s from"../Button/index.js";import l from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,p=o.content,u=o.className,h=void 0===u?"":u,v=o.visible,g=o.showCancel,x=void 0===g||g,E=o.confirmText,N=void 0===E?"确定":E,T=o.cancelText,k=void 0===T?"取消":T,C=o.footer,b=void 0!==C&&C,j=o.onConfirm,y=o.onCancel,I=o.onClose,_=o.portrait,w=void 0!==_&&_,z=o.tranparent,S=void 0!==z&&z,B=o.fancy,D=void 0!==B&&B,M=o.dataTrackId,R=void 0===M?"DialogRef":M,q=e(a(!1),2),A=q[0],F=q[1];n(f,(function(){return{close:G,open:H}}));var G=function(){I&&I(),F(!1)},H=function(){F(!0)};r((function(){v||I&&I(),F(v)}),[v]);var J=c("xh-dialog-ref",h,{show:A}),K=t.createElement(i,{className:c("xh-dialog-ref-content-footer-buttons",{portrait:w,fancy:D})},x&&t.createElement(s,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){y&&y(),G()},className:"xh-dialog-ref-content-footer-buttons-cancel",dataTrackId:"".concat(R,"_cancel")},k),t.createElement(s,{type:"primary",shape:"rectangle",size:"full",ghost:!D,className:"xh-dialog-ref-content-footer-buttons-confirm",onClick:function(){j&&j()},preventTime:0,dataTrackId:"".concat(R,"_confirm")},N));return t.createElement(i,{className:J,dataTrackId:R},t.createElement(l,null),t.createElement(m,{in:A,timeout:200,classNames:"scale"},t.createElement(i,{className:c("xh-dialog-ref-content",{tranparent:S})},d&&t.createElement(i,{className:"xh-dialog-ref-content-header"},d),t.createElement(i,{className:"xh-dialog-ref-content-content"},p),b||t.createElement(i,{className:"xh-dialog-ref-content-footer"},K))))}));export{f as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n portrait?: boolean;\n fancy?: boolean;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n portrait = false,\n tranparent = false,\n fancy = false,\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View\n className={classNames(\"xh-dialog-ref-content-footer-buttons\", {\n portrait,\n fancy,\n })}\n >\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost={!fancy}\n className=\"xh-dialog-ref-content-footer-buttons-confirm\"\n onClick={handleConfirm}\n preventTime={0}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View className={dialogcls}>\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","portrait","_g","tranparent","_h","fancy","_j","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","Mask","CSSTransition","in","timeout"],"mappings":"yWAmCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAcEF,EAAKE,OAbPC,EAaEH,EAAKG,QAZPC,EAYEJ,EAZYK,UAAdA,OAAY,IAAAD,EAAA,KACZE,EAWEN,EAXKM,QACPC,EAUEP,EAAKQ,WAVPA,OAAU,IAAAD,GAAOA,EACjBE,EASET,EATgBU,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAQEX,EAReY,WAAjBA,OAAU,IAAAD,EAAG,KAAIA,EACjBE,EAOEb,SAPFc,cAAcD,EACdE,EAMEf,YALFgB,EAKEhB,EAAKgB,SAJPC,EAIEjB,EAAKiB,QAHPC,EAGElB,EAHcmB,SAAhBA,OAAW,IAAAD,KACXE,EAEEpB,EAAKqB,WAFPA,cAAkBD,EAClBE,EACEtB,EAAKuB,MADPA,OAAK,IAAAD,GAAQA,EAETE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoB5B,GAAS,WAAM,MAAC,CAClC6B,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZb,GAAWA,IACXW,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACH1B,GACHW,GAAWA,IAEbW,EAAetB,EACjB,GAAG,CAACA,IAEJ,IAAM2B,EAAYC,EAAW,gBAAiB7B,EAAW,CACvD8B,KAAMR,IAGFS,EACJC,EAACC,cAAAC,EACC,CAAAlC,UAAW6B,EAAW,uCAAwC,CAC5Df,SAAQA,EACRI,MAAKA,KAGNf,GACC6B,EAACC,cAAAE,EACC,CAAAC,OACA,EAAAC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QA7Ba,WACnB7B,GAAYA,IACZc,GACF,EA2BQzB,UAAU,+CAETO,GAGLyB,EAAAC,cAACE,EAAM,CACLM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAQlB,EACRlB,UAAU,+CACVwC,QA7CgB,WACpB9B,GAAaA,GAEf,EA2CM6B,YAAa,GAEZlC,IAqBP,OAfE2B,EAAAC,cAACC,EAAK,CAAAlC,UAAW4B,GACfI,EAAAC,cAACS,EAAO,MACRV,EAAAC,cAACU,EAAa,CAACC,GAAItB,EAAauB,QAAS,IAAKhB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAAClC,UAAW6B,EAAW,wBAAyB,CAAEb,WAAUA,KAC9DnB,GACCmC,EAAAC,cAACC,EAAI,CAAClC,UAAU,gCAAgCH,GAElDmC,EAAAC,cAACC,EAAK,CAAAlC,UAAU,iCAAiCF,GAChDW,GACCuB,EAAAC,cAACC,EAAI,CAAClC,UAAU,gCAAgC+B,KAO5D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n portrait?: boolean;\n fancy?: boolean;\n dataTrackId?: string;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n portrait = false,\n tranparent = false,\n fancy = false,\n dataTrackId = \"DialogRef\",\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View\n className={classNames(\"xh-dialog-ref-content-footer-buttons\", {\n portrait,\n fancy,\n })}\n >\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n dataTrackId={`${dataTrackId}_cancel`}\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost={!fancy}\n className=\"xh-dialog-ref-content-footer-buttons-confirm\"\n onClick={handleConfirm}\n preventTime={0}\n dataTrackId={`${dataTrackId}_confirm`}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View\n className={dialogcls}\n // @ts-ignore\n dataTrackId={dataTrackId}\n >\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","portrait","_g","tranparent","_h","fancy","_j","dataTrackId","_k","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","concat","Mask","CSSTransition","in","timeout"],"mappings":"yWAoCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAeEF,EAfIE,OACNC,EAcEH,EAdKG,QACPC,EAaEJ,YAbFK,OAAY,IAAAD,EAAA,GAAEA,EACdE,EAYEN,EAZKM,QACPC,EAWEP,aAXFQ,OAAa,IAAAD,GAAIA,EACjBE,EAUET,EAAKU,YAVPA,OAAc,IAAAD,EAAA,OACdE,EASEX,EAAKY,WATPA,OAAa,IAAAD,EAAA,KAAIA,EACjBE,EAQEb,EARYc,OAAdA,OAAS,IAAAD,GAAKA,EACdE,EAOEf,EAPOe,UACTC,EAMEhB,EAAKgB,SALPC,EAKEjB,EAAKiB,QAJPC,EAIElB,EAJcmB,SAAhBA,OAAQ,IAAAD,GAAQA,EAChBE,EAGEpB,EAHgBqB,WAAlBA,OAAU,IAAAD,GAAQA,EAClBE,EAEEtB,EAFWuB,MAAbA,OAAQ,IAAAD,GAAKA,EACbE,EACExB,EADuByB,YAAzBA,OAAW,IAAAD,EAAG,YAAWA,EAErBE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoB9B,GAAS,WAAM,MAAC,CAClC+B,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZf,GAAWA,IACXa,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACH5B,GACHW,GAAWA,IAEba,EAAexB,EACjB,GAAG,CAACA,IAEJ,IAAM6B,EAAYC,EAAW,gBAAiB/B,EAAW,CACvDgC,KAAMR,IAGFS,EACJC,EAACC,cAAAC,EACC,CAAApC,UAAW+B,EAAW,uCAAwC,CAC5DjB,SAAQA,EACRI,MAAKA,KAGNf,GACC+B,EAACC,cAAAE,GACCC,OAAK,EACLC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QA7Ba,WACnB/B,GAAYA,IACZgB,GACF,EA2BQ3B,UAAU,8CACVoB,YAAa,UAAGA,EAAW,YAE1Bb,GAGL2B,EAAAC,cAACE,EACC,CAAAM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAQpB,EACRlB,UAAU,+CACV0C,QA9CgB,WACpBhC,GAAaA,GAEf,EA4CM+B,YAAa,EACbrB,YAAa,GAAAwB,OAAGxB,EAAqB,aAEpCf,IAyBP,OAnBE6B,EAAAC,cAACC,EACC,CAAApC,UAAW8B,EAEXV,YAAaA,GAEbc,EAAAC,cAACU,EAAO,MACRX,EAAAC,cAACW,EAAa,CAACC,GAAIvB,EAAawB,QAAS,IAAKjB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAACpC,UAAW+B,EAAW,wBAAyB,CAAEf,WAAUA,KAC9DnB,GACCqC,EAAAC,cAACC,EAAI,CAACpC,UAAU,gCAAgCH,GAElDqC,EAAAC,cAACC,EAAK,CAAApC,UAAU,iCAAiCF,GAChDW,GACCyB,EAAAC,cAACC,EAAI,CAACpC,UAAU,gCAAgCiC,KAO5D"}
@@ -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 p=n((function(n,p){var u=n.onChange,d=n.maxlength,f=n.value,h=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=n.className,V=n.disabled,k=void 0!==V&&V,q=n.align,z=void 0===q?"left":q,D=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding","className","disabled","align"]),F="password"===h;function G(e){var a=s(e.target.value);e.target.value=a,u&&u(a)}function J(e){var a=s(e.target.value);b&&b(a)}var K=l(null);r(p,(function(){return{focus:function(){var e;null===(e=K.current)||void 0===e||e.focus()}}}));var P=c("xh-form-input",{column:"column"===j,border:R,padding:S},O);return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:P},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-main-center-readonly",{"xh-form-input-main-placeholder":!f},z)},f||v):t.createElement(i,a({},D,{password:F,ref:K,className:c("xh-form-input-main-center-native",z),maxlength:d,name:L,disabled:k,placeholder:v,type:h,value:f,onBlur:J,onInput:G}))),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:P},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":!f},z)},f||v):t.createElement("input",{ref:K,className:c("xh-form-input-main-center-native",z),maxLength:d,name:L,disabled:k,pattern:g,placeholder:v,type:h,value:f,onBlur:J,onInput:G})),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{p as default};
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 d=n((function(n,d){var p=n.onChange,u=n.maxlength,f=n.value,h=n.type,v=n.placeholder,x=n.label,E=n.labelHtml,N=n.RightComponent,b=n.onBlur,g=n.pattern,w=n.LeftComponent,y=n.LeftIcon,I=n.name,L=n.readonly,T=void 0!==L&&L,k=n.withArrow,C=void 0!==k&&k,_=n.direction,B=void 0===_?"row":_,H=n.border,j=void 0===H||H,A=n.mainExtra,R=n.padding,M=void 0!==R&&R,S=n.className,O=n.disabled,V=void 0!==O&&O,q=n.align,z=void 0===q?"left":q,D=n.dataTrackId,F=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding","className","disabled","align","dataTrackId"]),G="password"===h;function J(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 P=l(null);r(d,(function(){return{focus:function(){var e;null===(e=P.current)||void 0===e||e.focus()}}}));var Q=c("xh-form-input",{column:"column"===B,border:j,padding:M},S);return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:Q,dataTrackId:"".concat(D,"-wrapper")},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,y&&t.createElement(m,{className:"xh-form-input-main-left-label-icon"},y)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement(m,null,w)),t.createElement(m,{className:"xh-form-input-main-center"},T?t.createElement(o,{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!f},z)},f||v):t.createElement(i,a({},F,{dataTrackId:D,password:G,ref:P,className:c("xh-form-input-main-center-native",z),maxlength:u,name:I,disabled:V,placeholder:v,type:h,value:f,onBlur:K,onInput:J}))),A&&t.createElement(m,{className:"xh-form-input-main-extra"},A)),t.createElement(m,{className:"xh-form-input-right"},N,C&&t.createElement(m,{className:"arrow"}))):t.createElement("div",{className:Q,"data-track-id":"".concat(D,"-wrapper")},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,y&&t.createElement("div",{className:"xh-form-input-main-left-label-icon"},y)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement("div",null,w)),t.createElement("div",{className:"xh-form-input-main-center"},T?t.createElement("p",{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!f},z)},f||v):t.createElement("input",{ref:P,className:c("xh-form-input-main-center-native",z),maxLength:u,name:I,disabled:V,pattern:g,placeholder:v,type:h,value:f,onBlur:K,onInput:J,"data-track-id":D})),A&&t.createElement("div",{className:"xh-form-input-main-extra"},A)),t.createElement("div",{className:"xh-form-input-right"},N,C&&t.createElement("span",{className:"arrow"})))}));export{d 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 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 className?: string;\n disabled?: boolean;\n align?: \"left\" | \"right\"; // 文本对齐方式\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 className,\n disabled = false,\n align = \"left\",\n ...rest\n } = props;\n\n const password = type === \"password\";\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(\n \"xh-form-input\",\n {\n column: direction === \"column\",\n border,\n padding,\n },\n className\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(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n password={password}\n ref={inputRef}\n className={classNames(\n \"xh-form-input-main-center-native\",\n align\n )}\n maxlength={maxlength}\n name={name}\n disabled={disabled}\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(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className={classNames(\"xh-form-input-main-center-native\", align)}\n maxLength={maxlength}\n name={name}\n disabled={disabled}\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","className","_f","disabled","_g","align","rest","__rest","password","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","dangerouslySetInnerHTML","__html","Text","Input","__assign","ref","onInput","maxLength"],"mappings":"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"}
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 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 className?: string;\n disabled?: boolean;\n align?: \"left\" | \"right\"; // 文本对齐方式\n dataTrackId?: string;\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 className,\n disabled = false,\n align = \"left\",\n dataTrackId,\n ...rest\n } = props;\n\n const password = type === \"password\";\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(\n \"xh-form-input\",\n {\n column: direction === \"column\",\n border,\n padding,\n },\n className\n );\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View\n className={wrapperCls}\n // @ts-ignore\n dataTrackId={`${dataTrackId}-wrapper`}\n >\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(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n // @ts-ignore\n dataTrackId={dataTrackId}\n password={password}\n ref={inputRef}\n className={classNames(\n \"xh-form-input-main-center-native\",\n align\n )}\n maxlength={maxlength}\n name={name}\n disabled={disabled}\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} data-track-id={`${dataTrackId}-wrapper`}>\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(\n \"xh-form-input-main-center-readonly\",\n {\n \"xh-form-input-main-placeholder\": !value,\n },\n align\n )}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className={classNames(\"xh-form-input-main-center-native\", align)}\n maxLength={maxlength}\n name={name}\n disabled={disabled}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n data-track-id={dataTrackId}\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","className","_f","disabled","_g","align","dataTrackId","rest","__rest","password","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","concat","dangerouslySetInnerHTML","__html","Text","Input","ref","onInput","maxLength"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e,{forwardRef as n,useImperativeHandle as o}from"react";import r from"classnames";import{View as l}from"@tarojs/components";import t from"../FormInput/index.js";import{verifyIdcard as a}from"../src/utils/index.js";var c=n((function(n,c){var i=n.showScan,u=void 0!==i&&i,s=n.label,m=n.value,d=n.readOnly,p=n.direction,f=void 0===p?"column":p,v=n.onScan,h=n.placeholder,g=void 0===h?"请输入身份证":h,x=n.onError,b=n.onChange,E=n.maxlength,N=void 0===E?23:E,j=n.slot,y=n.className,C=n.border,w=n.onBlur;return o(c,(function(){return{isValid:a(m.replace(/\s/g,"")),focus:function(){var e;"object"==typeof c&&(null===(e=null==c?void 0:c.current)||void 0===e||e.focus())}}})),e.createElement(l,{className:r("xh-idnumber-input",y)},e.createElement(t,{padding:!0,ref:c,RightComponent:u&&e.createElement(l,{onClick:function(){null==v||v()},className:"xh-idnumber-input-scan"}),border:C,direction:f,label:s,maxlength:N,placeholder:g,readonly:d,type:"weapp"===process.env.TARO_ENV?"idcard":"text",value:m.replace(/\s/g,""),onBlur:function(e){null==w||w(),a(e)||null==x||x(""===e?"身份证号不能为空":"请输入正确的身份证号")},onChange:function(e){var n=e.replace(/\s/g,"");null==b||b(n)}}),j&&e.createElement(l,{className:"xh-idnumber-input-slot"},j))}));export{c as default};
1
+ import e,{forwardRef as n,useImperativeHandle as r}from"react";import o from"classnames";import{View as a}from"@tarojs/components";import t from"../FormInput/index.js";import{verifyIdcard as l}from"../src/utils/index.js";var c=n((function(n,c){var i=n.showScan,d=void 0!==i&&i,u=n.label,s=n.value,m=n.readOnly,p=n.direction,f=void 0===p?"column":p,v=n.onScan,h=n.placeholder,x=void 0===h?"请输入身份证":h,b=n.onError,g=n.onChange,E=n.maxlength,N=void 0===E?23:E,j=n.slot,k=n.className,y=n.border,C=n.onBlur,I=n.dataTrackId,T=void 0===I?"xh-idnumber":I;return r(c,(function(){return{isValid:l(s.replace(/\s/g,"")),focus:function(){var e;"object"==typeof c&&(null===(e=null==c?void 0:c.current)||void 0===e||e.focus())}}})),e.createElement(a,{className:o("xh-idnumber-input",k)},e.createElement(t,{dataTrackId:T,padding:!0,ref:c,RightComponent:d&&e.createElement(a,{onClick:function(){null==v||v()},className:"xh-idnumber-input-scan"}),border:y,direction:f,label:u,maxlength:N,placeholder:x,readonly:m,type:"weapp"===process.env.TARO_ENV?"idcard":"text",value:s.replace(/\s/g,""),onBlur:function(e){null==C||C(),l(e)||null==b||b(""===e?"身份证号不能为空":"请输入正确的身份证号")},onChange:function(e){var n=e.replace(/\s/g,"");null==g||g(n)}}),j&&e.createElement(a,{className:"xh-idnumber-input-slot",dataTrackId:"".concat(T,"-slot")},j))}));export{c as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/IDNumberInput/index.tsx"],"sourcesContent":["import React, { ReactNode, forwardRef, useImperativeHandle } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport XHFormInput from \"../FormInput\";\nimport \"./index.scss\";\nimport { verifyIdcard } from \"../../utils\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type IDNumberInputProps = {\n showScan?: boolean;\n label?: string;\n onChange?: (value: string) => void;\n value: string;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n direction?: \"column\" | \"row\";\n onScan?: () => void;\n onError?: (msg: string) => void;\n maxlength?: number;\n slot?: ReactNode;\n border?: boolean;\n onBlur?: () => void;\n} & XHComponentCommonProps;\n\nexport type IDNumberInputRef = {\n isValid: boolean;\n focus: () => void;\n};\n\nconst BankCardNumberInput = forwardRef<IDNumberInputRef, IDNumberInputProps>(\n (props, fromRef) => {\n const {\n showScan = false,\n label,\n value,\n readOnly,\n direction = \"column\",\n onScan,\n placeholder = \"请输入身份证\",\n onError,\n onChange,\n maxlength = 23,\n slot,\n className,\n border,\n onBlur,\n } = props;\n\n const handleBlur = value => {\n onBlur?.();\n if (!verifyIdcard(value))\n onError?.(value === \"\" ? \"身份证号不能为空\" : \"请输入正确的身份证号\");\n };\n\n const handleChange = value => {\n const newValue = value.replace(/\\s/g, \"\");\n\n onChange?.(newValue);\n };\n\n const handleOnScan = () => {\n onScan?.();\n };\n\n useImperativeHandle(fromRef, () => {\n return {\n isValid: verifyIdcard(value.replace(/\\s/g, \"\")),\n focus: () => {\n if (typeof fromRef === \"object\") {\n fromRef?.current?.focus();\n }\n },\n };\n });\n\n return (\n <View className={classNames(\"xh-idnumber-input\", className)}>\n <XHFormInput\n padding\n ref={fromRef}\n RightComponent={\n showScan && (\n <View\n onClick={handleOnScan}\n className=\"xh-idnumber-input-scan\"\n ></View>\n )\n }\n border={border}\n direction={direction}\n label={label}\n maxlength={maxlength}\n placeholder={placeholder}\n readonly={readOnly}\n type={process.env.TARO_ENV === \"weapp\" ? \"idcard\" : \"text\"}\n value={value.replace(/\\s/g, \"\")}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n {slot && <View className=\"xh-idnumber-input-slot\">{slot}</View>}\n </View>\n );\n }\n);\n\nexport default BankCardNumberInput;\n"],"names":["BankCardNumberInput","forwardRef","props","fromRef","_a","showScan","label","value","readOnly","_b","direction","onScan","_c","placeholder","onError","onChange","_d","maxlength","slot","className","border","onBlur","useImperativeHandle","isValid","verifyIdcard","replace","focus","current","React","createElement","View","classNames","XHFormInput","padding","ref","RightComponent","onClick","readonly","type","process","env","TARO_ENV","newValue"],"mappings":"6NA+BA,IAAMA,EAAsBC,GAC1B,SAACC,EAAOC,GAEJ,IAAAC,EAcEF,EAAKG,SAdPA,OAAQ,IAAAD,GAAQA,EAChBE,EAaEJ,EAbGI,MACLC,EAYEL,QAXFM,EAWEN,WAVFO,EAUEP,EAVkBQ,UAApBA,OAAY,IAAAD,EAAA,SAAQA,EACpBE,EASET,SARFU,EAQEV,EARoBW,YAAtBA,OAAW,IAAAD,EAAG,SAAQA,EACtBE,EAOEZ,UANFa,EAMEb,WALFc,EAKEd,EALYe,UAAdA,OAAY,IAAAD,EAAA,GAAEA,EACdE,EAIEhB,OAHFiB,EAGEjB,EAAKiB,UAFPC,EAEElB,EAFIkB,OACNC,EACEnB,SA6BJ,OAXAoB,EAAoBnB,GAAS,WAC3B,MAAO,CACLoB,QAASC,EAAajB,EAAMkB,QAAQ,MAAO,KAC3CC,MAAO,iBACkB,iBAAZvB,IACO,QAAhBC,EAAAD,aAAA,EAAAA,EAASwB,eAAO,IAAAvB,GAAAA,EAAEsB,QAErB,EAEL,IAGEE,EAACC,cAAAC,EAAK,CAAAX,UAAWY,EAAW,oBAAqBZ,IAC/CS,EAAAC,cAACG,EACC,CAAAC,WACAC,IAAK/B,EACLgC,eACE9B,GACEuB,EAAAC,cAACC,EACC,CAAAM,QAvBS,WACnBzB,SAAAA,GACF,EAsBYQ,UAAU,2BAIhBC,OAAQA,EACRV,UAAWA,EACXJ,MAAOA,EACPW,UAAWA,EACXJ,YAAaA,EACbwB,SAAU7B,EACV8B,KAA+B,UAAzBC,QAAQC,IAAIC,SAAuB,SAAW,OACpDlC,MAAOA,EAAMkB,QAAQ,MAAO,IAC5BJ,OAhDa,SAAAd,GACjBc,SAAAA,IACKG,EAAajB,IAChBO,SAAAA,EAAoB,KAAVP,EAAe,WAAa,aAC1C,EA6CMQ,SA3Ce,SAAAR,GACnB,IAAMmC,EAAWnC,EAAMkB,QAAQ,MAAO,IAEtCV,SAAAA,EAAW2B,EACb,IAyCKxB,GAAQU,EAAAC,cAACC,EAAI,CAACX,UAAU,0BAA0BD,GAGzD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/IDNumberInput/index.tsx"],"sourcesContent":["import React, { ReactNode, forwardRef, useImperativeHandle } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport XHFormInput from \"../FormInput\";\nimport \"./index.scss\";\nimport { verifyIdcard } from \"../../utils\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type IDNumberInputProps = {\n showScan?: boolean;\n label?: string;\n onChange?: (value: string) => void;\n value: string;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n direction?: \"column\" | \"row\";\n onScan?: () => void;\n onError?: (msg: string) => void;\n maxlength?: number;\n slot?: ReactNode;\n border?: boolean;\n onBlur?: () => void;\n dataTrackId?: string;\n} & XHComponentCommonProps;\n\nexport type IDNumberInputRef = {\n isValid: boolean;\n focus: () => void;\n};\n\nconst BankCardNumberInput = forwardRef<IDNumberInputRef, IDNumberInputProps>(\n (props, fromRef) => {\n const {\n showScan = false,\n label,\n value,\n readOnly,\n direction = \"column\",\n onScan,\n placeholder = \"请输入身份证\",\n onError,\n onChange,\n maxlength = 23,\n slot,\n className,\n border,\n onBlur,\n dataTrackId = \"xh-idnumber\",\n } = props;\n\n const handleBlur = value => {\n onBlur?.();\n if (!verifyIdcard(value))\n onError?.(value === \"\" ? \"身份证号不能为空\" : \"请输入正确的身份证号\");\n };\n\n const handleChange = value => {\n const newValue = value.replace(/\\s/g, \"\");\n\n onChange?.(newValue);\n };\n\n const handleOnScan = () => {\n onScan?.();\n };\n\n useImperativeHandle(fromRef, () => {\n return {\n isValid: verifyIdcard(value.replace(/\\s/g, \"\")),\n focus: () => {\n if (typeof fromRef === \"object\") {\n fromRef?.current?.focus();\n }\n },\n };\n });\n\n return (\n <View className={classNames(\"xh-idnumber-input\", className)}>\n <XHFormInput\n dataTrackId={dataTrackId}\n padding\n ref={fromRef}\n RightComponent={\n showScan && (\n <View\n onClick={handleOnScan}\n className=\"xh-idnumber-input-scan\"\n ></View>\n )\n }\n border={border}\n direction={direction}\n label={label}\n maxlength={maxlength}\n placeholder={placeholder}\n readonly={readOnly}\n type={process.env.TARO_ENV === \"weapp\" ? \"idcard\" : \"text\"}\n value={value.replace(/\\s/g, \"\")}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n {slot && (\n <View\n className=\"xh-idnumber-input-slot\"\n // @ts-ignore\n dataTrackId={`${dataTrackId}-slot`}\n >\n {slot}\n </View>\n )}\n </View>\n );\n }\n);\n\nexport default BankCardNumberInput;\n"],"names":["BankCardNumberInput","forwardRef","props","fromRef","_a","showScan","label","value","readOnly","_b","direction","onScan","_c","placeholder","onError","onChange","_d","maxlength","slot","className","border","onBlur","_e","dataTrackId","useImperativeHandle","isValid","verifyIdcard","replace","focus","current","React","createElement","View","classNames","XHFormInput","padding","ref","RightComponent","onClick","readonly","type","process","env","TARO_ENV","newValue","concat"],"mappings":"6NAgCA,IAAMA,EAAsBC,GAC1B,SAACC,EAAOC,GAEJ,IAAAC,EAeEF,EAfcG,SAAhBA,OAAW,IAAAD,KACXE,EAcEJ,EAAKI,MAbPC,EAaEL,EAbGK,MACLC,EAYEN,WAXFO,EAWEP,EAXkBQ,UAApBA,OAAY,IAAAD,EAAA,WACZE,EAUET,EAAKS,OATPC,EASEV,cATFW,OAAc,IAAAD,EAAA,SAAQA,EACtBE,EAQEZ,UAPFa,EAOEb,EAAKa,SANPC,EAMEd,YANFe,aAAY,GAAED,EACdE,EAKEhB,EALEgB,KACJC,EAIEjB,YAHFkB,EAGElB,EAAKkB,OAFPC,EAEEnB,EAFImB,OACNC,EACEpB,EAAKqB,YADPA,OAAW,IAAAD,EAAG,cAAaA,EA8B7B,OAXAE,EAAoBrB,GAAS,WAC3B,MAAO,CACLsB,QAASC,EAAanB,EAAMoB,QAAQ,MAAO,KAC3CC,MAAO,iBACkB,iBAAZzB,IACO,QAAhBC,EAAAD,aAAA,EAAAA,EAAS0B,eAAO,IAAAzB,GAAAA,EAAEwB,QAErB,EAEL,IAGEE,EAACC,cAAAC,EAAK,CAAAb,UAAWc,EAAW,oBAAqBd,IAC/CW,EAAAC,cAACG,EACC,CAAAX,YAAaA,EACbY,SACA,EAAAC,IAAKjC,EACLkC,eACEhC,GACEyB,EAAAC,cAACC,EACC,CAAAM,QAxBS,WACnB3B,SAAAA,GACF,EAuBYQ,UAAU,2BAIhBC,OAAQA,EACRV,UAAWA,EACXJ,MAAOA,EACPW,UAAWA,EACXJ,YAAaA,EACb0B,SAAU/B,EACVgC,KAA+B,UAAzBC,QAAQC,IAAIC,SAAuB,SAAW,OACpDpC,MAAOA,EAAMoB,QAAQ,MAAO,IAC5BN,OAjDa,SAAAd,GACjBc,SAAAA,IACKK,EAAanB,IAChBO,SAAAA,EAAoB,KAAVP,EAAe,WAAa,aAC1C,EA8CMQ,SA5Ce,SAAAR,GACnB,IAAMqC,EAAWrC,EAAMoB,QAAQ,MAAO,IAEtCZ,SAAAA,EAAW6B,EACb,IA0CK1B,GACCY,EAAAC,cAACC,EACC,CAAAb,UAAU,yBAEVI,YAAa,GAAGsB,OAAAtB,EAAkB,UAEjCL,GAKX"}
@@ -1,2 +1,2 @@
1
- import{__rest as o,__assign as s}from"../node_modules/tslib/tslib.es6.js";import e from"react";import r from"classnames";import{pxTransform as t}from"../src/utils/index.js";var i=function(i){var c=i.icon,a=void 0===c?"":c,l=i.size,m=void 0===l?0:l,n=i.className,f=i.color,d=i.style,p=o(i,["icon","size","className","color","style"]),u=a&&"xh-icon-".concat(a),v=r("xh-icon",u,n),x=s(s(s({},d),m>0?{fontSize:t(m)}:{}),{color:f});return e.createElement("span",s({className:v},{style:x},p))};export{i as default};
1
+ import{__rest as o,__assign as s}from"../node_modules/tslib/tslib.es6.js";import a from"react";import e from"classnames";import{pxTransform as t}from"../src/utils/index.js";var r=function(r){var c=r.icon,i=void 0===c?"":c,l=r.size,m=void 0===l?0:l,n=r.className,d=r.color,f=r.style,p=o(r,["icon","size","className","color","style"]),u=i&&"xh-icon-".concat(i),v=e("xh-icon",u,n),x=s(s(s({},f),m>0?{fontSize:t(m)}:{}),{color:d});return a.createElement("span",s({className:v},{style:x},{"data-track-id":r.dataTrackId},p))};export{r as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -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 | \"play\"\n | \"arrowLeft\"\n | \"arrowRight\"\n | \"keyboardClose\"\n | \"add\"\n | \"tongxunlu\"\n | \"zhuyi\"\n | \"duigou\"\n | \"edit2\"\n | \"alipay\"\n | \"wechat\"\n | \"friendPay\"\n | \"pen\"\n | \"location\"\n | \"search\"\n | \"qa\"\n | \"thumbsUp\"\n | \"thumbsDown\"\n | \"thumbsUpFull\"\n | \"thumbsDownFull\"\n | \"waiting\"\n | \"scan2\"\n | \"safety\"\n | \"report\"\n | \"forbidden\"\n | \"unlock\"\n | (string & {});\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 ...(size > 0 ? { 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":"6KA8EM,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,EAAAA,EAAA,CAAA,EACXR,GACCH,EAAO,EAAI,CAAEY,SAAUC,EAAYb,IAAU,CAAA,GACjD,CAAAE,MAAKA,IAGP,OAAOY,EAAMC,cAAA,OAAAJ,EAAA,CAAAV,UAAWO,GAAa,CAAEL,MAAOO,GAAkBN,GAClE"}
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 | \"play\"\n | \"arrowLeft\"\n | \"arrowRight\"\n | \"keyboardClose\"\n | \"add\"\n | \"tongxunlu\"\n | \"zhuyi\"\n | \"duigou\"\n | \"edit2\"\n | \"alipay\"\n | \"wechat\"\n | \"friendPay\"\n | \"pen\"\n | \"location\"\n | \"search\"\n | \"qa\"\n | \"thumbsUp\"\n | \"thumbsDown\"\n | \"thumbsUpFull\"\n | \"thumbsDownFull\"\n | \"waiting\"\n | \"scan2\"\n | \"safety\"\n | \"report\"\n | \"forbidden\"\n | \"unlock\"\n | (string & {});\n\nexport type XHIconProps = {\n icon: XHIcon;\n size?: number;\n color?: StandardLonghandProperties[\"color\"];\n style?: React.CSSProperties;\n onClick?: () => void;\n dataTrackId?: string;\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 ...(size > 0 ? { fontSize: pxTransform(size) } : {}),\n color,\n };\n\n return (\n <span\n className={iconCls}\n {...{ style: finalStyle }}\n data-track-id={props.dataTrackId}\n {...rest}\n />\n );\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","dataTrackId"],"mappings":"6KA+EM,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,EAAAA,EAAA,CAAA,EACXR,GACCH,EAAO,EAAI,CAAEY,SAAUC,EAAYb,IAAU,CAAA,GACjD,CAAAE,MAAKA,IAGP,OACEY,EACEC,cAAA,OAAAJ,EAAA,CAAAV,UAAWO,GACP,CAAEL,MAAOO,GAAY,CAAA,gBACVd,EAAMoB,aACjBZ,GAGV"}
@@ -1,2 +1,2 @@
1
- import{__rest as t,__read as e,__assign as s}from"../node_modules/tslib/tslib.es6.js";import r,{useState as o,useEffect as i,useMemo as c}from"react";import{Image as a}from"@tarojs/components";import{getImageInfo as m}from"@tarojs/taro";import n from"classnames";import{pxTransform as h}from"../src/utils/index.js";var l=function(l){var f=l.width,d=void 0===f?0:f,g=l.height,p=void 0===g?0:g,u=l.src,v=l.className,N=t(l,["width","height","src","className"]),w=e(o({}),2),j=w[0],E=w[1];i((function(){"h5"===process.env.TARO_ENV||v||m({src:u,success:function(t){"getImageInfo:ok"===t.errMsg&&E({width:t.width,height:t.height})}})}),[]);var x=c((function(){var t=j||{};return d&&(t.width="".concat(h(d))),p&&(t.height="".concat(h(p))),t}),[d,p,j]),_=n("xh-image",v);return"h5"!==process.env.TARO_ENV?r.createElement(a,{src:u,style:s(s({},x),N),className:_}):r.createElement("img",s({src:u,style:x,className:_},N))};export{l as default};
1
+ import{__rest as t,__read as r,__assign as e}from"../node_modules/tslib/tslib.es6.js";import a,{useState as s,useEffect as o,useMemo as c}from"react";import{Image as i}from"@tarojs/components";import{getImageInfo as m}from"@tarojs/taro";import n from"classnames";import{pxTransform as d}from"../src/utils/index.js";var h=function(h){var l=h.width,f=void 0===l?0:l,g=h.height,p=void 0===g?0:g,u=h.src,v=h.className,N=h.dataTrackId,k=t(h,["width","height","src","className","dataTrackId"]),w=r(s({}),2),I=w[0],T=w[1];o((function(){"h5"===process.env.TARO_ENV||v||m({src:u,success:function(t){"getImageInfo:ok"===t.errMsg&&T({width:t.width,height:t.height})}})}),[]);var j=c((function(){var t=I||{};return f&&(t.width="".concat(d(f))),p&&(t.height="".concat(d(p))),t}),[f,p,I]),E=n("xh-image",v,N);return"h5"!==process.env.TARO_ENV?a.createElement(i,{src:u,style:e(e({},j),k),className:E,dataTrackId:N}):a.createElement("img",e({src:u,style:j,className:E,"data-track-id":N},k))};export{h as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Image/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from \"react\";\nimport { Image } from \"@tarojs/components\";\nimport { getImageInfo } from \"@tarojs/taro\";\nimport classNames from \"classnames\";\n\nimport { pxTransform } from \"../../utils/index\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type ImageProps = {\n width?: number;\n height?: number;\n src: string;\n alt?: string;\n style?: React.CSSProperties;\n} & XHComponentCommonProps;\n\nconst XHImage: FC<ImageProps> = props => {\n const { width = 0, height = 0, src, className, ...rest } = props;\n const [defaultSize, setDefaultSize] = useState<{\n width?: number;\n height?: number;\n }>({});\n\n useEffect(() => {\n if (process.env.TARO_ENV !== \"h5\" && !className) {\n getImageInfo({\n src,\n success: res => {\n if (res.errMsg === \"getImageInfo:ok\") {\n console.log(res);\n setDefaultSize({ width: res.width, height: res.height });\n }\n },\n });\n }\n }, []);\n\n const size = useMemo(() => {\n let computedSize: { width?: string | number; height?: string | number } =\n defaultSize || {};\n if (width) {\n computedSize.width = `${pxTransform(width)}`;\n }\n if (height) {\n computedSize.height = `${pxTransform(height)}`;\n }\n\n return computedSize;\n }, [width, height, defaultSize]);\n\n const imgCls = classNames(\"xh-image\", className);\n\n return process.env.TARO_ENV !== \"h5\" ? (\n <Image src={src} style={{ ...size, ...rest }} className={imgCls} />\n ) : (\n <img src={src} style={size} className={imgCls} {...rest} />\n );\n};\n\nexport default XHImage;\n"],"names":["XHImage","props","_a","width","_b","height","src","className","rest","__rest","_c","__read","useState","defaultSize","setDefaultSize","useEffect","process","env","TARO_ENV","getImageInfo","success","res","errMsg","size","useMemo","computedSize","concat","pxTransform","imgCls","classNames","React","Image","style","__assign","createElement"],"mappings":"2TAiBM,IAAAA,EAA0B,SAAAC,GACtB,IAAAC,EAAmDD,EAA1CE,MAATA,OAAQ,IAAAD,EAAA,EAACA,EAAEE,EAAwCH,EAAKI,OAA7CA,aAAS,EAACD,EAAEE,EAA4BL,EAAzBK,IAAEC,EAAuBN,EAAdM,UAAKC,EAASC,EAAAR,EAArD,CAAA,QAAA,SAAA,MAAA,cACAS,EAAAC,EAAgCC,EAGnC,CAAE,GAAC,GAHCC,EAAWH,EAAA,GAAEI,OAKpBC,GAAU,WACqB,OAAzBC,QAAQC,IAAIC,UAAsBX,GACpCY,EAAa,CACXb,IAAGA,EACHc,QAAS,SAAAC,GACY,oBAAfA,EAAIC,QAENR,EAAe,CAAEX,MAAOkB,EAAIlB,MAAOE,OAAQgB,EAAIhB,QAElD,GAGN,GAAE,IAEH,IAAMkB,EAAOC,GAAQ,WACnB,IAAIC,EACFZ,GAAe,GAQjB,OAPIV,IACFsB,EAAatB,MAAQ,GAAAuB,OAAGC,EAAYxB,KAElCE,IACFoB,EAAapB,OAAS,GAAAqB,OAAGC,EAAYtB,KAGhCoB,CACR,GAAE,CAACtB,EAAOE,EAAQQ,IAEbe,EAASC,EAAW,WAAYtB,GAEtC,MAAgC,OAAzBS,QAAQC,IAAIC,SACjBY,gBAACC,EAAK,CAACzB,IAAKA,EAAK0B,MAAKC,EAAAA,EAAA,CAAA,EAAOV,GAASf,GAAQD,UAAWqB,IAEzDE,EAAKI,cAAA,MAAAD,EAAA,CAAA3B,IAAKA,EAAK0B,MAAOT,EAAMhB,UAAWqB,GAAYpB,GAEvD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Image/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useMemo, useState } from \"react\";\nimport { Image } from \"@tarojs/components\";\nimport { getImageInfo } from \"@tarojs/taro\";\nimport classNames from \"classnames\";\n\nimport { pxTransform } from \"../../utils/index\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type ImageProps = {\n width?: number;\n height?: number;\n src: string;\n alt?: string;\n style?: React.CSSProperties;\n dataTrackId?: string;\n} & XHComponentCommonProps;\n\nconst XHImage: FC<ImageProps> = props => {\n const { width = 0, height = 0, src, className, dataTrackId, ...rest } = props;\n const [defaultSize, setDefaultSize] = useState<{\n width?: number;\n height?: number;\n }>({});\n\n useEffect(() => {\n if (process.env.TARO_ENV !== \"h5\" && !className) {\n getImageInfo({\n src,\n success: res => {\n if (res.errMsg === \"getImageInfo:ok\") {\n console.log(res);\n setDefaultSize({ width: res.width, height: res.height });\n }\n },\n });\n }\n }, []);\n\n const size = useMemo(() => {\n let computedSize: { width?: string | number; height?: string | number } =\n defaultSize || {};\n if (width) {\n computedSize.width = `${pxTransform(width)}`;\n }\n if (height) {\n computedSize.height = `${pxTransform(height)}`;\n }\n\n return computedSize;\n }, [width, height, defaultSize]);\n\n const imgCls = classNames(\"xh-image\", className, dataTrackId);\n\n return process.env.TARO_ENV !== \"h5\" ? (\n <Image\n src={src}\n style={{ ...size, ...rest }}\n className={imgCls}\n // @ts-ignore\n dataTrackId={dataTrackId}\n />\n ) : (\n <img\n src={src}\n style={size}\n className={imgCls}\n data-track-id={dataTrackId}\n {...rest}\n />\n );\n};\n\nexport default XHImage;\n"],"names":["XHImage","props","_a","width","_b","height","src","className","dataTrackId","rest","__rest","_c","__read","useState","defaultSize","setDefaultSize","useEffect","process","env","TARO_ENV","getImageInfo","success","res","errMsg","size","useMemo","computedSize","concat","pxTransform","imgCls","classNames","React","createElement","Image","style","__assign"],"mappings":"2TAkBM,IAAAA,EAA0B,SAAAC,GACtB,IAAAC,EAAgED,EAAKE,MAArEA,aAAQ,EAACD,EAAEE,EAAqDH,EAA3CI,OAAVA,OAAS,IAAAD,EAAA,IAAGE,EAAyCL,MAApCM,EAAoCN,EAAKM,UAA9BC,EAAyBP,EAAKO,YAAdC,EAAIC,EAAKT,EAAlE,CAAA,QAAA,SAAA,MAAA,YAAA,gBACAU,EAAAC,EAAgCC,EAGnC,CAAE,GAAC,GAHCC,EAAWH,EAAA,GAAEI,OAKpBC,GAAU,WACqB,OAAzBC,QAAQC,IAAIC,UAAsBZ,GACpCa,EAAa,CACXd,IAAGA,EACHe,QAAS,SAAAC,GACY,oBAAfA,EAAIC,QAENR,EAAe,CAAEZ,MAAOmB,EAAInB,MAAOE,OAAQiB,EAAIjB,QAElD,GAGN,GAAE,IAEH,IAAMmB,EAAOC,GAAQ,WACnB,IAAIC,EACFZ,GAAe,GAQjB,OAPIX,IACFuB,EAAavB,MAAQ,GAAAwB,OAAGC,EAAYzB,KAElCE,IACFqB,EAAarB,OAAS,GAAAsB,OAAGC,EAAYvB,KAGhCqB,CACR,GAAE,CAACvB,EAAOE,EAAQS,IAEbe,EAASC,EAAW,WAAYvB,EAAWC,GAEjD,MAAgC,OAAzBS,QAAQC,IAAIC,SACjBY,EAACC,cAAAC,GACC3B,IAAKA,EACL4B,MAAKC,EAAAA,EAAA,CAAA,EAAOX,GAASf,GACrBF,UAAWsB,EAEXrB,YAAaA,IAGfuB,EAAAC,cAAA,MAAAG,EAAA,CACE7B,IAAKA,EACL4B,MAAOV,EACPjB,UAAWsB,EACI,gBAAArB,GACXC,GAGV"}
@@ -1,2 +1,2 @@
1
- import{__rest as e,__read as n,__assign as o}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as r,useState as a,useRef as l,useImperativeHandle as i,useEffect as s}from"react";import c from"classnames";import{View as u}from"@tarojs/components";import m from"./Keyboard.js";import{isLicenseNo as d,replaceCharByIndex as h}from"../src/utils/index.js";var f=r((function(r,f){var v=r.value,p=void 0===v?"":v,b=r.onChange,g=r.className,N=r.showKeyboard,x=void 0!==N&&N,w=r.padding,C=void 0!==w&&w,E=r.border,P=void 0!==E&&E;r.onFinish;var j=r.autoScroll,y=void 0===j||j,O=r.label,k=e(r,["value","onChange","className","showKeyboard","padding","border","onFinish","autoScroll","label"]),K=n(a(p.length),2),V=K[0],F=K[1],I=n(a(x),2),S=I[0],_=I[1],A=l(null);i(f,(function(){return{isValid:d(p)}}),[p]);s((function(){S&&A.current&&y&&"h5"===process.env.TARO_ENV&&A.current.scrollIntoView({behavior:"smooth"})}),[S,y]);var D=c("xh-licensePlate",g,{padding:C},{border:P});return t.createElement(u,{className:D},O&&t.createElement("label",{className:"xh-licensePlate-label"},O),t.createElement(u,{className:"xh-licensePlate-input",onClick:function(e){e.stopPropagation(),_(!0)},ref:A},function(){for(var e=[],n=function(n){var o=p[n];e.push(t.createElement(u,{key:n,className:c("xh-licensePlate-input-item",{active:V===n,showNew:7===n&&8!==p.length}),onClick:function(){var e;(e=n)>p.length-1||F(e)}},"O"===o?"":o))},o=0;o<8;o++)n(o);return e}()),t.createElement(m,o({activeIndex:V,show:S,value:p,onChange:function(e){F((function(n){return e.replace(/O/g,"").length>=8?n:n+1})),b(e)},onDelete:function(){var e=p[V+1],n=h(p,V,e?"O":"");0!==n.length&&F((function(e){return e-1})),b(n)},onClose:function(){_(!1)}},k)))}));export{f as default};
1
+ import{__rest as e,__read as n,__assign as a}from"../node_modules/tslib/tslib.es6.js";import o,{forwardRef as t,useState as r,useRef as l,useImperativeHandle as i,useEffect as c}from"react";import s from"classnames";import{View as u}from"@tarojs/components";import d from"./Keyboard.js";import{isLicenseNo as m,replaceCharByIndex as h}from"../src/utils/index.js";var f=t((function(t,f){var v=t.value,p=void 0===v?"":v,b=t.onChange,g=t.className,N=t.showKeyboard,x=void 0!==N&&N,k=t.padding,w=void 0!==k&&k,C=t.border,E=void 0!==C&&C;t.onFinish;var P=t.autoScroll,j=void 0===P||P,y=t.label,I=t.dataTrackId,O=e(t,["value","onChange","className","showKeyboard","padding","border","onFinish","autoScroll","label","dataTrackId"]),K=n(r(p.length),2),T=K[0],V=K[1],F=n(r(x),2),S=F[0],_=F[1],A=l(null);i(f,(function(){return{isValid:m(p)}}),[p]);c((function(){S&&A.current&&j&&"h5"===process.env.TARO_ENV&&A.current.scrollIntoView({behavior:"smooth"})}),[S,j]);var D=s("xh-licensePlate",g,{padding:w},{border:E});return o.createElement(u,{className:D,"data-track-id":I},y&&o.createElement("label",{className:"xh-licensePlate-label"},y),o.createElement(u,{className:"xh-licensePlate-input",onClick:function(e){e.stopPropagation(),_(!0)},ref:A},function(){for(var e=[],n=function(n){var a=p[n];e.push(o.createElement(u,{key:n,className:s("xh-licensePlate-input-item",{active:T===n,showNew:7===n&&8!==p.length}),onClick:function(){var e;(e=n)>p.length-1||V(e)}},"O"===a?"":a))},a=0;a<8;a++)n(a);return e}()),o.createElement(d,a({activeIndex:T,show:S,value:p,onChange:function(e){V((function(n){return e.replace(/O/g,"").length>=8?n:n+1})),b(e)},onDelete:function(){var e=p[T+1],n=h(p,T,e?"O":"");0!==n.length&&V((function(e){return e-1})),b(n)},onClose:function(){_(!1)}},O)))}));export{f as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/LicensePlateInput/index.tsx"],"sourcesContent":["import React, {\n useImperativeHandle,\n forwardRef,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Keyboard from \"./Keyboard\";\nimport { isLicenseNo, replaceCharByIndex } from \"../../utils\";\n\nimport \"./index.scss\";\n\nexport type LicensePlateProps = {\n value: string;\n onChange: (index: string) => void;\n /**\n * 是否默认展示键盘\n */\n showKeyboard?: boolean;\n closeText?: string;\n label?: ReactNode;\n onFinish?: () => void;\n padding?: boolean;\n border?: boolean;\n autoScroll?: boolean;\n} & XHComponentCommonProps;\n\nconst LENGTH = 8;\n\nexport type LicensePlateInputRef = {\n /**\n * 是否有效,组件会用大写字母(O) 来代替空位,如果要自己校验,那么就得判断有没有“O”来判断有没有空格\n */\n isValid: boolean;\n};\n\nconst LicensePlateInput = forwardRef<LicensePlateInputRef, LicensePlateProps>(\n (props, fromRef) => {\n const {\n value = \"\",\n onChange,\n className,\n showKeyboard = false,\n padding = false,\n border = false,\n onFinish,\n autoScroll = true,\n label,\n ...rest\n } = props;\n\n const [activeIndex, setActiveIndex] = useState(value.length);\n\n const [show, setShowKeyboard] = useState(showKeyboard);\n\n const InputRef = useRef<HTMLDivElement>(null);\n\n /**\n * 空位用“O”代替(大写字母 O)\n * @param neVal 新值\n */\n const handleOnChage = neVal => {\n setActiveIndex(old => {\n if (neVal.replace(/O/g, \"\").length >= LENGTH) return old;\n return old + 1;\n });\n // if (neVal.length === LENGTH) {\n // onFinish?.();\n // setShowKeyboard(false);\n // }\n onChange(neVal);\n };\n\n const handleKeyClick = (index: number) => {\n if (index > value.length - 1) return;\n setActiveIndex(index);\n };\n\n useImperativeHandle(\n fromRef,\n () => ({\n isValid: isLicenseNo(value),\n }),\n [value]\n );\n\n function renderInputs(): ReactNode {\n const Inputs: any = [];\n\n for (let i = 0; i < LENGTH; i++) {\n const char = value[i];\n\n Inputs.push(\n <View\n key={i}\n className={classNames(\"xh-licensePlate-input-item\", {\n active: activeIndex === i,\n showNew: i === LENGTH - 1 && value.length !== LENGTH,\n })}\n onClick={() => handleKeyClick(i)}\n >\n {char === \"O\" ? \"\" : char}\n </View>\n );\n }\n\n return Inputs;\n }\n\n /**\n * 删除其中一位\n * 如果删除那一位后面有值就用“O”代替删除的那一位,否则直接删除\n * 只要当前value有值就把 index-1\n */\n const handleDelete = () => {\n const nextChar = value[activeIndex + 1];\n const replaceChar = nextChar ? \"O\" : \"\";\n const newValue = replaceCharByIndex(value, activeIndex, replaceChar);\n\n if (newValue.length !== 0) setActiveIndex(old => old - 1);\n onChange(newValue);\n };\n\n const handleClose = () => {\n setShowKeyboard(false);\n };\n\n useEffect(() => {\n if (\n show &&\n InputRef.current &&\n autoScroll &&\n process.env.TARO_ENV === \"h5\"\n ) {\n InputRef.current.scrollIntoView({ behavior: \"smooth\" });\n }\n }, [show, autoScroll]);\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n setShowKeyboard(true);\n }\n const xhLicensePlateCls = classNames(\n \"xh-licensePlate\",\n className,\n { padding },\n { border }\n );\n\n return (\n <View className={xhLicensePlateCls}>\n {label && <label className=\"xh-licensePlate-label\">{label}</label>}\n <View\n className=\"xh-licensePlate-input\"\n onClick={handlerClick}\n ref={InputRef}\n >\n {renderInputs()}\n </View>\n <Keyboard\n activeIndex={activeIndex}\n show={show}\n value={value}\n onChange={handleOnChage}\n onDelete={handleDelete}\n onClose={handleClose}\n {...rest}\n />\n </View>\n );\n }\n);\n\nexport default LicensePlateInput;\n"],"names":["LicensePlateInput","forwardRef","props","fromRef","_a","value","onChange","className","_b","showKeyboard","_c","padding","_d","border","onFinish","_e","autoScroll","label","rest","__rest","_f","__read","useState","length","activeIndex","setActiveIndex","_g","show","setShowKeyboard","InputRef","useRef","useImperativeHandle","isValid","isLicenseNo","useEffect","current","process","env","TARO_ENV","scrollIntoView","behavior","xhLicensePlateCls","classNames","React","createElement","View","onClick","e","stopPropagation","ref","Inputs","i","char","push","key","active","showNew","LENGTH","index","renderInputs","Keyboard","__assign","neVal","old","replace","onDelete","nextChar","newValue","replaceCharByIndex","onClose"],"mappings":"2WA+BA,IASMA,EAAoBC,GACxB,SAACC,EAAOC,GAEJ,IAAAC,EAUEF,EAVQG,MAAVA,OAAQ,IAAAD,EAAA,GAAEA,EACVE,EASEJ,EAAKI,SARPC,EAQEL,EAAKK,UAPPC,EAOEN,EAAKO,aAPPA,OAAY,IAAAD,GAAQA,EACpBE,EAMER,EANaS,QAAfA,OAAU,IAAAD,GAAKA,EACfE,EAKEV,EALYW,OAAdA,OAAS,IAAAD,GAAKA,EAKZV,EAJMY,SAAA,IACRC,EAGEb,EAAKc,WAHPA,OAAa,IAAAD,GAAIA,EACjBE,EAEEf,EAFGe,MACFC,EACDC,EAAAjB,EAXE,CAAA,QAAA,WAAA,YAAA,eAAA,UAAA,SAAA,WAAA,aAAA,UAaAkB,EAAAC,EAAgCC,EAASjB,EAAMkB,QAAO,GAArDC,EAAWJ,EAAA,GAAEK,OAEdC,EAAAL,EAA0BC,EAASb,GAAa,GAA/CkB,EAAID,EAAA,GAAEE,OAEPC,EAAWC,EAAuB,MAuBxCC,EACE5B,GACA,WAAM,MAAC,CACL6B,QAASC,EAAY5B,GACrB,GACF,CAACA,IA4CH6B,GAAU,WAENP,GACAE,EAASM,SACTnB,GACyB,OAAzBoB,QAAQC,IAAIC,UAEZT,EAASM,QAAQI,eAAe,CAAEC,SAAU,UAEhD,GAAG,CAACb,EAAMX,IAMV,IAAMyB,EAAoBC,EACxB,kBACAnC,EACA,CAAEI,QAAOA,GACT,CAAEE,OAAMA,IAGV,OACE8B,EAACC,cAAAC,EAAK,CAAAtC,UAAWkC,GACdxB,GAAS0B,EAAOC,cAAA,QAAA,CAAArC,UAAU,yBAAyBU,GACpD0B,EAAAC,cAACC,EACC,CAAAtC,UAAU,wBACVuC,QAhBN,SAAsBC,GACpBA,EAAEC,kBACFpB,GAAgB,EACjB,EAcKqB,IAAKpB,GArEX,WAGE,IAFA,IAAMqB,EAAc,cAEXC,GACP,IAAMC,EAAO/C,EAAM8C,GAEnBD,EAAOG,KACLV,EAAAC,cAACC,EACC,CAAAS,IAAKH,EACL5C,UAAWmC,EAAW,6BAA8B,CAClDa,OAAQ/B,IAAgB2B,EACxBK,QAAeC,IAANN,GAtER,IAsE4B9C,EAAMkB,SAErCuB,QAAS,WA1BM,IAACY,KA0BcP,GAzBxB9C,EAAMkB,OAAS,GAC3BE,EAAeiC,KA0BC,MAATN,EAAe,GAAKA,KAZlBD,EAAI,EAAGA,EA9DP,EA8DmBA,MAAnBA,GAiBT,OAAOD,CACR,CAkDMS,IAEHhB,EAAAC,cAACgB,EAAQC,EAAA,CACPrC,YAAaA,EACbG,KAAMA,EACNtB,MAAOA,EACPC,SAtGgB,SAAAwD,GACpBrC,GAAe,SAAAsC,GACb,OAAID,EAAME,QAAQ,KAAM,IAAIzC,QApCrB,EAoC8CwC,EAC9CA,EAAM,CACf,IAKAzD,EAASwD,EACX,EA6FMG,SAlDe,WACnB,IAAMC,EAAW7D,EAAMmB,EAAc,GAE/B2C,EAAWC,EAAmB/D,EAAOmB,EADvB0C,EAAW,IAAM,IAGb,IAApBC,EAAS5C,QAAcE,GAAe,SAAAsC,GAAO,OAAAA,EAAM,CAAC,IACxDzD,EAAS6D,EACX,EA4CME,QA1Cc,WAClBzC,GAAgB,EAClB,GAyCUV,IAIZ"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/LicensePlateInput/index.tsx"],"sourcesContent":["import React, {\n useImperativeHandle,\n forwardRef,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Keyboard from \"./Keyboard\";\nimport { isLicenseNo, replaceCharByIndex } from \"../../utils\";\n\nimport \"./index.scss\";\n\nexport type LicensePlateProps = {\n value: string;\n onChange: (index: string) => void;\n /**\n * 是否默认展示键盘\n */\n showKeyboard?: boolean;\n closeText?: string;\n label?: ReactNode;\n onFinish?: () => void;\n padding?: boolean;\n border?: boolean;\n autoScroll?: boolean;\n dataTrackId?: string;\n} & XHComponentCommonProps;\n\nconst LENGTH = 8;\n\nexport type LicensePlateInputRef = {\n /**\n * 是否有效,组件会用大写字母(O) 来代替空位,如果要自己校验,那么就得判断有没有“O”来判断有没有空格\n */\n isValid: boolean;\n};\n\nconst LicensePlateInput = forwardRef<LicensePlateInputRef, LicensePlateProps>(\n (props, fromRef) => {\n const {\n value = \"\",\n onChange,\n className,\n showKeyboard = false,\n padding = false,\n border = false,\n onFinish,\n autoScroll = true,\n label,\n dataTrackId,\n ...rest\n } = props;\n\n const [activeIndex, setActiveIndex] = useState(value.length);\n\n const [show, setShowKeyboard] = useState(showKeyboard);\n\n const InputRef = useRef<HTMLDivElement>(null);\n\n /**\n * 空位用“O”代替(大写字母 O)\n * @param neVal 新值\n */\n const handleOnChage = neVal => {\n setActiveIndex(old => {\n if (neVal.replace(/O/g, \"\").length >= LENGTH) return old;\n return old + 1;\n });\n // if (neVal.length === LENGTH) {\n // onFinish?.();\n // setShowKeyboard(false);\n // }\n onChange(neVal);\n };\n\n const handleKeyClick = (index: number) => {\n if (index > value.length - 1) return;\n setActiveIndex(index);\n };\n\n useImperativeHandle(\n fromRef,\n () => ({\n isValid: isLicenseNo(value),\n }),\n [value]\n );\n\n function renderInputs(): ReactNode {\n const Inputs: any = [];\n\n for (let i = 0; i < LENGTH; i++) {\n const char = value[i];\n\n Inputs.push(\n <View\n key={i}\n className={classNames(\"xh-licensePlate-input-item\", {\n active: activeIndex === i,\n showNew: i === LENGTH - 1 && value.length !== LENGTH,\n })}\n onClick={() => handleKeyClick(i)}\n >\n {char === \"O\" ? \"\" : char}\n </View>\n );\n }\n\n return Inputs;\n }\n\n /**\n * 删除其中一位\n * 如果删除那一位后面有值就用“O”代替删除的那一位,否则直接删除\n * 只要当前value有值就把 index-1\n */\n const handleDelete = () => {\n const nextChar = value[activeIndex + 1];\n const replaceChar = nextChar ? \"O\" : \"\";\n const newValue = replaceCharByIndex(value, activeIndex, replaceChar);\n\n if (newValue.length !== 0) setActiveIndex(old => old - 1);\n onChange(newValue);\n };\n\n const handleClose = () => {\n setShowKeyboard(false);\n };\n\n useEffect(() => {\n if (\n show &&\n InputRef.current &&\n autoScroll &&\n process.env.TARO_ENV === \"h5\"\n ) {\n InputRef.current.scrollIntoView({ behavior: \"smooth\" });\n }\n }, [show, autoScroll]);\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n setShowKeyboard(true);\n }\n const xhLicensePlateCls = classNames(\n \"xh-licensePlate\",\n className,\n { padding },\n { border }\n );\n\n return (\n <View className={xhLicensePlateCls} data-track-id={dataTrackId}>\n {label && <label className=\"xh-licensePlate-label\">{label}</label>}\n <View\n className=\"xh-licensePlate-input\"\n onClick={handlerClick}\n ref={InputRef}\n >\n {renderInputs()}\n </View>\n <Keyboard\n activeIndex={activeIndex}\n show={show}\n value={value}\n onChange={handleOnChage}\n onDelete={handleDelete}\n onClose={handleClose}\n {...rest}\n />\n </View>\n );\n }\n);\n\nexport default LicensePlateInput;\n"],"names":["LicensePlateInput","forwardRef","props","fromRef","_a","value","onChange","className","_b","showKeyboard","_c","padding","_d","border","onFinish","_e","autoScroll","label","dataTrackId","rest","__rest","_f","__read","useState","length","activeIndex","setActiveIndex","_g","show","setShowKeyboard","InputRef","useRef","useImperativeHandle","isValid","isLicenseNo","useEffect","current","process","env","TARO_ENV","scrollIntoView","behavior","xhLicensePlateCls","classNames","React","View","createElement","onClick","e","stopPropagation","ref","Inputs","i","char","push","key","active","showNew","LENGTH","index","renderInputs","Keyboard","__assign","neVal","old","replace","onDelete","nextChar","newValue","replaceCharByIndex","onClose"],"mappings":"2WAgCA,IASMA,EAAoBC,GACxB,SAACC,EAAOC,GAEJ,IAAAC,EAWEF,EAAKG,MAXPA,aAAQ,GAAED,EACVE,EAUEJ,EAAKI,SATPC,EASEL,EAAKK,UARPC,EAQEN,EARkBO,aAApBA,OAAY,IAAAD,GAAQA,EACpBE,EAOER,UAPFS,OAAU,IAAAD,KACVE,EAMEV,EAAKW,OANPA,OAAM,IAAAD,GAAQA,EAMZV,EAAKY,aAJPC,EAIEb,EAJec,WAAjBA,OAAa,IAAAD,GAAIA,EACjBE,EAGEf,EAHGe,MACLC,EAEEhB,EAFSgB,YACRC,EACDC,EAAAlB,EAZE,CAAA,QAAA,WAAA,YAAA,eAAA,UAAA,SAAA,WAAA,aAAA,QAAA,gBAcAmB,EAAAC,EAAgCC,EAASlB,EAAMmB,QAAO,GAArDC,EAAWJ,EAAA,GAAEK,OAEdC,EAAAL,EAA0BC,EAASd,GAAa,GAA/CmB,EAAID,EAAA,GAAEE,OAEPC,EAAWC,EAAuB,MAuBxCC,EACE7B,GACA,WAAM,MAAC,CACL8B,QAASC,EAAY7B,GACrB,GACF,CAACA,IA4CH8B,GAAU,WAENP,GACAE,EAASM,SACTpB,GACyB,OAAzBqB,QAAQC,IAAIC,UAEZT,EAASM,QAAQI,eAAe,CAAEC,SAAU,UAEhD,GAAG,CAACb,EAAMZ,IAMV,IAAM0B,EAAoBC,EACxB,kBACApC,EACA,CAAEI,QAAOA,GACT,CAAEE,OAAMA,IAGV,OACE+B,gBAACC,EAAI,CAACtC,UAAWmC,kBAAkCxB,GAChDD,GAAS2B,EAAOE,cAAA,QAAA,CAAAvC,UAAU,yBAAyBU,GACpD2B,EAAAE,cAACD,EACC,CAAAtC,UAAU,wBACVwC,QAhBN,SAAsBC,GACpBA,EAAEC,kBACFpB,GAAgB,EACjB,EAcKqB,IAAKpB,GArEX,WAGE,IAFA,IAAMqB,EAAc,cAEXC,GACP,IAAMC,EAAOhD,EAAM+C,GAEnBD,EAAOG,KACLV,EAAAE,cAACD,EACC,CAAAU,IAAKH,EACL7C,UAAWoC,EAAW,6BAA8B,CAClDa,OAAQ/B,IAAgB2B,EACxBK,QAAeC,IAANN,GAvER,IAuE4B/C,EAAMmB,SAErCuB,QAAS,WA1BM,IAACY,KA0BcP,GAzBxB/C,EAAMmB,OAAS,GAC3BE,EAAeiC,KA0BC,MAATN,EAAe,GAAKA,KAZlBD,EAAI,EAAGA,EA/DP,EA+DmBA,MAAnBA,GAiBT,OAAOD,CACR,CAkDMS,IAEHhB,EAAAE,cAACe,EAAQC,EAAA,CACPrC,YAAaA,EACbG,KAAMA,EACNvB,MAAOA,EACPC,SAtGgB,SAAAyD,GACpBrC,GAAe,SAAAsC,GACb,OAAID,EAAME,QAAQ,KAAM,IAAIzC,QArCrB,EAqC8CwC,EAC9CA,EAAM,CACf,IAKA1D,EAASyD,EACX,EA6FMG,SAlDe,WACnB,IAAMC,EAAW9D,EAAMoB,EAAc,GAE/B2C,EAAWC,EAAmBhE,EAAOoB,EADvB0C,EAAW,IAAM,IAGb,IAApBC,EAAS5C,QAAcE,GAAe,SAAAsC,GAAO,OAAAA,EAAM,CAAC,IACxD1D,EAAS8D,EACX,EA4CME,QA1Cc,WAClBzC,GAAgB,EAClB,GAyCUV,IAIZ"}
@@ -1,2 +1,2 @@
1
- import{__read as n,__spreadArray as e}from"../node_modules/tslib/tslib.es6.js";import{View as a,Input as t}from"@tarojs/components";import l,{forwardRef as i,useState as m,useEffect as r,useCallback as o,useMemo as u,useImperativeHandle as c}from"react";import{inputRange as s}from"../src/utils/index.js";import k from"classnames";import h from"../ActionSheet/index.js";var p=["一","二","三","四","五","六","七","八","九","十"],f={linkmanName:"请输入联系人姓名",linkmanPhone:"请输入正确的手机号",relationType:"请选择与联系人关系"},N=[{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:"其他"}],E="h5"!==process.env.TARO_ENV||window.navigator.userAgent.includes("xhqb"),x=i((function(i,x){var v=i.linkManNum,P=i.relations,T=void 0===P?N:P,d=i.onChange,g=i.onGetContacts,V=i.showImportIcon,y=void 0===V?E:V,A=i.onBlur,C=i.onCheckRelation,R=i.onInputChange,b=i.needName,I=void 0===b||b,O=n(m([]),2),_=O[0],B=O[1],F=n(m([]),2),L=F[0],M=F[1];r((function(){B(Array(v).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:"",relationValue:""}}))),M(Array(v).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:""}})))}),[v]);var S=o((function(n){return!!/1\d{10}/.test(n)}),[]),j=o((function(n,e){return"linkmanName"===n?!(!e||!e.replace(/^\s+|\s+$/gm,""))&&!(e.length>20):"linkmanPhone"===n?!(!e||!S(e)):"relationType"===n&&!!e}),[]),w=u((function(){for(var n=_,e=n.length,a={linkmanName:[],linkmanPhone:[],relationValue:[]},t=!0,l=0;l<e;l++){if(I)if(!j("linkmanName",n[l].linkmanName)){t=!1;break}if(!j("linkmanPhone",n[l].linkmanPhone)){t=!1;break}if(0!==l&&a.linkmanPhone.includes(n[l].linkmanPhone)){t=!1;break}if(a.linkmanPhone.push(n[l].linkmanPhone),!j("relationType",n[l].relationValue)){t=!1;break}a.relationValue.push(n[l].relationValue)}return a.relationValue.filter((function(n){return"MATE"===n})).length>=2&&(t=!1),t}),[_,I]);r((function(){null==d||d(_,w)}),[_,w]),c(x,(function(){return{canSubmit:w,setContacts:function(a,t){B((function(l){return l[t].linkmanName=a.linkmanName||"",l[t].linkmanPhone=a.linkmanPhone||"",e([],n(l),!1)})),q("linkmanName",t),q("linkmanPhone",t)}}}),[w]);var H=function(n,e){for(var a=_[e],t=0,l=_.length;t<l;t++)if(t!==e){var i=_[t];if("linkmanPhone"===n){if(""!==a.linkmanPhone&&""!==i.linkmanPhone&&i.linkmanPhone===a.linkmanPhone)return{pass:!1,message:"手机号与第".concat(t+1,"联系人号码重复,请修改")}}else if("relationValue"===n&&""!==a.relationValue&&"MATE"===i.relationValue&&"MATE"===a.relationValue)return{pass:!1,message:"关系与第".concat(t+1,"联系人关系重复,请修改")}}return{pass:!0,message:""}},G=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);B((function(a){return a[t].linkmanName=i,e([],n(a),!1)})),null==R||R("linkmanName",t)}),[]),D=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);B((function(a){return a[t].linkmanPhone=i,e([],n(a),!1)})),null==R||R("linkmanPhone",t)}),[]),q=o((function(a,t){if(j(a,_[t][a])){var l=H(a,t),i=l.pass,m=l.message;i||M((function(l){return l[t][a]=m,e([],n(l),!1)})),null==A||A(a,t)}else M((function(l){return l[t][a]=f[a],e([],n(l),!1)}))}),[_]),U=o((function(a,t){M((function(l){return l[t][a]="",e([],n(l),!1)}))}),[]);return l.createElement(a,{className:"xh-linkman"},_.map((function(i,m){return l.createElement(a,{key:m,className:"xh-linkman-item"},l.createElement(a,{className:"xh-linkman-title"},"第",p[m],"联系人"),I&&l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"姓名"),l.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?l.createElement("input",{className:"xh-linkman-main-input-main-input",type:"text",placeholder:"紧急联系人姓名",onChange:function(n){return G(n,m)},value:i.linkmanName,onBlur:function(){return q("linkmanName",m)},onFocus:function(){return U("linkmanName",m)}}):l.createElement(t,{placeholder:"紧急联系人姓名",className:"xh-linkman-main-input-main-input",onBlur:function(){return q("linkmanName",m)},value:i.linkmanName,type:"text",onInput:function(n){return G(n,m)},onFocus:function(){return U("linkmanName",m)}}),L[m].linkmanName&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].linkmanName)),y&&l.createElement(a,{className:"xh-linkman-main-input-contacts",onClick:function(){return null==g?void 0:g(m)}}))),l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"电话"),l.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?l.createElement("input",{className:"xh-linkman-main-input-main-input",type:"tel",placeholder:"紧急联系人手机号",onBlur:function(){return q("linkmanPhone",m)},maxLength:11,onChange:function(n){return D(n,m)},value:i.linkmanPhone,onFocus:function(){return U("linkmanPhone",m)}}):l.createElement(t,{placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input",type:"number",maxlength:11,onBlur:function(){return q("linkmanPhone",m)},value:i.linkmanPhone,onInput:function(n){return D(n,m)},onFocus:function(){return U("linkmanPhone",m)}}),L[m].linkmanPhone&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].linkmanPhone)),y&&!I&&l.createElement(a,{className:"xh-linkman-main-input-contacts",onClick:function(){return null==g?void 0:g(m)}}))),l.createElement(h,{data:T,title:"选择与联系人的关系",onConfirm:function(a){M((function(a){return a[m].relationType="",e([],n(a),!1)})),B((function(t){return t[m].relationType=a.text,t[m].relationValue=a.value,e([],n(t),!1)})),Promise.resolve().then((function(){var t=H("relationValue",m),l=t.pass,i=t.message;l||M((function(a){return a[m].relationType=i,e([],n(a),!1)})),null==C||C(a,m)}))},onCancel:function(){return q("relationType",m)}},l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"关系"),l.createElement(a,{className:"xh-linkman-main-input-main"},l.createElement(a,{className:k("xh-linkman-main-input-main-input",{placeholder:!i.relationValue,tt:"tt"===process.env.TARO_ENV})},i.relationType||"选择与联系人关系"),L[m].relationType&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].relationType)),l.createElement(a,{className:"xh-linkman-main-input-arrow"})))))})))}));export{x as default};
1
+ import{__read as n,__spreadArray as e}from"../node_modules/tslib/tslib.es6.js";import{View as a,Input as t}from"@tarojs/components";import i,{forwardRef as l,useState as m,useEffect as r,useCallback as o,useMemo as u,useImperativeHandle as c}from"react";import{inputRange as s}from"../src/utils/index.js";import k from"classnames";import h from"../ActionSheet/index.js";var p=["一","二","三","四","五","六","七","八","九","十"],f={linkmanName:"请输入联系人姓名",linkmanPhone:"请输入正确的手机号",relationType:"请选择与联系人关系"},N=[{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:"其他"}],d="h5"!==process.env.TARO_ENV||window.navigator.userAgent.includes("xhqb"),E=l((function(l,E){var x=l.linkManNum,v=l.relations,T=void 0===v?N:v,P=l.onChange,g=l.onGetContacts,V=l.showImportIcon,y=void 0===V?d:V,A=l.onBlur,I=l.onCheckRelation,C=l.onInputChange,R=l.needName,b=void 0===R||R,O=l.dataTrackId,L=void 0===O?"XHAddLinMan":O,M=n(m([]),2),_=M[0],B=M[1],F=n(m([]),2),H=F[0],S=F[1];r((function(){B(Array(x).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:"",relationValue:""}}))),S(Array(x).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:""}})))}),[x]);var j=o((function(n){return!!/1\d{10}/.test(n)}),[]),w=o((function(n,e){return"linkmanName"===n?!(!e||!e.replace(/^\s+|\s+$/gm,""))&&!(e.length>20):"linkmanPhone"===n?!(!e||!j(e)):"relationType"===n&&!!e}),[]),G=u((function(){for(var n=_,e=n.length,a={linkmanName:[],linkmanPhone:[],relationValue:[]},t=!0,i=0;i<e;i++){if(b)if(!w("linkmanName",n[i].linkmanName)){t=!1;break}if(!w("linkmanPhone",n[i].linkmanPhone)){t=!1;break}if(0!==i&&a.linkmanPhone.includes(n[i].linkmanPhone)){t=!1;break}if(a.linkmanPhone.push(n[i].linkmanPhone),!w("relationType",n[i].relationValue)){t=!1;break}a.relationValue.push(n[i].relationValue)}return a.relationValue.filter((function(n){return"MATE"===n})).length>=2&&(t=!1),t}),[_,b]);r((function(){null==P||P(_,G)}),[_,G]),c(E,(function(){return{canSubmit:G,setContacts:function(a,t){B((function(i){return i[t].linkmanName=a.linkmanName||"",i[t].linkmanPhone=a.linkmanPhone||"",e([],n(i),!1)})),X("linkmanName",t),X("linkmanPhone",t)}}}),[G]);var D=function(n,e){for(var a=_[e],t=0,i=_.length;t<i;t++)if(t!==e){var l=_[t];if("linkmanPhone"===n){if(""!==a.linkmanPhone&&""!==l.linkmanPhone&&l.linkmanPhone===a.linkmanPhone)return{pass:!1,message:"手机号与第".concat(t+1,"联系人号码重复,请修改")}}else if("relationValue"===n&&""!==a.relationValue&&"MATE"===l.relationValue&&"MATE"===a.relationValue)return{pass:!1,message:"关系与第".concat(t+1,"联系人关系重复,请修改")}}return{pass:!0,message:""}},q=o((function(a,t){var i="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,l=s(i);B((function(a){return a[t].linkmanName=l,e([],n(a),!1)})),null==C||C("linkmanName",t)}),[]),U=o((function(a,t){var i="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,l=s(i);B((function(a){return a[t].linkmanPhone=l,e([],n(a),!1)})),null==C||C("linkmanPhone",t)}),[]),X=o((function(a,t){if(w(a,_[t][a])){var i=D(a,t),l=i.pass,m=i.message;l||S((function(i){return i[t][a]=m,e([],n(i),!1)})),null==A||A(a,t)}else S((function(i){return i[t][a]=f[a],e([],n(i),!1)}))}),[_]),$=o((function(a,t){S((function(i){return i[t][a]="",e([],n(i),!1)}))}),[]);return i.createElement(a,{className:"xh-linkman",dataTrackId:L},_.map((function(l,m){return i.createElement(a,{key:m,className:"xh-linkman-item"},i.createElement(a,{className:"xh-linkman-title"},"第",p[m],"联系人"),b&&i.createElement(a,{className:"xh-linkman-main"},i.createElement(a,{className:"xh-linkman-main-input"},i.createElement(a,{className:"xh-linkman-main-input-label"},"姓名"),i.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?i.createElement("input",{"data-track-id":"".concat(L,"-name"),className:"xh-linkman-main-input-main-input",type:"text",placeholder:"紧急联系人姓名",onChange:function(n){return q(n,m)},value:l.linkmanName,onBlur:function(){return X("linkmanName",m)},onFocus:function(){return $("linkmanName",m)}}):i.createElement(t,{dataTrackId:"".concat(L,"-name"),placeholder:"紧急联系人姓名",className:"xh-linkman-main-input-main-input",onBlur:function(){return X("linkmanName",m)},value:l.linkmanName,type:"text",onInput:function(n){return q(n,m)},onFocus:function(){return $("linkmanName",m)}}),H[m].linkmanName&&i.createElement(a,{className:"xh-linkman-main-input-main-err"},H[m].linkmanName)),y&&i.createElement(a,{dataTrackId:"".concat(L,"-name-contacts"),className:"xh-linkman-main-input-contacts",onClick:function(){return null==g?void 0:g(m)}}))),i.createElement(a,{className:"xh-linkman-main"},i.createElement(a,{className:"xh-linkman-main-input"},i.createElement(a,{className:"xh-linkman-main-input-label"},"电话"),i.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?i.createElement("input",{"data-track-id":"".concat(L,"-phone"),className:"xh-linkman-main-input-main-input",type:"tel",placeholder:"紧急联系人手机号",onBlur:function(){return X("linkmanPhone",m)},maxLength:11,onChange:function(n){return U(n,m)},value:l.linkmanPhone,onFocus:function(){return $("linkmanPhone",m)}}):i.createElement(t,{dataTrackId:"".concat(L,"-phone"),placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input",type:"number",maxlength:11,onBlur:function(){return X("linkmanPhone",m)},value:l.linkmanPhone,onInput:function(n){return U(n,m)},onFocus:function(){return $("linkmanPhone",m)}}),H[m].linkmanPhone&&i.createElement(a,{className:"xh-linkman-main-input-main-err"},H[m].linkmanPhone)),y&&!b&&i.createElement(a,{dataTrackId:"".concat(L,"-phone-contacts"),className:"xh-linkman-main-input-contacts",onClick:function(){return null==g?void 0:g(m)}}))),i.createElement(h,{data:T,title:"选择与联系人的关系",dataTrackId:"".concat(L,"-relation"),onConfirm:function(a){S((function(a){return a[m].relationType="",e([],n(a),!1)})),B((function(t){return t[m].relationType=a.text,t[m].relationValue=a.value,e([],n(t),!1)})),Promise.resolve().then((function(){var t=D("relationValue",m),i=t.pass,l=t.message;i||S((function(a){return a[m].relationType=l,e([],n(a),!1)})),null==I||I(a,m)}))},onCancel:function(){return X("relationType",m)}},i.createElement(a,{className:"xh-linkman-main"},i.createElement(a,{className:"xh-linkman-main-input"},i.createElement(a,{className:"xh-linkman-main-input-label"},"关系"),i.createElement(a,{className:"xh-linkman-main-input-main"},i.createElement(a,{dataTrackId:"".concat(L,"-relation-input"),className:k("xh-linkman-main-input-main-input",{placeholder:!l.relationValue,tt:"tt"===process.env.TARO_ENV})},l.relationType||"选择与联系人关系"),H[m].relationType&&i.createElement(a,{className:"xh-linkman-main-input-main-err"},H[m].relationType)),i.createElement(a,{className:"xh-linkman-main-input-arrow"})))))})))}));export{E as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +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 useMemo,\n} from \"react\";\nimport { inputRange } from \"@/utils\";\nimport classNames from \"classnames\";\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 needName?: boolean;\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: Partial<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 needName = true,\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 = useMemo(() => {\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 /**\n * 每次循环formData,不符合直接break,退出循环\n */\n for (let index = 0; index < length; index++) {\n if (needName) {\n const isNameValid = validateForm(\n \"linkmanName\",\n finalData[index].linkmanName\n );\n if (!isNameValid) {\n flag = false;\n break;\n }\n }\n\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 map.relationValue.push(finalData[index].relationValue);\n }\n if (map.relationValue.filter(item => item === \"MATE\").length >= 2) {\n flag = false;\n }\n\n return flag;\n }, [formData, needName]);\n\n useEffect(() => {\n onChange?.(formData, validateCanSubmit);\n }, [formData, validateCanSubmit]);\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 [validateCanSubmit]\n );\n\n /**\n * 重复校验\n */\n const validateDuplicate = (\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\n for (let index = 0, length = formData.length; index < length; index++) {\n if (index === currentIndex) continue; // 不能跟自己比较\n const current = formData[index];\n 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 === \"MATE\" &&\n currentItem.relationValue === \"MATE\"\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\n /**\n * 联系人姓名改变\n */\n const onNameChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const name = inputRange(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 value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const phone = inputRange(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 {needName && (\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 onBlur={() => onFormBlur(\"linkmanName\", num)}\n value={item.linkmanName}\n type=\"text\"\n onInput={e => onNameChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\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 )}\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 type=\"number\"\n maxlength={11}\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n value={item.linkmanPhone}\n onInput={e => onPhoneChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\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 {showImportIcon && !needName && (\n <View\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\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 Promise.resolve().then(() => {\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 }}\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 <View\n className={classNames(\n \"xh-linkman-main-input-main-input\",\n {\n placeholder: !item.relationValue,\n tt: process.env.TARO_ENV === \"tt\",\n }\n )}\n >\n {item.relationType || \"选择与联系人关系\"}\n </View>\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","needName","_d","__read","useState","formData","setFormData","_e","errMessage","setErrMessage","useEffect","Array","fill","map","relationValue","validatePhone","useCallback","phone","test","validateForm","type","name","replace","length","validateCanSubmit","useMemo","finalData","flag","index","push","filter","item","useImperativeHandle","canSubmit","setContacts","old","__spreadArray","onFormBlur","validateDuplicate","currentIndex","currentItem","length_1","current","pass","message","concat","onNameChange","evt","target","detail","inputRange","onPhoneChange","onFormFocus","React","createElement","View","className","num","key","placeholder","e","onFocus","Input","onInput","onClick","maxLength","maxlength","ActionSheet","data","title","onConfirm","Promise","resolve","then","onCancel","classNames","tt"],"mappings":"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"}
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 useMemo,\n} from \"react\";\nimport { inputRange } from \"@/utils\";\nimport classNames from \"classnames\";\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 needName?: boolean;\n dataTrackId?: 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: Partial<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 needName = true,\n dataTrackId = \"XHAddLinMan\",\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 = useMemo(() => {\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 /**\n * 每次循环formData,不符合直接break,退出循环\n */\n for (let index = 0; index < length; index++) {\n if (needName) {\n const isNameValid = validateForm(\n \"linkmanName\",\n finalData[index].linkmanName\n );\n if (!isNameValid) {\n flag = false;\n break;\n }\n }\n\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 map.relationValue.push(finalData[index].relationValue);\n }\n if (map.relationValue.filter(item => item === \"MATE\").length >= 2) {\n flag = false;\n }\n\n return flag;\n }, [formData, needName]);\n\n useEffect(() => {\n onChange?.(formData, validateCanSubmit);\n }, [formData, validateCanSubmit]);\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 [validateCanSubmit]\n );\n\n /**\n * 重复校验\n */\n const validateDuplicate = (\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\n for (let index = 0, length = formData.length; index < length; index++) {\n if (index === currentIndex) continue; // 不能跟自己比较\n const current = formData[index];\n 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 === \"MATE\" &&\n currentItem.relationValue === \"MATE\"\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\n /**\n * 联系人姓名改变\n */\n const onNameChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const name = inputRange(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 value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const phone = inputRange(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\n className=\"xh-linkman\"\n // @ts-ignore\n dataTrackId={dataTrackId}\n >\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 {needName && (\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 data-track-id={`${dataTrackId}-name`}\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 // @ts-ignore\n dataTrackId={`${dataTrackId}-name`}\n placeholder=\"紧急联系人姓名\"\n className=\"xh-linkman-main-input-main-input\"\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n value={item.linkmanName}\n type=\"text\"\n onInput={e => onNameChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\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 // @ts-ignore\n dataTrackId={`${dataTrackId}-name-contacts`}\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\n </View>\n </View>\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 data-track-id={`${dataTrackId}-phone`}\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 // @ts-ignore\n dataTrackId={`${dataTrackId}-phone`}\n placeholder=\"紧急联系人手机号\"\n className=\"xh-linkman-main-input-main-input\"\n type=\"number\"\n maxlength={11}\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n value={item.linkmanPhone}\n onInput={e => onPhoneChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\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 {showImportIcon && !needName && (\n <View\n // @ts-ignore\n dataTrackId={`${dataTrackId}-phone-contacts`}\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\n </View>\n </View>\n <ActionSheet\n data={relations}\n title=\"选择与联系人的关系\"\n // @ts-ignore\n dataTrackId={`${dataTrackId}-relation`}\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 Promise.resolve().then(() => {\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 }}\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 <View\n // @ts-ignore\n dataTrackId={`${dataTrackId}-relation-input`}\n className={classNames(\n \"xh-linkman-main-input-main-input\",\n {\n placeholder: !item.relationValue,\n tt: process.env.TARO_ENV === \"tt\",\n }\n )}\n >\n {item.relationType || \"选择与联系人关系\"}\n </View>\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","needName","_d","dataTrackId","_e","__read","useState","formData","setFormData","_f","errMessage","setErrMessage","useEffect","Array","fill","map","relationValue","validatePhone","useCallback","phone","test","validateForm","type","name","replace","length","validateCanSubmit","useMemo","finalData","flag","index","push","filter","item","useImperativeHandle","canSubmit","setContacts","old","__spreadArray","onFormBlur","validateDuplicate","currentIndex","currentItem","length_1","current","pass","message","concat","onNameChange","evt","target","detail","inputRange","onPhoneChange","onFormFocus","React","createElement","View","className","num","key","placeholder","e","onFocus","Input","onInput","onClick","maxLength","maxlength","ActionSheet","data","title","onConfirm","Promise","resolve","then","onCancel","classNames","tt"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"react";import{View as t,Text as a}from"@tarojs/components";import i from"classnames";var o=function(o){var l=o.title,s=void 0===l?"":l,r=o.description,n=void 0===r?"":r,c=o.icon,m=o.extra,d=void 0===m?"":m,x=o.extraIcon,v=void 0===x?"":x,p=o.arrow,N=o.border,h=void 0===N||N,E=o.onClick,f=o.className,u=o.outline,C=void 0===u||u,b=o.condensed,g=void 0!==b&&b,k=o.descriptionColor,w=void 0===k?"":k,y=o.extraColor,j=void 0===y?"":y,I=o.ellipsis,q=void 0===I||I,z=o.padding,A=i("xh-list",{border:h},{outline:C},{condensed:g},{padding:void 0!==z&&z},f),B=i("xh-list-main",{ellipsis:q});return e.createElement(t,{className:A,onClick:function(e){E&&E(e)}},c&&e.createElement(t,{className:"xh-list-icon"},c),e.createElement(t,{className:B},s&&e.createElement(a,{className:"xh-list-main-title"},s),e.createElement(a,{className:"xh-list-main-description",style:{color:w}},n)),e.createElement(t,{className:"xh-list-extra"},e.createElement(t,{className:"xh-list-extra-info",style:{color:j}},d),e.createElement(t,{className:"xh-list-extra-icon"},v||p&&e.createElement(t,{className:"xh-list-extra-icon-arrow"}))))};export{o as default};
1
+ import e from"react";import{View as t,Text as a}from"@tarojs/components";import i from"classnames";var o=function(o){var s=o.title,l=void 0===s?"":s,r=o.description,c=void 0===r?"":r,n=o.icon,d=o.extra,m=void 0===d?"":d,x=o.extraIcon,v=void 0===x?"":x,p=o.arrow,N=o.border,h=void 0===N||N,E=o.onClick,f=o.className,u=o.outline,k=void 0===u||u,C=o.condensed,I=void 0!==C&&C,b=o.descriptionColor,g=void 0===b?"":b,w=o.extraColor,y=void 0===w?"":w,T=o.ellipsis,j=void 0===T||T,H=o.padding,L=void 0!==H&&H,X=o.dataTrackId,q=void 0===X?"XHList":X,z=i("xh-list",{border:h},{outline:k},{condensed:I},{padding:L},f),A=i("xh-list-main",{ellipsis:j});return e.createElement(t,{className:z,dataTrackId:q,onClick:function(e){E&&E(e)}},n&&e.createElement(t,{className:"xh-list-icon"},n),e.createElement(t,{className:A},l&&e.createElement(a,{className:"xh-list-main-title"},l),e.createElement(a,{className:"xh-list-main-description",style:{color:g}},c)),e.createElement(t,{className:"xh-list-extra"},e.createElement(t,{className:"xh-list-extra-info",style:{color:y}},m),e.createElement(t,{className:"xh-list-extra-icon"},v||p&&e.createElement(t,{className:"xh-list-extra-icon-arrow"}))))};export{o as default};
2
2
  //# sourceMappingURL=index.js.map