@spectral_labs/ui 1.1.2 → 1.2.1

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 (462) hide show
  1. package/dist/components/accordion/__tests__/AccordionTest.svelte +4 -4
  2. package/dist/components/accordion/components/accordion-content.svelte +3 -3
  3. package/dist/components/accordion/components/accordion-item.svelte +1 -1
  4. package/dist/components/accordion/components/accordion-root.svelte +5 -7
  5. package/dist/components/accordion/components/accordion-root.svelte.d.ts.map +1 -1
  6. package/dist/components/accordion/components/accordion-trigger.svelte +12 -12
  7. package/dist/components/alert-dialog/__tests__/AlertDialogTest.svelte +6 -3
  8. package/dist/components/alert-dialog/__tests__/alert-dialog.a11y.test.js +9 -2
  9. package/dist/components/alert-dialog/components/alert-dialog-action.svelte +2 -2
  10. package/dist/components/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
  11. package/dist/components/alert-dialog/components/alert-dialog-content.svelte +15 -11
  12. package/dist/components/alert-dialog/components/alert-dialog-content.svelte.d.ts.map +1 -1
  13. package/dist/components/alert-dialog/components/alert-dialog-description.svelte +1 -1
  14. package/dist/components/alert-dialog/components/alert-dialog-overlay.svelte +8 -6
  15. package/dist/components/alert-dialog/components/alert-dialog-overlay.svelte.d.ts.map +1 -1
  16. package/dist/components/alert-dialog/components/alert-dialog-root.svelte +7 -2
  17. package/dist/components/alert-dialog/components/alert-dialog-root.svelte.d.ts.map +1 -1
  18. package/dist/components/alert-dialog/components/alert-dialog-title.svelte +6 -2
  19. package/dist/components/alert-dialog/components/alert-dialog-trigger.svelte +3 -3
  20. package/dist/components/app-bar/app-bar.svelte +12 -12
  21. package/dist/components/aspect-ratio/aspect-ratio.svelte +2 -2
  22. package/dist/components/avatar/avatar.svelte +6 -6
  23. package/dist/components/badge/badge.svelte +60 -16
  24. package/dist/components/badge/types.d.ts.map +1 -1
  25. package/dist/components/bottom-sheet/__tests__/BottomSheetTest.svelte +16 -6
  26. package/dist/components/bottom-sheet/components/bottom-sheet-root.svelte +20 -20
  27. package/dist/components/breadcrumb/breadcrumb-item.svelte +2 -2
  28. package/dist/components/breadcrumb/breadcrumb-link.svelte +6 -2
  29. package/dist/components/breadcrumb/breadcrumb-link.svelte.d.ts.map +1 -1
  30. package/dist/components/breadcrumb/breadcrumb-list.svelte +2 -2
  31. package/dist/components/breadcrumb/breadcrumb-page.svelte +3 -3
  32. package/dist/components/breadcrumb/breadcrumb-separator.svelte +12 -4
  33. package/dist/components/breadcrumb/breadcrumb.svelte +2 -2
  34. package/dist/components/button/button.svelte +1 -1
  35. package/dist/components/button/types.d.ts.map +1 -1
  36. package/dist/components/calendar/__tests__/CalendarTest.svelte +1 -1
  37. package/dist/components/calendar/calendar.svelte.d.ts.map +1 -1
  38. package/dist/components/calendar/calendar.svelte.js +89 -33
  39. package/dist/components/calendar/components/calendar-grid.svelte +16 -15
  40. package/dist/components/calendar/components/calendar-grid.svelte.d.ts.map +1 -1
  41. package/dist/components/calendar/components/calendar-header.svelte +1 -1
  42. package/dist/components/calendar/components/calendar-heading.svelte +2 -2
  43. package/dist/components/calendar/components/calendar-next-button.svelte +14 -6
  44. package/dist/components/calendar/components/calendar-prev-button.svelte +14 -6
  45. package/dist/components/calendar/components/calendar-root.svelte +50 -22
  46. package/dist/components/calendar/components/calendar-root.svelte.d.ts.map +1 -1
  47. package/dist/components/card/card.svelte +1 -1
  48. package/dist/components/checkbox/checkbox.svelte +23 -27
  49. package/dist/components/checkbox/checkbox.svelte.d.ts.map +1 -1
  50. package/dist/components/chips/chip-group.svelte +8 -13
  51. package/dist/components/chips/chip-group.svelte.d.ts.map +1 -1
  52. package/dist/components/chips/chips.svelte +32 -39
  53. package/dist/components/chips/chips.svelte.d.ts.map +1 -1
  54. package/dist/components/chips/types.d.ts +5 -5
  55. package/dist/components/chips/types.d.ts.map +1 -1
  56. package/dist/components/collapsible/__tests__/CollapsibleTest.svelte +1 -1
  57. package/dist/components/collapsible/components/collapsible-content.svelte +8 -6
  58. package/dist/components/collapsible/components/collapsible-content.svelte.d.ts.map +1 -1
  59. package/dist/components/collapsible/components/collapsible-root.svelte +2 -3
  60. package/dist/components/collapsible/components/collapsible-root.svelte.d.ts.map +1 -1
  61. package/dist/components/collapsible/components/collapsible-trigger.svelte +2 -2
  62. package/dist/components/combobox/__tests__/ComboboxTest.svelte +5 -5
  63. package/dist/components/combobox/components/combobox-content.svelte +4 -6
  64. package/dist/components/combobox/components/combobox-content.svelte.d.ts.map +1 -1
  65. package/dist/components/combobox/components/combobox-input.svelte +10 -15
  66. package/dist/components/combobox/components/combobox-input.svelte.d.ts.map +1 -1
  67. package/dist/components/combobox/components/combobox-item.svelte +5 -8
  68. package/dist/components/combobox/components/combobox-item.svelte.d.ts.map +1 -1
  69. package/dist/components/combobox/components/combobox-root.svelte +13 -18
  70. package/dist/components/combobox/components/combobox-root.svelte.d.ts.map +1 -1
  71. package/dist/components/combobox/index.d.ts +1 -1
  72. package/dist/components/combobox/index.d.ts.map +1 -1
  73. package/dist/components/command/__tests__/CommandTest.svelte +19 -10
  74. package/dist/components/command/__tests__/command.a11y.test.js +1 -1
  75. package/dist/components/command/command.svelte.d.ts.map +1 -1
  76. package/dist/components/command/command.svelte.js +20 -10
  77. package/dist/components/command/components/command-empty.svelte +2 -2
  78. package/dist/components/command/components/command-group.svelte +6 -4
  79. package/dist/components/command/components/command-group.svelte.d.ts.map +1 -1
  80. package/dist/components/command/components/command-input.svelte +27 -14
  81. package/dist/components/command/components/command-input.svelte.d.ts.map +1 -1
  82. package/dist/components/command/components/command-item.svelte +12 -7
  83. package/dist/components/command/components/command-item.svelte.d.ts.map +1 -1
  84. package/dist/components/command/components/command-list.svelte +2 -7
  85. package/dist/components/command/components/command-root.svelte +18 -10
  86. package/dist/components/command/components/command-root.svelte.d.ts.map +1 -1
  87. package/dist/components/command/components/command-separator.svelte +2 -2
  88. package/dist/components/context-menu/__tests__/ContextMenuNonInteractiveTest.svelte +32 -0
  89. package/dist/components/context-menu/__tests__/ContextMenuTest.svelte +1 -1
  90. package/dist/components/context-menu/__tests__/context-menu.test.svelte.js +77 -1
  91. package/dist/components/context-menu/components/context-menu-content.svelte +7 -10
  92. package/dist/components/context-menu/components/context-menu-content.svelte.d.ts.map +1 -1
  93. package/dist/components/context-menu/components/context-menu-root.svelte +7 -2
  94. package/dist/components/context-menu/components/context-menu-root.svelte.d.ts.map +1 -1
  95. package/dist/components/context-menu/components/context-menu-trigger.svelte +15 -15
  96. package/dist/components/context-menu/index.d.ts +1 -1
  97. package/dist/components/context-menu/index.d.ts.map +1 -1
  98. package/dist/components/context-menu/types.d.ts +16 -1
  99. package/dist/components/context-menu/types.d.ts.map +1 -1
  100. package/dist/components/date-field/__tests__/DateFieldTest.svelte +1 -1
  101. package/dist/components/date-field/__tests__/date-field.test.svelte.js +5 -5
  102. package/dist/components/date-field/components/date-field-root.svelte +55 -55
  103. package/dist/components/date-field/types.d.ts +14 -14
  104. package/dist/components/date-field/types.d.ts.map +1 -1
  105. package/dist/components/date-picker/__tests__/DatePickerTest.svelte +2 -8
  106. package/dist/components/date-picker/__tests__/date-picker.test.svelte.js +10 -9
  107. package/dist/components/date-picker/components/date-picker-root.svelte +38 -31
  108. package/dist/components/date-picker/components/date-picker-root.svelte.d.ts.map +1 -1
  109. package/dist/components/date-range-field/__tests__/DateRangeFieldTest.svelte +1 -1
  110. package/dist/components/date-range-field/__tests__/date-range-field.test.svelte.js +3 -3
  111. package/dist/components/date-range-field/components/date-range-field-root.svelte +5 -5
  112. package/dist/components/date-range-picker/__tests__/DateRangePickerTest.svelte +2 -7
  113. package/dist/components/date-range-picker/__tests__/date-range-picker.test.svelte.js +11 -11
  114. package/dist/components/date-range-picker/components/date-range-picker-root.svelte +40 -32
  115. package/dist/components/date-range-picker/components/date-range-picker-root.svelte.d.ts.map +1 -1
  116. package/dist/components/dialog/__tests__/DialogTest.svelte +8 -3
  117. package/dist/components/dialog/components/dialog-close.svelte +2 -2
  118. package/dist/components/dialog/components/dialog-content.svelte +16 -13
  119. package/dist/components/dialog/components/dialog-content.svelte.d.ts.map +1 -1
  120. package/dist/components/dialog/components/dialog-description.svelte +1 -1
  121. package/dist/components/dialog/components/dialog-overlay.svelte +8 -6
  122. package/dist/components/dialog/components/dialog-overlay.svelte.d.ts.map +1 -1
  123. package/dist/components/dialog/components/dialog-root.svelte +4 -2
  124. package/dist/components/dialog/components/dialog-root.svelte.d.ts.map +1 -1
  125. package/dist/components/dialog/components/dialog-title.svelte +6 -2
  126. package/dist/components/dialog/components/dialog-trigger.svelte +3 -3
  127. package/dist/components/drop-zone/drop-zone.svelte +12 -18
  128. package/dist/components/drop-zone/drop-zone.svelte.d.ts.map +1 -1
  129. package/dist/components/dropdown-menu/__tests__/DropdownMenuTest.svelte +1 -1
  130. package/dist/components/dropdown-menu/components/dropdown-menu-checkbox-item.svelte +19 -8
  131. package/dist/components/dropdown-menu/components/dropdown-menu-checkbox-item.svelte.d.ts.map +1 -1
  132. package/dist/components/dropdown-menu/components/dropdown-menu-content.svelte +8 -12
  133. package/dist/components/dropdown-menu/components/dropdown-menu-content.svelte.d.ts.map +1 -1
  134. package/dist/components/dropdown-menu/components/dropdown-menu-item.svelte +4 -6
  135. package/dist/components/dropdown-menu/components/dropdown-menu-item.svelte.d.ts.map +1 -1
  136. package/dist/components/dropdown-menu/components/dropdown-menu-label.svelte +1 -1
  137. package/dist/components/dropdown-menu/components/dropdown-menu-root.svelte +7 -2
  138. package/dist/components/dropdown-menu/components/dropdown-menu-root.svelte.d.ts.map +1 -1
  139. package/dist/components/dropdown-menu/components/dropdown-menu-separator.svelte +2 -2
  140. package/dist/components/dropdown-menu/components/dropdown-menu-sub-content.svelte +5 -8
  141. package/dist/components/dropdown-menu/components/dropdown-menu-sub-content.svelte.d.ts.map +1 -1
  142. package/dist/components/dropdown-menu/components/dropdown-menu-sub-trigger.svelte +19 -14
  143. package/dist/components/dropdown-menu/components/dropdown-menu-sub-trigger.svelte.d.ts.map +1 -1
  144. package/dist/components/dropdown-menu/components/dropdown-menu-sub.svelte +19 -7
  145. package/dist/components/dropdown-menu/components/dropdown-menu-sub.svelte.d.ts.map +1 -1
  146. package/dist/components/dropdown-menu/components/dropdown-menu-trigger.svelte +5 -7
  147. package/dist/components/dropdown-menu/components/dropdown-menu-trigger.svelte.d.ts.map +1 -1
  148. package/dist/components/empty-state/empty-state.svelte +6 -6
  149. package/dist/components/fab/fab.svelte +2 -2
  150. package/dist/components/field/__tests__/FieldTest.svelte +2 -2
  151. package/dist/components/field/field-description.svelte +1 -1
  152. package/dist/components/field/field-error.svelte +2 -2
  153. package/dist/components/field/field-group.svelte +1 -1
  154. package/dist/components/field/field-label.svelte +2 -2
  155. package/dist/components/field/field-separator.svelte +4 -4
  156. package/dist/components/field/field.svelte +1 -1
  157. package/dist/components/grid-list/__tests__/GridListTest.svelte +2 -2
  158. package/dist/components/grid-list/components/grid-list-item.svelte +11 -17
  159. package/dist/components/grid-list/components/grid-list-item.svelte.d.ts.map +1 -1
  160. package/dist/components/grid-list/components/grid-list-root.svelte +32 -35
  161. package/dist/components/grid-list/components/grid-list-root.svelte.d.ts.map +1 -1
  162. package/dist/components/grid-list/grid-list.svelte.d.ts.map +1 -1
  163. package/dist/components/grid-list/grid-list.svelte.js +25 -15
  164. package/dist/components/grid-list/index.d.ts +1 -1
  165. package/dist/components/grid-list/index.d.ts.map +1 -1
  166. package/dist/components/grid-list/types.d.ts +21 -21
  167. package/dist/components/grid-list/types.d.ts.map +1 -1
  168. package/dist/components/hover-card/__tests__/HoverCardTest.svelte +3 -3
  169. package/dist/components/hover-card/components/hover-card-content.svelte +26 -12
  170. package/dist/components/hover-card/components/hover-card-content.svelte.d.ts.map +1 -1
  171. package/dist/components/hover-card/components/hover-card-root.svelte +10 -4
  172. package/dist/components/hover-card/components/hover-card-root.svelte.d.ts.map +1 -1
  173. package/dist/components/hover-card/components/hover-card-trigger.svelte +3 -4
  174. package/dist/components/hover-card/components/hover-card-trigger.svelte.d.ts.map +1 -1
  175. package/dist/components/indicator/indicator.svelte +5 -5
  176. package/dist/components/input/__tests__/input.test.svelte.js +29 -0
  177. package/dist/components/input/input.svelte +22 -5
  178. package/dist/components/label/label.svelte +2 -3
  179. package/dist/components/label/label.svelte.d.ts.map +1 -1
  180. package/dist/components/language-select/__tests__/languages.test.js +8 -8
  181. package/dist/components/language-select/language-select.svelte +23 -35
  182. package/dist/components/language-select/language-select.svelte.d.ts.map +1 -1
  183. package/dist/components/link-preview/__tests__/LinkPreviewTest.svelte +2 -2
  184. package/dist/components/link-preview/__tests__/link-preview.a11y.test.js +5 -1
  185. package/dist/components/link-preview/__tests__/link-preview.test.svelte.js +4 -1
  186. package/dist/components/link-preview/components/link-preview-content.svelte +16 -7
  187. package/dist/components/link-preview/components/link-preview-content.svelte.d.ts.map +1 -1
  188. package/dist/components/link-preview/components/link-preview-root.svelte +7 -2
  189. package/dist/components/link-preview/components/link-preview-root.svelte.d.ts.map +1 -1
  190. package/dist/components/link-preview/components/link-preview-trigger.svelte +15 -13
  191. package/dist/components/link-preview/components/link-preview-trigger.svelte.d.ts.map +1 -1
  192. package/dist/components/link-preview/index.d.ts +1 -1
  193. package/dist/components/link-preview/index.d.ts.map +1 -1
  194. package/dist/components/list/components/list-item.svelte +4 -4
  195. package/dist/components/list/components/list-root.svelte +2 -2
  196. package/dist/components/menubar/__tests__/MenubarTest.svelte +5 -5
  197. package/dist/components/menubar/__tests__/menubar.a11y.test.js +5 -1
  198. package/dist/components/menubar/components/menubar-content.svelte +36 -27
  199. package/dist/components/menubar/components/menubar-content.svelte.d.ts.map +1 -1
  200. package/dist/components/menubar/components/menubar-menu.svelte +7 -3
  201. package/dist/components/menubar/components/menubar-menu.svelte.d.ts.map +1 -1
  202. package/dist/components/menubar/components/menubar-root.svelte +12 -22
  203. package/dist/components/menubar/components/menubar-root.svelte.d.ts.map +1 -1
  204. package/dist/components/menubar/components/menubar-trigger.svelte +6 -8
  205. package/dist/components/menubar/components/menubar-trigger.svelte.d.ts.map +1 -1
  206. package/dist/components/meter/meter.svelte +6 -9
  207. package/dist/components/meter/meter.svelte.d.ts.map +1 -1
  208. package/dist/components/nav-bar/components/nav-bar-item.svelte +9 -12
  209. package/dist/components/nav-bar/components/nav-bar-item.svelte.d.ts.map +1 -1
  210. package/dist/components/nav-bar/components/nav-bar-root.svelte +3 -3
  211. package/dist/components/nav-drawer/components/nav-drawer-item.svelte +8 -11
  212. package/dist/components/nav-drawer/components/nav-drawer-item.svelte.d.ts.map +1 -1
  213. package/dist/components/nav-drawer/components/nav-drawer-root.svelte +11 -11
  214. package/dist/components/nav-drawer/components/nav-drawer-root.svelte.d.ts.map +1 -1
  215. package/dist/components/nav-rail/components/nav-rail-item.svelte +10 -12
  216. package/dist/components/nav-rail/components/nav-rail-item.svelte.d.ts.map +1 -1
  217. package/dist/components/nav-rail/components/nav-rail-root.svelte +4 -4
  218. package/dist/components/pagination/pagination.svelte +28 -33
  219. package/dist/components/pagination/pagination.svelte.d.ts.map +1 -1
  220. package/dist/components/pin-input/pin-input.svelte +21 -20
  221. package/dist/components/pin-input/pin-input.svelte.d.ts.map +1 -1
  222. package/dist/components/popover/__tests__/PopoverTest.svelte +2 -2
  223. package/dist/components/popover/components/popover-close.svelte +2 -2
  224. package/dist/components/popover/components/popover-content.svelte +48 -25
  225. package/dist/components/popover/components/popover-content.svelte.d.ts.map +1 -1
  226. package/dist/components/popover/components/popover-root.svelte +1 -1
  227. package/dist/components/popover/components/popover-trigger.svelte +4 -5
  228. package/dist/components/popover/components/popover-trigger.svelte.d.ts.map +1 -1
  229. package/dist/components/progress/progress.svelte +3 -3
  230. package/dist/components/radio-group/components/radio-group-item.svelte +8 -9
  231. package/dist/components/radio-group/components/radio-group-item.svelte.d.ts.map +1 -1
  232. package/dist/components/radio-group/components/radio-group-root.svelte +6 -5
  233. package/dist/components/radio-group/components/radio-group-root.svelte.d.ts.map +1 -1
  234. package/dist/components/range-calendar/__tests__/RangeCalendarTest.svelte +1 -1
  235. package/dist/components/range-calendar/__tests__/range-calendar.test.svelte.js +4 -1
  236. package/dist/components/range-calendar/components/range-calendar-grid.svelte +16 -17
  237. package/dist/components/range-calendar/components/range-calendar-grid.svelte.d.ts.map +1 -1
  238. package/dist/components/range-calendar/components/range-calendar-header.svelte +29 -13
  239. package/dist/components/range-calendar/components/range-calendar-root.svelte +42 -17
  240. package/dist/components/range-calendar/components/range-calendar-root.svelte.d.ts.map +1 -1
  241. package/dist/components/range-calendar/range-calendar.svelte.d.ts.map +1 -1
  242. package/dist/components/range-calendar/range-calendar.svelte.js +54 -24
  243. package/dist/components/rating-group/rating-group.svelte +17 -23
  244. package/dist/components/rating-group/rating-group.svelte.d.ts.map +1 -1
  245. package/dist/components/scroll-area/scroll-area.svelte +22 -28
  246. package/dist/components/scroll-area/scroll-area.svelte.d.ts.map +1 -1
  247. package/dist/components/search-field/__tests__/SearchFieldTest.svelte +3 -3
  248. package/dist/components/search-field/__tests__/search-field.test.svelte.js +28 -0
  249. package/dist/components/search-field/search-field.svelte +44 -18
  250. package/dist/components/search-field/types.d.ts +7 -7
  251. package/dist/components/search-field/types.d.ts.map +1 -1
  252. package/dist/components/select/__tests__/SelectLabelPersistenceTest.svelte +6 -8
  253. package/dist/components/select/__tests__/SelectTest.svelte +1 -1
  254. package/dist/components/select/components/select-content.svelte +13 -16
  255. package/dist/components/select/components/select-content.svelte.d.ts.map +1 -1
  256. package/dist/components/select/components/select-item.svelte +14 -16
  257. package/dist/components/select/components/select-item.svelte.d.ts.map +1 -1
  258. package/dist/components/select/components/select-root.svelte +9 -12
  259. package/dist/components/select/components/select-root.svelte.d.ts.map +1 -1
  260. package/dist/components/select/components/select-trigger.svelte +20 -12
  261. package/dist/components/select/components/select-trigger.svelte.d.ts.map +1 -1
  262. package/dist/components/separator/separator.svelte +1 -1
  263. package/dist/components/sheet/__tests__/SheetTest.svelte +2 -2
  264. package/dist/components/sheet/components/sheet-close.svelte +2 -2
  265. package/dist/components/sheet/components/sheet-content.svelte +12 -11
  266. package/dist/components/sheet/components/sheet-content.svelte.d.ts.map +1 -1
  267. package/dist/components/sheet/components/sheet-description.svelte +1 -1
  268. package/dist/components/sheet/components/sheet-overlay.svelte +8 -6
  269. package/dist/components/sheet/components/sheet-overlay.svelte.d.ts.map +1 -1
  270. package/dist/components/sheet/components/sheet-root.svelte +4 -2
  271. package/dist/components/sheet/components/sheet-root.svelte.d.ts.map +1 -1
  272. package/dist/components/sheet/components/sheet-title.svelte +7 -6
  273. package/dist/components/sheet/components/sheet-trigger.svelte +3 -3
  274. package/dist/components/side-sheet/__tests__/side-sheet.test.svelte.js +3 -1
  275. package/dist/components/side-sheet/side-sheet.svelte +5 -5
  276. package/dist/components/sidebar/__tests__/SidebarFullTest.svelte +7 -7
  277. package/dist/components/sidebar/__tests__/SidebarTest.svelte +2 -2
  278. package/dist/components/sidebar/__tests__/sidebar.test.svelte.js +9 -5
  279. package/dist/components/sidebar/components/sidebar-content.svelte +1 -1
  280. package/dist/components/sidebar/components/sidebar-footer.svelte +1 -1
  281. package/dist/components/sidebar/components/sidebar-group-content.svelte +1 -1
  282. package/dist/components/sidebar/components/sidebar-group-label.svelte +1 -1
  283. package/dist/components/sidebar/components/sidebar-group.svelte +1 -1
  284. package/dist/components/sidebar/components/sidebar-header.svelte +1 -1
  285. package/dist/components/sidebar/components/sidebar-inset.svelte +1 -1
  286. package/dist/components/sidebar/components/sidebar-menu-action.svelte +11 -4
  287. package/dist/components/sidebar/components/sidebar-menu-action.svelte.d.ts.map +1 -1
  288. package/dist/components/sidebar/components/sidebar-menu-button.svelte +8 -4
  289. package/dist/components/sidebar/components/sidebar-menu-item.svelte +1 -1
  290. package/dist/components/sidebar/components/sidebar-menu-sub-button.svelte +5 -3
  291. package/dist/components/sidebar/components/sidebar-menu-sub-item.svelte +1 -1
  292. package/dist/components/sidebar/components/sidebar-menu-sub.svelte +1 -1
  293. package/dist/components/sidebar/components/sidebar-menu.svelte +1 -1
  294. package/dist/components/sidebar/components/sidebar-provider.svelte +5 -3
  295. package/dist/components/sidebar/components/sidebar-provider.svelte.d.ts.map +1 -1
  296. package/dist/components/sidebar/components/sidebar-root.svelte +6 -4
  297. package/dist/components/sidebar/components/sidebar-separator.svelte +1 -1
  298. package/dist/components/sidebar/components/sidebar-trigger.svelte +13 -5
  299. package/dist/components/sidebar/sidebar.svelte.d.ts.map +1 -1
  300. package/dist/components/sidebar/sidebar.svelte.js +9 -3
  301. package/dist/components/simple-dialog/__tests__/SimpleDialogTest.svelte +4 -4
  302. package/dist/components/simple-dialog/simple-dialog.svelte +7 -7
  303. package/dist/components/simple-tooltip/__tests__/SimpleTooltipTest.svelte +2 -2
  304. package/dist/components/simple-tooltip/__tests__/simple-tooltip.test.svelte.js +1 -0
  305. package/dist/components/simple-tooltip/simple-tooltip.svelte +1 -1
  306. package/dist/components/slider/slider.svelte +11 -15
  307. package/dist/components/slider/slider.svelte.d.ts.map +1 -1
  308. package/dist/components/slider/types.d.ts +10 -10
  309. package/dist/components/slider/types.d.ts.map +1 -1
  310. package/dist/components/sortable-list/__tests__/SortableListTest.svelte +9 -2
  311. package/dist/components/sortable-list/__tests__/sortable-list.test.svelte.js +13 -7
  312. package/dist/components/sortable-list/components/sortable-list-handle.svelte +20 -25
  313. package/dist/components/sortable-list/components/sortable-list-handle.svelte.d.ts.map +1 -1
  314. package/dist/components/sortable-list/components/sortable-list-indicator.svelte +11 -16
  315. package/dist/components/sortable-list/components/sortable-list-indicator.svelte.d.ts.map +1 -1
  316. package/dist/components/sortable-list/components/sortable-list-item.svelte +5 -9
  317. package/dist/components/sortable-list/components/sortable-list-item.svelte.d.ts.map +1 -1
  318. package/dist/components/sortable-list/components/sortable-list-root.svelte +3 -3
  319. package/dist/components/sortable-list/sortable-list.svelte.d.ts.map +1 -1
  320. package/dist/components/sortable-list/sortable-list.svelte.js +8 -10
  321. package/dist/components/sortable-list/types.d.ts +15 -15
  322. package/dist/components/sortable-list/types.d.ts.map +1 -1
  323. package/dist/components/splitter/splitter.svelte +21 -30
  324. package/dist/components/splitter/splitter.svelte.d.ts.map +1 -1
  325. package/dist/components/switch/switch.svelte +11 -11
  326. package/dist/components/switch/switch.svelte.d.ts.map +1 -1
  327. package/dist/components/table/components/table-body.svelte +1 -1
  328. package/dist/components/table/components/table-cell.svelte +23 -35
  329. package/dist/components/table/components/table-cell.svelte.d.ts.map +1 -1
  330. package/dist/components/table/components/table-header.svelte +1 -1
  331. package/dist/components/table/components/table-resize-handle.svelte +7 -10
  332. package/dist/components/table/components/table-resize-handle.svelte.d.ts.map +1 -1
  333. package/dist/components/table/components/table-root.svelte +26 -22
  334. package/dist/components/table/components/table-row.svelte +5 -4
  335. package/dist/components/table/components/table-row.svelte.d.ts.map +1 -1
  336. package/dist/components/table/table.svelte.d.ts.map +1 -1
  337. package/dist/components/table/table.svelte.js +6 -2
  338. package/dist/components/tabs/__tests__/TabsTest.svelte +11 -9
  339. package/dist/components/tabs/__tests__/tabs.test.svelte.js +77 -1
  340. package/dist/components/tabs/components/tabs-content.svelte +2 -2
  341. package/dist/components/tabs/components/tabs-list.svelte +61 -6
  342. package/dist/components/tabs/components/tabs-list.svelte.d.ts.map +1 -1
  343. package/dist/components/tabs/components/tabs-root.svelte +1 -1
  344. package/dist/components/tabs/components/tabs-trigger.svelte +4 -5
  345. package/dist/components/tabs/components/tabs-trigger.svelte.d.ts.map +1 -1
  346. package/dist/components/tabs/index.d.ts +1 -1
  347. package/dist/components/tabs/index.d.ts.map +1 -1
  348. package/dist/components/tabs/types.d.ts +26 -0
  349. package/dist/components/tabs/types.d.ts.map +1 -1
  350. package/dist/components/textarea/__tests__/textarea.test.svelte.js +29 -0
  351. package/dist/components/textarea/textarea.svelte +14 -1
  352. package/dist/components/time-field/__tests__/TimeFieldTest.svelte +1 -1
  353. package/dist/components/time-field/__tests__/time-field.test.svelte.js +6 -8
  354. package/dist/components/time-field/components/time-field-root.svelte +67 -73
  355. package/dist/components/time-field/components/time-field-root.svelte.d.ts.map +1 -1
  356. package/dist/components/time-field/index.d.ts +1 -1
  357. package/dist/components/time-field/index.d.ts.map +1 -1
  358. package/dist/components/time-field/time-field.svelte.d.ts.map +1 -1
  359. package/dist/components/time-field/types.d.ts +13 -13
  360. package/dist/components/time-field/types.d.ts.map +1 -1
  361. package/dist/components/time-range-field/__tests__/TimeRangeFieldTest.svelte +1 -1
  362. package/dist/components/time-range-field/__tests__/time-range-field.test.svelte.js +4 -4
  363. package/dist/components/time-range-field/components/time-range-field-root.svelte +5 -5
  364. package/dist/components/time-range-field/types.d.ts +1 -1
  365. package/dist/components/time-range-field/types.d.ts.map +1 -1
  366. package/dist/components/toast/toast.svelte +15 -15
  367. package/dist/components/toggle/toggle.svelte +3 -4
  368. package/dist/components/toggle/toggle.svelte.d.ts.map +1 -1
  369. package/dist/components/toggle-group/components/toggle-group-item.svelte +3 -4
  370. package/dist/components/toggle-group/components/toggle-group-item.svelte.d.ts.map +1 -1
  371. package/dist/components/toggle-group/components/toggle-group-root.svelte +7 -11
  372. package/dist/components/toggle-group/components/toggle-group-root.svelte.d.ts.map +1 -1
  373. package/dist/components/toggle-group/types.d.ts.map +1 -1
  374. package/dist/components/toolbar/__tests__/ToolbarCompositionTest.svelte +7 -7
  375. package/dist/components/toolbar/__tests__/ToolbarTabstopTest.svelte +5 -5
  376. package/dist/components/toolbar/toolbar-group.svelte +3 -8
  377. package/dist/components/toolbar/toolbar-group.svelte.d.ts.map +1 -1
  378. package/dist/components/toolbar/toolbar-separator.svelte +2 -3
  379. package/dist/components/toolbar/toolbar-separator.svelte.d.ts.map +1 -1
  380. package/dist/components/toolbar/toolbar.svelte +17 -23
  381. package/dist/components/toolbar/toolbar.svelte.d.ts.map +1 -1
  382. package/dist/components/tooltip/__tests__/TooltipTest.svelte +1 -1
  383. package/dist/components/tooltip/components/tooltip-content.svelte +20 -15
  384. package/dist/components/tooltip/components/tooltip-content.svelte.d.ts.map +1 -1
  385. package/dist/components/tooltip/components/tooltip-provider.svelte +8 -3
  386. package/dist/components/tooltip/components/tooltip-provider.svelte.d.ts.map +1 -1
  387. package/dist/components/tooltip/components/tooltip-root.svelte +1 -1
  388. package/dist/components/tooltip/components/tooltip-trigger.svelte +15 -13
  389. package/dist/components/tooltip/components/tooltip-trigger.svelte.d.ts.map +1 -1
  390. package/dist/components/tooltip/index.d.ts +1 -1
  391. package/dist/components/tooltip/index.d.ts.map +1 -1
  392. package/dist/components/tooltip/tooltip-provider.svelte.d.ts.map +1 -1
  393. package/dist/components/tree/__tests__/TreeLabelContentTest.svelte +7 -7
  394. package/dist/components/tree/__tests__/TreeTest.svelte +7 -7
  395. package/dist/components/tree/components/tree-item.svelte +34 -30
  396. package/dist/components/tree/components/tree-item.svelte.d.ts.map +1 -1
  397. package/dist/components/tree/components/tree-root.svelte +2 -2
  398. package/dist/components/tree/tree.svelte.d.ts.map +1 -1
  399. package/dist/components/tree/types.d.ts +9 -9
  400. package/dist/components/tree/types.d.ts.map +1 -1
  401. package/dist/components/virtualizer/__tests__/waterfall-layout.test.js +1 -1
  402. package/dist/components/virtualizer/components/virtualizer-root.svelte +8 -17
  403. package/dist/components/virtualizer/components/virtualizer-root.svelte.d.ts.map +1 -1
  404. package/dist/index.d.ts +2 -2
  405. package/dist/index.d.ts.map +1 -1
  406. package/dist/index.js +1 -1
  407. package/dist/internal/announcer/announcer.svelte.d.ts.map +1 -1
  408. package/dist/internal/date-time/calendar-helpers.d.ts.map +1 -1
  409. package/dist/internal/date-time/formatter.d.ts.map +1 -1
  410. package/dist/internal/date-time/types.d.ts.map +1 -1
  411. package/dist/internal/date-time/types.js +4 -1
  412. package/dist/internal/date-time/utils.d.ts +2 -2
  413. package/dist/internal/date-time/utils.d.ts.map +1 -1
  414. package/dist/internal/date-time/utils.js +2 -2
  415. package/dist/internal/dismissible-layer/dismissible-layer.svelte.d.ts.map +1 -1
  416. package/dist/internal/dismissible-layer/dismissible-layer.svelte.js +6 -6
  417. package/dist/internal/drag-drop/__tests__/auto-scroll.test.js +6 -2
  418. package/dist/internal/drag-drop/__tests__/drag-session.test.svelte.js +9 -4
  419. package/dist/internal/drag-drop/__tests__/drop-delegate.test.js +18 -10
  420. package/dist/internal/drag-drop/auto-scroll.svelte.d.ts.map +1 -1
  421. package/dist/internal/drag-drop/auto-scroll.svelte.js +12 -8
  422. package/dist/internal/drag-drop/drag-session.svelte.d.ts.map +1 -1
  423. package/dist/internal/drag-drop/drag-session.svelte.js +41 -17
  424. package/dist/internal/drag-drop/drag-source.svelte.d.ts.map +1 -1
  425. package/dist/internal/drag-drop/drop-delegate.svelte.d.ts.map +1 -1
  426. package/dist/internal/drag-drop/drop-delegate.svelte.js +3 -3
  427. package/dist/internal/drag-drop/drop-target.svelte.d.ts.map +1 -1
  428. package/dist/internal/drag-drop/keyboard-dnd.svelte.d.ts.map +1 -1
  429. package/dist/internal/escape-layer/escape-layer.svelte.d.ts.map +1 -1
  430. package/dist/internal/escape-layer/escape-layer.svelte.js +2 -2
  431. package/dist/internal/floating-layer/floating-layer.svelte.d.ts.map +1 -1
  432. package/dist/internal/floating-layer/types.d.ts.map +1 -1
  433. package/dist/internal/focus-scope/focus-scope.svelte.d.ts.map +1 -1
  434. package/dist/internal/grace-area/grace-area.svelte.d.ts.map +1 -1
  435. package/dist/internal/grace-area/grace-area.svelte.js +1 -1
  436. package/dist/internal/helpers/arrays.d.ts.map +1 -1
  437. package/dist/internal/helpers/dom.d.ts.map +1 -1
  438. package/dist/internal/helpers/dom.js +2 -2
  439. package/dist/internal/helpers/merge-props.d.ts.map +1 -1
  440. package/dist/internal/i18n/languages.d.ts.map +1 -1
  441. package/dist/internal/i18n/languages.js +2 -2
  442. package/dist/internal/portal/__tests__/PortalTest.svelte +3 -3
  443. package/dist/internal/portal/portal-consumer.svelte +1 -1
  444. package/dist/internal/portal/portal.svelte +7 -3
  445. package/dist/internal/portal/portal.svelte.d.ts.map +1 -1
  446. package/dist/internal/presence-layer/presence-layer.svelte.d.ts.map +1 -1
  447. package/dist/internal/roving-focus/roving-focus.svelte.d.ts.map +1 -1
  448. package/dist/internal/roving-focus/roving-focus.svelte.js +2 -2
  449. package/dist/internal/scroll-lock/scroll-lock.svelte.d.ts.map +1 -1
  450. package/dist/internal/text-selection-layer/text-selection-layer.svelte.d.ts.map +1 -1
  451. package/dist/internal/typeahead/typeahead.svelte.d.ts.map +1 -1
  452. package/dist/internal/typeahead/typeahead.svelte.js +1 -1
  453. package/package.json +1 -1
  454. package/src/fonts.css +2 -2
  455. package/src/themes/__tests__/carbon-dark-contrast.test.ts +170 -0
  456. package/src/themes/carbon.css +136 -107
  457. package/src/themes/day.css +104 -106
  458. package/src/themes/docs.css +104 -106
  459. package/src/themes/iris-ocr.css +104 -108
  460. package/src/themes/midnight.css +104 -107
  461. package/src/themes/spectral-components.css +3 -1
  462. package/src/themes/spectral.css +116 -111
