@sectile/vue 0.18.1 → 0.18.3

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 (395) hide show
  1. package/dist/accordion.d.ts +1 -1
  2. package/dist/accordion.js +1 -1
  3. package/dist/carousel.d.ts +1 -1
  4. package/dist/carousel.js +1 -1
  5. package/dist/cascade-list.js +1 -1
  6. package/dist/cascade-list.js.map +1 -1
  7. package/dist/cascade-select.js +1 -1
  8. package/dist/cascade-select.js.map +1 -1
  9. package/dist/checkbox-group.js +1 -1
  10. package/dist/checkbox-group.js.map +1 -1
  11. package/dist/checkbox.d.ts +1 -1
  12. package/dist/checkbox.js +1 -1
  13. package/dist/checkbox.js.map +1 -1
  14. package/dist/color-picker.js +1 -1
  15. package/dist/color-picker.js.map +1 -1
  16. package/dist/combobox.d.ts +1 -1
  17. package/dist/combobox.js +1 -1
  18. package/dist/combobox.js.map +1 -1
  19. package/dist/disclosure.d.ts +1 -1
  20. package/dist/disclosure.js +1 -1
  21. package/dist/editable.js +1 -1
  22. package/dist/editable.js.map +1 -1
  23. package/dist/{internal/form-context.d.ts → form/context.d.ts} +3 -2
  24. package/dist/{internal/form-context.js → form/context.js} +2 -2
  25. package/dist/form/context.js.map +1 -0
  26. package/dist/form/contracts.d.ts +219 -0
  27. package/dist/form/contracts.js +2 -0
  28. package/dist/form/contracts.js.map +1 -0
  29. package/dist/{internal/form-control-inventory.js → form/control-inventory.js} +1 -1
  30. package/dist/form/control-inventory.js.map +1 -0
  31. package/dist/form/control.js +2 -0
  32. package/dist/form/control.js.map +1 -0
  33. package/dist/form/field.d.ts +81 -0
  34. package/dist/form/field.js +2 -0
  35. package/dist/form/field.js.map +1 -0
  36. package/dist/form/native.d.ts +15 -0
  37. package/dist/form/native.js +2 -0
  38. package/dist/form/native.js.map +1 -0
  39. package/dist/form/part.d.ts +16 -0
  40. package/dist/form/part.js +2 -0
  41. package/dist/form/part.js.map +1 -0
  42. package/dist/form/parts.d.ts +93 -0
  43. package/dist/form/parts.js +2 -0
  44. package/dist/form/parts.js.map +1 -0
  45. package/dist/{internal/form-presence-parts.d.ts → form/presence-parts.d.ts} +1 -1
  46. package/dist/form/presence-parts.js +2 -0
  47. package/dist/form/presence-parts.js.map +1 -0
  48. package/dist/form/root.d.ts +2 -0
  49. package/dist/form/root.js +2 -0
  50. package/dist/form/root.js.map +1 -0
  51. package/dist/form/selectors.d.ts +7 -0
  52. package/dist/form/selectors.js +2 -0
  53. package/dist/form/selectors.js.map +1 -0
  54. package/dist/form.d.ts +8 -398
  55. package/dist/form.js +1 -1
  56. package/dist/form.js.map +1 -1
  57. package/dist/index.d.ts +10 -10
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/input/decimal-input.js.map +1 -0
  61. package/dist/input/native-field.js +2 -0
  62. package/dist/input/native-field.js.map +1 -0
  63. package/dist/input/native-input.js.map +1 -0
  64. package/dist/input/native-range-field.d.ts +86 -0
  65. package/dist/input/native-range-field.js +2 -0
  66. package/dist/input/native-range-field.js.map +1 -0
  67. package/dist/input/native-text-state.d.ts +2 -0
  68. package/dist/input/native-text-state.js +2 -0
  69. package/dist/input/native-text-state.js.map +1 -0
  70. package/dist/internal/cascade-choice.d.ts +1 -1
  71. package/dist/internal/cascade-choice.js +1 -1
  72. package/dist/internal/cascade-choice.js.map +1 -1
  73. package/dist/internal/controlled-state.js +1 -1
  74. package/dist/internal/controlled-state.js.map +1 -1
  75. package/dist/listbox.d.ts +1 -1
  76. package/dist/listbox.js +1 -1
  77. package/dist/listbox.js.map +1 -1
  78. package/dist/menu.js +1 -1
  79. package/dist/meter-group.js +1 -1
  80. package/dist/meter-group.js.map +1 -1
  81. package/dist/meter.js +1 -1
  82. package/dist/meter.js.map +1 -1
  83. package/dist/multi-thumb-slider.js +1 -1
  84. package/dist/multi-thumb-slider.js.map +1 -1
  85. package/dist/navigation-menu.d.ts +1 -1
  86. package/dist/navigation-menu.js +1 -1
  87. package/dist/number-field.d.ts +1 -1
  88. package/dist/number-field.js +1 -1
  89. package/dist/number-field.js.map +1 -1
  90. package/dist/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +1 -1
  91. package/dist/overlay/alert-dialog.js +2 -0
  92. package/dist/overlay/alert-dialog.js.map +1 -0
  93. package/dist/{dialog.d.ts → overlay/dialog.d.ts} +1 -1
  94. package/dist/overlay/dialog.js +2 -0
  95. package/dist/overlay/dialog.js.map +1 -0
  96. package/dist/{drawer.d.ts → overlay/drawer.d.ts} +1 -1
  97. package/dist/overlay/drawer.js +2 -0
  98. package/dist/overlay/drawer.js.map +1 -0
  99. package/dist/{popover.d.ts → overlay/popover.d.ts} +1 -1
  100. package/dist/overlay/popover.js +2 -0
  101. package/dist/overlay/popover.js.map +1 -0
  102. package/dist/overlay/popup.js +2 -0
  103. package/dist/overlay/popup.js.map +1 -0
  104. package/dist/{tooltip.d.ts → overlay/tooltip.d.ts} +1 -1
  105. package/dist/overlay/tooltip.js +2 -0
  106. package/dist/overlay/tooltip.js.map +1 -0
  107. package/dist/pin-input.js +1 -1
  108. package/dist/pin-input.js.map +1 -1
  109. package/dist/{internal → presence}/conditional-presence.js.map +1 -1
  110. package/dist/{internal → presence}/presence.js.map +1 -1
  111. package/dist/progress.js +1 -1
  112. package/dist/progress.js.map +1 -1
  113. package/dist/quantity-field.js +1 -1
  114. package/dist/quantity-field.js.map +1 -1
  115. package/dist/radio-group.d.ts +1 -1
  116. package/dist/radio-group.js +1 -1
  117. package/dist/radio-group.js.map +1 -1
  118. package/dist/select.d.ts +1 -1
  119. package/dist/select.js +1 -1
  120. package/dist/select.js.map +1 -1
  121. package/dist/slider.js +1 -1
  122. package/dist/slider.js.map +1 -1
  123. package/dist/spin-button.js +1 -1
  124. package/dist/spin-button.js.map +1 -1
  125. package/dist/switch.js +1 -1
  126. package/dist/switch.js.map +1 -1
  127. package/dist/tabs.d.ts +1 -1
  128. package/dist/tabs.js +1 -1
  129. package/dist/{internal/tabular-components.d.ts → tabular/components.d.ts} +1 -1
  130. package/dist/{internal/tabular-components.js → tabular/components.js} +1 -1
  131. package/dist/tabular/components.js.map +1 -0
  132. package/dist/tabular/context.d.ts +16 -0
  133. package/dist/tabular/context.js +2 -0
  134. package/dist/tabular/context.js.map +1 -0
  135. package/dist/{internal/tabular-profile.d.ts → tabular/controller.d.ts} +2 -32
  136. package/dist/tabular/controller.js +2 -0
  137. package/dist/tabular/controller.js.map +1 -0
  138. package/dist/{data-grid.d.ts → tabular/data-grid.d.ts} +7 -5
  139. package/dist/tabular/data-grid.js +2 -0
  140. package/dist/tabular/data-grid.js.map +1 -0
  141. package/dist/{data-table.d.ts → tabular/data-table.d.ts} +9 -36
  142. package/dist/tabular/data-table.js +2 -0
  143. package/dist/tabular/data-table.js.map +1 -0
  144. package/dist/{data-tree-grid.d.ts → tabular/data-tree-grid.d.ts} +7 -5
  145. package/dist/tabular/data-tree-grid.js +2 -0
  146. package/dist/tabular/data-tree-grid.js.map +1 -0
  147. package/dist/{internal/tabular-parts.d.ts → tabular/parts.d.ts} +2 -1
  148. package/dist/tabular/parts.js +2 -0
  149. package/dist/tabular/parts.js.map +1 -0
  150. package/dist/tabular/schema.d.ts +35 -0
  151. package/dist/tabular/schema.js +2 -0
  152. package/dist/tabular/schema.js.map +1 -0
  153. package/dist/tabular/source.d.ts +20 -0
  154. package/dist/tabular/source.js +2 -0
  155. package/dist/tabular/source.js.map +1 -0
  156. package/dist/tags-input.js +1 -1
  157. package/dist/tags-input.js.map +1 -1
  158. package/dist/{calendar.d.ts → temporal/calendar.d.ts} +21 -21
  159. package/dist/temporal/calendar.js +2 -0
  160. package/dist/temporal/calendar.js.map +1 -0
  161. package/dist/temporal/capabilities/calendar.d.ts +1 -0
  162. package/dist/temporal/capabilities/calendar.js +2 -0
  163. package/dist/temporal/capabilities/calendar.js.map +1 -0
  164. package/dist/temporal/capabilities/date-picker.d.ts +1 -0
  165. package/dist/temporal/capabilities/date-picker.js +2 -0
  166. package/dist/temporal/capabilities/date-picker.js.map +1 -0
  167. package/dist/temporal/capabilities/date-range-picker.d.ts +1 -0
  168. package/dist/temporal/capabilities/date-range-picker.js +2 -0
  169. package/dist/temporal/capabilities/date-range-picker.js.map +1 -0
  170. package/dist/temporal/capabilities/date-time-picker.d.ts +1 -0
  171. package/dist/temporal/capabilities/date-time-picker.js +2 -0
  172. package/dist/temporal/capabilities/date-time-picker.js.map +1 -0
  173. package/dist/temporal/capabilities/date-time-range-picker.d.ts +1 -0
  174. package/dist/temporal/capabilities/date-time-range-picker.js +2 -0
  175. package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -0
  176. package/dist/temporal/capabilities/month-picker.d.ts +1 -0
  177. package/dist/temporal/capabilities/month-picker.js +2 -0
  178. package/dist/temporal/capabilities/month-picker.js.map +1 -0
  179. package/dist/temporal/capabilities/month-range-picker.d.ts +1 -0
  180. package/dist/temporal/capabilities/month-range-picker.js +2 -0
  181. package/dist/temporal/capabilities/month-range-picker.js.map +1 -0
  182. package/dist/temporal/capabilities/range-calendar.d.ts +1 -0
  183. package/dist/temporal/capabilities/range-calendar.js +2 -0
  184. package/dist/temporal/capabilities/range-calendar.js.map +1 -0
  185. package/dist/temporal/capabilities/year-picker.d.ts +1 -0
  186. package/dist/temporal/capabilities/year-picker.js +2 -0
  187. package/dist/temporal/capabilities/year-picker.js.map +1 -0
  188. package/dist/temporal/capabilities/year-range-picker.d.ts +1 -0
  189. package/dist/temporal/capabilities/year-range-picker.js +2 -0
  190. package/dist/temporal/capabilities/year-range-picker.js.map +1 -0
  191. package/dist/{internal/picker-capability.js → temporal/capability.js} +1 -1
  192. package/dist/temporal/capability.js.map +1 -0
  193. package/dist/{date-field.d.ts → temporal/date-field.d.ts} +1 -1
  194. package/dist/temporal/date-field.js +2 -0
  195. package/dist/temporal/date-field.js.map +1 -0
  196. package/dist/{date-picker.d.ts → temporal/date-picker.d.ts} +24 -24
  197. package/dist/temporal/date-picker.js +2 -0
  198. package/dist/temporal/date-picker.js.map +1 -0
  199. package/dist/{date-range-field.d.ts → temporal/date-range-field.d.ts} +1 -1
  200. package/dist/temporal/date-range-field.js +2 -0
  201. package/dist/temporal/date-range-field.js.map +1 -0
  202. package/dist/{date-range-picker.d.ts → temporal/date-range-picker.d.ts} +27 -27
  203. package/dist/temporal/date-range-picker.js +2 -0
  204. package/dist/temporal/date-range-picker.js.map +1 -0
  205. package/dist/{date-time-field.d.ts → temporal/date-time-field.d.ts} +1 -1
  206. package/dist/temporal/date-time-field.js +2 -0
  207. package/dist/temporal/date-time-field.js.map +1 -0
  208. package/dist/{date-time-picker.d.ts → temporal/date-time-picker.d.ts} +30 -30
  209. package/dist/temporal/date-time-picker.js +2 -0
  210. package/dist/temporal/date-time-picker.js.map +1 -0
  211. package/dist/{date-time-range-picker.d.ts → temporal/date-time-range-picker.d.ts} +39 -39
  212. package/dist/temporal/date-time-range-picker.js +2 -0
  213. package/dist/temporal/date-time-range-picker.js.map +1 -0
  214. package/dist/{month-picker.d.ts → temporal/month-picker.d.ts} +14 -14
  215. package/dist/temporal/month-picker.js +2 -0
  216. package/dist/temporal/month-picker.js.map +1 -0
  217. package/dist/{month-range-picker.d.ts → temporal/month-range-picker.d.ts} +17 -17
  218. package/dist/temporal/month-range-picker.js +2 -0
  219. package/dist/temporal/month-range-picker.js.map +1 -0
  220. package/dist/{internal/date-picker.d.ts → temporal/picker.d.ts} +2 -3
  221. package/dist/temporal/picker.js +2 -0
  222. package/dist/temporal/picker.js.map +1 -0
  223. package/dist/{range-calendar.d.ts → temporal/range-calendar.d.ts} +11 -11
  224. package/dist/temporal/range-calendar.js +2 -0
  225. package/dist/temporal/range-calendar.js.map +1 -0
  226. package/dist/temporal/temporal-provider.js.map +1 -0
  227. package/dist/{time-field.d.ts → temporal/time-field.d.ts} +1 -1
  228. package/dist/temporal/time-field.js +2 -0
  229. package/dist/temporal/time-field.js.map +1 -0
  230. package/dist/{time-range-field.d.ts → temporal/time-range-field.d.ts} +1 -1
  231. package/dist/temporal/time-range-field.js +2 -0
  232. package/dist/temporal/time-range-field.js.map +1 -0
  233. package/dist/{year-picker.d.ts → temporal/year-picker.d.ts} +16 -16
  234. package/dist/temporal/year-picker.js +2 -0
  235. package/dist/temporal/year-picker.js.map +1 -0
  236. package/dist/{year-range-picker.d.ts → temporal/year-range-picker.d.ts} +19 -19
  237. package/dist/temporal/year-range-picker.js +2 -0
  238. package/dist/temporal/year-range-picker.js.map +1 -0
  239. package/dist/text.js +1 -1
  240. package/dist/text.js.map +1 -1
  241. package/dist/toast.js +1 -1
  242. package/dist/toggle-group.js +1 -1
  243. package/dist/toggle-group.js.map +1 -1
  244. package/dist/tree-grid.d.ts +1 -1
  245. package/dist/tree-grid.js +1 -1
  246. package/dist/tree-grid.js.map +1 -1
  247. package/dist/tree-view.d.ts +1 -1
  248. package/dist/tree-view.js +1 -1
  249. package/dist/{internal → virtual}/virtual-collection.d.ts +1 -0
  250. package/dist/virtual/virtual-collection.js +2 -0
  251. package/dist/virtual/virtual-collection.js.map +1 -0
  252. package/dist/{internal → virtual}/virtual-core.d.ts +1 -0
  253. package/dist/virtual/virtual-core.js +2 -0
  254. package/dist/virtual/virtual-core.js.map +1 -0
  255. package/dist/{virtual-grid.d.ts → virtual/virtual-grid.d.ts} +1 -1
  256. package/dist/virtual/virtual-grid.js +2 -0
  257. package/dist/virtual/virtual-grid.js.map +1 -0
  258. package/dist/virtual/virtual-list.js +2 -0
  259. package/dist/virtual/virtual-list.js.map +1 -0
  260. package/dist/{virtual-masonry.d.ts → virtual/virtual-masonry.d.ts} +1 -1
  261. package/dist/virtual/virtual-masonry.js +2 -0
  262. package/dist/virtual/virtual-masonry.js.map +1 -0
  263. package/dist/{virtual-spatial.d.ts → virtual/virtual-spatial.d.ts} +1 -1
  264. package/dist/virtual/virtual-spatial.js +2 -0
  265. package/dist/virtual/virtual-spatial.js.map +1 -0
  266. package/dist/virtual-core.d.ts +1 -1
  267. package/dist/virtual-core.js +1 -1
  268. package/dist/virtual-list.d.ts +2 -2
  269. package/dist/virtual-list.js +1 -1
  270. package/package.json +94 -94
  271. package/dist/alert-dialog.js +0 -2
  272. package/dist/alert-dialog.js.map +0 -1
  273. package/dist/calendar.js +0 -2
  274. package/dist/calendar.js.map +0 -1
  275. package/dist/data-grid.js +0 -2
  276. package/dist/data-grid.js.map +0 -1
  277. package/dist/data-table.js +0 -2
  278. package/dist/data-table.js.map +0 -1
  279. package/dist/data-tree-grid.js +0 -2
  280. package/dist/data-tree-grid.js.map +0 -1
  281. package/dist/date-field.js +0 -2
  282. package/dist/date-field.js.map +0 -1
  283. package/dist/date-picker.js +0 -2
  284. package/dist/date-picker.js.map +0 -1
  285. package/dist/date-range-field.js +0 -2
  286. package/dist/date-range-field.js.map +0 -1
  287. package/dist/date-range-picker.js +0 -2
  288. package/dist/date-range-picker.js.map +0 -1
  289. package/dist/date-time-field.js +0 -2
  290. package/dist/date-time-field.js.map +0 -1
  291. package/dist/date-time-picker.js +0 -2
  292. package/dist/date-time-picker.js.map +0 -1
  293. package/dist/date-time-range-picker.js +0 -2
  294. package/dist/date-time-range-picker.js.map +0 -1
  295. package/dist/dialog.js +0 -2
  296. package/dist/dialog.js.map +0 -1
  297. package/dist/drawer.js +0 -2
  298. package/dist/drawer.js.map +0 -1
  299. package/dist/internal/calendar-capability.d.ts +0 -1
  300. package/dist/internal/calendar-capability.js +0 -2
  301. package/dist/internal/calendar-capability.js.map +0 -1
  302. package/dist/internal/date-picker-capability.d.ts +0 -1
  303. package/dist/internal/date-picker-capability.js +0 -2
  304. package/dist/internal/date-picker-capability.js.map +0 -1
  305. package/dist/internal/date-picker.js +0 -2
  306. package/dist/internal/date-picker.js.map +0 -1
  307. package/dist/internal/date-range-picker-capability.d.ts +0 -1
  308. package/dist/internal/date-range-picker-capability.js +0 -2
  309. package/dist/internal/date-range-picker-capability.js.map +0 -1
  310. package/dist/internal/date-time-picker-capability.d.ts +0 -1
  311. package/dist/internal/date-time-picker-capability.js +0 -2
  312. package/dist/internal/date-time-picker-capability.js.map +0 -1
  313. package/dist/internal/date-time-range-picker-capability.d.ts +0 -1
  314. package/dist/internal/date-time-range-picker-capability.js +0 -2
  315. package/dist/internal/date-time-range-picker-capability.js.map +0 -1
  316. package/dist/internal/decimal-input.js.map +0 -1
  317. package/dist/internal/form-context.js.map +0 -1
  318. package/dist/internal/form-control-inventory.js.map +0 -1
  319. package/dist/internal/form-control.js +0 -2
  320. package/dist/internal/form-control.js.map +0 -1
  321. package/dist/internal/form-presence-parts.js +0 -2
  322. package/dist/internal/form-presence-parts.js.map +0 -1
  323. package/dist/internal/month-picker-capability.d.ts +0 -1
  324. package/dist/internal/month-picker-capability.js +0 -2
  325. package/dist/internal/month-picker-capability.js.map +0 -1
  326. package/dist/internal/month-range-picker-capability.d.ts +0 -1
  327. package/dist/internal/month-range-picker-capability.js +0 -2
  328. package/dist/internal/month-range-picker-capability.js.map +0 -1
  329. package/dist/internal/native-field.js +0 -2
  330. package/dist/internal/native-field.js.map +0 -1
  331. package/dist/internal/native-input.js.map +0 -1
  332. package/dist/internal/picker-capability.js.map +0 -1
  333. package/dist/internal/popup.js +0 -2
  334. package/dist/internal/popup.js.map +0 -1
  335. package/dist/internal/range-calendar-capability.d.ts +0 -1
  336. package/dist/internal/range-calendar-capability.js +0 -2
  337. package/dist/internal/range-calendar-capability.js.map +0 -1
  338. package/dist/internal/tabular-components.js.map +0 -1
  339. package/dist/internal/tabular-parts.js +0 -2
  340. package/dist/internal/tabular-parts.js.map +0 -1
  341. package/dist/internal/tabular-profile.js +0 -2
  342. package/dist/internal/tabular-profile.js.map +0 -1
  343. package/dist/internal/virtual-collection.js +0 -2
  344. package/dist/internal/virtual-collection.js.map +0 -1
  345. package/dist/internal/virtual-core.js +0 -2
  346. package/dist/internal/virtual-core.js.map +0 -1
  347. package/dist/internal/virtual-list.js +0 -2
  348. package/dist/internal/virtual-list.js.map +0 -1
  349. package/dist/internal/year-picker-capability.d.ts +0 -1
  350. package/dist/internal/year-picker-capability.js +0 -2
  351. package/dist/internal/year-picker-capability.js.map +0 -1
  352. package/dist/internal/year-range-picker-capability.d.ts +0 -1
  353. package/dist/internal/year-range-picker-capability.js +0 -2
  354. package/dist/internal/year-range-picker-capability.js.map +0 -1
  355. package/dist/month-picker.js +0 -2
  356. package/dist/month-picker.js.map +0 -1
  357. package/dist/month-range-picker.js +0 -2
  358. package/dist/month-range-picker.js.map +0 -1
  359. package/dist/popover.js +0 -2
  360. package/dist/popover.js.map +0 -1
  361. package/dist/range-calendar.js +0 -2
  362. package/dist/range-calendar.js.map +0 -1
  363. package/dist/temporal-provider.js.map +0 -1
  364. package/dist/time-field.js +0 -2
  365. package/dist/time-field.js.map +0 -1
  366. package/dist/time-range-field.js +0 -2
  367. package/dist/time-range-field.js.map +0 -1
  368. package/dist/tooltip.js +0 -2
  369. package/dist/tooltip.js.map +0 -1
  370. package/dist/virtual-grid.js +0 -2
  371. package/dist/virtual-grid.js.map +0 -1
  372. package/dist/virtual-masonry.js +0 -2
  373. package/dist/virtual-masonry.js.map +0 -1
  374. package/dist/virtual-spatial.js +0 -2
  375. package/dist/virtual-spatial.js.map +0 -1
  376. package/dist/year-picker.js +0 -2
  377. package/dist/year-picker.js.map +0 -1
  378. package/dist/year-range-picker.js +0 -2
  379. package/dist/year-range-picker.js.map +0 -1
  380. /package/dist/{internal/form-control-inventory.d.ts → form/control-inventory.d.ts} +0 -0
  381. /package/dist/{internal/form-control.d.ts → form/control.d.ts} +0 -0
  382. /package/dist/{internal → input}/decimal-input.d.ts +0 -0
  383. /package/dist/{internal → input}/decimal-input.js +0 -0
  384. /package/dist/{internal → input}/native-field.d.ts +0 -0
  385. /package/dist/{internal → input}/native-input.d.ts +0 -0
  386. /package/dist/{internal → input}/native-input.js +0 -0
  387. /package/dist/{internal → overlay}/popup.d.ts +0 -0
  388. /package/dist/{internal → presence}/conditional-presence.d.ts +0 -0
  389. /package/dist/{internal → presence}/conditional-presence.js +0 -0
  390. /package/dist/{internal → presence}/presence.d.ts +0 -0
  391. /package/dist/{internal → presence}/presence.js +0 -0
  392. /package/dist/{internal/picker-capability.d.ts → temporal/capability.d.ts} +0 -0
  393. /package/dist/{temporal-provider.d.ts → temporal/temporal-provider.d.ts} +0 -0
  394. /package/dist/{temporal-provider.js → temporal/temporal-provider.js} +0 -0
  395. /package/dist/{internal → virtual}/virtual-list.d.ts +0 -0
