reka-ui 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  2. package/dist/Accordion/AccordionItem.js.map +1 -1
  3. package/dist/Accordion/AccordionRoot.cjs.map +1 -1
  4. package/dist/Accordion/AccordionRoot.js.map +1 -1
  5. package/dist/AlertDialog/AlertDialogCancel.cjs.map +1 -1
  6. package/dist/AlertDialog/AlertDialogCancel.js.map +1 -1
  7. package/dist/AlertDialog/AlertDialogContent.cjs.map +1 -1
  8. package/dist/AlertDialog/AlertDialogContent.js.map +1 -1
  9. package/dist/AspectRatio/AspectRatio.cjs.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js.map +1 -1
  11. package/dist/Avatar/AvatarFallback.cjs +11 -14
  12. package/dist/Avatar/AvatarFallback.cjs.map +1 -1
  13. package/dist/Avatar/AvatarFallback.js +12 -15
  14. package/dist/Avatar/AvatarFallback.js.map +1 -1
  15. package/dist/Avatar/AvatarImage.cjs +3 -2
  16. package/dist/Avatar/AvatarImage.cjs.map +1 -1
  17. package/dist/Avatar/AvatarImage.js +3 -2
  18. package/dist/Avatar/AvatarImage.js.map +1 -1
  19. package/dist/Avatar/AvatarRoot.cjs +1 -1
  20. package/dist/Avatar/AvatarRoot.cjs.map +1 -1
  21. package/dist/Avatar/AvatarRoot.js +1 -1
  22. package/dist/Avatar/AvatarRoot.js.map +1 -1
  23. package/dist/Avatar/utils.cjs +43 -16
  24. package/dist/Avatar/utils.cjs.map +1 -1
  25. package/dist/Avatar/utils.js +44 -17
  26. package/dist/Avatar/utils.js.map +1 -1
  27. package/dist/Calendar/CalendarCell.cjs +2 -2
  28. package/dist/Calendar/CalendarCell.cjs.map +1 -1
  29. package/dist/Calendar/CalendarCell.js +2 -2
  30. package/dist/Calendar/CalendarCell.js.map +1 -1
  31. package/dist/Calendar/CalendarCellTrigger.cjs +5 -1
  32. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  33. package/dist/Calendar/CalendarCellTrigger.js +5 -1
  34. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  35. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  36. package/dist/Calendar/CalendarGrid.js.map +1 -1
  37. package/dist/Calendar/CalendarHeading.cjs.map +1 -1
  38. package/dist/Calendar/CalendarHeading.js.map +1 -1
  39. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  40. package/dist/Calendar/CalendarNext.js.map +1 -1
  41. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  42. package/dist/Calendar/CalendarPrev.js.map +1 -1
  43. package/dist/Calendar/CalendarRoot.cjs +7 -4
  44. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  45. package/dist/Calendar/CalendarRoot.js +7 -4
  46. package/dist/Calendar/CalendarRoot.js.map +1 -1
  47. package/dist/Calendar/useCalendar.cjs +2 -2
  48. package/dist/Calendar/useCalendar.cjs.map +1 -1
  49. package/dist/Calendar/useCalendar.js +2 -2
  50. package/dist/Calendar/useCalendar.js.map +1 -1
  51. package/dist/Checkbox/CheckboxGroupRoot.cjs.map +1 -1
  52. package/dist/Checkbox/CheckboxGroupRoot.js.map +1 -1
  53. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  54. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  55. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  56. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  57. package/dist/Collapsible/CollapsibleRoot.cjs +2 -0
  58. package/dist/Collapsible/CollapsibleRoot.cjs.map +1 -1
  59. package/dist/Collapsible/CollapsibleRoot.js +2 -0
  60. package/dist/Collapsible/CollapsibleRoot.js.map +1 -1
  61. package/dist/Collection/Collection.cjs.map +1 -1
  62. package/dist/Collection/Collection.js.map +1 -1
  63. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  64. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  65. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  66. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  67. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  68. package/dist/Combobox/ComboboxInput.js.map +1 -1
  69. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  70. package/dist/Combobox/ComboboxItem.js.map +1 -1
  71. package/dist/Combobox/ComboboxRoot.cjs +1 -2
  72. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  73. package/dist/Combobox/ComboboxRoot.js +1 -2
  74. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  75. package/dist/Combobox/ComboboxTrigger.cjs.map +1 -1
  76. package/dist/Combobox/ComboboxTrigger.js.map +1 -1
  77. package/dist/Combobox/ComboboxViewport.cjs.map +1 -1
  78. package/dist/Combobox/ComboboxViewport.js.map +1 -1
  79. package/dist/Combobox/ComboboxVirtualizer.cjs.map +1 -1
  80. package/dist/Combobox/ComboboxVirtualizer.js.map +1 -1
  81. package/dist/ConfigProvider/ConfigProvider.cjs.map +1 -1
  82. package/dist/ConfigProvider/ConfigProvider.js.map +1 -1
  83. package/dist/ContextMenu/ContextMenuContent.cjs.map +1 -1
  84. package/dist/ContextMenu/ContextMenuContent.js.map +1 -1
  85. package/dist/ContextMenu/ContextMenuRoot.cjs.map +1 -1
  86. package/dist/ContextMenu/ContextMenuRoot.js.map +1 -1
  87. package/dist/ContextMenu/ContextMenuSub.cjs +1 -1
  88. package/dist/ContextMenu/ContextMenuSub.cjs.map +1 -1
  89. package/dist/ContextMenu/ContextMenuSub.js +1 -1
  90. package/dist/ContextMenu/ContextMenuSub.js.map +1 -1
  91. package/dist/ContextMenu/ContextMenuTrigger.cjs.map +1 -1
  92. package/dist/ContextMenu/ContextMenuTrigger.js.map +1 -1
  93. package/dist/DateField/DateFieldInput.cjs +1 -0
  94. package/dist/DateField/DateFieldInput.cjs.map +1 -1
  95. package/dist/DateField/DateFieldInput.js +1 -0
  96. package/dist/DateField/DateFieldInput.js.map +1 -1
  97. package/dist/DateField/DateFieldRoot.cjs +7 -1
  98. package/dist/DateField/DateFieldRoot.cjs.map +1 -1
  99. package/dist/DateField/DateFieldRoot.js +7 -1
  100. package/dist/DateField/DateFieldRoot.js.map +1 -1
  101. package/dist/DatePicker/DatePickerCellTrigger.cjs.map +1 -1
  102. package/dist/DatePicker/DatePickerCellTrigger.js.map +1 -1
  103. package/dist/DatePicker/DatePickerContent.cjs +8 -3
  104. package/dist/DatePicker/DatePickerContent.cjs.map +1 -1
  105. package/dist/DatePicker/DatePickerContent.js +9 -4
  106. package/dist/DatePicker/DatePickerContent.js.map +1 -1
  107. package/dist/DatePicker/DatePickerHeading.cjs.map +1 -1
  108. package/dist/DatePicker/DatePickerHeading.js.map +1 -1
  109. package/dist/DatePicker/DatePickerNext.cjs.map +1 -1
  110. package/dist/DatePicker/DatePickerNext.js.map +1 -1
  111. package/dist/DatePicker/DatePickerPrev.cjs.map +1 -1
  112. package/dist/DatePicker/DatePickerPrev.js.map +1 -1
  113. package/dist/DatePicker/DatePickerRoot.cjs +1 -0
  114. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  115. package/dist/DatePicker/DatePickerRoot.js +1 -0
  116. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  117. package/dist/DateRangeField/DateRangeFieldInput.cjs +1 -0
  118. package/dist/DateRangeField/DateRangeFieldInput.cjs.map +1 -1
  119. package/dist/DateRangeField/DateRangeFieldInput.js +1 -0
  120. package/dist/DateRangeField/DateRangeFieldInput.js.map +1 -1
  121. package/dist/DateRangeField/DateRangeFieldRoot.cjs +13 -9
  122. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  123. package/dist/DateRangeField/DateRangeFieldRoot.js +13 -9
  124. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  125. package/dist/DateRangePicker/DateRangePickerCalendar.cjs +2 -1
  126. package/dist/DateRangePicker/DateRangePickerCalendar.cjs.map +1 -1
  127. package/dist/DateRangePicker/DateRangePickerCalendar.js +2 -1
  128. package/dist/DateRangePicker/DateRangePickerCalendar.js.map +1 -1
  129. package/dist/DateRangePicker/DateRangePickerContent.cjs +8 -3
  130. package/dist/DateRangePicker/DateRangePickerContent.cjs.map +1 -1
  131. package/dist/DateRangePicker/DateRangePickerContent.js +9 -4
  132. package/dist/DateRangePicker/DateRangePickerContent.js.map +1 -1
  133. package/dist/DateRangePicker/DateRangePickerHeading.cjs.map +1 -1
  134. package/dist/DateRangePicker/DateRangePickerHeading.js.map +1 -1
  135. package/dist/DateRangePicker/DateRangePickerNext.cjs.map +1 -1
  136. package/dist/DateRangePicker/DateRangePickerNext.js.map +1 -1
  137. package/dist/DateRangePicker/DateRangePickerPrev.cjs.map +1 -1
  138. package/dist/DateRangePicker/DateRangePickerPrev.js.map +1 -1
  139. package/dist/DateRangePicker/DateRangePickerRoot.cjs +6 -2
  140. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  141. package/dist/DateRangePicker/DateRangePickerRoot.js +6 -2
  142. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  143. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  144. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  145. package/dist/Dialog/DialogContentNonModal.cjs.map +1 -1
  146. package/dist/Dialog/DialogContentNonModal.js.map +1 -1
  147. package/dist/Dialog/DialogRoot.cjs +4 -1
  148. package/dist/Dialog/DialogRoot.cjs.map +1 -1
  149. package/dist/Dialog/DialogRoot.js +4 -1
  150. package/dist/Dialog/DialogRoot.js.map +1 -1
  151. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  152. package/dist/Dialog/DialogTrigger.js.map +1 -1
  153. package/dist/DismissableLayer/DismissableLayer.cjs.map +1 -1
  154. package/dist/DismissableLayer/DismissableLayer.js.map +1 -1
  155. package/dist/DismissableLayer/DismissableLayerBranch.cjs.map +1 -1
  156. package/dist/DismissableLayer/DismissableLayerBranch.js.map +1 -1
  157. package/dist/DismissableLayer/utils.cjs +7 -3
  158. package/dist/DismissableLayer/utils.cjs.map +1 -1
  159. package/dist/DismissableLayer/utils.js +8 -4
  160. package/dist/DismissableLayer/utils.js.map +1 -1
  161. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  162. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  163. package/dist/DropdownMenu/DropdownMenuRoot.cjs +1 -1
  164. package/dist/DropdownMenu/DropdownMenuRoot.cjs.map +1 -1
  165. package/dist/DropdownMenu/DropdownMenuRoot.js +1 -1
  166. package/dist/DropdownMenu/DropdownMenuRoot.js.map +1 -1
  167. package/dist/DropdownMenu/DropdownMenuSub.cjs +1 -1
  168. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  169. package/dist/DropdownMenu/DropdownMenuSub.js +1 -1
  170. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  171. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  172. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  173. package/dist/Editable/EditableInput.cjs.map +1 -1
  174. package/dist/Editable/EditableInput.js.map +1 -1
  175. package/dist/Editable/EditableRoot.cjs +1 -1
  176. package/dist/Editable/EditableRoot.cjs.map +1 -1
  177. package/dist/Editable/EditableRoot.js +1 -1
  178. package/dist/Editable/EditableRoot.js.map +1 -1
  179. package/dist/FocusScope/FocusScope.cjs.map +1 -1
  180. package/dist/FocusScope/FocusScope.js.map +1 -1
  181. package/dist/HoverCard/HoverCardContentImpl.cjs.map +1 -1
  182. package/dist/HoverCard/HoverCardContentImpl.js.map +1 -1
  183. package/dist/HoverCard/HoverCardRoot.cjs +1 -1
  184. package/dist/HoverCard/HoverCardRoot.cjs.map +1 -1
  185. package/dist/HoverCard/HoverCardRoot.js +1 -1
  186. package/dist/HoverCard/HoverCardRoot.js.map +1 -1
  187. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  188. package/dist/Listbox/ListboxFilter.js.map +1 -1
  189. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  190. package/dist/Listbox/ListboxItem.js.map +1 -1
  191. package/dist/Listbox/ListboxRoot.cjs +1 -1
  192. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  193. package/dist/Listbox/ListboxRoot.js +1 -1
  194. package/dist/Listbox/ListboxRoot.js.map +1 -1
  195. package/dist/Listbox/ListboxVirtualizer.cjs +3 -3
  196. package/dist/Listbox/ListboxVirtualizer.cjs.map +1 -1
  197. package/dist/Listbox/ListboxVirtualizer.js +3 -3
  198. package/dist/Listbox/ListboxVirtualizer.js.map +1 -1
  199. package/dist/Menu/MenuCheckboxItem.cjs.map +1 -1
  200. package/dist/Menu/MenuCheckboxItem.js.map +1 -1
  201. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  202. package/dist/Menu/MenuContentImpl.js.map +1 -1
  203. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  204. package/dist/Menu/MenuItemImpl.js.map +1 -1
  205. package/dist/Menu/MenuItemIndicator.cjs.map +1 -1
  206. package/dist/Menu/MenuItemIndicator.js.map +1 -1
  207. package/dist/Menu/MenuRadioGroup.cjs.map +1 -1
  208. package/dist/Menu/MenuRadioGroup.js.map +1 -1
  209. package/dist/Menu/MenuRoot.cjs +1 -1
  210. package/dist/Menu/MenuRoot.cjs.map +1 -1
  211. package/dist/Menu/MenuRoot.js +1 -1
  212. package/dist/Menu/MenuRoot.js.map +1 -1
  213. package/dist/Menu/MenuSub.cjs +1 -1
  214. package/dist/Menu/MenuSub.cjs.map +1 -1
  215. package/dist/Menu/MenuSub.js +1 -1
  216. package/dist/Menu/MenuSub.js.map +1 -1
  217. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  218. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  219. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  220. package/dist/Menubar/MenubarContent.js.map +1 -1
  221. package/dist/Menubar/MenubarMenu.cjs.map +1 -1
  222. package/dist/Menubar/MenubarMenu.js.map +1 -1
  223. package/dist/Menubar/MenubarRoot.cjs.map +1 -1
  224. package/dist/Menubar/MenubarRoot.js.map +1 -1
  225. package/dist/Menubar/MenubarSub.cjs +1 -1
  226. package/dist/Menubar/MenubarSub.cjs.map +1 -1
  227. package/dist/Menubar/MenubarSub.js +1 -1
  228. package/dist/Menubar/MenubarSub.js.map +1 -1
  229. package/dist/Menubar/MenubarTrigger.cjs.map +1 -1
  230. package/dist/Menubar/MenubarTrigger.js.map +1 -1
  231. package/dist/NavigationMenu/NavigationMenuContent.cjs.map +1 -1
  232. package/dist/NavigationMenu/NavigationMenuContent.js.map +1 -1
  233. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  234. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  235. package/dist/NavigationMenu/NavigationMenuIndicator.cjs.map +1 -1
  236. package/dist/NavigationMenu/NavigationMenuIndicator.js.map +1 -1
  237. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  238. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  239. package/dist/NavigationMenu/NavigationMenuList.cjs.map +1 -1
  240. package/dist/NavigationMenu/NavigationMenuList.js.map +1 -1
  241. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  242. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  243. package/dist/NavigationMenu/NavigationMenuSub.cjs.map +1 -1
  244. package/dist/NavigationMenu/NavigationMenuSub.js.map +1 -1
  245. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  246. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  247. package/dist/NavigationMenu/NavigationMenuViewport.cjs.map +1 -1
  248. package/dist/NavigationMenu/NavigationMenuViewport.js.map +1 -1
  249. package/dist/NumberField/NumberFieldInput.cjs +2 -2
  250. package/dist/NumberField/NumberFieldInput.cjs.map +1 -1
  251. package/dist/NumberField/NumberFieldInput.js +2 -2
  252. package/dist/NumberField/NumberFieldInput.js.map +1 -1
  253. package/dist/NumberField/NumberFieldRoot.cjs +8 -5
  254. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  255. package/dist/NumberField/NumberFieldRoot.js +8 -5
  256. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  257. package/dist/Pagination/PaginationFirst.cjs.map +1 -1
  258. package/dist/Pagination/PaginationFirst.js.map +1 -1
  259. package/dist/Pagination/PaginationLast.cjs.map +1 -1
  260. package/dist/Pagination/PaginationLast.js.map +1 -1
  261. package/dist/Pagination/PaginationList.cjs.map +1 -1
  262. package/dist/Pagination/PaginationList.js.map +1 -1
  263. package/dist/Pagination/PaginationListItem.cjs.map +1 -1
  264. package/dist/Pagination/PaginationListItem.js.map +1 -1
  265. package/dist/Pagination/PaginationNext.cjs.map +1 -1
  266. package/dist/Pagination/PaginationNext.js.map +1 -1
  267. package/dist/Pagination/PaginationPrev.cjs.map +1 -1
  268. package/dist/Pagination/PaginationPrev.js.map +1 -1
  269. package/dist/Pagination/PaginationRoot.cjs.map +1 -1
  270. package/dist/Pagination/PaginationRoot.js.map +1 -1
  271. package/dist/PinInput/PinInputInput.cjs +1 -1
  272. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  273. package/dist/PinInput/PinInputInput.js +1 -1
  274. package/dist/PinInput/PinInputInput.js.map +1 -1
  275. package/dist/PinInput/PinInputRoot.cjs.map +1 -1
  276. package/dist/PinInput/PinInputRoot.js.map +1 -1
  277. package/dist/Popover/PopoverAnchor.cjs.map +1 -1
  278. package/dist/Popover/PopoverAnchor.js.map +1 -1
  279. package/dist/Popover/PopoverContentModal.cjs.map +1 -1
  280. package/dist/Popover/PopoverContentModal.js.map +1 -1
  281. package/dist/Popover/PopoverContentNonModal.cjs.map +1 -1
  282. package/dist/Popover/PopoverContentNonModal.js.map +1 -1
  283. package/dist/Popover/PopoverRoot.cjs +1 -1
  284. package/dist/Popover/PopoverRoot.cjs.map +1 -1
  285. package/dist/Popover/PopoverRoot.js +1 -1
  286. package/dist/Popover/PopoverRoot.js.map +1 -1
  287. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  288. package/dist/Popover/PopoverTrigger.js.map +1 -1
  289. package/dist/Popper/PopperAnchor.cjs.map +1 -1
  290. package/dist/Popper/PopperAnchor.js.map +1 -1
  291. package/dist/Popper/PopperArrow.cjs.map +1 -1
  292. package/dist/Popper/PopperArrow.js.map +1 -1
  293. package/dist/Popper/PopperContent.cjs.map +1 -1
  294. package/dist/Popper/PopperContent.js.map +1 -1
  295. package/dist/Presence/Presence.cjs.map +1 -1
  296. package/dist/Presence/Presence.js.map +1 -1
  297. package/dist/Presence/usePresence.cjs.map +1 -1
  298. package/dist/Presence/usePresence.js.map +1 -1
  299. package/dist/Primitive/Slot.cjs +1 -9
  300. package/dist/Primitive/Slot.cjs.map +1 -1
  301. package/dist/Primitive/Slot.js +1 -9
  302. package/dist/Primitive/Slot.js.map +1 -1
  303. package/dist/Progress/ProgressRoot.cjs +3 -2
  304. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  305. package/dist/Progress/ProgressRoot.js +3 -2
  306. package/dist/Progress/ProgressRoot.js.map +1 -1
  307. package/dist/RadioGroup/Radio.cjs.map +1 -1
  308. package/dist/RadioGroup/Radio.js.map +1 -1
  309. package/dist/RadioGroup/RadioGroupItem.cjs.map +1 -1
  310. package/dist/RadioGroup/RadioGroupItem.js.map +1 -1
  311. package/dist/RadioGroup/RadioGroupRoot.cjs.map +1 -1
  312. package/dist/RadioGroup/RadioGroupRoot.js.map +1 -1
  313. package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
  314. package/dist/RangeCalendar/RangeCalendarCell.cjs.map +1 -1
  315. package/dist/RangeCalendar/RangeCalendarCell.js +2 -2
  316. package/dist/RangeCalendar/RangeCalendarCell.js.map +1 -1
  317. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +28 -9
  318. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  319. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +28 -9
  320. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  321. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  322. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  323. package/dist/RangeCalendar/RangeCalendarHeading.cjs.map +1 -1
  324. package/dist/RangeCalendar/RangeCalendarHeading.js.map +1 -1
  325. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  326. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  327. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  328. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  329. package/dist/RangeCalendar/RangeCalendarRoot.cjs +26 -9
  330. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  331. package/dist/RangeCalendar/RangeCalendarRoot.js +26 -9
  332. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  333. package/dist/RangeCalendar/useRangeCalendar.cjs +21 -4
  334. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  335. package/dist/RangeCalendar/useRangeCalendar.js +21 -4
  336. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  337. package/dist/RovingFocus/RovingFocusGroup.cjs +1 -1
  338. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  339. package/dist/RovingFocus/RovingFocusGroup.js +1 -1
  340. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  341. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  342. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  343. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs.map +1 -1
  344. package/dist/ScrollArea/ScrollAreaCornerImpl.js.map +1 -1
  345. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  346. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  347. package/dist/ScrollArea/ScrollAreaScrollbar.cjs.map +1 -1
  348. package/dist/ScrollArea/ScrollAreaScrollbar.js.map +1 -1
  349. package/dist/ScrollArea/ScrollAreaScrollbarAuto.cjs.map +1 -1
  350. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js.map +1 -1
  351. package/dist/ScrollArea/ScrollAreaScrollbarHover.cjs.map +1 -1
  352. package/dist/ScrollArea/ScrollAreaScrollbarHover.js.map +1 -1
  353. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  354. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  355. package/dist/ScrollArea/ScrollAreaScrollbarScroll.cjs.map +1 -1
  356. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js.map +1 -1
  357. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs.map +1 -1
  358. package/dist/ScrollArea/ScrollAreaScrollbarX.js.map +1 -1
  359. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs.map +1 -1
  360. package/dist/ScrollArea/ScrollAreaScrollbarY.js.map +1 -1
  361. package/dist/ScrollArea/ScrollAreaThumb.cjs.map +1 -1
  362. package/dist/ScrollArea/ScrollAreaThumb.js.map +1 -1
  363. package/dist/ScrollArea/ScrollAreaViewport.cjs.map +1 -1
  364. package/dist/ScrollArea/ScrollAreaViewport.js.map +1 -1
  365. package/dist/Select/BubbleSelect.cjs.map +1 -1
  366. package/dist/Select/BubbleSelect.js.map +1 -1
  367. package/dist/Select/SelectContent.cjs.map +1 -1
  368. package/dist/Select/SelectContent.js.map +1 -1
  369. package/dist/Select/SelectContentImpl.cjs +1 -1
  370. package/dist/Select/SelectContentImpl.cjs.map +1 -1
  371. package/dist/Select/SelectContentImpl.js +1 -1
  372. package/dist/Select/SelectContentImpl.js.map +1 -1
  373. package/dist/Select/SelectItem.cjs.map +1 -1
  374. package/dist/Select/SelectItem.js.map +1 -1
  375. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  376. package/dist/Select/SelectItemAlignedPosition.cjs.map +1 -1
  377. package/dist/Select/SelectItemAlignedPosition.js +1 -1
  378. package/dist/Select/SelectItemAlignedPosition.js.map +1 -1
  379. package/dist/Select/SelectItemText.cjs.map +1 -1
  380. package/dist/Select/SelectItemText.js.map +1 -1
  381. package/dist/Select/SelectProvider.cjs.map +1 -1
  382. package/dist/Select/SelectProvider.js.map +1 -1
  383. package/dist/Select/SelectRoot.cjs +3 -1
  384. package/dist/Select/SelectRoot.cjs.map +1 -1
  385. package/dist/Select/SelectRoot.js +3 -1
  386. package/dist/Select/SelectRoot.js.map +1 -1
  387. package/dist/Select/SelectScrollButtonImpl.cjs.map +1 -1
  388. package/dist/Select/SelectScrollButtonImpl.js.map +1 -1
  389. package/dist/Select/SelectTrigger.cjs.map +1 -1
  390. package/dist/Select/SelectTrigger.js.map +1 -1
  391. package/dist/Select/SelectValue.cjs.map +1 -1
  392. package/dist/Select/SelectValue.js.map +1 -1
  393. package/dist/Select/SelectViewport.cjs.map +1 -1
  394. package/dist/Select/SelectViewport.js.map +1 -1
  395. package/dist/Slider/SliderHorizontal.cjs +7 -4
  396. package/dist/Slider/SliderHorizontal.cjs.map +1 -1
  397. package/dist/Slider/SliderHorizontal.js +7 -4
  398. package/dist/Slider/SliderHorizontal.js.map +1 -1
  399. package/dist/Slider/SliderRange.cjs +2 -2
  400. package/dist/Slider/SliderRange.cjs.map +1 -1
  401. package/dist/Slider/SliderRange.js +2 -2
  402. package/dist/Slider/SliderRange.js.map +1 -1
  403. package/dist/Slider/SliderRoot.cjs.map +1 -1
  404. package/dist/Slider/SliderRoot.js.map +1 -1
  405. package/dist/Slider/SliderThumb.cjs.map +1 -1
  406. package/dist/Slider/SliderThumb.js.map +1 -1
  407. package/dist/Slider/SliderThumbImpl.cjs +3 -3
  408. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  409. package/dist/Slider/SliderThumbImpl.js +3 -3
  410. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  411. package/dist/Slider/SliderVertical.cjs +7 -4
  412. package/dist/Slider/SliderVertical.cjs.map +1 -1
  413. package/dist/Slider/SliderVertical.js +7 -4
  414. package/dist/Slider/SliderVertical.js.map +1 -1
  415. package/dist/Slider/utils.cjs +1 -1
  416. package/dist/Slider/utils.cjs.map +1 -1
  417. package/dist/Slider/utils.js +1 -1
  418. package/dist/Slider/utils.js.map +1 -1
  419. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  420. package/dist/Splitter/SplitterGroup.js.map +1 -1
  421. package/dist/Splitter/SplitterPanel.cjs +16 -10
  422. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  423. package/dist/Splitter/SplitterPanel.js +16 -10
  424. package/dist/Splitter/SplitterPanel.js.map +1 -1
  425. package/dist/Stepper/StepperIndicator.cjs.map +1 -1
  426. package/dist/Stepper/StepperIndicator.js.map +1 -1
  427. package/dist/Stepper/StepperItem.cjs.map +1 -1
  428. package/dist/Stepper/StepperItem.js.map +1 -1
  429. package/dist/Stepper/StepperRoot.cjs +30 -3
  430. package/dist/Stepper/StepperRoot.cjs.map +1 -1
  431. package/dist/Stepper/StepperRoot.js +30 -3
  432. package/dist/Stepper/StepperRoot.js.map +1 -1
  433. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  434. package/dist/Stepper/StepperTrigger.js.map +1 -1
  435. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  436. package/dist/Switch/SwitchRoot.js.map +1 -1
  437. package/dist/Tabs/TabsContent.cjs.map +1 -1
  438. package/dist/Tabs/TabsContent.js.map +1 -1
  439. package/dist/Tabs/TabsIndicator.cjs.map +1 -1
  440. package/dist/Tabs/TabsIndicator.js.map +1 -1
  441. package/dist/Tabs/TabsList.cjs.map +1 -1
  442. package/dist/Tabs/TabsList.js.map +1 -1
  443. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  444. package/dist/Tabs/TabsRoot.js.map +1 -1
  445. package/dist/Tabs/TabsTrigger.cjs.map +1 -1
  446. package/dist/Tabs/TabsTrigger.js.map +1 -1
  447. package/dist/TagsInput/TagsInputInput.cjs +1 -0
  448. package/dist/TagsInput/TagsInputInput.cjs.map +1 -1
  449. package/dist/TagsInput/TagsInputInput.js +1 -0
  450. package/dist/TagsInput/TagsInputInput.js.map +1 -1
  451. package/dist/TagsInput/TagsInputItem.cjs.map +1 -1
  452. package/dist/TagsInput/TagsInputItem.js.map +1 -1
  453. package/dist/TagsInput/TagsInputItemDelete.cjs.map +1 -1
  454. package/dist/TagsInput/TagsInputItemDelete.js.map +1 -1
  455. package/dist/TagsInput/TagsInputRoot.cjs +1 -1
  456. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  457. package/dist/TagsInput/TagsInputRoot.js +1 -1
  458. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  459. package/dist/TimeField/TimeFieldInput.cjs +1 -0
  460. package/dist/TimeField/TimeFieldInput.cjs.map +1 -1
  461. package/dist/TimeField/TimeFieldInput.js +1 -0
  462. package/dist/TimeField/TimeFieldInput.js.map +1 -1
  463. package/dist/TimeField/TimeFieldRoot.cjs +13 -4
  464. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  465. package/dist/TimeField/TimeFieldRoot.js +13 -4
  466. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  467. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  468. package/dist/Toast/ToastAnnounce.js.map +1 -1
  469. package/dist/Toast/ToastRoot.cjs.map +1 -1
  470. package/dist/Toast/ToastRoot.js.map +1 -1
  471. package/dist/Toast/ToastRootImpl.cjs +1 -1
  472. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  473. package/dist/Toast/ToastRootImpl.js +1 -1
  474. package/dist/Toast/ToastRootImpl.js.map +1 -1
  475. package/dist/Toast/ToastViewport.cjs +1 -1
  476. package/dist/Toast/ToastViewport.cjs.map +1 -1
  477. package/dist/Toast/ToastViewport.js +1 -1
  478. package/dist/Toast/ToastViewport.js.map +1 -1
  479. package/dist/Toggle/Toggle.cjs.map +1 -1
  480. package/dist/Toggle/Toggle.js.map +1 -1
  481. package/dist/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  482. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  483. package/dist/ToggleGroup/ToggleGroupRoot.cjs.map +1 -1
  484. package/dist/ToggleGroup/ToggleGroupRoot.js.map +1 -1
  485. package/dist/Toolbar/ToolbarRoot.cjs.map +1 -1
  486. package/dist/Toolbar/ToolbarRoot.js.map +1 -1
  487. package/dist/Tooltip/TooltipContentImpl.cjs +1 -1
  488. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  489. package/dist/Tooltip/TooltipContentImpl.js +1 -1
  490. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  491. package/dist/Tooltip/TooltipRoot.cjs +1 -1
  492. package/dist/Tooltip/TooltipRoot.cjs.map +1 -1
  493. package/dist/Tooltip/TooltipRoot.js +1 -1
  494. package/dist/Tooltip/TooltipRoot.js.map +1 -1
  495. package/dist/Tooltip/TooltipTrigger.cjs +1 -1
  496. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  497. package/dist/Tooltip/TooltipTrigger.js +1 -1
  498. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  499. package/dist/Tree/TreeItem.cjs +4 -1
  500. package/dist/Tree/TreeItem.cjs.map +1 -1
  501. package/dist/Tree/TreeItem.js +4 -1
  502. package/dist/Tree/TreeItem.js.map +1 -1
  503. package/dist/Tree/TreeRoot.cjs +29 -3
  504. package/dist/Tree/TreeRoot.cjs.map +1 -1
  505. package/dist/Tree/TreeRoot.js +29 -3
  506. package/dist/Tree/TreeRoot.js.map +1 -1
  507. package/dist/Tree/TreeVirtualizer.cjs +2 -2
  508. package/dist/Tree/TreeVirtualizer.cjs.map +1 -1
  509. package/dist/Tree/TreeVirtualizer.js +2 -2
  510. package/dist/Tree/TreeVirtualizer.js.map +1 -1
  511. package/dist/Viewport/Viewport.cjs.map +1 -1
  512. package/dist/Viewport/Viewport.js.map +1 -1
  513. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs.map +1 -1
  514. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js.map +1 -1
  515. package/dist/component/BaseSeparator.cjs.map +1 -1
  516. package/dist/component/BaseSeparator.js.map +1 -1
  517. package/dist/date/calendar.cjs.map +1 -1
  518. package/dist/date/calendar.js.map +1 -1
  519. package/dist/date/parser.cjs +22 -7
  520. package/dist/date/parser.cjs.map +1 -1
  521. package/dist/date/parser.js +23 -8
  522. package/dist/date/parser.js.map +1 -1
  523. package/dist/date/useDateField.cjs +21 -6
  524. package/dist/date/useDateField.cjs.map +1 -1
  525. package/dist/date/useDateField.js +21 -6
  526. package/dist/date/useDateField.js.map +1 -1
  527. package/dist/date/utils.cjs +31 -2
  528. package/dist/date/utils.cjs.map +1 -1
  529. package/dist/date/utils.js +30 -3
  530. package/dist/date/utils.js.map +1 -1
  531. package/dist/index.d.ts +492 -351
  532. package/dist/shared/useBodyScrollLock.cjs +2 -2
  533. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  534. package/dist/shared/useBodyScrollLock.js +2 -2
  535. package/dist/shared/useBodyScrollLock.js.map +1 -1
  536. package/dist/shared/useDateFormatter.cjs +12 -10
  537. package/dist/shared/useDateFormatter.cjs.map +1 -1
  538. package/dist/shared/useDateFormatter.js +12 -10
  539. package/dist/shared/useDateFormatter.js.map +1 -1
  540. package/dist/shared/useDirection.cjs.map +1 -1
  541. package/dist/shared/useDirection.js.map +1 -1
  542. package/dist/shared/useForwardProps.cjs +4 -2
  543. package/dist/shared/useForwardProps.cjs.map +1 -1
  544. package/dist/shared/useForwardProps.js +5 -3
  545. package/dist/shared/useForwardProps.js.map +1 -1
  546. package/dist/shared/useGraceArea.cjs.map +1 -1
  547. package/dist/shared/useGraceArea.js.map +1 -1
  548. package/dist/shared/useId.cjs +2 -2
  549. package/dist/shared/useId.cjs.map +1 -1
  550. package/dist/shared/useId.js +2 -2
  551. package/dist/shared/useId.js.map +1 -1
  552. package/dist/shared/useLocale.cjs.map +1 -1
  553. package/dist/shared/useLocale.js.map +1 -1
  554. package/dist/shared/useNonce.cjs.map +1 -1
  555. package/dist/shared/useNonce.js.map +1 -1
  556. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarRoot.js","sources":["../../src/Calendar/CalendarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\n\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Formatter } from '@/shared'\nimport type { Direction } from '@/shared/types'\n\nimport type { DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { createContext, useDirection, useLocale } from '@/shared'\nimport { getDefaultDate, handleCalendarInitialFocus } from '@/shared/date'\nimport { isEqualDay, isSameDay } from '@internationalized/date'\nimport { useCalendar, useCalendarState } from './useCalendar'\n\ntype CalendarRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | DateValue[] | undefined>\n placeholder: Ref<DateValue>\n pagedNavigation: Ref<boolean>\n preventDeselect: Ref<boolean>\n grid: Ref<Grid<DateValue>[]>\n weekDays: Ref<string[]>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n weekdayFormat: Ref<WeekDayFormat>\n fixedWeeks: Ref<boolean>\n multiple: Ref<boolean>\n numberOfMonths: Ref<number>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n initialFocus: Ref<boolean>\n onDateChange: (date: DateValue) => void\n onPlaceholderChange: (date: DateValue) => void\n fullCalendarLabel: Ref<string>\n parentElement: Ref<HTMLElement | undefined>\n headingValue: Ref<string>\n isInvalid: Ref<boolean>\n isDateDisabled: Matcher\n isDateSelected: Matcher\n isDateUnavailable?: Matcher\n isOutsideVisibleView: (date: DateValue) => boolean\n prevPage: (prevPageFunc?: (date: DateValue) => DateValue) => void\n nextPage: (nextPageFunc?: (date: DateValue) => DateValue) => void\n isNextButtonDisabled: (nextPageFunc?: (date: DateValue) => DateValue) => boolean\n isPrevButtonDisabled: (prevPageFunc?: (date: DateValue) => DateValue) => boolean\n formatter: Formatter\n dir: Ref<Direction>\n}\n\ninterface BaseCalendarRootProps extends PrimitiveProps {\n /** The default value for the calendar */\n defaultValue?: DateValue\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */\n placeholder?: DateValue\n /** This property causes the previous and next buttons to navigate by the number of months displayed at once, rather than one month */\n pagedNavigation?: boolean\n /** Whether or not to prevent the user from deselecting a date without selecting another date first */\n preventDeselect?: boolean\n /** The day of the week to start the calendar on */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The format to use for the weekday strings provided via the weekdays slot prop */\n weekdayFormat?: WeekDayFormat\n /** The accessible label for the calendar */\n calendarLabel?: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** The number of months to display at once */\n numberOfMonths?: number\n /** Whether or not the calendar is disabled */\n disabled?: boolean\n /** Whether or not the calendar is readonly */\n readonly?: boolean\n /** If true, the calendar will focus the selected day, today, or the first day of the month depending on what is visible when the calendar is mounted */\n initialFocus?: boolean\n /** A function that returns whether or not a date is disabled */\n isDateDisabled?: Matcher\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** The reading direction of the calendar when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** A function that returns the next page of the calendar. It receives the current placeholder as an argument inside the component. */\n nextPage?: (placeholder: DateValue) => DateValue\n /** A function that returns the previous page of the calendar. It receives the current placeholder as an argument inside the component. */\n prevPage?: (placeholder: DateValue) => DateValue\n}\n\nexport interface MultipleCalendarRootProps extends BaseCalendarRootProps {\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateValue[] | undefined\n /** Whether or not multiple dates can be selected */\n multiple: true\n}\n\nexport interface SingleCalendarRootProps extends BaseCalendarRootProps {\n /** The controlled checked state of the calendar. Can be bound as `v-model`. */\n modelValue?: DateValue | undefined\n /** Whether or not multiple dates can be selected */\n multiple?: false\n}\n\nexport type CalendarRootProps = MultipleCalendarRootProps | SingleCalendarRootProps\n\nexport type CalendarRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n}\n\nexport const [injectCalendarRootContext, provideCalendarRootContext]\n = createContext<CalendarRootContext>('CalendarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\nimport { onMounted, toRefs, watch } from 'vue'\n\nconst props = withDefaults(defineProps<CalendarRootProps>(), {\n defaultValue: undefined,\n as: 'div',\n pagedNavigation: false,\n preventDeselect: false,\n weekStartsOn: 0,\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n multiple: false,\n numberOfMonths: 1,\n disabled: false,\n readonly: false,\n initialFocus: false,\n placeholder: undefined,\n isDateDisabled: undefined,\n isDateUnavailable: undefined,\n})\nconst emits = defineEmits<CalendarRootEmits>()\ndefineSlots<{\n default: (props: {\n /** The current date of the placeholder */\n date: DateValue\n /** The grid of dates */\n grid: Grid<DateValue>[]\n /** The days of the week */\n weekDays: string[]\n /** The start of the week */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The calendar locale */\n locale: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks: boolean\n /** The current date of the calendar */\n modelValue: DateValue | undefined\n }) => any\n}>()\n\nconst {\n disabled,\n readonly,\n initialFocus,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n multiple,\n minValue,\n maxValue,\n numberOfMonths,\n preventDeselect,\n isDateDisabled: propsIsDateDisabled,\n isDateUnavailable: propsIsDateUnavailable,\n calendarLabel,\n defaultValue,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n dir: propDir,\n locale: propLocale,\n} = toRefs(props)\n\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateValue | DateValue[] | undefined>\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n locale: props.locale,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nfunction onPlaceholderChange(value: DateValue) {\n placeholder.value = value.copy()\n}\n\nconst {\n fullCalendarLabel,\n headingValue,\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n weekdays,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n formatter,\n grid,\n} = useCalendar({\n locale,\n placeholder,\n weekStartsOn,\n fixedWeeks,\n numberOfMonths,\n minValue,\n maxValue,\n disabled,\n weekdayFormat,\n pagedNavigation,\n isDateDisabled: propsIsDateDisabled.value,\n isDateUnavailable: propsIsDateUnavailable.value,\n calendarLabel,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n})\n\nconst {\n isInvalid,\n isDateSelected,\n} = useCalendarState({\n date: modelValue,\n isDateDisabled,\n isDateUnavailable,\n})\n\nwatch(modelValue, (_modelValue) => {\n if (Array.isArray(_modelValue) && _modelValue.length) {\n const lastValue = _modelValue[_modelValue.length - 1]\n if (lastValue && !isEqualDay(placeholder.value, lastValue))\n onPlaceholderChange(lastValue)\n }\n else if (!Array.isArray(_modelValue) && _modelValue && !isEqualDay(placeholder.value, _modelValue)) {\n onPlaceholderChange(_modelValue)\n }\n})\n\nfunction onDateChange(value: DateValue) {\n if (!multiple.value) {\n if (!modelValue.value) {\n modelValue.value = value.copy()\n return\n }\n\n if (!preventDeselect.value && isEqualDay(modelValue.value as DateValue, value)) {\n placeholder.value = value.copy()\n modelValue.value = undefined\n }\n else { modelValue.value = value.copy() }\n }\n else if (!modelValue.value) {\n modelValue.value = [value.copy()]\n }\n else if (Array.isArray(modelValue.value)) {\n const index = modelValue.value.findIndex(date => isSameDay(date, value))\n if (index === -1) {\n modelValue.value = [...modelValue.value, value]\n }\n else if (!preventDeselect.value) {\n const next = modelValue.value.filter(date => !isSameDay(date, value))\n if (!next.length) {\n placeholder.value = value.copy()\n modelValue.value = undefined\n return\n }\n modelValue.value = next.map(date => date.copy())\n }\n }\n}\n\nonMounted(() => {\n if (initialFocus.value)\n handleCalendarInitialFocus(parentElement.value)\n})\n\nprovideCalendarRootContext({\n isDateUnavailable,\n dir,\n isDateDisabled,\n locale,\n formatter,\n modelValue,\n placeholder,\n disabled,\n initialFocus,\n pagedNavigation,\n grid,\n weekDays: weekdays,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n multiple,\n numberOfMonths,\n readonly,\n preventDeselect,\n fullCalendarLabel,\n headingValue,\n isInvalid,\n isDateSelected,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n parentElement,\n onPlaceholderChange,\n onDateChange,\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n role=\"application\"\n :aria-label=\"fullCalendarLabel\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n >\n <slot\n :date=\"placeholder\"\n :grid=\"grid\"\n :week-days=\"weekdays\"\n :week-starts-on=\"weekStartsOn\"\n :locale=\"locale\"\n :fixed-weeks=\"fixedWeeks\"\n :model-value=\"modelValue\"\n />\n <div\n style=\"border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; white-space: nowrap; width: 1px;\"\n >\n <div\n role=\"heading\"\n aria-level=\"2\"\n >\n {{ fullCalendarLabel }}\n </div>\n </div>\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoHO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/D,cAAmC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQrD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAiBd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAoBd,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAgB,EAAA,mBAAA;AAAA,MAChB,iBAAmB,EAAA,sBAAA;AAAA,MACnB,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAU,EAAA,aAAA;AAAA,MACV,QAAU,EAAA,aAAA;AAAA,MACV,GAAK,EAAA,OAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACV,GAAI,OAAO,KAAK,CAAA;AAEhB,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAgB,EAAA,aAAA,KACtC,mBAAoB,EAAA;AACxB,IAAM,MAAA,MAAA,GAAS,UAAU,UAAU,CAAA;AACnC,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,cAAc,YAAa,CAAA,KAAA;AAAA,MAC3B,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,cAAc,cAAe,CAAA;AAAA,MACjC,oBAAoB,KAAM,CAAA,WAAA;AAAA,MAC1B,cAAc,UAAW,CAAA,KAAA;AAAA,MACzB,QAAQ,KAAM,CAAA;AAAA,KACf,CAAA;AAED,IAAA,MAAM,WAAc,GAAA,SAAA,CAAU,KAAO,EAAA,aAAA,EAAe,KAAO,EAAA;AAAA,MACzD,YAAc,EAAA,KAAA,CAAM,kBAAsB,IAAA,WAAA,CAAY,IAAK,EAAA;AAAA,MAC3D,OAAA,EAAU,MAAM,WAAgB,KAAA;AAAA,KACjC,CAAA;AAED,IAAA,SAAS,oBAAoB,KAAkB,EAAA;AAC7C,MAAY,WAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,EAAA;AAAA;AAGjC,IAAM,MAAA;AAAA,MACJ,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,QACE,WAAY,CAAA;AAAA,MACd,MAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAgB,mBAAoB,CAAA,KAAA;AAAA,MACpC,mBAAmB,sBAAuB,CAAA,KAAA;AAAA,MAC1C,aAAA;AAAA,MACA,QAAU,EAAA,aAAA;AAAA,MACV,QAAU,EAAA;AAAA,KACX,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA;AAAA,QACE,gBAAiB,CAAA;AAAA,MACnB,IAAM,EAAA,UAAA;AAAA,MACN,cAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAM,KAAA,CAAA,UAAA,EAAY,CAAC,WAAgB,KAAA;AACjC,MAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAQ,EAAA;AACpD,QAAA,MAAM,SAAY,GAAA,WAAA,CAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAA;AACpD,QAAA,IAAI,SAAa,IAAA,CAAC,UAAW,CAAA,WAAA,CAAY,OAAO,SAAS,CAAA;AACvD,UAAA,mBAAA,CAAoB,SAAS,CAAA;AAAA,OAExB,MAAA,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,WAAW,CAAA,IAAK,WAAe,IAAA,CAAC,UAAW,CAAA,WAAA,CAAY,KAAO,EAAA,WAAW,CAAG,EAAA;AAClG,QAAA,mBAAA,CAAoB,WAAW,CAAA;AAAA;AACjC,KACD,CAAA;AAED,IAAA,SAAS,aAAa,KAAkB,EAAA;AACtC,MAAI,IAAA,CAAC,SAAS,KAAO,EAAA;AACnB,QAAI,IAAA,CAAC,WAAW,KAAO,EAAA;AACrB,UAAW,UAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,EAAA;AAC9B,UAAA;AAAA;AAGF,QAAA,IAAI,CAAC,eAAgB,CAAA,KAAA,IAAS,WAAW,UAAW,CAAA,KAAA,EAAoB,KAAK,CAAG,EAAA;AAC9E,UAAY,WAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,EAAA;AAC/B,UAAA,UAAA,CAAW,KAAQ,GAAA,MAAA;AAAA,SAEhB,MAAA;AAAE,UAAW,UAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,EAAA;AAAA;AAAE,OACzC,MAAA,IACS,CAAC,UAAA,CAAW,KAAO,EAAA;AAC1B,QAAA,UAAA,CAAW,KAAQ,GAAA,CAAC,KAAM,CAAA,IAAA,EAAM,CAAA;AAAA,OAEzB,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACxC,QAAM,MAAA,KAAA,GAAQ,WAAW,KAAM,CAAA,SAAA,CAAU,UAAQ,SAAU,CAAA,IAAA,EAAM,KAAK,CAAC,CAAA;AACvE,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,UAAA,CAAW,KAAQ,GAAA,CAAC,GAAG,UAAA,CAAW,OAAO,KAAK,CAAA;AAAA,SAChD,MAAA,IACS,CAAC,eAAA,CAAgB,KAAO,EAAA;AAC/B,UAAM,MAAA,IAAA,GAAO,WAAW,KAAM,CAAA,MAAA,CAAO,UAAQ,CAAC,SAAA,CAAU,IAAM,EAAA,KAAK,CAAC,CAAA;AACpE,UAAI,IAAA,CAAC,KAAK,MAAQ,EAAA;AAChB,YAAY,WAAA,CAAA,KAAA,GAAQ,MAAM,IAAK,EAAA;AAC/B,YAAA,UAAA,CAAW,KAAQ,GAAA,MAAA;AACnB,YAAA;AAAA;AAEF,UAAA,UAAA,CAAW,QAAQ,IAAK,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACjD;AACF;AAGF,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,YAAa,CAAA,KAAA;AACf,QAAA,0BAAA,CAA2B,cAAc,KAAK,CAAA;AAAA,KACjD,CAAA;AAED,IAA2B,0BAAA,CAAA;AAAA,MACzB,iBAAA;AAAA,MACA,GAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAU,EAAA,QAAA;AAAA,MACV,YAAA;AAAA,MACA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CalendarRoot.js","sources":["../../src/Calendar/CalendarRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\nimport type { PrimitiveProps } from '@/Primitive'\n\nimport type { Formatter } from '@/shared'\nimport type { Direction } from '@/shared/types'\nimport { isEqualDay, isSameDay } from '@internationalized/date'\nimport { createContext, useDirection, useLocale } from '@/shared'\nimport { getDefaultDate, handleCalendarInitialFocus } from '@/shared/date'\nimport { useCalendar, useCalendarState } from './useCalendar'\n\ntype CalendarRootContext = {\n locale: Ref<string>\n modelValue: Ref<DateValue | DateValue[] | undefined>\n placeholder: Ref<DateValue>\n pagedNavigation: Ref<boolean>\n preventDeselect: Ref<boolean>\n grid: Ref<Grid<DateValue>[]>\n weekDays: Ref<string[]>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n weekdayFormat: Ref<WeekDayFormat>\n fixedWeeks: Ref<boolean>\n multiple: Ref<boolean>\n numberOfMonths: Ref<number>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n initialFocus: Ref<boolean>\n onDateChange: (date: DateValue) => void\n onPlaceholderChange: (date: DateValue) => void\n fullCalendarLabel: Ref<string>\n parentElement: Ref<HTMLElement | undefined>\n headingValue: Ref<string>\n isInvalid: Ref<boolean>\n isDateDisabled: Matcher\n isDateSelected: Matcher\n isDateUnavailable?: Matcher\n isOutsideVisibleView: (date: DateValue) => boolean\n prevPage: (prevPageFunc?: (date: DateValue) => DateValue) => void\n nextPage: (nextPageFunc?: (date: DateValue) => DateValue) => void\n isNextButtonDisabled: (nextPageFunc?: (date: DateValue) => DateValue) => boolean\n isPrevButtonDisabled: (prevPageFunc?: (date: DateValue) => DateValue) => boolean\n formatter: Formatter\n dir: Ref<Direction>\n disableDaysOutsideCurrentView: Ref<boolean>\n}\n\nexport interface CalendarRootProps extends PrimitiveProps {\n /** The default value for the calendar */\n defaultValue?: DateValue\n /** The default placeholder date */\n defaultPlaceholder?: DateValue\n /** The placeholder date, which is used to determine what month to display when no date is selected */\n placeholder?: DateValue\n /** This property causes the previous and next buttons to navigate by the number of months displayed at once, rather than one month */\n pagedNavigation?: boolean\n /** Whether or not to prevent the user from deselecting a date without selecting another date first */\n preventDeselect?: boolean\n /** The day of the week to start the calendar on */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The format to use for the weekday strings provided via the weekdays slot prop */\n weekdayFormat?: WeekDayFormat\n /** The accessible label for the calendar */\n calendarLabel?: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks?: boolean\n /** The maximum date that can be selected */\n maxValue?: DateValue\n /** The minimum date that can be selected */\n minValue?: DateValue\n /** The locale to use for formatting dates */\n locale?: string\n /** The number of months to display at once */\n numberOfMonths?: number\n /** Whether the calendar is disabled */\n disabled?: boolean\n /** Whether the calendar is readonly */\n readonly?: boolean\n /** If true, the calendar will focus the selected day, today, or the first day of the month depending on what is visible when the calendar is mounted */\n initialFocus?: boolean\n /** A function that returns whether or not a date is disabled */\n isDateDisabled?: Matcher\n /** A function that returns whether or not a date is unavailable */\n isDateUnavailable?: Matcher\n /** The reading direction of the calendar when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** A function that returns the next page of the calendar. It receives the current placeholder as an argument inside the component. */\n nextPage?: (placeholder: DateValue) => DateValue\n /** A function that returns the previous page of the calendar. It receives the current placeholder as an argument inside the component. */\n prevPage?: (placeholder: DateValue) => DateValue\n /** The controlled checked state of the calendar */\n modelValue?: DateValue | DateValue[] | undefined\n /** Whether multiple dates can be selected */\n multiple?: boolean\n /** Whether or not to disable days outside the current view. */\n disableDaysOutsideCurrentView?: boolean\n}\n\nexport type CalendarRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateValue | undefined]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n}\n\nexport const [injectCalendarRootContext, provideCalendarRootContext]\n = createContext<CalendarRootContext>('CalendarRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { onMounted, toRefs, watch } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\n\nconst props = withDefaults(defineProps<CalendarRootProps>(), {\n defaultValue: undefined,\n as: 'div',\n pagedNavigation: false,\n preventDeselect: false,\n weekStartsOn: 0,\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n multiple: false,\n numberOfMonths: 1,\n disabled: false,\n readonly: false,\n initialFocus: false,\n placeholder: undefined,\n isDateDisabled: undefined,\n isDateUnavailable: undefined,\n disableDaysOutsideCurrentView: false,\n})\nconst emits = defineEmits<CalendarRootEmits>()\ndefineSlots<{\n default?: (props: {\n /** The current date of the placeholder */\n date: DateValue\n /** The grid of dates */\n grid: Grid<DateValue>[]\n /** The days of the week */\n weekDays: string[]\n /** The start of the week */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6\n /** The calendar locale */\n locale: string\n /** Whether or not to always display 6 weeks in the calendar */\n fixedWeeks: boolean\n /** The current date of the calendar */\n modelValue: DateValue | DateValue[] | undefined\n }) => any\n}>()\n\nconst {\n disabled,\n readonly,\n initialFocus,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n multiple,\n minValue,\n maxValue,\n numberOfMonths,\n preventDeselect,\n isDateDisabled: propsIsDateDisabled,\n isDateUnavailable: propsIsDateUnavailable,\n calendarLabel,\n defaultValue,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n dir: propDir,\n locale: propLocale,\n disableDaysOutsideCurrentView,\n} = toRefs(props)\n\nconst { primitiveElement, currentElement: parentElement }\n = usePrimitiveElement()\nconst locale = useLocale(propLocale)\nconst dir = useDirection(propDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: defaultValue.value,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateValue | DateValue[] | undefined>\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n defaultValue: modelValue.value,\n locale: props.locale,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nfunction onPlaceholderChange(value: DateValue) {\n placeholder.value = value.copy()\n}\n\nconst {\n fullCalendarLabel,\n headingValue,\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n weekdays,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n formatter,\n grid,\n} = useCalendar({\n locale,\n placeholder,\n weekStartsOn,\n fixedWeeks,\n numberOfMonths,\n minValue,\n maxValue,\n disabled,\n weekdayFormat,\n pagedNavigation,\n isDateDisabled: propsIsDateDisabled.value,\n isDateUnavailable: propsIsDateUnavailable.value,\n calendarLabel,\n nextPage: propsNextPage,\n prevPage: propsPrevPage,\n})\n\nconst {\n isInvalid,\n isDateSelected,\n} = useCalendarState({\n date: modelValue,\n isDateDisabled,\n isDateUnavailable,\n})\n\nwatch(modelValue, (_modelValue) => {\n if (Array.isArray(_modelValue) && _modelValue.length) {\n const lastValue = _modelValue[_modelValue.length - 1]\n if (lastValue && !isEqualDay(placeholder.value, lastValue))\n onPlaceholderChange(lastValue)\n }\n else if (!Array.isArray(_modelValue) && _modelValue && !isEqualDay(placeholder.value, _modelValue)) {\n onPlaceholderChange(_modelValue)\n }\n})\n\nfunction onDateChange(value: DateValue) {\n if (!multiple.value) {\n if (!modelValue.value) {\n modelValue.value = value.copy()\n return\n }\n\n if (!preventDeselect.value && isEqualDay(modelValue.value as DateValue, value)) {\n placeholder.value = value.copy()\n modelValue.value = undefined\n }\n else { modelValue.value = value.copy() }\n }\n else if (!modelValue.value) {\n modelValue.value = [value.copy()]\n }\n else if (Array.isArray(modelValue.value)) {\n const index = modelValue.value.findIndex(date => isSameDay(date, value))\n if (index === -1) {\n modelValue.value = [...modelValue.value, value]\n }\n else if (!preventDeselect.value) {\n const next = modelValue.value.filter(date => !isSameDay(date, value))\n if (!next.length) {\n placeholder.value = value.copy()\n modelValue.value = undefined\n return\n }\n modelValue.value = next.map(date => date.copy())\n }\n }\n}\n\nonMounted(() => {\n if (initialFocus.value)\n handleCalendarInitialFocus(parentElement.value)\n})\n\nprovideCalendarRootContext({\n isDateUnavailable,\n dir,\n isDateDisabled,\n locale,\n formatter,\n modelValue,\n placeholder,\n disabled,\n initialFocus,\n pagedNavigation,\n grid,\n weekDays: weekdays,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n multiple,\n numberOfMonths,\n readonly,\n preventDeselect,\n fullCalendarLabel,\n headingValue,\n isInvalid,\n isDateSelected,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n isOutsideVisibleView,\n nextPage,\n prevPage,\n parentElement,\n onPlaceholderChange,\n onDateChange,\n disableDaysOutsideCurrentView,\n})\n</script>\n\n<template>\n <Primitive\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n role=\"application\"\n :aria-label=\"fullCalendarLabel\"\n :data-readonly=\"readonly ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :data-invalid=\"isInvalid ? '' : undefined\"\n :dir=\"dir\"\n >\n <slot\n :date=\"placeholder\"\n :grid=\"grid\"\n :week-days=\"weekdays\"\n :week-starts-on=\"weekStartsOn\"\n :locale=\"locale\"\n :fixed-weeks=\"fixedWeeks\"\n :model-value=\"modelValue\"\n />\n <div\n style=\"border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0px; position: absolute; white-space: nowrap; width: 1px;\"\n >\n <div\n role=\"heading\"\n aria-level=\"2\"\n >\n {{ fullCalendarLabel }}\n </div>\n </div>\n </Primitive>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const date_calendar = require('../date/calendar.cjs');
4
- const date_comparators = require('../date/comparators.cjs');
5
3
  const date = require('@internationalized/date');
6
4
  const vue = require('vue');
5
+ const date_calendar = require('../date/calendar.cjs');
6
+ const date_comparators = require('../date/comparators.cjs');
7
7
  const shared_useDateFormatter = require('../shared/useDateFormatter.cjs');
8
8
 
9
9
  function useCalendarState(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendar.cjs","sources":["../../src/Calendar/useCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n*/\n\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\nimport type { DateFormatterOptions } from '@/shared/useDateFormatter'\nimport type { DateFields, DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { createMonths, getDaysInMonth, isAfter, isBefore, toDate } from '@/date'\nimport { useDateFormatter } from '@/shared'\nimport { isEqualMonth, isSameDay } from '@internationalized/date'\nimport { computed, ref, watch } from 'vue'\n\nexport type UseCalendarProps = {\n locale: Ref<string>\n placeholder: Ref<DateValue>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n minValue: Ref<DateValue | undefined>\n maxValue: Ref<DateValue | undefined>\n disabled: Ref<boolean>\n weekdayFormat: Ref<WeekDayFormat>\n pagedNavigation: Ref<boolean>\n isDateDisabled?: Matcher\n isDateUnavailable?: Matcher\n calendarLabel: Ref<string | undefined>\n nextPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n prevPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n}\n\nexport type UseCalendarStateProps = {\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n date: Ref<DateValue | DateValue[] | undefined>\n}\n\nexport function useCalendarState(props: UseCalendarStateProps) {\n function isDateSelected(dateObj: DateValue) {\n if (Array.isArray(props.date.value))\n return props.date.value.some(d => isSameDay(d, dateObj))\n\n else if (!props.date.value)\n return false\n\n else\n return isSameDay(props.date.value, dateObj)\n }\n\n const isInvalid = computed(\n () => {\n if (Array.isArray(props.date.value)) {\n if (!props.date.value.length)\n return false\n for (const dateObj of props.date.value) {\n if (props.isDateDisabled?.(dateObj))\n return true\n if (props.isDateUnavailable?.(dateObj))\n return true\n }\n }\n else {\n if (!props.date.value)\n return false\n if (props.isDateDisabled?.(props.date.value))\n return true\n if (props.isDateUnavailable?.(props.date.value))\n return true\n }\n return false\n },\n )\n\n return {\n isDateSelected,\n isInvalid,\n }\n}\n\nfunction handleNextDisabled(lastPeriodInView: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n const firstPeriodOfNextPage = nextPageFunc(lastPeriodInView)\n const diff = firstPeriodOfNextPage.compare(lastPeriodInView)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 1\n if (diff >= getDaysInMonth(lastPeriodInView))\n duration.month = 1\n return firstPeriodOfNextPage.set({ ...duration })\n}\nfunction handlePrevDisabled(firstPeriodInView: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n const lastPeriodOfPrevPage = prevPageFunc(firstPeriodInView)\n const diff = firstPeriodInView.compare(lastPeriodOfPrevPage)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 35\n if (diff >= getDaysInMonth(firstPeriodInView))\n duration.month = 13\n return lastPeriodOfPrevPage.set({ ...duration })\n}\nfunction handleNextPage(date: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n return nextPageFunc(date)\n}\n\nfunction handlePrevPage(date: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n return prevPageFunc(date)\n}\n\nexport function useCalendar(props: UseCalendarProps) {\n const formatter = useDateFormatter(props.locale.value)\n\n const headingFormatOptions = computed(() => {\n const options: DateFormatterOptions = {\n calendar: props.placeholder.value.calendar.identifier,\n }\n\n if (props.placeholder.value.calendar.identifier === 'gregory' && props.placeholder.value.era === 'BC')\n options.era = 'short'\n\n return options\n })\n\n const grid = ref<Grid<DateValue>[]>(createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })) as Ref<Grid<DateValue>[]>\n\n const visibleView = computed(() => {\n return grid.value.map(month => month.value)\n })\n\n function isOutsideVisibleView(date: DateValue) {\n return !visibleView.value.some(month => isEqualMonth(date, month))\n }\n\n const isNextButtonDisabled = (nextPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.maxValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n\n const lastPeriodInView = grid.value[grid.value.length - 1].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const firstPeriodOfNextPage = lastPeriodInView.add({ months: 1 }).set({ day: 1 })\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const firstPeriodOfNextPage = handleNextDisabled(lastPeriodInView, nextPageFunc || props.nextPage.value!)\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const isPrevButtonDisabled = (prevPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.minValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n const firstPeriodInView = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const lastPeriodOfPrevPage = firstPeriodInView.subtract({ months: 1 }).set({ day: 35 })\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n const lastPeriodOfPrevPage = handlePrevDisabled(firstPeriodInView, prevPageFunc || props.prevPage.value!)\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n function isDateDisabled(dateObj: DateValue) {\n if (props.isDateDisabled?.(dateObj) || props.disabled.value)\n return true\n if (props.maxValue.value && isAfter(dateObj, props.maxValue.value))\n return true\n if (props.minValue.value && isBefore(dateObj, props.minValue.value))\n return true\n return false\n }\n\n const isDateUnavailable = (date: DateValue) => {\n if (props.isDateUnavailable?.(date))\n return true\n return false\n }\n\n const weekdays = computed(() => {\n if (!grid.value.length)\n return []\n return grid.value[0].rows[0].map((date) => {\n return formatter.dayOfWeek(toDate(date), props.weekdayFormat.value)\n })\n })\n\n const nextPage = (nextPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const newDate = firstDate.add({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handleNextPage(firstDate, nextPageFunc || props.nextPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the nextPageFunc is defined (overwrite)\n if (!nextPageFunc) {\n const diff = newGrid[0].value.compare(firstDate)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n const prevPage = (prevPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const newDate = firstDate.subtract({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handlePrevPage(firstDate, prevPageFunc || props.prevPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the prevPageFunc is defined (overwrite)\n if (!prevPageFunc) {\n const diff = firstDate.compare(newGrid[0].value)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n watch(props.placeholder, (value) => {\n if (visibleView.value.some(month => isEqualMonth(month, value)))\n return\n grid.value = createMonths({\n dateObj: value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n watch([props.locale, props.weekStartsOn, props.fixedWeeks, props.numberOfMonths], () => {\n grid.value = createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n const headingValue = computed(() => {\n if (!grid.value.length)\n return ''\n\n if (props.locale.value !== formatter.getLocale())\n formatter.setLocale(props.locale.value)\n\n if (grid.value.length === 1) {\n const month = grid.value[0].value\n return `${formatter.fullMonthAndYear(toDate(month), headingFormatOptions.value)}`\n }\n\n const startMonth = toDate(grid.value[0].value)\n const endMonth = toDate(grid.value[grid.value.length - 1].value)\n\n const startMonthName = formatter.fullMonth(startMonth, headingFormatOptions.value)\n const endMonthName = formatter.fullMonth(endMonth, headingFormatOptions.value)\n const startMonthYear = formatter.fullYear(startMonth, headingFormatOptions.value)\n const endMonthYear = formatter.fullYear(endMonth, headingFormatOptions.value)\n\n const content\n = startMonthYear === endMonthYear\n ? `${startMonthName} - ${endMonthName} ${endMonthYear}`\n : `${startMonthName} ${startMonthYear} - ${endMonthName} ${endMonthYear}`\n\n return content\n })\n\n const fullCalendarLabel = computed(() => `${props.calendarLabel.value ?? 'Event Date'}, ${headingValue.value}`)\n\n return {\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n visibleView,\n isOutsideVisibleView,\n formatter,\n nextPage,\n prevPage,\n headingValue,\n fullCalendarLabel,\n }\n}\n"],"names":["isSameDay","computed","getDaysInMonth","useDateFormatter","ref","createMonths","date","isEqualMonth","firstPeriodOfNextPage","isAfter","lastPeriodOfPrevPage","isBefore","toDate","newDate","newGrid","watch"],"mappings":";;;;;;;;AAqCO,SAAS,iBAAiB,KAA8B,EAAA;AAC7D,EAAA,SAAS,eAAe,OAAoB,EAAA;AAC1C,IAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA;AAChC,MAAO,OAAA,KAAA,CAAM,KAAK,KAAM,CAAA,IAAA,CAAK,OAAKA,cAAU,CAAA,CAAA,EAAG,OAAO,CAAC,CAAA;AAAA,SAEhD,IAAA,CAAC,MAAM,IAAK,CAAA,KAAA;AACnB,MAAO,OAAA,KAAA;AAAA;AAGP,MAAA,OAAOA,cAAU,CAAA,KAAA,CAAM,IAAK,CAAA,KAAA,EAAO,OAAO,CAAA;AAAA;AAG9C,EAAA,MAAM,SAAY,GAAAC,YAAA;AAAA,IAChB,MAAM;AACJ,MAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,KAAM,CAAA,IAAA,CAAK,KAAK,CAAG,EAAA;AACnC,QAAI,IAAA,CAAC,KAAM,CAAA,IAAA,CAAK,KAAM,CAAA,MAAA;AACpB,UAAO,OAAA,KAAA;AACT,QAAW,KAAA,MAAA,OAAA,IAAW,KAAM,CAAA,IAAA,CAAK,KAAO,EAAA;AACtC,UAAI,IAAA,KAAA,CAAM,iBAAiB,OAAO,CAAA;AAChC,YAAO,OAAA,IAAA;AACT,UAAI,IAAA,KAAA,CAAM,oBAAoB,OAAO,CAAA;AACnC,YAAO,OAAA,IAAA;AAAA;AACX,OAEG,MAAA;AACH,QAAI,IAAA,CAAC,MAAM,IAAK,CAAA,KAAA;AACd,UAAO,OAAA,KAAA;AACT,QAAA,IAAI,KAAM,CAAA,cAAA,GAAiB,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA;AACzC,UAAO,OAAA,IAAA;AACT,QAAA,IAAI,KAAM,CAAA,iBAAA,GAAoB,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA;AAC5C,UAAO,OAAA,IAAA;AAAA;AAEX,MAAO,OAAA,KAAA;AAAA;AACT,GACF;AAEA,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,kBAAA,CAAmB,kBAA6B,YAAyD,EAAA;AAChH,EAAM,MAAA,qBAAA,GAAwB,aAAa,gBAAgB,CAAA;AAC3D,EAAM,MAAA,IAAA,GAAO,qBAAsB,CAAA,OAAA,CAAQ,gBAAgB,CAAA;AAC3D,EAAA,MAAM,WAAuB,EAAC;AAC9B,EAAA,IAAI,IAAQ,IAAA,CAAA;AACV,IAAA,QAAA,CAAS,GAAM,GAAA,CAAA;AACjB,EAAI,IAAA,IAAA,IAAQC,gCAAe,gBAAgB,CAAA;AACzC,IAAA,QAAA,CAAS,KAAQ,GAAA,CAAA;AACnB,EAAA,OAAO,qBAAsB,CAAA,GAAA,CAAI,EAAE,GAAG,UAAU,CAAA;AAClD;AACA,SAAS,kBAAA,CAAmB,mBAA8B,YAAyD,EAAA;AACjH,EAAM,MAAA,oBAAA,GAAuB,aAAa,iBAAiB,CAAA;AAC3D,EAAM,MAAA,IAAA,GAAO,iBAAkB,CAAA,OAAA,CAAQ,oBAAoB,CAAA;AAC3D,EAAA,MAAM,WAAuB,EAAC;AAC9B,EAAA,IAAI,IAAQ,IAAA,CAAA;AACV,IAAA,QAAA,CAAS,GAAM,GAAA,EAAA;AACjB,EAAI,IAAA,IAAA,IAAQA,gCAAe,iBAAiB,CAAA;AAC1C,IAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AACnB,EAAA,OAAO,oBAAqB,CAAA,GAAA,CAAI,EAAE,GAAG,UAAU,CAAA;AACjD;AACA,SAAS,cAAA,CAAe,MAAiB,YAAyD,EAAA;AAChG,EAAA,OAAO,aAAa,IAAI,CAAA;AAC1B;AAEA,SAAS,cAAA,CAAe,MAAiB,YAAyD,EAAA;AAChG,EAAA,OAAO,aAAa,IAAI,CAAA;AAC1B;AAEO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAA,MAAM,SAAY,GAAAC,wCAAA,CAAiB,KAAM,CAAA,MAAA,CAAO,KAAK,CAAA;AAErD,EAAM,MAAA,oBAAA,GAAuBF,aAAS,MAAM;AAC1C,IAAA,MAAM,OAAgC,GAAA;AAAA,MACpC,QAAU,EAAA,KAAA,CAAM,WAAY,CAAA,KAAA,CAAM,QAAS,CAAA;AAAA,KAC7C;AAEA,IAAI,IAAA,KAAA,CAAM,YAAY,KAAM,CAAA,QAAA,CAAS,eAAe,SAAa,IAAA,KAAA,CAAM,WAAY,CAAA,KAAA,CAAM,GAAQ,KAAA,IAAA;AAC/F,MAAA,OAAA,CAAQ,GAAM,GAAA,OAAA;AAEhB,IAAO,OAAA,OAAA;AAAA,GACR,CAAA;AAED,EAAM,MAAA,IAAA,GAAOG,QAAuBC,0BAAa,CAAA;AAAA,IAC/C,OAAA,EAAS,MAAM,WAAY,CAAA,KAAA;AAAA,IAC3B,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,IACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,IACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,IAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,GACtC,CAAC,CAAA;AAEF,EAAM,MAAA,WAAA,GAAcJ,aAAS,MAAM;AACjC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,GAAI,CAAA,CAAA,KAAA,KAAS,MAAM,KAAK,CAAA;AAAA,GAC3C,CAAA;AAED,EAAA,SAAS,qBAAqBK,MAAiB,EAAA;AAC7C,IAAO,OAAA,CAAC,YAAY,KAAM,CAAA,IAAA,CAAK,WAASC,iBAAa,CAAAD,MAAA,EAAM,KAAK,CAAC,CAAA;AAAA;AAGnE,EAAM,MAAA,oBAAA,GAAuB,CAAC,YAAkD,KAAA;AAC9E,IAAA,IAAI,CAAC,KAAM,CAAA,QAAA,CAAS,KAAS,IAAA,CAAC,KAAK,KAAM,CAAA,MAAA;AACvC,MAAO,OAAA,KAAA;AACT,IAAA,IAAI,MAAM,QAAS,CAAA,KAAA;AACjB,MAAO,OAAA,IAAA;AAET,IAAA,MAAM,mBAAmB,IAAK,CAAA,KAAA,CAAM,KAAK,KAAM,CAAA,MAAA,GAAS,CAAC,CAAE,CAAA,KAAA;AAE3D,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,KAAA,CAAM,SAAS,KAAO,EAAA;AAC1C,MAAA,MAAME,sBAAwB,GAAA,gBAAA,CAAiB,GAAI,CAAA,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAA,CAAE,GAAI,CAAA,EAAE,GAAK,EAAA,CAAA,EAAG,CAAA;AAChF,MAAA,OAAOC,wBAAQD,CAAAA,sBAAAA,EAAuB,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA;AAG5D,IAAA,MAAM,wBAAwB,kBAAmB,CAAA,gBAAA,EAAkB,YAAgB,IAAA,KAAA,CAAM,SAAS,KAAM,CAAA;AACxG,IAAA,OAAOC,wBAAQ,CAAA,qBAAA,EAAuB,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA,GAC5D;AAEA,EAAM,MAAA,oBAAA,GAAuB,CAAC,YAAkD,KAAA;AAC9E,IAAA,IAAI,CAAC,KAAM,CAAA,QAAA,CAAS,KAAS,IAAA,CAAC,KAAK,KAAM,CAAA,MAAA;AACvC,MAAO,OAAA,KAAA;AACT,IAAA,IAAI,MAAM,QAAS,CAAA,KAAA;AACjB,MAAO,OAAA,IAAA;AACT,IAAA,MAAM,iBAAoB,GAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAE,CAAA,KAAA;AAExC,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,KAAA,CAAM,SAAS,KAAO,EAAA;AAC1C,MAAA,MAAMC,qBAAuB,GAAA,iBAAA,CAAkB,QAAS,CAAA,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAA,CAAE,GAAI,CAAA,EAAE,GAAK,EAAA,EAAA,EAAI,CAAA;AACtF,MAAA,OAAOC,yBAASD,CAAAA,qBAAAA,EAAsB,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA;AAG5D,IAAA,MAAM,uBAAuB,kBAAmB,CAAA,iBAAA,EAAmB,YAAgB,IAAA,KAAA,CAAM,SAAS,KAAM,CAAA;AACxG,IAAA,OAAOC,yBAAS,CAAA,oBAAA,EAAsB,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA;AAAA,GAC5D;AAEA,EAAA,SAAS,eAAe,OAAoB,EAAA;AAC1C,IAAA,IAAI,KAAM,CAAA,cAAA,GAAiB,OAAO,CAAA,IAAK,MAAM,QAAS,CAAA,KAAA;AACpD,MAAO,OAAA,IAAA;AACT,IAAA,IAAI,MAAM,QAAS,CAAA,KAAA,IAASF,yBAAQ,OAAS,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAC/D,MAAO,OAAA,IAAA;AACT,IAAA,IAAI,MAAM,QAAS,CAAA,KAAA,IAASE,0BAAS,OAAS,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAChE,MAAO,OAAA,IAAA;AACT,IAAO,OAAA,KAAA;AAAA;AAGT,EAAM,MAAA,iBAAA,GAAoB,CAAC,IAAoB,KAAA;AAC7C,IAAI,IAAA,KAAA,CAAM,oBAAoB,IAAI,CAAA;AAChC,MAAO,OAAA,IAAA;AACT,IAAO,OAAA,KAAA;AAAA,GACT;AAEA,EAAM,MAAA,QAAA,GAAWV,aAAS,MAAM;AAC9B,IAAI,IAAA,CAAC,KAAK,KAAM,CAAA,MAAA;AACd,MAAA,OAAO,EAAC;AACV,IAAO,OAAA,IAAA,CAAK,MAAM,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA,CAAE,GAAI,CAAA,CAAC,IAAS,KAAA;AACzC,MAAA,OAAO,UAAU,SAAU,CAAAW,uBAAA,CAAO,IAAI,CAAG,EAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,KACnE,CAAA;AAAA,GACF,CAAA;AAED,EAAM,MAAA,QAAA,GAAW,CAAC,YAAkD,KAAA;AAClE,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAE,CAAA,KAAA;AAEhC,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,KAAA,CAAM,SAAS,KAAO,EAAA;AAC1C,MAAA,MAAMC,QAAU,GAAA,SAAA,CAAU,GAAI,CAAA,EAAE,MAAQ,EAAA,KAAA,CAAM,eAAgB,CAAA,KAAA,GAAQ,KAAM,CAAA,cAAA,CAAe,KAAQ,GAAA,CAAA,EAAG,CAAA;AAEtG,MAAA,MAAMC,WAAUT,0BAAa,CAAA;AAAA,QAC3B,OAASQ,EAAAA,QAAAA;AAAA,QACT,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,QACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,QACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,QAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,OACtC,CAAA;AAED,MAAA,IAAA,CAAK,KAAQC,GAAAA,QAAAA;AAEb,MAAM,KAAA,CAAA,WAAA,CAAY,KAAQA,GAAAA,QAAAA,CAAQ,CAAC,CAAA,CAAE,MAAM,GAAI,CAAA,EAAE,GAAK,EAAA,CAAA,EAAG,CAAA;AACzD,MAAA;AAAA;AAGF,IAAA,MAAM,UAAU,cAAe,CAAA,SAAA,EAAW,YAAgB,IAAA,KAAA,CAAM,SAAS,KAAM,CAAA;AAC/E,IAAA,MAAM,UAAUT,0BAAa,CAAA;AAAA,MAC3B,OAAS,EAAA,OAAA;AAAA,MACT,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,MACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,MACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,MAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,KACtC,CAAA;AAED,IAAA,IAAA,CAAK,KAAQ,GAAA,OAAA;AAEb,IAAA,MAAM,WAAuB,EAAC;AAG9B,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,MAAM,OAAO,OAAQ,CAAA,CAAC,CAAE,CAAA,KAAA,CAAM,QAAQ,SAAS,CAAA;AAC/C,MAAI,IAAA,IAAA,IAAQH,gCAAe,SAAS,CAAA;AAClC,QAAA,QAAA,CAAS,GAAM,GAAA,CAAA;AAEjB,MAAA,IAAI,IAAQ,IAAA,GAAA;AACV,QAAA,QAAA,CAAS,KAAQ,GAAA,CAAA;AAAA;AAGrB,IAAM,KAAA,CAAA,WAAA,CAAY,KAAQ,GAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,MAAM,GAAI,CAAA,EAAE,GAAG,QAAA,EAAU,CAAA;AAAA,GAChE;AAEA,EAAM,MAAA,QAAA,GAAW,CAAC,YAAkD,KAAA;AAClE,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAE,CAAA,KAAA;AAEhC,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,KAAA,CAAM,SAAS,KAAO,EAAA;AAC1C,MAAA,MAAMW,QAAU,GAAA,SAAA,CAAU,QAAS,CAAA,EAAE,MAAQ,EAAA,KAAA,CAAM,eAAgB,CAAA,KAAA,GAAQ,KAAM,CAAA,cAAA,CAAe,KAAQ,GAAA,CAAA,EAAG,CAAA;AAE3G,MAAA,MAAMC,WAAUT,0BAAa,CAAA;AAAA,QAC3B,OAASQ,EAAAA,QAAAA;AAAA,QACT,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,QACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,QACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,QAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,OACtC,CAAA;AAED,MAAA,IAAA,CAAK,KAAQC,GAAAA,QAAAA;AAEb,MAAM,KAAA,CAAA,WAAA,CAAY,KAAQA,GAAAA,QAAAA,CAAQ,CAAC,CAAA,CAAE,MAAM,GAAI,CAAA,EAAE,GAAK,EAAA,CAAA,EAAG,CAAA;AACzD,MAAA;AAAA;AAGF,IAAA,MAAM,UAAU,cAAe,CAAA,SAAA,EAAW,YAAgB,IAAA,KAAA,CAAM,SAAS,KAAM,CAAA;AAC/E,IAAA,MAAM,UAAUT,0BAAa,CAAA;AAAA,MAC3B,OAAS,EAAA,OAAA;AAAA,MACT,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,MACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,MACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,MAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,KACtC,CAAA;AAED,IAAA,IAAA,CAAK,KAAQ,GAAA,OAAA;AAEb,IAAA,MAAM,WAAuB,EAAC;AAG9B,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA,MAAM,OAAO,SAAU,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,EAAE,KAAK,CAAA;AAC/C,MAAI,IAAA,IAAA,IAAQH,gCAAe,SAAS,CAAA;AAClC,QAAA,QAAA,CAAS,GAAM,GAAA,CAAA;AAEjB,MAAA,IAAI,IAAQ,IAAA,GAAA;AACV,QAAA,QAAA,CAAS,KAAQ,GAAA,CAAA;AAAA;AAGrB,IAAM,KAAA,CAAA,WAAA,CAAY,KAAQ,GAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,MAAM,GAAI,CAAA,EAAE,GAAG,QAAA,EAAU,CAAA;AAAA,GAChE;AAEA,EAAMa,SAAA,CAAA,KAAA,CAAM,WAAa,EAAA,CAAC,KAAU,KAAA;AAClC,IAAA,IAAI,YAAY,KAAM,CAAA,IAAA,CAAK,WAASR,iBAAa,CAAA,KAAA,EAAO,KAAK,CAAC,CAAA;AAC5D,MAAA;AACF,IAAA,IAAA,CAAK,QAAQF,0BAAa,CAAA;AAAA,MACxB,OAAS,EAAA,KAAA;AAAA,MACT,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,MACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,MACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,MAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,KACtC,CAAA;AAAA,GACF,CAAA;AAED,EAAMU,SAAA,CAAA,CAAC,KAAM,CAAA,MAAA,EAAQ,KAAM,CAAA,YAAA,EAAc,MAAM,UAAY,EAAA,KAAA,CAAM,cAAc,CAAA,EAAG,MAAM;AACtF,IAAA,IAAA,CAAK,QAAQV,0BAAa,CAAA;AAAA,MACxB,OAAA,EAAS,MAAM,WAAY,CAAA,KAAA;AAAA,MAC3B,YAAA,EAAc,MAAM,YAAa,CAAA,KAAA;AAAA,MACjC,MAAA,EAAQ,MAAM,MAAO,CAAA,KAAA;AAAA,MACrB,UAAA,EAAY,MAAM,UAAW,CAAA,KAAA;AAAA,MAC7B,cAAA,EAAgB,MAAM,cAAe,CAAA;AAAA,KACtC,CAAA;AAAA,GACF,CAAA;AAED,EAAM,MAAA,YAAA,GAAeJ,aAAS,MAAM;AAClC,IAAI,IAAA,CAAC,KAAK,KAAM,CAAA,MAAA;AACd,MAAO,OAAA,EAAA;AAET,IAAA,IAAI,KAAM,CAAA,MAAA,CAAO,KAAU,KAAA,SAAA,CAAU,SAAU,EAAA;AAC7C,MAAU,SAAA,CAAA,SAAA,CAAU,KAAM,CAAA,MAAA,CAAO,KAAK,CAAA;AAExC,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AAC3B,MAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAE,CAAA,KAAA;AAC5B,MAAO,OAAA,CAAA,EAAG,UAAU,gBAAiB,CAAAW,uBAAA,CAAO,KAAK,CAAG,EAAA,oBAAA,CAAqB,KAAK,CAAC,CAAA,CAAA;AAAA;AAGjF,IAAA,MAAM,aAAaA,uBAAO,CAAA,IAAA,CAAK,KAAM,CAAA,CAAC,EAAE,KAAK,CAAA;AAC7C,IAAM,MAAA,QAAA,GAAWA,wBAAO,IAAK,CAAA,KAAA,CAAM,KAAK,KAAM,CAAA,MAAA,GAAS,CAAC,CAAA,CAAE,KAAK,CAAA;AAE/D,IAAA,MAAM,cAAiB,GAAA,SAAA,CAAU,SAAU,CAAA,UAAA,EAAY,qBAAqB,KAAK,CAAA;AACjF,IAAA,MAAM,YAAe,GAAA,SAAA,CAAU,SAAU,CAAA,QAAA,EAAU,qBAAqB,KAAK,CAAA;AAC7E,IAAA,MAAM,cAAiB,GAAA,SAAA,CAAU,QAAS,CAAA,UAAA,EAAY,qBAAqB,KAAK,CAAA;AAChF,IAAA,MAAM,YAAe,GAAA,SAAA,CAAU,QAAS,CAAA,QAAA,EAAU,qBAAqB,KAAK,CAAA;AAE5E,IAAA,MAAM,UACJ,cAAmB,KAAA,YAAA,GACjB,CAAG,EAAA,cAAc,MAAM,YAAY,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,GACnD,GAAG,cAAc,CAAA,CAAA,EAAI,cAAc,CAAM,GAAA,EAAA,YAAY,IAAI,YAAY,CAAA,CAAA;AAEzE,IAAO,OAAA,OAAA;AAAA,GACR,CAAA;AAED,EAAM,MAAA,iBAAA,GAAoBX,YAAS,CAAA,MAAM,CAAG,EAAA,KAAA,CAAM,aAAc,CAAA,KAAA,IAAS,YAAY,CAAA,EAAA,EAAK,YAAa,CAAA,KAAK,CAAE,CAAA,CAAA;AAE9G,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;;"}
1
+ {"version":3,"file":"useCalendar.cjs","sources":["../../src/Calendar/useCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n*/\n\nimport type { DateFields, DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\nimport type { DateFormatterOptions } from '@/shared/useDateFormatter'\nimport { isEqualMonth, isSameDay } from '@internationalized/date'\nimport { computed, ref, watch } from 'vue'\nimport { createMonths, getDaysInMonth, isAfter, isBefore, toDate } from '@/date'\nimport { useDateFormatter } from '@/shared'\n\nexport type UseCalendarProps = {\n locale: Ref<string>\n placeholder: Ref<DateValue>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n minValue: Ref<DateValue | undefined>\n maxValue: Ref<DateValue | undefined>\n disabled: Ref<boolean>\n weekdayFormat: Ref<WeekDayFormat>\n pagedNavigation: Ref<boolean>\n isDateDisabled?: Matcher\n isDateUnavailable?: Matcher\n calendarLabel: Ref<string | undefined>\n nextPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n prevPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n}\n\nexport type UseCalendarStateProps = {\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n date: Ref<DateValue | DateValue[] | undefined>\n}\n\nexport function useCalendarState(props: UseCalendarStateProps) {\n function isDateSelected(dateObj: DateValue) {\n if (Array.isArray(props.date.value))\n return props.date.value.some(d => isSameDay(d, dateObj))\n\n else if (!props.date.value)\n return false\n\n else\n return isSameDay(props.date.value, dateObj)\n }\n\n const isInvalid = computed(\n () => {\n if (Array.isArray(props.date.value)) {\n if (!props.date.value.length)\n return false\n for (const dateObj of props.date.value) {\n if (props.isDateDisabled?.(dateObj))\n return true\n if (props.isDateUnavailable?.(dateObj))\n return true\n }\n }\n else {\n if (!props.date.value)\n return false\n if (props.isDateDisabled?.(props.date.value))\n return true\n if (props.isDateUnavailable?.(props.date.value))\n return true\n }\n return false\n },\n )\n\n return {\n isDateSelected,\n isInvalid,\n }\n}\n\nfunction handleNextDisabled(lastPeriodInView: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n const firstPeriodOfNextPage = nextPageFunc(lastPeriodInView)\n const diff = firstPeriodOfNextPage.compare(lastPeriodInView)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 1\n if (diff >= getDaysInMonth(lastPeriodInView))\n duration.month = 1\n return firstPeriodOfNextPage.set({ ...duration })\n}\nfunction handlePrevDisabled(firstPeriodInView: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n const lastPeriodOfPrevPage = prevPageFunc(firstPeriodInView)\n const diff = firstPeriodInView.compare(lastPeriodOfPrevPage)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 35\n if (diff >= getDaysInMonth(firstPeriodInView))\n duration.month = 13\n return lastPeriodOfPrevPage.set({ ...duration })\n}\nfunction handleNextPage(date: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n return nextPageFunc(date)\n}\n\nfunction handlePrevPage(date: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n return prevPageFunc(date)\n}\n\nexport function useCalendar(props: UseCalendarProps) {\n const formatter = useDateFormatter(props.locale.value)\n\n const headingFormatOptions = computed(() => {\n const options: DateFormatterOptions = {\n calendar: props.placeholder.value.calendar.identifier,\n }\n\n if (props.placeholder.value.calendar.identifier === 'gregory' && props.placeholder.value.era === 'BC')\n options.era = 'short'\n\n return options\n })\n\n const grid = ref<Grid<DateValue>[]>(createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })) as Ref<Grid<DateValue>[]>\n\n const visibleView = computed(() => {\n return grid.value.map(month => month.value)\n })\n\n function isOutsideVisibleView(date: DateValue) {\n return !visibleView.value.some(month => isEqualMonth(date, month))\n }\n\n const isNextButtonDisabled = (nextPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.maxValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n\n const lastPeriodInView = grid.value[grid.value.length - 1].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const firstPeriodOfNextPage = lastPeriodInView.add({ months: 1 }).set({ day: 1 })\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const firstPeriodOfNextPage = handleNextDisabled(lastPeriodInView, nextPageFunc || props.nextPage.value!)\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const isPrevButtonDisabled = (prevPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.minValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n const firstPeriodInView = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const lastPeriodOfPrevPage = firstPeriodInView.subtract({ months: 1 }).set({ day: 35 })\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n const lastPeriodOfPrevPage = handlePrevDisabled(firstPeriodInView, prevPageFunc || props.prevPage.value!)\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n function isDateDisabled(dateObj: DateValue) {\n if (props.isDateDisabled?.(dateObj) || props.disabled.value)\n return true\n if (props.maxValue.value && isAfter(dateObj, props.maxValue.value))\n return true\n if (props.minValue.value && isBefore(dateObj, props.minValue.value))\n return true\n return false\n }\n\n const isDateUnavailable = (date: DateValue) => {\n if (props.isDateUnavailable?.(date))\n return true\n return false\n }\n\n const weekdays = computed(() => {\n if (!grid.value.length)\n return []\n return grid.value[0].rows[0].map((date) => {\n return formatter.dayOfWeek(toDate(date), props.weekdayFormat.value)\n })\n })\n\n const nextPage = (nextPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const newDate = firstDate.add({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handleNextPage(firstDate, nextPageFunc || props.nextPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the nextPageFunc is defined (overwrite)\n if (!nextPageFunc) {\n const diff = newGrid[0].value.compare(firstDate)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n const prevPage = (prevPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const newDate = firstDate.subtract({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handlePrevPage(firstDate, prevPageFunc || props.prevPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the prevPageFunc is defined (overwrite)\n if (!prevPageFunc) {\n const diff = firstDate.compare(newGrid[0].value)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n watch(props.placeholder, (value) => {\n if (visibleView.value.some(month => isEqualMonth(month, value)))\n return\n grid.value = createMonths({\n dateObj: value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n watch([props.locale, props.weekStartsOn, props.fixedWeeks, props.numberOfMonths], () => {\n grid.value = createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n const headingValue = computed(() => {\n if (!grid.value.length)\n return ''\n\n if (props.locale.value !== formatter.getLocale())\n formatter.setLocale(props.locale.value)\n\n if (grid.value.length === 1) {\n const month = grid.value[0].value\n return `${formatter.fullMonthAndYear(toDate(month), headingFormatOptions.value)}`\n }\n\n const startMonth = toDate(grid.value[0].value)\n const endMonth = toDate(grid.value[grid.value.length - 1].value)\n\n const startMonthName = formatter.fullMonth(startMonth, headingFormatOptions.value)\n const endMonthName = formatter.fullMonth(endMonth, headingFormatOptions.value)\n const startMonthYear = formatter.fullYear(startMonth, headingFormatOptions.value)\n const endMonthYear = formatter.fullYear(endMonth, headingFormatOptions.value)\n\n const content\n = startMonthYear === endMonthYear\n ? `${startMonthName} - ${endMonthName} ${endMonthYear}`\n : `${startMonthName} ${startMonthYear} - ${endMonthName} ${endMonthYear}`\n\n return content\n })\n\n const fullCalendarLabel = computed(() => `${props.calendarLabel.value ?? 'Event Date'}, ${headingValue.value}`)\n\n return {\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n visibleView,\n isOutsideVisibleView,\n formatter,\n nextPage,\n prevPage,\n headingValue,\n fullCalendarLabel,\n }\n}\n"],"names":["isSameDay","computed","getDaysInMonth","useDateFormatter","ref","createMonths","date","isEqualMonth","firstPeriodOfNextPage","isAfter","lastPeriodOfPrevPage","isBefore","toDate","newDate","newGrid","watch"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { d as createMonths } from '../date/calendar.js';
2
- import { t as toDate, g as getDaysInMonth, b as isBefore, c as isAfter } from '../date/comparators.js';
3
1
  import { isEqualMonth, isSameDay } from '@internationalized/date';
4
2
  import { computed, ref, watch } from 'vue';
3
+ import { d as createMonths } from '../date/calendar.js';
4
+ import { t as toDate, g as getDaysInMonth, b as isBefore, c as isAfter } from '../date/comparators.js';
5
5
  import { u as useDateFormatter } from '../shared/useDateFormatter.js';
6
6
 
7
7
  function useCalendarState(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendar.js","sources":["../../src/Calendar/useCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n*/\n\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\nimport type { DateFormatterOptions } from '@/shared/useDateFormatter'\nimport type { DateFields, DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport { createMonths, getDaysInMonth, isAfter, isBefore, toDate } from '@/date'\nimport { useDateFormatter } from '@/shared'\nimport { isEqualMonth, isSameDay } from '@internationalized/date'\nimport { computed, ref, watch } from 'vue'\n\nexport type UseCalendarProps = {\n locale: Ref<string>\n placeholder: Ref<DateValue>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n minValue: Ref<DateValue | undefined>\n maxValue: Ref<DateValue | undefined>\n disabled: Ref<boolean>\n weekdayFormat: Ref<WeekDayFormat>\n pagedNavigation: Ref<boolean>\n isDateDisabled?: Matcher\n isDateUnavailable?: Matcher\n calendarLabel: Ref<string | undefined>\n nextPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n prevPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n}\n\nexport type UseCalendarStateProps = {\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n date: Ref<DateValue | DateValue[] | undefined>\n}\n\nexport function useCalendarState(props: UseCalendarStateProps) {\n function isDateSelected(dateObj: DateValue) {\n if (Array.isArray(props.date.value))\n return props.date.value.some(d => isSameDay(d, dateObj))\n\n else if (!props.date.value)\n return false\n\n else\n return isSameDay(props.date.value, dateObj)\n }\n\n const isInvalid = computed(\n () => {\n if (Array.isArray(props.date.value)) {\n if (!props.date.value.length)\n return false\n for (const dateObj of props.date.value) {\n if (props.isDateDisabled?.(dateObj))\n return true\n if (props.isDateUnavailable?.(dateObj))\n return true\n }\n }\n else {\n if (!props.date.value)\n return false\n if (props.isDateDisabled?.(props.date.value))\n return true\n if (props.isDateUnavailable?.(props.date.value))\n return true\n }\n return false\n },\n )\n\n return {\n isDateSelected,\n isInvalid,\n }\n}\n\nfunction handleNextDisabled(lastPeriodInView: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n const firstPeriodOfNextPage = nextPageFunc(lastPeriodInView)\n const diff = firstPeriodOfNextPage.compare(lastPeriodInView)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 1\n if (diff >= getDaysInMonth(lastPeriodInView))\n duration.month = 1\n return firstPeriodOfNextPage.set({ ...duration })\n}\nfunction handlePrevDisabled(firstPeriodInView: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n const lastPeriodOfPrevPage = prevPageFunc(firstPeriodInView)\n const diff = firstPeriodInView.compare(lastPeriodOfPrevPage)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 35\n if (diff >= getDaysInMonth(firstPeriodInView))\n duration.month = 13\n return lastPeriodOfPrevPage.set({ ...duration })\n}\nfunction handleNextPage(date: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n return nextPageFunc(date)\n}\n\nfunction handlePrevPage(date: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n return prevPageFunc(date)\n}\n\nexport function useCalendar(props: UseCalendarProps) {\n const formatter = useDateFormatter(props.locale.value)\n\n const headingFormatOptions = computed(() => {\n const options: DateFormatterOptions = {\n calendar: props.placeholder.value.calendar.identifier,\n }\n\n if (props.placeholder.value.calendar.identifier === 'gregory' && props.placeholder.value.era === 'BC')\n options.era = 'short'\n\n return options\n })\n\n const grid = ref<Grid<DateValue>[]>(createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })) as Ref<Grid<DateValue>[]>\n\n const visibleView = computed(() => {\n return grid.value.map(month => month.value)\n })\n\n function isOutsideVisibleView(date: DateValue) {\n return !visibleView.value.some(month => isEqualMonth(date, month))\n }\n\n const isNextButtonDisabled = (nextPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.maxValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n\n const lastPeriodInView = grid.value[grid.value.length - 1].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const firstPeriodOfNextPage = lastPeriodInView.add({ months: 1 }).set({ day: 1 })\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const firstPeriodOfNextPage = handleNextDisabled(lastPeriodInView, nextPageFunc || props.nextPage.value!)\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const isPrevButtonDisabled = (prevPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.minValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n const firstPeriodInView = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const lastPeriodOfPrevPage = firstPeriodInView.subtract({ months: 1 }).set({ day: 35 })\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n const lastPeriodOfPrevPage = handlePrevDisabled(firstPeriodInView, prevPageFunc || props.prevPage.value!)\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n function isDateDisabled(dateObj: DateValue) {\n if (props.isDateDisabled?.(dateObj) || props.disabled.value)\n return true\n if (props.maxValue.value && isAfter(dateObj, props.maxValue.value))\n return true\n if (props.minValue.value && isBefore(dateObj, props.minValue.value))\n return true\n return false\n }\n\n const isDateUnavailable = (date: DateValue) => {\n if (props.isDateUnavailable?.(date))\n return true\n return false\n }\n\n const weekdays = computed(() => {\n if (!grid.value.length)\n return []\n return grid.value[0].rows[0].map((date) => {\n return formatter.dayOfWeek(toDate(date), props.weekdayFormat.value)\n })\n })\n\n const nextPage = (nextPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const newDate = firstDate.add({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handleNextPage(firstDate, nextPageFunc || props.nextPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the nextPageFunc is defined (overwrite)\n if (!nextPageFunc) {\n const diff = newGrid[0].value.compare(firstDate)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n const prevPage = (prevPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const newDate = firstDate.subtract({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handlePrevPage(firstDate, prevPageFunc || props.prevPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the prevPageFunc is defined (overwrite)\n if (!prevPageFunc) {\n const diff = firstDate.compare(newGrid[0].value)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n watch(props.placeholder, (value) => {\n if (visibleView.value.some(month => isEqualMonth(month, value)))\n return\n grid.value = createMonths({\n dateObj: value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n watch([props.locale, props.weekStartsOn, props.fixedWeeks, props.numberOfMonths], () => {\n grid.value = createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n const headingValue = computed(() => {\n if (!grid.value.length)\n return ''\n\n if (props.locale.value !== formatter.getLocale())\n formatter.setLocale(props.locale.value)\n\n if (grid.value.length === 1) {\n const month = grid.value[0].value\n return `${formatter.fullMonthAndYear(toDate(month), headingFormatOptions.value)}`\n }\n\n const startMonth = toDate(grid.value[0].value)\n const endMonth = toDate(grid.value[grid.value.length - 1].value)\n\n const startMonthName = formatter.fullMonth(startMonth, headingFormatOptions.value)\n const endMonthName = formatter.fullMonth(endMonth, headingFormatOptions.value)\n const startMonthYear = formatter.fullYear(startMonth, headingFormatOptions.value)\n const endMonthYear = formatter.fullYear(endMonth, headingFormatOptions.value)\n\n const content\n = startMonthYear === endMonthYear\n ? `${startMonthName} - ${endMonthName} ${endMonthYear}`\n : `${startMonthName} ${startMonthYear} - ${endMonthName} ${endMonthYear}`\n\n return content\n })\n\n const fullCalendarLabel = computed(() => `${props.calendarLabel.value ?? 'Event Date'}, ${headingValue.value}`)\n\n return {\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n visibleView,\n isOutsideVisibleView,\n formatter,\n nextPage,\n prevPage,\n headingValue,\n fullCalendarLabel,\n }\n}\n"],"names":["firstPeriodOfNextPage","lastPeriodOfPrevPage","newDate","newGrid"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendar.js","sources":["../../src/Calendar/useCalendar.ts"],"sourcesContent":["/*\n * Adapted from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n*/\n\nimport type { DateFields, DateValue } from '@internationalized/date'\nimport type { Ref } from 'vue'\nimport type { Grid, Matcher, WeekDayFormat } from '@/date'\nimport type { DateFormatterOptions } from '@/shared/useDateFormatter'\nimport { isEqualMonth, isSameDay } from '@internationalized/date'\nimport { computed, ref, watch } from 'vue'\nimport { createMonths, getDaysInMonth, isAfter, isBefore, toDate } from '@/date'\nimport { useDateFormatter } from '@/shared'\n\nexport type UseCalendarProps = {\n locale: Ref<string>\n placeholder: Ref<DateValue>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n minValue: Ref<DateValue | undefined>\n maxValue: Ref<DateValue | undefined>\n disabled: Ref<boolean>\n weekdayFormat: Ref<WeekDayFormat>\n pagedNavigation: Ref<boolean>\n isDateDisabled?: Matcher\n isDateUnavailable?: Matcher\n calendarLabel: Ref<string | undefined>\n nextPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n prevPage: Ref<((placeholder: DateValue) => DateValue) | undefined>\n}\n\nexport type UseCalendarStateProps = {\n isDateDisabled: Matcher\n isDateUnavailable: Matcher\n date: Ref<DateValue | DateValue[] | undefined>\n}\n\nexport function useCalendarState(props: UseCalendarStateProps) {\n function isDateSelected(dateObj: DateValue) {\n if (Array.isArray(props.date.value))\n return props.date.value.some(d => isSameDay(d, dateObj))\n\n else if (!props.date.value)\n return false\n\n else\n return isSameDay(props.date.value, dateObj)\n }\n\n const isInvalid = computed(\n () => {\n if (Array.isArray(props.date.value)) {\n if (!props.date.value.length)\n return false\n for (const dateObj of props.date.value) {\n if (props.isDateDisabled?.(dateObj))\n return true\n if (props.isDateUnavailable?.(dateObj))\n return true\n }\n }\n else {\n if (!props.date.value)\n return false\n if (props.isDateDisabled?.(props.date.value))\n return true\n if (props.isDateUnavailable?.(props.date.value))\n return true\n }\n return false\n },\n )\n\n return {\n isDateSelected,\n isInvalid,\n }\n}\n\nfunction handleNextDisabled(lastPeriodInView: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n const firstPeriodOfNextPage = nextPageFunc(lastPeriodInView)\n const diff = firstPeriodOfNextPage.compare(lastPeriodInView)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 1\n if (diff >= getDaysInMonth(lastPeriodInView))\n duration.month = 1\n return firstPeriodOfNextPage.set({ ...duration })\n}\nfunction handlePrevDisabled(firstPeriodInView: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n const lastPeriodOfPrevPage = prevPageFunc(firstPeriodInView)\n const diff = firstPeriodInView.compare(lastPeriodOfPrevPage)\n const duration: DateFields = {}\n if (diff >= 7)\n duration.day = 35\n if (diff >= getDaysInMonth(firstPeriodInView))\n duration.month = 13\n return lastPeriodOfPrevPage.set({ ...duration })\n}\nfunction handleNextPage(date: DateValue, nextPageFunc: (date: DateValue) => DateValue): DateValue {\n return nextPageFunc(date)\n}\n\nfunction handlePrevPage(date: DateValue, prevPageFunc: (date: DateValue) => DateValue): DateValue {\n return prevPageFunc(date)\n}\n\nexport function useCalendar(props: UseCalendarProps) {\n const formatter = useDateFormatter(props.locale.value)\n\n const headingFormatOptions = computed(() => {\n const options: DateFormatterOptions = {\n calendar: props.placeholder.value.calendar.identifier,\n }\n\n if (props.placeholder.value.calendar.identifier === 'gregory' && props.placeholder.value.era === 'BC')\n options.era = 'short'\n\n return options\n })\n\n const grid = ref<Grid<DateValue>[]>(createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })) as Ref<Grid<DateValue>[]>\n\n const visibleView = computed(() => {\n return grid.value.map(month => month.value)\n })\n\n function isOutsideVisibleView(date: DateValue) {\n return !visibleView.value.some(month => isEqualMonth(date, month))\n }\n\n const isNextButtonDisabled = (nextPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.maxValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n\n const lastPeriodInView = grid.value[grid.value.length - 1].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const firstPeriodOfNextPage = lastPeriodInView.add({ months: 1 }).set({ day: 1 })\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const firstPeriodOfNextPage = handleNextDisabled(lastPeriodInView, nextPageFunc || props.nextPage.value!)\n return isAfter(firstPeriodOfNextPage, props.maxValue.value)\n }\n\n const isPrevButtonDisabled = (prevPageFunc?: (date: DateValue) => DateValue) => {\n if (!props.minValue.value || !grid.value.length)\n return false\n if (props.disabled.value)\n return true\n const firstPeriodInView = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const lastPeriodOfPrevPage = firstPeriodInView.subtract({ months: 1 }).set({ day: 35 })\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n const lastPeriodOfPrevPage = handlePrevDisabled(firstPeriodInView, prevPageFunc || props.prevPage.value!)\n return isBefore(lastPeriodOfPrevPage, props.minValue.value)\n }\n\n function isDateDisabled(dateObj: DateValue) {\n if (props.isDateDisabled?.(dateObj) || props.disabled.value)\n return true\n if (props.maxValue.value && isAfter(dateObj, props.maxValue.value))\n return true\n if (props.minValue.value && isBefore(dateObj, props.minValue.value))\n return true\n return false\n }\n\n const isDateUnavailable = (date: DateValue) => {\n if (props.isDateUnavailable?.(date))\n return true\n return false\n }\n\n const weekdays = computed(() => {\n if (!grid.value.length)\n return []\n return grid.value[0].rows[0].map((date) => {\n return formatter.dayOfWeek(toDate(date), props.weekdayFormat.value)\n })\n })\n\n const nextPage = (nextPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!nextPageFunc && !props.nextPage.value) {\n const newDate = firstDate.add({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handleNextPage(firstDate, nextPageFunc || props.nextPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the nextPageFunc is defined (overwrite)\n if (!nextPageFunc) {\n const diff = newGrid[0].value.compare(firstDate)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n const prevPage = (prevPageFunc?: (date: DateValue) => DateValue) => {\n const firstDate = grid.value[0].value\n\n if (!prevPageFunc && !props.prevPage.value) {\n const newDate = firstDate.subtract({ months: props.pagedNavigation.value ? props.numberOfMonths.value : 1 })\n\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n props.placeholder.value = newGrid[0].value.set({ day: 1 })\n return\n }\n\n const newDate = handlePrevPage(firstDate, prevPageFunc || props.prevPage.value!)\n const newGrid = createMonths({\n dateObj: newDate,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n\n grid.value = newGrid\n\n const duration: DateFields = {}\n\n // Do not adjust the placeholder if the prevPageFunc is defined (overwrite)\n if (!prevPageFunc) {\n const diff = firstDate.compare(newGrid[0].value)\n if (diff >= getDaysInMonth(firstDate))\n duration.day = 1\n\n if (diff >= 365)\n duration.month = 1\n }\n\n props.placeholder.value = newGrid[0].value.set({ ...duration })\n }\n\n watch(props.placeholder, (value) => {\n if (visibleView.value.some(month => isEqualMonth(month, value)))\n return\n grid.value = createMonths({\n dateObj: value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n watch([props.locale, props.weekStartsOn, props.fixedWeeks, props.numberOfMonths], () => {\n grid.value = createMonths({\n dateObj: props.placeholder.value,\n weekStartsOn: props.weekStartsOn.value,\n locale: props.locale.value,\n fixedWeeks: props.fixedWeeks.value,\n numberOfMonths: props.numberOfMonths.value,\n })\n })\n\n const headingValue = computed(() => {\n if (!grid.value.length)\n return ''\n\n if (props.locale.value !== formatter.getLocale())\n formatter.setLocale(props.locale.value)\n\n if (grid.value.length === 1) {\n const month = grid.value[0].value\n return `${formatter.fullMonthAndYear(toDate(month), headingFormatOptions.value)}`\n }\n\n const startMonth = toDate(grid.value[0].value)\n const endMonth = toDate(grid.value[grid.value.length - 1].value)\n\n const startMonthName = formatter.fullMonth(startMonth, headingFormatOptions.value)\n const endMonthName = formatter.fullMonth(endMonth, headingFormatOptions.value)\n const startMonthYear = formatter.fullYear(startMonth, headingFormatOptions.value)\n const endMonthYear = formatter.fullYear(endMonth, headingFormatOptions.value)\n\n const content\n = startMonthYear === endMonthYear\n ? `${startMonthName} - ${endMonthName} ${endMonthYear}`\n : `${startMonthName} ${startMonthYear} - ${endMonthName} ${endMonthYear}`\n\n return content\n })\n\n const fullCalendarLabel = computed(() => `${props.calendarLabel.value ?? 'Event Date'}, ${headingValue.value}`)\n\n return {\n isDateDisabled,\n isDateUnavailable,\n isNextButtonDisabled,\n isPrevButtonDisabled,\n grid,\n weekdays,\n visibleView,\n isOutsideVisibleView,\n formatter,\n nextPage,\n prevPage,\n headingValue,\n fullCalendarLabel,\n }\n}\n"],"names":["firstPeriodOfNextPage","lastPeriodOfPrevPage","newDate","newGrid"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroupRoot.cjs","sources":["../../src/Checkbox/CheckboxGroupRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { RovingFocusGroupProps } from '@/RovingFocus'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFormControl } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\n\nexport interface CheckboxGroupRootProps<T = AcceptableValue> extends Pick<RovingFocusGroupProps, 'as' | 'asChild' | 'dir' | 'orientation' | 'loop'>, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: T[]\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: T[]\n /** When `false`, navigating through the items using arrow keys will be disabled. */\n rovingFocus?: boolean\n /** When `true`, prevents the user from interacting with the checkboxes */\n disabled?: boolean\n}\n\nexport type CheckboxGroupRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: T[]]\n}\n\ninterface CheckboxGroupRootContext {\n modelValue: Ref<AcceptableValue[]>\n rovingFocus: Ref<boolean>\n disabled: Ref<boolean>\n}\n\nexport const [injectCheckboxGroupRootContext, provideCheckboxGroupRootContext]\n = createContext<CheckboxGroupRootContext>('CheckboxGroupRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<CheckboxGroupRootProps<T>>(), {\n rovingFocus: true,\n})\nconst emits = defineEmits<CheckboxGroupRootEmits<T>>()\n\nconst { disabled, rovingFocus, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst isFormControl = useFormControl(currentElement)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [],\n passive: (props.modelValue === undefined) as false,\n}) as Ref<T[]>\n\nconst rovingFocusProps = computed(() => {\n return rovingFocus.value ? { loop: props.loop, dir: dir.value, orientation: props.orientation } : {}\n})\n\nprovideCheckboxGroupRootContext({\n modelValue,\n rovingFocus,\n disabled,\n})\n</script>\n\n<template>\n <component\n :is=\"rovingFocus ? RovingFocusGroup : Primitive\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"rovingFocusProps\"\n >\n <slot />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":["createContext","toRefs","useDirection","usePrimitiveElement","useFormControl","useVModel","computed"],"mappings":";;;;;;;;;;;;AA+BO,MAAM,CAAC,8BAAA,EAAgC,+BAA+B,CAAA,GACzEA,mCAAwC,mBAAmB;;;;;;;;;;;;;;;;;;AAO/D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAU,EAAA,WAAA,EAAa,KAAK,OAAQ,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC5D,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIC,iDAAoB,EAAA;AACjE,IAAM,MAAA,aAAA,GAAgBC,qCAAe,cAAc,CAAA;AAEnD,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAM,CAAA,IAAA,EAAM,GAAK,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,KAAM,CAAA,WAAA,KAAgB,EAAC;AAAA,KACpG,CAAA;AAED,IAAgC,+BAAA,CAAA;AAAA,MAC9B,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CheckboxGroupRoot.cjs","sources":["../../src/Checkbox/CheckboxGroupRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { RovingFocusGroupProps } from '@/RovingFocus'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFormControl } from '@/shared'\n\nexport interface CheckboxGroupRootProps<T = AcceptableValue> extends Pick<RovingFocusGroupProps, 'as' | 'asChild' | 'dir' | 'orientation' | 'loop'>, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: T[]\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: T[]\n /** When `false`, navigating through the items using arrow keys will be disabled. */\n rovingFocus?: boolean\n /** When `true`, prevents the user from interacting with the checkboxes */\n disabled?: boolean\n}\n\nexport type CheckboxGroupRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: T[]]\n}\n\ninterface CheckboxGroupRootContext {\n modelValue: Ref<AcceptableValue[]>\n rovingFocus: Ref<boolean>\n disabled: Ref<boolean>\n}\n\nexport const [injectCheckboxGroupRootContext, provideCheckboxGroupRootContext]\n = createContext<CheckboxGroupRootContext>('CheckboxGroupRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<CheckboxGroupRootProps<T>>(), {\n rovingFocus: true,\n})\nconst emits = defineEmits<CheckboxGroupRootEmits<T>>()\n\nconst { disabled, rovingFocus, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst isFormControl = useFormControl(currentElement)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [],\n passive: (props.modelValue === undefined) as false,\n}) as Ref<T[]>\n\nconst rovingFocusProps = computed(() => {\n return rovingFocus.value ? { loop: props.loop, dir: dir.value, orientation: props.orientation } : {}\n})\n\nprovideCheckboxGroupRootContext({\n modelValue,\n rovingFocus,\n disabled,\n})\n</script>\n\n<template>\n <component\n :is=\"rovingFocus ? RovingFocusGroup : Primitive\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"rovingFocusProps\"\n >\n <slot />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":["createContext","toRefs","useDirection","usePrimitiveElement","useFormControl","useVModel","computed"],"mappings":";;;;;;;;;;;;AA+BO,MAAM,CAAC,8BAAA,EAAgC,+BAA+B,CAAA,GACzEA,mCAAwC,mBAAmB;;;;;;;;;;;;;;;;;;AAO/D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAU,EAAA,WAAA,EAAa,KAAK,OAAQ,EAAA,GAAIC,WAAO,KAAK,CAAA;AAC5D,IAAM,MAAA,GAAA,GAAMC,iCAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAIC,iDAAoB,EAAA;AACjE,IAAM,MAAA,aAAA,GAAgBC,qCAAe,cAAc,CAAA;AAEnD,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmBC,aAAS,MAAM;AACtC,MAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAM,CAAA,IAAA,EAAM,GAAK,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,KAAM,CAAA,WAAA,KAAgB,EAAC;AAAA,KACpG,CAAA;AAED,IAAgC,+BAAA,CAAA;AAAA,MAC9B,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroupRoot.js","sources":["../../src/Checkbox/CheckboxGroupRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { RovingFocusGroupProps } from '@/RovingFocus'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFormControl } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\n\nexport interface CheckboxGroupRootProps<T = AcceptableValue> extends Pick<RovingFocusGroupProps, 'as' | 'asChild' | 'dir' | 'orientation' | 'loop'>, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: T[]\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: T[]\n /** When `false`, navigating through the items using arrow keys will be disabled. */\n rovingFocus?: boolean\n /** When `true`, prevents the user from interacting with the checkboxes */\n disabled?: boolean\n}\n\nexport type CheckboxGroupRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: T[]]\n}\n\ninterface CheckboxGroupRootContext {\n modelValue: Ref<AcceptableValue[]>\n rovingFocus: Ref<boolean>\n disabled: Ref<boolean>\n}\n\nexport const [injectCheckboxGroupRootContext, provideCheckboxGroupRootContext]\n = createContext<CheckboxGroupRootContext>('CheckboxGroupRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<CheckboxGroupRootProps<T>>(), {\n rovingFocus: true,\n})\nconst emits = defineEmits<CheckboxGroupRootEmits<T>>()\n\nconst { disabled, rovingFocus, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst isFormControl = useFormControl(currentElement)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [],\n passive: (props.modelValue === undefined) as false,\n}) as Ref<T[]>\n\nconst rovingFocusProps = computed(() => {\n return rovingFocus.value ? { loop: props.loop, dir: dir.value, orientation: props.orientation } : {}\n})\n\nprovideCheckboxGroupRootContext({\n modelValue,\n rovingFocus,\n disabled,\n})\n</script>\n\n<template>\n <component\n :is=\"rovingFocus ? RovingFocusGroup : Primitive\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"rovingFocusProps\"\n >\n <slot />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;AA+BO,MAAM,CAAC,8BAAA,EAAgC,+BAA+B,CAAA,GACzE,cAAwC,mBAAmB;;;;;;;;;;;;;;;;;;AAO/D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAU,EAAA,WAAA,EAAa,KAAK,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAC5D,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AACjE,IAAM,MAAA,aAAA,GAAgB,eAAe,cAAc,CAAA;AAEnD,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAM,CAAA,IAAA,EAAM,GAAK,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,KAAM,CAAA,WAAA,KAAgB,EAAC;AAAA,KACpG,CAAA;AAED,IAAgC,+BAAA,CAAA;AAAA,MAC9B,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CheckboxGroupRoot.js","sources":["../../src/Checkbox/CheckboxGroupRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { RovingFocusGroupProps } from '@/RovingFocus'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { computed, toRefs } from 'vue'\nimport { Primitive, usePrimitiveElement } from '@/Primitive'\nimport { createContext, useDirection, useFormControl } from '@/shared'\n\nexport interface CheckboxGroupRootProps<T = AcceptableValue> extends Pick<RovingFocusGroupProps, 'as' | 'asChild' | 'dir' | 'orientation' | 'loop'>, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: T[]\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: T[]\n /** When `false`, navigating through the items using arrow keys will be disabled. */\n rovingFocus?: boolean\n /** When `true`, prevents the user from interacting with the checkboxes */\n disabled?: boolean\n}\n\nexport type CheckboxGroupRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: T[]]\n}\n\ninterface CheckboxGroupRootContext {\n modelValue: Ref<AcceptableValue[]>\n rovingFocus: Ref<boolean>\n disabled: Ref<boolean>\n}\n\nexport const [injectCheckboxGroupRootContext, provideCheckboxGroupRootContext]\n = createContext<CheckboxGroupRootContext>('CheckboxGroupRoot')\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { RovingFocusGroup } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\n\nconst props = withDefaults(defineProps<CheckboxGroupRootProps<T>>(), {\n rovingFocus: true,\n})\nconst emits = defineEmits<CheckboxGroupRootEmits<T>>()\n\nconst { disabled, rovingFocus, dir: propDir } = toRefs(props)\nconst dir = useDirection(propDir)\n\nconst { primitiveElement, currentElement } = usePrimitiveElement()\nconst isFormControl = useFormControl(currentElement)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? [],\n passive: (props.modelValue === undefined) as false,\n}) as Ref<T[]>\n\nconst rovingFocusProps = computed(() => {\n return rovingFocus.value ? { loop: props.loop, dir: dir.value, orientation: props.orientation } : {}\n})\n\nprovideCheckboxGroupRootContext({\n modelValue,\n rovingFocus,\n disabled,\n})\n</script>\n\n<template>\n <component\n :is=\"rovingFocus ? RovingFocusGroup : Primitive\"\n ref=\"primitiveElement\"\n :as=\"as\"\n :as-child=\"asChild\"\n v-bind=\"rovingFocusProps\"\n >\n <slot />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name\"\n :name=\"name\"\n :value=\"modelValue\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;AA+BO,MAAM,CAAC,8BAAA,EAAgC,+BAA+B,CAAA,GACzE,cAAwC,mBAAmB;;;;;;;;;;;;;;;;;;AAO/D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAGd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,EAAE,QAAU,EAAA,WAAA,EAAa,KAAK,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAC5D,IAAM,MAAA,GAAA,GAAM,aAAa,OAAO,CAAA;AAEhC,IAAA,MAAM,EAAE,gBAAA,EAAkB,cAAe,EAAA,GAAI,mBAAoB,EAAA;AACjE,IAAM,MAAA,aAAA,GAAgB,eAAe,cAAc,CAAA;AAEnD,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,YAAA,EAAc,KAAM,CAAA,YAAA,IAAgB,EAAC;AAAA,MACrC,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAA,OAAO,WAAY,CAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAM,CAAA,IAAA,EAAM,GAAK,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,KAAM,CAAA,WAAA,KAAgB,EAAC;AAAA,KACpG,CAAA;AAED,IAAgC,+BAAA,CAAA;AAAA,MAC9B,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxRoot.cjs","sources":["../../src/Checkbox/CheckboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport { createContext, isNullish, isValueEqualOrExist, useFormControl, useForwardExpose } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { injectCheckboxGroupRootContext } from './CheckboxGroupRoot.vue'\n\nexport interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: boolean | 'indeterminate'\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: boolean | 'indeterminate' | null\n /** When `true`, prevents the user from interacting with the checkbox */\n disabled?: boolean\n /**\n * The value given as data when submitted with a `name`.\n * @defaultValue \"on\"\n */\n value?: AcceptableValue\n /** Id of the element */\n id?: string\n}\n\nexport type CheckboxRootEmits = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: boolean | 'indeterminate']\n}\n\ninterface CheckboxRootContext {\n disabled: Ref<boolean>\n state: Ref<CheckedState>\n}\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext]\n = createContext<CheckboxRootContext>('CheckboxRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { isEqual } from 'ohash'\nimport { computed } from 'vue'\nimport { getState, isIndeterminate } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<CheckboxRootProps>(), {\n modelValue: undefined,\n value: 'on',\n as: 'button',\n})\nconst emits = defineEmits<CheckboxRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current value */\n modelValue: typeof modelValue.value\n /** Current state */\n state: typeof checkboxState.value\n }) => any\n}>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst checkboxGroupContext = injectCheckboxGroupRootContext(null)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<CheckedState>\n\nconst disabled = computed(() => checkboxGroupContext?.disabled.value || props.disabled)\n\nconst checkboxState = computed<CheckedState>(() => {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n return isValueEqualOrExist(checkboxGroupContext.modelValue.value, props.value)\n }\n else {\n return modelValue.value === 'indeterminate' ? 'indeterminate' : modelValue.value\n }\n})\n\nfunction handleClick() {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n const modelValueArray = [...(checkboxGroupContext.modelValue.value || [])]\n if (isValueEqualOrExist(modelValueArray, props.value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, props.value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(props.value)\n }\n checkboxGroupContext.modelValue.value = modelValueArray\n }\n else {\n modelValue.value = isIndeterminate(modelValue.value) ? true : !modelValue.value\n }\n}\n\nconst isFormControl = useFormControl(currentElement)\nconst ariaLabel = computed(() => props.id && currentElement.value\n ? (document.querySelector(`[for=\"${props.id}\"]`) as HTMLLabelElement)?.innerText\n : undefined)\n\nprovideCheckboxRootContext({\n disabled,\n state: checkboxState,\n})\n</script>\n\n<template>\n <component\n v-bind=\"$attrs\"\n :is=\"checkboxGroupContext?.rovingFocus.value ? RovingFocusItem : Primitive\"\n :id=\"id\"\n :ref=\"forwardRef\"\n role=\"checkbox\"\n :as-child=\"asChild\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-checked=\"isIndeterminate(checkboxState) ? 'mixed' : checkboxState\"\n :aria-required=\"required\"\n :aria-label=\"$attrs['aria-label'] || ariaLabel\"\n :data-state=\"getState(checkboxState)\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :focusable=\"checkboxGroupContext?.rovingFocus.value ? !disabled : undefined\"\n @keydown.enter.prevent=\"() => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n }\"\n @click=\"handleClick\"\n >\n <slot\n :model-value=\"modelValue\"\n :state=\"checkboxState\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name && !checkboxGroupContext\"\n type=\"checkbox\"\n :checked=\"!!checkboxState\"\n :name=\"name\"\n :value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":["createContext","useForwardExpose","injectCheckboxGroupRootContext","useVModel","computed","isNullish","isValueEqualOrExist","isEqual","isIndeterminate","useFormControl"],"mappings":";;;;;;;;;;;;;;;;AAmCO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/DA,mCAAmC,cAAc;;;;;;;;;;;;;;;;;;;AAerD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,oBAAA,GAAuBC,0DAA+B,IAAI,CAAA;AAEhE,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,WAAWC,YAAS,CAAA,MAAM,sBAAsB,QAAS,CAAA,KAAA,IAAS,MAAM,QAAQ,CAAA;AAEtF,IAAM,MAAA,aAAA,GAAgBA,aAAuB,MAAM;AACjD,MAAA,IAAI,CAACC,wBAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,OAAOC,8CAAoB,CAAA,oBAAA,CAAqB,UAAW,CAAA,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,OAE1E,MAAA;AACH,QAAA,OAAO,UAAW,CAAA,KAAA,KAAU,eAAkB,GAAA,eAAA,GAAkB,UAAW,CAAA,KAAA;AAAA;AAC7E,KACD,CAAA;AAED,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,IAAI,CAACD,wBAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,MAAM,kBAAkB,CAAC,GAAI,qBAAqB,UAAW,CAAA,KAAA,IAAS,EAAG,CAAA;AACzE,QAAA,IAAIC,8CAAoB,CAAA,eAAA,EAAiB,KAAM,CAAA,KAAK,CAAG,EAAA;AACrD,UAAM,MAAA,KAAA,GAAQ,gBAAgB,SAAU,CAAA,CAAA,CAAA,KAAKC,cAAQ,CAAG,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACpE,UAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,SAE5B,MAAA;AACH,UAAgB,eAAA,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAElC,QAAA,oBAAA,CAAqB,WAAW,KAAQ,GAAA,eAAA;AAAA,OAErC,MAAA;AACH,QAAA,UAAA,CAAW,QAAQC,8BAAgB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA,GAAO,CAAC,UAAW,CAAA,KAAA;AAAA;AAC5E;AAGF,IAAM,MAAA,aAAA,GAAgBC,qCAAe,cAAc,CAAA;AACnD,IAAA,MAAM,SAAY,GAAAL,YAAA,CAAS,MAAM,KAAA,CAAM,MAAM,cAAe,CAAA,KAAA,GACvD,QAAS,CAAA,aAAA,CAAc,SAAS,KAAM,CAAA,EAAE,CAAI,EAAA,CAAA,CAAA,EAAwB,YACrE,MAAS,CAAA;AAEb,IAA2B,0BAAA,CAAA;AAAA,MACzB,QAAA;AAAA,MACA,KAAO,EAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CheckboxRoot.cjs","sources":["../../src/Checkbox/CheckboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { createContext, isNullish, isValueEqualOrExist, useFormControl, useForwardExpose } from '@/shared'\nimport { injectCheckboxGroupRootContext } from './CheckboxGroupRoot.vue'\n\nexport interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: boolean | 'indeterminate'\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: boolean | 'indeterminate' | null\n /** When `true`, prevents the user from interacting with the checkbox */\n disabled?: boolean\n /**\n * The value given as data when submitted with a `name`.\n * @defaultValue \"on\"\n */\n value?: AcceptableValue\n /** Id of the element */\n id?: string\n}\n\nexport type CheckboxRootEmits = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: boolean | 'indeterminate']\n}\n\ninterface CheckboxRootContext {\n disabled: Ref<boolean>\n state: Ref<CheckedState>\n}\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext]\n = createContext<CheckboxRootContext>('CheckboxRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { isEqual } from 'ohash'\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { getState, isIndeterminate } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<CheckboxRootProps>(), {\n modelValue: undefined,\n value: 'on',\n as: 'button',\n})\nconst emits = defineEmits<CheckboxRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current value */\n modelValue: typeof modelValue.value\n /** Current state */\n state: typeof checkboxState.value\n }) => any\n}>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst checkboxGroupContext = injectCheckboxGroupRootContext(null)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<CheckedState>\n\nconst disabled = computed(() => checkboxGroupContext?.disabled.value || props.disabled)\n\nconst checkboxState = computed<CheckedState>(() => {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n return isValueEqualOrExist(checkboxGroupContext.modelValue.value, props.value)\n }\n else {\n return modelValue.value === 'indeterminate' ? 'indeterminate' : modelValue.value\n }\n})\n\nfunction handleClick() {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n const modelValueArray = [...(checkboxGroupContext.modelValue.value || [])]\n if (isValueEqualOrExist(modelValueArray, props.value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, props.value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(props.value)\n }\n checkboxGroupContext.modelValue.value = modelValueArray\n }\n else {\n modelValue.value = isIndeterminate(modelValue.value) ? true : !modelValue.value\n }\n}\n\nconst isFormControl = useFormControl(currentElement)\nconst ariaLabel = computed(() => props.id && currentElement.value\n ? (document.querySelector(`[for=\"${props.id}\"]`) as HTMLLabelElement)?.innerText\n : undefined)\n\nprovideCheckboxRootContext({\n disabled,\n state: checkboxState,\n})\n</script>\n\n<template>\n <component\n v-bind=\"$attrs\"\n :is=\"checkboxGroupContext?.rovingFocus.value ? RovingFocusItem : Primitive\"\n :id=\"id\"\n :ref=\"forwardRef\"\n role=\"checkbox\"\n :as-child=\"asChild\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-checked=\"isIndeterminate(checkboxState) ? 'mixed' : checkboxState\"\n :aria-required=\"required\"\n :aria-label=\"$attrs['aria-label'] || ariaLabel\"\n :data-state=\"getState(checkboxState)\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :focusable=\"checkboxGroupContext?.rovingFocus.value ? !disabled : undefined\"\n @keydown.enter.prevent=\"() => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n }\"\n @click=\"handleClick\"\n >\n <slot\n :model-value=\"modelValue\"\n :state=\"checkboxState\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name && !checkboxGroupContext\"\n type=\"checkbox\"\n :checked=\"!!checkboxState\"\n :name=\"name\"\n :value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":["createContext","useForwardExpose","injectCheckboxGroupRootContext","useVModel","computed","isNullish","isValueEqualOrExist","isEqual","isIndeterminate","useFormControl"],"mappings":";;;;;;;;;;;;;;;;AAmCO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/DA,mCAAmC,cAAc;;;;;;;;;;;;;;;;;;;AAerD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,oBAAA,GAAuBC,0DAA+B,IAAI,CAAA;AAEhE,IAAA,MAAM,UAAa,GAAAC,cAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,WAAWC,YAAS,CAAA,MAAM,sBAAsB,QAAS,CAAA,KAAA,IAAS,MAAM,QAAQ,CAAA;AAEtF,IAAM,MAAA,aAAA,GAAgBA,aAAuB,MAAM;AACjD,MAAA,IAAI,CAACC,wBAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,OAAOC,8CAAoB,CAAA,oBAAA,CAAqB,UAAW,CAAA,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,OAE1E,MAAA;AACH,QAAA,OAAO,UAAW,CAAA,KAAA,KAAU,eAAkB,GAAA,eAAA,GAAkB,UAAW,CAAA,KAAA;AAAA;AAC7E,KACD,CAAA;AAED,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,IAAI,CAACD,wBAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,MAAM,kBAAkB,CAAC,GAAI,qBAAqB,UAAW,CAAA,KAAA,IAAS,EAAG,CAAA;AACzE,QAAA,IAAIC,8CAAoB,CAAA,eAAA,EAAiB,KAAM,CAAA,KAAK,CAAG,EAAA;AACrD,UAAM,MAAA,KAAA,GAAQ,gBAAgB,SAAU,CAAA,CAAA,CAAA,KAAKC,cAAQ,CAAG,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACpE,UAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,SAE5B,MAAA;AACH,UAAgB,eAAA,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAElC,QAAA,oBAAA,CAAqB,WAAW,KAAQ,GAAA,eAAA;AAAA,OAErC,MAAA;AACH,QAAA,UAAA,CAAW,QAAQC,8BAAgB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA,GAAO,CAAC,UAAW,CAAA,KAAA;AAAA;AAC5E;AAGF,IAAM,MAAA,aAAA,GAAgBC,qCAAe,cAAc,CAAA;AACnD,IAAA,MAAM,SAAY,GAAAL,YAAA,CAAS,MAAM,KAAA,CAAM,MAAM,cAAe,CAAA,KAAA,GACvD,QAAS,CAAA,aAAA,CAAc,SAAS,KAAM,CAAA,EAAE,CAAI,EAAA,CAAA,CAAA,EAAwB,YACrE,MAAS,CAAA;AAEb,IAA2B,0BAAA,CAAA;AAAA,MACzB,QAAA;AAAA,MACA,KAAO,EAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxRoot.js","sources":["../../src/Checkbox/CheckboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport { createContext, isNullish, isValueEqualOrExist, useFormControl, useForwardExpose } from '@/shared'\nimport { useVModel } from '@vueuse/core'\nimport { injectCheckboxGroupRootContext } from './CheckboxGroupRoot.vue'\n\nexport interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: boolean | 'indeterminate'\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: boolean | 'indeterminate' | null\n /** When `true`, prevents the user from interacting with the checkbox */\n disabled?: boolean\n /**\n * The value given as data when submitted with a `name`.\n * @defaultValue \"on\"\n */\n value?: AcceptableValue\n /** Id of the element */\n id?: string\n}\n\nexport type CheckboxRootEmits = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: boolean | 'indeterminate']\n}\n\ninterface CheckboxRootContext {\n disabled: Ref<boolean>\n state: Ref<CheckedState>\n}\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext]\n = createContext<CheckboxRootContext>('CheckboxRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { isEqual } from 'ohash'\nimport { computed } from 'vue'\nimport { getState, isIndeterminate } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<CheckboxRootProps>(), {\n modelValue: undefined,\n value: 'on',\n as: 'button',\n})\nconst emits = defineEmits<CheckboxRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current value */\n modelValue: typeof modelValue.value\n /** Current state */\n state: typeof checkboxState.value\n }) => any\n}>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst checkboxGroupContext = injectCheckboxGroupRootContext(null)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<CheckedState>\n\nconst disabled = computed(() => checkboxGroupContext?.disabled.value || props.disabled)\n\nconst checkboxState = computed<CheckedState>(() => {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n return isValueEqualOrExist(checkboxGroupContext.modelValue.value, props.value)\n }\n else {\n return modelValue.value === 'indeterminate' ? 'indeterminate' : modelValue.value\n }\n})\n\nfunction handleClick() {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n const modelValueArray = [...(checkboxGroupContext.modelValue.value || [])]\n if (isValueEqualOrExist(modelValueArray, props.value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, props.value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(props.value)\n }\n checkboxGroupContext.modelValue.value = modelValueArray\n }\n else {\n modelValue.value = isIndeterminate(modelValue.value) ? true : !modelValue.value\n }\n}\n\nconst isFormControl = useFormControl(currentElement)\nconst ariaLabel = computed(() => props.id && currentElement.value\n ? (document.querySelector(`[for=\"${props.id}\"]`) as HTMLLabelElement)?.innerText\n : undefined)\n\nprovideCheckboxRootContext({\n disabled,\n state: checkboxState,\n})\n</script>\n\n<template>\n <component\n v-bind=\"$attrs\"\n :is=\"checkboxGroupContext?.rovingFocus.value ? RovingFocusItem : Primitive\"\n :id=\"id\"\n :ref=\"forwardRef\"\n role=\"checkbox\"\n :as-child=\"asChild\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-checked=\"isIndeterminate(checkboxState) ? 'mixed' : checkboxState\"\n :aria-required=\"required\"\n :aria-label=\"$attrs['aria-label'] || ariaLabel\"\n :data-state=\"getState(checkboxState)\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :focusable=\"checkboxGroupContext?.rovingFocus.value ? !disabled : undefined\"\n @keydown.enter.prevent=\"() => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n }\"\n @click=\"handleClick\"\n >\n <slot\n :model-value=\"modelValue\"\n :state=\"checkboxState\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name && !checkboxGroupContext\"\n type=\"checkbox\"\n :checked=\"!!checkboxState\"\n :name=\"name\"\n :value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmCO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/D,cAAmC,cAAc;;;;;;;;;;;;;;;;;;;AAerD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,oBAAA,GAAuB,+BAA+B,IAAI,CAAA;AAEhE,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,sBAAsB,QAAS,CAAA,KAAA,IAAS,MAAM,QAAQ,CAAA;AAEtF,IAAM,MAAA,aAAA,GAAgB,SAAuB,MAAM;AACjD,MAAA,IAAI,CAAC,SAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,OAAO,mBAAoB,CAAA,oBAAA,CAAqB,UAAW,CAAA,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,OAE1E,MAAA;AACH,QAAA,OAAO,UAAW,CAAA,KAAA,KAAU,eAAkB,GAAA,eAAA,GAAkB,UAAW,CAAA,KAAA;AAAA;AAC7E,KACD,CAAA;AAED,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,IAAI,CAAC,SAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,MAAM,kBAAkB,CAAC,GAAI,qBAAqB,UAAW,CAAA,KAAA,IAAS,EAAG,CAAA;AACzE,QAAA,IAAI,mBAAoB,CAAA,eAAA,EAAiB,KAAM,CAAA,KAAK,CAAG,EAAA;AACrD,UAAM,MAAA,KAAA,GAAQ,gBAAgB,SAAU,CAAA,CAAA,CAAA,KAAK,QAAQ,CAAG,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACpE,UAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,SAE5B,MAAA;AACH,UAAgB,eAAA,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAElC,QAAA,oBAAA,CAAqB,WAAW,KAAQ,GAAA,eAAA;AAAA,OAErC,MAAA;AACH,QAAA,UAAA,CAAW,QAAQ,eAAgB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA,GAAO,CAAC,UAAW,CAAA,KAAA;AAAA;AAC5E;AAGF,IAAM,MAAA,aAAA,GAAgB,eAAe,cAAc,CAAA;AACnD,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,MAAM,cAAe,CAAA,KAAA,GACvD,QAAS,CAAA,aAAA,CAAc,SAAS,KAAM,CAAA,EAAE,CAAI,EAAA,CAAA,CAAA,EAAwB,YACrE,MAAS,CAAA;AAEb,IAA2B,0BAAA,CAAA;AAAA,MACzB,QAAA;AAAA,MACA,KAAO,EAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CheckboxRoot.js","sources":["../../src/Checkbox/CheckboxRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { CheckedState } from './utils'\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { AcceptableValue, FormFieldProps } from '@/shared/types'\nimport { useVModel } from '@vueuse/core'\nimport { createContext, isNullish, isValueEqualOrExist, useFormControl, useForwardExpose } from '@/shared'\nimport { injectCheckboxGroupRootContext } from './CheckboxGroupRoot.vue'\n\nexport interface CheckboxRootProps extends PrimitiveProps, FormFieldProps {\n /** The value of the checkbox when it is initially rendered. Use when you do not need to control its value. */\n defaultValue?: boolean | 'indeterminate'\n /** The controlled value of the checkbox. Can be binded with v-model. */\n modelValue?: boolean | 'indeterminate' | null\n /** When `true`, prevents the user from interacting with the checkbox */\n disabled?: boolean\n /**\n * The value given as data when submitted with a `name`.\n * @defaultValue \"on\"\n */\n value?: AcceptableValue\n /** Id of the element */\n id?: string\n}\n\nexport type CheckboxRootEmits = {\n /** Event handler called when the value of the checkbox changes. */\n 'update:modelValue': [value: boolean | 'indeterminate']\n}\n\ninterface CheckboxRootContext {\n disabled: Ref<boolean>\n state: Ref<CheckedState>\n}\n\nexport const [injectCheckboxRootContext, provideCheckboxRootContext]\n = createContext<CheckboxRootContext>('CheckboxRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { isEqual } from 'ohash'\nimport { computed } from 'vue'\nimport { Primitive } from '@/Primitive'\nimport { RovingFocusItem } from '@/RovingFocus'\nimport { VisuallyHiddenInput } from '@/VisuallyHidden'\nimport { getState, isIndeterminate } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<CheckboxRootProps>(), {\n modelValue: undefined,\n value: 'on',\n as: 'button',\n})\nconst emits = defineEmits<CheckboxRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current value */\n modelValue: typeof modelValue.value\n /** Current state */\n state: typeof checkboxState.value\n }) => any\n}>()\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst checkboxGroupContext = injectCheckboxGroupRootContext(null)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue,\n passive: (props.modelValue === undefined) as false,\n}) as Ref<CheckedState>\n\nconst disabled = computed(() => checkboxGroupContext?.disabled.value || props.disabled)\n\nconst checkboxState = computed<CheckedState>(() => {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n return isValueEqualOrExist(checkboxGroupContext.modelValue.value, props.value)\n }\n else {\n return modelValue.value === 'indeterminate' ? 'indeterminate' : modelValue.value\n }\n})\n\nfunction handleClick() {\n if (!isNullish(checkboxGroupContext?.modelValue.value)) {\n const modelValueArray = [...(checkboxGroupContext.modelValue.value || [])]\n if (isValueEqualOrExist(modelValueArray, props.value)) {\n const index = modelValueArray.findIndex(i => isEqual(i, props.value))\n modelValueArray.splice(index, 1)\n }\n else {\n modelValueArray.push(props.value)\n }\n checkboxGroupContext.modelValue.value = modelValueArray\n }\n else {\n modelValue.value = isIndeterminate(modelValue.value) ? true : !modelValue.value\n }\n}\n\nconst isFormControl = useFormControl(currentElement)\nconst ariaLabel = computed(() => props.id && currentElement.value\n ? (document.querySelector(`[for=\"${props.id}\"]`) as HTMLLabelElement)?.innerText\n : undefined)\n\nprovideCheckboxRootContext({\n disabled,\n state: checkboxState,\n})\n</script>\n\n<template>\n <component\n v-bind=\"$attrs\"\n :is=\"checkboxGroupContext?.rovingFocus.value ? RovingFocusItem : Primitive\"\n :id=\"id\"\n :ref=\"forwardRef\"\n role=\"checkbox\"\n :as-child=\"asChild\"\n :as=\"as\"\n :type=\"as === 'button' ? 'button' : undefined\"\n :aria-checked=\"isIndeterminate(checkboxState) ? 'mixed' : checkboxState\"\n :aria-required=\"required\"\n :aria-label=\"$attrs['aria-label'] || ariaLabel\"\n :data-state=\"getState(checkboxState)\"\n :data-disabled=\"disabled ? '' : undefined\"\n :disabled=\"disabled\"\n :focusable=\"checkboxGroupContext?.rovingFocus.value ? !disabled : undefined\"\n @keydown.enter.prevent=\"() => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n }\"\n @click=\"handleClick\"\n >\n <slot\n :model-value=\"modelValue\"\n :state=\"checkboxState\"\n />\n\n <VisuallyHiddenInput\n v-if=\"isFormControl && name && !checkboxGroupContext\"\n type=\"checkbox\"\n :checked=\"!!checkboxState\"\n :name=\"name\"\n :value=\"value\"\n :disabled=\"disabled\"\n :required=\"required\"\n />\n </component>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmCO,MAAM,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,GAC/D,cAAmC,cAAc;;;;;;;;;;;;;;;;;;;AAerD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAKd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAWd,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,oBAAA,GAAuB,+BAA+B,IAAI,CAAA;AAEhE,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,KAAO,EAAA,YAAA,EAAc,KAAO,EAAA;AAAA,MACvD,cAAc,KAAM,CAAA,YAAA;AAAA,MACpB,OAAA,EAAU,MAAM,UAAe,KAAA;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,sBAAsB,QAAS,CAAA,KAAA,IAAS,MAAM,QAAQ,CAAA;AAEtF,IAAM,MAAA,aAAA,GAAgB,SAAuB,MAAM;AACjD,MAAA,IAAI,CAAC,SAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,OAAO,mBAAoB,CAAA,oBAAA,CAAqB,UAAW,CAAA,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,OAE1E,MAAA;AACH,QAAA,OAAO,UAAW,CAAA,KAAA,KAAU,eAAkB,GAAA,eAAA,GAAkB,UAAW,CAAA,KAAA;AAAA;AAC7E,KACD,CAAA;AAED,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,IAAI,CAAC,SAAA,CAAU,oBAAsB,EAAA,UAAA,CAAW,KAAK,CAAG,EAAA;AACtD,QAAA,MAAM,kBAAkB,CAAC,GAAI,qBAAqB,UAAW,CAAA,KAAA,IAAS,EAAG,CAAA;AACzE,QAAA,IAAI,mBAAoB,CAAA,eAAA,EAAiB,KAAM,CAAA,KAAK,CAAG,EAAA;AACrD,UAAM,MAAA,KAAA,GAAQ,gBAAgB,SAAU,CAAA,CAAA,CAAA,KAAK,QAAQ,CAAG,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACpE,UAAgB,eAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,SAE5B,MAAA;AACH,UAAgB,eAAA,CAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAElC,QAAA,oBAAA,CAAqB,WAAW,KAAQ,GAAA,eAAA;AAAA,OAErC,MAAA;AACH,QAAA,UAAA,CAAW,QAAQ,eAAgB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA,GAAO,CAAC,UAAW,CAAA,KAAA;AAAA;AAC5E;AAGF,IAAM,MAAA,aAAA,GAAgB,eAAe,cAAc,CAAA;AACnD,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,MAAM,cAAe,CAAA,KAAA,GACvD,QAAS,CAAA,aAAA,CAAc,SAAS,KAAM,CAAA,EAAE,CAAI,EAAA,CAAA,CAAA,EAAwB,YACrE,MAAS,CAAA;AAEb,IAA2B,0BAAA,CAAA;AAAA,MACzB,QAAA;AAAA,MACA,KAAO,EAAA;AAAA,KACR,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleContent.cjs","sources":["../../src/Collapsible/CollapsibleContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface CollapsibleContentProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport type CollapsibleContentEmits = {\n contentFound: [void]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { injectCollapsibleRootContext } from './CollapsibleRoot.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<CollapsibleContentProps>()\nconst emits = defineEmits<CollapsibleContentEmits>()\n\nconst rootContext = injectCollapsibleRootContext()\nrootContext.contentId ||= useId(undefined, 'reka-collapsible-content')\n\nconst presentRef = ref<InstanceType<typeof Presence>>()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst width = ref(0)\nconst height = ref(0)\n\n// when opening we want it to immediately open to retrieve dimensions\n// when closing we delay `present` to retrieve dimensions before closing\nconst isOpen = computed(() => rootContext.open.value)\nconst isMountAnimationPrevented = ref(isOpen.value)\nconst currentStyle = ref<Record<string, string>>()\n\nwatch(\n () => [isOpen.value, presentRef.value?.present],\n async () => {\n await nextTick()\n const node = currentElement.value\n if (!node)\n return\n currentStyle.value = currentStyle.value || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n }\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s'\n node.style.animationName = 'none'\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect()\n height.value = rect.height\n width.value = rect.width\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPrevented.value) {\n node.style.transitionDuration = currentStyle.value.transitionDuration\n node.style.animationName = currentStyle.value.animationName\n }\n },\n {\n immediate: true,\n },\n)\n\nconst skipAnimation = computed(() => isMountAnimationPrevented.value && rootContext.open.value)\n\nonMounted(() => {\n requestAnimationFrame(() => {\n isMountAnimationPrevented.value = false\n })\n})\n\nuseEventListener(currentElement, 'beforematch', (ev) => {\n requestAnimationFrame(() => {\n rootContext.onOpenToggle()\n emits('contentFound')\n })\n})\n</script>\n\n<template>\n <Presence\n v-slot=\"{ present }\"\n ref=\"presentRef\"\n :present=\"forceMount || rootContext.open.value\"\n :force-mount=\"true\"\n >\n <Primitive\n v-bind=\"$attrs\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :hidden=\"!present ? rootContext.unmountOnHide.value ? '' : 'until-found' : undefined\"\n :data-state=\"skipAnimation ? undefined : rootContext.open.value ? 'open' : 'closed'\"\n :data-disabled=\"rootContext.disabled?.value ? '' : undefined\"\n :style=\"{\n [`--reka-collapsible-content-height`]: `${height}px`,\n [`--reka-collapsible-content-width`]: `${width}px`,\n }\"\n >\n <slot v-if=\"rootContext.unmountOnHide.value ? present : true\" />\n </Primitive>\n </Presence>\n</template>\n"],"names":["injectCollapsibleRootContext","useId","ref","useForwardExpose","computed","watch","nextTick","onMounted","useEventListener"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAcA,wDAA6B,EAAA;AACjD,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,0BAA0B,CAAA;AAErE,IAAA,MAAM,aAAaC,OAAmC,EAAA;AACtD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,KAAA,GAAQD,QAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAASA,QAAI,CAAC,CAAA;AAIpB,IAAA,MAAM,MAAS,GAAAE,YAAA,CAAS,MAAM,WAAA,CAAY,KAAK,KAAK,CAAA;AACpD,IAAM,MAAA,yBAAA,GAA4BF,OAAI,CAAA,MAAA,CAAO,KAAK,CAAA;AAClD,IAAA,MAAM,eAAeA,OAA4B,EAAA;AAEjD,IAAAG,SAAA;AAAA,MACE,MAAM,CAAC,MAAA,CAAO,KAAO,EAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,MAC9C,YAAY;AACV,QAAA,MAAMC,YAAS,EAAA;AACf,QAAA,MAAM,OAAO,cAAe,CAAA,KAAA;AAC5B,QAAA,IAAI,CAAC,IAAA;AACH,UAAA;AACF,QAAa,YAAA,CAAA,KAAA,GAAQ,aAAa,KAAS,IAAA;AAAA,UACzC,kBAAA,EAAoB,KAAK,KAAM,CAAA,kBAAA;AAAA,UAC/B,aAAA,EAAe,KAAK,KAAM,CAAA;AAAA,SAC5B;AAEA,QAAA,IAAA,CAAK,MAAM,kBAAqB,GAAA,IAAA;AAChC,QAAA,IAAA,CAAK,MAAM,aAAgB,GAAA,MAAA;AAG3B,QAAM,MAAA,IAAA,GAAO,KAAK,qBAAsB,EAAA;AACxC,QAAA,MAAA,CAAO,QAAQ,IAAK,CAAA,MAAA;AACpB,QAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA;AAGnB,QAAI,IAAA,CAAC,0BAA0B,KAAO,EAAA;AACpC,UAAK,IAAA,CAAA,KAAA,CAAM,kBAAqB,GAAA,YAAA,CAAa,KAAM,CAAA,kBAAA;AACnD,UAAK,IAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,YAAA,CAAa,KAAM,CAAA,aAAA;AAAA;AAChD,OACF;AAAA,MACA;AAAA,QACE,SAAW,EAAA;AAAA;AACb,KACF;AAEA,IAAA,MAAM,gBAAgBF,YAAS,CAAA,MAAM,0BAA0B,KAAS,IAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAE9F,IAAAG,aAAA,CAAU,MAAM;AACd,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,OACnC,CAAA;AAAA,KACF,CAAA;AAED,IAAiBC,qBAAA,CAAA,cAAA,EAAgB,aAAe,EAAA,CAAC,EAAO,KAAA;AACtD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,WAAA,CAAY,YAAa,EAAA;AACzB,QAAA,KAAA,CAAM,cAAc,CAAA;AAAA,OACrB,CAAA;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CollapsibleContent.cjs","sources":["../../src/Collapsible/CollapsibleContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface CollapsibleContentProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport type CollapsibleContentEmits = {\n contentFound: [void]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { Presence } from '@/Presence'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\nimport { injectCollapsibleRootContext } from './CollapsibleRoot.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<CollapsibleContentProps>()\nconst emits = defineEmits<CollapsibleContentEmits>()\n\nconst rootContext = injectCollapsibleRootContext()\nrootContext.contentId ||= useId(undefined, 'reka-collapsible-content')\n\nconst presentRef = ref<InstanceType<typeof Presence>>()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst width = ref(0)\nconst height = ref(0)\n\n// when opening we want it to immediately open to retrieve dimensions\n// when closing we delay `present` to retrieve dimensions before closing\nconst isOpen = computed(() => rootContext.open.value)\nconst isMountAnimationPrevented = ref(isOpen.value)\nconst currentStyle = ref<Record<string, string>>()\n\nwatch(\n () => [isOpen.value, presentRef.value?.present],\n async () => {\n await nextTick()\n const node = currentElement.value\n if (!node)\n return\n currentStyle.value = currentStyle.value || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n }\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s'\n node.style.animationName = 'none'\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect()\n height.value = rect.height\n width.value = rect.width\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPrevented.value) {\n node.style.transitionDuration = currentStyle.value.transitionDuration\n node.style.animationName = currentStyle.value.animationName\n }\n },\n {\n immediate: true,\n },\n)\n\nconst skipAnimation = computed(() => isMountAnimationPrevented.value && rootContext.open.value)\n\nonMounted(() => {\n requestAnimationFrame(() => {\n isMountAnimationPrevented.value = false\n })\n})\n\nuseEventListener(currentElement, 'beforematch', (ev) => {\n requestAnimationFrame(() => {\n rootContext.onOpenToggle()\n emits('contentFound')\n })\n})\n</script>\n\n<template>\n <Presence\n v-slot=\"{ present }\"\n ref=\"presentRef\"\n :present=\"forceMount || rootContext.open.value\"\n :force-mount=\"true\"\n >\n <Primitive\n v-bind=\"$attrs\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :hidden=\"!present ? rootContext.unmountOnHide.value ? '' : 'until-found' : undefined\"\n :data-state=\"skipAnimation ? undefined : rootContext.open.value ? 'open' : 'closed'\"\n :data-disabled=\"rootContext.disabled?.value ? '' : undefined\"\n :style=\"{\n [`--reka-collapsible-content-height`]: `${height}px`,\n [`--reka-collapsible-content-width`]: `${width}px`,\n }\"\n >\n <slot v-if=\"rootContext.unmountOnHide.value ? present : true\" />\n </Primitive>\n </Presence>\n</template>\n"],"names":["injectCollapsibleRootContext","useId","ref","useForwardExpose","computed","watch","nextTick","onMounted","useEventListener"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAcA,wDAA6B,EAAA;AACjD,IAAY,WAAA,CAAA,SAAA,KAAcC,kBAAM,CAAA,MAAA,EAAW,0BAA0B,CAAA;AAErE,IAAA,MAAM,aAAaC,OAAmC,EAAA;AACtD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,KAAA,GAAQD,QAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAASA,QAAI,CAAC,CAAA;AAIpB,IAAA,MAAM,MAAS,GAAAE,YAAA,CAAS,MAAM,WAAA,CAAY,KAAK,KAAK,CAAA;AACpD,IAAM,MAAA,yBAAA,GAA4BF,OAAI,CAAA,MAAA,CAAO,KAAK,CAAA;AAClD,IAAA,MAAM,eAAeA,OAA4B,EAAA;AAEjD,IAAAG,SAAA;AAAA,MACE,MAAM,CAAC,MAAA,CAAO,KAAO,EAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,MAC9C,YAAY;AACV,QAAA,MAAMC,YAAS,EAAA;AACf,QAAA,MAAM,OAAO,cAAe,CAAA,KAAA;AAC5B,QAAA,IAAI,CAAC,IAAA;AACH,UAAA;AACF,QAAa,YAAA,CAAA,KAAA,GAAQ,aAAa,KAAS,IAAA;AAAA,UACzC,kBAAA,EAAoB,KAAK,KAAM,CAAA,kBAAA;AAAA,UAC/B,aAAA,EAAe,KAAK,KAAM,CAAA;AAAA,SAC5B;AAEA,QAAA,IAAA,CAAK,MAAM,kBAAqB,GAAA,IAAA;AAChC,QAAA,IAAA,CAAK,MAAM,aAAgB,GAAA,MAAA;AAG3B,QAAM,MAAA,IAAA,GAAO,KAAK,qBAAsB,EAAA;AACxC,QAAA,MAAA,CAAO,QAAQ,IAAK,CAAA,MAAA;AACpB,QAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA;AAGnB,QAAI,IAAA,CAAC,0BAA0B,KAAO,EAAA;AACpC,UAAK,IAAA,CAAA,KAAA,CAAM,kBAAqB,GAAA,YAAA,CAAa,KAAM,CAAA,kBAAA;AACnD,UAAK,IAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,YAAA,CAAa,KAAM,CAAA,aAAA;AAAA;AAChD,OACF;AAAA,MACA;AAAA,QACE,SAAW,EAAA;AAAA;AACb,KACF;AAEA,IAAA,MAAM,gBAAgBF,YAAS,CAAA,MAAM,0BAA0B,KAAS,IAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAE9F,IAAAG,aAAA,CAAU,MAAM;AACd,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,OACnC,CAAA;AAAA,KACF,CAAA;AAED,IAAiBC,qBAAA,CAAA,cAAA,EAAgB,aAAe,EAAA,CAAC,EAAO,KAAA;AACtD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,WAAA,CAAY,YAAa,EAAA;AACzB,QAAA,KAAA,CAAM,cAAc,CAAA;AAAA,OACrB,CAAA;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleContent.js","sources":["../../src/Collapsible/CollapsibleContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface CollapsibleContentProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport type CollapsibleContentEmits = {\n contentFound: [void]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Presence } from '@/Presence'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { injectCollapsibleRootContext } from './CollapsibleRoot.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<CollapsibleContentProps>()\nconst emits = defineEmits<CollapsibleContentEmits>()\n\nconst rootContext = injectCollapsibleRootContext()\nrootContext.contentId ||= useId(undefined, 'reka-collapsible-content')\n\nconst presentRef = ref<InstanceType<typeof Presence>>()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst width = ref(0)\nconst height = ref(0)\n\n// when opening we want it to immediately open to retrieve dimensions\n// when closing we delay `present` to retrieve dimensions before closing\nconst isOpen = computed(() => rootContext.open.value)\nconst isMountAnimationPrevented = ref(isOpen.value)\nconst currentStyle = ref<Record<string, string>>()\n\nwatch(\n () => [isOpen.value, presentRef.value?.present],\n async () => {\n await nextTick()\n const node = currentElement.value\n if (!node)\n return\n currentStyle.value = currentStyle.value || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n }\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s'\n node.style.animationName = 'none'\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect()\n height.value = rect.height\n width.value = rect.width\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPrevented.value) {\n node.style.transitionDuration = currentStyle.value.transitionDuration\n node.style.animationName = currentStyle.value.animationName\n }\n },\n {\n immediate: true,\n },\n)\n\nconst skipAnimation = computed(() => isMountAnimationPrevented.value && rootContext.open.value)\n\nonMounted(() => {\n requestAnimationFrame(() => {\n isMountAnimationPrevented.value = false\n })\n})\n\nuseEventListener(currentElement, 'beforematch', (ev) => {\n requestAnimationFrame(() => {\n rootContext.onOpenToggle()\n emits('contentFound')\n })\n})\n</script>\n\n<template>\n <Presence\n v-slot=\"{ present }\"\n ref=\"presentRef\"\n :present=\"forceMount || rootContext.open.value\"\n :force-mount=\"true\"\n >\n <Primitive\n v-bind=\"$attrs\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :hidden=\"!present ? rootContext.unmountOnHide.value ? '' : 'until-found' : undefined\"\n :data-state=\"skipAnimation ? undefined : rootContext.open.value ? 'open' : 'closed'\"\n :data-disabled=\"rootContext.disabled?.value ? '' : undefined\"\n :style=\"{\n [`--reka-collapsible-content-height`]: `${height}px`,\n [`--reka-collapsible-content-width`]: `${width}px`,\n }\"\n >\n <slot v-if=\"rootContext.unmountOnHide.value ? present : true\" />\n </Primitive>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAc,4BAA6B,EAAA;AACjD,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,0BAA0B,CAAA;AAErE,IAAA,MAAM,aAAa,GAAmC,EAAA;AACtD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,KAAA,GAAQ,IAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA;AAIpB,IAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,KAAK,KAAK,CAAA;AACpD,IAAM,MAAA,yBAAA,GAA4B,GAAI,CAAA,MAAA,CAAO,KAAK,CAAA;AAClD,IAAA,MAAM,eAAe,GAA4B,EAAA;AAEjD,IAAA,KAAA;AAAA,MACE,MAAM,CAAC,MAAA,CAAO,KAAO,EAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,MAC9C,YAAY;AACV,QAAA,MAAM,QAAS,EAAA;AACf,QAAA,MAAM,OAAO,cAAe,CAAA,KAAA;AAC5B,QAAA,IAAI,CAAC,IAAA;AACH,UAAA;AACF,QAAa,YAAA,CAAA,KAAA,GAAQ,aAAa,KAAS,IAAA;AAAA,UACzC,kBAAA,EAAoB,KAAK,KAAM,CAAA,kBAAA;AAAA,UAC/B,aAAA,EAAe,KAAK,KAAM,CAAA;AAAA,SAC5B;AAEA,QAAA,IAAA,CAAK,MAAM,kBAAqB,GAAA,IAAA;AAChC,QAAA,IAAA,CAAK,MAAM,aAAgB,GAAA,MAAA;AAG3B,QAAM,MAAA,IAAA,GAAO,KAAK,qBAAsB,EAAA;AACxC,QAAA,MAAA,CAAO,QAAQ,IAAK,CAAA,MAAA;AACpB,QAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA;AAGnB,QAAI,IAAA,CAAC,0BAA0B,KAAO,EAAA;AACpC,UAAK,IAAA,CAAA,KAAA,CAAM,kBAAqB,GAAA,YAAA,CAAa,KAAM,CAAA,kBAAA;AACnD,UAAK,IAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,YAAA,CAAa,KAAM,CAAA,aAAA;AAAA;AAChD,OACF;AAAA,MACA;AAAA,QACE,SAAW,EAAA;AAAA;AACb,KACF;AAEA,IAAA,MAAM,gBAAgB,QAAS,CAAA,MAAM,0BAA0B,KAAS,IAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAE9F,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,OACnC,CAAA;AAAA,KACF,CAAA;AAED,IAAiB,gBAAA,CAAA,cAAA,EAAgB,aAAe,EAAA,CAAC,EAAO,KAAA;AACtD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,WAAA,CAAY,YAAa,EAAA;AACzB,QAAA,KAAA,CAAM,cAAc,CAAA;AAAA,OACrB,CAAA;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CollapsibleContent.js","sources":["../../src/Collapsible/CollapsibleContent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\n\nexport interface CollapsibleContentProps extends PrimitiveProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with Vue animation libraries.\n */\n forceMount?: boolean\n}\n\nexport type CollapsibleContentEmits = {\n contentFound: [void]\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { Presence } from '@/Presence'\nimport {\n Primitive,\n} from '@/Primitive'\nimport { useForwardExpose, useId } from '@/shared'\nimport { injectCollapsibleRootContext } from './CollapsibleRoot.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps<CollapsibleContentProps>()\nconst emits = defineEmits<CollapsibleContentEmits>()\n\nconst rootContext = injectCollapsibleRootContext()\nrootContext.contentId ||= useId(undefined, 'reka-collapsible-content')\n\nconst presentRef = ref<InstanceType<typeof Presence>>()\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst width = ref(0)\nconst height = ref(0)\n\n// when opening we want it to immediately open to retrieve dimensions\n// when closing we delay `present` to retrieve dimensions before closing\nconst isOpen = computed(() => rootContext.open.value)\nconst isMountAnimationPrevented = ref(isOpen.value)\nconst currentStyle = ref<Record<string, string>>()\n\nwatch(\n () => [isOpen.value, presentRef.value?.present],\n async () => {\n await nextTick()\n const node = currentElement.value\n if (!node)\n return\n currentStyle.value = currentStyle.value || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n }\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s'\n node.style.animationName = 'none'\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect()\n height.value = rect.height\n width.value = rect.width\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPrevented.value) {\n node.style.transitionDuration = currentStyle.value.transitionDuration\n node.style.animationName = currentStyle.value.animationName\n }\n },\n {\n immediate: true,\n },\n)\n\nconst skipAnimation = computed(() => isMountAnimationPrevented.value && rootContext.open.value)\n\nonMounted(() => {\n requestAnimationFrame(() => {\n isMountAnimationPrevented.value = false\n })\n})\n\nuseEventListener(currentElement, 'beforematch', (ev) => {\n requestAnimationFrame(() => {\n rootContext.onOpenToggle()\n emits('contentFound')\n })\n})\n</script>\n\n<template>\n <Presence\n v-slot=\"{ present }\"\n ref=\"presentRef\"\n :present=\"forceMount || rootContext.open.value\"\n :force-mount=\"true\"\n >\n <Primitive\n v-bind=\"$attrs\"\n :id=\"rootContext.contentId\"\n :ref=\"forwardRef\"\n :as-child=\"props.asChild\"\n :as=\"as\"\n :hidden=\"!present ? rootContext.unmountOnHide.value ? '' : 'until-found' : undefined\"\n :data-state=\"skipAnimation ? undefined : rootContext.open.value ? 'open' : 'closed'\"\n :data-disabled=\"rootContext.disabled?.value ? '' : undefined\"\n :style=\"{\n [`--reka-collapsible-content-height`]: `${height}px`,\n [`--reka-collapsible-content-width`]: `${width}px`,\n }\"\n >\n <slot v-if=\"rootContext.unmountOnHide.value ? present : true\" />\n </Primitive>\n </Presence>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,cAAc,4BAA6B,EAAA;AACjD,IAAY,WAAA,CAAA,SAAA,KAAc,KAAM,CAAA,MAAA,EAAW,0BAA0B,CAAA;AAErE,IAAA,MAAM,aAAa,GAAmC,EAAA;AACtD,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,KAAA,GAAQ,IAAI,CAAC,CAAA;AACnB,IAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA;AAIpB,IAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAM,WAAA,CAAY,KAAK,KAAK,CAAA;AACpD,IAAM,MAAA,yBAAA,GAA4B,GAAI,CAAA,MAAA,CAAO,KAAK,CAAA;AAClD,IAAA,MAAM,eAAe,GAA4B,EAAA;AAEjD,IAAA,KAAA;AAAA,MACE,MAAM,CAAC,MAAA,CAAO,KAAO,EAAA,UAAA,CAAW,OAAO,OAAO,CAAA;AAAA,MAC9C,YAAY;AACV,QAAA,MAAM,QAAS,EAAA;AACf,QAAA,MAAM,OAAO,cAAe,CAAA,KAAA;AAC5B,QAAA,IAAI,CAAC,IAAA;AACH,UAAA;AACF,QAAa,YAAA,CAAA,KAAA,GAAQ,aAAa,KAAS,IAAA;AAAA,UACzC,kBAAA,EAAoB,KAAK,KAAM,CAAA,kBAAA;AAAA,UAC/B,aAAA,EAAe,KAAK,KAAM,CAAA;AAAA,SAC5B;AAEA,QAAA,IAAA,CAAK,MAAM,kBAAqB,GAAA,IAAA;AAChC,QAAA,IAAA,CAAK,MAAM,aAAgB,GAAA,MAAA;AAG3B,QAAM,MAAA,IAAA,GAAO,KAAK,qBAAsB,EAAA;AACxC,QAAA,MAAA,CAAO,QAAQ,IAAK,CAAA,MAAA;AACpB,QAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA;AAGnB,QAAI,IAAA,CAAC,0BAA0B,KAAO,EAAA;AACpC,UAAK,IAAA,CAAA,KAAA,CAAM,kBAAqB,GAAA,YAAA,CAAa,KAAM,CAAA,kBAAA;AACnD,UAAK,IAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,YAAA,CAAa,KAAM,CAAA,aAAA;AAAA;AAChD,OACF;AAAA,MACA;AAAA,QACE,SAAW,EAAA;AAAA;AACb,KACF;AAEA,IAAA,MAAM,gBAAgB,QAAS,CAAA,MAAM,0BAA0B,KAAS,IAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAE9F,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,yBAAA,CAA0B,KAAQ,GAAA,KAAA;AAAA,OACnC,CAAA;AAAA,KACF,CAAA;AAED,IAAiB,gBAAA,CAAA,cAAA,EAAgB,aAAe,EAAA,CAAC,EAAO,KAAA;AACtD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,WAAA,CAAY,YAAa,EAAA;AACzB,QAAA,KAAA,CAAM,cAAc,CAAA;AAAA,OACrB,CAAA;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -32,6 +32,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
32
32
  open,
33
33
  unmountOnHide,
34
34
  onOpenToggle: () => {
35
+ if (disabled.value)
36
+ return;
35
37
  open.value = !open.value;
36
38
  }
37
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleRoot.cjs","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\nimport { toRefs } from 'vue'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n open?: boolean\n /** When `true`, prevents the user from interacting with the collapsible. */\n disabled?: boolean\n /** When `true`, the element will be unmounted on closed state. */\n unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n /** Event handler called when the open state of the collapsible changes. */\n 'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n contentId: string\n disabled?: Ref<boolean>\n open: Ref<boolean>\n unmountOnHide: Ref<boolean>\n onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n open: undefined,\n defaultOpen: false,\n unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n contentId: '',\n disabled,\n open,\n unmountOnHide,\n onOpenToggle: () => {\n open.value = !open.value\n },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"props.asChild\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :open=\"open\" />\n </Primitive>\n</template>\n"],"names":["createContext","useVModel","toRefs","useForwardExpose"],"mappings":";;;;;;;;AA8BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrEA,mCAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAIC,WAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CollapsibleRoot.cjs","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { toRefs } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n open?: boolean\n /** When `true`, prevents the user from interacting with the collapsible. */\n disabled?: boolean\n /** When `true`, the element will be unmounted on closed state. */\n unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n /** Event handler called when the open state of the collapsible changes. */\n 'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n contentId: string\n disabled?: Ref<boolean>\n open: Ref<boolean>\n unmountOnHide: Ref<boolean>\n onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n open: undefined,\n defaultOpen: false,\n unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n contentId: '',\n disabled,\n open,\n unmountOnHide,\n onOpenToggle: () => {\n if (disabled.value)\n return\n\n open.value = !open.value\n },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"props.asChild\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :open=\"open\" />\n </Primitive>\n</template>\n"],"names":["createContext","useVModel","toRefs","useForwardExpose"],"mappings":";;;;;;;;AA8BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrEA,mCAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAIC,WAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,IAAI,QAAS,CAAA,KAAA;AACX,UAAA;AAEF,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;;;"}
@@ -30,6 +30,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
30
30
  open,
31
31
  unmountOnHide,
32
32
  onOpenToggle: () => {
33
+ if (disabled.value)
34
+ return;
33
35
  open.value = !open.value;
34
36
  }
35
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleRoot.js","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport type { Ref } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\nimport { toRefs } from 'vue'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n open?: boolean\n /** When `true`, prevents the user from interacting with the collapsible. */\n disabled?: boolean\n /** When `true`, the element will be unmounted on closed state. */\n unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n /** Event handler called when the open state of the collapsible changes. */\n 'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n contentId: string\n disabled?: Ref<boolean>\n open: Ref<boolean>\n unmountOnHide: Ref<boolean>\n onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n open: undefined,\n defaultOpen: false,\n unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n contentId: '',\n disabled,\n open,\n unmountOnHide,\n onOpenToggle: () => {\n open.value = !open.value\n },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"props.asChild\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :open=\"open\" />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;AA8BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrE,cAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAI,OAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CollapsibleRoot.js","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { toRefs } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n open?: boolean\n /** When `true`, prevents the user from interacting with the collapsible. */\n disabled?: boolean\n /** When `true`, the element will be unmounted on closed state. */\n unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n /** Event handler called when the open state of the collapsible changes. */\n 'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n contentId: string\n disabled?: Ref<boolean>\n open: Ref<boolean>\n unmountOnHide: Ref<boolean>\n onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { Primitive } from '@/Primitive'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n open: undefined,\n defaultOpen: false,\n unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\n\ndefineSlots<{\n default?: (props: {\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n contentId: '',\n disabled,\n open,\n unmountOnHide,\n onOpenToggle: () => {\n if (disabled.value)\n return\n\n open.value = !open.value\n },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n <Primitive\n :as=\"as\"\n :as-child=\"props.asChild\"\n :data-state=\"open ? 'open' : 'closed'\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <slot :open=\"open\" />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;;AA8BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrE,cAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAI,OAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAA,IAAI,QAAS,CAAA,KAAA;AACX,UAAA;AAEF,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiB,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;"}