@7pmlabs/design-system 2.0.8 → 2.1.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 (377) hide show
  1. package/README.md +4 -4
  2. package/dist/design-system.css +1 -1
  3. package/dist/design-system.js +65 -59
  4. package/dist/design-system100.js +1 -1
  5. package/dist/design-system100.js.map +1 -1
  6. package/dist/design-system101.js +87 -53
  7. package/dist/design-system101.js.map +1 -1
  8. package/dist/design-system103.js +5 -13
  9. package/dist/design-system103.js.map +1 -1
  10. package/dist/design-system104.js +53 -108
  11. package/dist/design-system104.js.map +1 -1
  12. package/dist/{design-system102.js → design-system105.js} +1 -1
  13. package/dist/{design-system102.js.map → design-system105.js.map} +1 -1
  14. package/dist/design-system106.js +13 -6
  15. package/dist/design-system106.js.map +1 -1
  16. package/dist/design-system107.js +93 -190
  17. package/dist/design-system107.js.map +1 -1
  18. package/dist/design-system109.js +2 -2
  19. package/dist/design-system109.js.map +1 -1
  20. package/dist/design-system110.js +183 -484
  21. package/dist/design-system110.js.map +1 -1
  22. package/dist/design-system112.js +5 -4
  23. package/dist/design-system112.js.map +1 -1
  24. package/dist/design-system113.js +507 -7
  25. package/dist/design-system113.js.map +1 -1
  26. package/dist/design-system115.js +8 -0
  27. package/dist/design-system115.js.map +1 -0
  28. package/dist/design-system116.js +7 -6
  29. package/dist/design-system116.js.map +1 -1
  30. package/dist/design-system117.js +154 -169
  31. package/dist/design-system117.js.map +1 -1
  32. package/dist/design-system119.js +2 -2
  33. package/dist/design-system119.js.map +1 -1
  34. package/dist/design-system120.js +210 -149
  35. package/dist/design-system120.js.map +1 -1
  36. package/dist/design-system122.js +5 -4
  37. package/dist/design-system122.js.map +1 -1
  38. package/dist/design-system123.js +160 -9
  39. package/dist/design-system123.js.map +1 -1
  40. package/dist/design-system125.js +8 -0
  41. package/dist/design-system125.js.map +1 -0
  42. package/dist/design-system126.js +176 -6
  43. package/dist/design-system126.js.map +1 -1
  44. package/dist/design-system128.js +8 -0
  45. package/dist/design-system128.js.map +1 -0
  46. package/dist/design-system129.js +213 -5
  47. package/dist/design-system129.js.map +1 -1
  48. package/dist/design-system131.js +5 -90
  49. package/dist/design-system131.js.map +1 -1
  50. package/dist/design-system132.js +166 -0
  51. package/dist/design-system132.js.map +1 -0
  52. package/dist/design-system134.js +5 -42
  53. package/dist/design-system134.js.map +1 -1
  54. package/dist/design-system135.js +12 -0
  55. package/dist/design-system135.js.map +1 -0
  56. package/dist/design-system136.js +274 -5
  57. package/dist/design-system136.js.map +1 -1
  58. package/dist/design-system138.js +9 -0
  59. package/dist/{design-system124.js.map → design-system138.js.map} +1 -1
  60. package/dist/design-system139.js +16 -5
  61. package/dist/design-system139.js.map +1 -1
  62. package/dist/design-system141.js +8 -0
  63. package/dist/{design-system127.js.map → design-system141.js.map} +1 -1
  64. package/dist/design-system142.js +12 -5
  65. package/dist/design-system142.js.map +1 -1
  66. package/dist/design-system143.js +78 -83
  67. package/dist/design-system143.js.map +1 -1
  68. package/dist/design-system145.js +1 -1
  69. package/dist/design-system145.js.map +1 -1
  70. package/dist/design-system146.js +42 -9
  71. package/dist/design-system146.js.map +1 -1
  72. package/dist/design-system148.js +3 -2
  73. package/dist/design-system148.js.map +1 -1
  74. package/dist/design-system149.js +230 -18
  75. package/dist/design-system149.js.map +1 -1
  76. package/dist/design-system151.js +5 -158
  77. package/dist/design-system151.js.map +1 -1
  78. package/dist/{design-system140.js → design-system152.js} +6 -6
  79. package/dist/{design-system140.js.map → design-system152.js.map} +1 -1
  80. package/dist/design-system154.js +5 -307
  81. package/dist/design-system154.js.map +1 -1
  82. package/dist/design-system155.js +98 -0
  83. package/dist/design-system155.js.map +1 -0
  84. package/dist/design-system157.js +5 -240
  85. package/dist/design-system157.js.map +1 -1
  86. package/dist/design-system158.js +12 -0
  87. package/dist/design-system158.js.map +1 -0
  88. package/dist/design-system159.js +37 -5
  89. package/dist/design-system159.js.map +1 -1
  90. package/dist/design-system160.js +4 -189
  91. package/dist/design-system160.js.map +1 -1
  92. package/dist/design-system161.js +24 -0
  93. package/dist/{design-system150.js.map → design-system161.js.map} +1 -1
  94. package/dist/design-system162.js +2 -3
  95. package/dist/design-system162.js.map +1 -1
  96. package/dist/design-system163.js +158 -3
  97. package/dist/design-system163.js.map +1 -1
  98. package/dist/{design-system153.js → design-system165.js} +2 -2
  99. package/dist/{design-system153.js.map → design-system165.js.map} +1 -1
  100. package/dist/design-system166.js +307 -6
  101. package/dist/design-system166.js.map +1 -1
  102. package/dist/{design-system156.js → design-system168.js} +2 -2
  103. package/dist/{design-system156.js.map → design-system168.js.map} +1 -1
  104. package/dist/design-system169.js +167 -6
  105. package/dist/design-system169.js.map +1 -1
  106. package/dist/design-system171.js +8 -0
  107. package/dist/design-system171.js.map +1 -0
  108. package/dist/design-system172.js +240 -6
  109. package/dist/design-system172.js.map +1 -1
  110. package/dist/design-system174.js +8 -0
  111. package/dist/design-system174.js.map +1 -0
  112. package/dist/design-system175.js +189 -6
  113. package/dist/design-system175.js.map +1 -1
  114. package/dist/design-system177.js +8 -0
  115. package/dist/design-system177.js.map +1 -0
  116. package/dist/design-system178.js +3 -5
  117. package/dist/design-system178.js.map +1 -1
  118. package/dist/design-system179.js +58 -11
  119. package/dist/design-system179.js.map +1 -1
  120. package/dist/design-system181.js +9 -0
  121. package/dist/design-system181.js.map +1 -0
  122. package/dist/design-system182.js +56 -6
  123. package/dist/design-system182.js.map +1 -1
  124. package/dist/design-system184.js +9 -0
  125. package/dist/{design-system167.js.map → design-system184.js.map} +1 -1
  126. package/dist/design-system185.js +69 -5
  127. package/dist/design-system185.js.map +1 -1
  128. package/dist/design-system187.js +9 -0
  129. package/dist/{design-system170.js.map → design-system187.js.map} +1 -1
  130. package/dist/design-system188.js +182 -5
  131. package/dist/design-system188.js.map +1 -1
  132. package/dist/design-system190.js +9 -0
  133. package/dist/design-system190.js.map +1 -0
  134. package/dist/design-system191.js +115 -5
  135. package/dist/design-system191.js.map +1 -1
  136. package/dist/design-system193.js +8 -0
  137. package/dist/{design-system176.js.map → design-system193.js.map} +1 -1
  138. package/dist/design-system194.js +11 -5
  139. package/dist/design-system194.js.map +1 -1
  140. package/dist/design-system195.js +453 -24
  141. package/dist/design-system195.js.map +1 -1
  142. package/dist/design-system197.js +5 -4
  143. package/dist/design-system197.js.map +1 -1
  144. package/dist/design-system198.js +20 -16
  145. package/dist/design-system198.js.map +1 -1
  146. package/dist/design-system200.js +1 -1
  147. package/dist/design-system200.js.map +1 -1
  148. package/dist/design-system201.js +70 -314
  149. package/dist/design-system201.js.map +1 -1
  150. package/dist/design-system203.js +1 -1
  151. package/dist/design-system203.js.map +1 -1
  152. package/dist/design-system204.js +24 -89
  153. package/dist/design-system204.js.map +1 -1
  154. package/dist/design-system206.js +1 -1
  155. package/dist/design-system206.js.map +1 -1
  156. package/dist/design-system207.js +26 -17
  157. package/dist/design-system207.js.map +1 -1
  158. package/dist/design-system209.js +5 -3
  159. package/dist/design-system209.js.map +1 -1
  160. package/dist/design-system210.js +22 -408
  161. package/dist/design-system210.js.map +1 -1
  162. package/dist/design-system212.js +1 -1
  163. package/dist/design-system212.js.map +1 -1
  164. package/dist/design-system213.js +24 -52
  165. package/dist/design-system213.js.map +1 -1
  166. package/dist/design-system215.js +1 -1
  167. package/dist/design-system215.js.map +1 -1
  168. package/dist/design-system216.js +329 -85
  169. package/dist/design-system216.js.map +1 -1
  170. package/dist/design-system218.js +5 -108
  171. package/dist/design-system218.js.map +1 -1
  172. package/dist/design-system219.js +103 -0
  173. package/dist/design-system219.js.map +1 -0
  174. package/dist/design-system221.js +5 -106
  175. package/dist/design-system221.js.map +1 -1
  176. package/dist/design-system222.js +22 -0
  177. package/dist/{design-system208.js.map → design-system222.js.map} +1 -1
  178. package/dist/design-system223.js +4 -6
  179. package/dist/design-system223.js.map +1 -1
  180. package/dist/design-system224.js +3 -737
  181. package/dist/design-system224.js.map +1 -1
  182. package/dist/design-system225.js +422 -0
  183. package/dist/design-system225.js.map +1 -0
  184. package/dist/design-system227.js +5 -11
  185. package/dist/design-system227.js.map +1 -1
  186. package/dist/design-system228.js +51 -517
  187. package/dist/design-system228.js.map +1 -1
  188. package/dist/design-system230.js +1 -1
  189. package/dist/design-system230.js.map +1 -1
  190. package/dist/design-system231.js +88 -3
  191. package/dist/design-system231.js.map +1 -1
  192. package/dist/design-system232.js +4 -46
  193. package/dist/design-system232.js.map +1 -1
  194. package/dist/design-system233.js +108 -4
  195. package/dist/design-system233.js.map +1 -1
  196. package/dist/{design-system220.js → design-system235.js} +2 -2
  197. package/dist/{design-system220.js.map → design-system235.js.map} +1 -1
  198. package/dist/design-system236.js +106 -5
  199. package/dist/design-system236.js.map +1 -1
  200. package/dist/design-system238.js +9 -0
  201. package/dist/design-system238.js.map +1 -0
  202. package/dist/design-system239.js +737 -5
  203. package/dist/design-system239.js.map +1 -1
  204. package/dist/{design-system226.js → design-system241.js} +2 -2
  205. package/dist/{design-system226.js.map → design-system241.js.map} +1 -1
  206. package/dist/design-system242.js +3 -5
  207. package/dist/design-system242.js.map +1 -1
  208. package/dist/design-system243.js +42 -50
  209. package/dist/design-system243.js.map +1 -1
  210. package/dist/design-system244.js +1 -1
  211. package/dist/design-system244.js.map +1 -1
  212. package/dist/design-system245.js +254 -141
  213. package/dist/design-system245.js.map +1 -1
  214. package/dist/design-system247.js +1 -1
  215. package/dist/design-system247.js.map +1 -1
  216. package/dist/design-system248.js +119 -7
  217. package/dist/design-system248.js.map +1 -1
  218. package/dist/design-system250.js +8 -0
  219. package/dist/design-system250.js.map +1 -0
  220. package/dist/design-system251.js +172 -5
  221. package/dist/design-system251.js.map +1 -1
  222. package/dist/design-system253.js +8 -0
  223. package/dist/design-system253.js.map +1 -0
  224. package/dist/design-system254.js +11 -6
  225. package/dist/design-system254.js.map +1 -1
  226. package/dist/design-system255.js +525 -9
  227. package/dist/design-system255.js.map +1 -1
  228. package/dist/design-system257.js +8 -0
  229. package/dist/design-system257.js.map +1 -0
  230. package/dist/design-system258.js +112 -6
  231. package/dist/design-system258.js.map +1 -1
  232. package/dist/design-system260.js +5 -374
  233. package/dist/design-system260.js.map +1 -1
  234. package/dist/design-system261.js +57 -0
  235. package/dist/design-system261.js.map +1 -0
  236. package/dist/design-system262.js +4 -6
  237. package/dist/design-system262.js.map +1 -1
  238. package/dist/design-system263.js +173 -0
  239. package/dist/design-system263.js.map +1 -0
  240. package/dist/design-system265.js +8 -0
  241. package/dist/design-system265.js.map +1 -0
  242. package/dist/design-system266.js +10 -0
  243. package/dist/design-system266.js.map +1 -0
  244. package/dist/{design-system249.js → design-system267.js} +2 -2
  245. package/dist/{design-system249.js.map → design-system267.js.map} +1 -1
  246. package/dist/design-system269.js +8 -0
  247. package/dist/design-system269.js.map +1 -0
  248. package/dist/{design-system252.js → design-system270.js} +1 -1
  249. package/dist/{design-system252.js.map → design-system270.js.map} +1 -1
  250. package/dist/design-system272.js +9 -0
  251. package/dist/design-system272.js.map +1 -0
  252. package/dist/design-system273.js +12 -0
  253. package/dist/design-system273.js.map +1 -0
  254. package/dist/{design-system256.js → design-system274.js} +2 -2
  255. package/dist/{design-system256.js.map → design-system274.js.map} +1 -1
  256. package/dist/design-system276.js +9 -0
  257. package/dist/design-system276.js.map +1 -0
  258. package/dist/{design-system259.js → design-system277.js} +1 -1
  259. package/dist/{design-system259.js.map → design-system277.js.map} +1 -1
  260. package/dist/design-system278.js +377 -0
  261. package/dist/design-system278.js.map +1 -0
  262. package/dist/design-system280.js +9 -0
  263. package/dist/design-system280.js.map +1 -0
  264. package/dist/design-system69.js +182 -13
  265. package/dist/design-system69.js.map +1 -1
  266. package/dist/design-system71.js +8 -0
  267. package/dist/design-system71.js.map +1 -0
  268. package/dist/design-system72.js +13 -5
  269. package/dist/design-system72.js.map +1 -1
  270. package/dist/design-system73.js +677 -139
  271. package/dist/design-system73.js.map +1 -1
  272. package/dist/design-system75.js +1 -1
  273. package/dist/design-system75.js.map +1 -1
  274. package/dist/design-system76.js +152 -23
  275. package/dist/design-system76.js.map +1 -1
  276. package/dist/design-system78.js +5 -49
  277. package/dist/design-system78.js.map +1 -1
  278. package/dist/design-system79.js +32 -0
  279. package/dist/design-system79.js.map +1 -0
  280. package/dist/design-system80.js +2 -3
  281. package/dist/design-system80.js.map +1 -1
  282. package/dist/design-system81.js +38 -188
  283. package/dist/design-system81.js.map +1 -1
  284. package/dist/design-system83.js +1 -1
  285. package/dist/design-system83.js.map +1 -1
  286. package/dist/design-system84.js +199 -7
  287. package/dist/design-system84.js.map +1 -1
  288. package/dist/design-system86.js +8 -0
  289. package/dist/design-system86.js.map +1 -0
  290. package/dist/design-system87.js +7 -5
  291. package/dist/design-system87.js.map +1 -1
  292. package/dist/design-system88.js +264 -48
  293. package/dist/design-system88.js.map +1 -1
  294. package/dist/design-system90.js +1 -1
  295. package/dist/design-system90.js.map +1 -1
  296. package/dist/design-system91.js +57 -11
  297. package/dist/design-system91.js.map +1 -1
  298. package/dist/design-system93.js +8 -0
  299. package/dist/design-system93.js.map +1 -0
  300. package/dist/design-system94.js +11 -5
  301. package/dist/design-system94.js.map +1 -1
  302. package/dist/design-system95.js +92 -59
  303. package/dist/design-system95.js.map +1 -1
  304. package/dist/design-system97.js +1 -1
  305. package/dist/design-system97.js.map +1 -1
  306. package/dist/design-system98.js +56 -78
  307. package/dist/design-system98.js.map +1 -1
  308. package/dist/types/components/BContextMenu/BContextMenu.spec.d.ts +1 -0
  309. package/dist/types/components/BContextMenu/BContextMenu.vue.d.ts +42 -0
  310. package/dist/types/components/BContextMenu/index.d.ts +2 -0
  311. package/dist/types/components/BContextMenu/types.d.ts +23 -0
  312. package/dist/types/components/BInputTags/BInputTags.spec.d.ts +1 -0
  313. package/dist/types/components/BInputTags/BInputTags.vue.d.ts +54 -0
  314. package/dist/types/components/BInputTags/index.d.ts +1 -0
  315. package/dist/types/components/BLink/BLink.spec.d.ts +1 -0
  316. package/dist/types/components/BLink/BLink.vue.d.ts +100 -0
  317. package/dist/types/components/BLink/index.d.ts +1 -0
  318. package/dist/types/components/BListbox/BListbox.spec.d.ts +1 -0
  319. package/dist/types/components/BListbox/BListbox.vue.d.ts +52 -0
  320. package/dist/types/components/BListbox/index.d.ts +1 -0
  321. package/dist/types/components/BModal/BModal.spec.d.ts +1 -0
  322. package/dist/types/components/BPinInput/BPinInput.spec.d.ts +1 -0
  323. package/dist/types/components/BPinInput/BPinInput.vue.d.ts +43 -0
  324. package/dist/types/components/BPinInput/index.d.ts +1 -0
  325. package/dist/types/components/BProgress/BProgress.vue.d.ts +47 -2
  326. package/dist/types/components/BTextarea/BTextarea.spec.d.ts +1 -0
  327. package/dist/types/components/BTextarea/BTextarea.vue.d.ts +77 -0
  328. package/dist/types/components/BTextarea/index.d.ts +1 -0
  329. package/dist/types/components/index.d.ts +7 -1
  330. package/package.json +1 -1
  331. package/dist/design-system114.js +0 -212
  332. package/dist/design-system114.js.map +0 -1
  333. package/dist/design-system124.js +0 -277
  334. package/dist/design-system127.js +0 -19
  335. package/dist/design-system130.js +0 -15
  336. package/dist/design-system130.js.map +0 -1
  337. package/dist/design-system133.js +0 -8
  338. package/dist/design-system133.js.map +0 -1
  339. package/dist/design-system137.js +0 -236
  340. package/dist/design-system137.js.map +0 -1
  341. package/dist/design-system147.js +0 -40
  342. package/dist/design-system147.js.map +0 -1
  343. package/dist/design-system150.js +0 -7
  344. package/dist/design-system164.js +0 -61
  345. package/dist/design-system164.js.map +0 -1
  346. package/dist/design-system167.js +0 -59
  347. package/dist/design-system170.js +0 -72
  348. package/dist/design-system173.js +0 -185
  349. package/dist/design-system173.js.map +0 -1
  350. package/dist/design-system176.js +0 -118
  351. package/dist/design-system180.js +0 -465
  352. package/dist/design-system180.js.map +0 -1
  353. package/dist/design-system183.js +0 -38
  354. package/dist/design-system183.js.map +0 -1
  355. package/dist/design-system186.js +0 -91
  356. package/dist/design-system186.js.map +0 -1
  357. package/dist/design-system189.js +0 -38
  358. package/dist/design-system189.js.map +0 -1
  359. package/dist/design-system192.js +0 -31
  360. package/dist/design-system192.js.map +0 -1
  361. package/dist/design-system208.js +0 -7
  362. package/dist/design-system217.js +0 -7
  363. package/dist/design-system217.js.map +0 -1
  364. package/dist/design-system234.js +0 -286
  365. package/dist/design-system234.js.map +0 -1
  366. package/dist/design-system237.js +0 -122
  367. package/dist/design-system237.js.map +0 -1
  368. package/dist/design-system240.js +0 -115
  369. package/dist/design-system240.js.map +0 -1
  370. package/dist/design-system70.js +0 -699
  371. package/dist/design-system70.js.map +0 -1
  372. package/dist/design-system77.js +0 -7
  373. package/dist/design-system77.js.map +0 -1
  374. package/dist/design-system85.js +0 -276
  375. package/dist/design-system85.js.map +0 -1
  376. package/dist/design-system92.js +0 -102
  377. package/dist/design-system92.js.map +0 -1