@@ -0,0 +1,81 @@
1
+ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
+ import type { FormFieldPath } from '@sectile/form/path';
3
+ import type { FormFieldSlotProps } from './contracts.js';
4
+ export declare const FormField: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
+ as: {
6
+ type: PropType<import("../primitive.js").PrimitiveAs>;
7
+ default: string;
8
+ };
9
+ asChild: {
10
+ type: BooleanConstructor;
11
+ default: boolean;
12
+ };
13
+ id: {
14
+ type: StringConstructor;
15
+ default: undefined;
16
+ };
17
+ name: {
18
+ type: PropType<FormFieldPath>;
19
+ default: undefined;
20
+ };
21
+ form: {
22
+ type: StringConstructor;
23
+ default: undefined;
24
+ };
25
+ required: {
26
+ type: BooleanConstructor;
27
+ default: undefined;
28
+ };
29
+ disabled: {
30
+ type: BooleanConstructor;
31
+ default: undefined;
32
+ };
33
+ readonly: {
34
+ type: BooleanConstructor;
35
+ default: undefined;
36
+ };
37
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
38
+ as: {
39
+ type: PropType<import("../primitive.js").PrimitiveAs>;
40
+ default: string;
41
+ };
42
+ asChild: {
43
+ type: BooleanConstructor;
44
+ default: boolean;
45
+ };
46
+ id: {
47
+ type: StringConstructor;
48
+ default: undefined;
49
+ };
50
+ name: {
51
+ type: PropType<FormFieldPath>;
52
+ default: undefined;
53
+ };
54
+ form: {
55
+ type: StringConstructor;
56
+ default: undefined;
57
+ };
58
+ required: {
59
+ type: BooleanConstructor;
60
+ default: undefined;
61
+ };
62
+ disabled: {
63
+ type: BooleanConstructor;
64
+ default: undefined;
65
+ };
66
+ readonly: {
67
+ type: BooleanConstructor;
68
+ default: undefined;
69
+ };
70
+ }>> & Readonly<{}>, {
71
+ as: import("../primitive.js").PrimitiveAs;
72
+ asChild: boolean;
73
+ id: string;
74
+ name: FormFieldPath;
75
+ form: string;
76
+ required: boolean;
77
+ disabled: boolean;
78
+ readonly: boolean;
79
+ }, SlotsType<{
80
+ default: (props: FormFieldSlotProps) => VNodeChild;
81
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,2 @@
1
+ import{defineComponent,computed,shallowRef,nextTick,onMounted,onBeforeUnmount,watch,provide,h,mergeProps}from"vue";import{partProps}from"./part.js";import{useFormContext,useFormFieldSelectorFromContext,formFieldContextKey}from"./context.js";import{useHostId}from"../host-provider.js";import{safeEncodeFormFieldPath,resolveElement,applyMetadata,resolveSubmissionRegistrations,nativeSubmissionCapabilities,safeEncodeSubmissionName,nativeCandidates,createNativeFallbackRegistration,sameSubmissionElements}from"./native.js";import{provideFormControlFieldContext}from"./control.js";import{useNextTickTask}from"../internal/scheduled-task.js";import{Primitive}from"../primitive.js";const FormField=defineComponent({name:"SectileFormField",inheritAttrs:false,props:{id:{type:String,default:void 0},name:{type:[String,Array],default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},...partProps},slots:Object,setup(props,{attrs,slots}){const formContext=useFormContext("FormField");const generatedId=useHostId();const id=computed(()=>props.id??`form-field-${generatedId}`);const nameKey=computed(()=>props.name===void 0?void 0:safeEncodeFormFieldPath(props.name)??void 0);const root=shallowRef(null);const controls=shallowRef([]);const fallback=shallowRef(null);const nativeFallbackProblem=shallowRef(null);const appliedAttributes=new Map;let observer;let unregister;let diagnosticId;let observedTargets=[];let warnedMultipleControls=false;const activeRegistrations=computed(()=>controls.value.filter(registration=>resolveElement(registration.element)!==null));const activeControl=computed(()=>activeRegistrations.value.length===1?activeRegistrations.value[0]:controls.value.length===0?fallback.value:null);const labelMode=computed(()=>activeControl.value?.labelMode??"for");const semanticControl=()=>{const registration=activeControl.value;if(registration===void 0||registration===null)return null;return resolveElement(registration.semanticControl??registration.element)};const effectiveControlId=computed(()=>semanticControl()?.getAttribute("id")?.trim()||`${id.value}-control`);const fieldState=useFormFieldSelectorFromContext(formContext,()=>id.value,()=>field=>field);const fieldActions=Object.freeze({setMeta:meta=>formContext.connection.value?.setFieldMeta(id.value,meta)??false,replaceIssues:(source,issues)=>formContext.connection.value?.replaceFieldIssues(id.value,source,issues)??false,upsertIssue:issue=>formContext.connection.value?.upsertFieldIssue(id.value,issue)??false,removeIssue:issueId=>formContext.connection.value?.removeFieldIssue(id.value,issueId)??false,clearIssues:source=>formContext.connection.value?.clearFieldIssues(id.value,source)??false});const slotProps=computed(()=>{const current=fieldState.value;const descriptionId=`${id.value}-description`;const messageId=`${id.value}-message`;const relatedIssues=current?.relatedIssues??[];const describedBy=`${descriptionId} ${messageId}${relatedIssues.length===0?"":` ${formContext.summaryId}`}`;const valid=current?.valid??true;return Object.freeze({id:id.value,controlId:effectiveControlId.value,labelId:`${id.value}-label`,descriptionId,messageId,describedBy,valid,touched:current?.touched??false,dirty:current?.dirty??false,issues:current?.issues??[],relatedIssues,...fieldActions})});const attributesFor=registration=>{const explicit=new Set(registration.explicit??[]);const capabilities=registration.capabilities??{};const attributes={};const assign=(attribute,value)=>{if(!explicit.has(attribute)&&value!==void 0)attributes[attribute]=value};if(capabilities.id===true)assign("id",slotProps.value.controlId);if(capabilities.describedBy===true){assign("aria-describedby",slotProps.value.describedBy);assign("aria-errormessage",slotProps.value.issues.length>0?slotProps.value.messageId:slotProps.value.relatedIssues.length>0?formContext.summaryId:slotProps.value.messageId)}if(capabilities.invalid===true&&!slotProps.value.valid)assign("aria-invalid","true");if(capabilities.labelledBy===true&&labelMode.value==="labelledby"){assign("aria-labelledby",slotProps.value.labelId)}if(capabilities.required===true&&props.required===true)assign("required",true);else if(labelMode.value!=="for"&&props.required===true)assign("aria-required","true");if(capabilities.disabled===true&&props.disabled===true)assign("disabled",true);else if(labelMode.value!=="for"&&props.disabled===true)assign("aria-disabled","true");if(capabilities.readonly===true&&props.readonly===true)assign("readonly",true);else if(labelMode.value!=="for"&&props.readonly===true)assign("aria-readonly","true");if(labelMode.value!=="for"){const refreshValue=()=>{queueMicrotask(()=>formContext.connection.value?.refreshParticipant(id.value))};attributes["onClick"]=refreshValue;attributes["onKeydown"]=refreshValue}return Object.freeze(attributes)};const restoreControlAttributes=()=>{for(const[element,attributes]of appliedAttributes){for(const[name,previous]of attributes){if(previous===null)element.removeAttribute(name);else element.setAttribute(name,previous)}}appliedAttributes.clear()};const applyControlAttributes=()=>{restoreControlAttributes();const registration=activeControl.value;if(registration===void 0||registration===null)return;const semantic=resolveElement(registration.semanticControl??registration.element);if(semantic!==null){applyMetadata(semantic,attributesFor(registration),registration.explicit,appliedAttributes)}for(const submission of resolveSubmissionRegistrations(registration)){const element=resolveElement(submission.element);if(element===null)continue;const capabilities=submission.capabilities??nativeSubmissionCapabilities(element);const explicit=submission.explicit??registration.explicit;const attributes={};if(capabilities.name===true&&nameKey.value!==void 0){const submissionName=safeEncodeSubmissionName(nameKey.value,submission.relativeName);if(submissionName!==null)attributes["name"]=submissionName}if(capabilities.form===true&&props.form!==void 0)attributes["form"]=props.form;if(capabilities.required===true&&props.required===true)attributes["required"]=true;if(capabilities.disabled===true&&props.disabled===true)attributes["disabled"]=true;if(capabilities.readonly===true&&props.readonly===true)attributes["readonly"]=true;applyMetadata(element,attributes,explicit,appliedAttributes)}};const discoverNativeFallback=()=>{if(controls.value.length>0||root.value===null){fallback.value=null;nativeFallbackProblem.value=null;return}const candidates=nativeCandidates(root.value);const discovered=createNativeFallbackRegistration(root.value,candidates);nativeFallbackProblem.value=discovered.problem;if(discovered.registration===null){fallback.value=null;return}const next=discovered.registration;const current=fallback.value;if(current!==null&&resolveElement(current.semanticControl??current.element)===resolveElement(next.semanticControl??next.element)&&sameSubmissionElements(resolveSubmissionRegistrations(current),resolveSubmissionRegistrations(next)))return;fallback.value=next};const syncDiagnostic=()=>{const currentId=id.value;if(diagnosticId!==void 0&&diagnosticId!==currentId){formContext.setFieldDiagnostic(diagnosticId,null)}diagnosticId=currentId;let message=null;if(props.name!==void 0&&nameKey.value===void 0){message="FormField received an invalid field path."}else if(activeRegistrations.value.length>1){message="FormField received multiple active controls. Register one composite control with explicit targets."}else if(controls.value.length>0&&activeRegistrations.value.length===0){message="FormField has no mounted control target."}else if(nativeFallbackProblem.value!==null){message=nativeFallbackProblem.value}else{const registration=activeControl.value;if(registration!==null&&registration!==void 0){const invalidRelativeName=resolveSubmissionRegistrations(registration).some(submission=>submission.relativeName!==void 0&&nameKey.value!==void 0&&safeEncodeSubmissionName(nameKey.value,submission.relativeName)===null);if(invalidRelativeName)message="FormField received an invalid relative submission path."}}formContext.setFieldDiagnostic(currentId,message===null?null:Object.freeze({id:`${currentId}:composition`,fieldId:currentId,message,source:"field"}))};const refreshParticipantTargets=()=>{const registration=activeControl.value;const next=registration===null||registration===void 0?root.value===null?[]:[root.value]:[root.value,resolveElement(registration.semanticControl??registration.element),resolveElement(registration.focusTarget??registration.element),resolveElement(registration.validationTarget??registration.element),...resolveSubmissionRegistrations(registration).map(submission=>resolveElement(submission.element))].filter(element=>element!==null);if(next.length===observedTargets.length&&next.every((element,index)=>element===observedTargets[index]))return;observedTargets=Object.freeze([...next]);formContext.connection.value?.refreshParticipant(id.value)};const registerControl=registration=>{controls.value=[...controls.value,registration];fallback.value=null;void nextTick(()=>{if(!warnedMultipleControls&&activeRegistrations.value.length>1){warnedMultipleControls=true;console.warn("[Sectile] FormField received multiple active control registrations. Register one composite control with explicit semantic, focus, and submission targets.")}applyControlAttributes();syncDiagnostic();refreshParticipantTargets()});return()=>{controls.value=controls.value.filter(candidate=>candidate!==registration);discoverNativeFallback();void nextTick(()=>{applyControlAttributes();syncDiagnostic();refreshParticipantTargets()})}};const mount=()=>{unregister?.();unregister=void 0;if(root.value===null)return;discoverNativeFallback();observer?.disconnect();observer=new MutationObserver(()=>{discoverNativeFallback();applyControlAttributes();syncDiagnostic();refreshParticipantTargets()});observer.observe(root.value,{childList:true,subtree:true});applyControlAttributes();const participant={id:id.value,get element(){return root.value},get semanticControl(){return semanticControl()??root.value},get focusTarget(){const registration=activeControl.value;return registration===void 0||registration===null?root.value:resolveElement(registration.focusTarget??registration.semanticControl??registration.element)??root.value},get validationTarget(){const registration=activeControl.value;return registration===void 0||registration===null?root.value:resolveElement(registration.validationTarget??registration.semanticControl??registration.element)??root.value},get submissionElements(){const registration=activeControl.value;if(registration===void 0||registration===null)return[];return resolveSubmissionRegistrations(registration).map(submission=>resolveElement(submission.element)).filter(element=>element!==null)},focus:()=>{const registration=activeControl.value;const control=registration===void 0||registration===null?null:resolveElement(registration.focusTarget??registration.semanticControl??registration.element);control?.focus();return control!==null&&document.activeElement===control},reset:()=>activeControl.value?.reset?.(),get getValue(){return activeControl.value?.getValue},get isValueEqual(){return activeControl.value?.isValueEqual},...nameKey.value===void 0?{}:{name:nameKey.value}};unregister=formContext.register(participant);observedTargets=Object.freeze([participant.element,participant.semanticControl??participant.element,participant.focusTarget??participant.element,participant.validationTarget??participant.element,...participant.submissionElements??[]]);syncDiagnostic()};const mountTask=useNextTickTask(mount);onMounted(mountTask.schedule);onBeforeUnmount(()=>{mountTask.cancel();observer?.disconnect();observer=void 0;restoreControlAttributes();if(diagnosticId!==void 0)formContext.setFieldDiagnostic(diagnosticId,null);unregister?.();unregister=void 0});watch([id,nameKey],mountTask.schedule);watch([activeControl,effectiveControlId,labelMode,nameKey,()=>props.form,()=>props.required,()=>props.disabled,()=>props.readonly,()=>slotProps.value.valid],()=>{applyControlAttributes();syncDiagnostic()},{flush:"post"});provide(formFieldContextKey,{slotProps,labelMode,registerControl,attributesFor});provideFormControlFieldContext({registerControl,attributesFor});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{root.value=element},"data-scope":"form","data-part":"field","data-valid":slotProps.value.valid?"":void 0,"data-invalid":slotProps.value.valid?void 0:"","data-touched":slotProps.value.touched?"":void 0,"data-dirty":slotProps.value.dirty?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});export{FormField};
2
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/field.ts"],"mappings":"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","names":[],"file":"field.js"}
@@ -0,0 +1,15 @@
1
+ import { type FormFieldPath, type FormRelativePath } from '@sectile/form/path';
2
+ import { type FormElementSource, type FormControlRegistration, type FormSubmissionRegistration, type FormSubmissionCapabilities, type FormMetadataAttribute } from './control.js';
3
+ import type { FormSubmissionElement } from '@sectile/dom/form';
4
+ export declare function safeEncodeFormFieldPath(path: FormFieldPath): string | null;
5
+ export declare function resolveElement<ElementType extends HTMLElement>(source: FormElementSource<ElementType>): ElementType | null;
6
+ export declare function resolveSubmissionRegistrations(registration: FormControlRegistration): readonly FormSubmissionRegistration[];
7
+ export declare function sameSubmissionElements(left: readonly FormSubmissionRegistration[], right: readonly FormSubmissionRegistration[]): boolean;
8
+ export declare function nativeCandidates(root: HTMLElement): readonly HTMLElement[];
9
+ export declare function createNativeFallbackRegistration(root: HTMLElement, candidates: readonly HTMLElement[]): {
10
+ readonly registration: FormControlRegistration | null;
11
+ readonly problem: string | null;
12
+ };
13
+ export declare function nativeSubmissionCapabilities(element: FormSubmissionElement): FormSubmissionCapabilities;
14
+ export declare function safeEncodeSubmissionName(base: FormFieldPath, relative?: FormRelativePath): string | null;
15
+ export declare function applyMetadata(element: HTMLElement, attributes: Readonly<Record<string, unknown>>, explicitAttributes: readonly FormMetadataAttribute[] | undefined, applied: Map<HTMLElement, Map<string, string | null>>): void;
@@ -0,0 +1,2 @@
1
+ import{tryCreateFormFieldPath,encodeFormFieldPath,appendFormFieldPath}from"@sectile/form/path";import{compositeControlCapabilities}from"./control.js";function safeEncodeFormFieldPath(path){const result=tryCreateFormFieldPath(path);return result.ok?encodeFormFieldPath(result.value):null}function resolveElement(source){return typeof source==="function"?source():source.value??null}function resolveSubmissionRegistrations(registration){if(registration.submissions!==void 0){return typeof registration.submissions==="function"?registration.submissions():registration.submissions}const element=resolveElement(registration.element);if(element===null||!isFormSubmissionElement(element))return[];return[{element:()=>element,capabilities:nativeSubmissionCapabilities(element),...registration.explicit===void 0?{}:{explicit:registration.explicit}}]}function sameSubmissionElements(left,right){return left.length===right.length&&left.every((submission,index)=>resolveElement(submission.element)===resolveElement(right[index].element))}function nativeCandidates(root){const selector="fieldset, input, select, textarea";const candidates=[...root.matches(selector)?[root]:[],...root.querySelectorAll(selector)];return candidates.filter(candidate=>candidate.closest('[data-scope="form"][data-part="field"]')===root)}function createNativeFallbackRegistration(root,candidates){const semantic=nativeSemanticControl(candidates);if(semantic===void 0||isHiddenInput(semantic)){return{registration:null,problem:"FormField has no visible native semantic or focus target."}}const submissions=candidates.filter(isFormSubmissionElement);const visible=candidates.filter(candidate=>!isHiddenInput(candidate));const fieldset=visible.find(candidate=>candidate.tagName==="FIELDSET");if(fieldset!==void 0){return{registration:nativeFallbackForFieldset(fieldset,submissions),problem:null}}if(visible.length===1){return{registration:nativeFallbackForElement(semantic,submissions),problem:null}}if(isNativeCheckedGroup(visible)){const focusTarget=visible.find(candidate=>!candidate.disabled)??visible[0];return{registration:{element:()=>root,semanticControl:()=>root,focusTarget:()=>focusTarget,validationTarget:()=>root,submissions:submissions.map(element=>({element:()=>element,capabilities:Object.freeze({...nativeSubmissionCapabilities(element),required:false})})),labelMode:"labelledby",capabilities:compositeControlCapabilities},problem:null}}return{registration:null,problem:"FormField contains multiple unrelated native controls. Use a fieldset or one composite registration."}}function nativeFallbackForFieldset(fieldset,submissions){const visibleSubmissions=submissions.filter(element=>!isHiddenInput(element));const checkboxGroup=isNativeCheckedGroup(visibleSubmissions)&&visibleSubmissions[0]?.tagName==="INPUT"&&visibleSubmissions[0].type.toLowerCase()==="checkbox";return{element:()=>fieldset,semanticControl:()=>fieldset,focusTarget:()=>fieldsetFocusTarget(submissions)??fieldset,validationTarget:()=>fieldset,submissions:submissions.map(element=>({element:()=>element,capabilities:Object.freeze({...nativeSubmissionCapabilities(element),...checkboxGroup?{required:false}:{}})})),labelMode:"legend",capabilities:nativeControlCapabilities(fieldset)}}function fieldsetFocusTarget(submissions){const enabled=submissions.filter(element=>!isHiddenInput(element)&&!element.disabled&&!element.matches(":disabled"));const invalid=enabled.find(element=>element.willValidate&&!element.validity.valid);if(invalid!==void 0)return invalid;return enabled.find(element=>element.tagName==="INPUT"&&element.type.toLowerCase()==="radio"&&element.checked)??enabled[0]}function nativeFallbackForElement(semantic,submissions){return{element:()=>semantic,semanticControl:()=>semantic,focusTarget:()=>semantic,validationTarget:()=>semantic,submissions:submissions.map(element=>({element:()=>element,capabilities:nativeSubmissionCapabilities(element)})),labelMode:nativeLabelMode(semantic),capabilities:nativeControlCapabilities(semantic)}}function isHiddenInput(element){return element.tagName==="INPUT"&&element.getAttribute("type")?.toLowerCase()==="hidden"}function isNativeCheckedGroup(candidates){if(candidates.length<2)return false;const types=candidates.map(candidate=>candidate.tagName==="INPUT"?candidate.type.toLowerCase():null);return types.every(type=>type===types[0])&&(types[0]==="checkbox"||types[0]==="radio")}function nativeSemanticControl(candidates){return candidates.find(candidate=>!isHiddenInput(candidate))??candidates[0]}function isFormSubmissionElement(element){return["INPUT","SELECT","TEXTAREA"].includes(element.tagName)}function nativeLabelMode(element){if(element.tagName==="FIELDSET")return"legend";if(element.tagName==="INPUT"&&element.getAttribute("type")?.toLowerCase()==="hidden"){return"labelledby"}return["BUTTON","INPUT","SELECT","TEXTAREA"].includes(element.tagName)?"for":"labelledby"}function nativeControlCapabilities(element){const tag=element.tagName;const labelable=nativeLabelMode(element)==="for";return Object.freeze({id:true,describedBy:true,invalid:true,labelledBy:!labelable,required:["INPUT","SELECT","TEXTAREA"].includes(tag),disabled:["BUTTON","FIELDSET","INPUT","SELECT","TEXTAREA"].includes(tag),readonly:tag==="TEXTAREA"||tag==="INPUT"&&supportsReadonly(element)})}function nativeSubmissionCapabilities(element){const tag=element.tagName;return Object.freeze({name:true,form:true,required:["INPUT","SELECT","TEXTAREA"].includes(tag),disabled:true,readonly:tag==="TEXTAREA"||tag==="INPUT"&&supportsReadonly(element)})}function safeEncodeSubmissionName(base,relative){try{if(relative===void 0)return safeEncodeFormFieldPath(base);return safeEncodeFormFieldPath(appendFormFieldPath(base,relative))}catch{return null}}function applyMetadata(element,attributes,explicitAttributes,applied){const explicit=new Set(explicitAttributes??[]);for(const[name,value]of Object.entries(attributes)){if(name.startsWith("on")&&typeof value==="function")continue;if(value===void 0||value===false||explicit.has(name))continue;const previous=element.getAttribute(name);const mergeTokens=name==="aria-describedby"||name==="aria-labelledby";if(previous!==null&&!mergeTokens)continue;let changes=applied.get(element);if(changes===void 0){changes=new Map;applied.set(element,changes)}if(!changes.has(name))changes.set(name,previous);const next=mergeTokens&&previous!==null?[...new Set([...previous.split(/\s+/u),...String(value).split(/\s+/u)])].join(" "):value===true?"":String(value);element.setAttribute(name,next)}}function supportsReadonly(element){return!new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]).has(element.type.toLowerCase())}export{applyMetadata,createNativeFallbackRegistration,nativeCandidates,nativeSubmissionCapabilities,resolveElement,resolveSubmissionRegistrations,safeEncodeFormFieldPath,safeEncodeSubmissionName,sameSubmissionElements};
2
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/native.ts"],"mappings":"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","names":[],"file":"native.js"}
@@ -0,0 +1,16 @@
1
+ import { type PropType, type VNodeChild } from 'vue';
2
+ import { type PrimitiveAs } from '../primitive.js';
3
+ import type { FormPartProps } from './contracts.js';
4
+ export declare const partProps: {
5
+ as: {
6
+ type: PropType<PrimitiveAs>;
7
+ default: string;
8
+ };
9
+ asChild: {
10
+ type: BooleanConstructor;
11
+ default: boolean;
12
+ };
13
+ };
14
+ export declare function renderFieldPart(props: FormPartProps, attrs: Readonly<Record<string, unknown>>, slots: Readonly<{
15
+ default?: () => VNodeChild;
16
+ }>, part: string, attributes: Readonly<Record<string, unknown>>): VNodeChild;
@@ -0,0 +1,2 @@
1
+ import{h,mergeProps}from"vue";import{Primitive}from"../primitive.js";const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};function renderFieldPart(props,attrs,slots,part,attributes){return h(Primitive,mergeProps(attributes,attrs,{as:props.as,asChild:props.asChild,"data-scope":"form","data-part":part}),{default:()=>slots.default?.()})}export{partProps,renderFieldPart};
2
+ //# sourceMappingURL=part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/part.ts"],"mappings":"AAAA,OAGE,EACA,eACK,MACP,OAA2B,cAAiB,kBAGrC,MAAM,UAAY,CACvB,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAGpC,SAAU,gBACd,MACA,MACA,MACA,KACA,WAA6C,CAE7C,OAAO,EAAE,UAAW,WAAW,WAAY,MAAO,CAChD,GAAI,MAAM,GACV,QAAS,MAAM,QACf,aAAc,OACd,YAAa,KACd,EAAG,CAAE,QAAS,IAAM,MAAM,UAAS,CAAE,CAAE,CAC1C","names":[],"file":"part.js"}
@@ -0,0 +1,93 @@
1
+ import { type PropType, type VNodeChild, type SlotsType } from 'vue';
2
+ import { type PrimitiveAs } from '../primitive.js';
3
+ import type { FormSubmitSlotProps } from './contracts.js';
4
+ export declare const FormLabel: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
+ as: {
6
+ type: PropType<PrimitiveAs>;
7
+ default: undefined;
8
+ };
9
+ asChild: {
10
+ type: BooleanConstructor;
11
+ default: boolean;
12
+ };
13
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
+ as: {
15
+ type: PropType<PrimitiveAs>;
16
+ default: undefined;
17
+ };
18
+ asChild: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
22
+ }>> & Readonly<{}>, {
23
+ as: PrimitiveAs;
24
+ asChild: boolean;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
26
+ export declare const FormDescription: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
27
+ asChild: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ as: {
32
+ type: PropType<PrimitiveAs>;
33
+ default: string;
34
+ };
35
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
36
+ asChild: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ as: {
41
+ type: PropType<PrimitiveAs>;
42
+ default: string;
43
+ };
44
+ }>> & Readonly<{}>, {
45
+ asChild: boolean;
46
+ as: PrimitiveAs;
47
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
48
+ export declare const FormReset: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
49
+ asChild: {
50
+ type: BooleanConstructor;
51
+ default: boolean;
52
+ };
53
+ as: {
54
+ type: PropType<PrimitiveAs>;
55
+ default: string;
56
+ };
57
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
58
+ asChild: {
59
+ type: BooleanConstructor;
60
+ default: boolean;
61
+ };
62
+ as: {
63
+ type: PropType<PrimitiveAs>;
64
+ default: string;
65
+ };
66
+ }>> & Readonly<{}>, {
67
+ asChild: boolean;
68
+ as: PrimitiveAs;
69
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
70
+ export declare const FormSubmit: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
71
+ asChild: {
72
+ type: BooleanConstructor;
73
+ default: boolean;
74
+ };
75
+ as: {
76
+ type: PropType<PrimitiveAs>;
77
+ default: string;
78
+ };
79
+ }>, () => VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
80
+ asChild: {
81
+ type: BooleanConstructor;
82
+ default: boolean;
83
+ };
84
+ as: {
85
+ type: PropType<PrimitiveAs>;
86
+ default: string;
87
+ };
88
+ }>> & Readonly<{}>, {
89
+ asChild: boolean;
90
+ as: PrimitiveAs;
91
+ }, SlotsType<{
92
+ default: (props: FormSubmitSlotProps) => VNodeChild;
93
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,2 @@
1
+ import{defineComponent,h,mergeProps,computed}from"vue";import{Primitive}from"../primitive.js";import{useFormFieldContext,useFormContext,useFormSelectorFromContext}from"./context.js";import{renderFieldPart,partProps}from"./part.js";const FormLabel=defineComponent({name:"SectileFormLabel",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:void 0},asChild:{type:Boolean,default:false}},setup(props,{attrs,slots}){const field=useFormFieldContext("FormLabel");return()=>{const mode=field.labelMode.value;return renderFieldPart({as:props.as??(mode==="legend"?"legend":mode==="for"?"label":"span"),asChild:props.asChild},attrs,slots,"label",{id:field.slotProps.value.labelId,...mode==="for"?{for:field.slotProps.value.controlId}:{}})}}});const FormDescription=defineComponent({name:"SectileFormDescription",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"p"}},setup(props,{attrs,slots}){const field=useFormFieldContext("FormDescription");return()=>renderFieldPart(props,attrs,slots,"description",{id:field.slotProps.value.descriptionId})}});const FormReset=defineComponent({name:"SectileFormReset",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"button"}},setup(props,{attrs,slots}){return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"reset"}:{},"data-scope":"form","data-part":"reset"}),{default:()=>slots["default"]?.()})}});const FormSubmit=defineComponent({name:"SectileFormSubmit",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"button"}},slots:Object,setup(props,{attrs,slots}){const form=useFormContext("FormSubmit");const valid=useFormSelectorFromContext(form,()=>state=>state.valid);const submission=useFormSelectorFromContext(form,()=>state=>state.submission);const slotProps=computed(()=>{const submitting=submission.value.status==="submitting";return Object.freeze({valid:valid.value,submitting,canSubmit:valid.value&&!submitting,submission:submission.value})});const blockPendingSubmit=event=>{if(!slotProps.value.submitting)return;event.preventDefault();event.stopImmediatePropagation()};return()=>h(Primitive,mergeProps({onClickCapture:blockPendingSubmit},attrs,{as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"submit"}:{},...props.as==="button"&&!props.asChild&&slotProps.value.submitting?{disabled:true}:{},...props.asChild&&slotProps.value.submitting?{"aria-disabled":"true"}:{},"data-scope":"form","data-part":"submit","data-submission-status":slotProps.value.submission.status}),{default:()=>slots["default"]?.(slotProps.value)})}});export{FormDescription,FormLabel,FormReset,FormSubmit};
2
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/parts.ts"],"mappings":"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","names":[],"file":"parts.js"}
@@ -1,5 +1,5 @@
1
1
  import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
