@neo4j-ndl/react 4.20.1 → 4.21.1-alpha.b78fc61

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 (494) hide show
  1. package/lib/cjs/_common/export-stories-utils.js +1 -1
  2. package/lib/cjs/_common/export-stories-utils.js.map +1 -1
  3. package/lib/cjs/_common/utils.js +3 -3
  4. package/lib/cjs/_common/utils.js.map +1 -1
  5. package/lib/cjs/_generated/style-rules/color-utils.js +3 -0
  6. package/lib/cjs/_generated/style-rules/color-utils.js.map +1 -1
  7. package/lib/cjs/_generated/style-rules/date-utils.js +14 -13
  8. package/lib/cjs/_generated/style-rules/date-utils.js.map +1 -1
  9. package/lib/cjs/_generated/style-rules/literal-schemas.js +5 -3
  10. package/lib/cjs/_generated/style-rules/literal-schemas.js.map +1 -1
  11. package/lib/cjs/ai/code-preview/CodePreview.js +1 -1
  12. package/lib/cjs/ai/code-preview/CodePreview.js.map +1 -1
  13. package/lib/cjs/ai/file-tag/FileTag.js.map +1 -1
  14. package/lib/cjs/ai/image-tag/ImageTag.js.map +1 -1
  15. package/lib/cjs/ai/prompt/Prompt.js +10 -10
  16. package/lib/cjs/ai/prompt/Prompt.js.map +1 -1
  17. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js +1 -1
  18. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js.map +1 -1
  19. package/lib/cjs/ai/prompt/stories/prompt-context.story.js +1 -1
  20. package/lib/cjs/ai/prompt/stories/prompt-context.story.js.map +1 -1
  21. package/lib/cjs/ai/prompt/stories/prompt-default.story.js +1 -1
  22. package/lib/cjs/ai/prompt/stories/prompt-default.story.js.map +1 -1
  23. package/lib/cjs/ai/prompt/stories/prompt-header.story.js +1 -1
  24. package/lib/cjs/ai/prompt/stories/prompt-header.story.js.map +1 -1
  25. package/lib/cjs/ai/reasoning/Reasoning.js +1 -1
  26. package/lib/cjs/ai/reasoning/Reasoning.js.map +1 -1
  27. package/lib/cjs/ai/response/Response.js +4 -4
  28. package/lib/cjs/ai/response/Response.js.map +1 -1
  29. package/lib/cjs/ai/response/stories/response-full-example.story.js +1 -1
  30. package/lib/cjs/ai/response/stories/response-full-example.story.js.map +1 -1
  31. package/lib/cjs/ai/suggestion/Suggestion.js.map +1 -1
  32. package/lib/cjs/ai/thinking/thinking-duration-formatter.js +5 -5
  33. package/lib/cjs/ai/thinking/thinking-duration-formatter.js.map +1 -1
  34. package/lib/cjs/banner/Banner.js +2 -2
  35. package/lib/cjs/banner/Banner.js.map +1 -1
  36. package/lib/cjs/button/ButtonBase.js +4 -4
  37. package/lib/cjs/button/ButtonBase.js.map +1 -1
  38. package/lib/cjs/clean-icon-button/stories/clean-icon-button-sizes.story.js +1 -1
  39. package/lib/cjs/clean-icon-button/stories/clean-icon-button-sizes.story.js.map +1 -1
  40. package/lib/cjs/clean-icon-button/stories/clean-icon-button-tone.story.js +1 -1
  41. package/lib/cjs/clean-icon-button/stories/clean-icon-button-tone.story.js.map +1 -1
  42. package/lib/cjs/code/Code.js +3 -3
  43. package/lib/cjs/code/Code.js.map +1 -1
  44. package/lib/cjs/code-block/CodeBlock.js +2 -2
  45. package/lib/cjs/code-block/CodeBlock.js.map +1 -1
  46. package/lib/cjs/color-picker/ColorPicker.js +22 -22
  47. package/lib/cjs/color-picker/ColorPicker.js.map +1 -1
  48. package/lib/cjs/color-picker/stories/color-picker-custom-swatches.story.js +20 -20
  49. package/lib/cjs/color-picker/stories/color-picker-custom-swatches.story.js.map +1 -1
  50. package/lib/cjs/color-picker/stories/color-picker-default.story.js +4 -4
  51. package/lib/cjs/color-picker/stories/color-picker-default.story.js.map +1 -1
  52. package/lib/cjs/color-picker/stories/color-picker-dialog.story.js +4 -4
  53. package/lib/cjs/color-picker/stories/color-picker-dialog.story.js.map +1 -1
  54. package/lib/cjs/color-picker/stories/color-picker-without-eyedropper.story.js +4 -4
  55. package/lib/cjs/color-picker/stories/color-picker-without-eyedropper.story.js.map +1 -1
  56. package/lib/cjs/combobox/stories/combobox-large-data-set.story.js +1 -1
  57. package/lib/cjs/combobox/stories/combobox-large-data-set.story.js.map +1 -1
  58. package/lib/cjs/data-grid/Components.js +20 -20
  59. package/lib/cjs/data-grid/Components.js.map +1 -1
  60. package/lib/cjs/data-grid/DataGrid.js +3 -3
  61. package/lib/cjs/data-grid/DataGrid.js.map +1 -1
  62. package/lib/cjs/data-grid/data-grid-nav/data-grid-nav.js +55 -54
  63. package/lib/cjs/data-grid/data-grid-nav/data-grid-nav.js.map +1 -1
  64. package/lib/cjs/data-grid/data-grid-nav/helpers.js +1 -1
  65. package/lib/cjs/data-grid/data-grid-nav/helpers.js.map +1 -1
  66. package/lib/cjs/data-grid/data-grid-nav/index.js +2 -2
  67. package/lib/cjs/data-grid/data-grid-nav/index.js.map +1 -1
  68. package/lib/cjs/data-grid/helpers/index.js +42 -40
  69. package/lib/cjs/data-grid/helpers/index.js.map +1 -1
  70. package/lib/cjs/data-grid/stories/datagrid-in-dialog.story.js +10 -7
  71. package/lib/cjs/data-grid/stories/datagrid-in-dialog.story.js.map +1 -1
  72. package/lib/cjs/data-grid/stories/datagrid-keyboard-navigation.story.js +10 -7
  73. package/lib/cjs/data-grid/stories/datagrid-keyboard-navigation.story.js.map +1 -1
  74. package/lib/cjs/data-grid/stories/datagrid-rule-based-styling-datetime.story.js +5 -5
  75. package/lib/cjs/data-grid/stories/datagrid-rule-based-styling-datetime.story.js.map +1 -1
  76. package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
  77. package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
  78. package/lib/cjs/data-grid/stories/datagrid-virtualization.story.js +5 -5
  79. package/lib/cjs/data-grid/stories/datagrid-virtualization.story.js.map +1 -1
  80. package/lib/cjs/data-grid/style-rules/evaluate.js +23 -23
  81. package/lib/cjs/data-grid/style-rules/evaluate.js.map +1 -1
  82. package/lib/cjs/data-grid/style-rules/types.js +1 -1
  83. package/lib/cjs/data-grid/style-rules/types.js.map +1 -1
  84. package/lib/cjs/date-picker/stories/date-picker-with-timezone-both-mode.story.js +1 -1
  85. package/lib/cjs/date-picker/stories/date-picker-with-timezone-both-mode.story.js.map +1 -1
  86. package/lib/cjs/dialog/Dialog.js +5 -5
  87. package/lib/cjs/dialog/Dialog.js.map +1 -1
  88. package/lib/cjs/dialog/dialog-types.js.map +1 -1
  89. package/lib/cjs/drawer/Drawer.js +5 -5
  90. package/lib/cjs/drawer/Drawer.js.map +1 -1
  91. package/lib/cjs/dropdown-button/DropdownButton.js +4 -4
  92. package/lib/cjs/dropdown-button/DropdownButton.js.map +1 -1
  93. package/lib/cjs/dropzone/stories/dropzone-full.story.js +7 -7
  94. package/lib/cjs/dropzone/stories/dropzone-full.story.js.map +1 -1
  95. package/lib/cjs/flex/stories/flex-default.story.js +1 -1
  96. package/lib/cjs/flex/stories/flex-default.story.js.map +1 -1
  97. package/lib/cjs/hooks/index.js +3 -3
  98. package/lib/cjs/hooks/index.js.map +1 -1
  99. package/lib/cjs/icon-button/stories/icon-button-sizes.story.js +1 -1
  100. package/lib/cjs/icon-button/stories/icon-button-sizes.story.js.map +1 -1
  101. package/lib/cjs/icon-button/stories/icon-button-tone.story.js +1 -1
  102. package/lib/cjs/icon-button/stories/icon-button-tone.story.js.map +1 -1
  103. package/lib/cjs/icon-button-base/IconButtonBase.js +4 -4
  104. package/lib/cjs/icon-button-base/IconButtonBase.js.map +1 -1
  105. package/lib/cjs/icons/generated/custom/ScatterPlot.js +30 -0
  106. package/lib/cjs/icons/generated/custom/ScatterPlot.js.map +1 -0
  107. package/lib/cjs/icons/generated/custom/index.js +4 -2
  108. package/lib/cjs/icons/generated/custom/index.js.map +1 -1
  109. package/lib/cjs/inline-edit/InlineEdit.js +8 -8
  110. package/lib/cjs/inline-edit/InlineEdit.js.map +1 -1
  111. package/lib/cjs/kbd/kbd-utils.js +2 -2
  112. package/lib/cjs/kbd/kbd-utils.js.map +1 -1
  113. package/lib/cjs/modal/Modal.js +6 -6
  114. package/lib/cjs/modal/Modal.js.map +1 -1
  115. package/lib/cjs/next/tree-view/TreeView.js +23 -23
  116. package/lib/cjs/next/tree-view/TreeView.js.map +1 -1
  117. package/lib/cjs/next/tree-view/stories/tree-view-lazy.story.js +1 -1
  118. package/lib/cjs/next/tree-view/stories/tree-view-lazy.story.js.map +1 -1
  119. package/lib/cjs/next/tree-view/stories/tree-view-multi.story.js +6 -6
  120. package/lib/cjs/next/tree-view/stories/tree-view-multi.story.js.map +1 -1
  121. package/lib/cjs/popover/Popover.js.map +1 -1
  122. package/lib/cjs/popover/stories/popover-custom-offset.story.js +3 -3
  123. package/lib/cjs/popover/stories/popover-custom-offset.story.js.map +1 -1
  124. package/lib/cjs/popover/use-popover.js +2 -0
  125. package/lib/cjs/popover/use-popover.js.map +1 -1
  126. package/lib/cjs/radio/stories/radio-custom-label.story.js +1 -1
  127. package/lib/cjs/radio/stories/radio-custom-label.story.js.map +1 -1
  128. package/lib/cjs/segmented-control/SegmentedControl.js.map +1 -1
  129. package/lib/cjs/select/Overrides.js +30 -30
  130. package/lib/cjs/select/Overrides.js.map +1 -1
  131. package/lib/cjs/select-icon-button/SelectIconButton.js +4 -4
  132. package/lib/cjs/select-icon-button/SelectIconButton.js.map +1 -1
  133. package/lib/cjs/select-icon-button/stories/select-icon-button-sizes.story.js +1 -1
  134. package/lib/cjs/select-icon-button/stories/select-icon-button-sizes.story.js.map +1 -1
  135. package/lib/cjs/select-icon-button/stories/select-icon-button-states.story.js +1 -1
  136. package/lib/cjs/select-icon-button/stories/select-icon-button-states.story.js.map +1 -1
  137. package/lib/cjs/selectable-tag/stories/selectable-tag-sizes.story.js +1 -1
  138. package/lib/cjs/selectable-tag/stories/selectable-tag-sizes.story.js.map +1 -1
  139. package/lib/cjs/side-navigation/SideNavigation.js +10 -10
  140. package/lib/cjs/side-navigation/SideNavigation.js.map +1 -1
  141. package/lib/cjs/slider/Slider.js +1 -1
  142. package/lib/cjs/slider/Slider.js.map +1 -1
  143. package/lib/cjs/slider/stories/slider-single-controlled.story.js +2 -2
  144. package/lib/cjs/slider/stories/slider-single-controlled.story.js.map +1 -1
  145. package/lib/cjs/spotlight/Spotlight.js +6 -6
  146. package/lib/cjs/spotlight/Spotlight.js.map +1 -1
  147. package/lib/cjs/spotlight/SpotlightProvider.js +6 -6
  148. package/lib/cjs/spotlight/SpotlightProvider.js.map +1 -1
  149. package/lib/cjs/spotlight/SpotlightTarget.js +18 -16
  150. package/lib/cjs/spotlight/SpotlightTarget.js.map +1 -1
  151. package/lib/cjs/status-indicator/StatusIndicator.js +4 -2
  152. package/lib/cjs/status-indicator/StatusIndicator.js.map +1 -1
  153. package/lib/cjs/status-indicator/stories/status-indicator-variants.story.js +1 -1
  154. package/lib/cjs/status-indicator/stories/status-indicator-variants.story.js.map +1 -1
  155. package/lib/cjs/tabs/Tabs.js +3 -3
  156. package/lib/cjs/tabs/Tabs.js.map +1 -1
  157. package/lib/cjs/tabs/stories/tabs-fill-variants.story.js +1 -1
  158. package/lib/cjs/tabs/stories/tabs-fill-variants.story.js.map +1 -1
  159. package/lib/cjs/tabs/stories/tabs-sizes.story.js +1 -1
  160. package/lib/cjs/tabs/stories/tabs-sizes.story.js.map +1 -1
  161. package/lib/cjs/tabs/use-tabs-scroll-overflow.js +2 -2
  162. package/lib/cjs/tabs/use-tabs-scroll-overflow.js.map +1 -1
  163. package/lib/cjs/text-input/stories/text-input-full.story.js +1 -1
  164. package/lib/cjs/text-input/stories/text-input-full.story.js.map +1 -1
  165. package/lib/cjs/text-input/stories/text-input-with-icons.story.js +1 -1
  166. package/lib/cjs/text-input/stories/text-input-with-icons.story.js.map +1 -1
  167. package/lib/cjs/theme/agnostic.js +4 -4
  168. package/lib/cjs/theme/agnostic.js.map +1 -1
  169. package/lib/cjs/time-picker/TimePicker.js +24 -24
  170. package/lib/cjs/time-picker/TimePicker.js.map +1 -1
  171. package/lib/cjs/time-picker/generate-time-options.js +3 -3
  172. package/lib/cjs/time-picker/generate-time-options.js.map +1 -1
  173. package/lib/cjs/timezone-picker/TimeZonePicker.js +44 -44
  174. package/lib/cjs/timezone-picker/TimeZonePicker.js.map +1 -1
  175. package/lib/cjs/timezone-picker/generate-timezone-options.js +5 -5
  176. package/lib/cjs/timezone-picker/generate-timezone-options.js.map +1 -1
  177. package/lib/cjs/toast/ToastControlled.js +1 -1
  178. package/lib/cjs/toast/ToastControlled.js.map +1 -1
  179. package/lib/cjs/tooltip/use-tooltip.js +8 -1
  180. package/lib/cjs/tooltip/use-tooltip.js.map +1 -1
  181. package/lib/cjs/tree-view/TreeItemWrapper.js +8 -8
  182. package/lib/cjs/tree-view/TreeItemWrapper.js.map +1 -1
  183. package/lib/cjs/tree-view/TreeView.js +6 -2
  184. package/lib/cjs/tree-view/TreeView.js.map +1 -1
  185. package/lib/cjs/tree-view/TreeViewTextItem.js +17 -17
  186. package/lib/cjs/tree-view/TreeViewTextItem.js.map +1 -1
  187. package/lib/cjs/tree-view/tree-view-keyboard-coordinates.js +2 -0
  188. package/lib/cjs/tree-view/tree-view-keyboard-coordinates.js.map +1 -1
  189. package/lib/cjs/tree-view/tree-view-utils.js +12 -12
  190. package/lib/cjs/tree-view/tree-view-utils.js.map +1 -1
  191. package/lib/cjs/typography/Typography.js.map +1 -1
  192. package/lib/esm/_common/export-stories-utils.js +1 -1
  193. package/lib/esm/_common/export-stories-utils.js.map +1 -1
  194. package/lib/esm/_common/utils.js +3 -3
  195. package/lib/esm/_common/utils.js.map +1 -1
  196. package/lib/esm/_generated/style-rules/color-utils.js +3 -0
  197. package/lib/esm/_generated/style-rules/color-utils.js.map +1 -1
  198. package/lib/esm/_generated/style-rules/date-utils.js +14 -13
  199. package/lib/esm/_generated/style-rules/date-utils.js.map +1 -1
  200. package/lib/esm/_generated/style-rules/literal-schemas.js +5 -3
  201. package/lib/esm/_generated/style-rules/literal-schemas.js.map +1 -1
  202. package/lib/esm/ai/code-preview/CodePreview.js +1 -1
  203. package/lib/esm/ai/code-preview/CodePreview.js.map +1 -1
  204. package/lib/esm/ai/file-tag/FileTag.js.map +1 -1
  205. package/lib/esm/ai/image-tag/ImageTag.js.map +1 -1
  206. package/lib/esm/ai/prompt/Prompt.js +10 -10
  207. package/lib/esm/ai/prompt/Prompt.js.map +1 -1
  208. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js +1 -1
  209. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js.map +1 -1
  210. package/lib/esm/ai/prompt/stories/prompt-context.story.js +1 -1
  211. package/lib/esm/ai/prompt/stories/prompt-context.story.js.map +1 -1
  212. package/lib/esm/ai/prompt/stories/prompt-default.story.js +1 -1
  213. package/lib/esm/ai/prompt/stories/prompt-default.story.js.map +1 -1
  214. package/lib/esm/ai/prompt/stories/prompt-header.story.js +1 -1
  215. package/lib/esm/ai/prompt/stories/prompt-header.story.js.map +1 -1
  216. package/lib/esm/ai/reasoning/Reasoning.js +1 -1
  217. package/lib/esm/ai/reasoning/Reasoning.js.map +1 -1
  218. package/lib/esm/ai/response/Response.js +4 -4
  219. package/lib/esm/ai/response/Response.js.map +1 -1
  220. package/lib/esm/ai/response/stories/response-full-example.story.js +1 -1
  221. package/lib/esm/ai/response/stories/response-full-example.story.js.map +1 -1
  222. package/lib/esm/ai/suggestion/Suggestion.js.map +1 -1
  223. package/lib/esm/ai/thinking/thinking-duration-formatter.js +5 -5
  224. package/lib/esm/ai/thinking/thinking-duration-formatter.js.map +1 -1
  225. package/lib/esm/banner/Banner.js +2 -2
  226. package/lib/esm/banner/Banner.js.map +1 -1
  227. package/lib/esm/button/ButtonBase.js +4 -4
  228. package/lib/esm/button/ButtonBase.js.map +1 -1
  229. package/lib/esm/clean-icon-button/stories/clean-icon-button-sizes.story.js +1 -1
  230. package/lib/esm/clean-icon-button/stories/clean-icon-button-sizes.story.js.map +1 -1
  231. package/lib/esm/clean-icon-button/stories/clean-icon-button-tone.story.js +1 -1
  232. package/lib/esm/clean-icon-button/stories/clean-icon-button-tone.story.js.map +1 -1
  233. package/lib/esm/code/Code.js +3 -3
  234. package/lib/esm/code/Code.js.map +1 -1
  235. package/lib/esm/code-block/CodeBlock.js +2 -2
  236. package/lib/esm/code-block/CodeBlock.js.map +1 -1
  237. package/lib/esm/color-picker/ColorPicker.js +22 -22
  238. package/lib/esm/color-picker/ColorPicker.js.map +1 -1
  239. package/lib/esm/color-picker/stories/color-picker-custom-swatches.story.js +20 -20
  240. package/lib/esm/color-picker/stories/color-picker-custom-swatches.story.js.map +1 -1
  241. package/lib/esm/color-picker/stories/color-picker-default.story.js +4 -4
  242. package/lib/esm/color-picker/stories/color-picker-default.story.js.map +1 -1
  243. package/lib/esm/color-picker/stories/color-picker-dialog.story.js +4 -4
  244. package/lib/esm/color-picker/stories/color-picker-dialog.story.js.map +1 -1
  245. package/lib/esm/color-picker/stories/color-picker-without-eyedropper.story.js +4 -4
  246. package/lib/esm/color-picker/stories/color-picker-without-eyedropper.story.js.map +1 -1
  247. package/lib/esm/combobox/stories/combobox-large-data-set.story.js +1 -1
  248. package/lib/esm/combobox/stories/combobox-large-data-set.story.js.map +1 -1
  249. package/lib/esm/data-grid/Components.js +20 -20
  250. package/lib/esm/data-grid/Components.js.map +1 -1
  251. package/lib/esm/data-grid/DataGrid.js +3 -3
  252. package/lib/esm/data-grid/DataGrid.js.map +1 -1
  253. package/lib/esm/data-grid/data-grid-nav/data-grid-nav.js +55 -54
  254. package/lib/esm/data-grid/data-grid-nav/data-grid-nav.js.map +1 -1
  255. package/lib/esm/data-grid/data-grid-nav/helpers.js +1 -1
  256. package/lib/esm/data-grid/data-grid-nav/helpers.js.map +1 -1
  257. package/lib/esm/data-grid/data-grid-nav/index.js +2 -2
  258. package/lib/esm/data-grid/data-grid-nav/index.js.map +1 -1
  259. package/lib/esm/data-grid/helpers/index.js +42 -40
  260. package/lib/esm/data-grid/helpers/index.js.map +1 -1
  261. package/lib/esm/data-grid/stories/datagrid-in-dialog.story.js +10 -7
  262. package/lib/esm/data-grid/stories/datagrid-in-dialog.story.js.map +1 -1
  263. package/lib/esm/data-grid/stories/datagrid-keyboard-navigation.story.js +10 -7
  264. package/lib/esm/data-grid/stories/datagrid-keyboard-navigation.story.js.map +1 -1
  265. package/lib/esm/data-grid/stories/datagrid-rule-based-styling-datetime.story.js +5 -5
  266. package/lib/esm/data-grid/stories/datagrid-rule-based-styling-datetime.story.js.map +1 -1
  267. package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
  268. package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
  269. package/lib/esm/data-grid/stories/datagrid-virtualization.story.js +5 -5
  270. package/lib/esm/data-grid/stories/datagrid-virtualization.story.js.map +1 -1
  271. package/lib/esm/data-grid/style-rules/evaluate.js +23 -23
  272. package/lib/esm/data-grid/style-rules/evaluate.js.map +1 -1
  273. package/lib/esm/data-grid/style-rules/types.js +1 -1
  274. package/lib/esm/data-grid/style-rules/types.js.map +1 -1
  275. package/lib/esm/date-picker/stories/date-picker-with-timezone-both-mode.story.js +1 -1
  276. package/lib/esm/date-picker/stories/date-picker-with-timezone-both-mode.story.js.map +1 -1
  277. package/lib/esm/dialog/Dialog.js +5 -5
  278. package/lib/esm/dialog/Dialog.js.map +1 -1
  279. package/lib/esm/dialog/dialog-types.js.map +1 -1
  280. package/lib/esm/drawer/Drawer.js +5 -5
  281. package/lib/esm/drawer/Drawer.js.map +1 -1
  282. package/lib/esm/dropdown-button/DropdownButton.js +4 -4
  283. package/lib/esm/dropdown-button/DropdownButton.js.map +1 -1
  284. package/lib/esm/dropzone/stories/dropzone-full.story.js +7 -7
  285. package/lib/esm/dropzone/stories/dropzone-full.story.js.map +1 -1
  286. package/lib/esm/flex/stories/flex-default.story.js +1 -1
  287. package/lib/esm/flex/stories/flex-default.story.js.map +1 -1
  288. package/lib/esm/hooks/index.js +3 -3
  289. package/lib/esm/hooks/index.js.map +1 -1
  290. package/lib/esm/icon-button/stories/icon-button-sizes.story.js +1 -1
  291. package/lib/esm/icon-button/stories/icon-button-sizes.story.js.map +1 -1
  292. package/lib/esm/icon-button/stories/icon-button-tone.story.js +1 -1
  293. package/lib/esm/icon-button/stories/icon-button-tone.story.js.map +1 -1
  294. package/lib/esm/icon-button-base/IconButtonBase.js +4 -4
  295. package/lib/esm/icon-button-base/IconButtonBase.js.map +1 -1
  296. package/lib/esm/icons/generated/custom/ScatterPlot.js +28 -0
  297. package/lib/esm/icons/generated/custom/ScatterPlot.js.map +1 -0
  298. package/lib/esm/icons/generated/custom/index.js +1 -0
  299. package/lib/esm/icons/generated/custom/index.js.map +1 -1
  300. package/lib/esm/inline-edit/InlineEdit.js +8 -8
  301. package/lib/esm/inline-edit/InlineEdit.js.map +1 -1
  302. package/lib/esm/kbd/kbd-utils.js +2 -2
  303. package/lib/esm/kbd/kbd-utils.js.map +1 -1
  304. package/lib/esm/modal/Modal.js +6 -6
  305. package/lib/esm/modal/Modal.js.map +1 -1
  306. package/lib/esm/next/tree-view/TreeView.js +23 -23
  307. package/lib/esm/next/tree-view/TreeView.js.map +1 -1
  308. package/lib/esm/next/tree-view/stories/tree-view-lazy.story.js +1 -1
  309. package/lib/esm/next/tree-view/stories/tree-view-lazy.story.js.map +1 -1
  310. package/lib/esm/next/tree-view/stories/tree-view-multi.story.js +6 -6
  311. package/lib/esm/next/tree-view/stories/tree-view-multi.story.js.map +1 -1
  312. package/lib/esm/popover/Popover.js.map +1 -1
  313. package/lib/esm/popover/stories/popover-custom-offset.story.js +3 -3
  314. package/lib/esm/popover/stories/popover-custom-offset.story.js.map +1 -1
  315. package/lib/esm/popover/use-popover.js +2 -0
  316. package/lib/esm/popover/use-popover.js.map +1 -1
  317. package/lib/esm/radio/stories/radio-custom-label.story.js +1 -1
  318. package/lib/esm/radio/stories/radio-custom-label.story.js.map +1 -1
  319. package/lib/esm/segmented-control/SegmentedControl.js.map +1 -1
  320. package/lib/esm/select/Overrides.js +30 -30
  321. package/lib/esm/select/Overrides.js.map +1 -1
  322. package/lib/esm/select-icon-button/SelectIconButton.js +4 -4
  323. package/lib/esm/select-icon-button/SelectIconButton.js.map +1 -1
  324. package/lib/esm/select-icon-button/stories/select-icon-button-sizes.story.js +1 -1
  325. package/lib/esm/select-icon-button/stories/select-icon-button-sizes.story.js.map +1 -1
  326. package/lib/esm/select-icon-button/stories/select-icon-button-states.story.js +1 -1
  327. package/lib/esm/select-icon-button/stories/select-icon-button-states.story.js.map +1 -1
  328. package/lib/esm/selectable-tag/stories/selectable-tag-sizes.story.js +1 -1
  329. package/lib/esm/selectable-tag/stories/selectable-tag-sizes.story.js.map +1 -1
  330. package/lib/esm/side-navigation/SideNavigation.js +10 -10
  331. package/lib/esm/side-navigation/SideNavigation.js.map +1 -1
  332. package/lib/esm/slider/Slider.js +1 -1
  333. package/lib/esm/slider/Slider.js.map +1 -1
  334. package/lib/esm/slider/stories/slider-single-controlled.story.js +2 -2
  335. package/lib/esm/slider/stories/slider-single-controlled.story.js.map +1 -1
  336. package/lib/esm/spotlight/Spotlight.js +6 -6
  337. package/lib/esm/spotlight/Spotlight.js.map +1 -1
  338. package/lib/esm/spotlight/SpotlightProvider.js +6 -6
  339. package/lib/esm/spotlight/SpotlightProvider.js.map +1 -1
  340. package/lib/esm/spotlight/SpotlightTarget.js +18 -16
  341. package/lib/esm/spotlight/SpotlightTarget.js.map +1 -1
  342. package/lib/esm/status-indicator/StatusIndicator.js +4 -2
  343. package/lib/esm/status-indicator/StatusIndicator.js.map +1 -1
  344. package/lib/esm/status-indicator/stories/status-indicator-variants.story.js +1 -1
  345. package/lib/esm/status-indicator/stories/status-indicator-variants.story.js.map +1 -1
  346. package/lib/esm/tabs/Tabs.js +3 -3
  347. package/lib/esm/tabs/Tabs.js.map +1 -1
  348. package/lib/esm/tabs/stories/tabs-fill-variants.story.js +1 -1
  349. package/lib/esm/tabs/stories/tabs-fill-variants.story.js.map +1 -1
  350. package/lib/esm/tabs/stories/tabs-sizes.story.js +1 -1
  351. package/lib/esm/tabs/stories/tabs-sizes.story.js.map +1 -1
  352. package/lib/esm/tabs/use-tabs-scroll-overflow.js +2 -2
  353. package/lib/esm/tabs/use-tabs-scroll-overflow.js.map +1 -1
  354. package/lib/esm/text-input/stories/text-input-full.story.js +1 -1
  355. package/lib/esm/text-input/stories/text-input-full.story.js.map +1 -1
  356. package/lib/esm/text-input/stories/text-input-with-icons.story.js +1 -1
  357. package/lib/esm/text-input/stories/text-input-with-icons.story.js.map +1 -1
  358. package/lib/esm/theme/agnostic.js +3 -3
  359. package/lib/esm/theme/agnostic.js.map +1 -1
  360. package/lib/esm/time-picker/TimePicker.js +24 -24
  361. package/lib/esm/time-picker/TimePicker.js.map +1 -1
  362. package/lib/esm/time-picker/generate-time-options.js +3 -3
  363. package/lib/esm/time-picker/generate-time-options.js.map +1 -1
  364. package/lib/esm/timezone-picker/TimeZonePicker.js +44 -44
  365. package/lib/esm/timezone-picker/TimeZonePicker.js.map +1 -1
  366. package/lib/esm/timezone-picker/generate-timezone-options.js +5 -5
  367. package/lib/esm/timezone-picker/generate-timezone-options.js.map +1 -1
  368. package/lib/esm/toast/ToastControlled.js +1 -1
  369. package/lib/esm/toast/ToastControlled.js.map +1 -1
  370. package/lib/esm/tooltip/use-tooltip.js +8 -1
  371. package/lib/esm/tooltip/use-tooltip.js.map +1 -1
  372. package/lib/esm/tree-view/TreeItemWrapper.js +8 -8
  373. package/lib/esm/tree-view/TreeItemWrapper.js.map +1 -1
  374. package/lib/esm/tree-view/TreeView.js +6 -2
  375. package/lib/esm/tree-view/TreeView.js.map +1 -1
  376. package/lib/esm/tree-view/TreeViewTextItem.js +17 -17
  377. package/lib/esm/tree-view/TreeViewTextItem.js.map +1 -1
  378. package/lib/esm/tree-view/tree-view-keyboard-coordinates.js +2 -0
  379. package/lib/esm/tree-view/tree-view-keyboard-coordinates.js.map +1 -1
  380. package/lib/esm/tree-view/tree-view-utils.js +12 -12
  381. package/lib/esm/tree-view/tree-view-utils.js.map +1 -1
  382. package/lib/esm/typography/Typography.js.map +1 -1
  383. package/lib/types/_common/export-stories-utils.d.ts +1 -1
  384. package/lib/types/_common/utils.d.ts +3 -3
  385. package/lib/types/_generated/style-rules/color-utils.d.ts.map +1 -1
  386. package/lib/types/_generated/style-rules/date-utils.d.ts +3 -3
  387. package/lib/types/_generated/style-rules/date-utils.d.ts.map +1 -1
  388. package/lib/types/_generated/style-rules/literal-schemas.d.ts.map +1 -1
  389. package/lib/types/ai/code-preview/CodePreview.d.ts +1 -1
  390. package/lib/types/ai/file-tag/FileTag.d.ts +1 -1
  391. package/lib/types/ai/file-tag/FileTag.d.ts.map +1 -1
  392. package/lib/types/ai/image-tag/ImageTag.d.ts +1 -1
  393. package/lib/types/ai/image-tag/ImageTag.d.ts.map +1 -1
  394. package/lib/types/ai/prompt/Prompt.d.ts +3 -3
  395. package/lib/types/ai/prompt/Prompt.d.ts.map +1 -1
  396. package/lib/types/ai/suggestion/Suggestion.d.ts +1 -1
  397. package/lib/types/ai/suggestion/Suggestion.d.ts.map +1 -1
  398. package/lib/types/ai/thinking/thinking-duration-formatter.d.ts +5 -5
  399. package/lib/types/banner/Banner.d.ts +1 -1
  400. package/lib/types/banner/Banner.d.ts.map +1 -1
  401. package/lib/types/button/ButtonBase.d.ts +2 -2
  402. package/lib/types/button/ButtonBase.d.ts.map +1 -1
  403. package/lib/types/code/Code.d.ts +1 -1
  404. package/lib/types/code/Code.d.ts.map +1 -1
  405. package/lib/types/data-grid/Components.d.ts +2 -2
  406. package/lib/types/data-grid/Components.d.ts.map +1 -1
  407. package/lib/types/data-grid/DataGrid.d.ts +2 -2
  408. package/lib/types/data-grid/data-grid-nav/data-grid-nav.d.ts +4 -4
  409. package/lib/types/data-grid/data-grid-nav/data-grid-nav.d.ts.map +1 -1
  410. package/lib/types/data-grid/data-grid-nav/helpers.d.ts +1 -1
  411. package/lib/types/data-grid/data-grid-nav/index.d.ts +1 -1
  412. package/lib/types/data-grid/data-grid-nav/index.d.ts.map +1 -1
  413. package/lib/types/data-grid/helpers/index.d.ts +5 -5
  414. package/lib/types/data-grid/helpers/index.d.ts.map +1 -1
  415. package/lib/types/data-grid/stories/datagrid-in-dialog.story.d.ts.map +1 -1
  416. package/lib/types/data-grid/stories/datagrid-keyboard-navigation.story.d.ts.map +1 -1
  417. package/lib/types/data-grid/stories/datagrid-pinned-columns.stories.d.ts +2 -2
  418. package/lib/types/data-grid/stories/datagrid-search-and-filters.stories.d.ts +2 -2
  419. package/lib/types/data-grid/stories/datagrid-virtualization.story.d.ts.map +1 -1
  420. package/lib/types/data-grid/style-rules/evaluate.d.ts +1 -1
  421. package/lib/types/dialog/Dialog.d.ts.map +1 -1
  422. package/lib/types/dialog/dialog-types.d.ts +1 -1
  423. package/lib/types/dialog/dialog-types.d.ts.map +1 -1
  424. package/lib/types/drawer/Drawer.d.ts +1 -1
  425. package/lib/types/drawer/Drawer.d.ts.map +1 -1
  426. package/lib/types/dropdown-button/DropdownButton.d.ts +1 -1
  427. package/lib/types/dropdown-button/DropdownButton.d.ts.map +1 -1
  428. package/lib/types/hooks/index.d.ts +3 -3
  429. package/lib/types/icon-button-base/IconButtonBase.d.ts +1 -1
  430. package/lib/types/icon-button-base/IconButtonBase.d.ts.map +1 -1
  431. package/lib/types/icons/generated/custom/ScatterPlot.d.ts +29 -0
  432. package/lib/types/icons/generated/custom/ScatterPlot.d.ts.map +1 -0
  433. package/lib/types/icons/generated/custom/index.d.ts +1 -0
  434. package/lib/types/icons/generated/custom/index.d.ts.map +1 -1
  435. package/lib/types/modal/Modal.d.ts +1 -1
  436. package/lib/types/modal/Modal.d.ts.map +1 -1
  437. package/lib/types/popover/Popover.d.ts.map +1 -1
  438. package/lib/types/popover/use-popover.d.ts.map +1 -1
  439. package/lib/types/segmented-control/SegmentedControl.d.ts +1 -1
  440. package/lib/types/segmented-control/SegmentedControl.d.ts.map +1 -1
  441. package/lib/types/select/Overrides.d.ts.map +1 -1
  442. package/lib/types/select-icon-button/SelectIconButton.d.ts +1 -1
  443. package/lib/types/select-icon-button/SelectIconButton.d.ts.map +1 -1
  444. package/lib/types/selectable-tag/stories/selectable-tag-sizes.story.d.ts.map +1 -1
  445. package/lib/types/spotlight/SpotlightProvider.d.ts.map +1 -1
  446. package/lib/types/spotlight/SpotlightTarget.d.ts +4 -3
  447. package/lib/types/spotlight/SpotlightTarget.d.ts.map +1 -1
  448. package/lib/types/status-indicator/StatusIndicator.d.ts.map +1 -1
  449. package/lib/types/tabs/Tabs.d.ts +1 -1
  450. package/lib/types/tabs/Tabs.d.ts.map +1 -1
  451. package/lib/types/theme/agnostic.d.ts +2 -2
  452. package/lib/types/theme/agnostic.d.ts.map +1 -1
  453. package/lib/types/tooltip/use-tooltip.d.ts.map +1 -1
  454. package/lib/types/tree-view/TreeView.d.ts.map +1 -1
  455. package/lib/types/tree-view/TreeViewTextItem.d.ts.map +1 -1
  456. package/lib/types/tree-view/tree-view-keyboard-coordinates.d.ts.map +1 -1
  457. package/lib/types/tree-view/tree-view-utils.d.ts +12 -12
  458. package/lib/types/tree-view/tree-view-utils.d.ts.map +1 -1
  459. package/lib/types/typography/Typography.d.ts +6 -1
  460. package/lib/types/typography/Typography.d.ts.map +1 -1
  461. package/package.json +7 -4
  462. package/skills/ndl-react/components/ai/file-tag.md +1 -1
  463. package/skills/ndl-react/components/ai/image-tag.md +1 -1
  464. package/skills/ndl-react/components/ai/prompt.md +10 -10
  465. package/skills/ndl-react/components/ai/response.md +1 -1
  466. package/skills/ndl-react/components/ai/suggestion.md +1 -1
  467. package/skills/ndl-react/components/banner.md +1 -1
  468. package/skills/ndl-react/components/clean-icon-button.md +6 -6
  469. package/skills/ndl-react/components/code.md +1 -1
  470. package/skills/ndl-react/components/color-picker.md +32 -32
  471. package/skills/ndl-react/components/combobox.md +1 -1
  472. package/skills/ndl-react/components/data-grid.md +35 -28
  473. package/skills/ndl-react/components/date-picker.md +1 -1
  474. package/skills/ndl-react/components/dialog.md +1 -1
  475. package/skills/ndl-react/components/drawer.md +1 -1
  476. package/skills/ndl-react/components/dropdown-button.md +1 -1
  477. package/skills/ndl-react/components/dropzone.md +7 -7
  478. package/skills/ndl-react/components/filled-button.md +2 -2
  479. package/skills/ndl-react/components/flex.md +2 -2
  480. package/skills/ndl-react/components/icon-button.md +6 -6
  481. package/skills/ndl-react/components/modal.md +1 -1
  482. package/skills/ndl-react/components/next/tree-view.md +8 -8
  483. package/skills/ndl-react/components/outlined-button.md +2 -2
  484. package/skills/ndl-react/components/popover.md +3 -3
  485. package/skills/ndl-react/components/radio.md +1 -1
  486. package/skills/ndl-react/components/segmented-control.md +1 -1
  487. package/skills/ndl-react/components/select-icon-button.md +7 -7
  488. package/skills/ndl-react/components/selectable-tag.md +10 -4
  489. package/skills/ndl-react/components/slider.md +2 -2
  490. package/skills/ndl-react/components/status-indicator.md +5 -5
  491. package/skills/ndl-react/components/tabs.md +5 -5
  492. package/skills/ndl-react/components/text-button.md +2 -2
  493. package/skills/ndl-react/components/text-input.md +2 -2
  494. package/skills/ndl-react/components/typography.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"text-input-with-icons.story.js","sourceRoot":"","sources":["../../../../src/text-input/stories/text-input-with-icons.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAC,YAAY,EAClB,cAAc,EAAE,KAAC,gBAAgB,KAAG,EACpC,eAAe,EAAE,KAAC,gBAAgB,KAAG,EACrC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,cAAc,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,GACpC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { TextInput } from '@neo4j-ndl/react';\nimport { DatabasePlugIcon, DatabasePlusIcon } from '@neo4j-ndl/react/icons';\nimport { useState } from 'react';\n\nconst Component = () => {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <TextInput\n label=\"With icons\"\n leadingElement={<DatabasePlugIcon />}\n trailingElement={<DatabasePlusIcon />}\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n htmlAttributes={{ id: 'text-input' }}\n />\n );\n};\n\nexport default Component;\n"]}
