@sectile/vue 0.18.0 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) 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/{internal/form-control.js → form/control.js} +1 -1
  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/grid.js +1 -1
  58. package/dist/grid.js.map +1 -1
  59. package/dist/index.d.ts +10 -10
  60. package/dist/index.js +1 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/input/decimal-input.js.map +1 -0
  63. package/dist/input/native-field.js +2 -0
  64. package/dist/input/native-field.js.map +1 -0
  65. package/dist/input/native-input.js.map +1 -0
  66. package/dist/input/native-text-state.d.ts +2 -0
  67. package/dist/input/native-text-state.js +2 -0
  68. package/dist/input/native-text-state.js.map +1 -0
  69. package/dist/internal/cascade-choice.d.ts +1 -1
  70. package/dist/internal/cascade-choice.js +1 -1
  71. package/dist/internal/cascade-choice.js.map +1 -1
  72. package/dist/internal/collection.d.ts +2 -0
  73. package/dist/internal/collection.js +1 -1
  74. package/dist/internal/collection.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/menu.js.map +1 -1
  80. package/dist/meter-group.js +1 -1
  81. package/dist/meter-group.js.map +1 -1
  82. package/dist/meter.js +1 -1
  83. package/dist/meter.js.map +1 -1
  84. package/dist/multi-thumb-slider.js +1 -1
  85. package/dist/multi-thumb-slider.js.map +1 -1
  86. package/dist/navigation-menu.d.ts +1 -1
  87. package/dist/navigation-menu.js +1 -1
  88. package/dist/number-field.d.ts +1 -1
  89. package/dist/number-field.js +1 -1
  90. package/dist/number-field.js.map +1 -1
  91. package/dist/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +1 -1
  92. package/dist/overlay/alert-dialog.js +2 -0
  93. package/dist/overlay/alert-dialog.js.map +1 -0
  94. package/dist/{dialog.d.ts → overlay/dialog.d.ts} +1 -1
  95. package/dist/overlay/dialog.js +2 -0
  96. package/dist/overlay/dialog.js.map +1 -0
  97. package/dist/{drawer.d.ts → overlay/drawer.d.ts} +1 -1
  98. package/dist/overlay/drawer.js +2 -0
  99. package/dist/overlay/drawer.js.map +1 -0
  100. package/dist/{popover.d.ts → overlay/popover.d.ts} +1 -1
  101. package/dist/overlay/popover.js +2 -0
  102. package/dist/overlay/popover.js.map +1 -0
  103. package/dist/overlay/popup.js +2 -0
  104. package/dist/overlay/popup.js.map +1 -0
  105. package/dist/{tooltip.d.ts → overlay/tooltip.d.ts} +1 -1
  106. package/dist/overlay/tooltip.js +2 -0
  107. package/dist/overlay/tooltip.js.map +1 -0
  108. package/dist/pin-input.js +1 -1
  109. package/dist/pin-input.js.map +1 -1
  110. package/dist/{internal → presence}/conditional-presence.js.map +1 -1
  111. package/dist/{internal → presence}/presence.js.map +1 -1
  112. package/dist/progress.js +1 -1
  113. package/dist/progress.js.map +1 -1
  114. package/dist/quantity-field.js +1 -1
  115. package/dist/quantity-field.js.map +1 -1
  116. package/dist/radio-group.d.ts +1 -1
  117. package/dist/radio-group.js +1 -1
  118. package/dist/radio-group.js.map +1 -1
  119. package/dist/select.d.ts +1 -1
  120. package/dist/select.js +1 -1
  121. package/dist/select.js.map +1 -1
  122. package/dist/slider.js +1 -1
  123. package/dist/slider.js.map +1 -1
  124. package/dist/spin-button.js +1 -1
  125. package/dist/spin-button.js.map +1 -1
  126. package/dist/switch.js +1 -1
  127. package/dist/switch.js.map +1 -1
  128. package/dist/tabs.d.ts +1 -1
  129. package/dist/tabs.js +1 -1
  130. package/dist/{internal/tabular-components.d.ts → tabular/components.d.ts} +1 -1
  131. package/dist/{internal/tabular-components.js → tabular/components.js} +1 -1
  132. package/dist/tabular/components.js.map +1 -0
  133. package/dist/tabular/context.d.ts +16 -0
  134. package/dist/tabular/context.js +2 -0
  135. package/dist/tabular/context.js.map +1 -0
  136. package/dist/{internal/tabular-profile.d.ts → tabular/controller.d.ts} +2 -32
  137. package/dist/tabular/controller.js +2 -0
  138. package/dist/tabular/controller.js.map +1 -0
  139. package/dist/{data-grid.d.ts → tabular/data-grid.d.ts} +7 -5
  140. package/dist/tabular/data-grid.js +2 -0
  141. package/dist/tabular/data-grid.js.map +1 -0
  142. package/dist/{data-table.d.ts → tabular/data-table.d.ts} +9 -36
  143. package/dist/tabular/data-table.js +2 -0
  144. package/dist/tabular/data-table.js.map +1 -0
  145. package/dist/{data-tree-grid.d.ts → tabular/data-tree-grid.d.ts} +7 -5
  146. package/dist/tabular/data-tree-grid.js +2 -0
  147. package/dist/tabular/data-tree-grid.js.map +1 -0
  148. package/dist/{internal/tabular-parts.d.ts → tabular/parts.d.ts} +2 -1
  149. package/dist/tabular/parts.js +2 -0
  150. package/dist/tabular/parts.js.map +1 -0
  151. package/dist/tabular/schema.d.ts +35 -0
  152. package/dist/tabular/schema.js +2 -0
  153. package/dist/tabular/schema.js.map +1 -0
  154. package/dist/tabular/source.d.ts +20 -0
  155. package/dist/tabular/source.js +2 -0
  156. package/dist/tabular/source.js.map +1 -0
  157. package/dist/tags-input.js +1 -1
  158. package/dist/tags-input.js.map +1 -1
  159. package/dist/{calendar.d.ts → temporal/calendar.d.ts} +21 -21
  160. package/dist/temporal/calendar.js +2 -0
  161. package/dist/temporal/calendar.js.map +1 -0
  162. package/dist/temporal/capabilities/calendar.d.ts +1 -0
  163. package/dist/temporal/capabilities/calendar.js +2 -0
  164. package/dist/temporal/capabilities/calendar.js.map +1 -0
  165. package/dist/temporal/capabilities/date-picker.d.ts +1 -0
  166. package/dist/temporal/capabilities/date-picker.js +2 -0
  167. package/dist/temporal/capabilities/date-picker.js.map +1 -0
  168. package/dist/temporal/capabilities/date-range-picker.d.ts +1 -0
  169. package/dist/temporal/capabilities/date-range-picker.js +2 -0
  170. package/dist/temporal/capabilities/date-range-picker.js.map +1 -0
  171. package/dist/temporal/capabilities/date-time-picker.d.ts +1 -0
  172. package/dist/temporal/capabilities/date-time-picker.js +2 -0
  173. package/dist/temporal/capabilities/date-time-picker.js.map +1 -0
  174. package/dist/temporal/capabilities/date-time-range-picker.d.ts +1 -0
  175. package/dist/temporal/capabilities/date-time-range-picker.js +2 -0
  176. package/dist/temporal/capabilities/date-time-range-picker.js.map +1 -0
  177. package/dist/temporal/capabilities/month-picker.d.ts +1 -0
  178. package/dist/temporal/capabilities/month-picker.js +2 -0
  179. package/dist/temporal/capabilities/month-picker.js.map +1 -0
  180. package/dist/temporal/capabilities/month-range-picker.d.ts +1 -0
  181. package/dist/temporal/capabilities/month-range-picker.js +2 -0
  182. package/dist/temporal/capabilities/month-range-picker.js.map +1 -0
  183. package/dist/temporal/capabilities/range-calendar.d.ts +1 -0
  184. package/dist/temporal/capabilities/range-calendar.js +2 -0
  185. package/dist/temporal/capabilities/range-calendar.js.map +1 -0
  186. package/dist/temporal/capabilities/year-picker.d.ts +1 -0
  187. package/dist/temporal/capabilities/year-picker.js +2 -0
  188. package/dist/temporal/capabilities/year-picker.js.map +1 -0
  189. package/dist/temporal/capabilities/year-range-picker.d.ts +1 -0
  190. package/dist/temporal/capabilities/year-range-picker.js +2 -0
  191. package/dist/temporal/capabilities/year-range-picker.js.map +1 -0
  192. package/dist/{internal/picker-capability.js → temporal/capability.js} +1 -1
  193. package/dist/temporal/capability.js.map +1 -0
  194. package/dist/{date-field.d.ts → temporal/date-field.d.ts} +1 -1
  195. package/dist/temporal/date-field.js +2 -0
  196. package/dist/temporal/date-field.js.map +1 -0
  197. package/dist/{date-picker.d.ts → temporal/date-picker.d.ts} +24 -24
  198. package/dist/temporal/date-picker.js +2 -0
  199. package/dist/temporal/date-picker.js.map +1 -0
  200. package/dist/{date-range-field.d.ts → temporal/date-range-field.d.ts} +1 -1
  201. package/dist/temporal/date-range-field.js +2 -0
  202. package/dist/temporal/date-range-field.js.map +1 -0
  203. package/dist/{date-range-picker.d.ts → temporal/date-range-picker.d.ts} +27 -27
  204. package/dist/temporal/date-range-picker.js +2 -0
  205. package/dist/temporal/date-range-picker.js.map +1 -0
  206. package/dist/{date-time-field.d.ts → temporal/date-time-field.d.ts} +1 -1
  207. package/dist/temporal/date-time-field.js +2 -0
  208. package/dist/temporal/date-time-field.js.map +1 -0
  209. package/dist/{date-time-picker.d.ts → temporal/date-time-picker.d.ts} +30 -30
  210. package/dist/temporal/date-time-picker.js +2 -0
  211. package/dist/temporal/date-time-picker.js.map +1 -0
  212. package/dist/{date-time-range-picker.d.ts → temporal/date-time-range-picker.d.ts} +39 -39
  213. package/dist/temporal/date-time-range-picker.js +2 -0
  214. package/dist/temporal/date-time-range-picker.js.map +1 -0
  215. package/dist/{month-picker.d.ts → temporal/month-picker.d.ts} +14 -14
  216. package/dist/temporal/month-picker.js +2 -0
  217. package/dist/temporal/month-picker.js.map +1 -0
  218. package/dist/{month-range-picker.d.ts → temporal/month-range-picker.d.ts} +17 -17
  219. package/dist/temporal/month-range-picker.js +2 -0
  220. package/dist/temporal/month-range-picker.js.map +1 -0
  221. package/dist/{internal/date-picker.d.ts → temporal/picker.d.ts} +1 -1
  222. package/dist/temporal/picker.js +2 -0
  223. package/dist/temporal/picker.js.map +1 -0
  224. package/dist/{range-calendar.d.ts → temporal/range-calendar.d.ts} +11 -11
  225. package/dist/temporal/range-calendar.js +2 -0
  226. package/dist/temporal/range-calendar.js.map +1 -0
  227. package/dist/temporal/temporal-provider.js.map +1 -0
  228. package/dist/{time-field.d.ts → temporal/time-field.d.ts} +1 -1
  229. package/dist/temporal/time-field.js +2 -0
  230. package/dist/temporal/time-field.js.map +1 -0
  231. package/dist/{time-range-field.d.ts → temporal/time-range-field.d.ts} +1 -1
  232. package/dist/temporal/time-range-field.js +2 -0
  233. package/dist/temporal/time-range-field.js.map +1 -0
  234. package/dist/{year-picker.d.ts → temporal/year-picker.d.ts} +16 -16
  235. package/dist/temporal/year-picker.js +2 -0
  236. package/dist/temporal/year-picker.js.map +1 -0
  237. package/dist/{year-range-picker.d.ts → temporal/year-range-picker.d.ts} +19 -19
  238. package/dist/temporal/year-range-picker.js +2 -0
  239. package/dist/temporal/year-range-picker.js.map +1 -0
  240. package/dist/text.js +1 -1
  241. package/dist/text.js.map +1 -1
  242. package/dist/toast.js +1 -1
  243. package/dist/toggle-group.js +1 -1
  244. package/dist/toggle-group.js.map +1 -1
  245. package/dist/tree-grid.d.ts +1 -1
  246. package/dist/tree-grid.js +1 -1
  247. package/dist/tree-grid.js.map +1 -1
  248. package/dist/tree-view.d.ts +1 -1
  249. package/dist/tree-view.js +1 -1
  250. package/dist/virtual/virtual-collection.js.map +1 -0
  251. package/dist/virtual/virtual-core.js +2 -0
  252. package/dist/virtual/virtual-core.js.map +1 -0
  253. package/dist/{virtual-grid.d.ts → virtual/virtual-grid.d.ts} +1 -1
  254. package/dist/virtual/virtual-grid.js +2 -0
  255. package/dist/virtual/virtual-grid.js.map +1 -0
  256. package/dist/virtual/virtual-list.js.map +1 -0
  257. package/dist/{virtual-masonry.d.ts → virtual/virtual-masonry.d.ts} +1 -1
  258. package/dist/virtual/virtual-masonry.js +2 -0
  259. package/dist/virtual/virtual-masonry.js.map +1 -0
  260. package/dist/{virtual-spatial.d.ts → virtual/virtual-spatial.d.ts} +1 -1
  261. package/dist/virtual/virtual-spatial.js +2 -0
  262. package/dist/virtual/virtual-spatial.js.map +1 -0
  263. package/dist/virtual-core.d.ts +1 -1
  264. package/dist/virtual-core.js +1 -1
  265. package/dist/virtual-list.d.ts +2 -2
  266. package/dist/virtual-list.js +1 -1
  267. package/package.json +94 -94
  268. package/dist/alert-dialog.js +0 -2
  269. package/dist/alert-dialog.js.map +0 -1
  270. package/dist/calendar.js +0 -2
  271. package/dist/calendar.js.map +0 -1
  272. package/dist/data-grid.js +0 -2
  273. package/dist/data-grid.js.map +0 -1
  274. package/dist/data-table.js +0 -2
  275. package/dist/data-table.js.map +0 -1
  276. package/dist/data-tree-grid.js +0 -2
  277. package/dist/data-tree-grid.js.map +0 -1
  278. package/dist/date-field.js +0 -2
  279. package/dist/date-field.js.map +0 -1
  280. package/dist/date-picker.js +0 -2
  281. package/dist/date-picker.js.map +0 -1
  282. package/dist/date-range-field.js +0 -2
  283. package/dist/date-range-field.js.map +0 -1
  284. package/dist/date-range-picker.js +0 -2
  285. package/dist/date-range-picker.js.map +0 -1
  286. package/dist/date-time-field.js +0 -2
  287. package/dist/date-time-field.js.map +0 -1
  288. package/dist/date-time-picker.js +0 -2
  289. package/dist/date-time-picker.js.map +0 -1
  290. package/dist/date-time-range-picker.js +0 -2
  291. package/dist/date-time-range-picker.js.map +0 -1
  292. package/dist/dialog.js +0 -2
  293. package/dist/dialog.js.map +0 -1
  294. package/dist/drawer.js +0 -2
  295. package/dist/drawer.js.map +0 -1
  296. package/dist/internal/calendar-capability.d.ts +0 -1
  297. package/dist/internal/calendar-capability.js +0 -2
  298. package/dist/internal/calendar-capability.js.map +0 -1
  299. package/dist/internal/date-picker-capability.d.ts +0 -1
  300. package/dist/internal/date-picker-capability.js +0 -2
  301. package/dist/internal/date-picker-capability.js.map +0 -1
  302. package/dist/internal/date-picker.js +0 -2
  303. package/dist/internal/date-picker.js.map +0 -1
  304. package/dist/internal/date-range-picker-capability.d.ts +0 -1
  305. package/dist/internal/date-range-picker-capability.js +0 -2
  306. package/dist/internal/date-range-picker-capability.js.map +0 -1
  307. package/dist/internal/date-time-picker-capability.d.ts +0 -1
  308. package/dist/internal/date-time-picker-capability.js +0 -2
  309. package/dist/internal/date-time-picker-capability.js.map +0 -1
  310. package/dist/internal/date-time-range-picker-capability.d.ts +0 -1
  311. package/dist/internal/date-time-range-picker-capability.js +0 -2
  312. package/dist/internal/date-time-range-picker-capability.js.map +0 -1
  313. package/dist/internal/decimal-input.js.map +0 -1
  314. package/dist/internal/form-context.js.map +0 -1
  315. package/dist/internal/form-control-inventory.js.map +0 -1
  316. package/dist/internal/form-control.js.map +0 -1
  317. package/dist/internal/form-presence-parts.js +0 -2
  318. package/dist/internal/form-presence-parts.js.map +0 -1
  319. package/dist/internal/month-picker-capability.d.ts +0 -1
  320. package/dist/internal/month-picker-capability.js +0 -2
  321. package/dist/internal/month-picker-capability.js.map +0 -1
  322. package/dist/internal/month-range-picker-capability.d.ts +0 -1
  323. package/dist/internal/month-range-picker-capability.js +0 -2
  324. package/dist/internal/month-range-picker-capability.js.map +0 -1
  325. package/dist/internal/native-field.js +0 -2
  326. package/dist/internal/native-field.js.map +0 -1
  327. package/dist/internal/native-input.js.map +0 -1
  328. package/dist/internal/picker-capability.js.map +0 -1
  329. package/dist/internal/popup.js +0 -2
  330. package/dist/internal/popup.js.map +0 -1
  331. package/dist/internal/range-calendar-capability.d.ts +0 -1
  332. package/dist/internal/range-calendar-capability.js +0 -2
  333. package/dist/internal/range-calendar-capability.js.map +0 -1
  334. package/dist/internal/tabular-components.js.map +0 -1
  335. package/dist/internal/tabular-parts.js +0 -2
  336. package/dist/internal/tabular-parts.js.map +0 -1
  337. package/dist/internal/tabular-profile.js +0 -2
  338. package/dist/internal/tabular-profile.js.map +0 -1
  339. package/dist/internal/virtual-collection.js.map +0 -1
  340. package/dist/internal/virtual-core.js +0 -2
  341. package/dist/internal/virtual-core.js.map +0 -1
  342. package/dist/internal/virtual-list.js.map +0 -1
  343. package/dist/internal/year-picker-capability.d.ts +0 -1
  344. package/dist/internal/year-picker-capability.js +0 -2
  345. package/dist/internal/year-picker-capability.js.map +0 -1
  346. package/dist/internal/year-range-picker-capability.d.ts +0 -1
  347. package/dist/internal/year-range-picker-capability.js +0 -2
  348. package/dist/internal/year-range-picker-capability.js.map +0 -1
  349. package/dist/month-picker.js +0 -2
  350. package/dist/month-picker.js.map +0 -1
  351. package/dist/month-range-picker.js +0 -2
  352. package/dist/month-range-picker.js.map +0 -1
  353. package/dist/popover.js +0 -2
  354. package/dist/popover.js.map +0 -1
  355. package/dist/range-calendar.js +0 -2
  356. package/dist/range-calendar.js.map +0 -1
  357. package/dist/temporal-provider.js.map +0 -1
  358. package/dist/time-field.js +0 -2
  359. package/dist/time-field.js.map +0 -1
  360. package/dist/time-range-field.js +0 -2
  361. package/dist/time-range-field.js.map +0 -1
  362. package/dist/tooltip.js +0 -2
  363. package/dist/tooltip.js.map +0 -1
  364. package/dist/virtual-grid.js +0 -2
  365. package/dist/virtual-grid.js.map +0 -1
  366. package/dist/virtual-masonry.js +0 -2
  367. package/dist/virtual-masonry.js.map +0 -1
  368. package/dist/virtual-spatial.js +0 -2
  369. package/dist/virtual-spatial.js.map +0 -1
  370. package/dist/year-picker.js +0 -2
  371. package/dist/year-picker.js.map +0 -1
  372. package/dist/year-range-picker.js +0 -2
  373. package/dist/year-range-picker.js.map +0 -1
  374. /package/dist/{internal/form-control-inventory.d.ts → form/control-inventory.d.ts} +0 -0
  375. /package/dist/{internal/form-control.d.ts → form/control.d.ts} +0 -0
  376. /package/dist/{internal → input}/decimal-input.d.ts +0 -0
  377. /package/dist/{internal → input}/decimal-input.js +0 -0
  378. /package/dist/{internal → input}/native-field.d.ts +0 -0
  379. /package/dist/{internal → input}/native-input.d.ts +0 -0
  380. /package/dist/{internal → input}/native-input.js +0 -0
  381. /package/dist/{internal → overlay}/popup.d.ts +0 -0
  382. /package/dist/{internal → presence}/conditional-presence.d.ts +0 -0
  383. /package/dist/{internal → presence}/conditional-presence.js +0 -0
  384. /package/dist/{internal → presence}/presence.d.ts +0 -0
  385. /package/dist/{internal → presence}/presence.js +0 -0
  386. /package/dist/{internal/picker-capability.d.ts → temporal/capability.d.ts} +0 -0
  387. /package/dist/{temporal-provider.d.ts → temporal/temporal-provider.d.ts} +0 -0
  388. /package/dist/{temporal-provider.js → temporal/temporal-provider.js} +0 -0
  389. /package/dist/{internal → virtual}/virtual-collection.d.ts +0 -0
  390. /package/dist/{internal → virtual}/virtual-collection.js +0 -0
  391. /package/dist/{internal → virtual}/virtual-core.d.ts +0 -0
  392. /package/dist/{internal → virtual}/virtual-list.d.ts +0 -0
  393. /package/dist/{internal → virtual}/virtual-list.js +0 -0
