@mittwald/flow-react-components 1.6.0-next.5 → 1.6.0-next.50

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 (292) hide show
  1. package/AGENTS.md +132 -88
  2. package/USAGE.md +7 -2
  3. package/dist/assets/component-index.json +1 -1
  4. package/dist/assets/doc-properties.json +1 -1
  5. package/dist/css/all-layered.css +1 -1
  6. package/dist/css/all.css +1 -1
  7. package/dist/js/_virtual/_18.locale.mjs +14 -0
  8. package/dist/js/default.mjs +4 -3
  9. package/dist/js/flr-universal.mjs +2 -1
  10. package/dist/js/node_modules/.pnpm/{@lezer_lr@1.4.10 → @lezer_lr@1.4.11}/node_modules/@lezer/lr/dist/index.mjs +40 -28
  11. package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.11/node_modules/@lezer/lr/dist/index.mjs.map +1 -0
  12. package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs +3 -2
  13. package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs.map +1 -1
  14. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs +3 -2
  15. package/dist/js/packages/components/src/components/Accordion/Accordion.mjs.map +1 -1
  16. package/dist/js/packages/components/src/components/Action/models/ActionState.mjs +2 -2
  17. package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs +3 -3
  18. package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs.map +1 -1
  19. package/dist/js/packages/components/src/components/Activity/Activity.mjs +1 -1
  20. package/dist/js/packages/components/src/components/Activity/Activity.mjs.map +1 -1
  21. package/dist/js/packages/components/src/components/Alert/Alert.mjs +3 -2
  22. package/dist/js/packages/components/src/components/Alert/Alert.mjs.map +1 -1
  23. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs +1 -1
  24. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs.map +1 -1
  25. package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.module.mjs.map +1 -1
  26. package/dist/js/packages/components/src/components/Badge/Badge.mjs +2 -2
  27. package/dist/js/packages/components/src/components/Badge/Badge.mjs.map +1 -1
  28. package/dist/js/packages/components/src/components/Badge/Badge.module.mjs.map +1 -1
  29. package/dist/js/packages/components/src/components/Calendar/components/RangeCalendar/helpers/useCalendarDateRangePresets.mjs +1 -1
  30. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs +6 -8
  31. package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
  32. package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs +23 -5
  33. package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs.map +1 -1
  34. package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs +67 -0
  35. package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs.map +1 -0
  36. package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs +2 -2
  37. package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs.map +1 -1
  38. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs +3 -3
  39. package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs.map +1 -1
  40. package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs +41 -12
  41. package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs.map +1 -1
  42. package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs +29 -16
  43. package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs.map +1 -1
  44. package/dist/js/packages/components/src/components/CodeEditor/languages/dotEnv/dotEnv.mjs +1 -1
  45. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs +3 -2
  46. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
  47. package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs +5 -1
  48. package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs.map +1 -1
  49. package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs +2 -1
  50. package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
  51. package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs +2 -1
  52. package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
  53. package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs +40 -8
  54. package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs.map +1 -1
  55. package/dist/js/packages/components/src/components/DonutChart/DonutChart.mjs.map +1 -1
  56. package/dist/js/packages/components/src/components/Heading/Heading.mjs +2 -0
  57. package/dist/js/packages/components/src/components/Heading/Heading.mjs.map +1 -1
  58. package/dist/js/packages/components/src/components/Heading/Heading.module.mjs.map +1 -1
  59. package/dist/js/packages/components/src/components/Icon/Icon.module.mjs.map +1 -1
  60. package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs +3 -2
  61. package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
  62. package/dist/js/packages/components/src/components/Label/Label.mjs +0 -4
  63. package/dist/js/packages/components/src/components/Label/Label.mjs.map +1 -1
  64. package/dist/js/packages/components/src/components/Link/Link.mjs.map +1 -1
  65. package/dist/js/packages/components/src/components/List/List.mjs +27 -23
  66. package/dist/js/packages/components/src/components/List/List.mjs.map +1 -1
  67. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +5 -2
  68. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
  69. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +2 -2
  70. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -1
  71. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs +5 -3
  72. package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs.map +1 -1
  73. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs +101 -0
  74. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs.map +1 -0
  75. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs +13 -0
  76. package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs.map +1 -0
  77. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs +16 -9
  78. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs.map +1 -1
  79. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs +6 -2
  80. package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs.map +1 -1
  81. package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs +4 -2
  82. package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
  83. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +27 -1
  84. package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
  85. package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs +1 -1
  86. package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs.map +1 -1
  87. package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +1 -2
  88. package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
  89. package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs +3 -0
  90. package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs.map +1 -1
  91. package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs +46 -44
  92. package/dist/js/packages/components/src/components/List/components/ListItemView/ListItemView.mjs.map +1 -1
  93. package/dist/js/packages/components/src/components/List/components/ListItemView/components/ListItemViewContent/ListItemViewContent.mjs +25 -25
  94. package/dist/js/packages/components/src/components/List/components/ListItemView/components/ListItemViewContent/ListItemViewContent.mjs.map +1 -1
  95. package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs +5 -9
  96. package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs.map +1 -1
  97. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +29 -13
  98. package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
  99. package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs +31 -0
  100. package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs.map +1 -0
  101. package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs +21 -0
  102. package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs.map +1 -0
  103. package/dist/js/packages/components/src/components/List/hooks/useListSelector.mjs +18 -0
  104. package/dist/js/packages/components/src/components/List/hooks/useListSelector.mjs.map +1 -0
  105. package/dist/js/packages/components/src/components/List/listContext.mjs +32 -2
  106. package/dist/js/packages/components/src/components/List/listContext.mjs.map +1 -1
  107. package/dist/js/packages/components/src/components/List/model/List.mjs +1 -0
  108. package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
  109. package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +2 -2
  110. package/dist/js/packages/components/src/components/List/model/ReactTable.mjs +2 -2
  111. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs +15 -2
  112. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs.map +1 -1
  113. package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs +16 -0
  114. package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs.map +1 -0
  115. package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs +20 -7
  116. package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs.map +1 -1
  117. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs +2 -2
  118. package/dist/js/packages/components/src/components/List/model/table/Table.mjs +11 -1
  119. package/dist/js/packages/components/src/components/List/model/table/Table.mjs.map +1 -1
  120. package/dist/js/packages/components/src/components/List/model/table/TableBody.mjs +5 -1
  121. package/dist/js/packages/components/src/components/List/model/table/TableBody.mjs.map +1 -1
  122. package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs +1 -1
  123. package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs.map +1 -1
  124. package/dist/js/packages/components/src/components/List/model/table/TableColumn.mjs +4 -0
  125. package/dist/js/packages/components/src/components/List/model/table/TableColumn.mjs.map +1 -1
  126. package/dist/js/packages/components/src/components/List/model/table/TableHeader.mjs +8 -1
  127. package/dist/js/packages/components/src/components/List/model/table/TableHeader.mjs.map +1 -1
  128. package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs +28 -1
  129. package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs.map +1 -1
  130. package/dist/js/packages/components/src/components/Markdown/Markdown.mjs +25 -7
  131. package/dist/js/packages/components/src/components/Markdown/Markdown.mjs.map +1 -1
  132. package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs +1 -1
  133. package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs.map +1 -1
  134. package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs +8 -0
  135. package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs.map +1 -0
  136. package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs +32 -3
  137. package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs.map +1 -1
  138. package/dist/js/packages/components/src/components/MenuItem/MenuItem.module.mjs +1 -3
  139. package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs +1 -1
  140. package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs.map +1 -1
  141. package/dist/js/packages/components/src/components/Modal/Modal.mjs +9 -2
  142. package/dist/js/packages/components/src/components/Modal/Modal.mjs.map +1 -1
  143. package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs +1 -3
  144. package/dist/js/packages/components/src/components/NumberField/NumberField.mjs +2 -3
  145. package/dist/js/packages/components/src/components/NumberField/NumberField.mjs.map +1 -1
  146. package/dist/js/packages/components/src/components/Option/Option.module.mjs +1 -3
  147. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs +2 -1
  148. package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs.map +1 -1
  149. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs +3 -3
  150. package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
  151. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs +1 -1
  152. package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs.map +1 -1
  153. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs +4 -2
  154. package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs.map +1 -1
  155. package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.mjs.map +1 -1
  156. package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs +5 -4
  157. package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs.map +1 -1
  158. package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs +2 -3
  159. package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs.map +1 -1
  160. package/dist/js/packages/components/src/components/Rating/Rating.mjs +12 -11
  161. package/dist/js/packages/components/src/components/Rating/Rating.mjs.map +1 -1
  162. package/dist/js/packages/components/src/components/SearchField/SearchField.mjs +2 -3
  163. package/dist/js/packages/components/src/components/SearchField/SearchField.mjs.map +1 -1
  164. package/dist/js/packages/components/src/components/Section/Section.mjs +9 -5
  165. package/dist/js/packages/components/src/components/Section/Section.mjs.map +1 -1
  166. package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs +0 -4
  167. package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs.map +1 -1
  168. package/dist/js/packages/components/src/components/Section/context.mjs +47 -0
  169. package/dist/js/packages/components/src/components/Section/context.mjs.map +1 -0
  170. package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs +2 -3
  171. package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  172. package/dist/js/packages/components/src/components/Select/Select.mjs +2 -3
  173. package/dist/js/packages/components/src/components/Select/Select.mjs.map +1 -1
  174. package/dist/js/packages/components/src/components/Slider/Slider.mjs +47 -41
  175. package/dist/js/packages/components/src/components/Slider/Slider.mjs.map +1 -1
  176. package/dist/js/packages/components/src/components/Table/Table.mjs +3 -0
  177. package/dist/js/packages/components/src/components/Table/Table.mjs.map +1 -1
  178. package/dist/js/packages/components/src/components/Table/Table.module.mjs.map +1 -1
  179. package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs +5 -12
  180. package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs.map +1 -1
  181. package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs +4 -2
  182. package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs.map +1 -1
  183. package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs +7 -1
  184. package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs.map +1 -1
  185. package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs +14 -0
  186. package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs.map +1 -0
  187. package/dist/js/packages/components/src/components/Tabs/Tabs.mjs +6 -8
  188. package/dist/js/packages/components/src/components/Tabs/Tabs.mjs.map +1 -1
  189. package/dist/js/packages/components/src/components/Tabs/Tabs.module.mjs.map +1 -1
  190. package/dist/js/packages/components/src/components/Tabs/components/TabTitle/TabTitle.module.mjs.map +1 -1
  191. package/dist/js/packages/components/src/components/Text/Text.module.mjs.map +1 -1
  192. package/dist/js/packages/components/src/components/TextField/TextField.mjs +11 -8
  193. package/dist/js/packages/components/src/components/TextField/TextField.mjs.map +1 -1
  194. package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs +15 -2
  195. package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs.map +1 -1
  196. package/dist/js/packages/components/src/components/Wrap/Wrap.mjs.map +1 -1
  197. package/dist/js/packages/components/src/integrations/react-hook-form/components/Field/Field.mjs +1 -1
  198. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs +4 -1
  199. package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
  200. package/dist/js/packages/components/src/integrations/react-hook-form/components/FormRootError/FormRootError.mjs +1 -1
  201. package/dist/js/packages/components/src/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.mjs.map +1 -1
  202. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs +10 -158
  203. package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
  204. package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs +1 -0
  205. package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs.map +1 -1
  206. package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs +8 -4
  207. package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs.map +1 -1
  208. package/dist/js/packages/components/src/lib/object/isPlainObjectDeepEqual.mjs +29 -0
  209. package/dist/js/packages/components/src/lib/object/isPlainObjectDeepEqual.mjs.map +1 -0
  210. package/dist/js/packages/components/src/lib/propsContext/components/ClearPropsContext.mjs +2 -1
  211. package/dist/js/packages/components/src/lib/propsContext/components/ClearPropsContext.mjs.map +1 -1
  212. package/dist/js/packages/components/src/lib/propsContext/components/PropsContextProvider.mjs +14 -3
  213. package/dist/js/packages/components/src/lib/propsContext/components/PropsContextProvider.mjs.map +1 -1
  214. package/dist/js/packages/components/src/lib/slotContext/SlotContextProvider.mjs +9 -4
  215. package/dist/js/packages/components/src/lib/slotContext/SlotContextProvider.mjs.map +1 -1
  216. package/dist/js/packages/components/src/views/DatePickerView.mjs +16 -0
  217. package/dist/js/packages/components/src/views/DatePickerView.mjs.map +1 -0
  218. package/dist/js/packages/components/src/views/LabelView.mjs +16 -0
  219. package/dist/js/packages/components/src/views/LabelView.mjs.map +1 -0
  220. package/dist/js/packages/components/src/views/TimeFieldView.mjs +16 -0
  221. package/dist/js/packages/components/src/views/TimeFieldView.mjs.map +1 -0
  222. package/dist/js/packages/components-base/src/index.mjs +5 -2
  223. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs +1 -0
  224. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs.map +1 -1
  225. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs +4 -1
  226. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs.map +1 -1
  227. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs +37 -13
  228. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs.map +1 -1
  229. package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs +55 -0
  230. package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs.map +1 -0
  231. package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs +27 -0
  232. package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs.map +1 -0
  233. package/dist/js/packages/components-base/src/list/loading/ListLoaderState.mjs +10 -5
  234. package/dist/js/packages/components-base/src/list/loading/ListLoaderState.mjs.map +1 -1
  235. package/dist/js/packages/components-base/src/overlay/OverlayState.mjs +196 -0
  236. package/dist/js/packages/components-base/src/overlay/OverlayState.mjs.map +1 -0
  237. package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs +1 -1
  238. package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs.map +1 -1
  239. package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs +1 -1
  240. package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs.map +1 -1
  241. package/dist/types/_bundled/flow-components-base/index.d.ts +4 -1
  242. package/dist/types/_bundled/flow-components-base/list/filter/ListFilter.d.ts +2 -0
  243. package/dist/types/_bundled/flow-components-base/list/filter/dateRange.d.ts +24 -1
  244. package/dist/types/_bundled/flow-components-base/list/filter/dateTimeRangeFields.d.ts +34 -0
  245. package/dist/types/_bundled/flow-components-base/list/filter/formatDateRange.d.ts +7 -0
  246. package/dist/types/_bundled/flow-components-base/list/loading/ListLoaderState.d.ts +5 -0
  247. package/dist/types/_bundled/flow-components-base/overlay/OverlayState.d.ts +94 -0
  248. package/dist/types/components/AlertBadge/AlertBadge.d.ts +2 -2
  249. package/dist/types/components/Badge/Badge.d.ts +2 -2
  250. package/dist/types/components/CartesianChart/hooks/useTickLabelWidth.d.ts +1 -0
  251. package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
  252. package/dist/types/components/DonutChart/DonutChart.d.ts +1 -4
  253. package/dist/types/components/Link/Link.d.ts +1 -1
  254. package/dist/types/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.d.ts +8 -0
  255. package/dist/types/components/List/components/Items/components/Item/Item.d.ts +2 -0
  256. package/dist/types/components/List/components/Items/components/Item/hooks/useGridItemProps.d.ts +1 -0
  257. package/dist/types/components/List/components/ListSummary/ListSummary.d.ts +3 -2
  258. package/dist/types/components/List/components/Table/components/Row.d.ts +13 -0
  259. package/dist/types/components/List/hooks/useLatestOnAction.d.ts +7 -0
  260. package/dist/types/components/List/hooks/useListSelector.d.ts +6 -0
  261. package/dist/types/components/List/index.d.ts +2 -0
  262. package/dist/types/components/List/listContext.d.ts +16 -0
  263. package/dist/types/components/List/model/filter/DateRangeFilter.d.ts +15 -8
  264. package/dist/types/components/List/model/filter/resolveDateRangeFilterValue.d.ts +11 -0
  265. package/dist/types/components/List/model/filter/types.d.ts +23 -1
  266. package/dist/types/components/List/model/item/ItemView.d.ts +34 -11
  267. package/dist/types/components/List/model/table/Table.d.ts +7 -0
  268. package/dist/types/components/List/model/table/TableBody.d.ts +1 -0
  269. package/dist/types/components/List/model/table/TableColumn.d.ts +1 -0
  270. package/dist/types/components/List/model/table/TableHeader.d.ts +1 -0
  271. package/dist/types/components/List/model/table/TableRow.d.ts +14 -0
  272. package/dist/types/components/List/model/table/types.d.ts +17 -1
  273. package/dist/types/components/List/typedList.d.ts +1 -0
  274. package/dist/types/components/Markdown/lib/isExternalHref.d.ts +1 -0
  275. package/dist/types/components/ProgressBar/ProgressBar.d.ts +1 -4
  276. package/dist/types/components/Rating/Rating.d.ts +5 -5
  277. package/dist/types/components/Section/context.d.ts +28 -0
  278. package/dist/types/components/Table/components/TableCell/TableCell.d.ts +4 -1
  279. package/dist/types/components/Table/components/TableHeader/context.d.ts +6 -0
  280. package/dist/types/components/Wrap/Wrap.d.ts +5 -0
  281. package/dist/types/index/flr-universal.d.ts +1 -1
  282. package/dist/types/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.d.ts +7 -1
  283. package/dist/types/lib/controller/overlay/OverlayController.d.ts +8 -74
  284. package/dist/types/lib/dev/hydrateServerMarkup.d.ts +2 -0
  285. package/dist/types/lib/hooks/dom/useVirtualKeyboardVisible.d.ts +4 -1
  286. package/dist/types/lib/object/isPlainObjectDeepEqual.d.ts +8 -0
  287. package/package.json +12 -12
  288. package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.mjs.map +0 -1
  289. package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs +0 -10
  290. package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs.map +0 -1
  291. package/dist/types/lib/date/transformDateValueToDateTime.d.ts +0 -3
  292. package/dist/types/lib/date/transformDateValueToFormattedDate.d.ts +0 -2