1
+ {"version":3,"file":"text-input-with-icons.story.js","sourceRoot":"","sources":["../../../../src/text-input/stories/text-input-with-icons.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEnD,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAC,YAAY,EAClB,cAAc,EAAE,KAAC,gBAAgB,KAAG,EACpC,eAAe,EAAE,KAAC,gBAAgB,KAAG,EACrC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACvD,cAAc,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,GACpC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { TextInput } from '@neo4j-ndl/react';\nimport { DatabasePlugIcon, DatabasePlusIcon } from '@neo4j-ndl/react/icons';\nimport { useState } from 'react';\n\nconst Component = () => {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <TextInput\n label=\"With icons\"\n leadingElement={<DatabasePlugIcon />}\n trailingElement={<DatabasePlusIcon />}\n value={searchValue}\n onChange={(event) => setSearchValue(event.target.value)}\n htmlAttributes={{ id: 'text-input' }}\n />\n );\n};\n\nexport default Component;\n"]}
@@ -47,7 +47,7 @@ const useN = (path, stringToJson = defaultStringToJson) => {
47
47
  return value;
48
48
  };
49
49
  // React will complain if we don't use the prefix "use" for
50
- // holding the useNeedleTheme function call. "n" is a more
51
- // convenient name for the function.
52
- export const n = useN;
50
+ // holding the useNeedleTheme function call. "useToken" is exported as "n" for convenience.
51
+ export const useToken = useN;
52
+ export { useToken as n };
53
53
  //# sourceMappingURL=agnostic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agnostic.js","sourceRoot":"","sources":["../../../src/theme/agnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8DAA8D;AAC9D,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAY,EAAE,EAAE,KAAa;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC;IACT,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,4BAA4B;QAC5B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,YAAY,GAAG,mBAAmB,EACnB,EAAE;IACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,uFAAuF,CACxF,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACV,uBAAuB,IAAI,uDAAuD,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,2DAA2D;AAC3D,0DAA0D;AAC1D,oCAAoC;AACpC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useNeedleTheme } from './ThemeProvider';\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction defaultStringToJson(path: string, json: any = {}, theme: string): any {\n const parts = path.split('.');\n let part;\n while ((part = parts.shift())) {\n if (typeof json[part] !== 'object') {\n return json[part];\n }\n json = json[part];\n // Specific for theme tokens\n if (part === 'theme') {\n json = json[theme];\n }\n }\n}\n\nconst useN = (\n path: string,\n stringToJson = defaultStringToJson,\n): string | void => {\n const { theme, tokens } = useNeedleTheme();\n if (!tokens) {\n console.error(\n 'design tokens not found, you need to set the design tokens in the NeedleThemeProvider',\n );\n return;\n }\n const value = stringToJson(path, tokens, theme);\n if (!value) {\n console.warn(\n `design token value \"${path}\" not found, are you sure the string path is correct?`,\n );\n }\n return value;\n};\n\n// React will complain if we don't use the prefix \"use\" for\n// holding the useNeedleTheme function call. \"n\" is a more\n// convenient name for the function.\nexport const n = useN;\n"]}