@@ -2,7 +2,7 @@ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
2
  import { type ComboboxItem as ComboboxItemDefinition, type ComboboxPolicies } from '@sectile/dom/combobox';
3
3
  import type { PositionBoundary, PositionOptions, PositionPadding, PositionStrategy, PositionTracking } from '@sectile/dom/position';
4
4
  import { type PrimitiveAs } from './primitive.js';
5
- import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
5
+ import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
6
6
  export interface ComboboxRootProps extends Omit<PositionOptions, 'arrowPadding'> {
7
7
  readonly items: readonly ComboboxItemDefinition<string>[];
8
8
  readonly modelValue?: string | null;
package/dist/combobox.js CHANGED
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCombobox}from"@sectile/dom/combobox";import{createTextState}from"@sectile/dom/text";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./internal/form-control.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./internal/presence.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const key=Symbol("SectileComboboxRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ComboboxRoot=defineComponent({name:"SectileComboboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},inputValue:{type:String,default:void 0},defaultInputValue:{type:String,default:""},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:inputValue":_value=>true,"update:open":_value=>true,highlight:_value=>true,accept:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const input=shallowRef();const popup=shallowRef();const connection=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localInput=shallowRef(props.inputValue??props.defaultInputValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(null);let proposedInputState=null;const controlled={value:useControlledStateInvariant("ComboboxRoot","modelValue",()=>props.modelValue),input:useControlledStateInvariant("ComboboxRoot","inputValue",()=>props.inputValue),open:useControlledStateInvariant("ComboboxRoot","open",()=>props.open)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,inputValue:props.inputValue??localInput.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const itemLabels=computed(()=>new Map(props.items.map(item=>[item.id,item.label])));const matchingQuery=computed(()=>{const fallback=state.value.inputValue;const text=connection.value?.getSnapshot().state.text;return text===void 0?fallback:text.composition===null?text.snapshot.text:text.composition.baseline.text});const matchesItem=id=>{const label=itemLabels.value.get(id);if(label===void 0)return false;const matches=props.policies?.matches;return matches===void 0||matches(label,matchingQuery.value,id)};const hasMatches=()=>{for(const item of props.items){if(matchesItem(item.id))return true}return false};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;localValue.value=snapshot.selection.selected[0]??null;localInput.value=snapshot.text.snapshot.text;localOpen.value=snapshot.popupOpen;highlighted.value=snapshot.cursor.current;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-combobox-id]").forEach(element=>{const id=element.dataset["sectileComboboxId"];if(id!==void 0)connection.value?.setItemAttributes(element,{id,disabled:element.dataset["disabled"]==="true"})})};const connect=()=>{connection.value?.disconnect();if(input.value===void 0)return;const items=props.items.map(item=>item.id);const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(items,requestedValue===null?[]:[requestedValue],highlighted.value,[],"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;localValue.value=value;highlighted.value=reconciled.current;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCombobox({input:input.value,...popup.value===void 0?{}:{popup:popup.value},items:props.items,manageVisibility:false,...props.policies===void 0?{}:{policies:props.policies},...controlled.value?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...controlled.input?{inputState:createTextState(props.inputValue)}:{defaultInputState:createTextState(localInput.value)},...controlled.open?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onInputStateChange:({value:value2})=>{proposedInputState=value2;localInput.value=value2.snapshot.text;emit("update:inputValue",value2.snapshot.text);if(!controlled.input)return;const proposal=value2;void nextTick(()=>{if(connection.value===void 0||proposedInputState!==proposal)return;if(props.inputValue!==proposal.snapshot.text)return;proposedInputState=null;syncControlledValues(proposal)})},onOpenChange:({value:value2})=>{localOpen.value=value2;emit("update:open",value2)},onHighlightedValueChange:({value:value2})=>{highlighted.value=value2;emit("highlight",value2)},onAccept:id=>emit("accept",id),onUpdate:refresh});connection.value.setInputAttributes(props.label);connection.value.setPopupAttributes(props.label);refreshItems();refresh()};let mounted=false;let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(key,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),connection:computed(()=>connection.value),matchesItem,hasMatches,registerInput:element=>{const changed=input.value!==element;input.value=element;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,{id,disabled})});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;connection.value?.disconnect();connection.value=void 0;proposedInputState=null});watch(()=>props.items,(items,previousItems)=>{if(!sameComboboxItems(items,previousItems))connect()});watch([()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking,()=>props.policies],connect);watch([()=>props.modelValue,()=>props.inputValue,()=>props.open],()=>{const inputState=controlled.input&&proposedInputState!==null&&proposedInputState.snapshot.text===props.inputValue?proposedInputState:controlled.input?createTextState(props.inputValue):void 0;proposedInputState=null;syncControlledValues(inputState)});const syncControlledValues=inputState=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.input?{inputState:inputState??createTextState(props.inputValue)}:{},...controlled.open?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"combobox","data-part":"root","data-state":state.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxInput=defineComponent({name:"SectileComboboxInput",inheritAttrs:false,props:{name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"input"},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot("ComboboxInput");const input=shallowRef(null);const participation=useNativeInputFormControl(input);const renderServerValue=typeof window==="undefined";const registerInput=node=>{input.value=node instanceof HTMLInputElement?node:null;root.registerInput(input.value??void 0)};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerInput,type:"text",role:"combobox",...renderServerValue?{value:root.state.value.inputValue}:{},name:props.name,form:props.form,required:props.required,disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":root.label.value,"aria-autocomplete":"list","aria-expanded":String(root.state.value.open),"data-scope":"combobox","data-part":"input"},participation.controlProps.value))}});const ComboboxContent=defineComponent({name:"SectileComboboxContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.connection.value?.render()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"combobox","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const ComboboxItem=defineComponent({name:"SectileComboboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",hidden:!root.matchesItem(props.value),"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-combobox-id":props.value,"data-disabled":state.value.disabled?"true":void 0,"data-scope":"combobox","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxEmpty=defineComponent({name:"SectileComboboxEmpty",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxEmpty");const active=computed(()=>!root.hasMatches());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,role:active.value?"status":void 0,"aria-live":active.value?void 0:"off",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"combobox","data-part":"empty","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(root.state.value)})}}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside ComboboxRoot.`);return root}function sameComboboxItems(items,previousItems){return items.length===previousItems.length&&items.every((item,index)=>{const previousItem=previousItems[index];return previousItem!==void 0&&item.id===previousItem.id&&item.label===previousItem.label})}export{ComboboxContent,ComboboxEmpty,ComboboxInput,ComboboxItem,ComboboxRoot};
1
+ import{computed,defineComponent,h,inject,mergeProps,nextTick,onBeforeUnmount,onMounted,provide,shallowRef,watch}from"vue";import{createCombobox}from"@sectile/dom/combobox";import{createTextState}from"@sectile/dom/text";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./form/control.js";import{reconcileCollectionState}from"./internal/collection.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{usePresence}from"./presence/presence.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const key=Symbol("SectileComboboxRoot");const partProps={as:{type:[String,Object,Function],default:"span"},asChild:{type:Boolean,default:false}};const ComboboxRoot=defineComponent({name:"SectileComboboxRoot",inheritAttrs:false,props:{items:{type:Array,required:true},modelValue:{type:String,default:void 0},defaultValue:{type:String,default:null},inputValue:{type:String,default:void 0},defaultInputValue:{type:String,default:""},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},label:{type:String,default:void 0},position:{type:Boolean,default:true},side:{type:String,default:"bottom"},align:{type:String,default:"start"},sideOffset:{type:Number,default:8},collisionPadding:{type:[Number,Object],default:8},collisionBoundary:{type:[String,Object],default:void 0},avoidCollisions:{type:Boolean,default:true},hideWhenDetached:{type:Boolean,default:false},strategy:{type:String,default:"absolute"},tracking:{type:String,default:"events"},policies:{type:Object,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true,"update:inputValue":_value=>true,"update:open":_value=>true,highlight:_value=>true,accept:_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const input=shallowRef();const popup=shallowRef();const connection=shallowRef();const matchingText=shallowRef();const localValue=shallowRef(props.modelValue!==void 0?props.modelValue:props.defaultValue);const localInput=shallowRef(props.inputValue??props.defaultInputValue);const localOpen=shallowRef(props.open??props.defaultOpen);const highlighted=shallowRef(null);let proposedInputState=null;const livePolicies={};Object.defineProperties(livePolicies,{matches:{get:()=>props.policies?.matches},boundary:{get:()=>props.policies?.boundary}});const controlled={value:useControlledStateInvariant("ComboboxRoot","modelValue",()=>props.modelValue),input:useControlledStateInvariant("ComboboxRoot","inputValue",()=>props.inputValue),open:useControlledStateInvariant("ComboboxRoot","open",()=>props.open)};const state=computed(()=>Object.freeze({value:props.modelValue!==void 0?props.modelValue:localValue.value,inputValue:props.inputValue??localInput.value,highlightedValue:highlighted.value,open:props.open??localOpen.value,disabled:props.disabled,readonly:props.readonly}));const itemLabels=computed(()=>new Map(props.items.map(item=>[item.id,item.label])));const matchingQuery=computed(()=>{const text=matchingText.value;return text===void 0?state.value.inputValue:text.composition===null?text.snapshot.text:text.composition.baseline.text});const matchesItem=id=>{const label=itemLabels.value.get(id);if(label===void 0)return false;const matches=props.policies?.matches;return matches===void 0||matches(label,matchingQuery.value,id)};const hasMatches=()=>{for(const item of props.items){if(matchesItem(item.id))return true}return false};const refresh=()=>{const snapshot=connection.value?.getSnapshot().state;if(snapshot===void 0)return;matchingText.value=snapshot.text;localValue.value=snapshot.selection.selected[0]??null;localInput.value=snapshot.text.snapshot.text;localOpen.value=snapshot.popupOpen;highlighted.value=snapshot.cursor.current;refreshItems()};const refreshItems=()=>{if(popup.value===void 0||connection.value===void 0)return;popup.value.querySelectorAll("[data-sectile-combobox-id]").forEach(element=>{const id=element.dataset["sectileComboboxId"];if(id!==void 0)connection.value?.setItemAttributes(element,{id,disabled:element.dataset["disabled"]==="true"})})};let mounted=false;let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;const connect=()=>{const previousText=connection.value?.getSnapshot().state.text;connection.value?.disconnect();if(input.value===void 0)return;const items=props.items.map(item=>item.id);const requestedValue=controlled.value?props.modelValue:localValue.value;const reconciled=reconcileCollectionState(items,requestedValue===null?[]:[requestedValue],highlighted.value,[],"single",{preserveNullCurrent:true});const value=reconciled.selected[0]??null;const inputState=controlled.input?proposedInputState!==null?proposedInputState:previousText!==void 0&&previousText.snapshot.text===props.inputValue?previousText:createTextState(props.inputValue):previousText??createTextState(localInput.value);localValue.value=value;highlighted.value=reconciled.current;if(controlled.value&&requestedValue!==value)emit("update:modelValue",value);connection.value=createCombobox({input:input.value,...popup.value===void 0?{}:{popup:popup.value},items:props.items,manageVisibility:false,policies:livePolicies,...controlled.value?{value}:{defaultValue:value},defaultHighlightedValue:reconciled.current,...controlled.input?{inputState}:{defaultInputState:inputState},...controlled.open?{open:props.open}:{defaultOpen:localOpen.value},disabled:props.disabled,readOnly:props.readonly,position:props.position,side:props.side,align:props.align,sideOffset:props.sideOffset,collisionPadding:props.collisionPadding,...props.collisionBoundary===void 0?{}:{collisionBoundary:props.collisionBoundary},avoidCollisions:props.avoidCollisions,hideWhenDetached:props.hideWhenDetached,strategy:props.strategy,tracking:props.tracking,onValueChange:({value:value2})=>{localValue.value=value2;emit("update:modelValue",value2)},onInputStateChange:({value:value2})=>{proposedInputState=value2;matchingText.value=value2;localInput.value=value2.snapshot.text;emit("update:inputValue",value2.snapshot.text);if(!controlled.input||value2.composition!==null)return;const proposal=value2;void nextTick(()=>{if(connection.value===void 0||proposedInputState!==proposal)return;proposedInputState=null;const text=props.inputValue;syncControlledValues(proposal.snapshot.text===text?proposal:createTextState(text))})},onOpenChange:({value:value2})=>{localOpen.value=value2;emit("update:open",value2)},onHighlightedValueChange:({value:value2})=>{highlighted.value=value2;emit("highlight",value2)},onAccept:id=>emit("accept",id),onUpdate:refresh});connection.value.setInputAttributes(props.label);connection.value.setPopupAttributes(props.label);refreshItems();refresh()};const requestConnect=()=>{if(inputComposing||reconnectPending){reconnectPending=true;return}connect()};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;connect()},0)};let connectScheduled=false;const scheduleConnect=()=>{if(!mounted||connectScheduled)return;connectScheduled=true;void nextTick(()=>{connectScheduled=false;if(mounted)connect()})};provide(key,{state,position:computed(()=>props.position),strategy:computed(()=>props.strategy),label:computed(()=>props.label),connection:computed(()=>connection.value),matchesItem,hasMatches,registerInput:element=>{const changed=input.value!==element;input.value=element;if(changed)scheduleConnect()},registerPopup:element=>{const changed=popup.value!==element;popup.value=element;if(changed)scheduleConnect()},registerItem:(element,id,disabled)=>connection.value?.setItemAttributes(element,{id,disabled}),setInputComposing});onMounted(()=>{mounted=true;connect()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;connection.value?.disconnect();connection.value=void 0;proposedInputState=null});watch(()=>props.items,(items,previousItems)=>{if(!sameComboboxItems(items,previousItems))requestConnect()});watch([()=>props.disabled,()=>props.readonly,()=>props.label,()=>props.position,()=>props.side,()=>props.align,()=>props.sideOffset,()=>props.collisionPadding,()=>props.collisionBoundary,()=>props.avoidCollisions,()=>props.hideWhenDetached,()=>props.strategy,()=>props.tracking],requestConnect);watch([()=>props.modelValue,()=>props.inputValue,()=>props.open],()=>{const inputState=controlled.input&&proposedInputState!==null&&proposedInputState.snapshot.text===props.inputValue?proposedInputState:controlled.input?createTextState(props.inputValue):void 0;proposedInputState=null;syncControlledValues(inputState)});const syncControlledValues=inputState=>{if(connection.value===void 0)return;const result=connection.value.syncControlledValues({...controlled.value?{value:props.modelValue}:{},...controlled.input?{inputState:inputState??createTextState(props.inputValue)}:{},...controlled.open?{open:props.open}:{}});if(!result.ok)throw new TypeError(result.error.message);refresh()};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"combobox","data-part":"root","data-state":state.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxInput=defineComponent({name:"SectileComboboxInput",inheritAttrs:false,props:{name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false},as:{type:[String,Object,Function],default:"input"},asChild:{type:Boolean,default:false}},setup(props,{attrs}){const root=useRoot("ComboboxInput");const input=shallowRef(null);const participation=useNativeInputFormControl(input);const renderServerValue=typeof window==="undefined";const registerInput=node=>{input.value=node instanceof HTMLInputElement?node:null;root.registerInput(input.value??void 0)};return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerInput,type:"text",role:"combobox",...renderServerValue?{value:root.state.value.inputValue}:{},name:props.name,form:props.form,required:props.required,disabled:root.state.value.disabled,readonly:root.state.value.readonly,"aria-label":root.label.value,"aria-autocomplete":"list","aria-expanded":String(root.state.value.open),onCompositionstart:()=>root.setInputComposing(true),onCompositionend:()=>root.setInputComposing(false),"data-scope":"combobox","data-part":"input"},participation.controlProps.value))}});const ComboboxContent=defineComponent({name:"SectileComboboxContent",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxContent");const element=shallowRef();const open=computed(()=>root.state.value.open);const present=usePresence(open,element);watch(present,async()=>{await nextTick();root.connection.value?.render()},{flush:"post"});const registerContent=node=>{const content=node instanceof HTMLElement?node:void 0;element.value=content;root.registerPopup(content)};return()=>{const exiting=!open.value&&present.value;return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:registerContent,role:"listbox",hidden:!present.value,"aria-label":root.label.value,...exiting?{inert:true,"aria-hidden":"true"}:{},style:root.position.value?{position:root.strategy.value,visibility:element.value===void 0?"hidden":void 0}:void 0,"data-scope":"combobox","data-part":"content","data-state":open.value?"open":"closed"}),{default:()=>slots["default"]?.(root.state.value)})}}});const ComboboxItem=defineComponent({name:"SectileComboboxItem",inheritAttrs:false,props:{value:{type:String,required:true},disabled:{type:Boolean,default:false},...partProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxItem");const state=computed(()=>({value:props.value,selected:root.state.value.value===props.value,highlighted:root.state.value.highlightedValue===props.value,disabled:root.state.value.disabled||props.disabled}));return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:node=>{if(node instanceof HTMLElement)root.registerItem(node,props.value,state.value.disabled)},role:"option",hidden:!root.matchesItem(props.value),"aria-selected":String(state.value.selected),"aria-disabled":state.value.disabled?"true":void 0,"data-sectile-combobox-id":props.value,"data-disabled":state.value.disabled?"true":void 0,"data-scope":"combobox","data-part":"item","data-selected":state.value.selected?"":void 0,"data-highlighted":state.value.highlighted?"":void 0}),{default:()=>slots["default"]?.(state.value)})}});const ComboboxEmpty=defineComponent({name:"SectileComboboxEmpty",inheritAttrs:false,props:{...partProps,...conditionalPresenceProps},slots:Object,setup(props,{attrs,slots}){const root=useRoot("ComboboxEmpty");const active=computed(()=>!root.hasMatches());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,role:active.value?"status":void 0,"aria-live":active.value?void 0:"off",hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{},"data-scope":"combobox","data-part":"empty","data-state":active.value?"visible":"hidden"}),{default:()=>slots["default"]?.(root.state.value)})}}});function useRoot(part){const root=inject(key);if(root===void 0)throw new TypeError(`${part} must be used inside ComboboxRoot.`);return root}function sameComboboxItems(items,previousItems){return items.length===previousItems.length&&items.every((item,index)=>{const previousItem=previousItems[index];return previousItem!==void 0&&item.id===previousItem.id&&item.label===previousItem.label})}export{ComboboxContent,ComboboxEmpty,ComboboxInput,ComboboxItem,ComboboxRoot};
2
2
  //# sourceMappingURL=combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/combobox.ts"],"mappings":"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","names":["value"],"file":"combobox.js"}
1
+ {"version":3,"sources":["../src/combobox.ts"],"mappings":"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","names":["value"],"file":"combobox.js"}
@@ -1,6 +1,6 @@
1
1
  import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
2
  import { type PrimitiveAs } from './primitive.js';
3
- import { type ConditionalPresenceProps } from './internal/conditional-presence.js';
3
+ import { type ConditionalPresenceProps } from './presence/conditional-presence.js';
4
4
  export interface DisclosureRootProps {
5
5
  readonly modelValue?: boolean;
6
6
  readonly defaultValue?: boolean;
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createDisclosureController,getDisclosureContentAttributes,getDisclosureTriggerAttributes}from"@sectile/dom/disclosure";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./internal/conditional-presence.js";const disclosureContextKey=Symbol("SectileDisclosure");const DisclosureRoot=defineComponent({name:"SectileDisclosureRoot",inheritAttrs:false,props:{modelValue:{type:Boolean,default:void 0},defaultValue:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},contentId:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("DisclosureRoot","modelValue",()=>props.modelValue);const generatedId=useHostId();const contentId=props.contentId??`sectile-disclosure-${generatedId}`;const controller=shallowRef(createController(controlled,controlled?props.modelValue:props.defaultValue,props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const open=controlled?props.modelValue:snapshot.value.state.open;controller.value=createController(controlled,open,props,emit);refresh()};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.disabled,()=>props.readonly],rebuild);const slotProps=computed(()=>Object.freeze({open:snapshot.value.state.open,disabled:props.disabled,readonly:props.readonly}));const toggle=()=>{if(controller.value.handleEvent("toggle"))refresh()};provide(disclosureContextKey,{slotProps,contentId,toggle});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"disclosure","data-part":"root","data-state":slotProps.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const DisclosureTrigger=defineComponent({name:"SectileDisclosureTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureTrigger");const attributes=computed(()=>getDisclosureTriggerAttributes({open:context.slotProps.value.open},{panelID:context.contentId,disabled:context.slotProps.value.disabled,readOnly:context.slotProps.value.readonly,native:true}));const handleClick=event=>{if(!event.defaultPrevented)context.toggle()};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"button"}:{},onClick:handleClick}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const DisclosureContent=defineComponent({name:"SectileDisclosureContent",inheritAttrs:false,props:{...conditionalPresenceProps,as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureContent");const active=computed(()=>context.slotProps.value.open);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);const attributes=computed(()=>getDisclosureContentAttributes({open:context.slotProps.value.open},{id:context.contentId}));return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,elementRef:presence.register,hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{}}),{default:()=>slots["default"]?.(context.slotProps.value)})}}});function useDisclosureContext(part){const context=inject(disclosureContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside DisclosureRoot.`);return context}function createController(controlled,open,props,emit){const result=createDisclosureController({...controlled?{open}:{defaultOpen:open},disabled:props.disabled,readOnly:props.readonly,onOpenChange:next=>emit("update:modelValue",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value}export{DisclosureContent,DisclosureRoot,DisclosureTrigger};
1
+ import{computed,defineComponent,h,inject,mergeProps,provide,shallowRef,watch}from"vue";import{createDisclosureController,getDisclosureContentAttributes,getDisclosureTriggerAttributes}from"@sectile/dom/disclosure";import{Primitive}from"./primitive.js";import{useHostId}from"./host-provider.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{conditionalPresenceProps,useConditionalPresence}from"./presence/conditional-presence.js";const disclosureContextKey=Symbol("SectileDisclosure");const DisclosureRoot=defineComponent({name:"SectileDisclosureRoot",inheritAttrs:false,props:{modelValue:{type:Boolean,default:void 0},defaultValue:{type:Boolean,default:false},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},contentId:{type:String,default:void 0},as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},emits:{"update:modelValue":_value=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("DisclosureRoot","modelValue",()=>props.modelValue);const generatedId=useHostId();const contentId=props.contentId??`sectile-disclosure-${generatedId}`;const controller=shallowRef(createController(controlled,controlled?props.modelValue:props.defaultValue,props,emit));const snapshot=shallowRef(controller.value.getSnapshot());const refresh=()=>{snapshot.value=controller.value.getSnapshot()};const rebuild=()=>{const open=controlled?props.modelValue:snapshot.value.state.open;controller.value=createController(controlled,open,props,emit);refresh()};watch(()=>props.modelValue,value=>{if(!controlled||value===void 0)return;const result=controller.value.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value});watch([()=>props.disabled,()=>props.readonly],rebuild);const slotProps=computed(()=>Object.freeze({open:snapshot.value.state.open,disabled:props.disabled,readonly:props.readonly}));const toggle=()=>{if(controller.value.handleEvent("toggle"))refresh()};provide(disclosureContextKey,{slotProps,contentId,toggle});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"disclosure","data-part":"root","data-state":slotProps.value.open?"open":"closed","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const DisclosureTrigger=defineComponent({name:"SectileDisclosureTrigger",inheritAttrs:false,props:{as:{type:[String,Object,Function],default:"button"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureTrigger");const attributes=computed(()=>getDisclosureTriggerAttributes({open:context.slotProps.value.open},{panelID:context.contentId,disabled:context.slotProps.value.disabled,readOnly:context.slotProps.value.readonly,native:true}));const handleClick=event=>{if(!event.defaultPrevented)context.toggle()};return()=>h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,...props.as==="button"&&!props.asChild?{type:"button"}:{},onClick:handleClick}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const DisclosureContent=defineComponent({name:"SectileDisclosureContent",inheritAttrs:false,props:{...conditionalPresenceProps,as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}},slots:Object,setup(props,{attrs,slots}){const context=useDisclosureContext("DisclosureContent");const active=computed(()=>context.slotProps.value.open);const forcePresent=computed(()=>props.forcePresent);const presence=useConditionalPresence(active,forcePresent);const attributes=computed(()=>getDisclosureContentAttributes({open:context.slotProps.value.open},{id:context.contentId}));return()=>{const inactivePresent=!active.value&&presence.present.value;return h(Primitive,mergeProps(attrs,attributes.value,{as:props.as,asChild:props.asChild,elementRef:presence.register,hidden:presence.hidden.value,...inactivePresent?{inert:true,"aria-hidden":"true"}:{}}),{default:()=>slots["default"]?.(context.slotProps.value)})}}});function useDisclosureContext(part){const context=inject(disclosureContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside DisclosureRoot.`);return context}function createController(controlled,open,props,emit){const result=createDisclosureController({...controlled?{open}:{defaultOpen:open},disabled:props.disabled,readOnly:props.readonly,onOpenChange:next=>emit("update:modelValue",next)});if(!result.ok)throw new TypeError(result.error.message);return result.value}export{DisclosureContent,DisclosureRoot,DisclosureTrigger};
2
2
  //# sourceMappingURL=disclosure.js.map
