@opentiny/vue-renderless 3.1.0-alpha.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 (397) hide show
  1. package/action-sheet/index.js +28 -0
  2. package/action-sheet/vue.js +29 -0
  3. package/alert/index.js +23 -0
  4. package/alert/vue.js +37 -0
  5. package/autocomplete/index.js +175 -0
  6. package/autocomplete/vue.js +171 -0
  7. package/avatar/index.js +29 -0
  8. package/avatar/vue.js +24 -0
  9. package/badge/index.js +16 -0
  10. package/badge/vue.js +30 -0
  11. package/breadcrumb/vue.js +4 -0
  12. package/breadcrumb-item/vue.js +24 -0
  13. package/bulletin-board/index.js +21 -0
  14. package/bulletin-board/vue.js +36 -0
  15. package/button/index.js +19 -0
  16. package/button/vue.js +43 -0
  17. package/button-group/index.js +25 -0
  18. package/button-group/vue.js +51 -0
  19. package/calendar/index.js +279 -0
  20. package/calendar/vue.js +124 -0
  21. package/card-template/index.js +39 -0
  22. package/card-template/vue.js +34 -0
  23. package/carousel/index.js +206 -0
  24. package/carousel/vue.js +222 -0
  25. package/carousel-item/index.js +93 -0
  26. package/carousel-item/vue.js +57 -0
  27. package/cascader/index.js +511 -0
  28. package/cascader/vue.js +342 -0
  29. package/cascader-menu/index.js +41 -0
  30. package/cascader-menu/vue.js +36 -0
  31. package/cascader-node/index.js +63 -0
  32. package/cascader-node/vue.js +62 -0
  33. package/cascader-panel/index.js +359 -0
  34. package/cascader-panel/node.js +199 -0
  35. package/cascader-panel/store.js +80 -0
  36. package/cascader-panel/vue.js +217 -0
  37. package/checkbox/index.js +145 -0
  38. package/checkbox/vue.js +139 -0
  39. package/checkbox-button/index.js +102 -0
  40. package/checkbox-button/vue.js +150 -0
  41. package/checkbox-group/index.js +12 -0
  42. package/checkbox-group/vue.js +33 -0
  43. package/col/index.js +132 -0
  44. package/col/vue.js +34 -0
  45. package/collapse/index.js +45 -0
  46. package/collapse/vue.js +35 -0
  47. package/collapse-item/index.js +38 -0
  48. package/collapse-item/vue.js +48 -0
  49. package/common/array.js +120 -0
  50. package/common/bigInt.js +352 -0
  51. package/common/browser.js +69 -0
  52. package/common/dataset/index.js +135 -0
  53. package/common/date.js +352 -0
  54. package/common/decimal.js +203 -0
  55. package/common/deps/ResizeObserver.js +474 -0
  56. package/common/deps/after-leave.js +25 -0
  57. package/common/deps/clickoutside.js +61 -0
  58. package/common/deps/date-util.js +262 -0
  59. package/common/deps/date.js +308 -0
  60. package/common/deps/debounce.js +4 -0
  61. package/common/deps/dom.js +190 -0
  62. package/common/deps/fullscreen/apis.js +157 -0
  63. package/common/deps/fullscreen/screenfull.js +106 -0
  64. package/common/deps/letter-only.js +15 -0
  65. package/common/deps/memorize.js +149 -0
  66. package/common/deps/number-only.js +16 -0
  67. package/common/deps/popper.js +713 -0
  68. package/common/deps/popup-manager.js +179 -0
  69. package/common/deps/repeat-click.js +24 -0
  70. package/common/deps/requestAnimationFrame.js +25 -0
  71. package/common/deps/resize-event.js +29 -0
  72. package/common/deps/scroll-into-view.js +29 -0
  73. package/common/deps/scrollbar-width.js +25 -0
  74. package/common/deps/throttle.js +34 -0
  75. package/common/deps/touch.js +33 -0
  76. package/common/deps/tree-model/node.js +586 -0
  77. package/common/deps/tree-model/tree-store.js +377 -0
  78. package/common/deps/tree-model/util.js +14 -0
  79. package/common/deps/upload-ajax.js +71 -0
  80. package/common/deps/vue-emitter.js +30 -0
  81. package/common/deps/vue-popper.js +291 -0
  82. package/common/deps/vue-popup.js +211 -0
  83. package/common/event.js +17 -0
  84. package/common/index.js +288 -0
  85. package/common/object.js +228 -0
  86. package/common/runtime.js +52 -0
  87. package/common/string.js +446 -0
  88. package/common/type.js +65 -0
  89. package/common/validate/index.js +6 -0
  90. package/common/validate/messages.js +68 -0
  91. package/common/validate/rules/enum.js +8 -0
  92. package/common/validate/rules/index.js +14 -0
  93. package/common/validate/rules/pattern.js +16 -0
  94. package/common/validate/rules/range.js +62 -0
  95. package/common/validate/rules/required.js +13 -0
  96. package/common/validate/rules/type.js +110 -0
  97. package/common/validate/rules/whitespace.js +6 -0
  98. package/common/validate/schema.js +323 -0
  99. package/common/validate/util.js +198 -0
  100. package/common/validate/validations/array.js +25 -0
  101. package/common/validate/validations/date.js +35 -0
  102. package/common/validate/validations/enum.js +24 -0
  103. package/common/validate/validations/float.js +24 -0
  104. package/common/validate/validations/index.js +42 -0
  105. package/common/validate/validations/integer.js +24 -0
  106. package/common/validate/validations/method.js +23 -0
  107. package/common/validate/validations/number.js +27 -0
  108. package/common/validate/validations/pattern.js +23 -0
  109. package/common/validate/validations/required.js +15 -0
  110. package/common/validate/validations/string.js +29 -0
  111. package/common/validate/validations/type.js +25 -0
  112. package/common/xss.js +325 -0
  113. package/container/index.js +110 -0
  114. package/container/vue.js +63 -0
  115. package/credit-card/index.js +107 -0
  116. package/credit-card/vue.js +117 -0
  117. package/credit-card-form/index.js +143 -0
  118. package/credit-card-form/vue.js +150 -0
  119. package/crop/index.js +297 -0
  120. package/crop/vue.js +191 -0
  121. package/date-panel/index.js +584 -0
  122. package/date-panel/vue.js +319 -0
  123. package/date-picker/index.js +301 -0
  124. package/date-picker/vue.js +169 -0
  125. package/date-range/index.js +463 -0
  126. package/date-range/vue.js +297 -0
  127. package/date-table/index.js +457 -0
  128. package/date-table/vue.js +151 -0
  129. package/detail-page/index.js +135 -0
  130. package/detail-page/vue.js +145 -0
  131. package/dialog-box/index.js +268 -0
  132. package/dialog-box/vue.js +226 -0
  133. package/drop-times/index.js +23 -0
  134. package/drop-times/vue.js +28 -0
  135. package/dropdown/index.js +259 -0
  136. package/dropdown/vue.js +107 -0
  137. package/dropdown-item/index.js +155 -0
  138. package/dropdown-item/vue.js +124 -0
  139. package/dropdown-menu/index.js +148 -0
  140. package/dropdown-menu/vue.js +44 -0
  141. package/exception/index.js +13 -0
  142. package/exception/vue.js +25 -0
  143. package/fall-menu/index.js +121 -0
  144. package/fall-menu/vue.js +90 -0
  145. package/file-upload/index.js +1940 -0
  146. package/file-upload/vue.js +458 -0
  147. package/floatbar/index.js +10 -0
  148. package/floatbar/vue.js +17 -0
  149. package/form/index.js +186 -0
  150. package/form/vue.js +69 -0
  151. package/form-item/index.js +364 -0
  152. package/form-item/vue.js +210 -0
  153. package/fullscreen/index.js +138 -0
  154. package/fullscreen/vue.js +77 -0
  155. package/grid/core/index.js +3 -0
  156. package/grid/core/interceptor.js +38 -0
  157. package/grid/core/storeMap.js +19 -0
  158. package/grid/plugins/export.js +169 -0
  159. package/grid/plugins/exportExcel.js +749 -0
  160. package/grid/plugins/header.js +58 -0
  161. package/grid/plugins/resize.js +82 -0
  162. package/grid/static/array/arrayEach.js +12 -0
  163. package/grid/static/array/arrayIndexOf.js +11 -0
  164. package/grid/static/array/eachTree.js +32 -0
  165. package/grid/static/array/every.js +2 -0
  166. package/grid/static/array/filterTree.js +16 -0
  167. package/grid/static/array/find.js +3 -0
  168. package/grid/static/array/findTree.js +46 -0
  169. package/grid/static/array/helperCreateIterateHandle.js +59 -0
  170. package/grid/static/array/helperCreateTreeFunc.js +18 -0
  171. package/grid/static/array/includes.js +5 -0
  172. package/grid/static/array/lastArrayEach.js +6 -0
  173. package/grid/static/array/map.js +23 -0
  174. package/grid/static/array/mapTree.js +33 -0
  175. package/grid/static/array/slice.js +10 -0
  176. package/grid/static/array/sortBy.js +69 -0
  177. package/grid/static/array/sum.js +28 -0
  178. package/grid/static/array/toArray.js +7 -0
  179. package/grid/static/array/toTreeArray.js +24 -0
  180. package/grid/static/base/clear.js +44 -0
  181. package/grid/static/base/clone.js +18 -0
  182. package/grid/static/base/destructuring.js +18 -0
  183. package/grid/static/base/each.js +9 -0
  184. package/grid/static/base/eqNull.js +6 -0
  185. package/grid/static/base/findIndexOf.js +10 -0
  186. package/grid/static/base/get.js +42 -0
  187. package/grid/static/base/has.js +60 -0
  188. package/grid/static/base/hasOwnProp.js +4 -0
  189. package/grid/static/base/helperCreateGetObjects.js +26 -0
  190. package/grid/static/base/helperCreateInInObjectString.js +7 -0
  191. package/grid/static/base/helperCreateInTypeof.js +6 -0
  192. package/grid/static/base/helperCreateIndexOf.js +21 -0
  193. package/grid/static/base/helperCreateiterateIndexOf.js +21 -0
  194. package/grid/static/base/helperDefaultCompare.js +4 -0
  195. package/grid/static/base/helperDeleteProperty.js +8 -0
  196. package/grid/static/base/helperEqualCompare.js +60 -0
  197. package/grid/static/base/helperGetHGSKeys.js +4 -0
  198. package/grid/static/base/indexOf.js +3 -0
  199. package/grid/static/base/isArray.js +3 -0
  200. package/grid/static/base/isBoolean.js +4 -0
  201. package/grid/static/base/isDate.js +3 -0
  202. package/grid/static/base/isEmpty.js +8 -0
  203. package/grid/static/base/isEqual.js +11 -0
  204. package/grid/static/base/isFunction.js +4 -0
  205. package/grid/static/base/isNaN.js +5 -0
  206. package/grid/static/base/isNull.js +4 -0
  207. package/grid/static/base/isNumber.js +4 -0
  208. package/grid/static/base/isObject.js +5 -0
  209. package/grid/static/base/isPlainObject.js +2 -0
  210. package/grid/static/base/isRegExp.js +3 -0
  211. package/grid/static/base/isSet.js +5 -0
  212. package/grid/static/base/isString.js +4 -0
  213. package/grid/static/base/isUndefined.js +4 -0
  214. package/grid/static/base/keys.js +3 -0
  215. package/grid/static/base/lastEach.js +9 -0
  216. package/grid/static/base/remove.js +44 -0
  217. package/grid/static/base/set.js +43 -0
  218. package/grid/static/base/toJSONString.js +4 -0
  219. package/grid/static/base/toStringJSON.js +13 -0
  220. package/grid/static/base/uniqueId.js +5 -0
  221. package/grid/static/browse/browse.js +54 -0
  222. package/grid/static/function/property.js +7 -0
  223. package/grid/static/function/throttle.js +43 -0
  224. package/grid/static/index.js +55 -0
  225. package/grid/static/number/helperCreateToNumber.js +12 -0
  226. package/grid/static/number/toNumber.js +3 -0
  227. package/grid/static/object/assign.js +41 -0
  228. package/grid/static/object/extend.js +3 -0
  229. package/grid/static/object/lastObjectEach.js +8 -0
  230. package/grid/static/object/objectEach.js +11 -0
  231. package/grid/static/object/objectMap.js +20 -0
  232. package/grid/static/object/values.js +9 -0
  233. package/grid/static/static/staticDocument.js +4 -0
  234. package/grid/static/static/staticHGKeyRE.js +2 -0
  235. package/grid/static/static/staticParseInt.js +2 -0
  236. package/grid/static/static/staticStrUndefined.js +2 -0
  237. package/grid/static/static/staticWindow.js +4 -0
  238. package/grid/static/string/template.js +12 -0
  239. package/grid/static/string/toString.js +12 -0
  240. package/grid/utils/column.js +72 -0
  241. package/grid/utils/common.js +155 -0
  242. package/grid/utils/dom.js +213 -0
  243. package/grid/utils/event.js +40 -0
  244. package/grid/utils/index.js +5 -0
  245. package/image/index.js +187 -0
  246. package/image/vue.js +142 -0
  247. package/image-viewer/index.js +469 -0
  248. package/image-viewer/vue.js +243 -0
  249. package/input/index.js +319 -0
  250. package/input/vue.js +319 -0
  251. package/ip-address/index.js +370 -0
  252. package/ip-address/vue.js +185 -0
  253. package/layout/vue.js +4 -0
  254. package/link/index.js +10 -0
  255. package/link/vue.js +26 -0
  256. package/link-menu/index.js +146 -0
  257. package/link-menu/vue.js +138 -0
  258. package/list/index.js +13 -0
  259. package/list/vue.js +17 -0
  260. package/loading/index.js +29 -0
  261. package/loading/vue.js +28 -0
  262. package/milestone/index.js +92 -0
  263. package/milestone/vue.js +31 -0
  264. package/mini-picker/index.js +227 -0
  265. package/mini-picker/vue.js +142 -0
  266. package/modal/index.js +866 -0
  267. package/modal/vue.js +130 -0
  268. package/month-range/index.js +169 -0
  269. package/month-range/vue.js +104 -0
  270. package/month-table/index.js +232 -0
  271. package/month-table/vue.js +72 -0
  272. package/nav-menu/index.js +457 -0
  273. package/nav-menu/vue.js +187 -0
  274. package/notify/index.js +91 -0
  275. package/notify/vue.js +67 -0
  276. package/numeric/index.js +419 -0
  277. package/numeric/vue.js +218 -0
  278. package/option/index.js +79 -0
  279. package/option/vue.js +219 -0
  280. package/option-group/index.js +18 -0
  281. package/option-group/vue.js +37 -0
  282. package/package.json +179 -0
  283. package/pager-item/index.js +122 -0
  284. package/pager-item/vue.js +52 -0
  285. package/panel/index.js +30 -0
  286. package/panel/vue.js +26 -0
  287. package/picker/index.js +1039 -0
  288. package/picker/timezone.js +974 -0
  289. package/picker/vue.js +415 -0
  290. package/picker-column/index.js +261 -0
  291. package/picker-column/vue.js +163 -0
  292. package/pop-upload/index.js +324 -0
  293. package/pop-upload/vue.js +292 -0
  294. package/popeditor/index.js +884 -0
  295. package/popeditor/vue.js +368 -0
  296. package/popover/index.js +203 -0
  297. package/popover/vue.js +174 -0
  298. package/popup/index.js +139 -0
  299. package/popup/vue.js +129 -0
  300. package/progress/index.js +174 -0
  301. package/progress/vue.js +118 -0
  302. package/pull-refresh/index.js +104 -0
  303. package/pull-refresh/vue.js +64 -0
  304. package/radio/index.js +83 -0
  305. package/radio/vue.js +99 -0
  306. package/radio-button/index.js +58 -0
  307. package/radio-button/vue.js +70 -0
  308. package/radio-group/index.js +51 -0
  309. package/radio-group/vue.js +34 -0
  310. package/rate/index.js +254 -0
  311. package/rate/vue.js +158 -0
  312. package/row/index.js +19 -0
  313. package/row/vue.js +24 -0
  314. package/scroll-text/index.js +24 -0
  315. package/scroll-text/vue.js +31 -0
  316. package/scrollbar/index.js +127 -0
  317. package/scrollbar/vue-bar.js +49 -0
  318. package/scrollbar/vue.js +43 -0
  319. package/search/index.js +110 -0
  320. package/search/vue.js +110 -0
  321. package/select/index.js +1766 -0
  322. package/select/vue.js +693 -0
  323. package/select-dropdown/index.js +23 -0
  324. package/select-dropdown/vue.js +122 -0
  325. package/slide-bar/index.js +94 -0
  326. package/slide-bar/vue.js +58 -0
  327. package/slider/index.js +434 -0
  328. package/slider/vue.js +172 -0
  329. package/split/index.js +122 -0
  330. package/split/vue.js +131 -0
  331. package/steps/vue.js +4 -0
  332. package/switch/index.js +45 -0
  333. package/switch/vue.js +62 -0
  334. package/tab-bar/index.js +51 -0
  335. package/tab-bar/vue.js +16 -0
  336. package/tab-dropdown/index.js +11 -0
  337. package/tab-dropdown/vue.js +17 -0
  338. package/tab-item/index.js +37 -0
  339. package/tab-item/vue.js +49 -0
  340. package/tab-nav/index.js +247 -0
  341. package/tab-nav/vue.js +106 -0
  342. package/tabbar/index.js +32 -0
  343. package/tabbar/vue.js +54 -0
  344. package/tabbar-item/index.js +55 -0
  345. package/tabbar-item/vue.js +53 -0
  346. package/table/index.js +111 -0
  347. package/table/vue.js +66 -0
  348. package/tabs/index.js +174 -0
  349. package/tabs/vue.js +141 -0
  350. package/tag/index.js +14 -0
  351. package/tag/vue.js +13 -0
  352. package/tall-storage/index.js +161 -0
  353. package/tall-storage/vue-storage-box.js +25 -0
  354. package/tall-storage/vue.js +38 -0
  355. package/text-popup/index.js +75 -0
  356. package/text-popup/vue.js +64 -0
  357. package/time/index.js +121 -0
  358. package/time/vue.js +124 -0
  359. package/time-line/index.js +60 -0
  360. package/time-line/vue.js +49 -0
  361. package/time-panel/index.js +189 -0
  362. package/time-panel/scrollIntoView.js +23 -0
  363. package/time-panel/vue.js +110 -0
  364. package/time-range/index.js +199 -0
  365. package/time-range/vue.js +129 -0
  366. package/time-spinner/index.js +175 -0
  367. package/time-spinner/vue.js +122 -0
  368. package/toggle-menu/index.js +104 -0
  369. package/toggle-menu/vue.js +74 -0
  370. package/tooltip/index.js +171 -0
  371. package/tooltip/vue.js +133 -0
  372. package/top-box/index.js +81 -0
  373. package/top-box/vue.js +77 -0
  374. package/transfer/index.js +296 -0
  375. package/transfer/vue.js +138 -0
  376. package/transfer-panel/index.js +364 -0
  377. package/transfer-panel/vue.js +258 -0
  378. package/tree/index.js +642 -0
  379. package/tree/vue.js +268 -0
  380. package/tree-menu/index.js +124 -0
  381. package/tree-menu/vue.js +60 -0
  382. package/tree-node/index.js +271 -0
  383. package/tree-node/vue.js +211 -0
  384. package/upload/index.js +324 -0
  385. package/upload/vue.js +93 -0
  386. package/upload-dragger/index.js +50 -0
  387. package/upload-dragger/vue.js +27 -0
  388. package/upload-list/index.js +55 -0
  389. package/upload-list/vue.js +48 -0
  390. package/user-contact/index.js +13 -0
  391. package/user-contact/vue.js +20 -0
  392. package/user-head/index.js +71 -0
  393. package/user-head/vue.js +47 -0
  394. package/wizard/index.js +123 -0
  395. package/wizard/vue.js +45 -0
  396. package/year-table/index.js +40 -0
  397. package/year-table/vue.js +23 -0