1
+ {"version":3,"file":"agnostic.js","sourceRoot":"","sources":["../../../src/theme/agnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8DAA8D;AAC9D,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAY,EAAE,EAAE,KAAa;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC;IACT,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,4BAA4B;QAC5B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,YAAY,GAAG,mBAAmB,EACnB,EAAE;IACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,uFAAuF,CACxF,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CACV,uBAAuB,IAAI,uDAAuD,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,2DAA2D;AAC3D,2FAA2F;AAC3F,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useNeedleTheme } from './ThemeProvider';\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction defaultStringToJson(path: string, json: any = {}, theme: string): any {\n const parts = path.split('.');\n let part;\n while ((part = parts.shift())) {\n if (typeof json[part] !== 'object') {\n return json[part];\n }\n json = json[part];\n // Specific for theme tokens\n if (part === 'theme') {\n json = json[theme];\n }\n }\n}\n\nconst useN = (\n path: string,\n stringToJson = defaultStringToJson,\n): string | void => {\n const { theme, tokens } = useNeedleTheme();\n if (!tokens) {\n console.error(\n 'design tokens not found, you need to set the design tokens in the NeedleThemeProvider',\n );\n return;\n }\n const value = stringToJson(path, tokens, theme);\n if (!value) {\n console.warn(\n `design token value \"${path}\" not found, are you sure the string path is correct?`,\n );\n }\n return value;\n};\n\n// React will complain if we don't use the prefix \"use\" for\n// holding the useNeedleTheme function call. \"useToken\" is exported as \"n\" for convenience.\nexport const useToken = useN;\nexport { useToken as n };\n"]}
@@ -136,11 +136,11 @@ export const TimePicker = (_a) => {
136
136
  setEditedInput(NeedleTime.fromString(timeText));
137
137
  setIsPopoverOpen(false);
138
138
  };