@@ -2,7 +2,9 @@ export { ActionState, actionStateDurations, type ActionStateValue, } from "./act
2
2
  export { toArray, type ItemType } from "./lib/array";
3
3
  export { ListFilter } from "./list/filter/ListFilter";
4
4
  export { ListDateRangeFilter } from "./list/filter/ListDateRangeFilter";
5
- export { applyDateRangeColumnDef, dateRangeFilterFn, isListDateRange, type ListDateParts, type ListDateRange, } from "./list/filter/dateRange";
5
+ export { applyDateRangeColumnDef, dateRangeFilterFn, isListDateRange, listDateToDateTime, resolveListDateRange, type ListDateParts, type ListDateRange, } from "./list/filter/dateRange";
6
+ export { formatListDateRange, type ListDateRangeTextFormat, } from "./list/filter/formatDateRange";
7
+ export { getListDateTimeRangeUpdate, isListDateTimeRangeEndBeforeStart, isListDateValid, listDateTimeRangeFieldsFromValue, toListCalendarDate, toListTime, type ListDateTimeRange, type ListDateTimeRangeFields, type ListDateTimeRangeLimits, } from "./list/filter/dateTimeRangeFields";
6
8
  export { ListFilterValue } from "./list/filter/ListFilterValue";
7
9
  export type { FilterMatcher, FilterMode, FilterUpdatedCallback, ListFilterShape, } from "./list/filter/types";