@@ -1,6 +1,7 @@
1
1
  import { flushSync, mount, unmount } from 'svelte';
2
- import { afterEach, describe, expect, it } from 'vitest';
2
+ import { afterEach, describe, expect, it, vi } from 'vitest';
3
3
  import ContextMenuRoot from '../components/context-menu-root.svelte';
4
+ import ContextMenuNonInteractiveTest from './ContextMenuNonInteractiveTest.svelte';
4
5
  import ContextMenuTest from './ContextMenuTest.svelte';
5
6
  describe('context-menu', () => {
6
7
  let target;
@@ -62,4 +63,79 @@ describe('context-menu', () => {
62
63
  localTarget.remove();
63
64
  }
64
65
  });
66
+ // -------------------------------------------------------------------------
67
+ // nonInteractive prop
68
+ //
69
+ // Use when the child is already focusable/interactive (e.g. a Tree.Item with
70
+ // role="treeitem" + tabindex=0). The trigger wrapper then attaches event
71
+ // listeners only, without role/tabindex/aria-disabled, so it does not nest a
72
+ // second interactive control inside its child — fixing axe `nested-interactive`
73
+ // + `aria-required-parent` when wrapping a treeitem.
74
+ // -------------------------------------------------------------------------
75
+ describe('nonInteractive prop', () => {
76
+ function setupNI(props = {}) {
77
+ target = document.createElement('div');
78
+ document.body.appendChild(target);
79
+ instance = mount(ContextMenuNonInteractiveTest, {
80
+ target,
81
+ props: { portalTo: target, ...props },
82
+ });
83
+ flushSync();
84
+ return target;
85
+ }
86
+ it('wrapper has no role, no tabindex, no aria-disabled when nonInteractive', () => {
87
+ setupNI();
88
+ const trigger = target.querySelector('.sp-context-menu-trigger');
89
+ expect(trigger).toBeTruthy();
90
+ expect(trigger.getAttribute('role')).toBeNull();
91
+ expect(trigger.getAttribute('tabindex')).toBeNull();
92
+ expect(trigger.getAttribute('aria-disabled')).toBeNull();
93
+ });
94
+ it('treeitem child has no [role="button"] ancestor when nonInteractive', () => {
95
+ setupNI();
96
+ const treeitem = target.querySelector('[role="treeitem"]');
97
+ expect(treeitem).toBeTruthy();
98
+ // Structural ARIA assertion: the treeitem must be a direct interactive
99
+ // descendant of the tree (no role="button" wrapper between them) so axe's
100
+ // `nested-interactive` + `aria-required-parent` rules stop firing.
101
+ expect(treeitem.closest('[role="button"]')).toBeNull();
102
+ });
103
+ it('right-click on wrapper still opens menu when nonInteractive', () => {
104
+ const calls = [];
105
+ setupNI({ onOpenChange: (open) => calls.push(open) });
106
+ const trigger = target.querySelector('.sp-context-menu-trigger');
107
+ trigger.dispatchEvent(new MouseEvent('contextmenu', { bubbles: true, clientX: 100, clientY: 100 }));
108
+ flushSync();
109
+ expect(calls).toEqual([true]);
110
+ });
111
+ it('forwards Shift+F10 from focusable child to the wrapper handler when nonInteractive', () => {
112
+ const calls = [];
113
+ setupNI({ onOpenChange: (open) => calls.push(open) });
114
+ const child = target.querySelector('[data-testid="treeitem"]');
115
+ child.focus();
116
+ child.dispatchEvent(new KeyboardEvent('keydown', { key: 'F10', shiftKey: true, bubbles: true }));
117
+ flushSync();
118
+ expect(calls).toEqual([true]);
119
+ });
120
+ it('long-press (touchstart + 700ms hold) still opens menu when nonInteractive', () => {
121
+ vi.useFakeTimers();
122
+ try {
123
+ const calls = [];
124
+ setupNI({ onOpenChange: (open) => calls.push(open) });
125
+ const trigger = target.querySelector('.sp-context-menu-trigger');
126
+ // jsdom lacks TouchEvent constructor — synthesise a bubbling Event with a touches array.
127
+ const evt = new Event('touchstart', { bubbles: true });
128
+ Object.defineProperty(evt, 'touches', {
129
+ value: [{ clientX: 100, clientY: 100 }],
130
+ });
131
+ trigger.dispatchEvent(evt);
132
+ vi.advanceTimersByTime(700);
133
+ flushSync();
134
+ expect(calls).toEqual([true]);
135
+ }
136
+ finally {
137
+ vi.useRealTimers();
138
+ }
139
+ });
140
+ });
65
141
  });
