@wix/patterns 1.366.0 → 1.370.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
  2. package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
  3. package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
  4. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  5. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  6. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  7. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  8. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  9. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  10. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  11. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js +6 -3
  12. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  13. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js +25 -30
  14. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  15. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  16. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupProps.js.map +1 -1
  18. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +66 -17
  19. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
  20. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +22 -14
  21. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
  22. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  23. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  24. package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js +329 -0
  25. package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
  26. package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js +85 -0
  27. package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
  28. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  29. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  30. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  31. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  32. package/dist/cjs/components/CtaProps.js.map +1 -1
  33. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  34. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  36. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  38. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  42. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js +59 -0
  46. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
  47. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  48. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +23 -0
  49. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
  50. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js +20 -0
  51. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
  52. package/dist/cjs/components/EditableTable/cellTypes/email/View.js +23 -0
  53. package/dist/cjs/components/EditableTable/cellTypes/email/View.js.map +1 -0
  54. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css +4 -0
  55. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +23 -0
  56. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
  57. package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js +12 -0
  58. package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
  59. package/dist/cjs/components/EditableTable/cellTypes/email/index.js +31 -0
  60. package/dist/cjs/components/EditableTable/cellTypes/email/index.js.map +1 -0
  61. package/dist/cjs/components/EditableTable/cellTypes/index.js +5 -1
  62. package/dist/cjs/components/EditableTable/cellTypes/index.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js +4 -9
  64. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  66. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/number/View.js +4 -5
  68. package/dist/cjs/components/EditableTable/cellTypes/number/View.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js +79 -0
  72. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
  73. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  74. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +23 -0
  75. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
  76. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js +20 -0
  77. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
  78. package/dist/cjs/components/EditableTable/cellTypes/object/View.js +30 -0
  79. package/dist/cjs/components/EditableTable/cellTypes/object/View.js.map +1 -0
  80. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css +4 -0
  81. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +23 -0
  82. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
  83. package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js +12 -0
  84. package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
  85. package/dist/cjs/components/EditableTable/cellTypes/object/index.js +45 -0
  86. package/dist/cjs/components/EditableTable/cellTypes/object/index.js.map +1 -0
  87. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  88. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  89. package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js +3 -3
  90. package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js.map +1 -1
  91. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  92. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  93. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +3 -3
  94. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  95. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  96. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  97. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  98. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  99. package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js +15 -0
  100. package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
  101. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js +10 -0
  102. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  103. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  104. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  105. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  106. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  107. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  108. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  109. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  110. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  111. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  112. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  113. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  114. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  115. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  116. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  117. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  118. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  119. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  120. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  121. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  122. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  123. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  124. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  125. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  126. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  127. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  128. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  129. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  130. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  131. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  132. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  133. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  134. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  135. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  136. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  137. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  138. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  139. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  140. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  141. package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js +14 -38
  142. package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
  143. package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js +34 -0
  144. package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
  145. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  146. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  147. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  148. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  149. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  150. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  151. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  152. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  153. package/dist/cjs/components/common.st.css.js +4 -4
  154. package/dist/cjs/components/common.st.css.js.map +1 -1
  155. package/dist/cjs/hooks/useStaticListFilterCollection.js +2 -1
  156. package/dist/cjs/hooks/useStaticListFilterCollection.js.map +1 -1
  157. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  158. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  159. package/dist/cjs/state/EditableTable/CellInteractionState.js +65 -0
  160. package/dist/cjs/state/EditableTable/CellInteractionState.js.map +1 -1
  161. package/dist/cjs/state/EditableTable/types.js.map +1 -1
  162. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  163. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  164. package/dist/cjs/state/TableState.js +2 -0
  165. package/dist/cjs/state/TableState.js.map +1 -1
  166. package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js +38 -4
  167. package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
  168. package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js +56 -17
  169. package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
  170. package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js +5 -1
  171. package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
  172. package/dist/cjs/styles.global.css +1 -1
  173. package/dist/cjs/version.js +1 -1
  174. package/dist/cjs/version.js.map +1 -1
  175. package/dist/docs/AI Assistant.md +171 -0
  176. package/dist/docs/ActionCellProps.md +40 -0
  177. package/dist/docs/ActionSubItem.md +24 -0
  178. package/dist/docs/Allow Users to Add Extended Fields.md +194 -0
  179. package/dist/docs/AutoCompleteFilter.md +276 -0
  180. package/dist/docs/BulkActionModalRenderProp.md +22 -0
  181. package/dist/docs/BulkSelectState.md +18 -0
  182. package/dist/docs/Category.md +19 -0
  183. package/dist/docs/CollectionEmptyState.md +240 -0
  184. package/dist/docs/CollectionErrorState.md +107 -0
  185. package/dist/docs/CollectionNoResultsState.md +116 -0
  186. package/dist/docs/CollectionOptimisticActions.md +1074 -0
  187. package/dist/docs/CollectionPage.Content.md +154 -0
  188. package/dist/docs/CollectionPage.Header.md +216 -0
  189. package/dist/docs/CollectionPage.md +183 -0
  190. package/dist/docs/CollectionPremiumEmptyState.md +115 -0
  191. package/dist/docs/CollectionSearch.md +345 -0
  192. package/dist/docs/CollectionSection.md +16 -0
  193. package/dist/docs/CollectionState.md +29 -0
  194. package/dist/docs/CollectionSubToolbar.md +14 -0
  195. package/dist/docs/CollectionToolbar.md +18 -0
  196. package/dist/docs/Component Tests.md +191 -0
  197. package/dist/docs/ComputedQuery.md +45 -0
  198. package/dist/docs/CtaBaseProps.md +19 -0
  199. package/dist/docs/CustomColumns.md +916 -0
  200. package/dist/docs/CustomFieldsViewWidget.md +191 -0
  201. package/dist/docs/CustomFieldsWidget.md +635 -0
  202. package/dist/docs/Data Extension Overview.md +85 -0
  203. package/dist/docs/DataResultRaw.md +25 -0
  204. package/dist/docs/DateRangeFilter.md +202 -0
  205. package/dist/docs/Display Extended Fields.md +244 -0
  206. package/dist/docs/Enable Filters for Extended Fields.md +243 -0
  207. package/dist/docs/EntityPage.AdditionalContent.md +25 -0
  208. package/dist/docs/EntityPage.Card.md +250 -0
  209. package/dist/docs/EntityPage.Content.md +24 -0
  210. package/dist/docs/EntityPage.Header.md +260 -0
  211. package/dist/docs/EntityPage.MainContent.md +24 -0
  212. package/dist/docs/EntityPage.Slots.md +75 -0
  213. package/dist/docs/EntityPage.md +1030 -0
  214. package/dist/docs/EntityPageState.md +23 -0
  215. package/dist/docs/Explore Apps.md +170 -0
  216. package/dist/docs/ExportTo.md +894 -0
  217. package/dist/docs/Filter Overview.md +448 -0
  218. package/dist/docs/FilterProps.md +26 -0
  219. package/dist/docs/FormPageState.md +17 -0
  220. package/dist/docs/Grid Sections.md +170 -0
  221. package/dist/docs/Grid.md +598 -0
  222. package/dist/docs/GridDragAndDrop.md +131 -0
  223. package/dist/docs/GridFolders.md +259 -0
  224. package/dist/docs/GridFoldersSection.md +16 -0
  225. package/dist/docs/GridFoldersState.md +20 -0
  226. package/dist/docs/GridSectionsProp.md +22 -0
  227. package/dist/docs/GridState.md +22 -0
  228. package/dist/docs/Highlighted Search.md +114 -0
  229. package/dist/docs/InMemoryBackend.md +81 -0
  230. package/dist/docs/Indeterminate.md +273 -0
  231. package/dist/docs/Internal Scroll.md +236 -0
  232. package/dist/docs/More Actions.md +1015 -0
  233. package/dist/docs/MoreActionsItem.md +33 -0
  234. package/dist/docs/MultiAutoInlineCheckboxFilter.md +850 -0
  235. package/dist/docs/MultiBulkActionToolbar.md +1174 -0
  236. package/dist/docs/MultiInlineCheckboxFilter.md +871 -0
  237. package/dist/docs/MultiLevelSorting.md +376 -0
  238. package/dist/docs/MultiSelectCheckboxFilter.md +369 -0
  239. package/dist/docs/MultiSelectCollectionFilter.md +218 -0
  240. package/dist/docs/NestedTable.md +1101 -0
  241. package/dist/docs/NestedTableLevel.md +24 -0
  242. package/dist/docs/NestedTableNodeState.md +23 -0
  243. package/dist/docs/NestedTableOptimisticActions.md +21 -0
  244. package/dist/docs/NestedTableState.md +21 -0
  245. package/dist/docs/Next.js.md +143 -0
  246. package/dist/docs/NumberRangeFilter.md +230 -0
  247. package/dist/docs/OperatorFilterPicker.md +195 -0
  248. package/dist/docs/PageWrapper.md +50 -0
  249. package/dist/docs/PatternsReactRoute.md +31 -0
  250. package/dist/docs/PatternsReactRouter.md +24 -0
  251. package/dist/docs/PickerContent.md +129 -0
  252. package/dist/docs/PickerModal.md +680 -0
  253. package/dist/docs/PickerStandalone.md +332 -0
  254. package/dist/docs/PrimaryActionButton.md +323 -0
  255. package/dist/docs/PrimaryActions.md +173 -0
  256. package/dist/docs/PrimaryPageButton.md +140 -0
  257. package/dist/docs/RadioGroupFilter.md +73 -0
  258. package/dist/docs/RequestId.md +58 -0
  259. package/dist/docs/SecondaryActions.md +175 -0
  260. package/dist/docs/SettingsPage.AdditionalContent.md +25 -0
  261. package/dist/docs/SettingsPage.Card.md +246 -0
  262. package/dist/docs/SettingsPage.Content.md +24 -0
  263. package/dist/docs/SettingsPage.Header.md +176 -0
  264. package/dist/docs/SettingsPage.MainContent.md +24 -0
  265. package/dist/docs/SettingsPage.md +680 -0
  266. package/dist/docs/SettingsPageState.md +22 -0
  267. package/dist/docs/SingleSelectFilter.md +401 -0
  268. package/dist/docs/Sled Tests.md +109 -0
  269. package/dist/docs/Sortable Columns.md +250 -0
  270. package/dist/docs/Suggestions.md +370 -0
  271. package/dist/docs/SummaryBar.md +515 -0
  272. package/dist/docs/Table Sections.md +473 -0
  273. package/dist/docs/Table.md +1065 -0
  274. package/dist/docs/TableColumn.md +35 -0
  275. package/dist/docs/TableDragAndDrop.md +502 -0
  276. package/dist/docs/TableFolders.md +419 -0
  277. package/dist/docs/TableFoldersState.md +22 -0
  278. package/dist/docs/TableGridSwitch.md +298 -0
  279. package/dist/docs/TableGridSwitchDragAndDrop.md +170 -0
  280. package/dist/docs/TableGridSwitchFolders.md +446 -0
  281. package/dist/docs/TableGridSwitchFoldersState.md +22 -0
  282. package/dist/docs/TableGridSwitchState.md +23 -0
  283. package/dist/docs/TableSectionsProp.md +22 -0
  284. package/dist/docs/TableState.md +24 -0
  285. package/dist/docs/TableTopNotification.md +314 -0
  286. package/dist/docs/TabsFilter.md +484 -0
  287. package/dist/docs/Tags Overview.md +118 -0
  288. package/dist/docs/Tags.md +718 -0
  289. package/dist/docs/TagsWidget.md +419 -0
  290. package/dist/docs/ToolbarCollectionState.md +19 -0
  291. package/dist/docs/ToolbarFilters.md +1588 -0
  292. package/dist/docs/ToolbarSecondaryActions.md +383 -0
  293. package/dist/docs/ToolbarTitle.md +324 -0
  294. package/dist/docs/View.md +23 -0
  295. package/dist/docs/Views.md +786 -0
  296. package/dist/docs/WidgetsFormProvider.md +61 -0
  297. package/dist/docs/WixPatternsBMProvider.md +31 -0
  298. package/dist/docs/WixPatternsBaseProvider.md +87 -0
  299. package/dist/docs/WixPatternsEssentialsProvider.md +43 -0
  300. package/dist/docs/WixPatternsGizaProvider.md +37 -0
  301. package/dist/docs/WixPatternsProvider.md +68 -0
  302. package/dist/docs/Working with Cache.md +114 -0
  303. package/dist/docs/arrayFilter.md +226 -0
  304. package/dist/docs/bulkActionModal.md +40 -0
  305. package/dist/docs/createNestedTableLevel.md +24 -0
  306. package/dist/docs/createNestedTableSingleEntityLevels.md +20 -0
  307. package/dist/docs/customFilter.md +182 -0
  308. package/dist/docs/dateRangeFilter.md +55 -0
  309. package/dist/docs/deleteSecondaryAction.md +122 -0
  310. package/dist/docs/idNameArrayFilter.md +206 -0
  311. package/dist/docs/index.json +662 -0
  312. package/dist/docs/operatorFilter.md +183 -0
  313. package/dist/docs/stringFilter.md +204 -0
  314. package/dist/docs/stringsArrayFilter.md +118 -0
  315. package/dist/docs/useAmbassadorCollection.md +45 -0
  316. package/dist/docs/useCollection.md +61 -0
  317. package/dist/docs/useCreateCollection.md +32 -0
  318. package/dist/docs/useCreateNestedOptimisticActions.md +21 -0
  319. package/dist/docs/useEntity.md +44 -0
  320. package/dist/docs/useEntityPage.md +57 -0
  321. package/dist/docs/useEntityPageContext.md +28 -0
  322. package/dist/docs/useFilterCollection.md +163 -0
  323. package/dist/docs/useGridCollection.md +58 -0
  324. package/dist/docs/useGridFolders.md +25 -0
  325. package/dist/docs/useItemsSelectionFilter.md +60 -0
  326. package/dist/docs/useNestedTable.md +66 -0
  327. package/dist/docs/useOptimisticActions.md +1288 -0
  328. package/dist/docs/usePatternsNavigate.md +57 -0
  329. package/dist/docs/usePickerContent.md +61 -0
  330. package/dist/docs/usePickerModal.md +68 -0
  331. package/dist/docs/usePickerStandalone.md +56 -0
  332. package/dist/docs/useSelector.md +181 -0
  333. package/dist/docs/useSettingsPage.md +54 -0
  334. package/dist/docs/useSettingsPageContext.md +28 -0
  335. package/dist/docs/useStaticListFilterCollection.md +194 -0
  336. package/dist/docs/useTableCollection.md +58 -0
  337. package/dist/docs/useTableFolders.md +25 -0
  338. package/dist/docs/useTableGridSwitchCollection.md +58 -0
  339. package/dist/docs/useTableGridSwitchFolders.md +25 -0
  340. package/dist/docs/useWidgetsFormContext.md +19 -0
  341. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  342. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  343. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  344. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  345. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  346. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  347. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js +3 -1
  348. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  349. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js +3 -2
  350. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  351. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  352. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  353. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +39 -6
  354. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
  355. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +2 -1
  356. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
  357. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  358. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  359. package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js +110 -0
  360. package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
  361. package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js +74 -0
  362. package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
  363. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  364. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  365. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  366. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  367. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  368. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  369. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  370. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  371. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  372. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  373. package/dist/esm/components/EditableTable/cellTypes/email/Edit.js +21 -0
  374. package/dist/esm/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
  375. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  376. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +15 -0
  377. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
  378. package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js +13 -0
  379. package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
  380. package/dist/esm/components/EditableTable/cellTypes/email/View.js +5 -0
  381. package/dist/esm/components/EditableTable/cellTypes/email/View.js.map +1 -0
  382. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css +4 -0
  383. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +15 -0
  384. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
  385. package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js +8 -0
  386. package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
  387. package/dist/esm/components/EditableTable/cellTypes/email/index.js +22 -0
  388. package/dist/esm/components/EditableTable/cellTypes/email/index.js.map +1 -0
  389. package/dist/esm/components/EditableTable/cellTypes/index.js +5 -1
  390. package/dist/esm/components/EditableTable/cellTypes/index.js.map +1 -1
  391. package/dist/esm/components/EditableTable/cellTypes/number/Edit.js +2 -5
  392. package/dist/esm/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
  393. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  394. package/dist/esm/components/EditableTable/cellTypes/number/View.js +2 -2
  395. package/dist/esm/components/EditableTable/cellTypes/number/View.js.map +1 -1
  396. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  397. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  398. package/dist/esm/components/EditableTable/cellTypes/object/Edit.js +39 -0
  399. package/dist/esm/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
  400. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  401. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +15 -0
  402. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
  403. package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js +13 -0
  404. package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
  405. package/dist/esm/components/EditableTable/cellTypes/object/View.js +5 -0
  406. package/dist/esm/components/EditableTable/cellTypes/object/View.js.map +1 -0
  407. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css +4 -0
  408. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +15 -0
  409. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
  410. package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js +8 -0
  411. package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
  412. package/dist/esm/components/EditableTable/cellTypes/object/index.js +47 -0
  413. package/dist/esm/components/EditableTable/cellTypes/object/index.js.map +1 -0
  414. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  415. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  416. package/dist/esm/components/EditableTable/cellTypes/select/View.st.css.js +2 -2
  417. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  418. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  419. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  420. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  421. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  422. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  423. package/dist/esm/components/EditableTable/useCellFocusAndEditing.js +15 -1
  424. package/dist/esm/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
  425. package/dist/esm/components/EditableTable/useKeyboardNavigation.js +10 -0
  426. package/dist/esm/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  427. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  428. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  429. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  430. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  431. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  432. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  433. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  434. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  435. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  436. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  437. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  438. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  439. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  440. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  441. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  442. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  443. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  444. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  445. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  446. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  447. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  448. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  449. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  450. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  451. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  452. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  453. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  454. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  455. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  456. package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js +2 -12
  457. package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
  458. package/dist/esm/components/TableGridSwitchButton/layoutConfig.js +14 -0
  459. package/dist/esm/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
  460. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  461. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  462. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  463. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  464. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  465. package/dist/esm/components/common.st.css.js +2 -2
  466. package/dist/esm/hooks/useStaticListFilterCollection.js +1 -0
  467. package/dist/esm/hooks/useStaticListFilterCollection.js.map +1 -1
  468. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  469. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  470. package/dist/esm/state/EditableTable/CellInteractionState.js +58 -0
  471. package/dist/esm/state/EditableTable/CellInteractionState.js.map +1 -1
  472. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  473. package/dist/esm/state/TableState.js +2 -0
  474. package/dist/esm/state/TableState.js.map +1 -1
  475. package/dist/esm/state/Toolbar/ToolbarResponsiveState.js +40 -5
  476. package/dist/esm/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
  477. package/dist/esm/state/Toolbar/computeResponsiveTargetState.js +46 -18
  478. package/dist/esm/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
  479. package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js +4 -0
  480. package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
  481. package/dist/esm/styles.global.css +1 -1
  482. package/dist/esm/version.js +1 -1
  483. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  484. package/dist/types/components/CollectionTable/CollectionTable.uni.driver.d.ts +24 -24
  485. package/dist/types/components/CollectionTable/CollectionTableWSRTable.d.ts.map +1 -1
  486. package/dist/types/components/CollectionToolbar/CollectionToolbar.d.ts.map +1 -1
  487. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  488. package/dist/types/components/CollectionToolbar/CollectionToolbar.uni.driver.d.ts +11 -11
  489. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts +3 -0
  490. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts.map +1 -1
  491. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts +5 -1
  492. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts.map +1 -1
  493. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.d.ts.map +1 -1
  494. package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
  495. package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts +24 -0
  496. package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts.map +1 -0
  497. package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts +17 -0
  498. package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts.map +1 -0
  499. package/dist/types/components/CollectionViewsDropdown/ViewsDropdown.st.css.d.ts.map +1 -1
  500. package/dist/types/components/CtaProps.d.ts +1 -1
  501. package/dist/types/components/CustomFieldModal/CustomFieldModal.uni.driver.d.ts +2 -2
  502. package/dist/types/components/CustomFieldsWidget/CustomFieldsWidget.uni.driver.d.ts +3 -3
  503. package/dist/types/components/DropdownFilter/CollectionDropdownFilter.uni.driver.d.ts +1 -1
  504. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  505. package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts +4 -0
  506. package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts.map +1 -0
  507. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts +14 -0
  508. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -0
  509. package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts +22 -0
  510. package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts.map +1 -0
  511. package/dist/types/components/EditableTable/cellTypes/email/View.d.ts +4 -0
  512. package/dist/types/components/EditableTable/cellTypes/email/View.d.ts.map +1 -0
  513. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts +14 -0
  514. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -0
  515. package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts +15 -0
  516. package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts.map +1 -0
  517. package/dist/types/components/EditableTable/cellTypes/email/index.d.ts +5 -0
  518. package/dist/types/components/EditableTable/cellTypes/email/index.d.ts.map +1 -0
  519. package/dist/types/components/EditableTable/cellTypes/index.d.ts +3 -1
  520. package/dist/types/components/EditableTable/cellTypes/index.d.ts.map +1 -1
  521. package/dist/types/components/EditableTable/cellTypes/number/Edit.d.ts.map +1 -1
  522. package/dist/types/components/EditableTable/cellTypes/number/View.d.ts.map +1 -1
  523. package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
  524. package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts +4 -0
  525. package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts.map +1 -0
  526. package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts +14 -0
  527. package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts.map +1 -0
  528. package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts +22 -0
  529. package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts.map +1 -0
  530. package/dist/types/components/EditableTable/cellTypes/object/View.d.ts +4 -0
  531. package/dist/types/components/EditableTable/cellTypes/object/View.d.ts.map +1 -0
  532. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts +14 -0
  533. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -0
  534. package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts +15 -0
  535. package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts.map +1 -0
  536. package/dist/types/components/EditableTable/cellTypes/object/index.d.ts +5 -0
  537. package/dist/types/components/EditableTable/cellTypes/object/index.d.ts.map +1 -0
  538. package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
  539. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  540. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  541. package/dist/types/components/EditableTable/useCellFocusAndEditing.d.ts.map +1 -1
  542. package/dist/types/components/EditableTable/useKeyboardNavigation.d.ts.map +1 -1
  543. package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
  544. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  545. package/dist/types/components/FiltersPanel/FiltersPanel.uni.driver.d.ts +4 -4
  546. package/dist/types/components/Grid/Grid.uni.driver.d.ts +13 -13
  547. package/dist/types/components/Grid/GridFolders.uni.driver.d.ts +38 -38
  548. package/dist/types/components/Grid/GridFoldersSection.uni.driver.d.ts +13 -13
  549. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  550. package/dist/types/components/Kanban/Kanban.uni.driver.d.ts +11 -11
  551. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  552. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  553. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts +37 -37
  554. package/dist/types/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.d.ts.map +1 -1
  555. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  556. package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
  557. package/dist/types/components/ScrollableContent/ScrollableContent.st.css.d.ts.map +1 -1
  558. package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
  559. package/dist/types/components/SummaryBar/SummaryBar.uni.driver.d.ts +1 -1
  560. package/dist/types/components/Table/Table.uni.driver.d.ts +26 -26
  561. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts +37 -37
  562. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts +40 -40
  563. package/dist/types/components/TableGridSwitchButton/TableGridSwitchButton.d.ts.map +1 -1
  564. package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts +9 -0
  565. package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts.map +1 -0
  566. package/dist/types/components/TabsFilter/TabsFilter.uni.driver.d.ts +1 -1
  567. package/dist/types/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.d.ts.map +1 -1
  568. package/dist/types/hooks/useStaticListFilterCollection.d.ts.map +1 -1
  569. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  570. package/dist/types/state/EditableTable/CellInteractionState.d.ts +7 -0
  571. package/dist/types/state/EditableTable/CellInteractionState.d.ts.map +1 -1
  572. package/dist/types/state/EditableTable/types.d.ts +2 -0
  573. package/dist/types/state/EditableTable/types.d.ts.map +1 -1
  574. package/dist/types/state/TableState.d.ts +2 -0
  575. package/dist/types/state/TableState.d.ts.map +1 -1
  576. package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts +3 -0
  577. package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts.map +1 -1
  578. package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts +8 -1
  579. package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts.map +1 -1
  580. package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts +2 -0
  581. package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts.map +1 -1
  582. package/dist/types/testkit/enzyme.d.ts +194 -194
  583. package/dist/types/testkit/jsdom.d.ts +207 -207
  584. package/dist/types/testkit/playwright.d.ts +194 -194
  585. package/dist/types/testkit/puppeteer.d.ts +205 -205
  586. package/dist/types/version.d.ts +1 -1
  587. package/package.json +10 -7
  588. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  589. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  590. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  591. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  592. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  593. package/src/components/CollectionTable/CollectionTableWSRTable.tsx +3 -0
  594. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  595. package/src/components/CollectionToolbar/CollectionToolbar.tsx +11 -4
  596. package/src/components/CollectionToolbar/CollectionToolbarActionsGroupProps.ts +3 -0
  597. package/src/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.tsx +73 -16
  598. package/src/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.tsx +4 -0
  599. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  600. package/src/components/CollectionToolbar/ToolbarOverflowMenu.tsx +323 -0
  601. package/src/components/CollectionToolbar/useToolbarOverflowItems.ts +112 -0
  602. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  603. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  604. package/src/components/CtaProps.ts +1 -1
  605. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  606. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  607. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  608. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  609. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  610. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  611. package/src/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  612. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +25 -0
  613. package/src/components/EditableTable/cellTypes/email/Edit.tsx +46 -0
  614. package/src/components/EditableTable/cellTypes/email/Edit.uni.driver.ts +23 -0
  615. package/src/components/EditableTable/cellTypes/email/View.st.css +4 -0
  616. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +25 -0
  617. package/src/components/EditableTable/cellTypes/email/View.tsx +8 -0
  618. package/src/components/EditableTable/cellTypes/email/View.uni.driver.ts +9 -0
  619. package/src/components/EditableTable/cellTypes/email/index.ts +23 -0
  620. package/src/components/EditableTable/cellTypes/index.ts +6 -0
  621. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  622. package/src/components/EditableTable/cellTypes/number/Edit.tsx +3 -8
  623. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  624. package/src/components/EditableTable/cellTypes/number/View.tsx +2 -4
  625. package/src/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  626. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +25 -0
  627. package/src/components/EditableTable/cellTypes/object/Edit.tsx +72 -0
  628. package/src/components/EditableTable/cellTypes/object/Edit.uni.driver.ts +22 -0
  629. package/src/components/EditableTable/cellTypes/object/View.st.css +4 -0
  630. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +25 -0
  631. package/src/components/EditableTable/cellTypes/object/View.tsx +12 -0
  632. package/src/components/EditableTable/cellTypes/object/View.uni.driver.ts +9 -0
  633. package/src/components/EditableTable/cellTypes/object/index.ts +49 -0
  634. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  635. package/src/components/EditableTable/cellTypes/select/View.st.css.ts +2 -2
  636. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  637. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  638. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  639. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  640. package/src/components/EditableTable/useCellFocusAndEditing.ts +16 -1
  641. package/src/components/EditableTable/useKeyboardNavigation.ts +11 -0
  642. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  643. package/src/components/Fade/Fade.st.css.ts +2 -2
  644. package/src/components/Heading/Heading.st.css.ts +2 -2
  645. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  646. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  647. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  648. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  649. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  650. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  651. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  652. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  653. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  654. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  655. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  656. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  657. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  658. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  659. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  660. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  661. package/src/components/TableGridSwitchButton/TableGridSwitchButton.tsx +2 -21
  662. package/src/components/TableGridSwitchButton/layoutConfig.tsx +20 -0
  663. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  664. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  665. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  666. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  667. package/src/components/common.st.css.ts +2 -2
  668. package/src/hooks/useStaticListFilterCollection.ts +1 -0
  669. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  670. package/src/state/EditableTable/CellInteractionState.ts +63 -0
  671. package/src/state/EditableTable/types.ts +2 -0
  672. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  673. package/src/state/TableState.ts +3 -0
  674. package/src/state/Toolbar/ToolbarResponsiveState.ts +64 -10
  675. package/src/state/Toolbar/computeResponsiveTargetState.ts +68 -18
  676. package/src/state/Toolbar/toolbarResponsiveConstants.ts +4 -0
  677. package/src/styles.global.css +1 -1
  678. package/src/version.ts +1 -1