8
10
  export { getListColumn, type ListModelContext } from "./list/ListModelContext";
@@ -21,3 +23,4 @@ export type { ListSortingShape, SortingDefaultMode, SortingFn, } from "./list/so
21
23
  export { ListViewMode } from "./list/viewMode/ListViewMode";
22
24
  export type { ListViewModeOptions, ListViewModeValue, } from "./list/viewMode/types";
23
25
  export { customPropertyPrefix, type CustomPropertyName, type PropertyName, type PropertyValue, type PropertyValueRenderMethod, } from "./list/types";
26
+ export { OverlayState, type AnyOverlayOpenStateHandler, type DisposerFn, type OverlayCloseHandler, type OverlayCloseOptions, type OverlayOpenHandler, type OverlayOpenStateHandler, type OverlayStateOptions, } from "./overlay/OverlayState";
@@ -83,6 +83,8 @@ export declare class ListFilter<T = never, TProp extends PropertyName<T> = never
83
83
  isActive(): boolean;
84
84
  deactivateValue(value: ListFilterValue<TRendered>): void;
85
85
  private callOnChangedHandlers;
86
+ /** Tells the listeners — the list resetting its batches among them. */
87
+ protected notifyFilterUpdated(values: unknown[]): void;
86
88
  hasChanges(): boolean;