@@ -1,4 +1,4 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { ContextMenuContentProps } from '../types.js'
3
3
  import { DismissibleLayerState } from '../../../internal/dismissible-layer/index.js'
4
4
  import { EscapeLayerState } from '../../../internal/escape-layer/index.js'
@@ -100,13 +100,11 @@
100
100
  })
101
101
 
102
102
  $effect(() => {
103
- if (contentEl)
104
- presence.setElement(contentEl)
103
+ if (contentEl) presence.setElement(contentEl)
105
104
  })
106
105
 
107
106
  function onkeydown(event: KeyboardEvent) {
108
- if (!contentEl)
109
- return
107
+ if (!contentEl) return
110
108
 
111
109
  const items = Array.from(
112
110
  contentEl.querySelectorAll<HTMLElement>('[data-roving-focus-item]:not([data-disabled])'),
@@ -136,11 +134,10 @@
136
134
  default: {
137
135
  if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {
138
136
  const labels = items.map(
139
- el => el.getAttribute('data-text-value') ?? el.textContent?.trim() ?? '',
137
+ (el) => el.getAttribute('data-text-value') ?? el.textContent?.trim() ?? '',
140
138
  )
141
139
  const match = typeahead.handleTypeahead(event.key, labels)
142
- if (match >= 0)
143
- items[match]?.focus()
140
+ if (match >= 0) items[match]?.focus()
144
141
  }
145
142
  }
146
143
  }
@@ -153,8 +150,8 @@
153
150
  bind:this={contentEl}
154
151
  class="sp-context-menu-content {className ?? ''}"
155
152
  id={ctx.contentId}
156
- role='menu'
157
- aria-orientation='vertical'
153
+ role="menu"
154
+ aria-orientation="vertical"
158
155
  tabindex={-1}
159
156
  data-state={ctx.open ? 'open' : 'closed'}
160
157
  {onkeydown}
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-content.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/context-menu/components/context-menu-content.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AA4K1D,QAAA,MAAM,kBAAkB,6DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"context-menu-content.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/context-menu/components/context-menu-content.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAyK1D,QAAA,MAAM,kBAAkB,6DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -1,9 +1,14 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { ContextMenuProps } from '../types.js'
3
3
  import { setMenuContext } from '../../../internal/menu-context/index.js'
4
4
  import { createContextMenuIds, setContextMenuContext } from '../context-menu.svelte.js'
5
5
 
6
- let { open = $bindable(false), onOpenChange, class: className, children }: ContextMenuProps = $props()
6
+ let {
7
+ open = $bindable(false),
8
+ onOpenChange,
9
+ class: className,
10
+ children,
11
+ }: ContextMenuProps = $props()
7
12
 
8
13
  const ids = createContextMenuIds()
9
14
  let position = $state({ x: 0, y: 0 })
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu-root.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/context-menu/components/context-menu-root.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AA+CnD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"context-menu-root.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/context-menu/components/context-menu-root.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAoDnD,QAAA,MAAM,eAAe,0DAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -1,26 +1,28 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { ContextMenuTriggerProps } from '../types.js'
3
3
  import { getContextMenuContext } from '../context-menu.svelte.js'
4
4
 
5
- const { disabled = false, class: className, children }: ContextMenuTriggerProps = $props()
5
+ const {
6
+ disabled = false,
7
+ nonInteractive = false,
8
+ class: className,
9
+ children,
10
+ }: ContextMenuTriggerProps = $props()
6
11
  const ctx = getContextMenuContext()
7
12
 
8
13
  let el: HTMLElement | undefined = $state()
9
14
  let longPressTimer: ReturnType<typeof setTimeout> | undefined
10
15
 
11
16
  function oncontextmenu(event: MouseEvent) {
12
- if (disabled)
13
- return
17
+ if (disabled) return
14
18
  event.preventDefault()
15
19
  ctx.openAt(event.clientX, event.clientY)
16
20
  }
17
21
 
18
22
  function ontouchstart(event: TouchEvent) {
19
- if (disabled)
20
- return
23
+ if (disabled) return
21
24
  const touch = event.touches[0]
22
- if (!touch)
23
- return
25
+ if (!touch) return
24
26
  longPressTimer = setTimeout(() => {
25
27
  ctx.openAt(touch.clientX, touch.clientY)
26
28
  }, 700)
@@ -31,13 +33,11 @@
31
33
  }
32
34
 
33
35
  function onkeydown(event: KeyboardEvent) {
34
- if (disabled)
35
- return
36
+ if (disabled) return
36
37
  if (event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey)) {
37
38
  event.preventDefault()
38
39
  const rect = el?.getBoundingClientRect()
39
- if (!rect)
40
- return
40
+ if (!rect) return
41
41
  ctx.openAt(rect.left + rect.width / 2, rect.top + rect.height / 2)
42
42
  }
43
43
  }