@@ -0,0 +1,13 @@
1
+ import * as util from '../util';
2
+ import { hasOwn } from '@opentiny/vue-renderless/common/type';
3
+ export default function (_ref) {
4
+ var rule = _ref.rule,
5
+ checkValue = _ref.checkValue,
6
+ source = _ref.source,
7
+ errors = _ref.errors,
8
+ options = _ref.options,
9
+ type = _ref.type;
10
+ if (rule.required && (!hasOwn.call(source, rule.field) || util.isEmptyValue(checkValue, type || rule.type))) {
11
+ errors.push(util.format(options.messages.required, rule.fullField));
12
+ }
13
+ }
@@ -0,0 +1,110 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ import * as util from '../util';
3
+ import required from './required';
4
+ import { format } from '@opentiny/vue-renderless/common/date';
5
+ import { isNullOrEmpty } from '@opentiny/vue-renderless/common/string';
6
+ import { isNumber, isObject, isDate, typeOf } from '@opentiny/vue-renderless/common/type';
7
+ var emailReg1 = '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))';
8
+ var emailReg = new RegExp(emailReg1 + '@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,6}))$');
9
+ var pattern = {
10
+ acceptImg: /\.(png|jpe?g|gif)$/,
11
+ acceptFile: /\.(doc?x|xls?x|ppt?x|txt)$/,
12
+ email: emailReg,
13
+ fileSize: /^\d+(\.\d+)?[KMGTPEZY]?B$/i,
14
+ hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,
15
+ speczh: /^[0-9a-zA-Z_\u4e00-\u9fa5]+$/,
16
+ specialch: /^[0-9a-zA-Z_\-.]+$/,
17
+ specialch2: /^[0-9a-zA-Z_-]+$/,
18
+ url: /^([a-zA-Z]{3,}):\/\/([\w-]+\.)+[\w]+(\/[a-zA-Z- ./?%&=]*)?/i,
19
+ version: /^\d+\.\d+(\.\d+)*$/
20
+ };
21
+ var types = {
22
+ integer: function integer(value) {
23
+ return types.number(value) && parseInt(value, 10) === value;
24
+ },
25
+ "float": function float(value) {
26
+ return types.number(value) && !types.integer(value);
27
+ },
28
+ array: Array.isArray,
29
+ regexp: function regexp(value) {
30
+ if (value instanceof RegExp) {
31
+ return true;
32
+ }
33
+ try {
34
+ return !!new RegExp(value);
35
+ } catch (e) {
36
+ return false;
37
+ }
38
+ },
39
+ date: isDate,
40
+ number: isNumber,
41
+ object: function object(value) {
42
+ return isObject(value) && !types.array(value);
43
+ },
44
+ method: function method(value) {
45
+ return typeOf(value) === 'function';
46
+ },
47
+ email: function email(value) {
48
+ return isNullOrEmpty(value) || !!value.match(pattern.email) && value.length < 255;
49
+ },
50
+ url: function url(value) {
51
+ return isNullOrEmpty(value) || !!value.match(pattern.url);
52
+ },
53
+ hex: function hex(value) {
54
+ return isNullOrEmpty(value) || !!value.match(pattern.hex);
55
+ },
56
+ digits: function digits(value) {
57
+ return isNullOrEmpty(value) || /^\d+$/.test(value);
58
+ },
59
+ time: function time(value) {
60
+ return isNullOrEmpty(value) || /^((0)[0-9]|1[0-9]|20|21|22|23):([0-5][0-9])$/.test(value);
61
+ },
62
+ dateYM: function dateYM(value) {
63
+ return isNullOrEmpty(value) || format(value, 'yyyy-MM') === value;
64
+ },
65
+ dateYMD: function dateYMD(value) {
66
+ return isNullOrEmpty(value) || format(value, 'yyyy-MM-dd') === value;
67
+ },
68
+ dateTime: function dateTime(value) {
69
+ return isNullOrEmpty(value) || format(value, 'yyyy-MM-dd hh:mm') === value;
70
+ },
71
+ longDateTime: function longDateTime(value) {
72
+ return isNullOrEmpty(value) || format(value, 'yyyy-MM-dd hh:mm:ss') === value;
73
+ },
74
+ version: function version(value) {
75
+ return isNullOrEmpty(value) || !!value.match(pattern.version);
76
+ },
77
+ speczh: function speczh(value) {
78
+ return isNullOrEmpty(value) || !!value.match(pattern.speczh);
79
+ },
80
+ specialch: function specialch(value) {
81
+ return isNullOrEmpty(value) || !!value.match(pattern.specialch);
82
+ },
83
+ specialch2: function specialch2(value) {
84
+ return isNullOrEmpty(value) || !!value.match(pattern.specialch2);
85
+ },
86
+ acceptImg: function acceptImg(value) {
87
+ return isNullOrEmpty(value) || !!value.match(pattern.acceptImg);
88
+ },
89
+ acceptFile: function acceptFile(value) {
90
+ return isNullOrEmpty(value) || !!value.match(pattern.acceptFile);
91
+ },
92
+ fileSize: function fileSize(value) {
93
+ return isNullOrEmpty(value) || !!value.match(pattern.fileSize);
94
+ }
95
+ };
96
+ export default function (rule, value, source, errors, options) {
97
+ if (rule.required && value === undefined) {
98
+ required(rule, value, source, errors, options);
99
+ return;
100
+ }
101
+ var custom = ['array', 'acceptImg', 'acceptFile', 'date', 'digits', 'dateTime', 'dateYM', 'dateYMD', 'email', 'float', 'fileSize', 'hex', 'integer', 'longDateTime', 'method', 'number', 'object', 'regexp', 'speczh', 'specialch', 'specialch2', 'time', 'version', 'url'];
102
+ var ruleType = rule.type;
103
+ if (custom.indexOf(ruleType) > -1) {
104
+ if (!types[ruleType](value)) {
105
+ errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));
106
+ }
107
+ } else if (ruleType && _typeof(value) !== rule.type) {
108
+ errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));
109
+ }
110
+ }
@@ -0,0 +1,6 @@
1
+ import * as util from '../util';
2
+ export default function (rule, checkValue, source, errors, options) {
3
+ if (/^\s+$/.test(checkValue) || checkValue === '') {
4
+ errors.push(util.format(options.messages.whitespace, rule.fullField));
5
+ }
6
+ }
@@ -0,0 +1,323 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+ import { format, complementError, asyncMap, warning, deepMerge, convertFieldsError } from './util';
7
+ import { hasOwn, isFunction } from '@opentiny/vue-renderless/common/type';
8
+ function Schema(descriptor, translate) {
9
+ Schema.getSystemMessage = function () {
10
+ return Schema.getDefaultMessage(translate);
11
+ };
12
+ Schema.messages = Schema.getSystemMessage(translate);
13
+ Schema.systemMessages = Schema.messages;
14
+ this.rules = null;
15
+ this._messages = Schema.systemMessages;
16
+ this.define(descriptor);
17
+ }
18
+ var getCompleteFn = function getCompleteFn(validCallback) {
19
+ return function (results) {
20
+ var idx;
21
+ var errors = [];
22
+ var fields = {};
23
+ function addValid(eror) {
24
+ if (Array.isArray(eror)) {
25
+ var _errors;
26
+ errors = (_errors = errors).concat.apply(_errors, _toConsumableArray(eror));
27
+ } else {
28
+ errors.push(eror);
29
+ }
30
+ }
31
+ for (idx = 0; idx < results.length; idx++) {
32
+ addValid(results[idx]);
33
+ }
34
+ if (errors.length) {
35
+ fields = convertFieldsError(errors);
36
+ } else {
37
+ errors = null;
38
+ fields = null;
39
+ }
40
+ validCallback(errors, fields);
41
+ };
42
+ };
43
+ var isDeep = function isDeep(rule, data) {
44
+ var deep = (rule.type === 'object' || rule.type === 'array') && (_typeof(rule.fields) === 'object' || _typeof(rule.defaultField) === 'object');
45
+ deep = deep && (rule.required || !rule.required && data.value);
46
+ return deep;
47
+ };
48
+ var getFieldsSchema = function getFieldsSchema(rule, data) {
49
+ var schema = {};
50
+ function addFullfield(key, item) {
51
+ return _objectSpread(_objectSpread({}, item), {}, {
52
+ fullField: "".concat(rule.fullField, ".").concat(key)
53
+ });
54
+ }
55
+ if (rule.defaultField) {
56
+ for (var k in data.value) {
57
+ if (hasOwn.call(data.value, k)) {
58
+ schema[k] = rule.defaultField;
59
+ }
60
+ }
61
+ }
62
+ schema = _objectSpread(_objectSpread({}, schema), data.rule.fields);
63
+ for (var f in schema) {
64
+ if (hasOwn.call(schema, f)) {
65
+ var fieldSchema = Array.isArray(schema[f]) ? schema[f] : [schema[f]];
66
+ schema[f] = fieldSchema.map(addFullfield.bind(null, f));
67
+ }
68
+ }
69
+ return schema;
70
+ };
71
+ var arrayed = function arrayed(failds) {
72
+ if (!Array.isArray(failds)) {
73
+ failds = [failds];
74
+ }
75
+ return failds;
76
+ };
77
+ var getRequiredErrorFeilds = function getRequiredErrorFeilds(_ref) {
78
+ var rule = _ref.rule,
79
+ failds = _ref.failds,
80
+ options = _ref.options;
81
+ if (rule.message) {
82
+ failds = [].concat(rule.message).map(complementError(rule));
83
+ } else if (options.error) {
84
+ failds = [options.error(rule, format(options.messages.required, rule.field))];
85
+ } else {
86
+ failds = [];
87
+ }
88
+ return failds;
89
+ };
90
+ var setDataRuleOptions = function setDataRuleOptions(_ref2) {
91
+ var data = _ref2.data,
92
+ options = _ref2.options;
93
+ if (data.rule.options) {
94
+ var messages = options.messages,
95
+ error = options.error;
96
+ Object.assign(data.rule.options, {
97
+ messages: messages,
98
+ error: error
99
+ });
100
+ }
101
+ };
102
+ var getValidateCallback = function getValidateCallback(_ref3) {
103
+ var failds = _ref3.failds,
104
+ doIt = _ref3.doIt;
105
+ return function (errs) {
106
+ var finalErrors = [];
107
+ if (failds && failds.length) {
108
+ finalErrors.push.apply(finalErrors, _toConsumableArray(failds));
109
+ }
110
+ if (errs && errs.length) {
111
+ finalErrors.push.apply(finalErrors, _toConsumableArray(errs));
112
+ }
113
+ doIt(finalErrors.length ? finalErrors : null);
114
+ };
115
+ };
116
+ var asyncCallback = function asyncCallback(options, rule, errorFields, doIt, data) {
117
+ return function () {
118
+ var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
119
+ var failds = e;
120
+ var deep = isDeep(rule, data);
121
+ failds = arrayed(failds);
122
+ if (!options.suppressWarning && failds.length) {
123
+ Schema.warning('async-validator:', failds);
124
+ }
125
+ if (failds.length && rule.message) {
126
+ failds = [].concat(rule.message);
127
+ }
128
+ failds = failds.map(complementError(rule));
129
+ if (options.first && failds.length) {
130
+ errorFields[rule.field] = 1;
131
+ return doIt(failds);
132
+ }
133
+ if (deep) {
134
+ if (rule.required && !data.value) {
135
+ failds = getRequiredErrorFeilds({
136
+ rule: rule,
137
+ failds: failds,
138
+ options: options
139
+ });
140
+ return doIt(failds);
141
+ }
142
+ var schema = new Schema(getFieldsSchema(rule, data));
143
+ schema.messages(options.messages);
144
+ setDataRuleOptions({
145
+ data: data,
146
+ options: options
147
+ });
148
+ schema.validate(data.value, data.rule.options || options, getValidateCallback({
149
+ failds: failds,
150
+ doIt: doIt
151
+ }));
152
+ } else {
153
+ doIt(failds);
154
+ }
155
+ };
156
+ };
157
+ Schema.prototype = {
158
+ messages: function messages(_messages) {
159
+ if (_messages) {
160
+ this._messages = deepMerge(Schema.getSystemMessage(), _messages);
161
+ }
162
+ return this._messages;
163
+ },
164
+ define: function define(rules) {
165
+ var _this = this;
166
+ if (!rules) {
167
+ throw new Error('Cannot configure a schema with no rules');
168
+ }
169
+ if (Array.isArray(rules) || _typeof(rules) !== 'object') {
170
+ throw new Error('Rules must be an object');
171
+ }
172
+ this.rules = {};
173
+ var rule;
174
+ Object.keys(rules).forEach(function (key) {
175
+ if (hasOwn.call(rules, key)) {
176
+ rule = rules[key];
177
+ _this.rules[key] = Array.isArray(rule) ? rule : [rule];
178
+ }
179
+ });
180
+ },
181
+ getSeries: function getSeries(options, source, source_) {
182
+ var _this2 = this;
183
+ var arr;
184
+ var value;
185
+ var series = {};
186
+ var keys = options.keys || Object.keys(this.rules);
187
+ keys.forEach(function (key) {
188
+ arr = _this2.rules[key];
189
+ value = source[key];
190
+ arr.forEach(function (r) {
191
+ var rule = r;
192
+ if (typeof rule.transform === 'function') {
193
+ if (source === source_) {
194
+ source = _objectSpread({}, source);
195
+ }
196
+ source[key] = rule.transform(value);
197
+ value = source[key];
198
+ }
199
+ if (typeof rule === 'function') {
200
+ rule = {
201
+ validator: rule
202
+ };
203
+ } else {
204
+ rule = _objectSpread({}, rule);
205
+ }
206
+ rule.validator = _this2.getValidationMethod(rule);
207
+ rule.field = key;
208
+ rule.fullField = rule.fullField || key;
209
+ rule.type = _this2.getType(rule);
210
+ options.custom && Object.assign(rule, options.custom);
211
+ if (!rule.validator) {
212
+ return;
213
+ }
214
+ series[key] = series[key] || [];
215
+ series[key].push({
216
+ rule: rule,
217
+ value: value,
218
+ source: source,
219
+ field: key
220
+ });
221
+ });
222
+ });
223
+ return series;
224
+ },
225
+ mergeMessage: function mergeMessage(options) {
226
+ if (options.messages) {
227
+ var messages = this.messages();
228
+ if (messages === Schema.systemMessages) {
229
+ messages = Schema.getSystemMessage();
230
+ }
231
+ deepMerge(messages, options.messages);
232
+ options.messages = messages;
233
+ } else {
234
+ options.messages = this.messages();
235
+ }
236
+ },
237
+ validate: function validate(source_) {
238
+ var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
239
+ var oc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {
240
+ return undefined;
241
+ };
242
+ var source = source_;
243
+ var options = o;
244
+ var validCallback = oc;
245
+ if (typeof options === 'function') {
246
+ validCallback = options;
247
+ options = {};
248
+ }
249
+ if (!this.rules || Object.keys(this.rules).length === 0) {
250
+ validCallback && validCallback();
251
+ return Promise.resolve();
252
+ }
253
+ var complete = getCompleteFn(validCallback);
254
+ this.mergeMessage(options);
255
+ var seriesData = this.getSeries(options, source, source_);
256
+ var errorFields = {};
257
+ return asyncMap(seriesData, options, function (data, doIt) {
258
+ var rule = data.rule;
259
+ var validHandler = asyncCallback(options, rule, errorFields, doIt, data);
260
+ var validResult;
261
+ if (rule.asyncValidator) {
262
+ validResult = rule.asyncValidator(rule, data.value, validHandler, data.source, options);
263
+ } else if (rule.validator) {
264
+ validResult = rule.validator(rule, data.value, validHandler, data.source, options);
265
+ if (validResult === true) {
266
+ validHandler();
267
+ } else if (validResult === false) {
268
+ validHandler(rule.message || "".concat(rule.field, " fails"));
269
+ } else if (Array.isArray(validResult)) {
270
+ validHandler(validResult);
271
+ } else if (validResult instanceof Error) {
272
+ validHandler(validResult.message);
273
+ }
274
+ }
275
+ if (validResult && validResult.then) {
276
+ validResult.then(function () {
277
+ return validHandler();
278
+ }, function (e) {
279
+ return validHandler(e);
280
+ });
281
+ }
282
+ }, function (results) {
283
+ complete(results);
284
+ });
285
+ },
286
+ getValidationMethod: function getValidationMethod(rule) {
287
+ if (isFunction(rule.validator)) {
288
+ return rule.validator;
289
+ }
290
+ var ruleKeys = Object.keys(rule);
291
+ var messageIndex = ruleKeys.indexOf('message');
292
+ if (messageIndex > -1) {
293
+ ruleKeys.splice(messageIndex, 1);
294
+ }
295
+ if (ruleKeys.length === 1 && ruleKeys[0] === 'required') {
296
+ return Schema.validators.required;
297
+ }
298
+ return Schema.validators[this.getType(rule)] || false;
299
+ },
300
+ getType: function getType(rule) {
301
+ if (rule.type === undefined && rule.pattern instanceof RegExp) {
302
+ rule.type = 'pattern';
303
+ }
304
+ if (typeof rule.validator !== 'function' && rule.type && !hasOwn.call(Schema.validators, rule.type)) {
305
+ throw new Error(format('Unknown rule type %s', rule.type));
306
+ }
307
+ return rule.type || 'string';
308
+ }
309
+ };
310
+ Schema.register = function (type, validator) {
311
+ if (typeof validator !== 'function') {
312
+ throw new Error('Cannot register a validator by type, validator is not a function');
313
+ }
314
+ Schema.validators[type] = validator;
315
+ };
316
+ Schema.validators = {};
317
+ Schema.warning = warning;
318
+ Schema.messages = {};
319
+ Schema.systemMessages = {};
320
+ Schema.getDefaultMessage = function () {
321
+ return undefined;
322
+ };
323
+ export default Schema;
@@ -0,0 +1,198 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
+ import { hasOwn, isNull } from '@opentiny/vue-renderless/common/type';
6
+ var formatRegExp = /%[sdj%]/g;
7
+ export var warning = function warning() {
8
+ return undefined;
9
+ };
10
+ export function convertFieldsError(errors) {
11
+ if (!errors || !errors.length) {
12
+ return null;
13
+ }
14
+ var fields = {};
15
+ errors.forEach(function (error) {
16
+ var field = error.field;
17
+ fields[field] = fields[field] || [];
18
+ fields[field].push(error);
19
+ });
20
+ return fields;
21
+ }
22
+ export function format() {
23
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
24
+ args[_key] = arguments[_key];
25
+ }
26
+ var i = 1;
27
+ var checkData = args[0];
28
+ var len = args.length;
29
+ if (typeof checkData === 'function') {
30
+ return checkData.apply(null, args.slice(1));
31
+ }
32
+ if (typeof checkData === 'string') {
33
+ var str = String(checkData).replace(formatRegExp, function (matchChar) {
34
+ if (matchChar === '%%') {
35
+ return '%';
36
+ }
37
+ if (i >= len) {
38
+ return matchChar;
39
+ }
40
+ switch (matchChar) {
41
+ case '%j':
42
+ try {
43
+ return JSON.stringify(args[i++]);
44
+ } catch (e) {
45
+ return '[Circular]';
46
+ }
47
+ case '%d':
48
+ return Number(args[i++]);
49
+ case '%s':
50
+ return String(args[i++]);
51
+ default:
52
+ return matchChar;
53
+ }
54
+ });
55
+ return str;
56
+ }
57
+ return checkData;
58
+ }
59
+ function isNativeStringType(type) {
60
+ return ~['string', 'url', 'hex', 'email', 'pattern', 'digits', 'time', 'dateYMD', 'longDateTime', 'dateTime', 'dateYM', 'version', 'speczh', 'specialch', 'specialch2', 'acceptImg', 'acceptFile', 'fileSize'].indexOf(type);
61
+ }
62
+ export function isEmptyValue(data, dataType) {
63
+ if (isNull(data)) {
64
+ return true;
65
+ }
66
+ if (dataType === 'array' && Array.isArray(data) && !data.length) {
67
+ return true;
68
+ }
69
+ if (isNativeStringType(dataType) && typeof data === 'string' && !data) {
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ export function isEmptyObject(data) {
75
+ return Object.keys(data).length === 0;
76
+ }
77
+ function asyncParallelArray(arrData, func, callback) {
78
+ var count = 0;
79
+ var results = [];
80
+ var arrLength = arrData.length;
81
+ function checkCount(errors) {
82
+ results.push.apply(results, errors);
83
+ count++;
84
+ if (count === arrLength) {
85
+ callback(results);
86
+ }
87
+ }
88
+ arrData.forEach(function (rule) {
89
+ func(rule, checkCount);
90
+ });
91
+ }
92
+ function asyncSerialArray(arr, fn, cb) {
93
+ var idx = 0;
94
+ var arrLength = arr.length;
95
+ function checkNext(errorList) {
96
+ if (errorList && errorList.length) {
97
+ cb(errorList);
98
+ return;
99
+ }
100
+ var original = idx;
101
+ idx = idx + 1;
102
+ if (original < arrLength) {
103
+ fn(arr[original], checkNext);
104
+ } else {
105
+ cb([]);
106
+ }
107
+ }
108
+ checkNext([]);
109
+ }
110
+ function flattenObjArr(objArr) {
111
+ var result = [];
112
+ Object.keys(objArr).forEach(function (item) {
113
+ result.push.apply(result, objArr[item]);
114
+ });
115
+ return result;
116
+ }
117
+ export function asyncMap(objArray, option, func, callback) {
118
+ if (option.first) {
119
+ var _pending = new Promise(function (resolve, reject) {
120
+ var errorFn = reject;
121
+ var next = function next(errors) {
122
+ callback(errors);
123
+ return errors.length ? errorFn({
124
+ errors: errors,
125
+ fields: convertFieldsError(errors)
126
+ }) : resolve();
127
+ };
128
+ var flattenArr = flattenObjArr(objArray);
129
+ asyncSerialArray(flattenArr, func, next);
130
+ });
131
+ _pending["catch"](function (error) {
132
+ return error;
133
+ });
134
+ return _pending;
135
+ }
136
+ var firstFields = option.firstFields || [];
137
+ if (firstFields === true) {
138
+ firstFields = Object.keys(objArray);
139
+ }
140
+ var total = 0;
141
+ var objArrayKeys = Object.keys(objArray);
142
+ var objArrLength = objArrayKeys.length;
143
+ var results = [];
144
+ var pending = new Promise(function (resolve, reject) {
145
+ var errorFn = reject;
146
+ var next = function next(errors) {
147
+ results.push.apply(results, errors);
148
+ total++;
149
+ if (total === objArrLength) {
150
+ callback(results);
151
+ return results.length ? errorFn({
152
+ errors: results,
153
+ fields: convertFieldsError(results)
154
+ }) : resolve();
155
+ }
156
+ };
157
+ objArrayKeys.forEach(function (key) {
158
+ var arr = objArray[key];
159
+ if (~firstFields.indexOf(key)) {
160
+ asyncSerialArray(arr, func, next);
161
+ } else {
162
+ asyncParallelArray(arr, func, next);
163
+ }
164
+ });
165
+ });
166
+ pending["catch"](function (e) {
167
+ return e;
168
+ });
169
+ return pending;
170
+ }
171
+ export function complementError(rule) {
172
+ return function (onError) {
173
+ if (onError && onError.message) {
174
+ onError.field = onError.field || rule.fullField;
175
+ return onError;
176
+ }
177
+ return {
178
+ message: typeof onError === 'function' ? onError() : onError,
179
+ field: onError.field || rule.fullField
180
+ };
181
+ };
182
+ }
183
+ export function deepMerge(target, sources) {
184
+ if (!sources) {
185
+ return target;
186
+ }
187
+ for (var source in sources) {
188
+ if (hasOwn.call(sources, source)) {
189
+ var value = sources[source];
190
+ if (_typeof(value) === 'object' && _typeof(target[source]) === 'object') {
191
+ target[source] = _objectSpread(_objectSpread({}, target[source]), value);
192
+ } else {
193
+ target[source] = value;
194
+ }
195
+ }
196
+ }
197
+ return target;
198
+ }
@@ -0,0 +1,25 @@
1
+ import rules from '../rules/index';
2
+ import { isEmptyValue } from '../util';
3
+ import { hasOwn } from '@opentiny/vue-renderless/common/type';
4
+ export default function (rule, checkValue, callback, source, options) {
5
+ var errors = [];
6
+ var validate = rule.required || !rule.required && hasOwn.call(source, rule.field);
7
+ if (validate) {
8
+ if (isEmptyValue(checkValue, 'array') && !rule.required) {
9
+ return callback();
10
+ }
11
+ rules.required({
12
+ rule: rule,
13
+ checkValue: checkValue,
14
+ source: source,
15
+ errors: errors,
16
+ options: options,
17
+ type: 'array'
18
+ });
19
+ if (!isEmptyValue(checkValue, 'array')) {
20
+ rules.type(rule, checkValue, source, errors, options);
21
+ rules.range(rule, checkValue, source, errors, options);
22
+ }
23
+ }
24
+ callback(errors);
25
+ }