139
- const newHandleInputChange = (e) => {
140
- scrollToTime(e.target.value);
141
- setInputValue(e.target.value);
139
+ const newHandleInputChange = (event) => {
140
+ scrollToTime(event.target.value);
141
+ setInputValue(event.target.value);
142
142
  setLastAction('type');
143
- const time = NeedleTime.fromString(e.target.value);
143
+ const time = NeedleTime.fromString(event.target.value);
144
144
  if (!isValidTime(time.hour, time.minute, time.second)) {
145
145
  setError('Invalid time');
146
146
  }
@@ -148,16 +148,16 @@ export const TimePicker = (_a) => {
148
148
  setError(undefined);
149
149
  }
150
150
  };
151
- const handleKeyDown = (e) => {
151
+ const handleKeyDown = (event) => {
152
152
  if (isReadOnly === true || isDisabled === true) {
153
- e.preventDefault();
153
+ event.preventDefault();
154
154
  return;
155
155
  }
156
- if (e.key === 'Escape') {
156
+ if (event.key === 'Escape') {
157
157
  setIsPopoverOpen(false);
158
158
  }
159
159
  setIsPopoverOpen(true);
160
- if (e.key === 'Enter') {
160
+ if (event.key === 'Enter') {
161
161
  const minTypedLength = (is24Hour ? 5 : 6) + (hasSeconds ? 3 : 0);
162
162
  if (lastAction === 'type' && inputValue.length >= minTypedLength) {
163
163
  const time = NeedleTime.fromString(inputValue);
@@ -174,10 +174,10 @@ export const TimePicker = (_a) => {
174
174
  handleOnClick(timeOptions[focusedIndex]);
175
175
  }
176
176
  }
177
- else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
178
- e.preventDefault();
177
+ else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
178
+ event.preventDefault();
179
179
  setLastAction('arrow');
180
- handleArrowNavigation(e.key);
180
+ handleArrowNavigation(event.key);
181
181
  }
182
182
  };
183
183
  const scrollToTime = (startOfTime) => {
@@ -272,12 +272,12 @@ export const TimePicker = (_a) => {
272
272
  return;
273
273
  }
274
274
  setIsPopoverOpen(true);
275
- }, onBlur: (e) => {
275
+ }, onBlur: (event) => {
276
276
  var _a;
277
277
  if (isReadOnly === true || isDisabled === true) {
278
278
  return;
279
279
  }
280
- if (((_a = e.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList.contains('ndl-time-picker-popover-item')) === true) {
280
+ if (((_a = event.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList.contains('ndl-time-picker-popover-item')) === true) {
281
281
  return;
282
282
  }
283
283
  if (inputValue.length < 4) {
@@ -302,20 +302,20 @@ export const TimePicker = (_a) => {
302
302
  // The typed value can never be longer than the format pattern.
303
303
  maxLength: format.length }, restProps, htmlAttributes)), _jsx(ClockIconOutline, { className: "ndl-icon-svg ndl-time-picker-icon" })] })] }), errorToShow !== undefined && (_jsxs("div", { className: "ndl-time-picker-error-wrapper", role: "status", children: [_jsx(ExclamationCircleIconSolid, { className: "ndl-time-picker-error-icon" }), _jsx(Typography, { variant: size === 'large' ? 'body-medium' : 'body-small', className: "ndl-time-picker-error-text", htmlAttributes: { id: errorTextId }, children: errorToShow })] }))] })), context.open && (_jsx(ConditionalWrap, { shouldWrap: isPortaled, wrap: (wrapChildren) => (_jsx(FloatingPortal, { children: wrapChildren })), children: _jsx(FloatingFocusManager, { context: context, modal: false, initialFocus: -1, children: _jsx("div", Object.assign({ ref: refs.setFloating, className: classNames(themeClassName, 'ndl-time-picker-popover', Object.assign({}, classes)), style: Object.assign(Object.assign(Object.assign({}, transitionStyles), floatingStyles), { width: isFluid === true
304
304
  ? (_d = containerRef.current) === null || _d === void 0 ? void 0 : _d.clientWidth
305
- : undefined }) }, getFloatingProps(), { children: _jsx("ul", { ref: listRef, role: "listbox", id: listboxId, tabIndex: -1, children: timeOptions.map((time, i) => (_jsx("li", { id: `${listboxId}-option-${i}`, role: "option", "aria-selected": (value === null || value === void 0 ? void 0 : value.toString(is24Hour, hasSeconds)) === time ||
306
- (editedInput === null || editedInput === void 0 ? void 0 : editedInput.toString(is24Hour, hasSeconds)) === time, value: time, onClick: (e) => {
307
- e.stopPropagation();
308
- e.preventDefault();
305
+ : undefined }) }, getFloatingProps(), { children: _jsx("ul", { ref: listRef, role: "listbox", id: listboxId, tabIndex: -1, children: timeOptions.map((time, index) => (_jsx("li", { id: `${listboxId}-option-${index}`, role: "option", "aria-selected": (value === null || value === void 0 ? void 0 : value.toString(is24Hour, hasSeconds)) === time ||
306
+ (editedInput === null || editedInput === void 0 ? void 0 : editedInput.toString(is24Hour, hasSeconds)) === time, value: time, onClick: (event) => {
307
+ event.stopPropagation();
308
+ event.preventDefault();
309
309
  handleOnClick(time);
310
310
  setIsPopoverOpen(false);
311
- }, onMouseDown: (e) => {
312
- e.stopPropagation();
313
- e.preventDefault();
314
- }, tabIndex: -1, className: classNames(focusedIndex === i ? 'focused' : '', 'ndl-time-picker-popover-item'), onKeyDown: (e) => {
315
- if (e.key === 'Enter') {
316
- e.stopPropagation();
311
+ }, onMouseDown: (event) => {
312
+ event.stopPropagation();
313
+ event.preventDefault();
314
+ }, tabIndex: -1, className: classNames(focusedIndex === index ? 'focused' : '', 'ndl-time-picker-popover-item'), onKeyDown: (event) => {
315
+ if (event.key === 'Enter') {
316
+ event.stopPropagation();
317
317
  handleOnClick(time);
318
318
  }
319
- }, children: time }, i))) }) })) }) }))] }));
319
+ }, children: time }, index))) }) })) }) }))] }));
320
320
  };