87
89
  isStoringAvailable(): boolean;
88
90
  resetValues(): void;
@@ -1,9 +1,16 @@
1
1
  import type { ColumnDef, Row } from "@tanstack/table-core";
2
- /** A calendar date, in whichever shape it reached the filter. */
2
+ import { DateTime } from "luxon";
3
+ /**
4
+ * A calendar date, in whichever shape it reached the filter — with a time of
5
+ * day when the filter narrows down by minute.
6
+ */
3
7
  export interface ListDateParts {
4
8
  readonly year: number;
5
9
  readonly month: number;
6
10
  readonly day: number;
11
+ readonly hour?: number;
12
+ readonly minute?: number;
13
+ readonly second?: number;
7
14
  }
8
15
  export interface ListDateRange {
9
16
  readonly start?: ListDateParts;
@@ -11,6 +18,22 @@ export interface ListDateRange {
11
18
  }
12
19
  /** A range needs both ends present to be one, even if either may be unset. */
13
20
  export declare const isListDateRange: (value: unknown) => value is ListDateRange;
21
+ /**
22
+ * The date as a local point in time. A `ZonedDateTime` is the instant it names;
23
+ * anything else is read field by field, since after crossing the remote
24
+ * boundary a `CalendarDate` is a plain object.
25
+ */
26
+ export declare const listDateToDateTime: (date: ListDateParts) => DateTime;
27
+ /**
28
+ * Resolves a range to the instants it spans, for filtering on the server side.
29
+ * Both bounds are inclusive: a date covers its whole day and a date with time
30
+ * its whole minute, in the user's local time zone. A missing side has no
31
+ * bound.
32
+ */
33
+ export declare const resolveListDateRange: (range: ListDateRange) => {
34
+ start?: Date;
35
+ end?: Date;
36
+ };
14
37
  /**
15
38
  * Whether a row's date falls inside the selected range.
16
39
  *
@@ -0,0 +1,34 @@
1
+ import { CalendarDate, type CalendarDateTime, Time } from "@internationalized/date";
2
+ import { type ListDateParts, type ListDateRange } from "./dateRange";
3
+ export interface ListDateTimeRangeFields {
4
+ readonly startDate: CalendarDate | null;
5
+ readonly startTime: Time | null;
6
+ readonly endDate: CalendarDate | null;
7
+ readonly endTime: Time | null;
8
+ }
9
+ export interface ListDateTimeRangeLimits {
10
+ readonly minValue?: ListDateParts | null;
11
+ readonly maxValue?: ListDateParts | null;
12
+ readonly isDateUnavailable?: (date: CalendarDate) => boolean;
13
+ }
14
+ type Bound = CalendarDate | CalendarDateTime;
15
+ export interface ListDateTimeRange {
16
+ readonly start?: Bound;
17
+ readonly end?: Bound;
18
+ }
19
+ export declare const toListCalendarDate: (value?: ListDateParts | null) => CalendarDate | null;
20
+ export declare const toListTime: (value?: {
21
+ readonly hour?: number;
22
+ readonly minute?: number;
23
+ } | null) => Time | null;
24
+ export declare const listDateTimeRangeFieldsFromValue: (value: ListDateRange | null) => ListDateTimeRangeFields;
25
+ /** Not while a year is still being typed: "2" would read as an early end. */
26
+ export declare const isListDateTimeRangeEndBeforeStart: (fields: ListDateTimeRangeFields) => boolean;
27
+ export declare const isListDateValid: (date: CalendarDate | null, limits?: ListDateTimeRangeLimits) => boolean;
28
+ /**
29
+ * The range the fields stand for, or `undefined` while it must not be applied:
30
+ * an invalid input keeps the last valid range, and an unchanged one needs no
31
+ * update. `null` clears the filter.
32
+ */
33
+ export declare const getListDateTimeRangeUpdate: (fields: ListDateTimeRangeFields, applied: ListDateRange | null, limits?: ListDateTimeRangeLimits) => ListDateTimeRange | null | undefined;
34
+ export {};
@@ -0,0 +1,7 @@
1
+ import { type ListDateRange } from "./dateRange";
2
+ /** Formats the text of an open range ("from {date}", "until {date}"). */
3
+ export type ListDateRangeTextFormat = (key: "dateRange.from" | "dateRange.until", values: {
4
+ date: string;
5
+ }) => string;
6
+ /** The active filter chip's text: an end with time shows its time. */
7
+ export declare const formatListDateRange: (value: ListDateRange, locale: string, format: ListDateRangeTextFormat) => string;
@@ -32,6 +32,11 @@ export declare class ListLoaderState<T> {
32
32
  private readonly getItemId?;
33
33
  constructor(options?: ListLoaderStateOptions<T>);
34
34
  reset(): void;
35
+ /**
36
+ * Keeps the current batch when `data` holds the same items in the same order.
37
+ * A loader that builds a new array on every fetch — a refetch whose items its
38
+ * data layer reuses — would otherwise re-render the whole list for nothing.
39
+ */
35
40
  setDataBatch(index: number, data: ListData<T>): void;
36
41
  setBatchLoadingState(index: number, state: BatchLoadingState): void;
37
42
  setMetadata(metadata?: unknown): void;
@@ -0,0 +1,94 @@
1
+ export type OverlayOpenHandler = () => unknown;
2
+ export type OverlayCloseHandler = () => unknown;
3
+ export type OverlayOpenStateHandler = (isOpen: boolean) => unknown;
4
+ export type AnyOverlayOpenStateHandler = OverlayOpenHandler | OverlayCloseHandler | OverlayOpenStateHandler;
5
+ export type DisposerFn = () => void;
6
+ export interface OverlayCloseOptions {
7
+ /** Close without asking, even when the overlay requires confirmation. */
8
+ bypassConfirmation?: boolean;
9
+ }
10
+ export interface OverlayStateOptions {
11
+ isDefaultOpen?: boolean;
12
+ /**
13
+ * Whether closing the overlay must be confirmed while no source has an
14
+ * opinion (`setConfirmOnCloseSource`).
15
+ */
16
+ confirmOnClose?: boolean;
17
+ }
18
+ /**
19
+ * Whether an overlay is open, and whether closing it has to be confirmed first.
20
+ * Each binding adds its subscription and its lifecycle: React's
21
+ * `OverlayController` subclasses it, Vue's adapter wraps it in refs.
22
+ *
23
+ * `TCloseOptions` lets a binding pass more on a close than the state reads —
24
+ * React's `overlay`, resolved by `Action` before the close arrives here.
25
+ */
26
+ export declare class OverlayState<TCloseOptions extends OverlayCloseOptions = OverlayCloseOptions> {
27
+ isOpen: boolean;
28
+ isContentSuspended: boolean;
29
+ private onOpenHandlers;
30
+ private onCloseHandlers;
31
+ private onOpenChangeHandlers;
32
+ showConfirmationModal: boolean;
33
+ closeIsConfirmed: boolean;
34
+ private readonly confirmOnCloseFromOptions;
35
+ /**
36
+ * Every mounted component that has an opinion on close confirmation
37
+ * contributes one entry here – e.g. a `Modal` with a `confirmOnClose` prop
38
+ * and a `Form` tracking its dirty state. Combining them instead of assigning
39
+ * a single flag keeps them from overwriting each other.
40
+ */
41
+ private confirmOnCloseSources;
42
+ /**
43
+ * Active grants that allow closing without a confirmation. Each entry is
44
+ * scoped to an ongoing operation that legitimately closes the overlay – e.g.
45
+ * a `Form` submit – and is dropped again when that operation has finished, so
46
+ * an operation that does _not_ close the overlay leaves the confirmation
47
+ * armed.
48
+ */
49
+ private closeWithoutConfirmationGrants;
50
+ /**
51
+ * The open state a `setOpen` call is currently applying. Handlers run before
52
+ * `isOpen` is assigned, so a handler that calls `setOpen` again would not be
53
+ * caught by the equality check at the top and would recurse.
54
+ */
55
+ private openStateInFlight;
56
+ constructor(options?: OverlayStateOptions);
57
+ /** Whether closing this overlay currently requires a confirmation. */
58
+ get confirmOnCloseEnabled(): boolean;
59
+ private withdrawUnneededConfirmation;
60
+ private addOpenStateHandler;
61
+ private executeHandlers;
62
+ private executeOnClose;
63
+ private executeOnOpen;
64
+ private executeOnOpenChange;
65
+ addOnClose(handler: OverlayCloseHandler): DisposerFn;
66
+ addOnOpen(handler: OverlayOpenHandler): DisposerFn;
67
+ addOnOpenChange(handler: OverlayOpenStateHandler): DisposerFn;
68
+ open(): void;
69
+ close(options?: TCloseOptions): void;
70
+ toggle(): void;
71
+ setOpen(toOpen: boolean, options?: TCloseOptions): void;
72
+ /**
73
+ * Sets the open state without running any handler. Use it to mirror a
74
+ * controlled `isOpen` prop, whose change comes from the consumer – notifying
75
+ * them of their own state would echo it back. Closing this way drops a
76
+ * pending close confirmation as well.
77
+ */
78
+ syncOpen(toOpen: boolean): void;
79
+ /** A closed overlay has no close left to confirm. */
80
+ private assignOpenState;
81
+ private applyOpenState;
82
+ setIsContentSuspended(to: boolean): void;
83
+ /**
84
+ * Allows closing this overlay without a confirmation until the returned
85
+ * disposer is called. Use it around an operation that may legitimately close
86
+ * the overlay – e.g. a `Form` submit, where a "discard unsaved changes?"
87
+ * prompt would be nonsense – and dispose it as soon as that operation has
88
+ * finished. An operation that ends without closing the overlay therefore
89
+ * leaves the confirmation armed (#2775).
90
+ */
91
+ grantCloseWithoutConfirmation(): DisposerFn;
92
+ confirmClose(): void;
93
+ cancelConfirmation(): void;
94
+ }
@@ -1,8 +1,8 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { PropsWithStatus, PropsWithClassName } from '../../lib/types/props';
3
3
  import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
4
- export interface AlertBadgeProps extends PropsWithChildren, PropsWithStatus, FlowComponentProps, PropsWithClassName {
4
+ export interface AlertBadgeProps extends PropsWithChildren, PropsWithStatus, FlowComponentProps<HTMLSpanElement>, PropsWithClassName {
5
5
  }
6
6
  /** @flr-generate all */
7
- export declare const AlertBadge: import('react').FunctionComponent<AlertBadgeProps & import('react').RefAttributes<HTMLDivElement>>;
7
+ export declare const AlertBadge: import('react').FunctionComponent<AlertBadgeProps & import('react').RefAttributes<HTMLSpanElement>>;
8
8
  export default AlertBadge;
@@ -4,7 +4,7 @@ import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
4
4
  import { PressEvent } from '@react-types/shared';
5
5
  export declare const badgeColors: readonly ["neutral", "blue", "navy", "violet", "teal", "lilac", "green", "orange", "red", "dark", "light", "dark-static", "light-static"];
6
6
  export type BadgeColors = (typeof badgeColors)[number];
7
- export interface BadgeProps extends PropsWithChildren, FlowComponentProps, PropsWithClassName {
7
+ export interface BadgeProps extends PropsWithChildren, FlowComponentProps<HTMLSpanElement>, PropsWithClassName {
8
8
  /** Handler that is called when the badge is pressed. */
9
9
  onPress?: (e: PressEvent) => void;
10
10
  /** Handler that is called when the badges close icon is pressed. */
@@ -15,5 +15,5 @@ export interface BadgeProps extends PropsWithChildren, FlowComponentProps, Props
15
15
  isDisabled?: boolean;
16
16
  }
17
17
  /** @flr-generate all */
18
- export declare const Badge: import('react').FunctionComponent<BadgeProps & import('react').RefAttributes<HTMLDivElement>>;
18
+ export declare const Badge: import('react').FunctionComponent<BadgeProps & import('react').RefAttributes<HTMLSpanElement>>;
19
19
  export default Badge;
@@ -8,7 +8,7 @@ export interface CodeBlockProps extends PropsWithClassName, PropsWithChildren, P
8
8
  * Controls truncation of long code blocks. `false` disables it, `true`
9
9
  * truncates after 8 lines, and a number sets the maximum line count.
10
10
  *
11
- * @default: false
11
+ * @default false
12
12
  */
13
13
  truncateLines?: boolean | number;
14
14
  }
@@ -15,10 +15,7 @@ export interface DonutChartProps extends Omit<Aria.ProgressBarProps, "children"
15
15
  size?: "m" | "l";
16
16
  /** Divides the fill of the donut chart into segments */
17
17
  segments?: DonutChartSegment[];
18
- /**
19
- * Whether the legend component is shown when segments are used. @default:
20
- * true
21
- */
18
+ /** Whether the legend component is shown when segments are used. @default true */
22
19
  showLegend?: boolean;
23
20
  /** The position of the legend. @default "right" */
24
21
  legendPosition?: "top" | "left" | "bottom" | "right";
@@ -2,7 +2,7 @@ import { ComponentProps, ComponentType, CSSProperties, PropsWithChildren } from
2
2
  import { FlowComponentProps } from '../../lib/componentFactory/flowComponent';
3
3
  import { AlphaColor, PropsWithClassName } from '../../lib/types/props';
4
4
  import * as Aria from "react-aria-components";
5
- export interface LinkProps extends PropsWithChildren<Omit<Aria.LinkProps, "children" | "slot" | "className">>, FlowComponentProps<HTMLAnchorElement>, PropsWithClassName {
5
+ export interface LinkProps extends PropsWithChildren<Omit<Aria.LinkProps, "children" | "slot" | "className" | "aria-current">>, FlowComponentProps<HTMLAnchorElement>, PropsWithClassName {
6
6
  /** Whether the link should be styled for being displayed inside a text. */
7
7
  inline?: boolean;
8
8
  /** An alternative link component. */
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { AnyDateRangeFilter } from '../../../../model/filter/types';
3
+ interface Props {
4
+ filter: AnyDateRangeFilter;
5
+ className?: string;
6
+ }
7
+ export declare const DateTimeRangeFields: FC<Props>;
8
+ export default DateTimeRangeFields;
@@ -7,6 +7,8 @@ interface Props extends PropsWithChildren {
7
7
  triggerRef?: Ref<HTMLDivElement>;
8
8
  list: ListModel<never>;
9
9
  isTile: boolean;
10
+ /** Stable invoker of the list's latest `onAction` */
11
+ onAction?: (data: never) => void;
10
12
  }
11
13
  export declare const Item: import('react').MemoExoticComponent<(props: Props) => import('react').JSX.Element | null>;
12
14
  interface ItemContainerProps extends PropsWithChildren {
@@ -2,6 +2,7 @@ import { PropsWithChildren } from 'react';
2
2
  import { default as List } from '../../../../../model/List';
3
3
  interface P extends PropsWithChildren {
4
4
  data: never;
5
+ onAction?: (data: never) => void;
5
6
  }
6
7
  export declare const useGridItemProps: (props: P, list: List<never>) => {
7
8
  gridItemProps: {
@@ -1,7 +1,8 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { FlowComponentProps } from '../../../../lib/componentFactory/flowComponent';
3
- export interface ListSummaryProps extends FlowComponentProps, PropsWithChildren {
4
- /** Whether the summary is placed above or underneath the list @default: "top" */
3
+ import { PropsWithClassName } from '../../../../lib/types/props';
4
+ export interface ListSummaryProps extends PropsWithClassName, FlowComponentProps, PropsWithChildren {
5
+ /** Whether the summary is placed above or underneath the list @default "top" */
5
6
  position?: "top" | "bottom";
6
7
  }
7
8
  /** @flr-generate all */
@@ -0,0 +1,13 @@
1
+ import { Ref } from 'react';
2
+ import { Key } from 'react-aria-components';
3
+ import { default as ListModel } from '../../../model/List';
4
+ interface Props {
5
+ id: Key;
6
+ data: never;
7
+ list: ListModel<never>;
8
+ /** Stable invoker of the list's latest `onAction` */
9
+ onAction?: (data: never) => void;
10
+ triggerRef?: Ref<HTMLTableRowElement>;
11
+ }
12
+ export declare const Row: import('react').MemoExoticComponent<(props: Props) => import('react').JSX.Element | null>;
13
+ export default Row;
@@ -0,0 +1,7 @@
1
+ import { default as List } from '../model/List';
2
+ /**
3
+ * A stable invoker of the list's latest `onAction`, or `undefined` without one.
4
+ * An event handler only ever needs to be the latest one, so items and rows do
5
+ * not re-render for an inline `onAction`.
6
+ */
7
+ export declare const useLatestOnAction: (list: List<never>) => ((data: never) => void | undefined) | undefined;
@@ -0,0 +1,6 @@
1
+ import { default as List } from '../model/List';
2
+ /**
3
+ * A value read from the list model, re-rendering only when it changes. The
4
+ * selector has to return a primitive or a value that keeps its identity.
5
+ */
6
+ export declare const useListSelector: <R, T = never>(selector: (list: List<T>) => R) => R;
@@ -1,6 +1,8 @@
1
1
  export type { RenderItemFn } from './model/item/types';
2
2
  export type { AsyncDataLoader, AsyncResourceFactory, DataLoaderOptions, DataLoaderResult, } from './model/loading/types';
3
3
  export type { SortingFn } from './model/sorting/types';
4
+ export type { DateRangeFilterOptions, DateRangeFilterValue, } from './model/filter/types';
5
+ export { resolveDateRangeFilterValue } from './model/filter/resolveDateRangeFilterValue';
4
6
  export { SortingFunctions } from './model/sorting/SortingFunctions';
5
7
  export * from './components/Items/views/GridList';
6
8
  export * from './components/Items/views/GridListItem';
@@ -3,4 +3,20 @@ interface ListContext {
3
3
  list: List<never>;
4
4
  }
5
5
  export declare const listContext: import('react').Context<ListContext>;
6
+ /**
7
+ * Hands the committed list model to `useListSelector` without changing the
8
+ * context value. The model is rebuilt on every render of `List`; read from
9
+ * `listContext`, it re-renders every consumer, including the ones inside items
10
+ * that skip their own render. A selector re-renders only when the value it
11
+ * reads changes.
12
+ */
13
+ export declare class ListContextStore {
14
+ private list;
15
+ private readonly listeners;
16
+ constructor(list: List<never>);
17
+ static useNew(list: List<never>): ListContextStore;
18
+ readonly getList: () => List<never>;
19
+ readonly subscribe: (listener: () => void) => (() => void);
20
+ }
21
+ export declare const listStoreContext: import('react').Context<ListContextStore>;
6
22
  export {};
@@ -1,9 +1,7 @@
1
1
  import { ListDateRangeFilter, ListModelContext } from '../../../../_bundled/flow-components-base/index';
2
- import { FilterShape } from './types';
2
+ import { DateRangeFilterOptions, DateRangeFilterValue, FilterShape } from './types';
3
3
  import { PropertyName } from '../types';
4
4
  import { RangeCalendarProps } from '../../../Calendar';
5
- import { DateValue } from '@internationalized/date';
6
- import { DateRange, RangeValue } from 'react-aria-components';
7
5
  import { ReactNode } from 'react';
8
6
  import { List } from '../List';
9
7
  import { FilterValue } from './FilterValue';
@@ -12,14 +10,23 @@ import { FilterValue } from './FilterValue';
12
10
  *
13
11
  * The column, the comparison and the stored value are `ListDateRangeFilter` in
14
12
  * `@mittwald/flow-components-base`, so the Vue binding filters the same dates
15
- * the same way. What is left here is the calendar's own options, which are
16
- * Flow's `RangeCalendar` props.
13
+ * the same way. What is left here are the options of the fields that pick the
14
+ * range: Flow's `RangeCalendar` props, or with `granularity: "minute"` those of
15
+ * the date and time fields.
17
16
  */
18
17
  export declare class DateRangeFilter<T = never, TProp extends PropertyName<T> = never> extends ListDateRangeFilter<T, TProp, ReactNode> {
19
- readonly dateRangeOptions?: RangeCalendarProps;
18
+ readonly dateRangeOptions?: DateRangeFilterOptions;
20
19
  constructor(context: ListModelContext<T>, shape: FilterShape<T, TProp, never>);
21
- getValue(): DateRange | null;
22
- setValue(range: RangeValue<DateValue> | null): void;
20
+ get granularity(): "day" | "minute";
21
+ get rangeCalendarProps(): RangeCalendarProps;
22
+ get dateTimeRangeOptions(): {
23
+ granularity: "minute";
24
+ minValue?: import('@internationalized/date').DateValue | null;
25
+ maxValue?: import('@internationalized/date').DateValue | null;
26
+ isDateUnavailable?: (date: import('@internationalized/date').DateValue) => boolean;
27
+ } | undefined;
28
+ getValue(): DateRangeFilterValue | null;
29
+ setValue(range: DateRangeFilterValue | null): void;
23
30
  /** The list this filter belongs to — `context`, typed as React's `List`. */
24
31
  get list(): List<T>;
25
32
  get values(): FilterValue[];
@@ -0,0 +1,11 @@
1
+ import { DateRangeFilterValue } from './types';
2
+ /**
3
+ * Resolves the value of a date range filter to the instants it spans, for
4
+ * filtering on the server side. Both bounds are inclusive: a date covers its
5
+ * whole day and a date with time its whole minute, in the user's local time
6
+ * zone. A missing side has no bound.
7
+ */
8
+ export declare const resolveDateRangeFilterValue: (range: DateRangeFilterValue) => {
9
+ start?: Date;
10
+ end?: Date;
11
+ };
@@ -3,8 +3,30 @@ import { PropertyName } from '../types';
3
3
  import { RangeCalendarProps } from '../../../Calendar';
4
4
  import { ListFilterShape } from '../../../../_bundled/flow-components-base/index';
5
5
  import { ReactNode } from 'react';
6
+ import { DateValue } from '@internationalized/date';
6
7
  export type { FilterMatcher, FilterMode, FilterUpdatedCallback, } from '../../../../_bundled/flow-components-base/index';
7
8
  export interface FilterShape<T, TProp extends PropertyName<T>, TMatcherValue> extends ListFilterShape<T, TProp, TMatcherValue, ReactNode> {
8
- dateRangeOptions?: RangeCalendarProps;
9
+ dateRangeOptions?: DateRangeFilterOptions;
10
+ }
11
+ export type DateRangeFilterOptions = ({
12
+ /**
13
+ * Whether the filter narrows down by date only, or by date and time.
14
+ *
15
+ * @default "day"
16
+ */
17
+ granularity?: "day";
18
+ } & RangeCalendarProps) | {
19
+ granularity: "minute";
20
+ minValue?: DateValue | null;
21
+ maxValue?: DateValue | null;
22
+ isDateUnavailable?: (date: DateValue) => boolean;
23
+ };
24
+ /**
25
+ * A date covers its whole day, a date with time its whole minute. A missing
26
+ * side has no bound.
27
+ */
28
+ export interface DateRangeFilterValue {
29
+ start?: DateValue;
30
+ end?: DateValue;
9
31
  }
10
32
  export type AnyDateRangeFilter = DateRangeFilter | DateRangeFilter<any, any>;
@@ -2,7 +2,15 @@ import { DependencyList, HTMLAttributeAnchorTarget, ReactElement, ReactNode } fr
2
2
  import { RenderItemFn } from './types';
3
3
  import { default as List } from '../List';
4
4
  export interface ItemViewShape<T> {
5
+ /**
6
+ * Runs on every render of the list to tell whether the item changed, so it
7
+ * should be cheap and pure.
8
+ */
5
9
  textValue?: (data: T) => string;
10
+ /**
11
+ * Runs on every render of the list to tell whether the item changed, so it
12
+ * should be cheap and pure.
13
+ */
6
14
  href?: (data: T) => string;
7
15
  target?: HTMLAttributeAnchorTarget;
8
16
  defaultExpanded?: (data: T) => boolean;
@@ -14,14 +22,23 @@ export interface ItemViewShape<T> {
14
22
  showTiles?: boolean;
15
23
  tileMaxWidth?: number;
16
24
  /**
17
- * Values this item's content depends on besides its own data.
25
+ * Everything the render function reads besides the item's data.
18
26
  *
19
- * An item re-renders when its data changes, or when one of the render
20
- * functions on its `List.Item` changes identity — which a function written
21
- * inline in JSX does on every render of its parent. A render function with a
22
- * stable identity (hoisted out of the component, wrapped in `useCallback`, or
23
- * reading from an external store) has to list what it reads here, or the item
24
- * keeps the values it first saw.
27
+ * With `renderDependencies`, an item re-renders only when its data or one of
28
+ * these values changes. The render function's identity no longer counts, so a
29
+ * function written inline in JSX keeps the item from re-rendering on every
30
+ * render of its parent. List every value it reads from outside the item,
31
+ * including state read through the `list` argument — one left out keeps the
32
+ * item on the value it last rendered.
33
+ *
34
+ * Without it, an item re-renders whenever its render function changes
35
+ * identity, which an inline function does on every render of its parent.
36
+ */
37
+ renderDependencies?: DependencyList;
38
+ /**
39
+ * @deprecated Use `renderDependencies` instead. `dependencies` only adds to
40
+ * the render function's identity, so an inline render function still
41
+ * re-renders the item on every render of its parent.
25
42
  */
26
43
  dependencies?: DependencyList;
27
44
  }
@@ -35,15 +52,21 @@ export declare class ItemView<T> {
35
52
  readonly showTiles?: boolean;
36
53
  readonly showList?: boolean;
37
54
  readonly tileMaxWidth: number;
55
+ readonly renderDependencies?: DependencyList;
38
56
  readonly dependencies?: DependencyList;
39
57
  private readonly renderFn?;
58
+ private lastComparison?;
40
59
  constructor(list: List<T>, shape?: ItemViewShape<T>);
41
60
  private static fallbackRenderItemFn;
42
61
  /**
43
- * Whether `other` would render this item identically — i.e. all render
44
- * functions taken from the consumer's `ListItem` element are still the same,
45
- * and the dependencies it declared have not changed.
62
+ * Whether `other` would render the item holding `data` identically. The
63
+ * render function counts by its `renderDependencies` where given, otherwise
64
+ * by its identity and the deprecated `dependencies`. `textValue` and `href`
65
+ * count by what they return for `data`, so inline functions do not re-render
66
+ * the item. `defaultExpanded` is read on mount only, so it does not count at
67
+ * all.
46
68
  */
47
- rendersSameAs(other?: ItemView<T>): boolean;
69
+ rendersSameFor(other: ItemView<T> | undefined, data: T): boolean;
70
+ private rendersSameContentAs;
48
71
  render(data: T): ReactNode;
49
72
  }
@@ -8,4 +8,11 @@ export declare class Table<T> {
8
8
  readonly body: TableBody<T>;
9
9
  readonly componentProps: TableSupportedComponentProps;
10
10
  constructor(list: List<T>, shape?: TableShape<T>);
11
+ /**
12
+ * Whether `other` would render the table identically, rows aside. Like
13
+ * `TableRow.rendersSameAs`, it only holds for rows that declare
14
+ * `renderDependencies`. Props count by identity, one by one, including the
15
+ * list's own.
16
+ */
17
+ rendersSameAs(other?: Table<T>): boolean;
11
18
  }
@@ -6,4 +6,5 @@ export declare class TableBody<T> {
6
6
  readonly componentProps: TableBodySupportedComponentProps;
7
7
  readonly row: TableRow<T>;
8
8
  constructor(table: Table<T>, shape?: TableBodyShape<T>);
9
+ rendersSameAs(other: TableBody<T>): boolean;
9
10
  }
@@ -4,4 +4,5 @@ export declare class TableColumn<T> {
4
4
  readonly tableHeader: TableHeader<T>;
5
5
  readonly componentProps: TableColumnSupportedComponentProps;
6
6
  constructor(tableHeader: TableHeader<T>, shape?: TableColumnShape);
7
+ rendersSameAs(other: TableColumn<T>): boolean;
7
8
  }
@@ -6,4 +6,5 @@ export declare class TableHeader<T> {
6
6
  readonly componentProps: TableHeaderSupportedComponentProps;
7
7
  readonly columns: TableColumn<T>[];
8
8
  constructor(table: Table<T>, shape?: TableHeaderShape);
9
+ rendersSameAs(other: TableHeader<T>): boolean;
9
10
  }
@@ -1,9 +1,23 @@
1
1
  import { TableRowShape, TableRowSupportedComponentProps } from './types';
2
2
  import { TableCell } from './TableCell';
3
3
  import { TableBody } from './TableBody';
4
+ import { DependencyList } from 'react';
4
5
  export declare class TableRow<T> {
5
6
  readonly tableBody: TableBody<T>;
6
7
  readonly cells: TableCell<T>[];
7
8
  readonly componentProps: TableRowSupportedComponentProps;
9
+ readonly renderDependencies?: DependencyList;
10
+ private lastComparison?;
8
11
  constructor(tableBody: TableBody<T>, shape?: TableRowShape<T>);
12
+ /**
13
+ * Whether `other` would render a row identically. Only rows that declare
14
+ * `renderDependencies` can tell, since the cells' render functions count by
15
+ * those instead of their identity. Rows without them always re-render. Row
16
+ * and cell props count by identity, one by one.
17
+ *
18
+ * Every row of a render shares one model, so the result is cached for the
19
+ * last `other`.
20
+ */
21
+ rendersSameAs(other?: TableRow<T>): boolean;
22
+ private compareWith;
9
23
  }