@@ -52,9 +52,9 @@
52
52
  <div
53
53
  bind:this={el}
54
54
  class="sp-context-menu-trigger {className ?? ''}"
55
- role='button'
56
- tabindex={disabled ? -1 : 0}
57
- aria-disabled={disabled || undefined}
55
+ role={nonInteractive ? undefined : 'button'}
56
+ tabindex={nonInteractive ? undefined : disabled ? -1 : 0}
57
+ aria-disabled={!nonInteractive && disabled ? true : undefined}
58
58
  {oncontextmenu}
59
59
  {ontouchstart}
60
60
  {ontouchend}
@@ -5,5 +5,5 @@ export { default as Separator } from '../dropdown-menu/components/dropdown-menu-
5
5
  export { default as Content } from './components/context-menu-content.svelte';
6
6
  export { default as Root } from './components/context-menu-root.svelte';
7
7
  export { default as Trigger } from './components/context-menu-trigger.svelte';
8
- export type { ContextMenuContentProps, ContextMenuProps, ContextMenuTriggerProps, } from './types.js';
8
+ export type { ContextMenuContentProps, ContextMenuProps, ContextMenuTriggerProps } from './types.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/context-menu/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gEAAgE,CAAA;AACxG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uDAAuD,CAAA;AACvF,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,wDAAwD,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4DAA4D,CAAA;AACjG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAC7E,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/context-menu/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gEAAgE,CAAA;AACxG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uDAAuD,CAAA;AACvF,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,wDAAwD,CAAA;AACzF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4DAA4D,CAAA;AACjG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0CAA0C,CAAA;AAC7E,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA"}
@@ -9,6 +9,21 @@ export interface ContextMenuProps {
9
9
  }