- import type { FormFieldSlotProps, FormSummarySlotProps } from '../form.js';
2
+ import type { FormFieldSlotProps, FormSummarySlotProps } from './contracts.js';
3
3
  import { type PrimitiveAs } from '../primitive.js';
4
4
  export declare const FormMessage: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
5
  forcePresent: {
@@ -0,0 +1,2 @@
1
+ import{computed,defineComponent,h,mergeProps}from"vue";import{getFormIssuesBySource}from"@sectile/form/state";import{Primitive}from"../primitive.js";import{conditionalPresenceProps,useConditionalPresence}from"../presence/conditional-presence.js";import{useFormContext,useFormFieldContext,useFormSelectorFromContext}from"./context.js";const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const FormMessage=defineComponent({name:"SectileFormMessage",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps,as:{...partProps.as,default:"p"}},slots:Object,setup(props,{attrs,slots}){const field=useFormFieldContext("FormMessage");const active=computed(()=>!field.slotProps.value.valid);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:presence.register,id:field.slotProps.value.messageId,hidden:presence.hidden.value,role:active.value?"alert":void 0,"aria-live":active.value?"polite":"off",...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"form","data-part":"message","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(field.slotProps.value)??field.slotProps.value.issues.map(issue=>issue.message).join(" ")})}}});const FormSummary=defineComponent({name:"SectileFormSummary",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const form=useFormContext("FormSummary");const valid=useFormSelectorFromContext(form,()=>state=>state.valid);const validation=useFormSelectorFromContext(form,()=>state=>state.validation);const submission=useFormSelectorFromContext(form,()=>state=>state.submission);const issues=useFormSelectorFromContext(form,()=>state=>state.allIssues);const serverIssues=useFormSelectorFromContext(form,()=>state=>getFormIssuesBySource(state,"server"));const firstIssue=useFormSelectorFromContext(form,()=>state=>state.allIssues[0]??null);const active=computed(()=>issues.value.length>0||submission.value.failure!==null);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);const slotProps=computed(()=>Object.freeze({validation:validation.value,submission:submission.value,issues:issues.value,serverIssues:serverIssues.value,firstIssue:firstIssue.value,valid:valid.value}));return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,id:form.summaryId,elementRef:element=>{const resolved=presence.register(element);form.summary.value=resolved??null},role:active.value?"alert":void 0,"aria-live":active.value?"polite":"off",tabindex:-1,hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"form","data-part":"summary","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(slotProps.value)??[submission.value.failure?.message,...issues.value.map(issue=>issue.message)].filter(message=>message!==void 0).join(" ")})}}});export{FormMessage,FormSummary};
2
+ //# sourceMappingURL=presence-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/presence-parts.ts"],"mappings":"AAAA,OACE,SACA,gBACA,EACA,eAIK,MACP,OAAS,0BAA6B,sBAEtC,OAAS,cAAmC,kBAC5C,OACE,yBACA,2BACK,sCACP,OACE,eACA,oBACA,+BACK,eAEP,MAAM,UAAY,CAChB,GAAI,CAAE,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAA4B,QAAS,KAAK,EAC/E,QAAS,CAAE,KAAM,QAAS,QAAS,KAAK,GAGnC,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBAAsB,aAAc,MAC1C,MAAO,CAAE,GAAG,UAAW,GAAG,yBAA0B,GAAI,CAAE,GAAG,UAAU,GAAI,QAAS,GAAG,CAAE,EACzF,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,MAAQ,oBAAoB,aAAa,EAC/C,MAAM,OAAS,SAAS,IAAM,CAAC,MAAM,UAAU,MAAM,KAAK,EAC1D,MAAM,aAAe,SAAS,IAAM,MAAM,YAAY,EACtD,MAAM,SAAW,uBAAuB,OAAQ,YAAY,EAC5D,MAAO,IAAiB,CACtB,MAAM,gBAAkB,CAAC,OAAO,OAAS,SAAS,QAAQ,MAC1D,OAAO,EAAE,UAAW,WAAW,MAAO,CACpC,GAAI,MAAM,GACV,QAAS,MAAM,QACf,WAAY,SAAS,SACrB,GAAI,MAAM,UAAU,MAAM,UAC1B,OAAQ,SAAS,OAAO,MACxB,KAAM,OAAO,MAAQ,QAAU,OAC/B,YAAa,OAAO,MAAQ,SAAW,MACvC,GAAI,gBAAkB,CAAE,MAAO,KAAM,cAAe,MAAM,EAAK,CAAA,EAC/D,aAAc,OACd,YAAa,UACb,aAAc,OAAO,MAAQ,UAAY,SAC1C,EAAG,CACF,QAAS,IAAM,MAAM,SAAS,IAAI,MAAM,UAAU,KAAK,GAClD,MAAM,UAAU,MAAM,OAAO,IAAK,OAAU,MAAM,OAAO,EAAE,KAAK,GAAG,EACzE,CACH,CACF,EACD,EAEM,MAAM,YAAc,gBAAgB,CACzC,KAAM,qBAAsB,aAAc,MAC1C,MAAO,CAAE,GAAG,UAAW,GAAG,wBAAwB,EAClD,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAK,EAAE,CAC3B,MAAM,KAAO,eAAe,aAAa,EACzC,MAAM,MAAQ,2BAA2B,KAAM,IAAO,OAAU,MAAM,KAAK,EAC3E,MAAM,WAAa,2BAA2B,KAAM,IAAO,OAAU,MAAM,UAAU,EACrF,MAAM,WAAa,2BAA2B,KAAM,IAAO,OAAU,MAAM,UAAU,EACrF,MAAM,OAAS,2BAA2B,KAAM,IAAO,OAAU,MAAM,SAAS,EAChF,MAAM,aAAe,2BACnB,KACA,IAAO,OAAU,sBAAsB,MAAO,QAAQ,CAAC,EAEzD,MAAM,WAAa,2BACjB,KACA,IAAO,OAAU,MAAM,UAAU,CAAC,GAAK,IAAI,EAE7C,MAAM,OAAS,SAAS,IAAM,OAAO,MAAM,OAAS,GAAK,WAAW,MAAM,UAAY,IAAI,EAC1F,MAAM,aAAe,SAAS,IAAM,MAAM,YAAY,EACtD,MAAM,SAAW,uBAAuB,OAAQ,YAAY,EAC5D,MAAM,UAAY,SAA+B,IAAM,OAAO,OAAO,CACnE,WAAY,WAAW,MACvB,WAAY,WAAW,MACvB,OAAQ,OAAO,MACf,aAAc,aAAa,MAC3B,WAAY,WAAW,MACvB,MAAO,MAAM,MACd,CAAC,EACF,MAAO,IAAiB,CACtB,MAAM,gBAAkB,CAAC,OAAO,OAAS,SAAS,QAAQ,MAC1D,OAAO,EAAE,UAAW,WAAW,MAAO,CACpC,GAAI,MAAM,GACV,QAAS,MAAM,QACf,GAAI,KAAK,UACT,WAAa,SAAoB,CAC/B,MAAM,SAAW,SAAS,SAAS,OAAO,EAC1C,KAAK,QAAQ,MAAQ,UAAY,IACnC,EACA,KAAM,OAAO,MAAQ,QAAU,OAC/B,YAAa,OAAO,MAAQ,SAAW,MACvC,SAAU,GACV,OAAQ,SAAS,OAAO,MACxB,GAAI,gBAAkB,CAAE,MAAO,KAAM,cAAe,MAAM,EAAK,CAAA,EAC/D,aAAc,OACd,YAAa,UACb,aAAc,OAAO,MAAQ,UAAY,SAC1C,EAAG,CACF,QAAS,IAAM,MAAM,SAAS,IAAI,UAAU,KAAK,GAC5C,CACD,WAAW,MAAM,SAAS,QAC1B,GAAG,OAAO,MAAM,IAAK,OAAU,MAAM,OAAO,GAC5C,OAAQ,SAA+B,UAAY,MAAS,EAAE,KAAK,GAAG,EAC3E,CACH,CACF,EACD","names":[],"file":"presence-parts.js"}
@@ -0,0 +1,2 @@
1
+ import type { FormRootComponent } from './contracts.js';
2
+ export declare const FormRoot: FormRootComponent;
@@ -0,0 +1,2 @@
1
+ import{createForm}from"@sectile/dom/form";import{defineComponent,shallowRef,nextTick,onMounted,onBeforeUnmount,watch,provide,h,mergeProps}from"vue";import{useHostId}from"../host-provider.js";import{useNextTickTask}from"../internal/scheduled-task.js";import{getFormFieldIDByPath}from"@sectile/form/state";import{formContextKey,useFormSelectorFromContext}from"./context.js";const FormRootImpl=defineComponent({name:"SectileFormRoot",inheritAttrs:false,props:{issues:{type:Array,default:()=>[]},schema:{type:Object,default:void 0},validate:{type:Function,default:void 0},validateOn:{type:Array,default:()=>[]},revalidateOn:{type:Array,default:()=>["input"]},onSubmit:{type:Function,default:void 0},mapSubmitError:{type:Function,default:void 0}},emits:{reset:()=>true,stateChange:_state=>true},slots:Object,setup(props,{attrs,emit,expose,slots}){const root=shallowRef(null);const summary=shallowRef(null);const summaryId=`${useHostId()}-summary`;const connection=shallowRef(null);const participants=new Map;const fieldDiagnostics=new Map;let syncConfiguredIssues=()=>{};let syncFieldDiagnostics=()=>{};const register=participant=>{const existing=participants.get(participant.id);existing?.unregister?.();const registered={participant};participants.set(participant.id,registered);if(connection.value!==null)registered.unregister=connection.value.registerParticipant(participant);void nextTick(()=>{syncConfiguredIssues();syncFieldDiagnostics()});return()=>{if(participants.get(participant.id)!==registered)return;registered.unregister?.();participants.delete(participant.id);void nextTick(()=>{syncConfiguredIssues();syncFieldDiagnostics()})}};const setFieldDiagnostic=(id,issue)=>{if(issue===null)fieldDiagnostics.delete(id);else fieldDiagnostics.set(id,issue);void nextTick(syncFieldDiagnostics)};const submit=payload=>{const handler=props.onSubmit;if(handler===void 0)return;const target=connection.value;if(target===null)return;const settle=resolved=>{if(typeof resolved!=="object"||resolved===null||resolved.ok!==false){return{ok:true}}const issues=resolveIssueInputs(target,"server",resolved.issues??[]);const failure=resolved.failure??(issues.length===0?submissionErrorFailure():void 0);return{ok:false,...failure===void 0?{}:{failure},...issues.length===0?{}:{issues}}};let result;try{const candidate=handler(toFormSubmitEvent(payload));if(isPromiseLike(candidate)){return Promise.resolve(candidate).then(settle,error=>({ok:false,failure:mapSubmissionError(props.mapSubmitError,error)}))}result=candidate}catch(error){return{ok:false,failure:mapSubmissionError(props.mapSubmitError,error)}}return settle(result)};const configuration=()=>({...summary.value===null?{}:{summary:summary.value},renderSummaryContent:false,manageSummaryVisibility:false,...props.schema===void 0?{}:{schema:props.schema},...props.validate===void 0?{}:{validate:props.validate},validateOn:props.validateOn,revalidateOn:props.revalidateOn,...props.onSubmit===void 0?{}:{onSubmit:submit},onReset:()=>{emit("reset");void nextTick(syncFieldDiagnostics)},onStateChange:next=>{emit("stateChange",next)}});syncConfiguredIssues=()=>{const target=connection.value;if(target===null)return;target.replaceIssues("form",resolveIssueInputs(target,"form",props.issues))};syncFieldDiagnostics=()=>{connection.value?.replaceIssues("field",[...fieldDiagnostics.values()])};const mount=()=>{if(root.value===null)return;connection.value?.destroy();connection.value=createForm({form:root.value,...configuration()});for(const registered of participants.values()){registered.unregister=connection.value.registerParticipant(registered.participant)}syncConfiguredIssues();syncFieldDiagnostics();emit("stateChange",connection.value.state)};const mountTask=useNextTickTask(mount);onMounted(mountTask.schedule);onBeforeUnmount(()=>{mountTask.cancel();connection.value?.destroy();connection.value=null});watch([summary,()=>props.schema,()=>props.validate,()=>[...props.validateOn],()=>[...props.revalidateOn],()=>props.onSubmit,()=>props.mapSubmitError],()=>{void nextTick(()=>connection.value?.reconfigure(configuration()))});watch(()=>props.issues,()=>{void nextTick(syncConfiguredIssues)},{deep:true});const actions={submitStarted:()=>connection.value?.submitStarted()??null,submitSucceeded:generation=>connection.value?.submitSucceeded(generation)??false,submitFailed:(generation,result)=>connection.value?.submitFailed(generation,result)??false,replaceIssues:(source,issues)=>connection.value?.replaceIssues(source,issues)??false,reinitialize:options=>connection.value?.reinitialize(options),reset:()=>connection.value?.reset()};const formContext={summary,summaryId,register,setFieldDiagnostic,connection};provide(formContextKey,formContext);const validation=useFormSelectorFromContext(formContext,()=>current=>current.validation);const submission=useFormSelectorFromContext(formContext,()=>current=>current.submission);const selectedState=useFormSelectorFromContext(formContext,()=>current=>current);const valid=useFormSelectorFromContext(formContext,()=>current=>current.valid);const touched=useFormSelectorFromContext(formContext,()=>current=>current.touched);const dirty=useFormSelectorFromContext(formContext,()=>current=>current.dirty);const slotProps=Object.freeze({get state(){return selectedState.value},get validation(){return validation.value},get submission(){return submission.value},get valid(){return valid.value},get touched(){return touched.value},get dirty(){return dirty.value},get submitted(){return submission.value.count>0},get submitCount(){return submission.value.count},...actions});expose(actions);return()=>h("form",mergeProps(attrs,{ref:element=>{root.value=element},"data-scope":"form","data-part":"root","data-validation-status":validation.value.status,"data-submission-status":submission.value.status}),slots["default"]?.(slotProps)??[])}});const FormRoot=FormRootImpl;function toFormSubmitEvent(payload){return Object.freeze({formData:payload.formData,values:payload.values,submitter:payload.submitter,state:payload.state,reinitialize:payload.reinitialize,nativeEvent:payload.event,get defaultPrevented(){return payload.event.defaultPrevented},preventDefault:()=>payload.event.preventDefault(),stopPropagation:()=>payload.event.stopPropagation(),stopImmediatePropagation:()=>payload.event.stopImmediatePropagation()})}function isPromiseLike(value){return typeof value==="object"&&value!==null&&"then"in value&&typeof value.then==="function"}function resolveIssueInputs(target,source,input){const state=target.getSnapshot().state;return Object.freeze(input.map((issue,index)=>{const owner=issue.path===void 0?null:getFormFieldIDByPath(state,issue.path);const relatedFieldIds=new Set;for(const path of issue.relatedPaths??[]){const related2=getFormFieldIDByPath(state,path);if(related2!==null&&related2!==owner)relatedFieldIds.add(related2)}const related=Object.freeze([...relatedFieldIds]);return Object.freeze({id:issue.id??`form-${source}-issue-${index+1}`,message:issue.message,source,...owner===null?{}:{fieldId:owner},...related.length===0?{}:{relatedFieldIds:related}})}))}function mapSubmissionError(mapper,reason){if(mapper!==void 0){try{const mapped=mapper(reason);if(mapped!==void 0)return Object.freeze({message:mapped.message})}catch{}}return submissionErrorFailure()}function submissionErrorFailure(){return Object.freeze({message:"Form submission failed."})}export{FormRoot};
2
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/root.ts"],"mappings":"AAAA,OAKE,eACK,oBACP,OACE,gBAIA,WACA,SACA,UACA,gBACA,MACA,QACA,EACA,eACK,MAeP,OAAS,cAAiB,sBAC1B,OAAS,oBAAuB,gCAChC,OAIE,yBACK,sBACP,OAA2B,eAAgB,+BAAkC,eAO7E,MAAM,aAAe,gBAAgB,CACnC,KAAM,kBACN,aAAc,MACd,MAAO,CACL,OAAQ,CAAE,KAAM,MAA8C,QAAS,IAAM,CAAA,CAAE,EAC/E,OAAQ,CAAE,KAAM,OAAgC,QAAS,MAAS,EAClE,SAAU,CAAE,KAAM,SAA2C,QAAS,MAAS,EAC/E,WAAY,CACV,KAAM,MACN,QAAS,IAAM,CAAA,GAEjB,aAAc,CACZ,KAAM,MACN,QAAS,IAAM,CAAC,OAAO,GAEzB,SAAU,CAAE,KAAM,SAAyC,QAAS,MAAS,EAC7E,eAAgB,CAAE,KAAM,SAA6C,QAAS,MAAS,GAEzF,MAAO,CACL,MAAO,IAAe,KACtB,YAAc,QAA+B,MAE/C,MAAO,OACP,MAAM,MAAO,CAAE,MAAO,KAAM,OAAQ,KAAK,EAAE,CACzC,MAAM,KAAO,WAAmC,IAAI,EACpD,MAAM,QAAU,WAA+B,IAAI,EACnD,MAAM,UAAY,GAAG,UAAS,CAAE,WAChC,MAAM,WAAa,WAA0C,IAAI,EACjE,MAAM,aAAe,IAAI,IACzB,MAAM,iBAAmB,IAAI,IAC7B,IAAI,qBAAuB,IAAW,CAAE,EACxC,IAAI,qBAAuB,IAAW,CAAE,EAExC,MAAM,SAAY,aAAsD,CACtE,MAAM,SAAW,aAAa,IAAI,YAAY,EAAE,EAChD,UAAU,aAAY,EACtB,MAAM,WAAoC,CAAE,WAAW,EACvD,aAAa,IAAI,YAAY,GAAI,UAAU,EAC3C,GAAI,WAAW,QAAU,KAAM,WAAW,WAAa,WAAW,MAAM,oBAAoB,WAAW,EACvG,KAAK,SAAS,IAAK,CACjB,qBAAoB,EACpB,qBAAoB,CACtB,CAAC,EACD,MAAO,IAAW,CAChB,GAAI,aAAa,IAAI,YAAY,EAAE,IAAM,WAAY,OACrD,WAAW,aAAY,EACvB,aAAa,OAAO,YAAY,EAAE,EAClC,KAAK,SAAS,IAAK,CACjB,qBAAoB,EACpB,qBAAoB,CACtB,CAAC,CACH,CACF,EACA,MAAM,mBAAqB,CAAC,GAAY,QAAiC,CACvE,GAAI,QAAU,KAAM,iBAAiB,OAAO,EAAE,OACzC,iBAAiB,IAAI,GAAI,KAAK,EACnC,KAAK,SAAS,oBAAoB,CACpC,EACA,MAAM,OACJ,SAC0E,CAC1E,MAAM,QAAU,MAAM,SACtB,GAAI,UAAY,OAAW,OAC3B,MAAM,OAAS,WAAW,MAC1B,GAAI,SAAW,KAAM,OACrB,MAAM,OAAU,UAA2D,CACzE,GAAI,OAAO,WAAa,UAAY,WAAa,MAAQ,SAAS,KAAO,MAAO,CAC9E,MAAO,CAAE,GAAI,IAAI,CACnB,CACA,MAAM,OAAS,mBAAmB,OAAQ,SAAU,SAAS,QAAU,CAAA,CAAE,EACzE,MAAM,QAAU,SAAS,UACnB,OAAO,SAAW,EAAI,uBAAsB,EAAK,QACvD,MAAO,CACL,GAAI,MACJ,GAAI,UAAY,OAAY,CAAA,EAAK,CAAE,OAAO,EAC1C,GAAI,OAAO,SAAW,EAAI,CAAA,EAAK,CAAE,MAAM,EAE3C,EACA,IAAI,OACJ,GAAI,CACF,MAAM,UAAY,QAAQ,kBAAkB,OAAO,CAAC,EACpD,GAAI,cAAc,SAAS,EAAG,CAC5B,OAAO,QAAQ,QAAQ,SAAS,EAAE,KAChC,OACC,QAAoB,CACnB,GAAI,MACJ,QAAS,mBAAmB,MAAM,eAAgB,KAAK,GACvD,CAEN,CACA,OAAS,SACX,OAAS,MAAO,CACd,MAAO,CACL,GAAI,MACJ,QAAS,mBAAmB,MAAM,eAAgB,KAAK,EAE3D,CACA,OAAO,OAAO,MAAM,CACtB,EACA,MAAM,cAAgB,KAAO,CAC3B,GAAI,QAAQ,QAAU,KAAO,CAAA,EAAK,CAAE,QAAS,QAAQ,KAAK,EAC1D,qBAAsB,MACtB,wBAAyB,MACzB,GAAI,MAAM,SAAW,OAAY,CAAA,EAAK,CAAE,OAAQ,MAAM,MAAM,EAC5D,GAAI,MAAM,WAAa,OAAY,CAAA,EAAK,CAAE,SAAU,MAAM,QAAQ,EAClE,WAAY,MAAM,WAClB,aAAc,MAAM,aACpB,GAAI,MAAM,WAAa,OAAY,CAAA,EAAK,CAAE,SAAU,MAAM,EAC1D,QAAS,IAAK,CACZ,KAAK,OAAO,EACZ,KAAK,SAAS,oBAAoB,CACpC,EACA,cAAgB,MAAmB,CACjC,KAAK,cAAe,IAAI,CAC1B,IAEF,qBAAuB,IAAW,CAChC,MAAM,OAAS,WAAW,MAC1B,GAAI,SAAW,KAAM,OACrB,OAAO,cAAc,OAAQ,mBAAmB,OAAQ,OAAQ,MAAM,MAAM,CAAC,CAC/E,EACA,qBAAuB,IAAW,CAChC,WAAW,OAAO,cAAc,QAAS,CAAC,GAAG,iBAAiB,OAAM,CAAE,CAAC,CACzE,EACA,MAAM,MAAQ,IAAW,CACvB,GAAI,KAAK,QAAU,KAAM,OACzB,WAAW,OAAO,QAAO,EACzB,WAAW,MAAQ,WAAW,CAC5B,KAAM,KAAK,MACX,GAAG,cAAa,EACjB,EACD,UAAW,cAAc,aAAa,OAAM,EAAI,CAC9C,WAAW,WAAa,WAAW,MAAM,oBAAoB,WAAW,WAAW,CACrF,CACA,qBAAoB,EACpB,qBAAoB,EACpB,KAAK,cAAe,WAAW,MAAM,KAAK,CAC5C,EACA,MAAM,UAAY,gBAAgB,KAAK,EAEvC,UAAU,UAAU,QAAQ,EAC5B,gBAAgB,IAAK,CACnB,UAAU,OAAM,EAChB,WAAW,OAAO,QAAO,EACzB,WAAW,MAAQ,IACrB,CAAC,EACD,MAAM,CACJ,QACA,IAAM,MAAM,OACZ,IAAM,MAAM,SACZ,IAAM,CAAC,GAAG,MAAM,UAAU,EAC1B,IAAM,CAAC,GAAG,MAAM,YAAY,EAC5B,IAAM,MAAM,SACZ,IAAM,MAAM,gBACX,IAAK,CACN,KAAK,SAAS,IAAM,WAAW,OAAO,YAAY,cAAa,CAAE,CAAC,CACpE,CAAC,EACD,MAAM,IAAM,MAAM,OAAQ,IAAK,CAAG,KAAK,SAAS,oBAAoB,CAAG,EAAG,CAAE,KAAM,IAAI,CAAE,EAExF,MAAM,QAAU,CACd,cAAe,IAAqB,WAAW,OAAO,cAAa,GAAM,KACzE,gBAAkB,YAAgC,WAAW,OAAO,gBAAgB,UAAU,GAAK,MACnG,aAAc,CACZ,WACA,SACY,WAAW,OAAO,aAAa,WAAY,MAAM,GAAK,MACpE,cAAe,CAAC,OAAyB,SAA0C,WAAW,OAAO,cAAc,OAAQ,MAAM,GAAK,MACtI,aAAe,SAA4C,WAAW,OAAO,aAAa,OAAO,EACjG,MAAO,IAAY,WAAW,OAAO,MAAK,GAE5C,MAAM,YAA2B,CAC/B,QACA,UACA,SACA,mBACA,YAEF,QAAqB,eAAgB,WAAW,EAChD,MAAM,WAAa,2BACjB,YACA,IAAO,SAAY,QAAQ,UAAU,EAEvC,MAAM,WAAa,2BACjB,YACA,IAAO,SAAY,QAAQ,UAAU,EAEvC,MAAM,cAAgB,2BAA2B,YAAa,IAAO,SAAY,OAAO,EACxF,MAAM,MAAQ,2BAA2B,YAAa,IAAO,SAAY,QAAQ,KAAK,EACtF,MAAM,QAAU,2BAA2B,YAAa,IAAO,SAAY,QAAQ,OAAO,EAC1F,MAAM,MAAQ,2BAA2B,YAAa,IAAO,SAAY,QAAQ,KAAK,EACtF,MAAM,UAA+B,OAAO,OAAO,CACjD,IAAI,OAAK,CAAK,OAAO,cAAc,KAAO,EAC1C,IAAI,YAAU,CAAK,OAAO,WAAW,KAAO,EAC5C,IAAI,YAAU,CAAK,OAAO,WAAW,KAAO,EAC5C,IAAI,OAAK,CAAK,OAAO,MAAM,KAAO,EAClC,IAAI,SAAO,CAAK,OAAO,QAAQ,KAAO,EACtC,IAAI,OAAK,CAAK,OAAO,MAAM,KAAO,EAClC,IAAI,WAAS,CAAK,OAAO,WAAW,MAAM,MAAQ,CAAG,EACrD,IAAI,aAAW,CAAK,OAAO,WAAW,MAAM,KAAO,EACnD,GAAG,QACJ,EACD,OAAO,OAAO,EAEd,MAAO,IAAkB,EAAE,OAAQ,WAAW,MAAO,CACnD,IAAM,SAAoB,CAAG,KAAK,MAAQ,OAAmC,EAC7E,aAAc,OACd,YAAa,OACb,yBAA0B,WAAW,MAAM,OAC3C,yBAA0B,WAAW,MAAM,OAC5C,EAAG,MAAM,SAAS,IAAI,SAAS,GAAK,CAAA,CAAE,CACzC,EACD,EAEM,MAAM,SAAW,aAExB,SAAS,kBACP,QAAqC,CAErC,OAAO,OAAO,OAAO,CACnB,SAAU,QAAQ,SAClB,OAAQ,QAAQ,OAChB,UAAW,QAAQ,UACnB,MAAO,QAAQ,MACf,aAAc,QAAQ,aACtB,YAAa,QAAQ,MACrB,IAAI,kBAAgB,CAAK,OAAO,QAAQ,MAAM,gBAAkB,EAChE,eAAgB,IAAM,QAAQ,MAAM,eAAc,EAClD,gBAAiB,IAAM,QAAQ,MAAM,gBAAe,EACpD,yBAA0B,IAAM,QAAQ,MAAM,yBAAwB,EACvE,CACH,CAEA,SAAS,cAAc,MAAc,CACnC,OAAO,OAAO,QAAU,UACnB,QAAU,MACV,SAAU,OACV,OAAO,MAAM,OAAS,UAC7B,CAEA,SAAS,mBACP,OACA,OACA,MAAgC,CAEhC,MAAM,MAAQ,OAAO,YAAW,EAAG,MACnC,OAAO,OAAO,OAAO,MAAM,IAAI,CAAC,MAAO,QAAS,CAC9C,MAAM,MAAQ,MAAM,OAAS,OAAY,KAAO,qBAAqB,MAAO,MAAM,IAAI,EACtF,MAAM,gBAAkB,IAAI,IAC5B,UAAW,QAAQ,MAAM,cAAgB,CAAA,EAAI,CAC3C,MAAMA,SAAU,qBAAqB,MAAO,IAAI,EAChD,GAAIA,WAAY,MAAQA,WAAY,MAAO,gBAAgB,IAAIA,QAAO,CACxE,CACA,MAAM,QAAU,OAAO,OAAO,CAAC,GAAG,eAAe,CAAC,EAClD,OAAO,OAAO,OAAO,CACnB,GAAI,MAAM,IAAM,QAAQ,MAAM,UAAU,MAAQ,CAAC,GACjD,QAAS,MAAM,QACf,OACA,GAAI,QAAU,KAAO,CAAA,EAAK,CAAE,QAAS,KAAK,EAC1C,GAAI,QAAQ,SAAW,EAAI,CAAA,EAAK,CAAE,gBAAiB,OAAO,EAC3D,CACH,CAAC,CAAC,CACJ,CAEA,SAAS,mBACP,OACA,OAAe,CAEf,GAAI,SAAW,OAAW,CACxB,GAAI,CACF,MAAM,OAAS,OAAO,MAAM,EAC5B,GAAI,SAAW,OAAW,OAAO,OAAO,OAAO,CAAE,QAAS,OAAO,OAAO,CAAE,CAC5E,MAAQ,CAER,CACF,CACA,OAAO,uBAAsB,CAC/B,CAEA,SAAS,wBAAsB,CAC7B,OAAO,OAAO,OAAO,CACnB,QAAS,0BACV,CACH","names":["related"],"file":"root.js"}
@@ -0,0 +1,7 @@
1
+ import type { FormSelectorFunction, FormSubscribeOptions, FormFieldSelectorFunction, FormFieldController, FormSelectorComponent, FormFieldSelectorComponent } from './contracts.js';
2
+ import { type ShallowRef } from 'vue';
3
+ export declare function useFormSelector<Selected>(selector: FormSelectorFunction<Selected>, options?: FormSubscribeOptions<Selected>): Readonly<ShallowRef<Selected>>;
4
+ export declare function useFormFieldSelector<Selected>(id: string, selector: FormFieldSelectorFunction<Selected>, options?: FormSubscribeOptions<Selected>): Readonly<ShallowRef<Selected>>;
5
+ export declare function useFormFieldController(id: string): FormFieldController;
6
+ export declare const FormSelector: FormSelectorComponent;
7
+ export declare const FormFieldSelector: FormFieldSelectorComponent;
@@ -0,0 +1,2 @@
1
+ import{defineComponent}from"vue";import{useFormContext,useFormSelectorFromContext,useFormFieldSelectorFromContext}from"./context.js";function useFormSelector(selector,options={}){const context=useFormContext("useFormSelector");return useFormSelectorFromContext(context,()=>selector,()=>options.equals??Object.is)}function useFormFieldSelector(id,selector,options={}){const context=useFormContext("useFormFieldSelector");return useFormFieldSelectorFromContext(context,()=>id,()=>selector,()=>options.equals??Object.is)}function useFormFieldController(id){const context=useFormContext("useFormFieldController");const state=useFormFieldSelectorFromContext(context,()=>id,()=>field=>field);return Object.freeze({state,setMeta:meta=>context.connection.value?.setFieldMeta(id,meta)??false,replaceIssues:(source,issues)=>context.connection.value?.replaceFieldIssues(id,source,issues)??false,upsertIssue:issue=>context.connection.value?.upsertFieldIssue(id,issue)??false,removeIssue:issueId=>context.connection.value?.removeFieldIssue(id,issueId)??false,clearIssues:source=>context.connection.value?.clearFieldIssues(id,source)??false})}const FormSelectorRuntime=defineComponent({name:"SectileFormSelector",props:{select:{type:Function,required:true},equals:{type:Function,default:Object.is}},slots:Object,setup(props,{slots}){const context=useFormContext("FormSelector");const selected=useFormSelectorFromContext(context,()=>props.select,()=>props.equals);return()=>slots["default"]?.({selected:selected.value})??[]}});const FormSelector=FormSelectorRuntime;const FormFieldSelectorRuntime=defineComponent({name:"SectileFormFieldSelector",props:{id:{type:String,required:true},select:{type:Function,required:true},equals:{type:Function,default:Object.is}},slots:Object,setup(props,{slots}){const context=useFormContext("FormFieldSelector");const selected=useFormFieldSelectorFromContext(context,()=>props.id,()=>props.select,()=>props.equals);return()=>slots["default"]?.({selected:selected.value})??[]}});const FormFieldSelector=FormFieldSelectorRuntime;export{FormFieldSelector,FormSelector,useFormFieldController,useFormFieldSelector,useFormSelector};
2
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/selectors.ts"],"mappings":"AAUA,OAEE,oBAIK,MACP,OAAS,eAAgB,2BAA4B,oCAAuC,eAGtF,SAAU,gBACd,SACA,QAA0C,CAAA,EAAE,CAE5C,MAAM,QAAU,eAAe,iBAAiB,EAChD,OAAO,2BACL,QACA,IAAM,SACN,IAAM,QAAQ,QAAU,OAAO,EAAE,CAErC,CAEM,SAAU,qBACd,GACA,SACA,QAA0C,CAAA,EAAE,CAE5C,MAAM,QAAU,eAAe,sBAAsB,EACrD,OAAO,gCACL,QACA,IAAM,GACN,IAAM,SACN,IAAM,QAAQ,QAAU,OAAO,EAAE,CAErC,CAEM,SAAU,uBAAuB,GAAU,CAC/C,MAAM,QAAU,eAAe,wBAAwB,EACvD,MAAM,MAAQ,gCAAgC,QAAS,IAAM,GAAI,IAAO,OAAU,KAAK,EACvF,OAAO,OAAO,OAAO,CACnB,MACA,QAAU,MACR,QAAQ,WAAW,OAAO,aAAa,GAAI,IAAI,GAAK,MAEtD,cAAe,CAAC,OAAyB,SACvC,QAAQ,WAAW,OAAO,mBAAmB,GAAI,OAAQ,MAAM,GAAK,MAEtE,YAAc,OACZ,QAAQ,WAAW,OAAO,iBAAiB,GAAI,KAAK,GAAK,MAE3D,YAAc,SACZ,QAAQ,WAAW,OAAO,iBAAiB,GAAI,OAAO,GAAK,MAE7D,YAAc,QACZ,QAAQ,WAAW,OAAO,iBAAiB,GAAI,MAAM,GAAK,MAE7D,CACH,CAEA,MAAM,oBAAsB,gBAAgB,CAC1C,KAAM,sBACN,MAAO,CACL,OAAQ,CAAE,KAAM,SAAqD,SAAU,IAAI,EACnF,OAAQ,CAAE,KAAM,SAAqE,QAAS,OAAO,EAAE,GAEzG,MAAO,OACP,MAAM,MAAO,CAAE,KAAK,EAAE,CACpB,MAAM,QAAU,eAAe,cAAc,EAC7C,MAAM,SAAW,2BAA2B,QAAS,IAAM,MAAM,OAAQ,IAAM,MAAM,MAAM,EAC3F,MAAO,IAAkB,MAAM,SAAS,IAAI,CAAE,SAAU,SAAS,KAAK,CAAE,GAAK,CAAA,CAC/E,EACD,EAEM,MAAM,aAAe,oBAE5B,MAAM,yBAA2B,gBAAgB,CAC/C,KAAM,2BACN,MAAO,CACL,GAAI,CAAE,KAAM,OAAQ,SAAU,IAAI,EAClC,OAAQ,CAAE,KAAM,SAA0D,SAAU,IAAI,EACxF,OAAQ,CAAE,KAAM,SAAqE,QAAS,OAAO,EAAE,GAEzG,MAAO,OACP,MAAM,MAAO,CAAE,KAAK,EAAE,CACpB,MAAM,QAAU,eAAe,mBAAmB,EAClD,MAAM,SAAW,gCACf,QACA,IAAM,MAAM,GACZ,IAAM,MAAM,OACZ,IAAM,MAAM,MAAM,EAEpB,MAAO,IAAkB,MAAM,SAAS,IAAI,CAAE,SAAU,SAAS,KAAK,CAAE,GAAK,CAAA,CAC/E,EACD,EAEM,MAAM,kBAAoB","names":[],"file":"selectors.js"}