321
321
  //# sourceMappingURL=TimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../../src/time-picker/TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n autoUpdate,\n type Boundary,\n flip,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n shift,\n size as sizeMiddleware,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport { tokens } from '@neo4j-ndl/base';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type PolymorphicCommonProps } from '../_common/types';\nimport { ConditionalWrap } from '../conditional-wrap';\nimport { useIsInsideDialog } from '../dialog/dialog-context';\nimport { ClockIconOutline } from '../icons/generated/heroIcons/ClockIconOutline';\nimport { ExclamationCircleIconSolid } from '../icons/generated/heroIcons/ExclamationCircleIconSolid';\nimport { useNeedleTheme } from '../theme';\nimport { Typography } from '../typography';\nimport { generateTimeOptions } from './generate-time-options';\nimport { NeedleTime } from './needle-time';\nimport {\n useKeyboardNavigation,\n useTimePickerPopover,\n} from './time-picker-hooks';\n\nexport type TimeFormat = 'hh:mm' | 'hh:mm aa' | 'hh:mm:ss' | 'hh:mm:ss aa';\n\n/** Fixed input width per format (only used when the picker is not fluid). */\nconst INPUT_WIDTH_BY_FORMAT: Record<TimeFormat, string> = {\n 'hh:mm': '6rem',\n 'hh:mm aa': '9rem',\n 'hh:mm:ss': '7.5rem',\n 'hh:mm:ss aa': '11rem',\n};\n\nexport type TimePickerProps = {\n /** The value of the time picker */\n value?: NeedleTime;\n /** The format of the time picker */\n format?: TimeFormat;\n /** Whether the time picker is fluid */\n isFluid?: boolean;\n /** Whether the time picker is read only */\n isReadOnly?: boolean;\n /** Whether the time picker is required */\n isRequired?: boolean;\n /** Whether the time picker is disabled */\n isDisabled?: boolean;\n /** The time interval of the time picker, in minutes */\n timeInterval?: number;\n /** The label of the time picker */\n label?: string;\n /** The size of the time picker */\n size?: 'small' | 'medium' | 'large';\n /** Manually set the error text */\n errorText?: string;\n /** Callback function triggered when the time picker value changes */\n onChange?: (time: NeedleTime) => void;\n /** Callback function triggered when the time picker encounters an error */\n onError?: (error: string, time: NeedleTime) => void;\n /**\n * Strategy for the dropdown floating element.\n * By default it is absolute, but if the component is inside of a needle Dialog, it is set to fixed.\n * If this prop is set, no auto-detection of Dialog is done.\n */\n floatingStrategy?: 'absolute' | 'fixed';\n /** Whether the dropdown element is rendered in a portal. */\n isPortaled?: boolean;\n};\n\nexport const TimePicker = <T extends React.ElementType = 'div'>({\n format = 'hh:mm',\n isDisabled,\n isFluid,\n isReadOnly,\n isRequired,\n value,\n timeInterval = 15,\n label,\n onChange,\n className,\n onError,\n style,\n size = 'medium',\n errorText,\n htmlAttributes,\n floatingStrategy,\n isPortaled: isPortaledProp,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, TimePickerProps>) => {\n const [editedInput, setEditedInput] = useState<NeedleTime | undefined>(value);\n\n const is24Hour = !format.includes('aa');\n const hasSeconds = format.includes('ss');\n const [inputValue, setInputValue] = useState<string>(\n value?.toString(is24Hour, hasSeconds) ?? '',\n );\n const listRef = useRef<HTMLUListElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement, []);\n const [lastAction, setLastAction] = useState<'type' | 'arrow'>('type');\n const [error, setError] = useState<string | undefined>(undefined);\n const errorTextId = useId();\n const listboxId = useId();\n\n const timeOptions = useMemo(\n () => generateTimeOptions(is24Hour, timeInterval, hasSeconds),\n [is24Hour, timeInterval, hasSeconds],\n );\n\n const { themeClassName } = useNeedleTheme();\n const { isPopoverOpen, setIsPopoverOpen } = useTimePickerPopover(false);\n const { focusedIndex, setFocusedIndex, handleArrowNavigation } =\n useKeyboardNavigation(listRef, timeOptions.length);\n\n const errorToShow =\n errorText !== undefined && errorText !== '' ? errorText : error;\n\n const classes = {\n 'ndl-disabled': isDisabled,\n 'ndl-error': errorToShow !== undefined,\n 'ndl-fluid': isFluid,\n 'ndl-large': size === 'large',\n 'ndl-medium': size === 'medium',\n 'ndl-read-only': isReadOnly,\n 'ndl-small': size === 'small',\n };\n\n const inputWidth = isFluid === true ? '100%' : INPUT_WIDTH_BY_FORMAT[format];\n\n const isValidTime = useCallback(\n (hours: number, minutes: number, seconds: number) => {\n if (hours > 23 || hours < 0) {\n return false;\n }\n\n if (minutes > 59 || minutes < 0) {\n return false;\n }\n\n if (seconds > 59 || seconds < 0) {\n return false;\n }\n\n return true;\n },\n [],\n );\n\n useEffect(() => {\n if (error !== undefined) {\n onError?.(error, NeedleTime.fromString(inputValue));\n }\n }, [error, inputValue, onError]);\n\n useEffect(() => {\n setEditedInput(value);\n setInputValue(value?.toString(is24Hour, hasSeconds) ?? '');\n }, [is24Hour, hasSeconds, value]);\n\n useEffect(() => {\n if (isPopoverOpen) {\n setTimeout(() => {\n listRef.current?.children[focusedIndex]?.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }, 0);\n } else {\n setTimeout(() => {\n const selectedIndex =\n timeOptions.indexOf(value?.toString(is24Hour, hasSeconds) ?? '') ?? 0;\n setFocusedIndex(selectedIndex);\n }, 0);\n }\n }, [\n focusedIndex,\n is24Hour,\n hasSeconds,\n isPopoverOpen,\n value,\n setFocusedIndex,\n timeOptions,\n ]);\n\n const handleOnClick = (timeText: string) => {\n if (onChange) {\n onChange(NeedleTime.fromString(timeText));\n }\n setError(undefined);\n setInputValue(timeText);\n setEditedInput(NeedleTime.fromString(timeText));\n setIsPopoverOpen(false);\n };\n const newHandleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n scrollToTime(e.target.value);\n setInputValue(e.target.value);\n setLastAction('type');\n\n const time = NeedleTime.fromString(e.target.value);\n if (!isValidTime(time.hour, time.minute, time.second)) {\n setError('Invalid time');\n } else {\n setError(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (isReadOnly === true || isDisabled === true) {\n e.preventDefault();\n return;\n }\n\n if (e.key === 'Escape') {\n setIsPopoverOpen(false);\n }\n\n setIsPopoverOpen(true);\n\n if (e.key === 'Enter') {\n const minTypedLength = (is24Hour ? 5 : 6) + (hasSeconds ? 3 : 0);\n if (lastAction === 'type' && inputValue.length >= minTypedLength) {\n const time = NeedleTime.fromString(inputValue);\n handleOnClick(time.toString(is24Hour, hasSeconds));\n } else if (lastAction === 'type' && !inputValue.includes(':')) {\n const time = NeedleTime.fromString(inputValue);\n if (isValidTime(time.hour, time.minute, time.second)) {\n handleOnClick(time.toString(is24Hour, hasSeconds));\n }\n setIsPopoverOpen(false);\n } else {\n handleOnClick(timeOptions[focusedIndex]);\n }\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n setLastAction('arrow');\n handleArrowNavigation(e.key);\n }\n };\n\n const scrollToTime = (startOfTime: string) => {\n const parsedTime = startOfTime.toLowerCase().replace(/[^0-9amp]/g, '');\n let index = -1;\n\n // Handle AM/PM input\n const isPM = parsedTime.includes('p');\n const isAM = parsedTime.includes('a');\n const timeDigits = parsedTime.replace(/[amp]/g, '');\n\n if (timeDigits.length === 1) {\n // Single digit - assume it's an hour\n const hour = `0${timeDigits}`;\n const minutes = hasSeconds ? '00:00' : '00';\n const searchTime = is24Hour\n ? `${hour}:${minutes}`\n : `${hour}:${minutes} ${isPM ? 'PM' : 'AM'}`;\n index = timeOptions.indexOf(searchTime);\n } else {\n // Find closest matching time\n const closestTime = timeOptions.find((time) => {\n const timeWithoutSpecialChars = time\n .toLowerCase()\n .replace(/[^0-9amp]/g, '');\n if (isPM || isAM) {\n // If AM/PM specified, match that specifically\n return timeWithoutSpecialChars.startsWith(parsedTime);\n } else {\n // Otherwise just match the numbers\n return timeWithoutSpecialChars\n .replace(/[amp]/g, '')\n .startsWith(timeDigits);\n }\n });\n index = closestTime !== undefined ? timeOptions.indexOf(closestTime) : -1;\n }\n\n if (index !== -1) {\n setFocusedIndex(index);\n }\n\n return index;\n };\n\n /** Custom floating ui solution */\n const isInsideDialog = useIsInsideDialog();\n const isPortaled = isPortaledProp ?? !isInsideDialog;\n // Inside a Dialog the popover is fixed and not portaled. A transformed\n // ancestor (e.g. Popover) can make Floating UI under-measure available\n // space, so use the viewport as the boundary instead.\n const floatingBoundary: Boundary = isInsideDialog ? [] : 'clippingAncestors';\n const containerRef = useRef<HTMLDivElement>(null);\n const { refs, floatingStyles, context } = useFloating({\n elements: {\n reference: containerRef.current,\n },\n middleware: [\n offset(10),\n flip({\n fallbackPlacements: ['top'],\n fallbackStrategy: 'bestFit',\n }),\n shift({ boundary: floatingBoundary, padding: 5 }),\n sizeMiddleware({\n apply({ availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${availableHeight}px`,\n });\n },\n boundary: floatingBoundary,\n padding: 5,\n }),\n ],\n onOpenChange: (open) => {\n setIsPopoverOpen(open);\n },\n open: isDisabled !== true && isReadOnly !== true && isPopoverOpen,\n placement: 'bottom',\n strategy: floatingStrategy ?? (isInsideDialog ? 'fixed' : 'absolute'),\n whileElementsMounted: autoUpdate,\n });\n const dismiss = useDismiss(context);\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n const { styles: transitionStyles } = useTransitionStyles(context, {\n duration: Number.parseInt(tokens.motion.duration.quick) ?? 0,\n });\n\n const mergedRef = useMergeRefs([refs.setReference, containerRef]);\n\n return (\n <>\n <div\n className={classNames('ndl-time-picker', className, {\n ...classes,\n })}\n ref={mergedRef}\n {...getReferenceProps()}\n style={{\n width: isFluid === true ? '100%' : 'fit-content',\n }}\n >\n <label className=\"ndl-time-picker-label\">\n {label !== undefined && (\n <Typography\n variant={size === 'large' ? 'body-large' : 'body-medium'}\n >\n {label}\n </Typography>\n )}\n <div\n className=\"ndl-time-picker-input-wrapper\"\n style={{\n width: inputWidth,\n ...style,\n }}\n >\n <input\n role=\"combobox\"\n aria-expanded={isPopoverOpen}\n aria-controls={listboxId}\n aria-activedescendant={\n isPopoverOpen && focusedIndex >= 0\n ? `${listboxId}-option-${focusedIndex}`\n : undefined\n }\n aria-label={label} // TODO: handle label natively\n aria-invalid={Boolean(errorToShow)}\n aria-describedby={errorToShow ? errorTextId : undefined}\n className=\"ndl-time-picker-input\"\n type=\"text\"\n ref={inputRef}\n value={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n required={isRequired}\n onChange={newHandleInputChange}\n onKeyDown={handleKeyDown}\n onClick={() => {\n if (isReadOnly === true || isDisabled === true) {\n return;\n }\n setIsPopoverOpen(true);\n }}\n onBlur={(e) => {\n if (isReadOnly === true || isDisabled === true) {\n return;\n }\n\n if (\n e.relatedTarget?.classList.contains(\n 'ndl-time-picker-popover-item',\n ) === true\n ) {\n return;\n }\n\n if (inputValue.length < 4) {\n setError('Invalid time');\n return;\n }\n\n const time = NeedleTime.fromString(inputValue);\n\n if (time === undefined || time === null) {\n setError('Invalid time');\n return;\n }\n\n if (!isValidTime(time.hour, time.minute, time.second)) {\n setError('Invalid time');\n } else {\n setError(undefined);\n setInputValue(time.toString(is24Hour, hasSeconds));\n setEditedInput(time);\n onChange?.(time);\n }\n }}\n placeholder={format}\n // The typed value can never be longer than the format pattern.\n maxLength={format.length}\n {...restProps}\n {...htmlAttributes}\n />\n <ClockIconOutline className=\"ndl-icon-svg ndl-time-picker-icon\" />\n </div>\n </label>\n {errorToShow !== undefined && (\n <div className=\"ndl-time-picker-error-wrapper\" role=\"status\">\n <ExclamationCircleIconSolid className=\"ndl-time-picker-error-icon\" />\n <Typography\n variant={size === 'large' ? 'body-medium' : 'body-small'}\n className=\"ndl-time-picker-error-text\"\n htmlAttributes={{ id: errorTextId }}\n >\n {errorToShow}\n </Typography>\n </div>\n )}\n </div>\n\n {context.open && (\n <ConditionalWrap\n shouldWrap={isPortaled}\n wrap={(wrapChildren) => (\n <FloatingPortal>{wrapChildren}</FloatingPortal>\n )}\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={-1}\n >\n <div\n ref={refs.setFloating}\n className={classNames(themeClassName, 'ndl-time-picker-popover', {\n ...classes,\n })}\n style={{\n ...transitionStyles,\n ...floatingStyles,\n width:\n isFluid === true\n ? containerRef.current?.clientWidth\n : undefined,\n }}\n {...getFloatingProps()}\n >\n <ul ref={listRef} role=\"listbox\" id={listboxId} tabIndex={-1}>\n {timeOptions.map((time, i) => (\n <li\n id={`${listboxId}-option-${i}`}\n key={i}\n role=\"option\"\n aria-selected={\n value?.toString(is24Hour, hasSeconds) === time ||\n editedInput?.toString(is24Hour, hasSeconds) === time\n }\n value={time}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n handleOnClick(time);\n setIsPopoverOpen(false);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n tabIndex={-1}\n className={classNames(\n focusedIndex === i ? 'focused' : '',\n 'ndl-time-picker-popover-item',\n )}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n handleOnClick(time);\n }\n }}\n >\n {time}\n </li>\n ))}\n </ul>\n </div>\n </FloatingFocusManager>\n </ConditionalWrap>\n )}\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../../src/time-picker/TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n autoUpdate,\n type Boundary,\n flip,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n shift,\n size as sizeMiddleware,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport { tokens } from '@neo4j-ndl/base';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type PolymorphicCommonProps } from '../_common/types';\nimport { ConditionalWrap } from '../conditional-wrap';\nimport { useIsInsideDialog } from '../dialog/dialog-context';\nimport { ClockIconOutline } from '../icons/generated/heroIcons/ClockIconOutline';\nimport { ExclamationCircleIconSolid } from '../icons/generated/heroIcons/ExclamationCircleIconSolid';\nimport { useNeedleTheme } from '../theme';\nimport { Typography } from '../typography';\nimport { generateTimeOptions } from './generate-time-options';\nimport { NeedleTime } from './needle-time';\nimport {\n useKeyboardNavigation,\n useTimePickerPopover,\n} from './time-picker-hooks';\n\nexport type TimeFormat = 'hh:mm' | 'hh:mm aa' | 'hh:mm:ss' | 'hh:mm:ss aa';\n\n/** Fixed input width per format (only used when the picker is not fluid). */\nconst INPUT_WIDTH_BY_FORMAT: Record<TimeFormat, string> = {\n 'hh:mm': '6rem',\n 'hh:mm aa': '9rem',\n 'hh:mm:ss': '7.5rem',\n 'hh:mm:ss aa': '11rem',\n};\n\nexport type TimePickerProps = {\n /** The value of the time picker */\n value?: NeedleTime;\n /** The format of the time picker */\n format?: TimeFormat;\n /** Whether the time picker is fluid */\n isFluid?: boolean;\n /** Whether the time picker is read only */\n isReadOnly?: boolean;\n /** Whether the time picker is required */\n isRequired?: boolean;\n /** Whether the time picker is disabled */\n isDisabled?: boolean;\n /** The time interval of the time picker, in minutes */\n timeInterval?: number;\n /** The label of the time picker */\n label?: string;\n /** The size of the time picker */\n size?: 'small' | 'medium' | 'large';\n /** Manually set the error text */\n errorText?: string;\n /** Callback function triggered when the time picker value changes */\n onChange?: (time: NeedleTime) => void;\n /** Callback function triggered when the time picker encounters an error */\n onError?: (error: string, time: NeedleTime) => void;\n /**\n * Strategy for the dropdown floating element.\n * By default it is absolute, but if the component is inside of a needle Dialog, it is set to fixed.\n * If this prop is set, no auto-detection of Dialog is done.\n */\n floatingStrategy?: 'absolute' | 'fixed';\n /** Whether the dropdown element is rendered in a portal. */\n isPortaled?: boolean;\n};\n\nexport const TimePicker = <T extends React.ElementType = 'div'>({\n format = 'hh:mm',\n isDisabled,\n isFluid,\n isReadOnly,\n isRequired,\n value,\n timeInterval = 15,\n label,\n onChange,\n className,\n onError,\n style,\n size = 'medium',\n errorText,\n htmlAttributes,\n floatingStrategy,\n isPortaled: isPortaledProp,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, TimePickerProps>) => {\n const [editedInput, setEditedInput] = useState<NeedleTime | undefined>(value);\n\n const is24Hour = !format.includes('aa');\n const hasSeconds = format.includes('ss');\n const [inputValue, setInputValue] = useState<string>(\n value?.toString(is24Hour, hasSeconds) ?? '',\n );\n const listRef = useRef<HTMLUListElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement, []);\n const [lastAction, setLastAction] = useState<'type' | 'arrow'>('type');\n const [error, setError] = useState<string | undefined>(undefined);\n const errorTextId = useId();\n const listboxId = useId();\n\n const timeOptions = useMemo(\n () => generateTimeOptions(is24Hour, timeInterval, hasSeconds),\n [is24Hour, timeInterval, hasSeconds],\n );\n\n const { themeClassName } = useNeedleTheme();\n const { isPopoverOpen, setIsPopoverOpen } = useTimePickerPopover(false);\n const { focusedIndex, setFocusedIndex, handleArrowNavigation } =\n useKeyboardNavigation(listRef, timeOptions.length);\n\n const errorToShow =\n errorText !== undefined && errorText !== '' ? errorText : error;\n\n const classes = {\n 'ndl-disabled': isDisabled,\n 'ndl-error': errorToShow !== undefined,\n 'ndl-fluid': isFluid,\n 'ndl-large': size === 'large',\n 'ndl-medium': size === 'medium',\n 'ndl-read-only': isReadOnly,\n 'ndl-small': size === 'small',\n };\n\n const inputWidth = isFluid === true ? '100%' : INPUT_WIDTH_BY_FORMAT[format];\n\n const isValidTime = useCallback(\n (hours: number, minutes: number, seconds: number) => {\n if (hours > 23 || hours < 0) {\n return false;\n }\n\n if (minutes > 59 || minutes < 0) {\n return false;\n }\n\n if (seconds > 59 || seconds < 0) {\n return false;\n }\n\n return true;\n },\n [],\n );\n\n useEffect(() => {\n if (error !== undefined) {\n onError?.(error, NeedleTime.fromString(inputValue));\n }\n }, [error, inputValue, onError]);\n\n useEffect(() => {\n setEditedInput(value);\n setInputValue(value?.toString(is24Hour, hasSeconds) ?? '');\n }, [is24Hour, hasSeconds, value]);\n\n useEffect(() => {\n if (isPopoverOpen) {\n setTimeout(() => {\n listRef.current?.children[focusedIndex]?.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }, 0);\n } else {\n setTimeout(() => {\n const selectedIndex =\n timeOptions.indexOf(value?.toString(is24Hour, hasSeconds) ?? '') ?? 0;\n setFocusedIndex(selectedIndex);\n }, 0);\n }\n }, [\n focusedIndex,\n is24Hour,\n hasSeconds,\n isPopoverOpen,\n value,\n setFocusedIndex,\n timeOptions,\n ]);\n\n const handleOnClick = (timeText: string) => {\n if (onChange) {\n onChange(NeedleTime.fromString(timeText));\n }\n setError(undefined);\n setInputValue(timeText);\n setEditedInput(NeedleTime.fromString(timeText));\n setIsPopoverOpen(false);\n };\n const newHandleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n scrollToTime(event.target.value);\n setInputValue(event.target.value);\n setLastAction('type');\n\n const time = NeedleTime.fromString(event.target.value);\n if (!isValidTime(time.hour, time.minute, time.second)) {\n setError('Invalid time');\n } else {\n setError(undefined);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (isReadOnly === true || isDisabled === true) {\n event.preventDefault();\n return;\n }\n\n if (event.key === 'Escape') {\n setIsPopoverOpen(false);\n }\n\n setIsPopoverOpen(true);\n\n if (event.key === 'Enter') {\n const minTypedLength = (is24Hour ? 5 : 6) + (hasSeconds ? 3 : 0);\n if (lastAction === 'type' && inputValue.length >= minTypedLength) {\n const time = NeedleTime.fromString(inputValue);\n handleOnClick(time.toString(is24Hour, hasSeconds));\n } else if (lastAction === 'type' && !inputValue.includes(':')) {\n const time = NeedleTime.fromString(inputValue);\n if (isValidTime(time.hour, time.minute, time.second)) {\n handleOnClick(time.toString(is24Hour, hasSeconds));\n }\n setIsPopoverOpen(false);\n } else {\n handleOnClick(timeOptions[focusedIndex]);\n }\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.preventDefault();\n setLastAction('arrow');\n handleArrowNavigation(event.key);\n }\n };\n\n const scrollToTime = (startOfTime: string) => {\n const parsedTime = startOfTime.toLowerCase().replace(/[^0-9amp]/g, '');\n let index = -1;\n\n // Handle AM/PM input\n const isPM = parsedTime.includes('p');\n const isAM = parsedTime.includes('a');\n const timeDigits = parsedTime.replace(/[amp]/g, '');\n\n if (timeDigits.length === 1) {\n // Single digit - assume it's an hour\n const hour = `0${timeDigits}`;\n const minutes = hasSeconds ? '00:00' : '00';\n const searchTime = is24Hour\n ? `${hour}:${minutes}`\n : `${hour}:${minutes} ${isPM ? 'PM' : 'AM'}`;\n index = timeOptions.indexOf(searchTime);\n } else {\n // Find closest matching time\n const closestTime = timeOptions.find((time) => {\n const timeWithoutSpecialChars = time\n .toLowerCase()\n .replace(/[^0-9amp]/g, '');\n if (isPM || isAM) {\n // If AM/PM specified, match that specifically\n return timeWithoutSpecialChars.startsWith(parsedTime);\n } else {\n // Otherwise just match the numbers\n return timeWithoutSpecialChars\n .replace(/[amp]/g, '')\n .startsWith(timeDigits);\n }\n });\n index = closestTime !== undefined ? timeOptions.indexOf(closestTime) : -1;\n }\n\n if (index !== -1) {\n setFocusedIndex(index);\n }\n\n return index;\n };\n\n /** Custom floating ui solution */\n const isInsideDialog = useIsInsideDialog();\n const isPortaled = isPortaledProp ?? !isInsideDialog;\n // Inside a Dialog the popover is fixed and not portaled. A transformed\n // ancestor (e.g. Popover) can make Floating UI under-measure available\n // space, so use the viewport as the boundary instead.\n const floatingBoundary: Boundary = isInsideDialog ? [] : 'clippingAncestors';\n const containerRef = useRef<HTMLDivElement>(null);\n const { refs, floatingStyles, context } = useFloating({\n elements: {\n reference: containerRef.current,\n },\n middleware: [\n offset(10),\n flip({\n fallbackPlacements: ['top'],\n fallbackStrategy: 'bestFit',\n }),\n shift({ boundary: floatingBoundary, padding: 5 }),\n sizeMiddleware({\n apply({ availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${availableHeight}px`,\n });\n },\n boundary: floatingBoundary,\n padding: 5,\n }),\n ],\n onOpenChange: (open) => {\n setIsPopoverOpen(open);\n },\n open: isDisabled !== true && isReadOnly !== true && isPopoverOpen,\n placement: 'bottom',\n strategy: floatingStrategy ?? (isInsideDialog ? 'fixed' : 'absolute'),\n whileElementsMounted: autoUpdate,\n });\n const dismiss = useDismiss(context);\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n const { styles: transitionStyles } = useTransitionStyles(context, {\n duration: Number.parseInt(tokens.motion.duration.quick) ?? 0,\n });\n\n const mergedRef = useMergeRefs([refs.setReference, containerRef]);\n\n return (\n <>\n <div\n className={classNames('ndl-time-picker', className, {\n ...classes,\n })}\n ref={mergedRef}\n {...getReferenceProps()}\n style={{\n width: isFluid === true ? '100%' : 'fit-content',\n }}\n >\n <label className=\"ndl-time-picker-label\">\n {label !== undefined && (\n <Typography\n variant={size === 'large' ? 'body-large' : 'body-medium'}\n >\n {label}\n </Typography>\n )}\n <div\n className=\"ndl-time-picker-input-wrapper\"\n style={{\n width: inputWidth,\n ...style,\n }}\n >\n <input\n role=\"combobox\"\n aria-expanded={isPopoverOpen}\n aria-controls={listboxId}\n aria-activedescendant={\n isPopoverOpen && focusedIndex >= 0\n ? `${listboxId}-option-${focusedIndex}`\n : undefined\n }\n aria-label={label} // TODO: handle label natively\n aria-invalid={Boolean(errorToShow)}\n aria-describedby={errorToShow ? errorTextId : undefined}\n className=\"ndl-time-picker-input\"\n type=\"text\"\n ref={inputRef}\n value={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n required={isRequired}\n onChange={newHandleInputChange}\n onKeyDown={handleKeyDown}\n onClick={() => {\n if (isReadOnly === true || isDisabled === true) {\n return;\n }\n setIsPopoverOpen(true);\n }}\n onBlur={(event) => {\n if (isReadOnly === true || isDisabled === true) {\n return;\n }\n\n if (\n event.relatedTarget?.classList.contains(\n 'ndl-time-picker-popover-item',\n ) === true\n ) {\n return;\n }\n\n if (inputValue.length < 4) {\n setError('Invalid time');\n return;\n }\n\n const time = NeedleTime.fromString(inputValue);\n\n if (time === undefined || time === null) {\n setError('Invalid time');\n return;\n }\n\n if (!isValidTime(time.hour, time.minute, time.second)) {\n setError('Invalid time');\n } else {\n setError(undefined);\n setInputValue(time.toString(is24Hour, hasSeconds));\n setEditedInput(time);\n onChange?.(time);\n }\n }}\n placeholder={format}\n // The typed value can never be longer than the format pattern.\n maxLength={format.length}\n {...restProps}\n {...htmlAttributes}\n />\n <ClockIconOutline className=\"ndl-icon-svg ndl-time-picker-icon\" />\n </div>\n </label>\n {errorToShow !== undefined && (\n <div className=\"ndl-time-picker-error-wrapper\" role=\"status\">\n <ExclamationCircleIconSolid className=\"ndl-time-picker-error-icon\" />\n <Typography\n variant={size === 'large' ? 'body-medium' : 'body-small'}\n className=\"ndl-time-picker-error-text\"\n htmlAttributes={{ id: errorTextId }}\n >\n {errorToShow}\n </Typography>\n </div>\n )}\n </div>\n\n {context.open && (\n <ConditionalWrap\n shouldWrap={isPortaled}\n wrap={(wrapChildren) => (\n <FloatingPortal>{wrapChildren}</FloatingPortal>\n )}\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={-1}\n >\n <div\n ref={refs.setFloating}\n className={classNames(themeClassName, 'ndl-time-picker-popover', {\n ...classes,\n })}\n style={{\n ...transitionStyles,\n ...floatingStyles,\n width:\n isFluid === true\n ? containerRef.current?.clientWidth\n : undefined,\n }}\n {...getFloatingProps()}\n >\n <ul ref={listRef} role=\"listbox\" id={listboxId} tabIndex={-1}>\n {timeOptions.map((time, index) => (\n <li\n id={`${listboxId}-option-${index}`}\n key={index}\n role=\"option\"\n aria-selected={\n value?.toString(is24Hour, hasSeconds) === time ||\n editedInput?.toString(is24Hour, hasSeconds) === time\n }\n value={time}\n onClick={(event) => {\n event.stopPropagation();\n event.preventDefault();\n handleOnClick(time);\n setIsPopoverOpen(false);\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n tabIndex={-1}\n className={classNames(\n focusedIndex === index ? 'focused' : '',\n 'ndl-time-picker-popover-item',\n )}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.stopPropagation();\n handleOnClick(time);\n }\n }}\n >\n {time}\n </li>\n ))}\n </ul>\n </div>\n </FloatingFocusManager>\n </ConditionalWrap>\n )}\n </>\n );\n};\n"]}