10
10
  export interface ContextMenuTriggerProps {
11
11
  disabled?: boolean;
12
+ /**
13
+ * When `true`, the trigger renders a neutral wrapper (no `role`, no
14
+ * `tabindex`, no `aria-disabled`) and only attaches event listeners
15
+ * (`contextmenu`, `touchstart`, `keydown`). Use this when the child is
16
+ * itself focusable/interactive (e.g. a `Tree.Item` with `role="treeitem"`
17
+ * + `tabindex=0`) so the wrapper doesn't introduce a nested interactive
18
+ * control, which otherwise breaks ARIA `nested-interactive` and
19
+ * `aria-required-parent` invariants.
20
+ *
21
+ * The child remains the only focusable element — keyboard activation
22
+ * (Shift+F10 / ContextMenu key) bubbles from the child to the wrapper's
23
+ * `keydown` handler. If the child is **not** focusable, prefer the
24
+ * default (`nonInteractive: false`) so the wrapper stays keyboard-reachable.
25
+ */
26
+ nonInteractive?: boolean;
12
27
  class?: string;
13
28
  children?: Snippet;
14
29
  }
@@ -21,5 +36,5 @@ export interface ContextMenuContentProps {
21
36
  class?: string;
22
37
  children?: Snippet;
23
38
  }