@@ -14,6 +14,7 @@ class CellInteractionState {
14
14
  (0, _defineProperty2.default)(this, "editTrigger", null);
15
15
  (0, _defineProperty2.default)(this, "selectedCells", new Set());
16
16
  (0, _defineProperty2.default)(this, "selectionAnchor", null);
17
+ (0, _defineProperty2.default)(this, "focusedCellElement", null);
17
18
  (0, _defineProperty2.default)(this, "_parent", void 0);
18
19
  (0, _defineProperty2.default)(this, "_commitHandler", void 0);
19
20
  this._commitHandler = commitHandler;
@@ -255,6 +256,70 @@ class CellInteractionState {
255
256
  }
256
257
  return result;
257
258
  }
259
+ scrollFocusedCellIntoView() {
260
+ if (typeof requestAnimationFrame === 'undefined') {
261
+ return;
262
+ }
263
+ requestAnimationFrame(() => {
264
+ const cellEl = this.focusedCellElement;
265
+ if (!cellEl) {
266
+ return;
267
+ }
268
+ cellEl.scrollIntoView({
269
+ block: 'nearest',
270
+ inline: 'nearest'
271
+ });
272
+ this._adjustScrollForStickyElements(cellEl);
273
+ });
274
+ }
275
+
276
+ /**
277
+ * After scrollIntoView, the cell may be hidden behind sticky columns
278
+ * or the sticky header. If so, scroll a bit more to fully reveal it.
279
+ */
280
+ _adjustScrollForStickyElements(cellEl) {
281
+ const td = cellEl.parentElement;
282
+ if (!td) {
283
+ return;
284
+ }
285
+
286
+ // Horizontal: check if cell is behind a sticky column.
287
+ // Sticky columns stay in place while other columns scroll, so their
288
+ // bounding rect's right edge can overlap the focused cell's left edge.
289
+ const row = td.parentElement;
290
+ const cellLeft = td.getBoundingClientRect().left;
291
+ if (row) {
292
+ let maxPrevRight = 0;
293
+ for (const child of Array.from(row.children)) {
294
+ if (child === td) {
295
+ break;
296
+ }
297
+ const right = child.getBoundingClientRect().right;
298
+ if (right > maxPrevRight) {
299
+ maxPrevRight = right;
300
+ }
301
+ }
302
+ if (cellLeft < maxPrevRight) {
303
+ var _cellEl$closest;
304
+ const scrollParent = (_cellEl$closest = cellEl.closest('table')) == null ? void 0 : _cellEl$closest.parentElement;
305
+ if (scrollParent) {
306
+ scrollParent.scrollLeft -= maxPrevRight - cellLeft;
307
+ }
308
+ }
309
+ }
310
+
311
+ // Vertical: check if cell is behind the sticky header/toolbar.
312
+ const headerEl = this._parent.tableState.headerElement;
313
+ const scrollEl = this._parent.collection.scrollableContent;
314
+ if (headerEl && scrollEl) {
315
+ const headerBottom = headerEl.getBoundingClientRect().bottom;
316
+ const cellTop = td.getBoundingClientRect().top;
317
+ if (cellTop < headerBottom) {
318
+ // +2px buffer to prevent the cell from touching the header border
319
+ scrollEl.scrollTop -= headerBottom - cellTop + 2;
320
+ }
321
+ }
322
+ }
258
323
  getSelectionBorder(rowKey, columnId) {
259
324
  if (!this.isCellSelected(rowKey, columnId)) {
260
325
  return _utils.noBorder;
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_utils","CellInteractionState","constructor","commitHandler","parent","_defineProperty2","default","undefined","Set","_commitHandler","_parent","makeObservable","focusedCell","observable","ref","editingCell","editingValue","editTrigger","selectedCells","selectionAnchor","isEditing","computed","selectedCellsList","focusCell","action","clearFocus","startEdit","commitEdit","cancelEdit","setEditingValue","selectRange","selectAll","moveFocus","moveToNextCell","moveToPreviousCell","rowKey","columnId","clear","add","cellKey","trigger","_this$focusedCell","_this$focusedCell2","rk","cid","value","from","to","fromPos","_toIndices","toPos","keyedItems","editableColumns","minRow","Math","min","row","maxRow","max","minCol","col","maxCol","newKeys","r","c","key","id","_diffSelection","ki","length","_toPosition","direction","extend","pos","target","has","delete","isCellFocused","_this$focusedCell3","_this$focusedCell4","isCellEditing","_this$editingCell","_this$editingCell2","isCellSelected","result","parseCellKey","push","getSelectionBorder","noBorder","isNeighborSelected","neighbor","top","bottom","left","right","exports"],"sources":["../../../../src/state/EditableTable/CellInteractionState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Cell, CellBorder } from './types';\nimport type { FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport { cellKey, parseCellKey, noBorder } from './utils';\n\ntype Direction = 'up' | 'down' | 'left' | 'right';\ntype CommitHandler = (editingValue: any, cell: Cell) => void;\nexport type EditTrigger = 'type' | 'enter' | 'doubleClick';\n\nexport class CellInteractionState<T, F extends FiltersMap> {\n focusedCell: Cell | null = null;\n editingCell: Cell | null = null;\n editingValue: any = undefined;\n editTrigger: EditTrigger | null = null;\n selectedCells = new Set<string>();\n selectionAnchor: Cell | null = null;\n private readonly _parent: EditableTableState<T, F>;\n private readonly _commitHandler: CommitHandler;\n\n constructor(commitHandler: CommitHandler, parent: EditableTableState<T, F>) {\n this._commitHandler = commitHandler;\n this._parent = parent;\n makeObservable(this, {\n focusedCell: observable.ref,\n editingCell: observable.ref,\n editingValue: observable.ref,\n editTrigger: observable.ref,\n selectedCells: observable,\n selectionAnchor: observable.ref,\n isEditing: computed,\n selectedCellsList: computed,\n focusCell: action,\n clearFocus: action,\n startEdit: action,\n commitEdit: action,\n cancelEdit: action,\n setEditingValue: action,\n selectRange: action,\n selectAll: action,\n moveFocus: action,\n moveToNextCell: action,\n moveToPreviousCell: action,\n });\n }\n\n get isEditing(): boolean {\n return this.editingCell !== null;\n }\n\n focusCell(rowKey: string, columnId: string) {\n if (this.editingCell) {\n this.commitEdit();\n }\n this.focusedCell = { rowKey, columnId };\n this.selectedCells.clear();\n this.selectedCells.add(cellKey(rowKey, columnId));\n this.selectionAnchor = { rowKey, columnId };\n }\n\n clearFocus() {\n this.focusedCell = null;\n this.selectedCells.clear();\n this.selectionAnchor = null;\n this.cancelEdit();\n }\n\n startEdit(\n rowKey?: string,\n columnId?: string,\n trigger: EditTrigger = 'enter',\n ) {\n const rk = rowKey ?? this.focusedCell?.rowKey;\n const cid = columnId ?? this.focusedCell?.columnId;\n if (rk != null && cid != null) {\n this.editingValue = undefined;\n this.editTrigger = trigger;\n this.editingCell = { rowKey: rk, columnId: cid };\n this.focusedCell = { rowKey: rk, columnId: cid };\n }\n }\n\n setEditingValue(value: any) {\n this.editingValue = value;\n }\n\n commitEdit() {\n try {\n if (this.editingCell) {\n this._commitHandler(this.editingValue, this.editingCell);\n }\n } finally {\n this.editingValue = undefined;\n this.editTrigger = null;\n this.editingCell = null;\n }\n }\n\n cancelEdit() {\n this.editingValue = undefined;\n this.editTrigger = null;\n this.editingCell = null;\n }\n\n selectRange(from: Cell, to: Cell) {\n const fromPos = this._parent._toIndices(from);\n const toPos = this._parent._toIndices(to);\n if (!fromPos || !toPos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n const minRow = Math.min(fromPos.row, toPos.row);\n const maxRow = Math.max(fromPos.row, toPos.row);\n const minCol = Math.min(fromPos.col, toPos.col);\n const maxCol = Math.max(fromPos.col, toPos.col);\n\n const newKeys = new Set<string>();\n for (let r = minRow; r <= maxRow; r++) {\n for (let c = minCol; c <= maxCol; c++) {\n newKeys.add(cellKey(keyedItems[r].key, editableColumns[c].id));\n }\n }\n\n this._diffSelection(newKeys);\n this.focusedCell = to;\n }\n\n selectAll() {\n const { keyedItems, editableColumns } = this._parent;\n const newKeys = new Set<string>();\n for (const ki of keyedItems) {\n for (const col of editableColumns) {\n newKeys.add(cellKey(ki.key, col.id));\n }\n }\n\n this._diffSelection(newKeys);\n\n if (keyedItems.length > 0 && editableColumns.length > 0) {\n this.selectionAnchor = this._parent._toPosition(0, 0)!;\n this.focusedCell = this._parent._toPosition(\n keyedItems.length - 1,\n editableColumns.length - 1,\n )!;\n }\n }\n\n moveFocus(direction: Direction, extend = false) {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n switch (direction) {\n case 'up':\n row = Math.max(0, row - 1);\n break;\n case 'down':\n row = Math.min(keyedItems.length - 1, row + 1);\n break;\n case 'left':\n col = Math.max(0, col - 1);\n break;\n case 'right':\n col = Math.min(editableColumns.length - 1, col + 1);\n break;\n }\n\n const target = this._parent._toPosition(row, col)!;\n if (extend && this.selectionAnchor) {\n this.selectRange(this.selectionAnchor, target);\n } else {\n this.focusCell(target.rowKey, target.columnId);\n }\n }\n\n moveToNextCell() {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n col++;\n if (col >= editableColumns.length) {\n col = 0;\n row++;\n if (row >= keyedItems.length) {\n row = keyedItems.length - 1;\n col = editableColumns.length - 1;\n }\n }\n this.focusCell(keyedItems[row].key, editableColumns[col].id);\n }\n\n moveToPreviousCell() {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n col--;\n if (col < 0) {\n col = editableColumns.length - 1;\n row--;\n if (row < 0) {\n row = 0;\n col = 0;\n }\n }\n this.focusCell(keyedItems[row].key, editableColumns[col].id);\n }\n\n private _diffSelection(newKeys: Set<string>) {\n for (const key of this.selectedCells) {\n if (!newKeys.has(key)) {\n this.selectedCells.delete(key);\n }\n }\n for (const key of newKeys) {\n if (!this.selectedCells.has(key)) {\n this.selectedCells.add(key);\n }\n }\n }\n\n isCellFocused(rowKey: string, columnId: string): boolean {\n return (\n this.focusedCell?.rowKey === rowKey &&\n this.focusedCell?.columnId === columnId\n );\n }\n\n isCellEditing(rowKey: string, columnId: string): boolean {\n return (\n this.editingCell?.rowKey === rowKey &&\n this.editingCell?.columnId === columnId\n );\n }\n\n isCellSelected(rowKey: string, columnId: string): boolean {\n return this.selectedCells.has(cellKey(rowKey, columnId));\n }\n\n get selectedCellsList(): Cell[] {\n const result: Cell[] = [];\n for (const key of this.selectedCells) {\n const pos = parseCellKey(key);\n if (pos) {\n result.push(pos);\n }\n }\n return result;\n }\n\n getSelectionBorder(rowKey: string, columnId: string): CellBorder {\n if (!this.isCellSelected(rowKey, columnId)) {\n return noBorder;\n }\n\n const pos = this._parent._toIndices({ rowKey, columnId });\n if (!pos) {\n return noBorder;\n }\n\n const isNeighborSelected = (row: number, col: number) => {\n const neighbor = this._parent._toPosition(row, col);\n return (\n neighbor !== null &&\n this.selectedCells.has(cellKey(neighbor.rowKey, neighbor.columnId))\n );\n };\n\n return {\n top: !isNeighborSelected(pos.row - 1, pos.col),\n bottom: !isNeighborSelected(pos.row + 1, pos.col),\n left: !isNeighborSelected(pos.row, pos.col - 1),\n right: !isNeighborSelected(pos.row, pos.col + 1),\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_utils","CellInteractionState","constructor","commitHandler","parent","_defineProperty2","default","undefined","Set","_commitHandler","_parent","makeObservable","focusedCell","observable","ref","editingCell","editingValue","editTrigger","selectedCells","selectionAnchor","isEditing","computed","selectedCellsList","focusCell","action","clearFocus","startEdit","commitEdit","cancelEdit","setEditingValue","selectRange","selectAll","moveFocus","moveToNextCell","moveToPreviousCell","rowKey","columnId","clear","add","cellKey","trigger","_this$focusedCell","_this$focusedCell2","rk","cid","value","from","to","fromPos","_toIndices","toPos","keyedItems","editableColumns","minRow","Math","min","row","maxRow","max","minCol","col","maxCol","newKeys","r","c","key","id","_diffSelection","ki","length","_toPosition","direction","extend","pos","target","has","delete","isCellFocused","_this$focusedCell3","_this$focusedCell4","isCellEditing","_this$editingCell","_this$editingCell2","isCellSelected","result","parseCellKey","push","scrollFocusedCellIntoView","requestAnimationFrame","cellEl","focusedCellElement","scrollIntoView","block","inline","_adjustScrollForStickyElements","td","parentElement","cellLeft","getBoundingClientRect","left","maxPrevRight","child","Array","children","right","_cellEl$closest","scrollParent","closest","scrollLeft","headerEl","tableState","headerElement","scrollEl","collection","scrollableContent","headerBottom","bottom","cellTop","top","scrollTop","getSelectionBorder","noBorder","isNeighborSelected","neighbor","exports"],"sources":["../../../../src/state/EditableTable/CellInteractionState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Cell, CellBorder } from './types';\nimport type { FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport { cellKey, parseCellKey, noBorder } from './utils';\n\ntype Direction = 'up' | 'down' | 'left' | 'right';\ntype CommitHandler = (editingValue: any, cell: Cell) => void;\nexport type EditTrigger = 'type' | 'enter' | 'doubleClick';\n\nexport class CellInteractionState<T, F extends FiltersMap> {\n focusedCell: Cell | null = null;\n editingCell: Cell | null = null;\n editingValue: any = undefined;\n editTrigger: EditTrigger | null = null;\n selectedCells = new Set<string>();\n selectionAnchor: Cell | null = null;\n focusedCellElement: HTMLElement | null = null;\n private readonly _parent: EditableTableState<T, F>;\n private readonly _commitHandler: CommitHandler;\n\n constructor(commitHandler: CommitHandler, parent: EditableTableState<T, F>) {\n this._commitHandler = commitHandler;\n this._parent = parent;\n makeObservable(this, {\n focusedCell: observable.ref,\n editingCell: observable.ref,\n editingValue: observable.ref,\n editTrigger: observable.ref,\n selectedCells: observable,\n selectionAnchor: observable.ref,\n isEditing: computed,\n selectedCellsList: computed,\n focusCell: action,\n clearFocus: action,\n startEdit: action,\n commitEdit: action,\n cancelEdit: action,\n setEditingValue: action,\n selectRange: action,\n selectAll: action,\n moveFocus: action,\n moveToNextCell: action,\n moveToPreviousCell: action,\n });\n }\n\n get isEditing(): boolean {\n return this.editingCell !== null;\n }\n\n focusCell(rowKey: string, columnId: string) {\n if (this.editingCell) {\n this.commitEdit();\n }\n this.focusedCell = { rowKey, columnId };\n this.selectedCells.clear();\n this.selectedCells.add(cellKey(rowKey, columnId));\n this.selectionAnchor = { rowKey, columnId };\n }\n\n clearFocus() {\n this.focusedCell = null;\n this.selectedCells.clear();\n this.selectionAnchor = null;\n this.cancelEdit();\n }\n\n startEdit(\n rowKey?: string,\n columnId?: string,\n trigger: EditTrigger = 'enter',\n ) {\n const rk = rowKey ?? this.focusedCell?.rowKey;\n const cid = columnId ?? this.focusedCell?.columnId;\n if (rk != null && cid != null) {\n this.editingValue = undefined;\n this.editTrigger = trigger;\n this.editingCell = { rowKey: rk, columnId: cid };\n this.focusedCell = { rowKey: rk, columnId: cid };\n }\n }\n\n setEditingValue(value: any) {\n this.editingValue = value;\n }\n\n commitEdit() {\n try {\n if (this.editingCell) {\n this._commitHandler(this.editingValue, this.editingCell);\n }\n } finally {\n this.editingValue = undefined;\n this.editTrigger = null;\n this.editingCell = null;\n }\n }\n\n cancelEdit() {\n this.editingValue = undefined;\n this.editTrigger = null;\n this.editingCell = null;\n }\n\n selectRange(from: Cell, to: Cell) {\n const fromPos = this._parent._toIndices(from);\n const toPos = this._parent._toIndices(to);\n if (!fromPos || !toPos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n const minRow = Math.min(fromPos.row, toPos.row);\n const maxRow = Math.max(fromPos.row, toPos.row);\n const minCol = Math.min(fromPos.col, toPos.col);\n const maxCol = Math.max(fromPos.col, toPos.col);\n\n const newKeys = new Set<string>();\n for (let r = minRow; r <= maxRow; r++) {\n for (let c = minCol; c <= maxCol; c++) {\n newKeys.add(cellKey(keyedItems[r].key, editableColumns[c].id));\n }\n }\n\n this._diffSelection(newKeys);\n this.focusedCell = to;\n }\n\n selectAll() {\n const { keyedItems, editableColumns } = this._parent;\n const newKeys = new Set<string>();\n for (const ki of keyedItems) {\n for (const col of editableColumns) {\n newKeys.add(cellKey(ki.key, col.id));\n }\n }\n\n this._diffSelection(newKeys);\n\n if (keyedItems.length > 0 && editableColumns.length > 0) {\n this.selectionAnchor = this._parent._toPosition(0, 0)!;\n this.focusedCell = this._parent._toPosition(\n keyedItems.length - 1,\n editableColumns.length - 1,\n )!;\n }\n }\n\n moveFocus(direction: Direction, extend = false) {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n switch (direction) {\n case 'up':\n row = Math.max(0, row - 1);\n break;\n case 'down':\n row = Math.min(keyedItems.length - 1, row + 1);\n break;\n case 'left':\n col = Math.max(0, col - 1);\n break;\n case 'right':\n col = Math.min(editableColumns.length - 1, col + 1);\n break;\n }\n\n const target = this._parent._toPosition(row, col)!;\n if (extend && this.selectionAnchor) {\n this.selectRange(this.selectionAnchor, target);\n } else {\n this.focusCell(target.rowKey, target.columnId);\n }\n }\n\n moveToNextCell() {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n col++;\n if (col >= editableColumns.length) {\n col = 0;\n row++;\n if (row >= keyedItems.length) {\n row = keyedItems.length - 1;\n col = editableColumns.length - 1;\n }\n }\n this.focusCell(keyedItems[row].key, editableColumns[col].id);\n }\n\n moveToPreviousCell() {\n const pos = this.focusedCell && this._parent._toIndices(this.focusedCell);\n if (!pos) {\n return;\n }\n\n const { keyedItems, editableColumns } = this._parent;\n let { row, col } = pos;\n\n col--;\n if (col < 0) {\n col = editableColumns.length - 1;\n row--;\n if (row < 0) {\n row = 0;\n col = 0;\n }\n }\n this.focusCell(keyedItems[row].key, editableColumns[col].id);\n }\n\n private _diffSelection(newKeys: Set<string>) {\n for (const key of this.selectedCells) {\n if (!newKeys.has(key)) {\n this.selectedCells.delete(key);\n }\n }\n for (const key of newKeys) {\n if (!this.selectedCells.has(key)) {\n this.selectedCells.add(key);\n }\n }\n }\n\n isCellFocused(rowKey: string, columnId: string): boolean {\n return (\n this.focusedCell?.rowKey === rowKey &&\n this.focusedCell?.columnId === columnId\n );\n }\n\n isCellEditing(rowKey: string, columnId: string): boolean {\n return (\n this.editingCell?.rowKey === rowKey &&\n this.editingCell?.columnId === columnId\n );\n }\n\n isCellSelected(rowKey: string, columnId: string): boolean {\n return this.selectedCells.has(cellKey(rowKey, columnId));\n }\n\n get selectedCellsList(): Cell[] {\n const result: Cell[] = [];\n for (const key of this.selectedCells) {\n const pos = parseCellKey(key);\n if (pos) {\n result.push(pos);\n }\n }\n return result;\n }\n\n scrollFocusedCellIntoView() {\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n requestAnimationFrame(() => {\n const cellEl = this.focusedCellElement;\n if (!cellEl) {\n return;\n }\n\n cellEl.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n this._adjustScrollForStickyElements(cellEl);\n });\n }\n\n /**\n * After scrollIntoView, the cell may be hidden behind sticky columns\n * or the sticky header. If so, scroll a bit more to fully reveal it.\n */\n private _adjustScrollForStickyElements(cellEl: HTMLElement) {\n const td = cellEl.parentElement;\n if (!td) {\n return;\n }\n\n // Horizontal: check if cell is behind a sticky column.\n // Sticky columns stay in place while other columns scroll, so their\n // bounding rect's right edge can overlap the focused cell's left edge.\n const row = td.parentElement;\n const cellLeft = td.getBoundingClientRect().left;\n if (row) {\n let maxPrevRight = 0;\n for (const child of Array.from(row.children)) {\n if (child === td) {\n break;\n }\n const right = child.getBoundingClientRect().right;\n if (right > maxPrevRight) {\n maxPrevRight = right;\n }\n }\n if (cellLeft < maxPrevRight) {\n const scrollParent = cellEl.closest('table')?.parentElement;\n if (scrollParent) {\n scrollParent.scrollLeft -= maxPrevRight - cellLeft;\n }\n }\n }\n\n // Vertical: check if cell is behind the sticky header/toolbar.\n const headerEl = this._parent.tableState.headerElement;\n const scrollEl = this._parent.collection.scrollableContent;\n if (headerEl && scrollEl) {\n const headerBottom = headerEl.getBoundingClientRect().bottom;\n const cellTop = td.getBoundingClientRect().top;\n if (cellTop < headerBottom) {\n // +2px buffer to prevent the cell from touching the header border\n scrollEl.scrollTop -= headerBottom - cellTop + 2;\n }\n }\n }\n\n getSelectionBorder(rowKey: string, columnId: string): CellBorder {\n if (!this.isCellSelected(rowKey, columnId)) {\n return noBorder;\n }\n\n const pos = this._parent._toIndices({ rowKey, columnId });\n if (!pos) {\n return noBorder;\n }\n\n const isNeighborSelected = (row: number, col: number) => {\n const neighbor = this._parent._toPosition(row, col);\n return (\n neighbor !== null &&\n this.selectedCells.has(cellKey(neighbor.rowKey, neighbor.columnId))\n );\n };\n\n return {\n top: !isNeighborSelected(pos.row - 1, pos.col),\n bottom: !isNeighborSelected(pos.row + 1, pos.col),\n left: !isNeighborSelected(pos.row, pos.col - 1),\n right: !isNeighborSelected(pos.row, pos.col + 1),\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/state/EditableTable/types.ts"],"sourcesContent":["import type { ComponentType } from 'react';\nimport type { TableColumn } from '../../model/tableColumn';\nimport type {\n CellViewProps,\n CellEditProps,\n} from '../../components/EditableTable/types';\n\nexport interface Cell {\n rowKey: string;\n columnId: string;\n}\n\nexport interface CellBorder {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\nexport type ValidationRule =\n | { type: 'required'; message: string }\n | { type: 'min' | 'max'; value: number; message: string }\n | { type: 'minLength' | 'maxLength'; value: number; message: string }\n | { type: 'pattern'; value: RegExp; message: string }\n | { type: 'custom'; validate: (value: unknown) => boolean; message: string };\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: string[];\n}\n\nexport interface CellType {\n type: keyof CellTypeConfigMap;\n\n /** Render cell in view mode (read-only display) */\n ViewComponent: ComponentType<CellViewProps<any>>;\n\n /** Render cell in edit mode (inline editor). Optional — omit for view-only cells. */\n EditComponent?: ComponentType<CellEditProps<any>>;\n\n /** Serialize value to clipboard string */\n serialize?: (value: any) => string;\n\n /** Deserialize clipboard string to value */\n deserialize?: (raw: string) => any;\n\n /** Validate a cell value. Return null if valid, or error message string. */\n validate?: (value: any, rules?: ValidationRule[]) => string | null;\n\n /** Can this cell type be edited? (default: true) */\n editable?: boolean;\n\n /** Can this cell type be cleared with Delete key? (default: true) */\n clearable?: boolean;\n\n /** Toggle value on single click (e.g., boolean checkbox). Skips focus→edit flow. */\n toggleValue?: (value: any) => any;\n\n /** Called on type-to-edit. Return object with cleared value and/or prevent flag.\n * CMS-web pattern: text clears to '', number clears only for digits, date blocks non-digits. */\n onTypeToEdit?: (params: {\n key: string;\n }) => { value?: any; prevent?: boolean } | undefined;\n}\n\nexport interface CellTypeConfigMap {\n text: never;\n number: never;\n boolean: never;\n url: never;\n select: SelectCellConfig;\n date: never;\n custom: Record<string, unknown>;\n}\n\nexport interface SelectCellConfig {\n options: { id: string; value: string }[];\n}\n\ninterface EditableColumnBase<T> extends Omit<TableColumn<T>, 'render'> {\n id: string;\n /** Column type — maps to a CellType in the registry */\n cellType: keyof CellTypeConfigMap;\n\n /** Extract the cell value from the row data */\n getValue: (item: T) => any;\n\n /** Return updated item with new cell value (immutable) */\n setValue?: (item: T, value: any) => T;\n\n /** Column-level validation rules */\n validation?: ValidationRule[];\n\n /** Is this column editable? (default: true if setValue exists) */\n editable?: boolean | ((item: T) => boolean);\n}\n\nexport type EditableColumn<\n T,\n C extends keyof CellTypeConfigMap = keyof CellTypeConfigMap,\n> = C extends C\n ? EditableColumnBase<T> & {\n cellType: C;\n typeConfig?: CellTypeConfigMap[C] extends never\n ? never\n : CellTypeConfigMap[C];\n }\n : never;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../../src/state/EditableTable/types.ts"],"sourcesContent":["import type { ComponentType } from 'react';\nimport type { TableColumn } from '../../model/tableColumn';\nimport type {\n CellViewProps,\n CellEditProps,\n} from '../../components/EditableTable/types';\n\nexport interface Cell {\n rowKey: string;\n columnId: string;\n}\n\nexport interface CellBorder {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\nexport type ValidationRule =\n | { type: 'required'; message: string }\n | { type: 'min' | 'max'; value: number; message: string }\n | { type: 'minLength' | 'maxLength'; value: number; message: string }\n | { type: 'pattern'; value: RegExp; message: string }\n | { type: 'custom'; validate: (value: unknown) => boolean; message: string };\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: string[];\n}\n\nexport interface CellType {\n type: keyof CellTypeConfigMap;\n\n /** Render cell in view mode (read-only display) */\n ViewComponent: ComponentType<CellViewProps<any>>;\n\n /** Render cell in edit mode (inline editor). Optional — omit for view-only cells. */\n EditComponent?: ComponentType<CellEditProps<any>>;\n\n /** Serialize value to clipboard string */\n serialize?: (value: any) => string;\n\n /** Deserialize clipboard string to value */\n deserialize?: (raw: string) => any;\n\n /** Validate a cell value. Return null if valid, or error message string. */\n validate?: (value: any, rules?: ValidationRule[]) => string | null;\n\n /** Can this cell type be edited? (default: true) */\n editable?: boolean;\n\n /** Can this cell type be cleared with Delete key? (default: true) */\n clearable?: boolean;\n\n /** Toggle value on single click (e.g., boolean checkbox). Skips focus→edit flow. */\n toggleValue?: (value: any) => any;\n\n /** Called on type-to-edit. Return object with cleared value and/or prevent flag.\n * CMS-web pattern: text clears to '', number clears only for digits, date blocks non-digits. */\n onTypeToEdit?: (params: {\n key: string;\n }) => { value?: any; prevent?: boolean } | undefined;\n}\n\nexport interface CellTypeConfigMap {\n text: never;\n number: never;\n boolean: never;\n url: never;\n email: never;\n select: SelectCellConfig;\n date: never;\n object: never;\n custom: Record<string, unknown>;\n}\n\nexport interface SelectCellConfig {\n options: { id: string; value: string }[];\n}\n\ninterface EditableColumnBase<T> extends Omit<TableColumn<T>, 'render'> {\n id: string;\n /** Column type — maps to a CellType in the registry */\n cellType: keyof CellTypeConfigMap;\n\n /** Extract the cell value from the row data */\n getValue: (item: T) => any;\n\n /** Return updated item with new cell value (immutable) */\n setValue?: (item: T, value: any) => T;\n\n /** Column-level validation rules */\n validation?: ValidationRule[];\n\n /** Is this column editable? (default: true if setValue exists) */\n editable?: boolean | ((item: T) => boolean);\n}\n\nexport type EditableColumn<\n T,\n C extends keyof CellTypeConfigMap = keyof CellTypeConfigMap,\n> = C extends C\n ? EditableColumnBase<T> & {\n cellType: C;\n typeConfig?: CellTypeConfigMap[C] extends never\n ? never\n : CellTypeConfigMap[C];\n }\n : never;\n"],"mappings":"","ignoreList":[]}
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "FormPageHeader1910830305";
8
+ var _namespace_ = "FormPageHeader1954382581";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "FormPageHeader1910830305__root"
15
+ "root": "FormPageHeader1954382581__root"
16
16
  };
17
17
  var keyframes = exports.keyframes = {};
18
18
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader1910830305\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader1910830305__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader1954382581\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader1954382581__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -13,6 +13,8 @@ class TableState {
13
13
  (0, _defineProperty2.default)(this, "virtual", void 0);
14
14
  (0, _defineProperty2.default)(this, "loadingRowState", void 0);
15
15
  (0, _defineProperty2.default)(this, "tableDragAndDropState", null);
16
+ /** The sticky table header element (column headers row) */
17
+ (0, _defineProperty2.default)(this, "headerElement", null);
16
18
  (0, _defineProperty2.default)(this, "retryErrorState", () => this.toolbar.retryErrorState());
17
19
  (0, _defineProperty2.default)(this, "onAddItemActionComplete", async items => {
18
20
  return this.toolbar.onAddItemActionComplete(items);
@@ -1 +1 @@
1
- {"version":3,"names":["_ToolbarCollectionState","require","_TableVirtualState","_LoadingRowState","TableState","constructor","params","_defineProperty2","default","toolbar","retryErrorState","items","onAddItemActionComplete","columnId","forceDirection","collection","sort","id","ToolbarCollectionState","container","componentType","virtual","TableVirtualState","table","loadingRowState","LoadingRowState","visibleColumns","selectedOrderedColumnsOrAll","tableState","itemsContentWidth","itemsContentRect","rect","width","itemsToRenderCount","result","size","init","keyedItems","getStickyColumnsCount","_customColumnsState$d","horizontalScroll","stickyColumns","tableDragAndDropState","customColumnsState","customColumnsProps","customColumnsStateInitialized","stickySelectionColumn","showSelection","customColumnsIsEffective","reorderDisabledColumnsIsEffective","dragAndDrop","orderedColumnsByReorderDisabled","reorderDisabled","length","checkboxColumnStickyCompat","showEmptyState","multi","hasAvailableItems","resultOriginQuerySearch","hasNonPersistentActiveFilters","showErrorState","errorStatus","showLoadingState","initTask","status","isIdle","isLoading","exports"],"sources":["../../../src/state/TableState.ts"],"sourcesContent":["import {\n CollectionState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport {\n ToolbarCollectionState,\n ToolbarCollectionStateParamsInitParams,\n} from './ToolbarCollectionState';\nimport { TableVirtualState } from './TableVirtualState';\nimport { DragAndDropState } from '../components/DragAndDrop';\nimport { ICollectionComponentState } from './ICollectionComponentState';\nimport { LoadingRowState } from '../components/LoadingRow/LoadingRowState';\n\nexport interface TableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n}\n\ninterface TableDragAndDropStateBase<T, F extends FiltersMap> {\n getStickyColumnsCount: (params: { stickyColumns: number }) => number;\n init: () => void;\n dnd: DragAndDropState<T, F>;\n}\n\nexport interface TableStateInitParams\n extends ToolbarCollectionStateParamsInitParams {\n hasMultiLevelSorting?: boolean;\n}\n\nexport interface TableStatePublicAPI<T, F extends FiltersMap> {\n /**\n * Underlying [CollectionState](./?path=/story/common-state--collectionstate) instance\n * @external\n */\n readonly collection: CollectionState<T, F>;\n /**\n * Underlying [ToolbarCollectionState](./?path=/story/common-state--toolbarcollectionstate) instance\n * @external\n */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /**\n * Reset active filters & sorting and adds new items to the collection.\n * @external\n * @param items - new items to add to the collection\n */\n onAddItemActionComplete(items: T[]): void;\n\n /**\n * Visible columns as selected via [CustomColumns](./?path=/story/features-display--customcolumns)\n * @external\n */\n readonly visibleColumns: { id: string }[];\n\n /**\n * Sorts the collection by a specified column and optional sort direction.\n * @external\n */\n sort: (columnId: string, params: { forceDirection?: SortOrder }) => void;\n}\n\nexport class TableState<T, F extends FiltersMap>\n implements ICollectionComponentState, TableStatePublicAPI<T, F>\n{\n readonly toolbar;\n readonly virtual;\n readonly loadingRowState;\n\n tableDragAndDropState: TableDragAndDropStateBase<T, F> | null = null;\n\n constructor(params: TableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'Table',\n });\n\n this.virtual = new TableVirtualState({\n table: this,\n });\n\n this.loadingRowState = new LoadingRowState();\n }\n\n get visibleColumns() {\n return this.toolbar.selectedOrderedColumnsOrAll;\n }\n\n // backwards compat\n get table() {\n return this.toolbar;\n }\n\n get collection() {\n return this.table.collection;\n }\n\n get tableState() {\n return this;\n }\n\n get itemsContentWidth() {\n return this.toolbar.itemsContentRect.rect.width ?? 0;\n }\n\n get itemsToRenderCount() {\n return this.collection.result.size;\n }\n\n init(params: TableStateInitParams) {\n return this.table.init(params);\n }\n\n get keyedItems() {\n return this.collection.result.keyedItems;\n }\n\n getStickyColumnsCount(params: {\n stickyColumns?: number;\n horizontalScroll?: boolean;\n showSelection?: boolean;\n stickySelectionColumn?: boolean;\n }) {\n const { horizontalScroll } = params;\n\n if (!horizontalScroll) {\n return params.stickyColumns;\n }\n\n const { tableDragAndDropState, toolbar } = this;\n\n const {\n customColumnsState,\n customColumnsProps,\n customColumnsStateInitialized,\n } = toolbar;\n\n const { stickySelectionColumn, showSelection } = params;\n\n let stickyColumns = params.stickyColumns ?? 0;\n\n const customColumnsIsEffective =\n customColumnsProps && customColumnsState && customColumnsStateInitialized;\n\n const reorderDisabledColumnsIsEffective =\n !!customColumnsState?.dragAndDrop?.orderedColumnsByReorderDisabled\n .reorderDisabled?.length;\n\n if (customColumnsIsEffective) {\n stickyColumns = customColumnsState.getStickyColumnsCount({\n ...params,\n stickyColumns,\n });\n }\n\n if (tableDragAndDropState) {\n stickyColumns = tableDragAndDropState.getStickyColumnsCount({\n ...params,\n stickyColumns,\n });\n }\n\n const checkboxColumnStickyCompat =\n reorderDisabledColumnsIsEffective ||\n stickySelectionColumn ||\n tableDragAndDropState != null;\n\n if (showSelection && checkboxColumnStickyCompat) {\n stickyColumns += 1;\n }\n\n return stickyColumns;\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState;\n }\n\n get hasAvailableItems() {\n return this.toolbar.multi.hasAvailableItems;\n }\n\n get resultOriginQuerySearch() {\n return this.toolbar.multi.resultOriginQuerySearch;\n }\n\n get hasNonPersistentActiveFilters() {\n return this.toolbar.multi.hasNonPersistentActiveFilters;\n }\n\n get showErrorState() {\n return this.toolbar.multi.showErrorState;\n }\n\n get errorStatus() {\n return this.toolbar.multi.errorStatus;\n }\n\n get showLoadingState() {\n const { initTask, toolbar } = this;\n return (\n initTask.status.isIdle ||\n initTask.status.isLoading ||\n toolbar.multi.showLoadingState\n );\n }\n\n get initTask() {\n return this.toolbar.initTask;\n }\n\n retryErrorState = () => this.toolbar.retryErrorState();\n\n onAddItemActionComplete = async (items: T[]) => {\n return this.toolbar.onAddItemActionComplete(items);\n };\n\n sort = (\n columnId: string,\n { forceDirection }: { forceDirection?: SortOrder } = {},\n ) => {\n this.collection.sort({ id: columnId }, { forceDirection });\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_ToolbarCollectionState","require","_TableVirtualState","_LoadingRowState","TableState","constructor","params","_defineProperty2","default","toolbar","retryErrorState","items","onAddItemActionComplete","columnId","forceDirection","collection","sort","id","ToolbarCollectionState","container","componentType","virtual","TableVirtualState","table","loadingRowState","LoadingRowState","visibleColumns","selectedOrderedColumnsOrAll","tableState","itemsContentWidth","itemsContentRect","rect","width","itemsToRenderCount","result","size","init","keyedItems","getStickyColumnsCount","_customColumnsState$d","horizontalScroll","stickyColumns","tableDragAndDropState","customColumnsState","customColumnsProps","customColumnsStateInitialized","stickySelectionColumn","showSelection","customColumnsIsEffective","reorderDisabledColumnsIsEffective","dragAndDrop","orderedColumnsByReorderDisabled","reorderDisabled","length","checkboxColumnStickyCompat","showEmptyState","multi","hasAvailableItems","resultOriginQuerySearch","hasNonPersistentActiveFilters","showErrorState","errorStatus","showLoadingState","initTask","status","isIdle","isLoading","exports"],"sources":["../../../src/state/TableState.ts"],"sourcesContent":["import {\n CollectionState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport {\n ToolbarCollectionState,\n ToolbarCollectionStateParamsInitParams,\n} from './ToolbarCollectionState';\nimport { TableVirtualState } from './TableVirtualState';\nimport { DragAndDropState } from '../components/DragAndDrop';\nimport { ICollectionComponentState } from './ICollectionComponentState';\nimport { LoadingRowState } from '../components/LoadingRow/LoadingRowState';\n\nexport interface TableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n}\n\ninterface TableDragAndDropStateBase<T, F extends FiltersMap> {\n getStickyColumnsCount: (params: { stickyColumns: number }) => number;\n init: () => void;\n dnd: DragAndDropState<T, F>;\n}\n\nexport interface TableStateInitParams\n extends ToolbarCollectionStateParamsInitParams {\n hasMultiLevelSorting?: boolean;\n}\n\nexport interface TableStatePublicAPI<T, F extends FiltersMap> {\n /**\n * Underlying [CollectionState](./?path=/story/common-state--collectionstate) instance\n * @external\n */\n readonly collection: CollectionState<T, F>;\n /**\n * Underlying [ToolbarCollectionState](./?path=/story/common-state--toolbarcollectionstate) instance\n * @external\n */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /**\n * Reset active filters & sorting and adds new items to the collection.\n * @external\n * @param items - new items to add to the collection\n */\n onAddItemActionComplete(items: T[]): void;\n\n /**\n * Visible columns as selected via [CustomColumns](./?path=/story/features-display--customcolumns)\n * @external\n */\n readonly visibleColumns: { id: string }[];\n\n /**\n * Sorts the collection by a specified column and optional sort direction.\n * @external\n */\n sort: (columnId: string, params: { forceDirection?: SortOrder }) => void;\n}\n\nexport class TableState<T, F extends FiltersMap>\n implements ICollectionComponentState, TableStatePublicAPI<T, F>\n{\n readonly toolbar;\n readonly virtual;\n readonly loadingRowState;\n\n tableDragAndDropState: TableDragAndDropStateBase<T, F> | null = null;\n\n /** The sticky table header element (column headers row) */\n headerElement: HTMLElement | null = null;\n\n constructor(params: TableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'Table',\n });\n\n this.virtual = new TableVirtualState({\n table: this,\n });\n\n this.loadingRowState = new LoadingRowState();\n }\n\n get visibleColumns() {\n return this.toolbar.selectedOrderedColumnsOrAll;\n }\n\n // backwards compat\n get table() {\n return this.toolbar;\n }\n\n get collection() {\n return this.table.collection;\n }\n\n get tableState() {\n return this;\n }\n\n get itemsContentWidth() {\n return this.toolbar.itemsContentRect.rect.width ?? 0;\n }\n\n get itemsToRenderCount() {\n return this.collection.result.size;\n }\n\n init(params: TableStateInitParams) {\n return this.table.init(params);\n }\n\n get keyedItems() {\n return this.collection.result.keyedItems;\n }\n\n getStickyColumnsCount(params: {\n stickyColumns?: number;\n horizontalScroll?: boolean;\n showSelection?: boolean;\n stickySelectionColumn?: boolean;\n }) {\n const { horizontalScroll } = params;\n\n if (!horizontalScroll) {\n return params.stickyColumns;\n }\n\n const { tableDragAndDropState, toolbar } = this;\n\n const {\n customColumnsState,\n customColumnsProps,\n customColumnsStateInitialized,\n } = toolbar;\n\n const { stickySelectionColumn, showSelection } = params;\n\n let stickyColumns = params.stickyColumns ?? 0;\n\n const customColumnsIsEffective =\n customColumnsProps && customColumnsState && customColumnsStateInitialized;\n\n const reorderDisabledColumnsIsEffective =\n !!customColumnsState?.dragAndDrop?.orderedColumnsByReorderDisabled\n .reorderDisabled?.length;\n\n if (customColumnsIsEffective) {\n stickyColumns = customColumnsState.getStickyColumnsCount({\n ...params,\n stickyColumns,\n });\n }\n\n if (tableDragAndDropState) {\n stickyColumns = tableDragAndDropState.getStickyColumnsCount({\n ...params,\n stickyColumns,\n });\n }\n\n const checkboxColumnStickyCompat =\n reorderDisabledColumnsIsEffective ||\n stickySelectionColumn ||\n tableDragAndDropState != null;\n\n if (showSelection && checkboxColumnStickyCompat) {\n stickyColumns += 1;\n }\n\n return stickyColumns;\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState;\n }\n\n get hasAvailableItems() {\n return this.toolbar.multi.hasAvailableItems;\n }\n\n get resultOriginQuerySearch() {\n return this.toolbar.multi.resultOriginQuerySearch;\n }\n\n get hasNonPersistentActiveFilters() {\n return this.toolbar.multi.hasNonPersistentActiveFilters;\n }\n\n get showErrorState() {\n return this.toolbar.multi.showErrorState;\n }\n\n get errorStatus() {\n return this.toolbar.multi.errorStatus;\n }\n\n get showLoadingState() {\n const { initTask, toolbar } = this;\n return (\n initTask.status.isIdle ||\n initTask.status.isLoading ||\n toolbar.multi.showLoadingState\n );\n }\n\n get initTask() {\n return this.toolbar.initTask;\n }\n\n retryErrorState = () => this.toolbar.retryErrorState();\n\n onAddItemActionComplete = async (items: T[]) => {\n return this.toolbar.onAddItemActionComplete(items);\n };\n\n sort = (\n columnId: string,\n { forceDirection }: { forceDirection?: SortOrder } = {},\n ) => {\n this.collection.sort({ id: columnId }, { forceDirection });\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -23,8 +23,13 @@ class ToolbarResponsiveState {
23
23
  (0, _defineProperty2.default)(this, "search", void 0);
24
24
  (0, _defineProperty2.default)(this, "filters", void 0);
25
25
  (0, _defineProperty2.default)(this, "_groups", void 0);
26
+ (0, _defineProperty2.default)(this, "_shouldOverflow", false);
26
27
  (0, _defineProperty2.default)(this, "_measurementElement", null);
27
28
  (0, _defineProperty2.default)(this, "_contentElement", null);
29
+ // Width of non-group content that is removed from the DOM during overflow
30
+ // (e.g., tableGridSwitchButton). Must be accounted for in the exit-overflow
31
+ // calculation to prevent flicker.
32
+ (0, _defineProperty2.default)(this, "_overflowHiddenContentWidth", 0);
28
33
  (0, _defineProperty2.default)(this, "toolbar", void 0);
29
34
  (0, _defineProperty2.default)(this, "leftGroupState", null);
30
35
  (0, _defineProperty2.default)(this, "_recomputeThrottled", void 0);
@@ -43,6 +48,8 @@ class ToolbarResponsiveState {
43
48
  });
44
49
  this._groups = [this.actions, this.filters, this.search];
45
50
  (0, _mobx.makeObservable)(this, {
51
+ _shouldOverflow: _mobx.observable.ref,
52
+ _overflowHiddenContentWidth: _mobx.observable.ref,
46
53
  responsiveDisabled: _mobx.computed,
47
54
  _applyTargetState: _mobx.action
48
55
  });
@@ -86,12 +93,34 @@ class ToolbarResponsiveState {
86
93
  collapsedWidth: g.collapsedWidth,
87
94
  currentlyShrunk: g._shouldShrink
88
95
  }));
89
- const groupsTotal = groups.reduce((sum, g) => sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth), 0);
96
+
97
+ // When overflowing, the overflowable groups are removed from the DOM and
98
+ // replaced by the overflow button. Compute groupsTotal to reflect what the
99
+ // algorithm expects (all groups at their current widths) so that
100
+ // availableWidth = containerWidth - nonGroupContent is accurate.
101
+ let groupsTotal;
102
+ if (this._shouldOverflow) {
103
+ // contentWidth includes the overflow button but not the overflowable groups.
104
+ // groupsTotal must match: only non-overflowed groups + overflow button.
105
+ const overflowableIndices = ToolbarResponsiveState._overflowableGroupIndices;
106
+ const nonOverflowedTotal = groups.reduce((sum, g, i) => overflowableIndices.includes(i) ? sum : sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth), 0);
107
+ groupsTotal = nonOverflowedTotal + _toolbarResponsiveConstants.OVERFLOW_BUTTON_WIDTH;
108
+ } else {
109
+ groupsTotal = groups.reduce((sum, g) => sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth), 0);
110
+ }
111
+
112
+ // nonGroupContent that is hidden during overflow but would reappear on exit.
113
+ // Must be added back so the algorithm doesn't overestimate available space.
114
+ const hiddenContentAdjustment = this._shouldOverflow ? this._overflowHiddenContentWidth : 0;
90
115
  return {
91
- availableWidth: containerWidth - (contentWidth - groupsTotal),
116
+ availableWidth: containerWidth - (contentWidth - groupsTotal) - hiddenContentAdjustment,
92
117
  groups
93
118
  };
94
119
  }
120
+
121
+ // Indices of groups that can be absorbed into the overflow menu.
122
+ // actions = 0, filters = 1 (search = 2 stays visible).
123
+
95
124
  _applyTargetState() {
96
125
  const input = this._computeResponsiveInput();
97
126
  if (!input) {
@@ -99,11 +128,15 @@ class ToolbarResponsiveState {
99
128
  }
100
129
  const result = (0, _computeResponsiveTargetState.computeResponsiveTargetState)({
101
130
  ...input,
102
- expandThresholdBuffer: EXPAND_THRESHOLD_BUFFER
131
+ expandThresholdBuffer: EXPAND_THRESHOLD_BUFFER,
132
+ currentlyOverflowing: this._shouldOverflow,
133
+ overflowButtonWidth: _toolbarResponsiveConstants.OVERFLOW_BUTTON_WIDTH,
134
+ overflowableGroupIndices: ToolbarResponsiveState._overflowableGroupIndices
103
135
  });
104
136
  this._groups.forEach((g, i) => {
105
- g._shouldShrink = result[i].shouldShrink;
137
+ g._shouldShrink = result.groups[i].shouldShrink;
106
138
  });
139
+ this._shouldOverflow = result.shouldOverflow;
107
140
  }
108
141
  init() {
109
142
  const {
@@ -134,4 +167,5 @@ class ToolbarResponsiveState {
134
167
  }
135
168
  }
136
169
  exports.ToolbarResponsiveState = ToolbarResponsiveState;
170
+ (0, _defineProperty2.default)(ToolbarResponsiveState, "_overflowableGroupIndices", [0, 1]);
137
171
  //# sourceMappingURL=ToolbarResponsiveState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_mobx","_ToolbarResponsivePriorityState","_computeResponsiveTargetState","_toolbarResponsiveConstants","EXPAND_THRESHOLD_BUFFER","ToolbarResponsiveState","container","toolbar","constructor","params","_defineProperty2","default","actions","ToolbarResponsivePriorityState","responsive","filters","search","expandedWidth","SEARCH_EXPANDED_WIDTH","collapsedWidth","SEARCH_COLLAPSED_WIDTH","_groups","makeObservable","responsiveDisabled","computed","_applyTargetState","action","_syncedProps","internalExperiments","useResponsiveLayout","enabled","_scheduleRecompute","_this$_recomputeThrot","_recomputeThrottled","call","_computeResponsiveInput","_this$leftGroupState","el","_measurementElement","contentEl","_contentElement","leftGroupExcess","leftGroupState","getExcessWidth","containerWidth","clientWidth","contentWidth","scrollWidth","groups","map","g","currentlyShrunk","_shouldShrink","groupsTotal","reduce","sum","availableWidth","input","result","computeResponsiveTargetState","expandThresholdBuffer","forEach","i","shouldShrink","init","lodash","throttle","_rafId","window","requestAnimationFrame","runInAction","containerEl","toolbarRect","element","_this$_recomputeThrot2","cancel","disposers","addResizeObserver","_this$_recomputeThrot3","d","cancelAnimationFrame","exports"],"sources":["../../../../src/state/Toolbar/ToolbarResponsiveState.ts"],"sourcesContent":["import { addResizeObserver } from '@wix/bex-core';\nimport { action, computed, makeObservable, runInAction } from 'mobx';\nimport { ToolbarResponsivePriorityState } from './ToolbarResponsivePriorityState';\nimport { ToolbarState } from '../../components/CollectionToolbars/ToolbarState';\nimport { ToolbarLeftGroupState } from './ToolbarLeftGroupState';\nimport { computeResponsiveTargetState } from './computeResponsiveTargetState';\nimport {\n SEARCH_COLLAPSED_WIDTH,\n SEARCH_EXPANDED_WIDTH,\n} from './toolbarResponsiveConstants';\n\nexport interface ToolbarResponsiveStateParams {\n readonly toolbar: ToolbarState<any, any>;\n}\n\n// Buffer (in px) added to the expand threshold to prevent flickering near the\n// expand/collapse boundary. Tuned to ~2-3x the inter-element gap (SP2 = 12px) --\n// large enough to absorb measurement rounding and flex reflow, small enough that\n// the dead zone per group isn't visually noticeable during gradual resizing.\nconst EXPAND_THRESHOLD_BUFFER = 30;\n\nexport class ToolbarResponsiveState {\n readonly actions: ToolbarResponsivePriorityState;\n readonly search: ToolbarResponsivePriorityState;\n readonly filters: ToolbarResponsivePriorityState;\n\n private readonly _groups: ToolbarResponsivePriorityState[];\n\n _measurementElement: Element | null = null;\n _contentElement: Element | null = null;\n\n readonly toolbar: ToolbarState<any, any>;\n\n leftGroupState: ToolbarLeftGroupState<any, any> | null = null;\n\n get container() {\n return this.toolbar.toolbar.container;\n }\n\n constructor(params: ToolbarResponsiveStateParams) {\n this.toolbar = params.toolbar;\n\n this.actions = new ToolbarResponsivePriorityState({\n responsive: this,\n });\n\n this.filters = new ToolbarResponsivePriorityState({\n responsive: this,\n });\n\n this.search = new ToolbarResponsivePriorityState({\n responsive: this,\n expandedWidth: SEARCH_EXPANDED_WIDTH,\n collapsedWidth: SEARCH_COLLAPSED_WIDTH,\n });\n\n this._groups = [this.actions, this.filters, this.search];\n\n makeObservable(this, {\n responsiveDisabled: computed,\n _applyTargetState: action,\n });\n }\n\n get responsiveDisabled() {\n const {\n toolbar: {\n toolbar: { _syncedProps },\n },\n container: { internalExperiments },\n } = this;\n\n return (\n !_syncedProps?.useResponsiveLayout ||\n !internalExperiments?.enabled('specs.cairo.EnableResponsiveToolbar11420')\n );\n }\n\n _scheduleRecompute() {\n if (this.responsiveDisabled) {\n return;\n }\n this._recomputeThrottled?.();\n }\n\n private _computeResponsiveInput() {\n const el = this._measurementElement;\n const contentEl = this._contentElement;\n if (!el || !contentEl) {\n return null;\n }\n\n // The left group (title/tabs/views) has flex:1 and absorbs freed space when\n // right-side items shrink. Account for its excess width so the algorithm sees\n // the true available space and can expand items back when the container grows.\n const leftGroupExcess = this.leftGroupState?.getExcessWidth() ?? 0;\n const containerWidth = el.clientWidth + leftGroupExcess;\n const contentWidth = contentEl.scrollWidth;\n\n const groups = this._groups.map((g) => ({\n expandedWidth: g.expandedWidth,\n collapsedWidth: g.collapsedWidth,\n currentlyShrunk: g._shouldShrink,\n }));\n\n const groupsTotal = groups.reduce(\n (sum, g) => sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth),\n 0,\n );\n\n return {\n availableWidth: containerWidth - (contentWidth - groupsTotal),\n groups,\n };\n }\n\n _applyTargetState() {\n const input = this._computeResponsiveInput();\n if (!input) {\n return;\n }\n\n const result = computeResponsiveTargetState({\n ...input,\n expandThresholdBuffer: EXPAND_THRESHOLD_BUFFER,\n });\n\n this._groups.forEach((g, i) => {\n g._shouldShrink = result[i].shouldShrink;\n });\n }\n\n private _recomputeThrottled?: ReturnType<typeof this.container.lodash.throttle>;\n private _rafId = 0;\n\n init() {\n const { responsiveDisabled } = this;\n\n if (responsiveDisabled) {\n return () => {};\n }\n\n this._recomputeThrottled = this.container.lodash.throttle(() => {\n this._rafId = window.requestAnimationFrame(() => {\n runInAction(() => this._applyTargetState());\n });\n }, 200);\n\n const containerEl =\n this.toolbar.toolbar.toolbarRect.element;\n if (!containerEl) {\n return () => {\n this._recomputeThrottled?.cancel();\n };\n }\n\n const disposers = [\n addResizeObserver(containerEl, this._recomputeThrottled),\n ];\n\n return () => {\n disposers.forEach((d) => d?.());\n this._recomputeThrottled?.cancel();\n cancelAnimationFrame(this._rafId);\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_mobx","_ToolbarResponsivePriorityState","_computeResponsiveTargetState","_toolbarResponsiveConstants","EXPAND_THRESHOLD_BUFFER","ToolbarResponsiveState","container","toolbar","constructor","params","_defineProperty2","default","actions","ToolbarResponsivePriorityState","responsive","filters","search","expandedWidth","SEARCH_EXPANDED_WIDTH","collapsedWidth","SEARCH_COLLAPSED_WIDTH","_groups","makeObservable","_shouldOverflow","observable","ref","_overflowHiddenContentWidth","responsiveDisabled","computed","_applyTargetState","action","_syncedProps","internalExperiments","useResponsiveLayout","enabled","_scheduleRecompute","_this$_recomputeThrot","_recomputeThrottled","call","_computeResponsiveInput","_this$leftGroupState","el","_measurementElement","contentEl","_contentElement","leftGroupExcess","leftGroupState","getExcessWidth","containerWidth","clientWidth","contentWidth","scrollWidth","groups","map","g","currentlyShrunk","_shouldShrink","groupsTotal","overflowableIndices","_overflowableGroupIndices","nonOverflowedTotal","reduce","sum","i","includes","OVERFLOW_BUTTON_WIDTH","hiddenContentAdjustment","availableWidth","input","result","computeResponsiveTargetState","expandThresholdBuffer","currentlyOverflowing","overflowButtonWidth","overflowableGroupIndices","forEach","shouldShrink","shouldOverflow","init","lodash","throttle","_rafId","window","requestAnimationFrame","runInAction","containerEl","toolbarRect","element","_this$_recomputeThrot2","cancel","disposers","addResizeObserver","_this$_recomputeThrot3","d","cancelAnimationFrame","exports"],"sources":["../../../../src/state/Toolbar/ToolbarResponsiveState.ts"],"sourcesContent":["import { addResizeObserver } from '@wix/bex-core';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { ToolbarResponsivePriorityState } from './ToolbarResponsivePriorityState';\nimport { ToolbarState } from '../../components/CollectionToolbars/ToolbarState';\nimport { ToolbarLeftGroupState } from './ToolbarLeftGroupState';\nimport { computeResponsiveTargetState } from './computeResponsiveTargetState';\nimport {\n OVERFLOW_BUTTON_WIDTH,\n SEARCH_COLLAPSED_WIDTH,\n SEARCH_EXPANDED_WIDTH,\n} from './toolbarResponsiveConstants';\n\nexport interface ToolbarResponsiveStateParams {\n readonly toolbar: ToolbarState<any, any>;\n}\n\n// Buffer (in px) added to the expand threshold to prevent flickering near the\n// expand/collapse boundary. Tuned to ~2-3x the inter-element gap (SP2 = 12px) --\n// large enough to absorb measurement rounding and flex reflow, small enough that\n// the dead zone per group isn't visually noticeable during gradual resizing.\nconst EXPAND_THRESHOLD_BUFFER = 30;\n\nexport class ToolbarResponsiveState {\n readonly actions: ToolbarResponsivePriorityState;\n readonly search: ToolbarResponsivePriorityState;\n readonly filters: ToolbarResponsivePriorityState;\n\n private readonly _groups: ToolbarResponsivePriorityState[];\n\n _shouldOverflow = false;\n\n _measurementElement: Element | null = null;\n _contentElement: Element | null = null;\n\n // Width of non-group content that is removed from the DOM during overflow\n // (e.g., tableGridSwitchButton). Must be accounted for in the exit-overflow\n // calculation to prevent flicker.\n _overflowHiddenContentWidth = 0;\n\n readonly toolbar: ToolbarState<any, any>;\n\n leftGroupState: ToolbarLeftGroupState<any, any> | null = null;\n\n get container() {\n return this.toolbar.toolbar.container;\n }\n\n constructor(params: ToolbarResponsiveStateParams) {\n this.toolbar = params.toolbar;\n\n this.actions = new ToolbarResponsivePriorityState({\n responsive: this,\n });\n\n this.filters = new ToolbarResponsivePriorityState({\n responsive: this,\n });\n\n this.search = new ToolbarResponsivePriorityState({\n responsive: this,\n expandedWidth: SEARCH_EXPANDED_WIDTH,\n collapsedWidth: SEARCH_COLLAPSED_WIDTH,\n });\n\n this._groups = [this.actions, this.filters, this.search];\n\n makeObservable(this, {\n _shouldOverflow: observable.ref,\n _overflowHiddenContentWidth: observable.ref,\n responsiveDisabled: computed,\n _applyTargetState: action,\n });\n }\n\n get responsiveDisabled() {\n const {\n toolbar: {\n toolbar: { _syncedProps },\n },\n container: { internalExperiments },\n } = this;\n\n return (\n !_syncedProps?.useResponsiveLayout ||\n !internalExperiments?.enabled('specs.cairo.EnableResponsiveToolbar11420')\n );\n }\n\n _scheduleRecompute() {\n if (this.responsiveDisabled) {\n return;\n }\n this._recomputeThrottled?.();\n }\n\n private _computeResponsiveInput() {\n const el = this._measurementElement;\n const contentEl = this._contentElement;\n if (!el || !contentEl) {\n return null;\n }\n\n // The left group (title/tabs/views) has flex:1 and absorbs freed space when\n // right-side items shrink. Account for its excess width so the algorithm sees\n // the true available space and can expand items back when the container grows.\n const leftGroupExcess = this.leftGroupState?.getExcessWidth() ?? 0;\n const containerWidth = el.clientWidth + leftGroupExcess;\n const contentWidth = contentEl.scrollWidth;\n\n const groups = this._groups.map((g) => ({\n expandedWidth: g.expandedWidth,\n collapsedWidth: g.collapsedWidth,\n currentlyShrunk: g._shouldShrink,\n }));\n\n // When overflowing, the overflowable groups are removed from the DOM and\n // replaced by the overflow button. Compute groupsTotal to reflect what the\n // algorithm expects (all groups at their current widths) so that\n // availableWidth = containerWidth - nonGroupContent is accurate.\n let groupsTotal: number;\n if (this._shouldOverflow) {\n // contentWidth includes the overflow button but not the overflowable groups.\n // groupsTotal must match: only non-overflowed groups + overflow button.\n const overflowableIndices =\n ToolbarResponsiveState._overflowableGroupIndices;\n const nonOverflowedTotal = groups.reduce(\n (sum, g, i) =>\n overflowableIndices.includes(i)\n ? sum\n : sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth),\n 0,\n );\n groupsTotal = nonOverflowedTotal + OVERFLOW_BUTTON_WIDTH;\n } else {\n groupsTotal = groups.reduce(\n (sum, g) =>\n sum + (g.currentlyShrunk ? g.collapsedWidth : g.expandedWidth),\n 0,\n );\n }\n\n // nonGroupContent that is hidden during overflow but would reappear on exit.\n // Must be added back so the algorithm doesn't overestimate available space.\n const hiddenContentAdjustment = this._shouldOverflow\n ? this._overflowHiddenContentWidth\n : 0;\n\n return {\n availableWidth:\n containerWidth - (contentWidth - groupsTotal) - hiddenContentAdjustment,\n groups,\n };\n }\n\n // Indices of groups that can be absorbed into the overflow menu.\n // actions = 0, filters = 1 (search = 2 stays visible).\n private static readonly _overflowableGroupIndices = [0, 1];\n\n _applyTargetState() {\n const input = this._computeResponsiveInput();\n if (!input) {\n return;\n }\n\n const result = computeResponsiveTargetState({\n ...input,\n expandThresholdBuffer: EXPAND_THRESHOLD_BUFFER,\n currentlyOverflowing: this._shouldOverflow,\n overflowButtonWidth: OVERFLOW_BUTTON_WIDTH,\n overflowableGroupIndices:\n ToolbarResponsiveState._overflowableGroupIndices,\n });\n\n this._groups.forEach((g, i) => {\n g._shouldShrink = result.groups[i].shouldShrink;\n });\n this._shouldOverflow = result.shouldOverflow;\n }\n\n private _recomputeThrottled?: ReturnType<\n typeof this.container.lodash.throttle\n >;\n private _rafId = 0;\n\n init() {\n const { responsiveDisabled } = this;\n\n if (responsiveDisabled) {\n return () => {};\n }\n\n this._recomputeThrottled = this.container.lodash.throttle(() => {\n this._rafId = window.requestAnimationFrame(() => {\n runInAction(() => this._applyTargetState());\n });\n }, 200);\n\n const containerEl = this.toolbar.toolbar.toolbarRect.element;\n if (!containerEl) {\n return () => {\n this._recomputeThrottled?.cancel();\n };\n }\n\n const disposers = [\n addResizeObserver(containerEl, this._recomputeThrottled),\n ];\n\n return () => {\n disposers.forEach((d) => d?.());\n this._recomputeThrottled?.cancel();\n cancelAnimationFrame(this._rafId);\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAOA,IAAAE,+BAAA,GAAAF,OAAA;AAGA,IAAAG,6BAAA,GAAAH,OAAA;AACA,IAAAI,2BAAA,GAAAJ,OAAA;AAUA;AACA;AACA;AACA;AACA,MAAMK,uBAAuB,GAAG,EAAE;AAE3B,MAAMC,sBAAsB,CAAC;EAqBlC,IAAIC,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACC,OAAO,CAACA,OAAO,CAACD,SAAS;EACvC;EAEAE,WAAWA,CAACC,MAAoC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BAlBhC,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,+BAEe,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BACR,IAAI;IAEtC;IACA;IACA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,uCAC8B,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,0BAI0B,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBA6I5C,CAAC;IAtIhB,IAAI,CAACJ,OAAO,GAAGE,MAAM,CAACF,OAAO;IAE7B,IAAI,CAACK,OAAO,GAAG,IAAIC,8DAA8B,CAAC;MAChDC,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,IAAI,CAACC,OAAO,GAAG,IAAIF,8DAA8B,CAAC;MAChDC,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,IAAI,CAACE,MAAM,GAAG,IAAIH,8DAA8B,CAAC;MAC/CC,UAAU,EAAE,IAAI;MAChBG,aAAa,EAAEC,iDAAqB;MACpCC,cAAc,EAAEC;IAClB,CAAC,CAAC;IAEF,IAAI,CAACC,OAAO,GAAG,CAAC,IAAI,CAACT,OAAO,EAAE,IAAI,CAACG,OAAO,EAAE,IAAI,CAACC,MAAM,CAAC;IAExD,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,eAAe,EAAEC,gBAAU,CAACC,GAAG;MAC/BC,2BAA2B,EAAEF,gBAAU,CAACC,GAAG;MAC3CE,kBAAkB,EAAEC,cAAQ;MAC5BC,iBAAiB,EAAEC;IACrB,CAAC,CAAC;EACJ;EAEA,IAAIH,kBAAkBA,CAAA,EAAG;IACvB,MAAM;MACJpB,OAAO,EAAE;QACPA,OAAO,EAAE;UAAEwB;QAAa;MAC1B,CAAC;MACDzB,SAAS,EAAE;QAAE0B;MAAoB;IACnC,CAAC,GAAG,IAAI;IAER,OACE,EAACD,YAAY,YAAZA,YAAY,CAAEE,mBAAmB,KAClC,EAACD,mBAAmB,YAAnBA,mBAAmB,CAAEE,OAAO,CAAC,0CAA0C,CAAC;EAE7E;EAEAC,kBAAkBA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IACnB,IAAI,IAAI,CAACT,kBAAkB,EAAE;MAC3B;IACF;IACA,CAAAS,qBAAA,OAAI,CAACC,mBAAmB,aAAxBD,qBAAA,CAAAE,IAAA,KAA2B,CAAC;EAC9B;EAEQC,uBAAuBA,CAAA,EAAG;IAAA,IAAAC,oBAAA;IAChC,MAAMC,EAAE,GAAG,IAAI,CAACC,mBAAmB;IACnC,MAAMC,SAAS,GAAG,IAAI,CAACC,eAAe;IACtC,IAAI,CAACH,EAAE,IAAI,CAACE,SAAS,EAAE;MACrB,OAAO,IAAI;IACb;;IAEA;IACA;IACA;IACA,MAAME,eAAe,GAAG,EAAAL,oBAAA,OAAI,CAACM,cAAc,qBAAnBN,oBAAA,CAAqBO,cAAc,CAAC,CAAC,KAAI,CAAC;IAClE,MAAMC,cAAc,GAAGP,EAAE,CAACQ,WAAW,GAAGJ,eAAe;IACvD,MAAMK,YAAY,GAAGP,SAAS,CAACQ,WAAW;IAE1C,MAAMC,MAAM,GAAG,IAAI,CAAC/B,OAAO,CAACgC,GAAG,CAAEC,CAAC,KAAM;MACtCrC,aAAa,EAAEqC,CAAC,CAACrC,aAAa;MAC9BE,cAAc,EAAEmC,CAAC,CAACnC,cAAc;MAChCoC,eAAe,EAAED,CAAC,CAACE;IACrB,CAAC,CAAC,CAAC;;IAEH;IACA;IACA;IACA;IACA,IAAIC,WAAmB;IACvB,IAAI,IAAI,CAAClC,eAAe,EAAE;MACxB;MACA;MACA,MAAMmC,mBAAmB,GACvBrD,sBAAsB,CAACsD,yBAAyB;MAClD,MAAMC,kBAAkB,GAAGR,MAAM,CAACS,MAAM,CACtC,CAACC,GAAG,EAAER,CAAC,EAAES,CAAC,KACRL,mBAAmB,CAACM,QAAQ,CAACD,CAAC,CAAC,GAC3BD,GAAG,GACHA,GAAG,IAAIR,CAAC,CAACC,eAAe,GAAGD,CAAC,CAACnC,cAAc,GAAGmC,CAAC,CAACrC,aAAa,CAAC,EACpE,CACF,CAAC;MACDwC,WAAW,GAAGG,kBAAkB,GAAGK,iDAAqB;IAC1D,CAAC,MAAM;MACLR,WAAW,GAAGL,MAAM,CAACS,MAAM,CACzB,CAACC,GAAG,EAAER,CAAC,KACLQ,GAAG,IAAIR,CAAC,CAACC,eAAe,GAAGD,CAAC,CAACnC,cAAc,GAAGmC,CAAC,CAACrC,aAAa,CAAC,EAChE,CACF,CAAC;IACH;;IAEA;IACA;IACA,MAAMiD,uBAAuB,GAAG,IAAI,CAAC3C,eAAe,GAChD,IAAI,CAACG,2BAA2B,GAChC,CAAC;IAEL,OAAO;MACLyC,cAAc,EACZnB,cAAc,IAAIE,YAAY,GAAGO,WAAW,CAAC,GAAGS,uBAAuB;MACzEd;IACF,CAAC;EACH;;EAEA;EACA;;EAGAvB,iBAAiBA,CAAA,EAAG;IAClB,MAAMuC,KAAK,GAAG,IAAI,CAAC7B,uBAAuB,CAAC,CAAC;IAC5C,IAAI,CAAC6B,KAAK,EAAE;MACV;IACF;IAEA,MAAMC,MAAM,GAAG,IAAAC,0DAA4B,EAAC;MAC1C,GAAGF,KAAK;MACRG,qBAAqB,EAAEnE,uBAAuB;MAC9CoE,oBAAoB,EAAE,IAAI,CAACjD,eAAe;MAC1CkD,mBAAmB,EAAER,iDAAqB;MAC1CS,wBAAwB,EACtBrE,sBAAsB,CAACsD;IAC3B,CAAC,CAAC;IAEF,IAAI,CAACtC,OAAO,CAACsD,OAAO,CAAC,CAACrB,CAAC,EAAES,CAAC,KAAK;MAC7BT,CAAC,CAACE,aAAa,GAAGa,MAAM,CAACjB,MAAM,CAACW,CAAC,CAAC,CAACa,YAAY;IACjD,CAAC,CAAC;IACF,IAAI,CAACrD,eAAe,GAAG8C,MAAM,CAACQ,cAAc;EAC9C;EAOAC,IAAIA,CAAA,EAAG;IACL,MAAM;MAAEnD;IAAmB,CAAC,GAAG,IAAI;IAEnC,IAAIA,kBAAkB,EAAE;MACtB,OAAO,MAAM,CAAC,CAAC;IACjB;IAEA,IAAI,CAACU,mBAAmB,GAAG,IAAI,CAAC/B,SAAS,CAACyE,MAAM,CAACC,QAAQ,CAAC,MAAM;MAC9D,IAAI,CAACC,MAAM,GAAGC,MAAM,CAACC,qBAAqB,CAAC,MAAM;QAC/C,IAAAC,iBAAW,EAAC,MAAM,IAAI,CAACvD,iBAAiB,CAAC,CAAC,CAAC;MAC7C,CAAC,CAAC;IACJ,CAAC,EAAE,GAAG,CAAC;IAEP,MAAMwD,WAAW,GAAG,IAAI,CAAC9E,OAAO,CAACA,OAAO,CAAC+E,WAAW,CAACC,OAAO;IAC5D,IAAI,CAACF,WAAW,EAAE;MAChB,OAAO,MAAM;QAAA,IAAAG,sBAAA;QACX,CAAAA,sBAAA,OAAI,CAACnD,mBAAmB,aAAxBmD,sBAAA,CAA0BC,MAAM,CAAC,CAAC;MACpC,CAAC;IACH;IAEA,MAAMC,SAAS,GAAG,CAChB,IAAAC,0BAAiB,EAACN,WAAW,EAAE,IAAI,CAAChD,mBAAmB,CAAC,CACzD;IAED,OAAO,MAAM;MAAA,IAAAuD,sBAAA;MACXF,SAAS,CAACf,OAAO,CAAEkB,CAAC,IAAKA,CAAC,oBAADA,CAAC,CAAG,CAAC,CAAC;MAC/B,CAAAD,sBAAA,OAAI,CAACvD,mBAAmB,aAAxBuD,sBAAA,CAA0BH,MAAM,CAAC,CAAC;MAClCK,oBAAoB,CAAC,IAAI,CAACb,MAAM,CAAC;IACnC,CAAC;EACH;AACF;AAACc,OAAA,CAAA1F,sBAAA,GAAAA,sBAAA;AAAA,IAAAK,gBAAA,CAAAC,OAAA,EAhMYN,sBAAsB,+BAsImB,CAAC,CAAC,EAAE,CAAC,CAAC","ignoreList":[]}
@@ -6,16 +6,24 @@ function computeResponsiveTargetState(params) {
6
6
  const {
7
7
  availableWidth,
8
8
  groups,
9
- expandThresholdBuffer
9
+ expandThresholdBuffer,
10
+ currentlyOverflowing = false,
11
+ overflowButtonWidth = 0,
12
+ overflowableGroupIndices = []
10
13
  } = params;
11
14
  if (groups.length === 0) {
12
- return [];
15
+ return {
16
+ groups: [],
17
+ shouldOverflow: false
18
+ };
13
19
  }
14
20
  const result = groups.map(g => ({
15
21
  shouldShrink: g.currentlyShrunk
16
22
  }));
17
23
  const widthOf = (group, index) => result[index].shouldShrink ? group.collapsedWidth : group.expandedWidth;
18
24
  let total = groups.reduce((sum, g, i) => sum + widthOf(g, i), 0);
25
+
26
+ // Shrink pass
19
27
  for (let i = 0; i < groups.length; i++) {
20
28
  if (total <= availableWidth) {
21
29
  break;
@@ -26,23 +34,54 @@ function computeResponsiveTargetState(params) {
26
34
  total -= savings;
27
35
  }
28
36
  }
29
- for (let i = groups.length - 1; i >= 0; i--) {
30
- if (!result[i].shouldShrink) {
31
- continue;
32
- }
33
- const expandCost = groups[i].expandedWidth - groups[i].collapsedWidth;
34
- if (expandCost === 0) {
35
- continue;
37
+
38
+ // Overflow detection: the "More" button is the step AFTER all groups have
39
+ // shrunk to their collapsed widths and it still doesn't fit.
40
+ // Flow: actions shrink → filters shrink → search shrinks → overflow.
41
+ const allShrunk = result.every(r => r.shouldShrink);
42
+ const hasOverflowConfig = overflowableGroupIndices.length > 0 && overflowButtonWidth > 0;
43
+ let shouldOverflow = false;
44
+ if (hasOverflowConfig && allShrunk && total > availableWidth) {
45
+ shouldOverflow = true;
46
+ } else if (hasOverflowConfig && currentlyOverflowing) {
47
+ // Hysteresis: stay in overflow until collapsed total + buffer fits,
48
+ // preventing flicker at the boundary.
49
+ const collapsedTotal = groups.reduce((sum, g) => sum + g.collapsedWidth, 0);
50
+ if (collapsedTotal + expandThresholdBuffer > availableWidth) {
51
+ shouldOverflow = true;
36
52
  }
37
- if (total + expandCost + expandThresholdBuffer <= availableWidth) {
38
- result[i].shouldShrink = false;
39
- total += expandCost;
40
- } else {
41
- // Strict priority: if a higher-priority group (lower index) cannot expand,
42
- // no lower-priority groups should expand either to avoid visual inconsistency.
43
- break;
53
+ }
54
+ if (shouldOverflow) {
55
+ // Replace overflowable groups' widths with the single overflow button width
56
+ const overflowableTotal = overflowableGroupIndices.reduce((sum, idx) => sum + groups[idx].collapsedWidth, 0);
57
+ total = total - overflowableTotal + overflowButtonWidth;
58
+ }
59
+
60
+ // Expand pass — skip entirely while in overflow; everything stays collapsed
61
+ // until the container is wide enough to exit overflow, then groups expand
62
+ // in priority order (search last).
63
+ if (!shouldOverflow) {
64
+ for (let i = groups.length - 1; i >= 0; i--) {
65
+ if (!result[i].shouldShrink) {
66
+ continue;
67
+ }
68
+ const expandCost = groups[i].expandedWidth - groups[i].collapsedWidth;
69
+ if (expandCost === 0) {
70
+ continue;
71
+ }
72
+ if (total + expandCost + expandThresholdBuffer <= availableWidth) {
73
+ result[i].shouldShrink = false;
74
+ total += expandCost;
75
+ } else {
76
+ // Strict priority: if a higher-priority group (lower index) cannot expand,
77
+ // no lower-priority groups should expand either to avoid visual inconsistency.
78
+ break;
79
+ }
44
80
  }
45
81
  }
46
- return result;
82
+ return {
83
+ groups: result,
84
+ shouldOverflow
85
+ };
47
86
  }
48
87
  //# sourceMappingURL=computeResponsiveTargetState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["computeResponsiveTargetState","params","availableWidth","groups","expandThresholdBuffer","length","result","map","g","shouldShrink","currentlyShrunk","widthOf","group","index","collapsedWidth","expandedWidth","total","reduce","sum","i","savings","expandCost"],"sources":["../../../../src/state/Toolbar/computeResponsiveTargetState.ts"],"sourcesContent":["export interface ResponsiveGroupInput {\n expandedWidth: number;\n collapsedWidth: number;\n currentlyShrunk: boolean;\n}\n\nexport interface ComputeResponsiveTargetStateParams {\n availableWidth: number;\n groups: ResponsiveGroupInput[];\n expandThresholdBuffer: number;\n}\n\nexport interface ResponsiveGroupOutput {\n shouldShrink: boolean;\n}\n\nexport function computeResponsiveTargetState(\n params: ComputeResponsiveTargetStateParams,\n): ResponsiveGroupOutput[] {\n const { availableWidth, groups, expandThresholdBuffer } = params;\n\n if (groups.length === 0) {\n return [];\n }\n\n const result: ResponsiveGroupOutput[] = groups.map((g) => ({\n shouldShrink: g.currentlyShrunk,\n }));\n\n const widthOf = (group: ResponsiveGroupInput, index: number) =>\n result[index].shouldShrink ? group.collapsedWidth : group.expandedWidth;\n\n let total = groups.reduce((sum, g, i) => sum + widthOf(g, i), 0);\n\n for (let i = 0; i < groups.length; i++) {\n if (total <= availableWidth) {\n break;\n }\n if (!result[i].shouldShrink) {\n const savings = groups[i].expandedWidth - groups[i].collapsedWidth;\n result[i].shouldShrink = true;\n total -= savings;\n }\n }\n\n for (let i = groups.length - 1; i >= 0; i--) {\n if (!result[i].shouldShrink) {\n continue;\n }\n\n const expandCost = groups[i].expandedWidth - groups[i].collapsedWidth;\n if (expandCost === 0) {\n continue;\n }\n\n if (total + expandCost + expandThresholdBuffer <= availableWidth) {\n result[i].shouldShrink = false;\n total += expandCost;\n } else {\n // Strict priority: if a higher-priority group (lower index) cannot expand,\n // no lower-priority groups should expand either to avoid visual inconsistency.\n break;\n }\n }\n\n return result;\n}\n"],"mappings":";;;;AAgBO,SAASA,4BAA4BA,CAC1CC,MAA0C,EACjB;EACzB,MAAM;IAAEC,cAAc;IAAEC,MAAM;IAAEC;EAAsB,CAAC,GAAGH,MAAM;EAEhE,IAAIE,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IACvB,OAAO,EAAE;EACX;EAEA,MAAMC,MAA+B,GAAGH,MAAM,CAACI,GAAG,CAAEC,CAAC,KAAM;IACzDC,YAAY,EAAED,CAAC,CAACE;EAClB,CAAC,CAAC,CAAC;EAEH,MAAMC,OAAO,GAAGA,CAACC,KAA2B,EAAEC,KAAa,KACzDP,MAAM,CAACO,KAAK,CAAC,CAACJ,YAAY,GAAGG,KAAK,CAACE,cAAc,GAAGF,KAAK,CAACG,aAAa;EAEzE,IAAIC,KAAK,GAAGb,MAAM,CAACc,MAAM,CAAC,CAACC,GAAG,EAAEV,CAAC,EAAEW,CAAC,KAAKD,GAAG,GAAGP,OAAO,CAACH,CAAC,EAAEW,CAAC,CAAC,EAAE,CAAC,CAAC;EAEhE,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,MAAM,CAACE,MAAM,EAAEc,CAAC,EAAE,EAAE;IACtC,IAAIH,KAAK,IAAId,cAAc,EAAE;MAC3B;IACF;IACA,IAAI,CAACI,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,EAAE;MAC3B,MAAMW,OAAO,GAAGjB,MAAM,CAACgB,CAAC,CAAC,CAACJ,aAAa,GAAGZ,MAAM,CAACgB,CAAC,CAAC,CAACL,cAAc;MAClER,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,GAAG,IAAI;MAC7BO,KAAK,IAAII,OAAO;IAClB;EACF;EAEA,KAAK,IAAID,CAAC,GAAGhB,MAAM,CAACE,MAAM,GAAG,CAAC,EAAEc,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC3C,IAAI,CAACb,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,EAAE;MAC3B;IACF;IAEA,MAAMY,UAAU,GAAGlB,MAAM,CAACgB,CAAC,CAAC,CAACJ,aAAa,GAAGZ,MAAM,CAACgB,CAAC,CAAC,CAACL,cAAc;IACrE,IAAIO,UAAU,KAAK,CAAC,EAAE;MACpB;IACF;IAEA,IAAIL,KAAK,GAAGK,UAAU,GAAGjB,qBAAqB,IAAIF,cAAc,EAAE;MAChEI,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,GAAG,KAAK;MAC9BO,KAAK,IAAIK,UAAU;IACrB,CAAC,MAAM;MACL;MACA;MACA;IACF;EACF;EAEA,OAAOf,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["computeResponsiveTargetState","params","availableWidth","groups","expandThresholdBuffer","currentlyOverflowing","overflowButtonWidth","overflowableGroupIndices","length","shouldOverflow","result","map","g","shouldShrink","currentlyShrunk","widthOf","group","index","collapsedWidth","expandedWidth","total","reduce","sum","i","savings","allShrunk","every","r","hasOverflowConfig","collapsedTotal","overflowableTotal","idx","expandCost"],"sources":["../../../../src/state/Toolbar/computeResponsiveTargetState.ts"],"sourcesContent":["export interface ResponsiveGroupInput {\n expandedWidth: number;\n collapsedWidth: number;\n currentlyShrunk: boolean;\n}\n\nexport interface ComputeResponsiveTargetStateParams {\n availableWidth: number;\n groups: ResponsiveGroupInput[];\n expandThresholdBuffer: number;\n currentlyOverflowing?: boolean;\n overflowButtonWidth?: number;\n overflowableGroupIndices?: number[];\n}\n\nexport interface ResponsiveGroupOutput {\n shouldShrink: boolean;\n}\n\nexport interface ComputeResponsiveTargetStateResult {\n groups: ResponsiveGroupOutput[];\n shouldOverflow: boolean;\n}\n\nexport function computeResponsiveTargetState(\n params: ComputeResponsiveTargetStateParams,\n): ComputeResponsiveTargetStateResult {\n const {\n availableWidth,\n groups,\n expandThresholdBuffer,\n currentlyOverflowing = false,\n overflowButtonWidth = 0,\n overflowableGroupIndices = [],\n } = params;\n\n if (groups.length === 0) {\n return { groups: [], shouldOverflow: false };\n }\n\n const result: ResponsiveGroupOutput[] = groups.map((g) => ({\n shouldShrink: g.currentlyShrunk,\n }));\n\n const widthOf = (group: ResponsiveGroupInput, index: number) =>\n result[index].shouldShrink ? group.collapsedWidth : group.expandedWidth;\n\n let total = groups.reduce((sum, g, i) => sum + widthOf(g, i), 0);\n\n // Shrink pass\n for (let i = 0; i < groups.length; i++) {\n if (total <= availableWidth) {\n break;\n }\n if (!result[i].shouldShrink) {\n const savings = groups[i].expandedWidth - groups[i].collapsedWidth;\n result[i].shouldShrink = true;\n total -= savings;\n }\n }\n\n // Overflow detection: the \"More\" button is the step AFTER all groups have\n // shrunk to their collapsed widths and it still doesn't fit.\n // Flow: actions shrink → filters shrink → search shrinks → overflow.\n const allShrunk = result.every((r) => r.shouldShrink);\n const hasOverflowConfig =\n overflowableGroupIndices.length > 0 && overflowButtonWidth > 0;\n\n let shouldOverflow = false;\n\n if (hasOverflowConfig && allShrunk && total > availableWidth) {\n shouldOverflow = true;\n } else if (hasOverflowConfig && currentlyOverflowing) {\n // Hysteresis: stay in overflow until collapsed total + buffer fits,\n // preventing flicker at the boundary.\n const collapsedTotal = groups.reduce((sum, g) => sum + g.collapsedWidth, 0);\n if (collapsedTotal + expandThresholdBuffer > availableWidth) {\n shouldOverflow = true;\n }\n }\n\n if (shouldOverflow) {\n // Replace overflowable groups' widths with the single overflow button width\n const overflowableTotal = overflowableGroupIndices.reduce(\n (sum, idx) => sum + groups[idx].collapsedWidth,\n 0,\n );\n total = total - overflowableTotal + overflowButtonWidth;\n }\n\n // Expand pass — skip entirely while in overflow; everything stays collapsed\n // until the container is wide enough to exit overflow, then groups expand\n // in priority order (search last).\n if (!shouldOverflow) {\n for (let i = groups.length - 1; i >= 0; i--) {\n if (!result[i].shouldShrink) {\n continue;\n }\n\n const expandCost = groups[i].expandedWidth - groups[i].collapsedWidth;\n if (expandCost === 0) {\n continue;\n }\n\n if (total + expandCost + expandThresholdBuffer <= availableWidth) {\n result[i].shouldShrink = false;\n total += expandCost;\n } else {\n // Strict priority: if a higher-priority group (lower index) cannot expand,\n // no lower-priority groups should expand either to avoid visual inconsistency.\n break;\n }\n }\n }\n\n return { groups: result, shouldOverflow };\n}\n"],"mappings":";;;;AAwBO,SAASA,4BAA4BA,CAC1CC,MAA0C,EACN;EACpC,MAAM;IACJC,cAAc;IACdC,MAAM;IACNC,qBAAqB;IACrBC,oBAAoB,GAAG,KAAK;IAC5BC,mBAAmB,GAAG,CAAC;IACvBC,wBAAwB,GAAG;EAC7B,CAAC,GAAGN,MAAM;EAEV,IAAIE,MAAM,CAACK,MAAM,KAAK,CAAC,EAAE;IACvB,OAAO;MAAEL,MAAM,EAAE,EAAE;MAAEM,cAAc,EAAE;IAAM,CAAC;EAC9C;EAEA,MAAMC,MAA+B,GAAGP,MAAM,CAACQ,GAAG,CAAEC,CAAC,KAAM;IACzDC,YAAY,EAAED,CAAC,CAACE;EAClB,CAAC,CAAC,CAAC;EAEH,MAAMC,OAAO,GAAGA,CAACC,KAA2B,EAAEC,KAAa,KACzDP,MAAM,CAACO,KAAK,CAAC,CAACJ,YAAY,GAAGG,KAAK,CAACE,cAAc,GAAGF,KAAK,CAACG,aAAa;EAEzE,IAAIC,KAAK,GAAGjB,MAAM,CAACkB,MAAM,CAAC,CAACC,GAAG,EAAEV,CAAC,EAAEW,CAAC,KAAKD,GAAG,GAAGP,OAAO,CAACH,CAAC,EAAEW,CAAC,CAAC,EAAE,CAAC,CAAC;;EAEhE;EACA,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,MAAM,CAACK,MAAM,EAAEe,CAAC,EAAE,EAAE;IACtC,IAAIH,KAAK,IAAIlB,cAAc,EAAE;MAC3B;IACF;IACA,IAAI,CAACQ,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,EAAE;MAC3B,MAAMW,OAAO,GAAGrB,MAAM,CAACoB,CAAC,CAAC,CAACJ,aAAa,GAAGhB,MAAM,CAACoB,CAAC,CAAC,CAACL,cAAc;MAClER,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,GAAG,IAAI;MAC7BO,KAAK,IAAII,OAAO;IAClB;EACF;;EAEA;EACA;EACA;EACA,MAAMC,SAAS,GAAGf,MAAM,CAACgB,KAAK,CAAEC,CAAC,IAAKA,CAAC,CAACd,YAAY,CAAC;EACrD,MAAMe,iBAAiB,GACrBrB,wBAAwB,CAACC,MAAM,GAAG,CAAC,IAAIF,mBAAmB,GAAG,CAAC;EAEhE,IAAIG,cAAc,GAAG,KAAK;EAE1B,IAAImB,iBAAiB,IAAIH,SAAS,IAAIL,KAAK,GAAGlB,cAAc,EAAE;IAC5DO,cAAc,GAAG,IAAI;EACvB,CAAC,MAAM,IAAImB,iBAAiB,IAAIvB,oBAAoB,EAAE;IACpD;IACA;IACA,MAAMwB,cAAc,GAAG1B,MAAM,CAACkB,MAAM,CAAC,CAACC,GAAG,EAAEV,CAAC,KAAKU,GAAG,GAAGV,CAAC,CAACM,cAAc,EAAE,CAAC,CAAC;IAC3E,IAAIW,cAAc,GAAGzB,qBAAqB,GAAGF,cAAc,EAAE;MAC3DO,cAAc,GAAG,IAAI;IACvB;EACF;EAEA,IAAIA,cAAc,EAAE;IAClB;IACA,MAAMqB,iBAAiB,GAAGvB,wBAAwB,CAACc,MAAM,CACvD,CAACC,GAAG,EAAES,GAAG,KAAKT,GAAG,GAAGnB,MAAM,CAAC4B,GAAG,CAAC,CAACb,cAAc,EAC9C,CACF,CAAC;IACDE,KAAK,GAAGA,KAAK,GAAGU,iBAAiB,GAAGxB,mBAAmB;EACzD;;EAEA;EACA;EACA;EACA,IAAI,CAACG,cAAc,EAAE;IACnB,KAAK,IAAIc,CAAC,GAAGpB,MAAM,CAACK,MAAM,GAAG,CAAC,EAAEe,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC3C,IAAI,CAACb,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,EAAE;QAC3B;MACF;MAEA,MAAMmB,UAAU,GAAG7B,MAAM,CAACoB,CAAC,CAAC,CAACJ,aAAa,GAAGhB,MAAM,CAACoB,CAAC,CAAC,CAACL,cAAc;MACrE,IAAIc,UAAU,KAAK,CAAC,EAAE;QACpB;MACF;MAEA,IAAIZ,KAAK,GAAGY,UAAU,GAAG5B,qBAAqB,IAAIF,cAAc,EAAE;QAChEQ,MAAM,CAACa,CAAC,CAAC,CAACV,YAAY,GAAG,KAAK;QAC9BO,KAAK,IAAIY,UAAU;MACrB,CAAC,MAAM;QACL;QACA;QACA;MACF;IACF;EACF;EAEA,OAAO;IAAE7B,MAAM,EAAEO,MAAM;IAAED;EAAe,CAAC;AAC3C","ignoreList":[]}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.SEARCH_EXPANDED_WIDTH = exports.SEARCH_COLLAPSED_WIDTH = void 0;
4
+ exports.SEARCH_EXPANDED_WIDTH = exports.SEARCH_COLLAPSED_WIDTH = exports.OVERFLOW_BUTTON_WIDTH = exports.LAYOUT_SWITCH_BUTTON_WIDTH = void 0;
5
5
  const SEARCH_EXPANDED_WIDTH = exports.SEARCH_EXPANDED_WIDTH = 240;
6
6
  const SEARCH_COLLAPSED_WIDTH = exports.SEARCH_COLLAPSED_WIDTH = 140;
7
+ const OVERFLOW_BUTTON_WIDTH = exports.OVERFLOW_BUTTON_WIDTH = 36;
8
+ // Width of the layout switch IconButton (size="small") + SP2 gap (12px).
9
+ // Used to account for hidden content during overflow exit calculation.
10
+ const LAYOUT_SWITCH_BUTTON_WIDTH = exports.LAYOUT_SWITCH_BUTTON_WIDTH = 48;
7
11
  //# sourceMappingURL=toolbarResponsiveConstants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SEARCH_EXPANDED_WIDTH","exports","SEARCH_COLLAPSED_WIDTH"],"sources":["../../../../src/state/Toolbar/toolbarResponsiveConstants.ts"],"sourcesContent":["export const SEARCH_EXPANDED_WIDTH = 240;\nexport const SEARCH_COLLAPSED_WIDTH = 140;\n"],"mappings":";;;;AAAO,MAAMA,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,GAAG;AACjC,MAAME,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,GAAG,GAAG","ignoreList":[]}
1
+ {"version":3,"names":["SEARCH_EXPANDED_WIDTH","exports","SEARCH_COLLAPSED_WIDTH","OVERFLOW_BUTTON_WIDTH","LAYOUT_SWITCH_BUTTON_WIDTH"],"sources":["../../../../src/state/Toolbar/toolbarResponsiveConstants.ts"],"sourcesContent":["export const SEARCH_EXPANDED_WIDTH = 240;\nexport const SEARCH_COLLAPSED_WIDTH = 140;\nexport const OVERFLOW_BUTTON_WIDTH = 36;\n// Width of the layout switch IconButton (size=\"small\") + SP2 gap (12px).\n// Used to account for hidden content during overflow exit calculation.\nexport const LAYOUT_SWITCH_BUTTON_WIDTH = 48;\n"],"mappings":";;;;AAAO,MAAMA,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,GAAG;AACjC,MAAME,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,GAAG,GAAG;AAClC,MAAMC,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAG,EAAE;AACvC;AACA;AACO,MAAMC,0BAA0B,GAAAH,OAAA,CAAAG,0BAAA,GAAG,EAAE","ignoreList":[]}