@@ -1,112 +1,57 @@
1
- import { useValidationForm as e } from "./design-system101.js";
2
- import { BFormContextKey as t } from "./design-system102.js";
3
- import { BFormLabelAlign as n, BFormLayout as r, BFormValidateTrigger as i } from "./design-system103.js";
4
- import { computed as a, createElementBlock as o, defineComponent as s, normalizeClass as c, openBlock as l, provide as u, ref as d, renderSlot as f } from "vue";
5
- //#region src/components/BForm/BForm.vue?vue&type=script&setup=true&lang.ts
6
- var p = [
7
- "name",
8
- "novalidate",
9
- "aria-label"
10
- ], m = /* @__PURE__ */ s({
11
- __name: "BForm",
12
- props: {
13
- layout: { default: () => r.Horizontal },
14
- labelAlign: { default: () => n.Left },
15
- labelWidth: {},
16
- colon: {
17
- type: Boolean,
18
- default: !0
19
- },
20
- disabled: {
21
- type: Boolean,
22
- default: !1
23
- },
24
- requiredMark: {
25
- type: Boolean,
26
- default: !0
27
- },
28
- name: {},
29
- model: {},
30
- scrollToFirstError: {
31
- type: Boolean,
32
- default: !1
33
- },
34
- validateTrigger: { default: () => i.Change },
35
- noHtml5Validate: {
36
- type: Boolean,
37
- default: !1
38
- }
39
- },
40
- emits: ["finish", "finishFailed"],
41
- setup(n, { expose: r, emit: i }) {
42
- let s = i, m = d(null), { fields: h, validateAll: g, resetAll: _, isValid: v } = e();
43
- u(t, a(() => ({
44
- layout: n.layout,
45
- labelAlign: n.labelAlign,
46
- labelWidth: n.labelWidth,
47
- colon: n.colon,
48
- disabled: n.disabled,
49
- requiredMark: n.requiredMark,
50
- validateTrigger: n.validateTrigger,
51
- model: n.model
52
- })).value);
53
- let y = () => g(), b = () => {
54
- let e = [], t = {};
55
- for (let [r, i] of Object.entries(h)) t[r] = n.model?.[r], i.value.isValid || e.push({
56
- name: r,
57
- errors: i.value.errors
58
- });
59
- return {
60
- values: t,
61
- errorFields: e
62
- };
63
- }, x = (e) => {
64
- if (!e) {
65
- _();
66
- return;
67
- }
68
- for (let t of e) h[t] && h[t].value.reset();
69
- }, S = (e, t) => {
70
- let n = m.value?.querySelector(`[data-form-field="${e}"]`);
71
- n && n.scrollIntoView(t ?? {
72
- behavior: "smooth",
73
- block: "center"
74
- });
75
- }, C = (e) => {
76
- e.preventDefault();
77
- let t = y(), r = b();
78
- if (t) s("finish", r.values);
79
- else if (s("finishFailed", r), n.scrollToFirstError && r.errorFields.length > 0) {
80
- let e = typeof n.scrollToFirstError == "object" ? n.scrollToFirstError : {
81
- behavior: "smooth",
82
- block: "center"
83
- };
84
- S(r.errorFields[0].name, e);
85
- }
86
- }, w = a(() => [
87
- "b-form",
88
- `b-form--${n.layout}`,
89
- `b-form--label-${n.labelAlign}`,
90
- { "b-form--disabled": n.disabled }
91
- ]);
92
- return r({
93
- validate: y,
94
- resetFields: x,
95
- scrollToField: S,
96
- isValid: v
97
- }), (e, t) => (l(), o("form", {
98
- ref_key: "formEl",
99
- ref: m,
100
- class: c(w.value),
101
- name: n.name,
102
- novalidate: n.noHtml5Validate,
103
- role: "form",
104
- "aria-label": n.name,
105
- onSubmit: C
106
- }, [f(e.$slots, "default", {}, void 0, !0)], 42, p));
1
+ import { computed as e, inject as t, onBeforeUnmount as n, provide as r, ref as i, watch as a } from "vue";
2
+ //#region src/composables/useValidation.ts
3
+ var o = { FormValidation: Symbol() };
4
+ function s() {
5
+ let n = t(o.FormValidation, void 0);
6
+ n || (n = {}, r(o.FormValidation, n));
7
+ let i = () => n ? Object.values(n).map((e) => e.value.validate()).every((e) => e) : !1, a = () => {
8
+ n && Object.values(n).forEach((e) => e.value.reset());
9
+ }, s = e(() => n ? Object.values(n).every((e) => e.value.isValid) : !0);
10
+ return {
11
+ fields: n,
12
+ validateAll: i,
13
+ resetAll: a,
14
+ isValid: s
15
+ };
16
+ }
17
+ function c(r, s, c) {
18
+ let l = structuredClone(s.value), u = i({
19
+ fieldValue: s,
20
+ errors: [],
21
+ isValid: !0,
22
+ dirty: !1,
23
+ touched: !1,
24
+ validate: d,
25
+ reset: f,
26
+ markTouched: p
27
+ });
28
+ a(s, (e) => {
29
+ u.value.dirty = !Object.is(e, l);
30
+ }, { deep: !0 });
31
+ function d() {
32
+ let e = c.safeParse(s.value);
33
+ return e.success ? (u.value.errors = [], u.value.isValid = !0) : (u.value.errors = e.error.issues.map((e) => e.message), u.value.isValid = !1), u.value.isValid;
107
34
  }
108
- });
35
+ function f() {
36
+ u.value.errors = [], u.value.isValid = !0, u.value.dirty = !1, u.value.touched = !1;
37
+ }
38
+ function p() {
39
+ u.value.touched = !0;
40
+ }
41
+ let m = t(o.FormValidation, void 0);
42
+ return m && (m[r] = u), n(() => {
43
+ m && delete m[r];
44
+ }), {
45
+ errors: e(() => u.value.errors),
46
+ isValid: e(() => u.value.isValid),
47
+ dirty: e(() => u.value.dirty),
48
+ touched: e(() => u.value.touched),
49
+ validate: d,
50
+ reset: f,
51
+ markTouched: p
52
+ };
53
+ }
109
54
  //#endregion
110
- export { m as default };
55
+ export { o as PIKey, c as useValidationField, s as useValidationForm };
111
56
 
112
57
  //# sourceMappingURL=design-system104.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system104.js","names":[],"sources":["../src/components/BForm/BForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useValidationForm } from '@/composables/useValidation.ts';\nimport { computed, provide, ref } from 'vue';\nimport { BFormContextKey } from './context.ts';\nimport {\n BFormLayout,\n BFormLabelAlign,\n BFormRequiredMark,\n BFormValidateTrigger,\n type BFormFieldError,\n type BFormItemContext,\n type BFormValidateResult,\n} from './types.ts';\n\nconst {\n layout = BFormLayout.Horizontal,\n labelAlign = BFormLabelAlign.Left,\n labelWidth,\n colon = true,\n disabled = false,\n requiredMark = true,\n name,\n model,\n scrollToFirstError = false,\n validateTrigger = BFormValidateTrigger.Change,\n noHtml5Validate = false,\n} = defineProps<{\n /** Form layout mode. */\n layout?: `${BFormLayout}`;\n /** Label text alignment. */\n labelAlign?: `${BFormLabelAlign}`;\n /** Fixed width for all labels. */\n labelWidth?: string;\n /** Display colon after label (horizontal layout only). */\n colon?: boolean;\n /** Whether all form controls are disabled. */\n disabled?: boolean;\n /** How required/optional marks are displayed. */\n requiredMark?: boolean | `${BFormRequiredMark}`;\n /** Form name, used as field id prefix. */\n name?: string;\n /** Form data model object. Fields read their value from model[fieldName]. */\n model?: Record<string, unknown>;\n /** Auto-scroll to first validation error on submit failure. */\n scrollToFirstError?: boolean | ScrollIntoViewOptions;\n /** Default field validation trigger. */\n validateTrigger?: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n /** Disable native HTML5 validation. */\n noHtml5Validate?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Called after successful validation on submit. */\n finish: [values: Record<string, unknown>];\n /** Called when validation fails on submit. */\n finishFailed: [result: BFormValidateResult];\n}>();\n\nconst formEl = ref<HTMLFormElement | null>(null);\n\nconst { fields, validateAll, resetAll, isValid } = useValidationForm();\n\nconst formContext = computed<BFormItemContext>(() => ({\n layout,\n labelAlign,\n labelWidth,\n colon,\n disabled,\n requiredMark,\n validateTrigger,\n model,\n}));\n\nprovide(BFormContextKey, formContext.value);\n\nconst validate = (): boolean => {\n return validateAll();\n};\n\nconst buildResult = (): BFormValidateResult => {\n const errorFields: BFormFieldError[] = [];\n const values: Record<string, unknown> = {};\n\n for (const [key, fieldState] of Object.entries(fields)) {\n values[key] = model?.[key];\n if (!fieldState.value.isValid) {\n errorFields.push({ name: key, errors: fieldState.value.errors });\n }\n }\n\n return { values, errorFields };\n};\n\nconst resetFields = (names?: string[]) => {\n if (!names) {\n resetAll();\n return;\n }\n for (const fieldName of names) {\n if (fields[fieldName]) {\n fields[fieldName].value.reset();\n }\n }\n};\n\nconst scrollToField = (fieldName: string, options?: ScrollIntoViewOptions) => {\n const el = formEl.value?.querySelector(`[data-form-field=\"${fieldName}\"]`);\n if (el) {\n el.scrollIntoView(options ?? { behavior: 'smooth', block: 'center' });\n }\n};\n\nconst handleSubmit = (e: Event) => {\n e.preventDefault();\n const allValid = validate();\n const result = buildResult();\n\n if (allValid) {\n emit('finish', result.values);\n } else {\n emit('finishFailed', result);\n if (scrollToFirstError && result.errorFields.length > 0) {\n const opts =\n typeof scrollToFirstError === 'object' ? scrollToFirstError : { behavior: 'smooth' as const, block: 'center' as const };\n scrollToField(result.errorFields[0].name, opts);\n }\n }\n};\n\nconst formClasses = computed(() => [\n 'b-form',\n `b-form--${layout}`,\n `b-form--label-${labelAlign}`,\n {\n 'b-form--disabled': disabled,\n },\n]);\n\ndefineExpose({\n validate,\n resetFields,\n scrollToField,\n isValid,\n});\n</script>\n\n<template>\n <form\n ref=\"formEl\"\n :class=\"formClasses\"\n :name=\"name\"\n :novalidate=\"noHtml5Validate\"\n role=\"form\"\n :aria-label=\"name\"\n @submit=\"handleSubmit\"\n >\n <slot />\n </form>\n</template>\n\n<style scoped>\n.b-form {\n --b-form-item-margin-bottom: 24px;\n --b-form-inline-item-margin-bottom: 0;\n --b-form-label-color: rgba(0, 0, 0, 0.88);\n --b-form-label-font-size: 14px;\n --b-form-label-height: 32px;\n --b-form-label-colon-margin-inline-start: 2px;\n --b-form-label-colon-margin-inline-end: 8px;\n --b-form-label-required-mark-color: #cf1322;\n --b-form-vertical-label-margin: 0;\n --b-form-vertical-label-padding: 0 0 8px;\n --b-form-help-color: rgba(0, 0, 0, 0.65);\n --b-form-error-color: #cf1322;\n --b-form-warning-color: #874d00;\n --b-form-success-color: #52c41a;\n\n margin: 0;\n padding: 0;\n font-size: var(--b-form-label-font-size);\n color: var(--b-form-label-color);\n}\n\n.b-form--inline {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-end;\n}\n\n[data-prefers-color='dark'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-form :deep(.b-form-item__help) {\n transition: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDA,IAAM,IAAO,GAOP,IAAS,EAA4B,KAAK,EAE1C,EAAE,WAAQ,gBAAa,aAAU,eAAY,GAAmB;AAatE,IAAQ,GAXY,SAAkC;GACpD,QAAK,EAAA;GACL,YAAS,EAAA;GACT,YAAS,EAAA;GACT,OAAI,EAAA;GACJ,UAAO,EAAA;GACP,cAAW,EAAA;GACX,iBAAc,EAAA;GACd,OAAI,EAAA;GACL,EAAE,CAEkC,MAAM;EAE3C,IAAM,UACG,GAAa,EAGhB,UAAyC;GAC7C,IAAM,IAAiC,EAAE,EACnC,IAAkC,EAAE;AAE1C,QAAK,IAAM,CAAC,GAAK,MAAe,OAAO,QAAQ,EAAO,CAEpD,CADA,EAAO,KAAO,EAAA,QAAQ,IACjB,EAAW,MAAM,WACpB,EAAY,KAAK;IAAE,MAAM;IAAK,QAAQ,EAAW,MAAM;IAAQ,CAAC;AAIpE,UAAO;IAAE;IAAQ;IAAa;KAG1B,KAAe,MAAqB;AACxC,OAAI,CAAC,GAAO;AACV,OAAU;AACV;;AAEF,QAAK,IAAM,KAAa,EACtB,CAAI,EAAO,MACT,EAAO,GAAW,MAAM,OAAO;KAK/B,KAAiB,GAAmB,MAAoC;GAC5E,IAAM,IAAK,EAAO,OAAO,cAAc,qBAAqB,EAAU,IAAI;AAC1E,GAAI,KACF,EAAG,eAAe,KAAW;IAAE,UAAU;IAAU,OAAO;IAAU,CAAC;KAInE,KAAgB,MAAa;AACjC,KAAE,gBAAgB;GAClB,IAAM,IAAW,GAAU,EACrB,IAAS,GAAa;AAE5B,OAAI,EACF,GAAK,UAAU,EAAO,OAAO;YAE7B,EAAK,gBAAgB,EAAO,EACxB,EAAA,sBAAsB,EAAO,YAAY,SAAS,GAAG;IACvD,IAAM,IACJ,OAAO,EAAA,sBAAuB,WAAW,EAAA,qBAAqB;KAAE,UAAU;KAAmB,OAAO;KAAmB;AACzH,MAAc,EAAO,YAAY,GAAG,MAAM,EAAK;;KAK/C,IAAc,QAAe;GACjC;GACA,WAAW,EAAA;GACX,iBAAiB,EAAA;GACjB,EACE,oBAAoB,EAAA,UACrB;GACF,CAAC;SAEF,EAAa;GACX;GACA;GACA;GACA;GACD,CAAC,kBAIA,EAUO,QAAA;YATD;GAAJ,KAAI;GACH,OAAK,EAAE,EAAA,MAAW;GAClB,MAAM,EAAA;GACN,YAAY,EAAA;GACb,MAAK;GACJ,cAAY,EAAA;GACZ,UAAQ;MAET,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
1
+ {"version":3,"file":"design-system104.js","names":[],"sources":["../src/composables/useValidation.ts"],"sourcesContent":["import {\n computed,\n inject,\n onBeforeUnmount,\n provide,\n ref,\n watch,\n type ComputedRef,\n type InjectionKey,\n type Ref,\n} from 'vue';\nimport type { ZodType } from 'zod';\n\n/**\n * Types\n */\nexport interface ValidationFieldState<T = unknown> {\n fieldValue: Ref<T>;\n errors: string[];\n isValid: boolean;\n dirty: boolean;\n touched: boolean;\n validate: () => boolean;\n reset: () => void;\n markTouched: () => void;\n}\n\nexport const PIKey = {\n FormValidation: Symbol() as InjectionKey<Record<string, Ref<ValidationFieldState>>>,\n};\n\n/**\n * Form-level validation composable.\n * Creates or injects a shared validation registry, providing\n * methods to validate/reset all registered fields.\n */\nexport function useValidationForm() {\n let fields = inject(PIKey.FormValidation, undefined);\n if (!fields) {\n fields = {};\n provide(PIKey.FormValidation, fields);\n }\n\n const validateAll = (): boolean => {\n if (!fields) return false;\n return Object.values(fields)\n .map((field) => field.value.validate())\n .every((valid) => valid);\n };\n\n const resetAll = () => {\n if (!fields) return;\n Object.values(fields).forEach((field) => field.value.reset());\n };\n\n const isValid = computed(() => {\n if (!fields) return true;\n return Object.values(fields).every((field) => field.value.isValid);\n });\n\n return {\n fields,\n validateAll,\n resetAll,\n isValid,\n };\n}\n\n/**\n * Field-level validation composable.\n * Registers the field into the form's validation registry,\n * validates using the provided Zod schema, and tracks dirty/touched state.\n */\nexport function useValidationField<T>(key: string, fieldValue: Ref<T>, schema: ZodType<T>) {\n const initialValue = structuredClone(fieldValue.value);\n\n const fieldState = ref<ValidationFieldState<T>>({\n fieldValue,\n errors: [],\n isValid: true,\n dirty: false,\n touched: false,\n validate,\n reset,\n markTouched,\n });\n\n watch(\n fieldValue,\n (newVal) => {\n fieldState.value.dirty = !Object.is(newVal, initialValue);\n },\n { deep: true },\n );\n\n function validate(): boolean {\n const result = schema.safeParse(fieldValue.value);\n\n if (result.success) {\n fieldState.value.errors = [];\n fieldState.value.isValid = true;\n } else {\n fieldState.value.errors = result.error.issues.map((issue) => issue.message);\n fieldState.value.isValid = false;\n }\n\n return fieldState.value.isValid;\n }\n\n function reset() {\n fieldState.value.errors = [];\n fieldState.value.isValid = true;\n fieldState.value.dirty = false;\n fieldState.value.touched = false;\n }\n\n function markTouched() {\n fieldState.value.touched = true;\n }\n\n // Register into form\n const formFields = inject(PIKey.FormValidation, undefined);\n if (formFields) {\n formFields[key] = fieldState as Ref<ValidationFieldState>;\n }\n\n onBeforeUnmount(() => {\n if (formFields) {\n delete formFields[key];\n }\n });\n\n const errors = computed(() => fieldState.value.errors);\n const isValid = computed(() => fieldState.value.isValid);\n const dirty = computed(() => fieldState.value.dirty);\n const touched = computed(() => fieldState.value.touched);\n\n return {\n errors,\n isValid,\n dirty,\n touched,\n validate,\n reset,\n markTouched,\n } as {\n errors: ComputedRef<string[]>;\n isValid: ComputedRef<boolean>;\n dirty: ComputedRef<boolean>;\n touched: ComputedRef<boolean>;\n validate: () => boolean;\n reset: () => void;\n markTouched: () => void;\n };\n}\n"],"mappings":";;AA2BA,IAAa,IAAQ,EACnB,gBAAgB,QAAQ,EACzB;AAOD,SAAgB,IAAoB;CAClC,IAAI,IAAS,EAAO,EAAM,gBAAgB,KAAA,EAAU;AACpD,CAAK,MACH,IAAS,EAAE,EACX,EAAQ,EAAM,gBAAgB,EAAO;CAGvC,IAAM,UACC,IACE,OAAO,OAAO,EAAO,CACzB,KAAK,MAAU,EAAM,MAAM,UAAU,CAAC,CACtC,OAAO,MAAU,EAAM,GAHN,IAMhB,UAAiB;AAChB,OACL,OAAO,OAAO,EAAO,CAAC,SAAS,MAAU,EAAM,MAAM,OAAO,CAAC;IAGzD,IAAU,QACT,IACE,OAAO,OAAO,EAAO,CAAC,OAAO,MAAU,EAAM,MAAM,QAAQ,GAD9C,GAEpB;AAEF,QAAO;EACL;EACA;EACA;EACA;EACD;;AAQH,SAAgB,EAAsB,GAAa,GAAoB,GAAoB;CACzF,IAAM,IAAe,gBAAgB,EAAW,MAAM,EAEhD,IAAa,EAA6B;EAC9C;EACA,QAAQ,EAAE;EACV,SAAS;EACT,OAAO;EACP,SAAS;EACT;EACA;EACA;EACD,CAAC;AAEF,GACE,IACC,MAAW;AACV,IAAW,MAAM,QAAQ,CAAC,OAAO,GAAG,GAAQ,EAAa;IAE3D,EAAE,MAAM,IAAM,CACf;CAED,SAAS,IAAoB;EAC3B,IAAM,IAAS,EAAO,UAAU,EAAW,MAAM;AAUjD,SARI,EAAO,WACT,EAAW,MAAM,SAAS,EAAE,EAC5B,EAAW,MAAM,UAAU,OAE3B,EAAW,MAAM,SAAS,EAAO,MAAM,OAAO,KAAK,MAAU,EAAM,QAAQ,EAC3E,EAAW,MAAM,UAAU,KAGtB,EAAW,MAAM;;CAG1B,SAAS,IAAQ;AAIf,EAHA,EAAW,MAAM,SAAS,EAAE,EAC5B,EAAW,MAAM,UAAU,IAC3B,EAAW,MAAM,QAAQ,IACzB,EAAW,MAAM,UAAU;;CAG7B,SAAS,IAAc;AACrB,IAAW,MAAM,UAAU;;CAI7B,IAAM,IAAa,EAAO,EAAM,gBAAgB,KAAA,EAAU;AAgB1D,QAfI,MACF,EAAW,KAAO,IAGpB,QAAsB;AACpB,EAAI,KACF,OAAO,EAAW;GAEpB,EAOK;EACL,QANa,QAAe,EAAW,MAAM,OAAO;EAOpD,SANc,QAAe,EAAW,MAAM,QAAQ;EAOtD,OANY,QAAe,EAAW,MAAM,MAAM;EAOlD,SANc,QAAe,EAAW,MAAM,QAAQ;EAOtD;EACA;EACA;EACD"}
@@ -3,4 +3,4 @@ var e = Symbol("BFormContext");
3
3
  //#endregion
4
4
  export { e as BFormContextKey };
5
5
 
6
- //# sourceMappingURL=design-system102.js.map
6
+ //# sourceMappingURL=design-system105.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system102.js","names":[],"sources":["../src/components/BForm/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { BFormItemContext } from './types.ts';\n\nexport const BFormContextKey = Symbol('BFormContext') as InjectionKey<BFormItemContext>;\n"],"mappings":";AAGA,IAAa,IAAkB,OAAO,eAAe"}
1
+ {"version":3,"file":"design-system105.js","names":[],"sources":["../src/components/BForm/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { BFormItemContext } from './types.ts';\n\nexport const BFormContextKey = Symbol('BFormContext') as InjectionKey<BFormItemContext>;\n"],"mappings":";AAGA,IAAa,IAAkB,OAAO,eAAe"}
@@ -1,9 +1,16 @@
1
- import e from "./design-system14.js";
2
- import t from "./design-system104.js";
3
- /* empty css */
4
- //#region src/components/BForm/BForm.vue
5
- var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-cf5d3049"]]);
1
+ //#region src/components/BForm/types.ts
2
+ var e = /* @__PURE__ */ function(e) {
3
+ return e.Horizontal = "horizontal", e.Vertical = "vertical", e.Inline = "inline", e;
4
+ }({}), t = /* @__PURE__ */ function(e) {
5
+ return e.Left = "left", e.Right = "right", e;
6
+ }({}), n = /* @__PURE__ */ function(e) {
7
+ return e.Success = "success", e.Warning = "warning", e.Error = "error", e.Validating = "validating", e;
8
+ }({}), r = /* @__PURE__ */ function(e) {
9
+ return e.Required = "required", e.Optional = "optional", e;
10
+ }({}), i = /* @__PURE__ */ function(e) {
11
+ return e.Change = "change", e.Blur = "blur", e.Submit = "submit", e;
12
+ }({});
6
13
  //#endregion
7
- export { n as default };
14
+ export { t as BFormLabelAlign, e as BFormLayout, r as BFormRequiredMark, n as BFormValidateStatus, i as BFormValidateTrigger };
8
15
 
9
16
  //# sourceMappingURL=design-system106.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system106.js","names":[],"sources":["../src/components/BForm/BForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useValidationForm } from '@/composables/useValidation.ts';\nimport { computed, provide, ref } from 'vue';\nimport { BFormContextKey } from './context.ts';\nimport {\n BFormLayout,\n BFormLabelAlign,\n BFormRequiredMark,\n BFormValidateTrigger,\n type BFormFieldError,\n type BFormItemContext,\n type BFormValidateResult,\n} from './types.ts';\n\nconst {\n layout = BFormLayout.Horizontal,\n labelAlign = BFormLabelAlign.Left,\n labelWidth,\n colon = true,\n disabled = false,\n requiredMark = true,\n name,\n model,\n scrollToFirstError = false,\n validateTrigger = BFormValidateTrigger.Change,\n noHtml5Validate = false,\n} = defineProps<{\n /** Form layout mode. */\n layout?: `${BFormLayout}`;\n /** Label text alignment. */\n labelAlign?: `${BFormLabelAlign}`;\n /** Fixed width for all labels. */\n labelWidth?: string;\n /** Display colon after label (horizontal layout only). */\n colon?: boolean;\n /** Whether all form controls are disabled. */\n disabled?: boolean;\n /** How required/optional marks are displayed. */\n requiredMark?: boolean | `${BFormRequiredMark}`;\n /** Form name, used as field id prefix. */\n name?: string;\n /** Form data model object. Fields read their value from model[fieldName]. */\n model?: Record<string, unknown>;\n /** Auto-scroll to first validation error on submit failure. */\n scrollToFirstError?: boolean | ScrollIntoViewOptions;\n /** Default field validation trigger. */\n validateTrigger?: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n /** Disable native HTML5 validation. */\n noHtml5Validate?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Called after successful validation on submit. */\n finish: [values: Record<string, unknown>];\n /** Called when validation fails on submit. */\n finishFailed: [result: BFormValidateResult];\n}>();\n\nconst formEl = ref<HTMLFormElement | null>(null);\n\nconst { fields, validateAll, resetAll, isValid } = useValidationForm();\n\nconst formContext = computed<BFormItemContext>(() => ({\n layout,\n labelAlign,\n labelWidth,\n colon,\n disabled,\n requiredMark,\n validateTrigger,\n model,\n}));\n\nprovide(BFormContextKey, formContext.value);\n\nconst validate = (): boolean => {\n return validateAll();\n};\n\nconst buildResult = (): BFormValidateResult => {\n const errorFields: BFormFieldError[] = [];\n const values: Record<string, unknown> = {};\n\n for (const [key, fieldState] of Object.entries(fields)) {\n values[key] = model?.[key];\n if (!fieldState.value.isValid) {\n errorFields.push({ name: key, errors: fieldState.value.errors });\n }\n }\n\n return { values, errorFields };\n};\n\nconst resetFields = (names?: string[]) => {\n if (!names) {\n resetAll();\n return;\n }\n for (const fieldName of names) {\n if (fields[fieldName]) {\n fields[fieldName].value.reset();\n }\n }\n};\n\nconst scrollToField = (fieldName: string, options?: ScrollIntoViewOptions) => {\n const el = formEl.value?.querySelector(`[data-form-field=\"${fieldName}\"]`);\n if (el) {\n el.scrollIntoView(options ?? { behavior: 'smooth', block: 'center' });\n }\n};\n\nconst handleSubmit = (e: Event) => {\n e.preventDefault();\n const allValid = validate();\n const result = buildResult();\n\n if (allValid) {\n emit('finish', result.values);\n } else {\n emit('finishFailed', result);\n if (scrollToFirstError && result.errorFields.length > 0) {\n const opts =\n typeof scrollToFirstError === 'object' ? scrollToFirstError : { behavior: 'smooth' as const, block: 'center' as const };\n scrollToField(result.errorFields[0].name, opts);\n }\n }\n};\n\nconst formClasses = computed(() => [\n 'b-form',\n `b-form--${layout}`,\n `b-form--label-${labelAlign}`,\n {\n 'b-form--disabled': disabled,\n },\n]);\n\ndefineExpose({\n validate,\n resetFields,\n scrollToField,\n isValid,\n});\n</script>\n\n<template>\n <form\n ref=\"formEl\"\n :class=\"formClasses\"\n :name=\"name\"\n :novalidate=\"noHtml5Validate\"\n role=\"form\"\n :aria-label=\"name\"\n @submit=\"handleSubmit\"\n >\n <slot />\n </form>\n</template>\n\n<style scoped>\n.b-form {\n --b-form-item-margin-bottom: 24px;\n --b-form-inline-item-margin-bottom: 0;\n --b-form-label-color: rgba(0, 0, 0, 0.88);\n --b-form-label-font-size: 14px;\n --b-form-label-height: 32px;\n --b-form-label-colon-margin-inline-start: 2px;\n --b-form-label-colon-margin-inline-end: 8px;\n --b-form-label-required-mark-color: #cf1322;\n --b-form-vertical-label-margin: 0;\n --b-form-vertical-label-padding: 0 0 8px;\n --b-form-help-color: rgba(0, 0, 0, 0.65);\n --b-form-error-color: #cf1322;\n --b-form-warning-color: #874d00;\n --b-form-success-color: #52c41a;\n\n margin: 0;\n padding: 0;\n font-size: var(--b-form-label-font-size);\n color: var(--b-form-label-color);\n}\n\n.b-form--inline {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-end;\n}\n\n[data-prefers-color='dark'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-form :deep(.b-form-item__help) {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system106.js","names":[],"sources":["../src/components/BForm/types.ts"],"sourcesContent":["export enum BFormLayout {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n Inline = 'inline',\n}\n\nexport enum BFormLabelAlign {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum BFormValidateStatus {\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Validating = 'validating',\n}\n\nexport enum BFormRequiredMark {\n Required = 'required',\n Optional = 'optional',\n}\n\nexport enum BFormValidateTrigger {\n Change = 'change',\n Blur = 'blur',\n Submit = 'submit',\n}\n\nexport interface BFormFieldError {\n name: string;\n errors: string[];\n}\n\nexport interface BFormValidateResult {\n values: Record<string, unknown>;\n errorFields: BFormFieldError[];\n}\n\nexport interface BFormItemContext {\n layout: `${BFormLayout}`;\n labelAlign: `${BFormLabelAlign}`;\n labelWidth: string | undefined;\n colon: boolean;\n disabled: boolean;\n requiredMark: boolean | `${BFormRequiredMark}`;\n validateTrigger: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n model: Record<string, unknown> | undefined;\n}\n\nexport interface BFormInstance {\n validate: () => boolean;\n resetFields: (names?: string[]) => void;\n scrollToField: (name: string, options?: ScrollIntoViewOptions) => void;\n isValid: boolean;\n}\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,aAAA,cACA,EAAA,WAAA,YACA,EAAA,SAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,OAAA,QACA,EAAA,QAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,UAAA,WACA,EAAA,UAAA,WACA,EAAA,QAAA,SACA,EAAA,aAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,WAAA,YACA,EAAA,WAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,SAAA,UACA,EAAA,OAAA,QACA,EAAA,SAAA;KACD"}
@@ -1,209 +1,112 @@
1
- import { useComponentId as e } from "./design-system10.js";
2
- import { useValidationField as t } from "./design-system101.js";
3
- import { BFormContextKey as n } from "./design-system102.js";
4
- import { BFormLayout as r, BFormRequiredMark as i, BFormValidateStatus as a, BFormValidateTrigger as o } from "./design-system103.js";
5
- import { computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, defineComponent as f, inject as p, normalizeClass as m, normalizeStyle as h, openBlock as g, ref as _, renderSlot as v, toDisplayString as y, watch as b } from "vue";
6
- //#region src/components/BForm/BFormItem.vue?vue&type=script&setup=true&lang.ts
7
- var x = ["data-form-field", "aria-labelledby"], S = ["id", "for"], C = {
8
- key: 0,
9
- class: "b-form-item__required-mark",
10
- "aria-hidden": "true"
11
- }, w = {
12
- key: 1,
13
- class: "b-form-item__optional-mark"
14
- }, T = {
15
- key: 2,
16
- class: "b-form-item__colon",
17
- "aria-hidden": "true"
18
- }, E = ["title"], D = { class: "b-form-item__control" }, O = { class: "b-form-item__control-input" }, k = {
19
- key: 0,
20
- class: "b-form-item__feedback-icon"
21
- }, ee = {
22
- key: 0,
23
- viewBox: "64 64 896 896",
24
- width: "14",
25
- height: "14",
26
- fill: "currentColor",
27
- "aria-hidden": "true"
28
- }, te = {
29
- key: 1,
30
- viewBox: "64 64 896 896",
31
- width: "14",
32
- height: "14",
33
- fill: "currentColor",
34
- "aria-hidden": "true"
35
- }, A = {
36
- key: 2,
37
- viewBox: "64 64 896 896",
38
- width: "14",
39
- height: "14",
40
- fill: "currentColor",
41
- "aria-hidden": "true"
42
- }, j = {
43
- key: 3,
44
- class: "b-form-item__loading-icon"
45
- }, M = ["id"], N = {
46
- key: 1,
47
- class: "b-form-item__extra"
48
- }, P = /* @__PURE__ */ f({
49
- __name: "BFormItem",
1
+ import { useValidationForm as e } from "./design-system104.js";
2
+ import { BFormContextKey as t } from "./design-system105.js";
3
+ import { BFormLabelAlign as n, BFormLayout as r, BFormValidateTrigger as i } from "./design-system106.js";
4
+ import { computed as a, createElementBlock as o, defineComponent as s, normalizeClass as c, openBlock as l, provide as u, ref as d, renderSlot as f } from "vue";
5
+ //#region src/components/BForm/BForm.vue?vue&type=script&setup=true&lang.ts
6
+ var p = [
7
+ "name",
8
+ "novalidate",
9
+ "aria-label"
10
+ ], m = /* @__PURE__ */ s({
11
+ __name: "BForm",
50
12
  props: {
51
- label: {},
52
- name: {},
53
- schema: {},
54
- required: {
55
- type: Boolean,
56
- default: !1
57
- },
58
- validateStatus: {},
59
- help: {},
60
- extra: {},
13
+ layout: { default: () => r.Horizontal },
14
+ labelAlign: { default: () => n.Left },
15
+ labelWidth: {},
61
16
  colon: {
62
- type: [Boolean, null],
63
- default: null
17
+ type: Boolean,
18
+ default: !0
64
19
  },
65
- labelAlign: {},
66
- labelWidth: {},
67
- hidden: {
20
+ disabled: {
68
21
  type: Boolean,
69
22
  default: !1
70
23
  },
71
- noStyle: {
24
+ requiredMark: {
72
25
  type: Boolean,
73
- default: !1
26
+ default: !0
74
27
  },
75
- hasFeedback: {
28
+ name: {},
29
+ model: {},
30
+ scrollToFirstError: {
76
31
  type: Boolean,
77
32
  default: !1
78
33
  },
79
- validateTrigger: {},
80
- tooltip: {},
81
- layout: {}
34
+ validateTrigger: { default: () => i.Change },
35
+ noHtml5Validate: {
36
+ type: Boolean,
37
+ default: !1
38
+ }
82
39
  },
83
- setup(f, { expose: P }) {
84
- let F = p(n, void 0), { componentUID: I } = e(), L = s(() => `b-form-item-${f.name ? f.name + "-" : ""}${I.value}`), R = s(() => {
85
- if (f.name && F?.model) return F.model[f.name];
86
- }), z = _(R.value);
87
- b(R, (e) => {
88
- z.value = e;
89
- });
90
- let B = f.name && f.schema ? t(f.name, z, f.schema) : void 0, V = s(() => {
91
- if (f.validateTrigger) return Array.isArray(f.validateTrigger) ? f.validateTrigger : [f.validateTrigger];
92
- let e = F?.validateTrigger ?? o.Change;
93
- return Array.isArray(e) ? e : [e];
94
- }), H = () => {
95
- B && V.value.includes(o.Blur) && (B.markTouched(), B.validate());
96
- }, U = () => {
97
- B && V.value.includes(o.Change) && B.validate();
98
- };
99
- b(R, () => {
100
- U();
101
- });
102
- let W = s(() => {
103
- if (f.validateStatus) return f.validateStatus;
104
- if (B) {
105
- if (B.errors.value.length > 0) return a.Error;
106
- if (B.touched.value && B.isValid.value) return a.Success;
40
+ emits: ["finish", "finishFailed"],
41
+ setup(n, { expose: r, emit: i }) {
42
+ let s = i, m = d(null), { fields: h, validateAll: g, resetAll: _, isValid: v } = e();
43
+ u(t, a(() => ({
44
+ layout: n.layout,
45
+ labelAlign: n.labelAlign,
46
+ labelWidth: n.labelWidth,
47
+ colon: n.colon,
48
+ disabled: n.disabled,
49
+ requiredMark: n.requiredMark,
50
+ validateTrigger: n.validateTrigger,
51
+ model: n.model
52
+ })).value);
53
+ let y = () => g(), b = () => {
54
+ let e = [], t = {};
55
+ for (let [r, i] of Object.entries(h)) t[r] = n.model?.[r], i.value.isValid || e.push({
56
+ name: r,
57
+ errors: i.value.errors
58
+ });
59
+ return {
60
+ values: t,
61
+ errorFields: e
62
+ };
63
+ }, x = (e) => {
64
+ if (!e) {
65
+ _();
66
+ return;
107
67
  }
108
- }), G = s(() => f.layout === void 0 ? F?.layout === void 0 ? r.Horizontal : F.layout : f.layout), K = s(() => f.labelAlign === void 0 ? F?.labelAlign === void 0 ? "right" : F.labelAlign : f.labelAlign), q = s(() => f.colon === null ? F?.colon === void 0 ? !0 : F.colon : f.colon), J = s(() => f.labelWidth ?? F?.labelWidth), Y = s(() => F?.disabled ?? !1), X = s(() => !!(f.required || f.schema && (!f.schema.safeParse(void 0).success || !f.schema.safeParse("").success))), Z = s(() => q.value && G.value === "horizontal"), Q = s(() => {
109
- let e = F?.requiredMark ?? !0;
110
- return e === !1 || e === i.Optional ? !1 : X.value;
111
- }), ne = s(() => (F?.requiredMark ?? !0) === i.Optional && !X.value), $ = s(() => {
112
- if (f.help !== void 0) return f.help;
113
- if (B && B.errors.value.length > 0) return B.errors.value[0];
114
- }), re = s(() => [
115
- "b-form-item",
116
- `b-form-item--${G.value}`,
117
- {
118
- "b-form-item--has-error": W.value === a.Error,
119
- "b-form-item--has-warning": W.value === a.Warning,
120
- "b-form-item--has-success": W.value === a.Success,
121
- "b-form-item--validating": W.value === a.Validating,
122
- "b-form-item--has-feedback": f.hasFeedback,
123
- "b-form-item--hidden": f.hidden,
124
- "b-form-item--no-style": f.noStyle,
125
- "b-form-item--required": Q.value
68
+ for (let t of e) h[t] && h[t].value.reset();
69
+ }, S = (e, t) => {
70
+ let n = m.value?.querySelector(`[data-form-field="${e}"]`);
71
+ n && n.scrollIntoView(t ?? {
72
+ behavior: "smooth",
73
+ block: "center"
74
+ });
75
+ }, C = (e) => {
76
+ e.preventDefault();
77
+ let t = y(), r = b();
78
+ if (t) s("finish", r.values);
79
+ else if (s("finishFailed", r), n.scrollToFirstError && r.errorFields.length > 0) {
80
+ let e = typeof n.scrollToFirstError == "object" ? n.scrollToFirstError : {
81
+ behavior: "smooth",
82
+ block: "center"
83
+ };
84
+ S(r.errorFields[0].name, e);
126
85
  }
127
- ]), ie = s(() => {
128
- let e = {};
129
- return J.value && (e.width = J.value, e.flexShrink = "0"), e;
130
- });
131
- return P({
132
- validate: B?.validate ?? (() => !0),
133
- reset: B?.reset ?? (() => {}),
134
- errors: B?.errors ?? s(() => []),
135
- isValid: B?.isValid ?? s(() => !0),
136
- dirty: B?.dirty ?? s(() => !1),
137
- touched: B?.touched ?? s(() => !1),
138
- handleBlur: H
139
- }), (e, t) => f.noStyle ? v(e.$slots, "default", {
140
- key: 1,
141
- id: L.value,
142
- status: W.value,
143
- disabled: Y.value,
144
- onBlur: H
145
- }, void 0, !0) : (g(), l("div", {
146
- key: 0,
147
- class: m(re.value),
148
- "data-form-field": f.name,
149
- role: "group",
150
- "aria-labelledby": f.label ? `${L.value}-label` : void 0
151
- }, [f.label || e.$slots.label ? (g(), l("div", {
152
- key: 0,
153
- class: m(["b-form-item__label", [`b-form-item__label--${K.value}`]]),
154
- style: h(ie.value)
155
- }, [u("label", {
156
- id: `${L.value}-label`,
157
- for: L.value
158
- }, [
159
- Q.value ? (g(), l("span", C, "*")) : c("", !0),
160
- v(e.$slots, "label", {}, () => [d(y(f.label), 1)], !0),
161
- ne.value ? (g(), l("span", w, "(optional)")) : c("", !0),
162
- Z.value ? (g(), l("span", T, ":")) : c("", !0)
163
- ], 8, S), f.tooltip ? (g(), l("span", {
164
- key: 0,
165
- class: "b-form-item__tooltip",
166
- title: f.tooltip,
167
- role: "img",
168
- "aria-label": "Help"
169
- }, [...t[0] ||= [u("svg", {
170
- viewBox: "64 64 896 896",
171
- width: "14",
172
- height: "14",
173
- fill: "currentColor",
174
- "aria-hidden": "true"
175
- }, [
176
- u("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" }),
177
- u("path", { d: "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7c0-19.7 12.4-37.7 30.9-44.8 59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3z" }),
178
- u("path", { d: "M512 732a40 40 0 100-80 40 40 0 000 80z" })
179
- ], -1)]], 8, E)) : c("", !0)], 6)) : c("", !0), u("div", D, [
180
- u("div", O, [v(e.$slots, "default", {
181
- id: L.value,
182
- status: W.value,
183
- disabled: Y.value,
184
- onBlur: H
185
- }, void 0, !0), f.hasFeedback && W.value ? (g(), l("span", k, [W.value === "success" ? (g(), l("svg", ee, [...t[1] ||= [u("path", { d: "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" }, null, -1)]])) : W.value === "error" ? (g(), l("svg", te, [...t[2] ||= [u("path", { d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L512 449.8 295.9 191.7c-3-3.6-7.5-5.7-12.3-5.7H204c-6.8 0-10.5 7.9-6.1 13.1L460.2 512 197.8 824.9A7.95 7.95 0 00204 838h79.8c4.7 0 9.2-2.1 12.3-5.7L512 574.1l216.2 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }, null, -1)]])) : W.value === "warning" ? (g(), l("svg", A, [...t[3] ||= [u("path", { d: "M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z" }, null, -1), u("path", { d: "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48z" }, null, -1)]])) : W.value === "validating" ? (g(), l("span", j, [...t[4] ||= [u("svg", {
186
- viewBox: "0 0 1024 1024",
187
- width: "14",
188
- height: "14",
189
- fill: "currentColor",
190
- "aria-hidden": "true"
191
- }, [u("path", { d: "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.3 199.3 0 19.9-16.1 36-36 36z" })], -1)]])) : c("", !0)])) : c("", !0)]),
192
- $.value || e.$slots.help ? (g(), l("div", {
193
- key: 0,
194
- class: m(["b-form-item__help", {
195
- "b-form-item__help--error": W.value === "error",
196
- "b-form-item__help--warning": W.value === "warning"
197
- }]),
198
- id: `${L.value}-help`,
199
- role: "alert",
200
- "aria-live": "polite"
201
- }, [v(e.$slots, "help", {}, () => [d(y($.value), 1)], !0)], 10, M)) : c("", !0),
202
- f.extra || e.$slots.extra ? (g(), l("div", N, [v(e.$slots, "extra", {}, () => [d(y(f.extra), 1)], !0)])) : c("", !0)
203
- ])], 10, x));
86
+ }, w = a(() => [
87
+ "b-form",
88
+ `b-form--${n.layout}`,
89
+ `b-form--label-${n.labelAlign}`,
90
+ { "b-form--disabled": n.disabled }
91
+ ]);
92
+ return r({
93
+ validate: y,
94
+ resetFields: x,
95
+ scrollToField: S,
96
+ isValid: v
97
+ }), (e, t) => (l(), o("form", {
98
+ ref_key: "formEl",
99
+ ref: m,
100
+ class: c(w.value),
101
+ name: n.name,
102
+ novalidate: n.noHtml5Validate,
103
+ role: "form",
104
+ "aria-label": n.name,
105
+ onSubmit: C
106
+ }, [f(e.$slots, "default", {}, void 0, !0)], 42, p));
204
107
  }
205
108
  });
206
109
  //#endregion
207
- export { P as default };
110
+ export { m as default };
208
111
 
209
112
  //# sourceMappingURL=design-system107.js.map