24
- export type { DropdownMenuCheckboxItemProps as ContextMenuCheckboxItemProps, DropdownMenuItemProps as ContextMenuItemProps, DropdownMenuLabelProps as ContextMenuLabelProps, DropdownMenuSeparatorProps as ContextMenuSeparatorProps } from '../dropdown-menu/types.js';
39
+ export type { DropdownMenuCheckboxItemProps as ContextMenuCheckboxItemProps, DropdownMenuItemProps as ContextMenuItemProps, DropdownMenuLabelProps as ContextMenuLabelProps, DropdownMenuSeparatorProps as ContextMenuSeparatorProps, } from '../dropdown-menu/types.js';
25
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/context-menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uFAAuF;IACvF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,YAAY,EAAE,6BAA6B,IAAI,4BAA4B,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,0BAA0B,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/context-menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uFAAuF;IACvF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,YAAY,EACV,6BAA6B,IAAI,4BAA4B,EAC7D,qBAAqB,IAAI,oBAAoB,EAC7C,sBAAsB,IAAI,qBAAqB,EAC/C,0BAA0B,IAAI,yBAAyB,GACxD,MAAM,2BAA2B,CAAA"}
@@ -1,4 +1,4 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { DateValue } from '../../../internal/date-time/types.js'
3
3
  import * as DateField from '../index.js'