@@ -24,9 +24,9 @@ export const generateTimeOptions = (is24Hour, interval, showSeconds) => {
24
24
  // The dropdown lists times at the minute interval; when seconds are shown the
25
25
  // options are anchored at `:00` and the user can type a more precise value.
26
26
  const secondsSuffix = showSeconds === true ? ':00' : '';
27
- for (let i = 0; i < 1440; i += safeInterval) {
28
- const hours = Math.floor(i / 60);
29
- const minutes = i % 60;
27
+ for (let minute = 0; minute < 1440; minute += safeInterval) {
28
+ const hours = Math.floor(minute / 60);
29
+ const minutes = minute % 60;
30
30
  if (is24Hour) {
31
31
  times.push(`${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}${secondsSuffix}`);
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate-time-options.js","sourceRoot":"","sources":["../../../src/time-picker/generate-time-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAiB,EACjB,QAAgB,EAChB,WAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpC,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CACxF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,MAAM,aAAa,GAAG,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,IAAI,MAAM,EAAE,CAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nexport const generateTimeOptions = (\n is24Hour: boolean,\n interval: number,\n showSeconds?: boolean,\n) => {\n const times: string[] = [];\n const safeInterval = interval || 30;\n // The dropdown lists times at the minute interval; when seconds are shown the\n // options are anchored at `:00` and the user can type a more precise value.\n const secondsSuffix = showSeconds === true ? ':00' : '';\n for (let i = 0; i < 1440; i += safeInterval) {\n const hours = Math.floor(i / 60);\n const minutes = i % 60;\n if (is24Hour) {\n times.push(\n `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}${secondsSuffix}`,\n );\n } else {\n const period = hours < 12 ? 'AM' : 'PM';\n const adjustedHours = hours % 12 || 12;\n times.push(\n `${String(adjustedHours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}${secondsSuffix} ${period}`,\n );\n }\n }\n return times;\n};\n"]}
1
+ {"version":3,"file":"generate-time-options.js","sourceRoot":"","sources":["../../../src/time-picker/generate-time-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAiB,EACjB,QAAgB,EAChB,WAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpC,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE,CACxF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,MAAM,aAAa,GAAG,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,IAAI,MAAM,EAAE,CAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nexport const generateTimeOptions = (\n is24Hour: boolean,\n interval: number,\n showSeconds?: boolean,\n) => {\n const times: string[] = [];\n const safeInterval = interval || 30;\n // The dropdown lists times at the minute interval; when seconds are shown the\n // options are anchored at `:00` and the user can type a more precise value.\n const secondsSuffix = showSeconds === true ? ':00' : '';\n for (let minute = 0; minute < 1440; minute += safeInterval) {\n const hours = Math.floor(minute / 60);\n const minutes = minute % 60;\n if (is24Hour) {\n times.push(\n `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}${secondsSuffix}`,\n );\n } else {\n const period = hours < 12 ? 'AM' : 'PM';\n const adjustedHours = hours % 12 || 12;\n times.push(\n `${String(adjustedHours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}${secondsSuffix} ${period}`,\n );\n }\n }\n return times;\n};\n"]}
@@ -149,8 +149,8 @@ export const TimeZonePicker = (_a) => {
149
149
  setIsPopoverOpen(false);
150
150
  setSearchQuery('');
151
151
  };
152
- const handleInputChange = (e) => {
153
- const query = e.target.value;
152
+ const handleInputChange = (event) => {
153
+ const query = event.target.value;
154
154
  setSearchQuery(query);
155
155
  setInputValue(query);
156
156
  // In UTC mode (utc or both), validate custom UTC input
@@ -171,18 +171,18 @@ export const TimeZonePicker = (_a) => {
171
171
  setError(undefined);
172
172
  }
173
173
  };
174
- const handleKeyDown = (e) => {
174
+ const handleKeyDown = (event) => {
175
175
  if (isReadOnly === true || isDisabled === true) {
176
- e.preventDefault();
176
+ event.preventDefault();
177
177
  return;
178
178
  }
179
- if (e.key === 'Escape') {
179
+ if (event.key === 'Escape') {
180
180
  setIsPopoverOpen(false);
181
181
  setSearchQuery('');
182
182
  setInputValue(value ? formatTimeZone(value, referenceDate) : '');
183
183
  }
184
184
  setIsPopoverOpen(true);
185
- if (e.key === 'Enter') {
185
+ if (event.key === 'Enter') {
186
186
  // In UTC mode (utc or both), allow custom UTC input
187
187
  if ((mode === 'utc' || mode === 'both') &&
188
188
  inputValue.trim().toUpperCase().startsWith('UTC')) {
@@ -199,9 +199,9 @@ export const TimeZonePicker = (_a) => {
199
199
  }
200
200
  }
201
201
  }
202
- else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
203
- e.preventDefault();
204
- handleArrowNavigation(e.key);
202
+ else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
203
+ event.preventDefault();
204
+ handleArrowNavigation(event.key);
205
205
  }
206
206
  };
207
207
  /** Custom floating ui solution */
@@ -251,25 +251,25 @@ export const TimeZonePicker = (_a) => {
251
251
  width: isFluid === true ? '100%' : 'fit-content',
252
252
  }, children: [_jsxs("label", { className: "ndl-timezone-picker-label", children: [label !== undefined && (_jsx(Typography, { variant: size === 'large' ? 'body-large' : 'body-medium', children: label })), _jsxs("div", { className: "ndl-timezone-picker-input-wrapper", style: Object.assign({ width: inputWidth }, style), children: [_jsx("input", Object.assign({ role: "combobox", "aria-expanded": isPopoverOpen, "aria-controls": listboxId, "aria-activedescendant": isPopoverOpen && focusedIndex >= 0
253
253
  ? `${listboxId}-option-${focusedIndex}`
254
- : undefined, "aria-label": label, "aria-invalid": Boolean(errorToShow), "aria-describedby": errorToShow ? errorTextId : undefined, className: "ndl-timezone-picker-input", type: "text", ref: inputRef, value: inputValue, disabled: isDisabled, readOnly: isReadOnly, required: isRequired, onChange: handleInputChange, onKeyDown: handleKeyDown, onClick: (e) => {
254
+ : undefined, "aria-label": label, "aria-invalid": Boolean(errorToShow), "aria-describedby": errorToShow ? errorTextId : undefined, className: "ndl-timezone-picker-input", type: "text", ref: inputRef, value: inputValue, disabled: isDisabled, readOnly: isReadOnly, required: isRequired, onChange: handleInputChange, onKeyDown: handleKeyDown, onClick: (event) => {
255
255
  if (isReadOnly === true || isDisabled === true) {
256
256
  return;
257
257
  }
258
258
  setIsPopoverOpen(true);
259
259
  // Select all text on click for easy searching
260
- e.currentTarget.select();
261
- }, onFocus: (e) => {
260
+ event.currentTarget.select();
261
+ }, onFocus: (event) => {
262
262
  if (isReadOnly === true || isDisabled === true) {
263
263
  return;
264
264
  }
265
265
  // Select all text on focus for easy searching
266
- e.currentTarget.select();
267
- }, onBlur: (e) => {
266
+ event.currentTarget.select();
267
+ }, onBlur: (event) => {
268
268
  var _a;
269
269
  if (isReadOnly === true || isDisabled === true) {
270
270
  return;
271
271
  }
272
- if (((_a = e.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList.contains('ndl-timezone-picker-popover-item')) === true) {
272
+ if (((_a = event.relatedTarget) === null || _a === void 0 ? void 0 : _a.classList.contains('ndl-timezone-picker-popover-item')) === true) {
273
273
  return;
274
274
  }
275
275
  // In UTC mode (utc or both), try to parse custom input on blur
@@ -297,46 +297,46 @@ export const TimeZonePicker = (_a) => {
297
297
  ? 'Select or type UTC offset (e.g., UTC+5:30)'
298
298
  : 'Select timezone or type UTC offset' }, htmlAttributes, restProps)), _jsx(ChevronDownIcon, { className: "ndl-icon-svg ndl-timezone-picker-icon" })] })] }), errorToShow !== undefined && (_jsxs("div", { className: "ndl-timezone-picker-error-wrapper", role: "status", children: [_jsx(ExclamationCircleIconSolid, { className: "ndl-timezone-picker-error-icon" }), _jsx(Typography, { variant: size === 'large' ? 'body-medium' : 'body-small', className: "ndl-timezone-picker-error-text", htmlAttributes: { id: errorTextId }, children: errorToShow })] }))] })), context.open && (_jsx(ConditionalWrap, { shouldWrap: isPortaled, wrap: (wrapChildren) => (_jsx(FloatingPortal, { children: wrapChildren })), children: _jsx(FloatingFocusManager, { context: context, modal: false, initialFocus: -1, children: _jsx("div", Object.assign({ ref: refs.setFloating, className: classNames(themeClassName, 'ndl-timezone-picker-popover', Object.assign({}, classes)), style: Object.assign(Object.assign(Object.assign({}, transitionStyles), floatingStyles), { width: isFluid === true
299
299
  ? (_c = containerRef.current) === null || _c === void 0 ? void 0 : _c.clientWidth
300
- : undefined }) }, getFloatingProps(), { children: _jsx("ul", { ref: listRef, role: "listbox", id: listboxId, tabIndex: -1, children: mode === 'both' ? (_jsxs(_Fragment, { children: [utcOptions.length > 0 && (_jsxs(_Fragment, { children: [_jsx("li", { className: "ndl-timezone-picker-section-header", children: "UTC Offsets" }), utcOptions.map((option, i) => (_jsx("li", { id: `${listboxId}-option-${i}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (e) => {
301
- e.stopPropagation();
302
- e.preventDefault();
300
+ : undefined }) }, getFloatingProps(), { children: _jsx("ul", { ref: listRef, role: "listbox", id: listboxId, tabIndex: -1, children: mode === 'both' ? (_jsxs(_Fragment, { children: [utcOptions.length > 0 && (_jsxs(_Fragment, { children: [_jsx("li", { className: "ndl-timezone-picker-section-header", children: "UTC Offsets" }), utcOptions.map((option, index) => (_jsx("li", { id: `${listboxId}-option-${index}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (event) => {
301
+ event.stopPropagation();
302
+ event.preventDefault();
303
303
  handleOnClick(option.value);
304
304
  setIsPopoverOpen(false);
305
- }, onMouseDown: (e) => {
306
- e.stopPropagation();
307
- e.preventDefault();
308
- }, tabIndex: -1, className: classNames(focusedIndex === i ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (e) => {
309
- if (e.key === 'Enter') {
310
- e.stopPropagation();
305
+ }, onMouseDown: (event) => {
306
+ event.stopPropagation();
307
+ event.preventDefault();
308
+ }, tabIndex: -1, className: classNames(focusedIndex === index ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (event) => {
309
+ if (event.key === 'Enter') {
310
+ event.stopPropagation();
311
311
  handleOnClick(option.value);
312
312
  }
313
- }, children: option.label }, option.value)))] })), cityOptions.length > 0 && (_jsxs(_Fragment, { children: [_jsx("li", { className: "ndl-timezone-picker-section-header", children: "City-Based Timezones" }), cityOptions.map((option, i) => {
314
- const adjustedIndex = i + utcOptions.length;
315
- return (_jsx("li", { id: `${listboxId}-option-${adjustedIndex}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (e) => {
316
- e.stopPropagation();
317
- e.preventDefault();
313
+ }, children: option.label }, option.value)))] })), cityOptions.length > 0 && (_jsxs(_Fragment, { children: [_jsx("li", { className: "ndl-timezone-picker-section-header", children: "City-Based Timezones" }), cityOptions.map((option, index) => {
314
+ const adjustedIndex = index + utcOptions.length;
315
+ return (_jsx("li", { id: `${listboxId}-option-${adjustedIndex}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (event) => {
316
+ event.stopPropagation();
317
+ event.preventDefault();
318
318
  handleOnClick(option.value);
319
319
  setIsPopoverOpen(false);
320
- }, onMouseDown: (e) => {
321
- e.stopPropagation();
322
- e.preventDefault();
323
- }, tabIndex: -1, className: classNames(focusedIndex === adjustedIndex ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (e) => {
324
- if (e.key === 'Enter') {
325
- e.stopPropagation();
320
+ }, onMouseDown: (event) => {
321
+ event.stopPropagation();
322
+ event.preventDefault();
323
+ }, tabIndex: -1, className: classNames(focusedIndex === adjustedIndex ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (event) => {
324
+ if (event.key === 'Enter') {
325
+ event.stopPropagation();
326
326
  handleOnClick(option.value);
327
327
  }
328
328
  }, children: option.label }, option.value));
329
- })] })), utcOptions.length === 0 && cityOptions.length === 0 && (_jsx("li", { className: "ndl-timezone-picker-popover-item ndl-timezone-picker-no-results", children: "No timezones found" }))] })) : (_jsx(_Fragment, { children: filteredOptions.length > 0 ? (filteredOptions.map((option, i) => (_jsx("li", { id: `${listboxId}-option-${i}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (e) => {
330
- e.stopPropagation();
331
- e.preventDefault();
329
+ })] })), utcOptions.length === 0 && cityOptions.length === 0 && (_jsx("li", { className: "ndl-timezone-picker-popover-item ndl-timezone-picker-no-results", children: "No timezones found" }))] })) : (_jsx(_Fragment, { children: filteredOptions.length > 0 ? (filteredOptions.map((option, index) => (_jsx("li", { id: `${listboxId}-option-${index}`, role: "option", "aria-selected": value === option.value, value: option.value, onClick: (event) => {
330
+ event.stopPropagation();
331
+ event.preventDefault();
332
332
  handleOnClick(option.value);
333
333
  setIsPopoverOpen(false);
334
- }, onMouseDown: (e) => {
335
- e.stopPropagation();
336
- e.preventDefault();
337
- }, tabIndex: -1, className: classNames(focusedIndex === i ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (e) => {
338
- if (e.key === 'Enter') {
339
- e.stopPropagation();
334
+ }, onMouseDown: (event) => {
335
+ event.stopPropagation();
336
+ event.preventDefault();
337
+ }, tabIndex: -1, className: classNames(focusedIndex === index ? 'focused' : '', 'ndl-timezone-picker-popover-item'), onKeyDown: (event) => {
338
+ if (event.key === 'Enter') {
339
+ event.stopPropagation();
340
340
  handleOnClick(option.value);
341
341
  }
342
342
  }, children: option.label }, option.value)))) : (_jsx("li", { className: "ndl-timezone-picker-popover-item ndl-timezone-picker-no-results", children: "No timezones found" })) })) }) })) }) }))] }));