@wix/patterns 1.446.0 → 1.448.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 (636) 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/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
  4. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
  5. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
  6. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  7. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
  8. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
  9. package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +3 -3
  10. package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js.map +1 -1
  11. package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
  12. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  13. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  14. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  15. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  16. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  18. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  19. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  20. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  21. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  22. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  23. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  24. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  25. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  26. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  27. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  28. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  29. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  30. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  31. package/dist/cjs/components/EditableTable/AddItemRow.js +7 -3
  32. package/dist/cjs/components/EditableTable/AddItemRow.js.map +1 -1
  33. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  34. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/EditableTable.js +14 -10
  36. package/dist/cjs/components/EditableTable/EditableTable.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js +31 -21
  38. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  40. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  42. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/address/index.js +2 -2
  46. package/dist/cjs/components/EditableTable/cellTypes/address/index.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js +3 -3
  48. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  50. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  52. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  54. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/color/index.js +2 -2
  56. package/dist/cjs/components/EditableTable/cellTypes/color/index.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  58. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  60. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/date/index.js +2 -2
  62. package/dist/cjs/components/EditableTable/cellTypes/date/index.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  64. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  66. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js +2 -2
  68. package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  72. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/email/index.js +2 -2
  74. package/dist/cjs/components/EditableTable/cellTypes/email/index.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  76. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  78. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/number/index.js +2 -2
  80. package/dist/cjs/components/EditableTable/cellTypes/number/index.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
  82. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  83. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  84. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  85. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  86. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  87. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  88. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  89. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  90. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  91. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  92. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  93. package/dist/cjs/components/EditableTable/cellTypes/time/index.js +2 -2
  94. package/dist/cjs/components/EditableTable/cellTypes/time/index.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/cellTypes/url/index.js +2 -2
  100. package/dist/cjs/components/EditableTable/cellTypes/url/index.js.map +1 -1
  101. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  102. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  103. package/dist/cjs/components/EntityPage/EntityPage.uni.driver.js +2 -0
  104. package/dist/cjs/components/EntityPage/EntityPage.uni.driver.js.map +1 -1
  105. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js +88 -10
  106. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  107. package/dist/cjs/components/EntityPage/EntityPageDeleteAction.js +71 -0
  108. package/dist/cjs/components/EntityPage/EntityPageDeleteAction.js.map +1 -0
  109. package/dist/cjs/components/EntityPage/EntityPageDeleteConfirmModal.js +46 -0
  110. package/dist/cjs/components/EntityPage/EntityPageDeleteConfirmModal.js.map +1 -0
  111. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  112. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  113. package/dist/cjs/components/EntityPageFields/EntityPageCustomField.js +8 -4
  114. package/dist/cjs/components/EntityPageFields/EntityPageCustomField.js.map +1 -1
  115. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  116. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  117. package/dist/cjs/components/FormPage/FormPageActionsBar.js +6 -5
  118. package/dist/cjs/components/FormPage/FormPageActionsBar.js.map +1 -1
  119. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  120. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  121. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  122. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  123. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  124. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  125. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  126. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  127. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  128. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  129. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  130. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  131. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  132. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  133. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  134. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  135. package/dist/cjs/components/NestedTable/NestedTableRow.js +2 -2
  136. package/dist/cjs/components/NestedTable/NestedTableRow.js.map +1 -1
  137. package/dist/cjs/components/NestedTable/NestedTableRow.st.css +14 -4
  138. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +12 -6
  139. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  140. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  141. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +8 -3
  142. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  143. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  144. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +6 -3
  145. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  146. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragHandle.js +7 -4
  147. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragHandle.js.map +1 -1
  148. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  149. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  150. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  151. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  152. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  153. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  154. package/dist/cjs/components/QuerySearch.js +4 -1
  155. package/dist/cjs/components/QuerySearch.js.map +1 -1
  156. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  157. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  158. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  159. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  160. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  161. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  162. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  163. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  164. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +4 -4
  165. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  166. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  167. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  168. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  169. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  170. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  171. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  172. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  173. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  174. package/dist/cjs/components/common.st.css.js +4 -4
  175. package/dist/cjs/components/common.st.css.js.map +1 -1
  176. package/dist/cjs/exports/schema.js.map +1 -1
  177. package/dist/cjs/hooks/index.js +6 -0
  178. package/dist/cjs/hooks/index.js.map +1 -1
  179. package/dist/cjs/hooks/useEntityPage.js.map +1 -1
  180. package/dist/cjs/hooks/useOptionalCachedState.js +2 -0
  181. package/dist/cjs/hooks/useOptionalCachedState.js.map +1 -1
  182. package/dist/cjs/hooks/useSyncCollectionOnEntityDelete.js +40 -0
  183. package/dist/cjs/hooks/useSyncCollectionOnEntityDelete.js.map +1 -0
  184. package/dist/cjs/hooks/useSyncCollectionOnEntityReturn.js +13 -20
  185. package/dist/cjs/hooks/useSyncCollectionOnEntityReturn.js.map +1 -1
  186. package/dist/cjs/schema/sourceMutations.js +4 -1
  187. package/dist/cjs/schema/sourceMutations.js.map +1 -1
  188. package/dist/cjs/schema/useEntityPage.js +24 -4
  189. package/dist/cjs/schema/useEntityPage.js.map +1 -1
  190. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  191. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  192. package/dist/cjs/state/EditableTable/CellValueState.js +41 -15
  193. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  194. package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
  195. package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
  196. package/dist/cjs/state/EditableTable/MutationState.js +45 -14
  197. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  198. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js +147 -0
  199. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js.map +1 -0
  200. package/dist/cjs/state/EntityPage/EntityPageState.js +33 -2
  201. package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
  202. package/dist/cjs/state/EntityPage/index.js +6 -0
  203. package/dist/cjs/state/EntityPage/index.js.map +1 -1
  204. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  205. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  206. package/dist/cjs/state/WixPatternsRouterState.js.map +1 -1
  207. package/dist/cjs/state/buildEditableFieldColumns.js +9 -5
  208. package/dist/cjs/state/buildEditableFieldColumns.js.map +1 -1
  209. package/dist/cjs/state/index.js +6 -0
  210. package/dist/cjs/state/index.js.map +1 -1
  211. package/dist/cjs/styles.global.css +2 -2
  212. package/dist/cjs/version.js +1 -1
  213. package/dist/cjs/version.js.map +1 -1
  214. package/dist/docs/Allow Users to Add Extended Fields.md +18 -16
  215. package/dist/docs/CollectionSearch.md +3 -1
  216. package/dist/docs/CollectionToolbar.md +1 -1
  217. package/dist/docs/Component Tests.md +4 -4
  218. package/dist/docs/CustomColumns.md +1 -1
  219. package/dist/docs/CustomFieldType.md +9 -9
  220. package/dist/docs/CustomFieldsViewWidget.md +10 -10
  221. package/dist/docs/CustomFieldsWidget.md +46 -35
  222. package/dist/docs/Display Extended Fields.md +21 -15
  223. package/dist/docs/Enable Filters for Extended Fields.md +4 -2
  224. package/dist/docs/EntityPage.AdditionalContent.md +1 -1
  225. package/dist/docs/EntityPage.Card.md +11 -11
  226. package/dist/docs/EntityPage.Content.md +1 -1
  227. package/dist/docs/EntityPage.Header.md +9 -6
  228. package/dist/docs/EntityPage.MainContent.md +1 -1
  229. package/dist/docs/EntityPageState.md +1 -1
  230. package/dist/docs/Explore Apps.md +8 -1
  231. package/dist/docs/ExportTo.md +6 -6
  232. package/dist/docs/Filter Overview.md +23 -8
  233. package/dist/docs/Grid.md +3 -3
  234. package/dist/docs/ImportButton.md +18 -8
  235. package/dist/docs/MultiBulkActionToolbar.md +1 -1
  236. package/dist/docs/MultiLevelSorting.md +3 -3
  237. package/dist/docs/Next.js.md +19 -19
  238. package/dist/docs/NumberRangeFilter.md +5 -5
  239. package/dist/docs/PageWrapper.md +1 -1
  240. package/dist/docs/PatternsReactRouter.md +77 -1
  241. package/dist/docs/PickerContent.md +14 -9
  242. package/dist/docs/PickerModal.md +4 -4
  243. package/dist/docs/PrimaryActionButton.md +2 -2
  244. package/dist/docs/SettingsPage.AdditionalContent.md +1 -1
  245. package/dist/docs/SettingsPage.Card.md +11 -11
  246. package/dist/docs/SettingsPage.Content.md +1 -1
  247. package/dist/docs/SettingsPage.Header.md +8 -5
  248. package/dist/docs/SettingsPage.MainContent.md +1 -1
  249. package/dist/docs/SettingsPageState.md +1 -1
  250. package/dist/docs/Suggestions.md +10 -10
  251. package/dist/docs/SummaryBar.md +6 -6
  252. package/dist/docs/TableTopNotification.md +1 -1
  253. package/dist/docs/TabsFilter.md +5 -5
  254. package/dist/docs/Tags.md +15 -7
  255. package/dist/docs/TagsWidget.md +48 -31
  256. package/dist/docs/ToolbarFilters.md +4 -4
  257. package/dist/docs/ToolbarTitle.md +4 -4
  258. package/dist/docs/Views.md +8 -8
  259. package/dist/docs/WidgetsFormProvider.md +11 -7
  260. package/dist/docs/WixPatternsProvider.md +48 -4
  261. package/dist/docs/Working with Cache.md +5 -5
  262. package/dist/docs/bulkActionModal.md +13 -8
  263. package/dist/docs/index.json +25 -25
  264. package/dist/docs/useAmbassadorCollection.md +4 -1
  265. package/dist/docs/useEntity.md +8 -5
  266. package/dist/docs/useEntityPage.md +9 -7
  267. package/dist/docs/useEntityPageContext.md +1 -1
  268. package/dist/docs/useGridCollection.md +8 -2
  269. package/dist/docs/useNestedTable.md +2 -2
  270. package/dist/docs/useOptimisticActions.md +2 -2
  271. package/dist/docs/usePatternsNavigate.md +8 -2
  272. package/dist/docs/usePickerContent.md +5 -2
  273. package/dist/docs/usePickerModal.md +4 -4
  274. package/dist/docs/usePickerStandalone.md +5 -2
  275. package/dist/docs/useSettingsPage.md +7 -7
  276. package/dist/docs/useSettingsPageContext.md +1 -1
  277. package/dist/docs/useTableCollection.md +8 -2
  278. package/dist/docs/useTableGridSwitchCollection.md +8 -2
  279. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  280. package/dist/esm/components/CardContainer/CardContainer.st.css.js.map +1 -1
  281. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  282. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  283. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  284. package/dist/esm/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +2 -2
  285. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  286. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  287. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  288. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  289. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  290. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  291. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  292. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  293. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  294. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  295. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  296. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  297. package/dist/esm/components/EditableTable/AddItemRow.js +3 -1
  298. package/dist/esm/components/EditableTable/AddItemRow.js.map +1 -1
  299. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  300. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  301. package/dist/esm/components/EditableTable/EditableTable.js +3 -1
  302. package/dist/esm/components/EditableTable/EditableTable.js.map +1 -1
  303. package/dist/esm/components/EditableTable/EditableTableContextMenu.js +23 -17
  304. package/dist/esm/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  305. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  306. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  307. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  308. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  309. package/dist/esm/components/EditableTable/cellTypes/address/index.js +2 -2
  310. package/dist/esm/components/EditableTable/cellTypes/address/index.js.map +1 -1
  311. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js +2 -2
  312. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  313. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  314. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  315. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  316. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  317. package/dist/esm/components/EditableTable/cellTypes/color/index.js +2 -2
  318. package/dist/esm/components/EditableTable/cellTypes/color/index.js.map +1 -1
  319. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  320. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  321. package/dist/esm/components/EditableTable/cellTypes/date/index.js +2 -2
  322. package/dist/esm/components/EditableTable/cellTypes/date/index.js.map +1 -1
  323. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  324. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  325. package/dist/esm/components/EditableTable/cellTypes/datetime/index.js +4 -2
  326. package/dist/esm/components/EditableTable/cellTypes/datetime/index.js.map +1 -1
  327. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  328. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  329. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  330. package/dist/esm/components/EditableTable/cellTypes/email/index.js +2 -2
  331. package/dist/esm/components/EditableTable/cellTypes/email/index.js.map +1 -1
  332. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  333. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  334. package/dist/esm/components/EditableTable/cellTypes/number/index.js +2 -2
  335. package/dist/esm/components/EditableTable/cellTypes/number/index.js.map +1 -1
  336. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
  337. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  338. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  339. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  340. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  341. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  342. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  343. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  344. package/dist/esm/components/EditableTable/cellTypes/time/index.js +4 -2
  345. package/dist/esm/components/EditableTable/cellTypes/time/index.js.map +1 -1
  346. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  347. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  348. package/dist/esm/components/EditableTable/cellTypes/url/index.js +2 -2
  349. package/dist/esm/components/EditableTable/cellTypes/url/index.js.map +1 -1
  350. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  351. package/dist/esm/components/EntityPage/EntityPage.uni.driver.js +3 -1
  352. package/dist/esm/components/EntityPage/EntityPage.uni.driver.js.map +1 -1
  353. package/dist/esm/components/EntityPage/EntityPageActionsBar.js +46 -3
  354. package/dist/esm/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  355. package/dist/esm/components/EntityPage/EntityPageDeleteAction.js +31 -0
  356. package/dist/esm/components/EntityPage/EntityPageDeleteAction.js.map +1 -0
  357. package/dist/esm/components/EntityPage/EntityPageDeleteConfirmModal.js +16 -0
  358. package/dist/esm/components/EntityPage/EntityPageDeleteConfirmModal.js.map +1 -0
  359. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  360. package/dist/esm/components/EntityPageFields/EntityPageCustomField.js +3 -1
  361. package/dist/esm/components/EntityPageFields/EntityPageCustomField.js.map +1 -1
  362. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  363. package/dist/esm/components/FormPage/FormPageActionsBar.js +2 -1
  364. package/dist/esm/components/FormPage/FormPageActionsBar.js.map +1 -1
  365. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  366. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  367. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  368. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  369. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  370. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  371. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  372. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  373. package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
  374. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  375. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  376. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  377. package/dist/esm/components/NestedTable/NestedTableRow.js +1 -3
  378. package/dist/esm/components/NestedTable/NestedTableRow.js.map +1 -1
  379. package/dist/esm/components/NestedTable/NestedTableRow.st.css +14 -4
  380. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +3 -3
  381. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  382. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  383. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +3 -3
  384. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  385. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  386. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +3 -3
  387. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  388. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragHandle.js +4 -1
  389. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragHandle.js.map +1 -1
  390. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  391. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  392. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  393. package/dist/esm/components/QuerySearch.js +3 -1
  394. package/dist/esm/components/QuerySearch.js.map +1 -1
  395. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  396. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  397. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  398. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  399. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  400. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  401. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  402. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  403. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  404. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  405. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  406. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  407. package/dist/esm/components/common.st.css.js +2 -2
  408. package/dist/esm/components/common.st.css.js.map +1 -1
  409. package/dist/esm/hooks/index.js +1 -0
  410. package/dist/esm/hooks/index.js.map +1 -1
  411. package/dist/esm/hooks/useEntityPage.js.map +1 -1
  412. package/dist/esm/hooks/useOptionalCachedState.js +2 -0
  413. package/dist/esm/hooks/useOptionalCachedState.js.map +1 -1
  414. package/dist/esm/hooks/useSyncCollectionOnEntityDelete.js +36 -0
  415. package/dist/esm/hooks/useSyncCollectionOnEntityDelete.js.map +1 -0
  416. package/dist/esm/hooks/useSyncCollectionOnEntityReturn.js +24 -21
  417. package/dist/esm/hooks/useSyncCollectionOnEntityReturn.js.map +1 -1
  418. package/dist/esm/schema/sourceMutations.js +4 -1
  419. package/dist/esm/schema/sourceMutations.js.map +1 -1
  420. package/dist/esm/schema/useEntityPage.js +23 -2
  421. package/dist/esm/schema/useEntityPage.js.map +1 -1
  422. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  423. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  424. package/dist/esm/state/EditableTable/CellValueState.js +28 -12
  425. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  426. package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
  427. package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
  428. package/dist/esm/state/EditableTable/MutationState.js +58 -16
  429. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  430. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js +136 -0
  431. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js.map +1 -0
  432. package/dist/esm/state/EntityPage/EntityPageState.js +29 -1
  433. package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
  434. package/dist/esm/state/EntityPage/index.js +1 -0
  435. package/dist/esm/state/EntityPage/index.js.map +1 -1
  436. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  437. package/dist/esm/state/WixPatternsRouterState.js.map +1 -1
  438. package/dist/esm/state/buildEditableFieldColumns.js +7 -5
  439. package/dist/esm/state/buildEditableFieldColumns.js.map +1 -1
  440. package/dist/esm/state/index.js +1 -0
  441. package/dist/esm/state/index.js.map +1 -1
  442. package/dist/esm/styles.global.css +2 -2
  443. package/dist/esm/version.js +1 -1
  444. package/dist/types/components/CardContainer/CardContainer.st.css.d.ts.map +1 -1
  445. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  446. package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
  447. package/dist/types/components/EditableTable/AddItemRow.d.ts.map +1 -1
  448. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  449. package/dist/types/components/EditableTable/EditableTable.d.ts.map +1 -1
  450. package/dist/types/components/EditableTable/EditableTableContextMenu.d.ts.map +1 -1
  451. package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
  452. package/dist/types/components/EditableTable/cellTypes/boolean/Edit.st.css.d.ts.map +1 -1
  453. package/dist/types/components/EditableTable/cellTypes/color/Edit.st.css.d.ts.map +1 -1
  454. package/dist/types/components/EditableTable/cellTypes/datetime/index.d.ts.map +1 -1
  455. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
  456. package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
  457. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  458. package/dist/types/components/EditableTable/cellTypes/time/index.d.ts.map +1 -1
  459. package/dist/types/components/EntityPage/EntityPage.uni.driver.d.ts +97 -1
  460. package/dist/types/components/EntityPage/EntityPage.uni.driver.d.ts.map +1 -1
  461. package/dist/types/components/EntityPage/EntityPageActionsBar.d.ts +2 -2
  462. package/dist/types/components/EntityPage/EntityPageActionsBar.d.ts.map +1 -1
  463. package/dist/types/components/EntityPage/EntityPageDeleteAction.d.ts +7 -0
  464. package/dist/types/components/EntityPage/EntityPageDeleteAction.d.ts.map +1 -0
  465. package/dist/types/components/EntityPage/EntityPageDeleteConfirmModal.d.ts +11 -0
  466. package/dist/types/components/EntityPage/EntityPageDeleteConfirmModal.d.ts.map +1 -0
  467. package/dist/types/components/EntityPageFields/EntityPageCustomField.d.ts.map +1 -1
  468. package/dist/types/components/FormPage/FormPageActionsBar.d.ts +3 -2
  469. package/dist/types/components/FormPage/FormPageActionsBar.d.ts.map +1 -1
  470. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  471. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  472. package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
  473. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  474. package/dist/types/components/NestedTable/NestedTableRow.d.ts.map +1 -1
  475. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts +7 -1
  476. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  477. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts +6 -1
  478. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts.map +1 -1
  479. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts +4 -1
  480. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
  481. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragHandle.d.ts.map +1 -1
  482. package/dist/types/components/QuerySearch.d.ts.map +1 -1
  483. package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
  484. package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
  485. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  486. package/dist/types/components/common.st.css.d.ts.map +1 -1
  487. package/dist/types/exports/schema.d.ts +1 -1
  488. package/dist/types/exports/schema.d.ts.map +1 -1
  489. package/dist/types/hooks/index.d.ts +1 -0
  490. package/dist/types/hooks/index.d.ts.map +1 -1
  491. package/dist/types/hooks/useEntityPage.d.ts +1 -1
  492. package/dist/types/hooks/useEntityPage.d.ts.map +1 -1
  493. package/dist/types/hooks/useOptionalCachedState.d.ts.map +1 -1
  494. package/dist/types/hooks/useSyncCollectionOnEntityDelete.d.ts +4 -0
  495. package/dist/types/hooks/useSyncCollectionOnEntityDelete.d.ts.map +1 -0
  496. package/dist/types/hooks/useSyncCollectionOnEntityReturn.d.ts +1 -0
  497. package/dist/types/hooks/useSyncCollectionOnEntityReturn.d.ts.map +1 -1
  498. package/dist/types/schema/sourceMutations.d.ts.map +1 -1
  499. package/dist/types/schema/useEntityPage.d.ts.map +1 -1
  500. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  501. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  502. package/dist/types/state/EditableTable/EditableTableState.d.ts.map +1 -1
  503. package/dist/types/state/EditableTable/MutationState.d.ts +5 -3
  504. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  505. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts +55 -0
  506. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts.map +1 -0
  507. package/dist/types/state/EntityPage/EntityPageState.d.ts +16 -0
  508. package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
  509. package/dist/types/state/EntityPage/index.d.ts +1 -0
  510. package/dist/types/state/EntityPage/index.d.ts.map +1 -1
  511. package/dist/types/state/WixPatternsRouterState.d.ts +1 -0
  512. package/dist/types/state/WixPatternsRouterState.d.ts.map +1 -1
  513. package/dist/types/state/buildEditableFieldColumns.d.ts +3 -3
  514. package/dist/types/state/buildEditableFieldColumns.d.ts.map +1 -1
  515. package/dist/types/state/index.d.ts +1 -0
  516. package/dist/types/state/index.d.ts.map +1 -1
  517. package/dist/types/testkit/enzyme.d.ts +94 -0
  518. package/dist/types/testkit/enzyme.d.ts.map +1 -1
  519. package/dist/types/testkit/jsdom.d.ts +94 -0
  520. package/dist/types/testkit/jsdom.d.ts.map +1 -1
  521. package/dist/types/testkit/playwright.d.ts +94 -0
  522. package/dist/types/testkit/playwright.d.ts.map +1 -1
  523. package/dist/types/testkit/puppeteer.d.ts +94 -0
  524. package/dist/types/testkit/puppeteer.d.ts.map +1 -1
  525. package/dist/types/version.d.ts +1 -1
  526. package/package.json +7 -7
  527. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  528. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  529. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  530. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  531. package/src/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.ts +2 -2
  532. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  533. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  534. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  535. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  536. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  537. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  538. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  539. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  540. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  541. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  542. package/src/components/EditableTable/AddItemRow.tsx +3 -1
  543. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  544. package/src/components/EditableTable/EditableTable.tsx +4 -1
  545. package/src/components/EditableTable/EditableTableContextMenu.tsx +25 -19
  546. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  547. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  548. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  549. package/src/components/EditableTable/cellTypes/address/index.tsx +2 -2
  550. package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
  551. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  552. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  553. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  554. package/src/components/EditableTable/cellTypes/color/index.tsx +2 -2
  555. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  556. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  557. package/src/components/EditableTable/cellTypes/date/index.ts +2 -2
  558. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  559. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  560. package/src/components/EditableTable/cellTypes/datetime/index.ts +4 -2
  561. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  562. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  563. package/src/components/EditableTable/cellTypes/email/index.ts +2 -2
  564. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  565. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  566. package/src/components/EditableTable/cellTypes/number/index.ts +2 -2
  567. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
  568. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  569. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  570. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  571. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  572. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  573. package/src/components/EditableTable/cellTypes/time/index.ts +4 -2
  574. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  575. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  576. package/src/components/EditableTable/cellTypes/url/index.ts +2 -2
  577. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  578. package/src/components/EntityPage/EntityPage.uni.driver.ts +13 -0
  579. package/src/components/EntityPage/EntityPageActionsBar.tsx +93 -9
  580. package/src/components/EntityPage/EntityPageDeleteAction.tsx +50 -0
  581. package/src/components/EntityPage/EntityPageDeleteConfirmModal.tsx +40 -0
  582. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  583. package/src/components/EntityPageFields/EntityPageCustomField.tsx +3 -1
  584. package/src/components/Fade/Fade.st.css.ts +2 -2
  585. package/src/components/FormPage/FormPageActionsBar.tsx +4 -1
  586. package/src/components/Heading/Heading.st.css.ts +2 -2
  587. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  588. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  589. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  590. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  591. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  592. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  593. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  594. package/src/components/NestedTable/NestedTableRow.st.css +14 -4
  595. package/src/components/NestedTable/NestedTableRow.st.css.ts +3 -3
  596. package/src/components/NestedTable/NestedTableRow.tsx +1 -4
  597. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  598. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +3 -3
  599. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  600. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +3 -3
  601. package/src/components/NestedTableDragAndDrop/NestedTableDragHandle.tsx +4 -2
  602. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  603. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  604. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  605. package/src/components/QuerySearch.tsx +3 -0
  606. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  607. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  608. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  609. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  610. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  611. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  612. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  613. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  614. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  615. package/src/components/common.st.css.ts +2 -2
  616. package/src/exports/schema.ts +1 -0
  617. package/src/hooks/index.ts +1 -0
  618. package/src/hooks/useEntityPage.ts +2 -0
  619. package/src/hooks/useOptionalCachedState.ts +2 -0
  620. package/src/hooks/useSyncCollectionOnEntityDelete.ts +74 -0
  621. package/src/hooks/useSyncCollectionOnEntityReturn.ts +26 -23
  622. package/src/schema/sourceMutations.ts +5 -2
  623. package/src/schema/useEntityPage.ts +42 -6
  624. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  625. package/src/state/EditableTable/CellValueState.ts +43 -17
  626. package/src/state/EditableTable/EditableTableState.ts +1 -0
  627. package/src/state/EditableTable/MutationState.ts +90 -19
  628. package/src/state/EntityPage/EntityPageDeleteActionState.ts +228 -0
  629. package/src/state/EntityPage/EntityPageState.ts +48 -1
  630. package/src/state/EntityPage/index.ts +1 -0
  631. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  632. package/src/state/WixPatternsRouterState.ts +1 -0
  633. package/src/state/buildEditableFieldColumns.ts +14 -4
  634. package/src/state/index.ts +1 -0
  635. package/src/styles.global.css +2 -2
  636. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","flushDrafts","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","translate","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n return () => {\n this.cellValue.flushDrafts();\n disposeMutation();\n };\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","translate","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","flushDrafts","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n this.collection.translate,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n return () => {\n this.cellValue.flushDrafts();\n disposeMutation();\n };\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -139,6 +139,7 @@ class MutationState {
139
139
 
140
140
  /** Create a local new row on the server, with its edited values merged in. */
141
141
  commitNewRow(rowKey, item) {
142
+ const t = this._parent.collection.translate;
142
143
  const draft = this._drafts.get(rowKey);
143
144
  if (!draft) {
144
145
  return;
@@ -152,19 +153,20 @@ class MutationState {
152
153
  this._optimisticActions.createOne(item, {
153
154
  submit: this._submitCreate,
154
155
  afterItemKey,
155
- successToast: 'Item created',
156
+ successToast: t('cairo.editableTable.createItem.success.toast'),
156
157
  errorToast: (_err, {
157
158
  retry
158
159
  }) => ({
159
- message: 'Failed to create item',
160
+ message: t('cairo.editableTable.createItem.error.toast'),
160
161
  action: {
161
162
  onClick: retry,
162
- text: 'Retry'
163
+ text: t('cairo.editableTable.retry.toast.CTA')
163
164
  }
164
165
  })
165
166
  });
166
167
  }
167
168
  duplicateItem(rowKey) {
169
+ const t = this._parent.collection.translate;
168
170
  const keyedItem = this._parent.keyedItems.find(ki => ki.key === rowKey);
169
171
  if (!keyedItem) {
170
172
  return;
@@ -189,19 +191,20 @@ class MutationState {
189
191
  this._optimisticActions.createOne(duplicate, {
190
192
  submit: this._submitCreate,
191
193
  afterItemKey: rowKey,
192
- successToast: 'Item duplicated',
194
+ successToast: t('cairo.editableTable.duplicateItem.success.toast'),
193
195
  errorToast: (_err, {
194
196
  retry
195
197
  }) => ({
196
- message: 'Failed to duplicate item',
198
+ message: t('cairo.editableTable.duplicateItem.error.toast'),
197
199
  action: {
198
200
  onClick: retry,
199
- text: 'Retry'
201
+ text: t('cairo.editableTable.retry.toast.CTA')
200
202
  }
201
203
  })
202
204
  });
203
205
  }
204
206
  deleteItems(rowKeys) {
207
+ const t = this._parent.collection.translate;
205
208
  const deleted = new Set(rowKeys);
206
209
 
207
210
  // Surviving drafts anchored on a deleted row move up to the nearest
@@ -234,37 +237,58 @@ class MutationState {
234
237
  }
235
238
  this._optimisticActions.deleteMany(items, {
236
239
  submit: this._handlers.submitDelete,
237
- successToast: items.length === 1 ? 'Item deleted' : `${items.length} items deleted`,
240
+ successToast: t('cairo.editableTable.deleteItem.success.toast', {
241
+ count: items.length
242
+ }),
238
243
  errorToast: (_err, {
239
244
  retry
240
245
  }) => ({
241
- message: 'Failed to delete items',
246
+ message: t('cairo.editableTable.deleteItem.error.toast'),
242
247
  action: {
243
248
  onClick: retry,
244
- text: 'Retry'
249
+ text: t('cairo.editableTable.retry.toast.CTA')
245
250
  }
246
251
  })
247
252
  });
248
253
  }
249
- updateItems(updatedItems) {
254
+ updateItems(updatedItems, changedFieldIdsByItem) {
255
+ const t = this._parent.collection.translate;
250
256
  if (updatedItems.length === 0) {
251
257
  return;
252
258
  }
259
+ const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
253
260
  this._optimisticActions.updateMany(updatedItems, {
254
261
  keepPosition: true,
255
- submit: this._handlers.submitUpdate,
256
- successToast: updatedItems.length === 1 ? 'Item updated' : `${updatedItems.length} items updated`,
262
+ submit: items => this._submitUpdate(items, updatedItems, contexts),
263
+ successToast: t('cairo.editableTable.updateItem.success.toast', {
264
+ count: updatedItems.length
265
+ }),
257
266
  errorToast: (_err, {
258
267
  retry
259
268
  }) => ({
260
- message: 'Failed to update items',
269
+ message: t('cairo.editableTable.updateItem.error.toast'),
261
270
  action: {
262
271
  onClick: retry,
263
- text: 'Retry'
272
+ text: t('cairo.editableTable.retry.toast.CTA')
264
273
  }
265
274
  })
266
275
  });
267
276
  }
277
+ _submitUpdate(items, updatedItems, contexts) {
278
+ const sameItems = items.length === updatedItems.length && items.every((item, index) => item === updatedItems[index]);
279
+ return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);
280
+ }
281
+ _updateContexts(updatedItems, changedFieldIdsByItem) {
282
+ return updatedItems.map((item, index) => {
283
+ var _this$_parent$collect;
284
+ const key = this._parent.collection.itemKey(item);
285
+ const previousItem = ((_this$_parent$collect = this._parent.collection.result.get(key)) == null ? void 0 : _this$_parent$collect.item) ?? item;
286
+ return {
287
+ previousItem,
288
+ changedFieldIds: (changedFieldIdsByItem == null ? void 0 : changedFieldIdsByItem[index]) ?? changedFieldIdsFromItems(previousItem, item)
289
+ };
290
+ });
291
+ }
268
292
 
269
293
  /**
270
294
  * Nearest row above `rowKey` that a create can anchor on: a server row
@@ -300,4 +324,11 @@ class MutationState {
300
324
  }
301
325
  }
302
326
  exports.MutationState = MutationState;
327
+ const changedFieldIdsFromItems = (previousItem, updatedItem) => {
328
+ if (!isRecord(previousItem) || !isRecord(updatedItem)) {
329
+ return [];
330
+ }
331
+ return Array.from(new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)])).filter(fieldId => !Object.is(previousItem[fieldId], updatedItem[fieldId]));
332
+ };
333
+ const isRecord = value => typeof value === 'object' && value !== null;
303
334
  //# sourceMappingURL=MutationState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","newItem","createItem","isLocalNewRow","has","_serverAnchorFor","add","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","onClick","text","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","updateItems","updatedItems","updateMany","keepPosition","submitUpdate","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (items: T[]) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, { item: T; afterItemKey?: string }>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: 'Item created',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to create item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n duplicateItem(rowKey: string) {\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: rowKey,\n successToast: 'Item duplicated',\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to duplicate item',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast:\n items.length === 1 ? 'Item deleted' : `${items.length} items deleted`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to delete items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n updateItems(updatedItems: T[]) {\n if (updatedItems.length === 0) {\n return;\n }\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: this._handlers.submitUpdate,\n successToast:\n updatedItems.length === 1\n ? 'Item updated'\n : `${updatedItems.length} items updated`,\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: 'Failed to update items',\n action: { onClick: retry, text: 'Retry' },\n }),\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","onClick","text","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updateItems","updatedItems","changedFieldIdsByItem","contexts","_updateContexts","updateMany","keepPosition","_submitUpdate","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","result","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, { item: T; afterItemKey?: string }>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.createItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.duplicateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.deleteItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n updateItems(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ) {\n const t = this._parent.collection.translate;\n if (updatedItems.length === 0) {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: (items) => this._submitUpdate(items, updatedItems, contexts),\n successToast: t('cairo.editableTable.updateItem.success.toast', {\n count: updatedItems.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.updateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.EntityPageDeleteActionState = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _bexCore = require("@wix/bex-core");
8
+ var _mobx = require("mobx");
9
+ class EntityPageDeleteActionState {
10
+ constructor(params) {
11
+ (0, _defineProperty2.default)(this, "container", void 0);
12
+ (0, _defineProperty2.default)(this, "deleteAction", void 0);
13
+ (0, _defineProperty2.default)(this, "schemaSource", void 0);
14
+ (0, _defineProperty2.default)(this, "getEntity", void 0);
15
+ (0, _defineProperty2.default)(this, "getLoadedSchema", void 0);
16
+ (0, _defineProperty2.default)(this, "transformEntityToCollectionItem", void 0);
17
+ (0, _defineProperty2.default)(this, "onDeleted", void 0);
18
+ (0, _defineProperty2.default)(this, "emitDelete", void 0);
19
+ (0, _defineProperty2.default)(this, "emitDeleteError", void 0);
20
+ (0, _defineProperty2.default)(this, "task", new _bexCore.TaskState());
21
+ this.container = params.container;
22
+ this.deleteAction = params.deleteAction;
23
+ this.schemaSource = params.schemaSource;
24
+ this.getEntity = params.getEntity;
25
+ this.getLoadedSchema = params.getLoadedSchema;
26
+ this.transformEntityToCollectionItem = params.transformEntityToCollectionItem;
27
+ this.onDeleted = params.onDeleted;
28
+ this.emitDelete = params.emitDelete;
29
+ this.emitDeleteError = params.emitDeleteError;
30
+ (0, _mobx.makeObservable)(this, {
31
+ canShow: _mobx.computed,
32
+ disabledReason: _mobx.computed
33
+ });
34
+ }
35
+ get config() {
36
+ if (!this.deleteAction) {
37
+ return null;
38
+ }
39
+ return typeof this.deleteAction === 'boolean' ? {} : this.deleteAction;
40
+ }
41
+ get isEnabled() {
42
+ var _this$config;
43
+ return ((_this$config = this.config) == null ? void 0 : _this$config.enabled) !== false;
44
+ }
45
+ getDeleteHandler() {
46
+ var _this$getLoadedSchema;
47
+ const config = this.config;
48
+ if (!config || !this.isEnabled) {
49
+ return undefined;
50
+ }
51
+ if (config.onDelete) {
52
+ return config.onDelete;
53
+ }
54
+ const backendDelete = (_this$getLoadedSchema = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema.backend.delete;
55
+ if (this.schemaSource && backendDelete) {
56
+ return entity => backendDelete(this.schemaSource.itemKey(entity));
57
+ }
58
+ return undefined;
59
+ }
60
+ get canShow() {
61
+ var _this$getLoadedSchema2;
62
+ const itemPermissions = (_this$getLoadedSchema2 = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema2.schema.itemPermissions;
63
+ return !!this.getEntity() && !!this.config && this.isEnabled && !!this.getDeleteHandler() && ((itemPermissions == null ? void 0 : itemPermissions.deleteItem) ?? true);
64
+ }
65
+ get disabledReason() {
66
+ var _this$getLoadedSchema3;
67
+ const entity = this.getEntity();
68
+ const itemPermissions = (_this$getLoadedSchema3 = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema3.schema.itemPermissions;
69
+ const disabledResult = entity && itemPermissions != null && itemPermissions.isRemoveItemDisabled ? itemPermissions.isRemoveItemDisabled(entity) : undefined;
70
+ if (!(disabledResult != null && disabledResult.disabled)) {
71
+ return undefined;
72
+ }
73
+ return disabledResult.reason ?? this.container.translate('cairo.disabled');
74
+ }
75
+ getItemName(entity) {
76
+ var _this$config2, _this$schemaSource;
77
+ const itemName = ((_this$config2 = this.config) == null || _this$config2.itemName == null ? void 0 : _this$config2.itemName(entity)) ?? ((_this$schemaSource = this.schemaSource) == null ? void 0 : _this$schemaSource.itemName(entity));
78
+ return itemName || this.container.translate('cairo.entity.item', {
79
+ num: 1
80
+ });
81
+ }
82
+ showSuccessToast(deletedEntity) {
83
+ var _this$config3, _this$container$showT, _this$container;
84
+ const successToast = (_this$config3 = this.config) == null ? void 0 : _this$config3.successToast;
85
+ const message = typeof successToast === 'string' ? successToast : successToast == null ? void 0 : successToast.message;
86
+ (_this$container$showT = (_this$container = this.container).showToast) == null || _this$container$showT.call(_this$container, {
87
+ type: 'SUCCESS',
88
+ biName: 'cairo-entity-page-delete-success-toast',
89
+ message: message ?? this.container.translate('cairo.deleteSuccess', {
90
+ itemName: this.getItemName(deletedEntity)
91
+ })
92
+ });
93
+ }
94
+ showErrorToast(err) {
95
+ var _this$config4, _this$container$showT2, _this$container2;
96
+ const errorToast = (_this$config4 = this.config) == null || _this$config4.errorToast == null ? void 0 : _this$config4.errorToast(err, {
97
+ retry: () => this.deleteEntity()
98
+ });
99
+ const message = typeof errorToast === 'string' ? errorToast : errorToast == null ? void 0 : errorToast.message;
100
+ const showTryAgain = typeof errorToast === 'string' ? true : (errorToast == null ? void 0 : errorToast.tryAgain) !== false;
101
+ const action = typeof errorToast === 'string' ? undefined : errorToast == null ? void 0 : errorToast.action;
102
+ (_this$container$showT2 = (_this$container2 = this.container).showToast) == null || _this$container$showT2.call(_this$container2, {
103
+ type: 'ERROR',
104
+ biName: 'cairo-entity-page-delete-error-toast',
105
+ message: message ?? this.container.translate('cairo.technical.error.text'),
106
+ action: action || showTryAgain ? {
107
+ uiType: 'LINK',
108
+ text: (action == null ? void 0 : action.text) ?? this.container.translate('cairo.toast.retry'),
109
+ onClick: () => {
110
+ if (action != null && action.onClick) {
111
+ action.onClick();
112
+ } else {
113
+ this.deleteEntity();
114
+ }
115
+ },
116
+ removeToastOnClick: true
117
+ } : undefined
118
+ });
119
+ }
120
+ async deleteEntity() {
121
+ if (this.task.status.isLoading || !this.canShow || this.disabledReason) {
122
+ return;
123
+ }
124
+ const entity = this.getEntity();
125
+ const deleteHandler = this.getDeleteHandler();
126
+ if (!entity || !deleteHandler) {
127
+ return;
128
+ }
129
+ this.emitDelete();
130
+ let caughtError;
131
+ await this.task.run(async () => {
132
+ await deleteHandler(entity);
133
+ }, err => {
134
+ caughtError = err;
135
+ });
136
+ if (caughtError) {
137
+ this.showErrorToast(caughtError);
138
+ this.container.errorMonitor.captureException(caughtError);
139
+ this.emitDeleteError(caughtError);
140
+ throw caughtError;
141
+ }
142
+ this.showSuccessToast(entity);
143
+ this.onDeleted(this.transformEntityToCollectionItem(entity));
144
+ }
145
+ }
146
+ exports.EntityPageDeleteActionState = EntityPageDeleteActionState;
147
+ //# sourceMappingURL=EntityPageDeleteActionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_bexCore","require","_mobx","EntityPageDeleteActionState","constructor","params","_defineProperty2","default","TaskState","container","deleteAction","schemaSource","getEntity","getLoadedSchema","transformEntityToCollectionItem","onDeleted","emitDelete","emitDeleteError","makeObservable","canShow","computed","disabledReason","config","isEnabled","_this$config","enabled","getDeleteHandler","_this$getLoadedSchema","undefined","onDelete","backendDelete","backend","delete","entity","itemKey","_this$getLoadedSchema2","itemPermissions","schema","deleteItem","_this$getLoadedSchema3","disabledResult","isRemoveItemDisabled","disabled","reason","translate","getItemName","_this$config2","_this$schemaSource","itemName","num","showSuccessToast","deletedEntity","_this$config3","_this$container$showT","_this$container","successToast","message","showToast","call","type","biName","showErrorToast","err","_this$config4","_this$container$showT2","_this$container2","errorToast","retry","deleteEntity","showTryAgain","tryAgain","action","uiType","text","onClick","removeToastOnClick","task","status","isLoading","deleteHandler","caughtError","run","errorMonitor","captureException","exports"],"sources":["../../../../src/state/EntityPage/EntityPageDeleteActionState.ts"],"sourcesContent":["import { TaskState } from '@wix/bex-core';\nimport type {\n LoadedSchema,\n SchemaSource,\n ToastConfig,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport { computed, makeObservable } from 'mobx';\n\ntype DeleteErrorToast = (\n err: unknown,\n params: { retry: () => void },\n) =>\n | {\n message?: string;\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\nexport interface EntityPageDeleteActionConfig<T> {\n enabled?: boolean;\n onDelete?: (entity: T) => Promise<void>;\n successToast?: Pick<ToastConfig, 'message'> | string;\n errorToast?: DeleteErrorToast;\n itemName?: (entity: T) => string;\n}\n\nexport type EntityPageDeleteAction<T> =\n | boolean\n | EntityPageDeleteActionConfig<T>;\n\nexport interface EntityPageDeleteActionStateParams<T> {\n container: WixPatternsContainer;\n deleteAction?: EntityPageDeleteAction<T>;\n schemaSource?: SchemaSource<T>;\n getEntity: () => T | null;\n getLoadedSchema: () => LoadedSchema<T> | null;\n transformEntityToCollectionItem: (entity: T) => any;\n onDeleted: (deletedCollectionItem: any) => void;\n emitDelete: () => void;\n emitDeleteError: (err: unknown) => void;\n}\n\nexport class EntityPageDeleteActionState<T> {\n readonly container: WixPatternsContainer;\n readonly deleteAction?: EntityPageDeleteAction<T>;\n readonly schemaSource?: SchemaSource<T>;\n readonly getEntity: () => T | null;\n readonly getLoadedSchema: () => LoadedSchema<T> | null;\n readonly transformEntityToCollectionItem: (entity: T) => any;\n readonly onDeleted: (deletedCollectionItem: any) => void;\n readonly emitDelete: () => void;\n readonly emitDeleteError: (err: unknown) => void;\n\n readonly task = new TaskState<void>();\n\n constructor(params: EntityPageDeleteActionStateParams<T>) {\n this.container = params.container;\n this.deleteAction = params.deleteAction;\n this.schemaSource = params.schemaSource;\n this.getEntity = params.getEntity;\n this.getLoadedSchema = params.getLoadedSchema;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem;\n this.onDeleted = params.onDeleted;\n this.emitDelete = params.emitDelete;\n this.emitDeleteError = params.emitDeleteError;\n\n makeObservable(this, {\n canShow: computed,\n disabledReason: computed,\n });\n }\n\n private get config(): EntityPageDeleteActionConfig<T> | null {\n if (!this.deleteAction) {\n return null;\n }\n\n return typeof this.deleteAction === 'boolean' ? {} : this.deleteAction;\n }\n\n private get isEnabled() {\n return this.config?.enabled !== false;\n }\n\n private getDeleteHandler(): ((entity: T) => Promise<void>) | undefined {\n const config = this.config;\n if (!config || !this.isEnabled) {\n return undefined;\n }\n\n if (config.onDelete) {\n return config.onDelete;\n }\n\n const backendDelete = this.getLoadedSchema()?.backend.delete;\n if (this.schemaSource && backendDelete) {\n return (entity) => backendDelete(this.schemaSource!.itemKey(entity));\n }\n\n return undefined;\n }\n\n get canShow() {\n const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;\n return (\n !!this.getEntity() &&\n !!this.config &&\n this.isEnabled &&\n !!this.getDeleteHandler() &&\n (itemPermissions?.deleteItem ?? true)\n );\n }\n\n get disabledReason() {\n const entity = this.getEntity();\n const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;\n const disabledResult =\n entity && itemPermissions?.isRemoveItemDisabled\n ? itemPermissions.isRemoveItemDisabled(entity)\n : undefined;\n\n if (!disabledResult?.disabled) {\n return undefined;\n }\n\n return disabledResult.reason ?? this.container.translate('cairo.disabled');\n }\n\n getItemName(entity: T) {\n const itemName =\n this.config?.itemName?.(entity) ?? this.schemaSource?.itemName(entity);\n\n return (\n itemName ||\n this.container.translate('cairo.entity.item', {\n num: 1,\n })\n );\n }\n\n private showSuccessToast(deletedEntity: T) {\n const successToast = this.config?.successToast;\n const message =\n typeof successToast === 'string' ? successToast : successToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-delete-success-toast',\n message:\n message ??\n this.container.translate('cairo.deleteSuccess', {\n itemName: this.getItemName(deletedEntity),\n }),\n });\n }\n\n private showErrorToast(err: unknown) {\n const errorToast = this.config?.errorToast?.(err, {\n retry: () => this.deleteEntity(),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-delete-error-toast',\n message:\n message ?? this.container.translate('cairo.technical.error.text'),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.deleteEntity();\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n async deleteEntity() {\n if (this.task.status.isLoading || !this.canShow || this.disabledReason) {\n return;\n }\n\n const entity = this.getEntity();\n const deleteHandler = this.getDeleteHandler();\n if (!entity || !deleteHandler) {\n return;\n }\n\n this.emitDelete();\n\n let caughtError: unknown;\n await this.task.run(\n async () => {\n await deleteHandler(entity);\n },\n (err) => {\n caughtError = err;\n },\n );\n\n if (caughtError) {\n this.showErrorToast(caughtError);\n this.container.errorMonitor.captureException(caughtError);\n this.emitDeleteError(caughtError);\n throw caughtError;\n }\n\n this.showSuccessToast(entity);\n this.onDeleted(this.transformEntityToCollectionItem(entity));\n }\n}\n"],"mappings":"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","ignoreList":[]}