4
4
 
@@ -34,11 +34,11 @@ describe('date-field', () => {
34
34
  it('segments have aria-label identifying day, month, year', () => {
35
35
  setup();
36
36
  const spinbuttons = target.querySelectorAll('[role="spinbutton"]');
37
- const labels = Array.from(spinbuttons).map(s => s.getAttribute('aria-label')?.toLowerCase() ?? '');
37
+ const labels = Array.from(spinbuttons).map((s) => s.getAttribute('aria-label')?.toLowerCase() ?? '');
38
38
  // Each label should match day/month/year (en) or jour/mois/année (fr) etc.
39
- const hasDayLabel = labels.some(l => /day|jour|giorno|día|tag/i.test(l));
40
- const hasMonthLabel = labels.some(l => /month|mois|mese|mes|monat/i.test(l));
41
- const hasYearLabel = labels.some(l => /year|année|anno|año|jahr/i.test(l));
39
+ const hasDayLabel = labels.some((l) => /day|jour|giorno|día|tag/i.test(l));
40
+ const hasMonthLabel = labels.some((l) => /month|mois|mese|mes|monat/i.test(l));
41
+ const hasYearLabel = labels.some((l) => /year|année|anno|año|jahr/i.test(l));
42
42
  expect(hasDayLabel).toBe(true);
43
43
  expect(hasMonthLabel).toBe(true);
44
44
  expect(hasYearLabel).toBe(true);
@@ -48,7 +48,7 @@ describe('date-field', () => {
48
48
  const date = new CalendarDate(2024, 6, 15);
49
49
  setup({ value: date });
50
50
  const spinbuttons = target.querySelectorAll('[role="spinbutton"]');
51
- const texts = Array.from(spinbuttons).map(s => s.textContent?.trim() ?? '');
51
+ const texts = Array.from(spinbuttons).map((s) => s.textContent?.trim() ?? '');
52
52
  // 2024, 06, 15 should appear (order may vary by locale)
53
53
  expect(texts.includes('2024')).toBe(true);
54
54
  // Month may render as "06" or "6"
@@ -1,4 +1,4 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { DateValue } from '../../../internal/date-time/types.js'
3
3
  import type { DateFieldProps } from '../types.js'
4
4
  import { CalendarDate } from '@internationalized/date'
@@ -19,7 +19,7 @@
19
19
  }: DateFieldProps = $props()
20
20
 
21
21
  // Internal segment tracking
22
- let segmentValues = $state<{ year: number | null, month: number | null, day: number | null }>({
22
+ let segmentValues = $state<{ year: number | null; month: number | null; day: number | null }>({
23
23
  year: value ? value.year : null,
24
24
  month: value ? value.month : null,
25
25
  day: value ? value.day : null,
@@ -27,10 +27,8 @@
27
27
 
28
28
  // Sync from external value changes (including reset to undefined)
29
29
  $effect(() => {
30
- if (value)
31
- segmentValues = { year: value.year, month: value.month, day: value.day }
32
- else
33
- segmentValues = { year: null, month: null, day: null }
30
+ if (value) segmentValues = { year: value.year, month: value.month, day: value.day }
31
+ else segmentValues = { year: null, month: null, day: null }
34
32
  })
35
33
 
36
34
  const segments = $derived(generateSegments(value, segmentValues, locale))
@@ -42,8 +40,7 @@
42
40
  if (y && m) {
43
41
  try {
44
42
  return getDaysInMonthCount(new CalendarDate(y, m, 1))
45
- }
46
- catch {
43
+ } catch {
47
44
  return 31
48
45
  }
49
46
  }
@@ -55,8 +52,7 @@
55
52
  if (year !== null && month !== null && day !== null) {
56
53
  try {
57
54
  return new CalendarDate(year, month, day)
58
- }
59
- catch {
55
+ } catch {
60
56
  return undefined
61
57
  }
62
58
  }
@@ -79,8 +75,7 @@
79
75
  function setValue(v: DateValue | undefined) {
80
76
  if (v) {
81
77
  segmentValues = { year: v.year, month: v.month, day: v.day }
82
- }
83
- else {
78
+ } else {
84
79
  segmentValues = { year: null, month: null, day: null }
85
80
  }
86
81
  value = v
@@ -88,11 +83,21 @@
88
83
  }
89
84
 
90
85
  setDateFieldContext({
91
- get value() { return value },
92
- get segments() { return segments },
93
- get disabled() { return disabled },
94
- get readonly() { return isReadonly },
95
- get locale() { return locale },
86
+ get value() {
87
+ return value
88
+ },
89
+ get segments() {
90
+ return segments
91
+ },
92
+ get disabled() {
93
+ return disabled
94
+ },
95
+ get readonly() {
96
+ return isReadonly
97
+ },
98
+ get locale() {
99
+ return locale
100
+ },
96
101
  updateSegment,
97
102
  clearSegment,
98
103
  getSegmentValues: () => segmentValues,
@@ -100,12 +105,16 @@
100
105
  })
101
106
 
102
107
  // Hidden input for form submission
103
- const hiddenValue = $derived(value ? `${value.year}-${String(value.month).padStart(2, '0')}-${String(value.day).padStart(2, '0')}` : '')
108
+ const hiddenValue = $derived(
109
+ value
110
+ ? `${value.year}-${String(value.month).padStart(2, '0')}-${String(value.day).padStart(2, '0')}`
111
+ : '',
112
+ )
104
113
  </script>
105
114
 
106
115
  <div
107
116
  class="sp-date-field {className ?? ''}"
108
- role='group'
117
+ role="group"
109
118
  aria-label={ariaLabel ?? 'Date'}
110
119
  data-disabled={disabled || undefined}
111
120
  >
@@ -117,10 +126,10 @@
117
126
  {#if segment.editable}
118
127
  {@const part = segment.part}
119
128
  <span
120
- class='sp-date-field-segment'
121
- role='spinbutton'
129
+ class="sp-date-field-segment"
130
+ role="spinbutton"
122
131
  contenteditable={!disabled && !isReadonly}
123
- inputmode='numeric'
132
+ inputmode="numeric"
124
133
  tabindex={disabled ? -1 : 0}
125
134
  data-placeholder={segmentValues[part as 'year' | 'month' | 'day'] === null || undefined}
126
135
  aria-label={part}
@@ -141,27 +150,22 @@
141
150
  const min = part === 'year' ? 1 : 1
142
151
  const max = part === 'year' ? 9999 : part === 'month' ? 12 : maxDay
143
152
  const step = key === 'ArrowUp' ? 1 : -1
144
- const next = current !== null ? current + step : (key === 'ArrowUp' ? min : max)
145
- if (next >= min && next <= max)
146
- updateSegment(part, next)
147
- }
148
- else if (key === 'Backspace' || key === 'Delete') {
153
+ const next = current !== null ? current + step : key === 'ArrowUp' ? min : max
154
+ if (next >= min && next <= max) updateSegment(part, next)
155
+ } else if (key === 'Backspace' || key === 'Delete') {
149
156
  e.preventDefault()
150
157
  clearSegment(part)
151
- }
152
- else if (key === 'ArrowLeft') {
158
+ } else if (key === 'ArrowLeft') {
153
159
  e.preventDefault()
154
- const prev = (e.currentTarget as HTMLElement).previousElementSibling?.previousElementSibling as HTMLElement | null
155
- if (prev?.getAttribute('role') === 'spinbutton')
156
- prev.focus()
157
- }
158
- else if (key === 'ArrowRight') {
160
+ const prev = (e.currentTarget as HTMLElement).previousElementSibling
161
+ ?.previousElementSibling as HTMLElement | null
162
+ if (prev?.getAttribute('role') === 'spinbutton') prev.focus()
163
+ } else if (key === 'ArrowRight') {
159
164
  e.preventDefault()
160
- const next = (e.currentTarget as HTMLElement).nextElementSibling?.nextElementSibling as HTMLElement | null
161
- if (next?.getAttribute('role') === 'spinbutton')
162
- next.focus()
163
- }
164
- else if (/^\d$/.test(key)) {
165
+ const next = (e.currentTarget as HTMLElement).nextElementSibling
166
+ ?.nextElementSibling as HTMLElement | null
167
+ if (next?.getAttribute('role') === 'spinbutton') next.focus()
168
+ } else if (/^\d$/.test(key)) {
165
169
  e.preventDefault()
166
170
  const current = segmentValues[part as 'year' | 'month' | 'day']
167
171
  const max = part === 'year' ? 9999 : part === 'month' ? 12 : maxDay
@@ -169,40 +173,36 @@
169
173
  let newVal: number
170
174
  if (current === null || current === 0) {
171
175
  newVal = digit
172
- }
173
- else {
176
+ } else {
174
177
  newVal = current * 10 + digit
175
178
  }
176
- if (newVal > max)
177
- newVal = digit
179
+ if (newVal > max) newVal = digit
178
180
  updateSegment(part, newVal)
179
181
 
180
182
  // Auto-advance when segment is full
181
183
  const maxDigits = part === 'year' ? 4 : 2
182
184
  if (String(newVal).length >= maxDigits || newVal * 10 > max) {
183
- const next = (e.currentTarget as HTMLElement).nextElementSibling?.nextElementSibling as HTMLElement | null
184
- if (next?.getAttribute('role') === 'spinbutton')
185
- next.focus()
185
+ const next = (e.currentTarget as HTMLElement).nextElementSibling
186
+ ?.nextElementSibling as HTMLElement | null
187
+ if (next?.getAttribute('role') === 'spinbutton') next.focus()
186
188
  }
187
- }
188
- else if (key === 'Tab') {
189
- // Allow natural tab
190
- }
191
- else {
189
+ } else if (key === 'Tab') {
190
+ // Allow natural tab
191
+ } else {
192
192
  e.preventDefault()
193
193
  }
194
194
  }}
195
- onbeforeinput={e => e.preventDefault()}
196
- >{segment.value}</span>
195
+ onbeforeinput={(e) => e.preventDefault()}>{segment.value}</span
196
+ >
197
197
  {:else}
198
- <span class='sp-date-field-literal' aria-hidden='true'>{segment.value}</span>
198
+ <span class="sp-date-field-literal" aria-hidden="true">{segment.value}</span>
199
199
  {/if}
200
200
  {/each}
201
201
  {/if}
202
202
  </div>
203
203
 
204
204
  {#if name}
205
- <input type='hidden' {name} value={hiddenValue} {required} />
205
+ <input type="hidden" {name} value={hiddenValue} {required} />
206
206
  {/if}
207
207
 
208
208
  <style>
@@ -2,34 +2,34 @@ import type { Snippet } from 'svelte';
2
2
  import type { DateValue, Granularity, HourCycle } from '../../internal/date-time/types.js';
3
3
  export interface DateFieldProps {
4
4
  /** Current date value. */
5
- 'value'?: DateValue;
5
+ value?: DateValue;
6
6
  /** Callback when value changes. */
7
- 'onValueChange'?: (value: DateValue | undefined) => void;
7
+ onValueChange?: (value: DateValue | undefined) => void;
8
8
  /** Placeholder date (determines format and initial segments). */
9
- 'placeholder'?: DateValue;
9
+ placeholder?: DateValue;
10
10
  /** Which parts to display. */
11
- 'granularity'?: Granularity;
11
+ granularity?: Granularity;
12
12
  /** 12 or 24 hour clock. */
13
- 'hourCycle'?: HourCycle;
13
+ hourCycle?: HourCycle;
14
14
  /** Locale for formatting. */
15
- 'locale'?: string;
15
+ locale?: string;
16
16
  /** Minimum value. */
17
- 'minValue'?: DateValue;
17
+ minValue?: DateValue;
18
18
  /** Maximum value. */
19
- 'maxValue'?: DateValue;
19
+ maxValue?: DateValue;
20
20
  /** Disabled state. */
21
- 'disabled'?: boolean;
21
+ disabled?: boolean;
22
22
  /** Readonly state. */
23
- 'readonly'?: boolean;
23
+ readonly?: boolean;
24
24
  /** Required for form validation. */
25
- 'required'?: boolean;
25
+ required?: boolean;
26
26
  /** Form field name (renders hidden input). */
27
- 'name'?: string;
27
+ name?: string;
28
28
  /** Accessible label. */
29
29
  'aria-label'?: string;
30
30
  /** Additional CSS class. */
31
- 'class'?: string;
32
- 'children'?: Snippet;
31
+ class?: string;
32
+ children?: Snippet;
33
33
  }
34
34
  export interface DateFieldSegmentProps {
35
35
  /** Which part this segment represents. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/date-field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAE1F,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAA;IACxD,iEAAiE;IACjE,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB;IACrB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,qBAAqB;IACrB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/date-field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAE1F,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAA;IACtD,iEAAiE;IACjE,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
@@ -1,4 +1,4 @@
1
- <script lang='ts'>
1
+ <script lang="ts">
2
2
  import type { DateValue } from '../../../internal/date-time/types.js'
3
3
  import DatePickerRoot from '../components/date-picker-root.svelte'
4
4
 
@@ -17,10 +17,4 @@
17
17
  } = $props()
18
18
  </script>
19
19
 
20
- <DatePickerRoot
21
- bind:value
22
- {disabled}
23
- readonly={isReadonly}
24
- {closeOnDateSelect}
25
- {portalTo}
26
- />
20
+ <DatePickerRoot bind:value {disabled} readonly={isReadonly} {closeOnDateSelect} {portalTo} />
@@ -35,18 +35,18 @@ describe('datePicker', () => {
35
35
  * Also accepts aria-haspopup in case the API evolves.
36
36
  */
37
37
  function findTrigger() {
38
- return (target.querySelector('button.sp-date-picker-trigger')
39
- ?? target.querySelector('button[aria-label="Open calendar"]')
40
- ?? target.querySelector('button[aria-haspopup]'));
38
+ return (target.querySelector('button.sp-date-picker-trigger') ??
39
+ target.querySelector('button[aria-label="Open calendar"]') ??
40
+ target.querySelector('button[aria-haspopup]'));
41
41
  }
42
42
  /**
43
43
  * Finds the open popup content inside the portal target.
44
44
  * The root renders <div data-state="open" class="sp-date-picker-content">.
45
45
  */
46
46
  function findOpenContent() {
47
- return (target.querySelector('[data-state="open"]')
48
- ?? target.querySelector('.sp-date-picker-content')
49
- ?? target.querySelector('[role="dialog"]'));
47
+ return (target.querySelector('[data-state="open"]') ??
48
+ target.querySelector('.sp-date-picker-content') ??
49
+ target.querySelector('[role="dialog"]'));
50
50
  }
51
51
  // ─── Smoke ────────────────────────────────────────────────────────────────
52
52
  it('renders a trigger button', () => {
@@ -131,8 +131,7 @@ describe('datePicker', () => {
131
131
  it('marks the trigger button as disabled when disabled=true', () => {
132
132
  setup({ disabled: true });
133
133
  const trigger = findTrigger();
134
- const isDisabled = trigger?.hasAttribute('disabled')
135
- || trigger?.getAttribute('aria-disabled') === 'true';
134
+ const isDisabled = trigger?.hasAttribute('disabled') || trigger?.getAttribute('aria-disabled') === 'true';
136
135
  expect(isDisabled).toBe(true);
137
136
  });
138
137
  it('does not open when disabled=true and trigger is clicked', () => {
@@ -160,7 +159,9 @@ describe('datePicker', () => {
160
159
  // Create a fresh instance WITHOUT portalTo so it defaults to document.body
161
160
  const bodyTarget = document.createElement('div');
162
161
  document.body.appendChild(bodyTarget);
163
- const bodyInstance = mount(DatePickerTest, { target: bodyTarget });
162
+ const bodyInstance = mount(DatePickerTest, {
163
+ target: bodyTarget,
164
+ });
164
165
  flushSync();
165
166
  const triggerEl = bodyTarget.querySelector('button.sp-date-picker-trigger, button[aria-label="Open calendar"]');
166
167
  triggerEl?.click();