package/dist/editable.js CHANGED
@@ -1,2 +1,2 @@
1
- import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,ref,shallowRef,watch}from"vue";import{createEditable}from"@sectile/dom/editable";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./internal/form-control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{useNextTickTask}from"./internal/scheduled-task.js";const editableContextKey=Symbol("SectileEditable");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const EditableRoot=defineComponent({name:"SectileEditableRoot",inheritAttrs:false,props:{modelValue:{type:String,default:void 0},defaultValue:{type:String,default:""},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},submitOnBlur:{type:Boolean,default:false},policies:{type:Object,default:void 0},name:{type:String,default:void 0},label:{type:String,default:void 0},...partProps},emits:{"update:modelValue":_value=>true,"update:editing":_editing=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("EditableRoot","modelValue",()=>props.modelValue);const initial=controlled?props.modelValue:props.defaultValue;const snapshot=shallowRef({value:initial,draft:initial,editing:false});const root=shallowRef(null);const preview=shallowRef(null);const input=shallowRef(null);const editTrigger=shallowRef(null);const submitTrigger=shallowRef(null);const cancelTrigger=shallowRef(null);const multiline=ref(false);let connection=null;let mounted=false;const refresh=()=>{if(connection!==null)snapshot.value=connection.getSnapshot().state};const mount=()=>{if(!mounted||root.value===null||preview.value===null||input.value===null)return;connection?.disconnect();connection=createEditable({root:root.value,preview:preview.value,input:input.value,...editTrigger.value===null?{}:{editTrigger:editTrigger.value},...submitTrigger.value===null?{}:{submitTrigger:submitTrigger.value},...cancelTrigger.value===null?{}:{cancelTrigger:cancelTrigger.value},...controlled?{value:props.modelValue}:{defaultValue:snapshot.value.value},disabled:props.disabled,readOnly:props.readonly,submitOnBlur:props.submitOnBlur,...props.policies===void 0?{}:{policies:props.policies},...props.name===void 0?{}:{name:props.name},...props.label===void 0?{}:{label:props.label},onValueChange:value=>emit("update:modelValue",value),onEditingChange:editing=>emit("update:editing",editing),onUpdate:refresh});refresh()};const reset=()=>{queueMicrotask(()=>{const value=controlled?props.modelValue:initial;snapshot.value={value,draft:value,editing:false};mount()})};const mountTask=useNextTickTask(mount);onMounted(()=>{mounted=true;mount()});onBeforeUnmount(()=>{mounted=false;mountTask.cancel();connection?.disconnect();connection=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;const result=connection.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value.state});watch([()=>props.disabled,()=>props.readonly,()=>props.submitOnBlur,()=>props.policies],mountTask.schedule);const slotProps=computed(()=>Object.freeze({...snapshot.value,disabled:props.disabled,readonly:props.readonly}));provide(editableContextKey,{slotProps,root,preview,input,editTrigger,submitTrigger,cancelTrigger,multiline,reset});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{root.value=element},"data-scope":"editable","data-part":"root","data-state":slotProps.value.editing?"editing":"idle","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const EditableArea=defineComponent({name:"SectileEditableArea",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditableArea");return()=>renderPart(props,attrs,slots,context,"area")}});const EditablePreview=defineComponent({name:"SectileEditablePreview",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"span"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditablePreview");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context.preview.value=element},hidden:context.slotProps.value.editing,tabindex:context.slotProps.value.disabled?-1:0,"data-scope":"editable","data-part":"preview"}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const EditableInput=defineComponent({name:"SectileEditableInput",inheritAttrs:false,props:{multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false}},setup(props,{attrs}){const context=useEditableContext("EditableInput");const participation=useNativeInputFormControl(context.input,{reset:context.reset});context.multiline.value=props.multiline;return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element=>{context.input.value=element},...!props.multiline?{type:props.type}:{},name:props.name,form:props.form,required:props.required,value:context.slotProps.value.draft,hidden:!context.slotProps.value.editing,disabled:context.slotProps.value.disabled,readonly:context.slotProps.value.readonly,"data-scope":"editable","data-part":"input"},participation.controlProps.value))}});const EditableEditTrigger=createTrigger("Edit","editTrigger","edit-trigger",false);const EditableSubmitTrigger=createTrigger("Submit","submitTrigger","submit-trigger",true);const EditableCancelTrigger=createTrigger("Cancel","cancelTrigger","cancel-trigger",true);function createTrigger(label,key,part,editing){return defineComponent({name:`SectileEditable${label}Trigger`,inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"button"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext(`Editable${label}Trigger`);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context[key].value=element},...props.as==="button"&&!props.asChild?{type:"button"}:{},hidden:context.slotProps.value.editing!==editing,disabled:context.slotProps.value.disabled,"data-scope":"editable","data-part":part}),{default:()=>slots["default"]?.(context.slotProps.value)})}})}function renderPart(props,attrs,slots,context,part){return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"editable","data-part":part,"data-state":context.slotProps.value.editing?"editing":"idle"}),{default:()=>slots.default?.(context.slotProps.value)})}function useEditableContext(part){const context=inject(editableContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside EditableRoot.`);return context}export{EditableArea,EditableCancelTrigger,EditableEditTrigger,EditableInput,EditablePreview,EditableRoot,EditableSubmitTrigger};
1
+ import{computed,defineComponent,h,inject,mergeProps,onBeforeUnmount,onMounted,provide,ref,shallowRef,watch}from"vue";import{createEditable}from"@sectile/dom/editable";import{Primitive}from"./primitive.js";import{useNativeInputFormControl}from"./form/control.js";import{useControlledStateInvariant}from"./internal/controlled-state.js";import{useNextTickTask}from"./internal/scheduled-task.js";const editableContextKey=Symbol("SectileEditable");const partProps={as:{type:[String,Object,Function],default:"div"},asChild:{type:Boolean,default:false}};const EditableRoot=defineComponent({name:"SectileEditableRoot",inheritAttrs:false,props:{modelValue:{type:String,default:void 0},defaultValue:{type:String,default:""},disabled:{type:Boolean,default:false},readonly:{type:Boolean,default:false},submitOnBlur:{type:Boolean,default:false},policies:{type:Object,default:void 0},name:{type:String,default:void 0},label:{type:String,default:void 0},...partProps},emits:{"update:modelValue":_value=>true,"update:editing":_editing=>true},slots:Object,setup(props,{attrs,emit,slots}){const controlled=useControlledStateInvariant("EditableRoot","modelValue",()=>props.modelValue);const initial=controlled?props.modelValue:props.defaultValue;const snapshot=shallowRef({value:initial,draft:initial,editing:false});const root=shallowRef(null);const preview=shallowRef(null);const input=shallowRef(null);const editTrigger=shallowRef(null);const submitTrigger=shallowRef(null);const cancelTrigger=shallowRef(null);const multiline=ref(false);let connection=null;let mounted=false;const refresh=()=>{if(connection!==null)snapshot.value=connection.getSnapshot().state};const mount=()=>{if(!mounted||root.value===null||preview.value===null||input.value===null)return;connection?.disconnect();connection=createEditable({root:root.value,preview:preview.value,input:input.value,...editTrigger.value===null?{}:{editTrigger:editTrigger.value},...submitTrigger.value===null?{}:{submitTrigger:submitTrigger.value},...cancelTrigger.value===null?{}:{cancelTrigger:cancelTrigger.value},...controlled?{value:props.modelValue}:{defaultValue:snapshot.value.value},disabled:props.disabled,readOnly:props.readonly,submitOnBlur:props.submitOnBlur,...props.policies===void 0?{}:{policies:props.policies},...props.name===void 0?{}:{name:props.name},...props.label===void 0?{}:{label:props.label},onValueChange:value=>emit("update:modelValue",value),onEditingChange:editing=>emit("update:editing",editing),onUpdate:refresh});refresh()};const reset=()=>{queueMicrotask(()=>{const value=controlled?props.modelValue:initial;snapshot.value={value,draft:value,editing:false};mount()})};const mountTask=useNextTickTask(mount);let inputComposing=false;let reconnectPending=false;let reconnectTimer=null;const requestMount=()=>{if(inputComposing){reconnectPending=true;return}mountTask.schedule()};const setInputComposing=composing=>{inputComposing=composing;if(composing||!reconnectPending||reconnectTimer!==null)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(!mounted||inputComposing)return;reconnectPending=false;mountTask.schedule()},0)};onMounted(()=>{mounted=true;mount()});onBeforeUnmount(()=>{mounted=false;if(reconnectTimer!==null)clearTimeout(reconnectTimer);reconnectTimer=null;reconnectPending=false;mountTask.cancel();connection?.disconnect();connection=null});watch(()=>props.modelValue,value=>{if(!controlled||value===void 0||connection===null)return;const result=connection.syncControlledValue(value);if(!result.ok)throw new TypeError(result.error.message);snapshot.value=result.value.state});watch([()=>props.disabled,()=>props.readonly,()=>props.submitOnBlur,()=>props.policies],requestMount);const slotProps=computed(()=>Object.freeze({...snapshot.value,disabled:props.disabled,readonly:props.readonly}));provide(editableContextKey,{slotProps,root,preview,input,editTrigger,submitTrigger,cancelTrigger,multiline,setInputComposing,reset});return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{root.value=element},"data-scope":"editable","data-part":"root","data-state":slotProps.value.editing?"editing":"idle","data-disabled":props.disabled?"":void 0,"data-readonly":props.readonly?"":void 0}),{default:()=>slots["default"]?.(slotProps.value)})}});const EditableArea=defineComponent({name:"SectileEditableArea",inheritAttrs:false,props:partProps,slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditableArea");return()=>renderPart(props,attrs,slots,context,"area")}});const EditablePreview=defineComponent({name:"SectileEditablePreview",inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"span"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext("EditablePreview");return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context.preview.value=element},hidden:context.slotProps.value.editing,tabindex:context.slotProps.value.disabled?-1:0,"data-scope":"editable","data-part":"preview"}),{default:()=>slots["default"]?.(context.slotProps.value)})}});const EditableInput=defineComponent({name:"SectileEditableInput",inheritAttrs:false,props:{multiline:{type:Boolean,default:false},type:{type:String,default:"text"},name:{type:String,default:void 0},form:{type:String,default:void 0},required:{type:Boolean,default:false}},setup(props,{attrs}){const context=useEditableContext("EditableInput");const participation=useNativeInputFormControl(context.input,{reset:context.reset});const renderServerValue=typeof window==="undefined";context.multiline.value=props.multiline;return()=>h(props.multiline?"textarea":"input",mergeProps(attrs,{ref:element=>{context.input.value=element},...!props.multiline?{type:props.type}:{},name:props.name,form:props.form,required:props.required,...renderServerValue?{value:context.slotProps.value.draft}:{},hidden:!context.slotProps.value.editing,disabled:context.slotProps.value.disabled,readonly:context.slotProps.value.readonly,onCompositionstart:()=>context.setInputComposing(true),onCompositionend:()=>context.setInputComposing(false),"data-scope":"editable","data-part":"input"},participation.controlProps.value))}});const EditableEditTrigger=createTrigger("Edit","editTrigger","edit-trigger",false);const EditableSubmitTrigger=createTrigger("Submit","submitTrigger","submit-trigger",true);const EditableCancelTrigger=createTrigger("Cancel","cancelTrigger","cancel-trigger",true);function createTrigger(label,key,part,editing){return defineComponent({name:`SectileEditable${label}Trigger`,inheritAttrs:false,props:{...partProps,as:{...partProps.as,default:"button"}},slots:Object,setup(props,{attrs,slots}){const context=useEditableContext(`Editable${label}Trigger`);return()=>h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,elementRef:element=>{context[key].value=element},...props.as==="button"&&!props.asChild?{type:"button"}:{},hidden:context.slotProps.value.editing!==editing,disabled:context.slotProps.value.disabled,"data-scope":"editable","data-part":part}),{default:()=>slots["default"]?.(context.slotProps.value)})}})}function renderPart(props,attrs,slots,context,part){return h(Primitive,mergeProps(attrs,{as:props.as,asChild:props.asChild,"data-scope":"editable","data-part":part,"data-state":context.slotProps.value.editing?"editing":"idle"}),{default:()=>slots.default?.(context.slotProps.value)})}function useEditableContext(part){const context=inject(editableContextKey);if(context===void 0)throw new TypeError(`${part} must be used inside EditableRoot.`);return context}export{EditableArea,EditableCancelTrigger,EditableEditTrigger,EditableInput,EditablePreview,EditableRoot,EditableSubmitTrigger};
2
2
  //# sourceMappingURL=editable.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/editable.ts"],"mappings":"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","names":[],"file":"editable.js"}
1
+ {"version":3,"sources":["../src/editable.ts"],"mappings":"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","names":[],"file":"editable.js"}
@@ -1,7 +1,7 @@
1
1
  import { type ComputedRef, type ShallowRef } from 'vue';
2
2
  import type { FormConnection, FormParticipant } from '@sectile/dom/form';
3
- import type { FormFieldSlotProps, FormIssue, FormSelectorFunction, FormSubscribeOptions } from '../form.js';
4
- import type { FormControlRegistration, FormLabelMode } from './form-control.js';
3
+ import type { FormFieldSelectorFunction, FormFieldSlotProps, FormIssue, FormSelectorFunction, FormSubscribeOptions } from './contracts.js';
4
+ import type { FormControlRegistration, FormLabelMode } from './control.js';
5
5
  export interface FormContext {
6
6
  readonly summary: ShallowRef<HTMLElement | null>;
7
7
  readonly summaryId: string;
@@ -20,3 +20,4 @@ export declare const formFieldContextKey: unique symbol;
20
20
  export declare function useFormContext(part: string): FormContext;
21
21
  export declare function useFormFieldContext(part: string): FormFieldContext;
22
22
  export declare function useFormSelectorFromContext<Selected>(context: FormContext, selectorSource: () => FormSelectorFunction<Selected>, equalsSource?: () => NonNullable<FormSubscribeOptions<Selected>['equals']>): Readonly<ShallowRef<Selected>>;
23
+ export declare function useFormFieldSelectorFromContext<Selected>(context: FormContext, idSource: () => string, selectorSource: () => FormFieldSelectorFunction<Selected>, equalsSource?: () => NonNullable<FormSubscribeOptions<Selected>['equals']>): Readonly<ShallowRef<Selected>>;
@@ -1,2 +1,2 @@
1
- import{inject,onScopeDispose,shallowRef,watch}from"vue";const formContextKey=Symbol("SectileForm");const formFieldContextKey=Symbol("SectileFormField");const emptyState=Object.freeze({validation:Object.freeze({generation:0,status:"idle",trigger:null,intent:null}),submission:Object.freeze({generation:0,status:"idle",count:0,failure:null}),touched:false,dirty:false,valid:true,fields:Object.freeze([]),issues:Object.freeze([]),allIssues:Object.freeze([])});function useFormContext(part){const context=inject(formContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormRoot.`);return context}function useFormFieldContext(part){const context=inject(formFieldContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormField.`);return context}function useFormSelectorFromContext(context,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.state??emptyState));let unsubscribe;const stop=watch([context.connection,selectorSource,equalsSource],([target,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.state??emptyState);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeForm(selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}export{formContextKey,formFieldContextKey,useFormContext,useFormFieldContext,useFormSelectorFromContext};
2
- //# sourceMappingURL=form-context.js.map
1
+ import{inject,onScopeDispose,shallowRef,watch}from"vue";const formContextKey=Symbol("SectileForm");const formFieldContextKey=Symbol("SectileFormField");const emptyState=Object.freeze({validation:Object.freeze({generation:0,status:"idle",trigger:null,intent:null}),submission:Object.freeze({generation:0,status:"idle",count:0,failure:null}),touched:false,dirty:false,valid:true,fields:Object.freeze([]),issues:Object.freeze([]),allIssues:Object.freeze([])});function useFormContext(part){const context=inject(formContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormRoot.`);return context}function useFormFieldContext(part){const context=inject(formFieldContextKey,null);if(context===null)throw new TypeError(`${part} must be rendered inside FormField.`);return context}function useFormSelectorFromContext(context,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.state??emptyState));let unsubscribe;const stop=watch([context.connection,selectorSource,equalsSource],([target,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.state??emptyState);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeForm(selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}function useFormFieldSelectorFromContext(context,idSource,selectorSource,equalsSource=()=>Object.is){const initialSelector=selectorSource();const selected=shallowRef(initialSelector(context.connection.value?.getField(idSource())??null));let unsubscribe;const stop=watch([context.connection,idSource,selectorSource,equalsSource],([target,id,selector,equals])=>{unsubscribe?.();unsubscribe=void 0;const next=selector(target?.getField(id)??null);if(!equals(selected.value,next))selected.value=next;if(target!==null){unsubscribe=target.subscribeField(id,selector,value=>{selected.value=value},{equals})}},{immediate:true,flush:"sync"});onScopeDispose(()=>{unsubscribe?.();stop()});return selected}export{formContextKey,formFieldContextKey,useFormContext,useFormFieldContext,useFormFieldSelectorFromContext,useFormSelectorFromContext};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/context.ts"],"mappings":"AAAA,OACE,OACA,eACA,WACA,UAGK,MAgCA,MAAM,eAAiB,OAAO,aAAa,EAC3C,MAAM,oBAAsB,OAAO,kBAAkB,EAE5D,MAAM,WAAwB,OAAO,OAAO,CAC1C,WAAY,OAAO,OAAO,CAAE,WAAY,EAAG,OAAQ,OAAQ,QAAS,KAAM,OAAQ,IAAI,CAAE,EACxF,WAAY,OAAO,OAAO,CAAE,WAAY,EAAG,OAAQ,OAAQ,MAAO,EAAG,QAAS,IAAI,CAAE,EACpF,QAAS,MACT,MAAO,MACP,MAAO,KACP,OAAQ,OAAO,OAAO,CAAA,CAAE,EACxB,OAAQ,OAAO,OAAO,CAAA,CAAE,EACxB,UAAW,OAAO,OAAO,CAAA,CAAE,EAC5B,EAEK,SAAU,eAAe,KAAY,CACzC,MAAM,QAAU,OAA2B,eAAgB,IAAI,EAC/D,GAAI,UAAY,KAAM,MAAM,IAAI,UAAU,GAAG,IAAI,oCAAoC,EACrF,OAAO,OACT,CAEM,SAAU,oBAAoB,KAAY,CAC9C,MAAM,QAAU,OAAgC,oBAAqB,IAAI,EACzE,GAAI,UAAY,KAAM,MAAM,IAAI,UAAU,GAAG,IAAI,qCAAqC,EACtF,OAAO,OACT,CAEM,SAAU,2BACd,QACA,eACA,aAA4E,IAAM,OAAO,GAAE,CAE3F,MAAM,gBAAkB,eAAc,EACtC,MAAM,SAAW,WACf,gBAAgB,QAAQ,WAAW,OAAO,OAAS,UAAU,CAAC,EAEhE,IAAI,YACJ,MAAM,KAAO,MACX,CAAC,QAAQ,WAAY,eAAgB,YAAY,EACjD,CAAC,CAAC,OAAQ,SAAU,MAAM,IAAK,CAC7B,cAAa,EACb,YAAc,OACd,MAAM,KAAO,SAAS,QAAQ,OAAS,UAAU,EACjD,GAAI,CAAC,OAAO,SAAS,MAAO,IAAI,EAAG,SAAS,MAAQ,KACpD,GAAI,SAAW,KAAM,CACnB,YAAc,OAAO,cAAc,SAAW,OAAS,CACrD,SAAS,MAAQ,KACnB,EAAG,CAAE,MAAM,CAAE,CACf,CACF,EACA,CAAE,UAAW,KAAM,MAAO,MAAM,CAAE,EAEpC,eAAe,IAAK,CAClB,cAAa,EACb,KAAI,CACN,CAAC,EACD,OAAO,QACT,CAEM,SAAU,gCACd,QACA,SACA,eACA,aAA4E,IAAM,OAAO,GAAE,CAE3F,MAAM,gBAAkB,eAAc,EACtC,MAAM,SAAW,WAAW,gBAC1B,QAAQ,WAAW,OAAO,SAAS,SAAQ,CAAE,GAAK,IAAI,CACvD,EACD,IAAI,YACJ,MAAM,KAAO,MACX,CAAC,QAAQ,WAAY,SAAU,eAAgB,YAAY,EAC3D,CAAC,CAAC,OAAQ,GAAI,SAAU,MAAM,IAAK,CACjC,cAAa,EACb,YAAc,OACd,MAAM,KAAO,SAAS,QAAQ,SAAS,EAAE,GAAK,IAAI,EAClD,GAAI,CAAC,OAAO,SAAS,MAAO,IAAI,EAAG,SAAS,MAAQ,KACpD,GAAI,SAAW,KAAM,CACnB,YAAc,OAAO,eAAe,GAAI,SAAW,OAAS,CAC1D,SAAS,MAAQ,KACnB,EAAG,CAAE,MAAM,CAAE,CACf,CACF,EACA,CAAE,UAAW,KAAM,MAAO,MAAM,CAAE,EAEpC,eAAe,IAAK,CAClB,cAAa,EACb,KAAI,CACN,CAAC,EACD,OAAO,QACT","names":[],"file":"context.js"}
@@ -0,0 +1,219 @@
1
+ import type { FormState as DomainFormState, FormFieldState as DomainFormFieldState, FormFieldMetaInput as DomainFormFieldMetaInput, FormIssue as DomainFormIssue, FormReinitializeOptions, FormSubmissionFailure, FormValidationTrigger, FormValidationIntent, FormIssueSource } from '@sectile/form/state';
2
+ import type { StandardSchemaV1 } from '@sectile/form/schema';
3
+ import type { FormFieldPath } from '@sectile/form/path';
4
+ import type { VNodeProps, AllowedComponentProps, ComponentCustomProps, VNodeChild, ShallowRef } from 'vue';
5
+ import type { PrimitiveAs } from '../primitive.js';
6
+ import type { ConditionalPresenceProps } from '../presence/conditional-presence.js';
7
+ export interface FormState extends DomainFormState<string> {
8
+ }
9
+ export interface FormFieldState extends DomainFormFieldState<string> {
10
+ }
11
+ export interface FormFieldMetaInput extends DomainFormFieldMetaInput {
12
+ }
13
+ export interface FormSubscribeOptions<Selected> {
14
+ readonly equals?: (previous: Selected, next: Selected) => boolean;
15
+ }
16
+ export type FormSelectorFunction<Selected> = (state: FormState) => Selected;
17
+ export type FormFieldSelectorFunction<Selected> = (field: FormFieldState | null) => Selected;
18
+ export interface FormIssue extends DomainFormIssue<string> {
19
+ }
20
+ export type FormValues<Shape extends object = Record<string, unknown>> = Readonly<Shape>;
21
+ export type FormSchema<Input extends object = Record<string, unknown>, Output extends object = Input> = StandardSchemaV1<FormValues<Input>, FormValues<Output>>;
22
+ export type FormSchemaInput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferInput<Schema>;
23
+ export type FormSchemaOutput<Schema extends StandardSchemaV1> = StandardSchemaV1.InferOutput<Schema>;
24
+ export interface FormSubmitEvent<Values extends object = Record<string, unknown>> {
25
+ readonly formData: FormData;
26
+ readonly values: FormValues<Values>;
27
+ readonly submitter: HTMLElement | null;
28
+ readonly state: FormState;
29
+ readonly reinitialize: (options?: FormReinitializeOptions) => void;
30
+ readonly nativeEvent: SubmitEvent;
31
+ readonly defaultPrevented: boolean;
32
+ preventDefault(): void;
33
+ stopPropagation(): void;
34
+ stopImmediatePropagation(): void;
35
+ }
36
+ export interface FormIssueInput {
37
+ readonly id?: string;
38
+ readonly message: string;
39
+ readonly path?: FormFieldPath;
40
+ readonly relatedPaths?: readonly FormFieldPath[];
41
+ }
42
+ export type FormSubmitIssue = FormIssueInput;
43
+ export type FormSubmitResult = void | {
44
+ readonly ok: true;
45
+ } | {
46
+ readonly ok: false;
47
+ readonly failure?: FormSubmissionFailure;
48
+ readonly issues?: readonly FormSubmitIssue[];
49
+ };
50
+ export type FormSubmitHandler<Values extends object = Record<string, unknown>> = (event: FormSubmitEvent<Values>) => FormSubmitResult | PromiseLike<FormSubmitResult>;
51
+ export interface FormSubmissionDefinition {
52
+ readonly schema?: never;
53
+ readonly onSubmit: FormSubmitHandler<Record<string, unknown>>;
54
+ }
55
+ export interface FormSchemaSubmissionDefinition<Schema extends FormSchema<object, object>> {
56
+ readonly schema: Schema;
57
+ readonly onSubmit: FormSubmitHandler<FormSchemaOutput<Schema>>;
58
+ }
59
+ export declare function defineFormSubmission<const Schema extends FormSchema<object, object>>(definition: FormSchemaSubmissionDefinition<Schema>): FormSchemaSubmissionDefinition<Schema>;
60
+ export declare function defineFormSubmission(definition: FormSubmissionDefinition): FormSubmissionDefinition;
61
+ export type FormSubmitErrorMapper = (reason: unknown) => FormSubmissionFailure | undefined;
62
+ export type FormResetHandler = () => void;
63
+ export type FormStateChangeHandler = (state: FormState) => void;
64
+ export type FormInteractionValidationTrigger = Exclude<FormValidationTrigger, 'submit'>;
65
+ export interface FormValidateContext {
66
+ readonly trigger: FormValidationTrigger;
67
+ readonly intent: FormValidationIntent;
68
+ readonly changedFieldId: string | null;
69
+ readonly signal: AbortSignal;
70
+ }
71
+ export interface FormValidationIssue {
72
+ readonly message: string;
73
+ readonly path?: FormFieldPath;
74
+ readonly relatedPaths?: readonly FormFieldPath[];
75
+ }
76
+ export interface FormValidationResult {
77
+ readonly issues?: readonly FormValidationIssue[];
78
+ }
79
+ export type FormValidateHandler<Values extends object = Record<string, unknown>> = (values: FormValues<Values>, context: FormValidateContext) => FormValidationResult | PromiseLike<FormValidationResult>;
80
+ export type FormSubmitStartedAction = () => number | null;
81
+ export type FormSubmitSucceededAction = (generation: number) => boolean;
82
+ export type FormSubmitFailedAction = (generation: number, result: {
83
+ readonly failure?: FormSubmissionFailure;
84
+ readonly issues?: readonly FormIssue[];
85
+ }) => boolean;
86
+ export type FormReplaceIssuesAction = (source: FormIssueSource, issues: readonly FormIssue[]) => boolean;
87
+ export type FormResetAction = () => void;
88
+ export type FormReinitializeAction = (options?: FormReinitializeOptions) => void;
89
+ export interface FormRootProps<Input extends object = Record<string, unknown>, Output extends object = Input> {
90
+ readonly issues?: readonly FormIssueInput[];
91
+ readonly schema?: FormSchema<Input, Output>;
92
+ readonly validate?: FormValidateHandler<Input>;
93
+ readonly validateOn?: readonly FormInteractionValidationTrigger[];
94
+ readonly revalidateOn?: readonly FormInteractionValidationTrigger[];
95
+ readonly onSubmit?: FormSubmitHandler<Output>;
96
+ readonly mapSubmitError?: FormSubmitErrorMapper;
97
+ }
98
+ export interface FormRootSlotProps {
99
+ readonly state: FormState;
100
+ readonly validation: FormState['validation'];
101
+ readonly submission: FormState['submission'];
102
+ readonly valid: boolean;
103
+ readonly touched: boolean;
104
+ readonly dirty: boolean;
105
+ readonly submitted: boolean;
106
+ readonly submitCount: number;
107
+ readonly submitStarted: FormSubmitStartedAction;
108
+ readonly submitSucceeded: FormSubmitSucceededAction;
109
+ readonly submitFailed: FormSubmitFailedAction;
110
+ readonly replaceIssues: FormReplaceIssuesAction;
111
+ readonly reinitialize: FormReinitializeAction;
112
+ readonly reset: FormResetAction;
113
+ }
114
+ export type FormRootPublicProps<Input extends object = Record<string, unknown>, Output extends object = Input> = FormRootProps<Input, Output> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
115
+ readonly onReset?: () => unknown;
116
+ readonly onStateChange?: (state: FormState) => unknown;
117
+ };
118
+ export interface FormRootComponent {
119
+ new <Input extends object = Record<string, unknown>, Output extends object = Input>(props: FormRootPublicProps<Input, Output>): {
120
+ $props: FormRootPublicProps<Input, Output>;
121
+ $slots: {
122
+ default?: (props: FormRootSlotProps) => VNodeChild;
123
+ };
124
+ submitStarted: FormSubmitStartedAction;
125
+ submitSucceeded: FormSubmitSucceededAction;
126
+ submitFailed: FormSubmitFailedAction;
127
+ replaceIssues: FormReplaceIssuesAction;
128
+ reinitialize: FormReinitializeAction;
129
+ reset: FormResetAction;
130
+ };
131
+ }
132
+ export interface FormFieldProps {
133
+ readonly id?: string;
134
+ readonly name?: FormFieldPath;
135
+ readonly form?: string;
136
+ readonly required?: boolean;
137
+ readonly disabled?: boolean;
138
+ readonly readonly?: boolean;
139
+ readonly as?: PrimitiveAs;
140
+ readonly asChild?: boolean;
141
+ }
142
+ export type FormFieldPublicProps = FormFieldProps & VNodeProps & AllowedComponentProps & ComponentCustomProps;
143
+ export interface FormFieldSlotProps {
144
+ readonly id: string;
145
+ readonly controlId: string;
146
+ readonly labelId: string;
147
+ readonly descriptionId: string;
148
+ readonly messageId: string;
149
+ readonly describedBy: string;
150
+ readonly valid: boolean;
151
+ readonly touched: boolean;
152
+ readonly dirty: boolean;
153
+ readonly issues: readonly FormIssue[];
154
+ readonly relatedIssues: readonly FormIssue[];
155
+ readonly setMeta: (meta: FormFieldMetaInput) => boolean;
156
+ readonly replaceIssues: (source: FormIssueSource, issues: readonly FormIssue[]) => boolean;
157
+ readonly upsertIssue: (issue: FormIssue) => boolean;
158
+ readonly removeIssue: (issueId: string | number) => boolean;
159
+ readonly clearIssues: (source?: FormIssueSource) => boolean;
160
+ }
161
+ export interface FormFieldController {
162
+ readonly state: Readonly<ShallowRef<FormFieldState | null>>;
163
+ setMeta(meta: FormFieldMetaInput): boolean;
164
+ replaceIssues(source: FormIssueSource, issues: readonly FormIssue[]): boolean;
165
+ upsertIssue(issue: FormIssue): boolean;
166
+ removeIssue(issueId: string | number): boolean;
167
+ clearIssues(source?: FormIssueSource): boolean;
168
+ }
169
+ export interface FormSelectorProps<Selected> {
170
+ readonly select: FormSelectorFunction<Selected>;
171
+ readonly equals?: NonNullable<FormSubscribeOptions<Selected>['equals']>;
172
+ }
173
+ export interface FormSelectorComponent {
174
+ new <Selected>(props: FormSelectorProps<Selected>): {
175
+ $props: FormSelectorProps<Selected>;
176
+ $slots: {
177
+ default?: (props: {
178
+ readonly selected: Selected;
179
+ }) => VNodeChild;
180
+ };
181
+ };
182
+ }
183
+ export interface FormFieldSelectorProps<Selected> {
184
+ readonly id: string;
185
+ readonly select: FormFieldSelectorFunction<Selected>;
186
+ readonly equals?: NonNullable<FormSubscribeOptions<Selected>['equals']>;
187
+ }
188
+ export interface FormFieldSelectorComponent {
189
+ new <Selected>(props: FormFieldSelectorProps<Selected>): {
190
+ $props: FormFieldSelectorProps<Selected>;
191
+ $slots: {
192
+ default?: (props: {
193
+ readonly selected: Selected;
194
+ }) => VNodeChild;
195
+ };
196
+ };
197
+ }
198
+ export interface FormSummarySlotProps {
199
+ readonly validation: FormState['validation'];
200
+ readonly submission: FormState['submission'];
201
+ readonly issues: readonly FormIssue[];
202
+ readonly serverIssues: readonly FormIssue[];
203
+ readonly firstIssue: FormIssue | null;
204
+ readonly valid: boolean;
205
+ }
206
+ export interface FormSubmitSlotProps {
207
+ readonly valid: boolean;
208
+ readonly submitting: boolean;
209
+ readonly canSubmit: boolean;
210
+ readonly submission: FormState['submission'];
211
+ }
212
+ export interface FormPartProps {
213
+ readonly as?: PrimitiveAs;
214
+ readonly asChild?: boolean;
215
+ }
216
+ export interface FormMessageProps extends FormPartProps, ConditionalPresenceProps {
217
+ }
218
+ export interface FormSummaryProps extends FormPartProps, ConditionalPresenceProps {
219
+ }
@@ -0,0 +1,2 @@
1
+ function defineFormSubmission(definition){return Object.freeze({...definition})}export{defineFormSubmission};
2
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/contracts.ts"],"mappings":"AAwGM,SAAU,qBACd,WAAiG,CAEjG,OAAO,OAAO,OAAO,CAAE,GAAG,UAAU,CAAE,CACxC","names":[],"file":"contracts.js"}
@@ -1,2 +1,2 @@
1
1
  const formValueControlInventory=Object.freeze({TextField:{family:"scalar",phase:"simple"},NumberField:{family:"numeric",phase:"simple"},CheckboxRoot:{family:"boolean",phase:"simple"},SwitchRoot:{family:"boolean",phase:"simple"},CheckboxGroupRoot:{family:"group",phase:"simple"},RadioGroupRoot:{family:"group",phase:"simple"},ListboxRoot:{family:"selection",phase:"simple"},SelectRoot:{family:"selection",phase:"simple"},ComboboxRoot:{family:"selection",phase:"simple"},CascadeListRoot:{family:"selection",phase:"simple"},CascadeSelectRoot:{family:"selection",phase:"simple"},RatingRoot:{family:"selection",phase:"simple"},ToggleGroupRoot:{family:"selection",phase:"simple"},EditableRoot:{family:"editable",phase:"simple"},TagsInputRoot:{family:"token",phase:"simple"},PinInputRoot:{family:"token",phase:"simple"},SpinButtonRoot:{family:"numeric",phase:"simple"},QuantityFieldRoot:{family:"numeric",phase:"simple"},DateField:{family:"compound",phase:"compound"},DateTimeField:{family:"compound",phase:"compound"},TimeField:{family:"compound",phase:"compound"},DateRangeFieldRoot:{family:"compound",phase:"compound"},TimeRangeFieldRoot:{family:"compound",phase:"compound"},SliderRoot:{family:"compound",phase:"compound"},MultiThumbSliderRoot:{family:"compound",phase:"compound"},ColorPickerRoot:{family:"compound",phase:"compound"},CalendarRoot:{family:"compound",phase:"compound"},RangeCalendarRoot:{family:"compound",phase:"compound"},DatePickerRoot:{family:"compound",phase:"compound"},DateRangePickerRoot:{family:"compound",phase:"compound"},DateTimePickerRoot:{family:"compound",phase:"compound"},DateTimeRangePickerRoot:{family:"compound",phase:"compound"},MonthPickerRoot:{family:"compound",phase:"compound"},MonthRangePickerRoot:{family:"compound",phase:"compound"},YearPickerRoot:{family:"compound",phase:"compound"},YearRangePickerRoot:{family:"compound",phase:"compound"}});export{formValueControlInventory};
2
- //# sourceMappingURL=form-control-inventory.js.map
2
+ //# sourceMappingURL=control-inventory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/control-inventory.ts"],"mappings":"AAsBO,MAAM,0BAA4B,OAAO,OAAO,CACrD,UAAW,CAAE,OAAQ,SAAU,MAAO,QAAQ,EAC9C,YAAa,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACjD,aAAc,CAAE,OAAQ,UAAW,MAAO,QAAQ,EAClD,WAAY,CAAE,OAAQ,UAAW,MAAO,QAAQ,EAChD,kBAAmB,CAAE,OAAQ,QAAS,MAAO,QAAQ,EACrD,eAAgB,CAAE,OAAQ,QAAS,MAAO,QAAQ,EAClD,YAAa,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACnD,WAAY,CAAE,OAAQ,YAAa,MAAO,QAAQ,EAClD,aAAc,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACpD,gBAAiB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACvD,kBAAmB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACzD,WAAY,CAAE,OAAQ,YAAa,MAAO,QAAQ,EAClD,gBAAiB,CAAE,OAAQ,YAAa,MAAO,QAAQ,EACvD,aAAc,CAAE,OAAQ,WAAY,MAAO,QAAQ,EACnD,cAAe,CAAE,OAAQ,QAAS,MAAO,QAAQ,EACjD,aAAc,CAAE,OAAQ,QAAS,MAAO,QAAQ,EAChD,eAAgB,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACpD,kBAAmB,CAAE,OAAQ,UAAW,MAAO,QAAQ,EACvD,UAAW,CAAE,OAAQ,WAAY,MAAO,UAAU,EAClD,cAAe,CAAE,OAAQ,WAAY,MAAO,UAAU,EACtD,UAAW,CAAE,OAAQ,WAAY,MAAO,UAAU,EAClD,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,WAAY,CAAE,OAAQ,WAAY,MAAO,UAAU,EACnD,qBAAsB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC7D,gBAAiB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACxD,aAAc,CAAE,OAAQ,WAAY,MAAO,UAAU,EACrD,kBAAmB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC1D,eAAgB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACvD,oBAAqB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC5D,mBAAoB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC3D,wBAAyB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAChE,gBAAiB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACxD,qBAAsB,CAAE,OAAQ,WAAY,MAAO,UAAU,EAC7D,eAAgB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACvD,oBAAqB,CAAE,OAAQ,WAAY,MAAO,UAAU,EACT","names":[],"file":"control-inventory.js"}
@@ -1,2 +1,2 @@
1
1
  import{computed,getCurrentInstance,inject,onBeforeUnmount,onMounted,provide}from"vue";const formControlFieldContextKey=Symbol("SectileFormControlField");const formControlOwnerKey=Symbol("SectileFormControlOwner");function provideFormControlFieldContext(context){provide(formControlFieldContextKey,context)}function useFormControl(registration){const field=inject(formControlFieldContextKey,null);const owned=inject(formControlOwnerKey,false);const instance=getCurrentInstance();const explicit=Object.freeze([...new Set([...registration.explicit??[],...explicitMetadataAttributes(instance?.vnode.props??null)])]);const normalized=Object.freeze({...registration,explicit});const controlProps=computed(()=>field!==null&&!owned?field.attributesFor(normalized):Object.freeze({}));let unregister;if(field!==null&&!owned){onMounted(()=>{unregister=field.registerControl(normalized)});onBeforeUnmount(()=>unregister?.())}return Object.freeze({participating:field!==null&&!owned,controlProps})}const nativeInputControlCapabilities=Object.freeze({id:true,describedBy:true,invalid:true,required:true,disabled:true,readonly:true});const compositeControlCapabilities=Object.freeze({id:true,describedBy:true,invalid:true,labelledBy:true});const hiddenInputSubmissionCapabilities=Object.freeze({name:true,form:true,required:true,disabled:true});const hiddenSelectSubmissionCapabilities=hiddenInputSubmissionCapabilities;const hiddenValueSubmissionCapabilities=Object.freeze({name:true,form:true,disabled:true});function useNativeInputFormControl(element,options={}){return useFormControl({element,semanticControl:element,focusTarget:element,validationTarget:element,labelMode:"for",capabilities:nativeInputControlCapabilities,...options.reset===void 0?{}:{reset:options.reset},...options.getValue===void 0?{}:{getValue:options.getValue},...options.isValueEqual===void 0?{}:{isValueEqual:options.isValueEqual}})}function useCompositeFormControl(options){return useFormControl({element:options.root,semanticControl:options.root,focusTarget:options.focusTarget??options.root,validationTarget:options.validationTarget??options.root,labelMode:options.labelMode??"labelledby",capabilities:compositeControlCapabilities,...options.submissions===void 0?{}:{submissions:options.submissions},...options.reset===void 0?{}:{reset:options.reset},...options.getValue===void 0?{}:{getValue:options.getValue},...options.isValueEqual===void 0?{}:{isValueEqual:options.isValueEqual}})}function provideFormControlOwner(){provide(formControlOwnerKey,true)}function explicitMetadataAttributes(vnodeProps){if(vnodeProps===null)return[];const aliases={id:["id"],name:["name"],form:["form"],required:["required"],disabled:["disabled"],readonly:["readonly","readOnly"],"aria-describedby":["aria-describedby","ariaDescribedby"],"aria-errormessage":["aria-errormessage","ariaErrormessage"],"aria-invalid":["aria-invalid","ariaInvalid"],"aria-labelledby":["aria-labelledby","ariaLabelledby"],"aria-disabled":["aria-disabled","ariaDisabled"],"aria-required":["aria-required","ariaRequired"],"aria-readonly":["aria-readonly","ariaReadonly"]};return Object.entries(aliases).filter(([,names])=>names.some(name=>Object.hasOwn(vnodeProps,name))).map(([attribute])=>attribute)}export{compositeControlCapabilities,hiddenInputSubmissionCapabilities,hiddenSelectSubmissionCapabilities,hiddenValueSubmissionCapabilities,nativeInputControlCapabilities,provideFormControlFieldContext,provideFormControlOwner,useCompositeFormControl,useFormControl,useNativeInputFormControl};
2
- //# sourceMappingURL=form-control.js.map
2
+ //# sourceMappingURL=control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/control.ts"],"mappings":"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","names":[],"file":"control.js"}