@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
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "common5230984";
8
+ var _namespace_ = "common3085911248";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"common5230984__root","column":"common5230984__column","fullHeight":"common5230984__fullHeight"};
16
+ export var classes = {"root":"common3085911248__root","column":"common3085911248__column","fullHeight":"common3085911248__fullHeight"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -36,6 +36,7 @@ export { useSchemaSource } from '../schema/useSchemaSource';
36
36
  export type { FieldsSchemaSource } from '../schema/useSchemaSource';
37
37
  export { defineSchemaSource, sourceFetchData } from '@wix/bex-core';
38
38
  export type {
39
+ CollectionUpdateContext,
39
40
  SchemaSource,
40
41
  SchemaSourceInput,
41
42
  FieldModalInput,
@@ -15,6 +15,7 @@ export * from './useTableCollection';
15
15
  export * from './useGridCollection';
16
16
  export * from './useTableGridSwitchCollection';
17
17
  export * from './useEntityPage';
18
+ export * from './useSyncCollectionOnEntityDelete';
18
19
  export * from './useSettingsPage';
19
20
  export * from './useEntityPageChild';
20
21
  export * from './useSettingsPageChild';
@@ -10,6 +10,8 @@ export type UseEntityPageParams<T, V extends FieldValues = FieldValues> = Pick<
10
10
  | 'onSave'
11
11
  | 'saveSuccessToast'
12
12
  | 'saveErrorToast'
13
+ | 'deleteAction'
14
+ | 'transformEntityToCollectionItem'
13
15
  | 'form'
14
16
  | 'parentPageId'
15
17
  | 'parentPath'
@@ -8,6 +8,7 @@ import {
8
8
  WixPatternsContainer,
9
9
  } from '@wix/bex-core';
10
10
  import { useSyncCollectionOnEntityCreate } from './useSyncCollectionOnEntityCreate';
11
+ import { useSyncCollectionOnEntityDelete } from './useSyncCollectionOnEntityDelete';
11
12
  import { useSyncCollectionOnEntityUpdate } from './useSyncCollectionOnEntityUpdate';
12
13
  import { WixPatternsRouterState } from '../state/WixPatternsRouterState';
13
14
  import { useWixPatternsContainer } from '@wix/bex-core/react';
@@ -75,6 +76,7 @@ export function useOptionalCachedState<S extends ICollectionComponentState>(
75
76
 
76
77
  useSyncCollectionOnEntityCreate(cachedState, getCollectionsToUpdate);
77
78
  useSyncCollectionOnEntityUpdate(cachedState, getCollectionsToUpdate);
79
+ useSyncCollectionOnEntityDelete(cachedState, getCollectionsToUpdate);
78
80
 
79
81
  const [state] = useState<S>(() => {
80
82
  if (router) {
@@ -0,0 +1,74 @@
1
+ import { useCallback } from 'react';
2
+
3
+ import { ICollectionComponentState } from '../state/ICollectionComponentState';
4
+ import { CollectionState } from '@wix/bex-core';
5
+ import { useSyncCollectionOnEntityReturn } from './useSyncCollectionOnEntityReturn';
6
+
7
+ type FetchedPageInfo<T> = CollectionState<T>['fetchesHistory'][number];
8
+
9
+ const findLatestFetchedPageContainingItem = <T>(
10
+ collection: CollectionState<T>,
11
+ itemKey: string,
12
+ ): FetchedPageInfo<T> | undefined => {
13
+ for (
14
+ let fetchIndex = collection.fetchesHistory.length - 1;
15
+ fetchIndex >= 0;
16
+ fetchIndex--
17
+ ) {
18
+ const fetch = collection.fetchesHistory[fetchIndex];
19
+
20
+ if (fetch.itemsKeys.includes(itemKey)) {
21
+ return fetch;
22
+ }
23
+ }
24
+
25
+ return undefined;
26
+ };
27
+
28
+ export function useSyncCollectionOnEntityDelete<
29
+ T,
30
+ S extends ICollectionComponentState,
31
+ >(
32
+ cachedState?: S,
33
+ getCollectionsToUpdate?: (state: S, entity: T) => CollectionState<T>[] | null,
34
+ ) {
35
+ const updateCollection = useCallback(
36
+ (collection: CollectionState<T>, deletedEntity: T) => {
37
+ collection.removeItem(deletedEntity);
38
+ },
39
+ [],
40
+ );
41
+
42
+ const checkIfViewSynced = useCallback(
43
+ async (collection: CollectionState<T>, deletedEntity: T) => {
44
+ const deletedItemKey = collection.itemKey(deletedEntity);
45
+ const fetchedPage = findLatestFetchedPageContainingItem(
46
+ collection,
47
+ deletedItemKey,
48
+ );
49
+
50
+ if (!fetchedPage) {
51
+ return true;
52
+ }
53
+
54
+ const updatedData = await collection.fetchData({
55
+ ...collection.query.asComputed,
56
+ ...fetchedPage.queryPageInfo,
57
+ });
58
+
59
+ return !updatedData.items.some(
60
+ (item) => collection.itemKey(item) === deletedItemKey,
61
+ );
62
+ },
63
+ [],
64
+ );
65
+
66
+ useSyncCollectionOnEntityReturn({
67
+ cachedState,
68
+ updateCollection,
69
+ checkIfViewSynced,
70
+ getEntityFromRouterState: (state: { _deletedEntity?: T }) =>
71
+ state._deletedEntity,
72
+ getCollectionsToUpdate,
73
+ });
74
+ }
@@ -1,4 +1,4 @@
1
- import { useEffect, useMemo, useRef, useState } from 'react';
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { useWixPatternsRouter } from '../providers/WixPatternsRouterProvider';
3
3
  import { ICollectionComponentState } from '../state/ICollectionComponentState';
4
4
  import { useWixPatternsContainer } from '@wix/bex-core/react';
@@ -24,12 +24,12 @@ export function useSyncCollectionOnEntityReturn<
24
24
  getEntityFromRouterState: (state: {
25
25
  _updatedEntity?: T;
26
26
  _createdEntity?: T;
27
+ _deletedEntity?: T;
27
28
  }) => T | undefined;
28
29
  getCollectionsToUpdate?: (state: S, entity: T) => CollectionState<T>[] | null;
29
30
  }) {
30
31
  const container = useWixPatternsContainer();
31
32
  const router = useWixPatternsRouter();
32
- const timeoutRef = useRef<number>();
33
33
 
34
34
  const routeState = useSelector(() => router?.currentState);
35
35
 
@@ -56,7 +56,7 @@ export function useSyncCollectionOnEntityReturn<
56
56
  remove: RemoveToast;
57
57
  } | null>(null);
58
58
 
59
- const showViewUpdatedToast = () => {
59
+ const showViewUpdatedToast = useCallback(() => {
60
60
  const toast = container.showToast?.({
61
61
  type: 'STANDARD',
62
62
  timeout: 'NONE',
@@ -81,7 +81,7 @@ export function useSyncCollectionOnEntityReturn<
81
81
  if (toast) {
82
82
  setCurrentToast(toast);
83
83
  }
84
- };
84
+ }, [collections, container]);
85
85
 
86
86
  useEffect(() => {
87
87
  if (entity && collections && router) {
@@ -94,21 +94,32 @@ export function useSyncCollectionOnEntityReturn<
94
94
  collections.map((collection) =>
95
95
  checkIfViewSynced(collection, entity),
96
96
  ),
97
- ).then((results) => {
98
- const isViewSynced =
99
- results.some(Boolean) && !router.isCollectionStale;
100
- if (!isViewSynced) {
97
+ )
98
+ .then((results) => results.every(Boolean))
99
+ .catch(() => false)
100
+ .then((isViewSynced) => {
101
+ if (isViewSynced && !router.isCollectionStale) {
102
+ return;
103
+ }
104
+
101
105
  router.isCollectionStale = true;
102
106
  showViewUpdatedToast();
103
- }
104
- });
107
+ });
105
108
  }, 3000);
106
109
 
107
- timeoutRef.current = timeoutId;
110
+ return () => window.clearTimeout(timeoutId);
108
111
  } else if (router?.isCollectionStale) {
109
112
  showViewUpdatedToast();
110
113
  }
111
- }, [collections, entity]);
114
+ return () => {};
115
+ }, [
116
+ checkIfViewSynced,
117
+ collections,
118
+ entity,
119
+ router,
120
+ showViewUpdatedToast,
121
+ updateCollection,
122
+ ]);
112
123
 
113
124
  useEffect(() => {
114
125
  if (!currentToast || !cachedState) {
@@ -129,25 +140,17 @@ export function useSyncCollectionOnEntityReturn<
129
140
  };
130
141
 
131
142
  collections?.forEach((collection) => {
132
- collection?.emitter.on('fetch', () => {
133
- onFetch();
134
- });
143
+ collection?.emitter.on('fetch', onFetch);
135
144
  });
136
145
  return () => {
137
146
  collections?.forEach((collection) => {
138
- collection?.emitter.off('fetch', () => {
139
- onFetch();
140
- });
147
+ collection?.emitter.off('fetch', onFetch);
141
148
  });
142
149
  };
143
- }, [currentToast, collections]);
150
+ }, [cachedState, collections, currentToast, router]);
144
151
 
145
152
  useEffect(() => {
146
153
  return () => {
147
- if (timeoutRef.current) {
148
- window.clearTimeout(timeoutRef.current);
149
- }
150
-
151
154
  currentToast?.remove();
152
155
  };
153
156
  }, [currentToast]);
@@ -57,9 +57,12 @@ export function sourceMutations<T>(
57
57
  required(backend().create, 'creating')(withoutLocalId(item)),
58
58
  ),
59
59
  ),
60
- submitUpdate: (items) =>
60
+ submitUpdate: (items, contexts) =>
61
61
  Promise.all(
62
- items.map((item) => required(backend().update, 'updating')(item)),
62
+ items.map((item, index) => {
63
+ const update = required(backend().update, 'updating');
64
+ return update(item, contexts?.[index]);
65
+ }),
63
66
  ),
64
67
  submitDelete: async (items) => {
65
68
  await required(
@@ -1,7 +1,7 @@
1
1
  import { useState } from 'react';
2
2
  import type { FieldValues } from 'react-hook-form';
3
3
  import type { SchemaSource } from '@wix/bex-core';
4
- import type { EntityPageState } from '../state';
4
+ import type { EntityPageDeleteAction, EntityPageState } from '../state';
5
5
  import {
6
6
  useEntityPage as useOpenEntityPage,
7
7
  type UseEntityPageParams,
@@ -32,7 +32,8 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
32
32
  source: SchemaSource<T>,
33
33
  options: SchemaEntityPageOptions<T, V>,
34
34
  ): EntityPageState<T, V> {
35
- const { entityId, fetch, onSave, createLocalItem, ...rest } = options;
35
+ const { entityId, fetch, onSave, createLocalItem, deleteAction, ...rest } =
36
+ options;
36
37
 
37
38
  // The derived read and write need values that change or don't exist yet when
38
39
  // the state is created: the state itself (the save merges into the loaded
@@ -46,6 +47,7 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
46
47
  fetch:
47
48
  fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),
48
49
  onSave: onSave ?? (() => saveToSource(source, page)),
50
+ deleteAction: resolveDeleteAction(page, deleteAction),
49
51
  } as UseEntityPageParams<T, V>);
50
52
 
51
53
  page.state = state;
@@ -53,6 +55,17 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
53
55
  return state;
54
56
  }
55
57
 
58
+ function resolveDeleteAction<T, V extends FieldValues>(
59
+ page: PageRef<T, V>,
60
+ deleteAction: EntityPageDeleteAction<T> | undefined,
61
+ ): EntityPageDeleteAction<T> | undefined {
62
+ if (!deleteAction || !page.entityId) {
63
+ return undefined;
64
+ }
65
+
66
+ return deleteAction;
67
+ }
68
+
56
69
  interface PageRef<T, V extends FieldValues> {
57
70
  entityId?: string;
58
71
  state?: EntityPageState<T, V>;
@@ -99,11 +112,13 @@ async function saveToSource<T, V extends FieldValues>(
99
112
  throw new Error(`The source has no entity "${entityId}" to update`);
100
113
  }
101
114
 
115
+ const updatedEntity = { ...entity, ...values } as T;
116
+
102
117
  return {
103
- updatedEntity: await required(
104
- backend.update,
105
- 'updating',
106
- )({ ...entity, ...values } as T),
118
+ updatedEntity: await required(backend.update, 'updating')(updatedEntity, {
119
+ previousItem: entity,
120
+ changedFieldIds: changedFieldIds(entity, updatedEntity, state!.form),
121
+ }),
107
122
  };
108
123
  }
109
124
 
@@ -113,3 +128,24 @@ function required<F>(fn: F | undefined, action: string): F {
113
128
  }
114
129
  return fn;
115
130
  }
131
+
132
+ function changedFieldIds<T, V extends FieldValues>(
133
+ previousItem: T,
134
+ updatedItem: T,
135
+ form: EntityPageState<T, V>['form'],
136
+ ): string[] {
137
+ const dirtyFields = form.formState.dirtyFields as Record<string, unknown>;
138
+ const dirtyFieldIds = Object.entries(dirtyFields)
139
+ .filter(([, value]) => Boolean(value))
140
+ .map(([fieldId]) => fieldId);
141
+
142
+ const previousRecord = previousItem as Record<string, unknown>;
143
+ const updatedRecord = updatedItem as Record<string, unknown>;
144
+ const changedByValue = Array.from(
145
+ new Set([...Object.keys(previousRecord), ...Object.keys(updatedRecord)]),
146
+ ).filter(
147
+ (fieldId) => !Object.is(previousRecord[fieldId], updatedRecord[fieldId]),
148
+ );
149
+
150
+ return Array.from(new Set([...dirtyFieldIds, ...changedByValue]));
151
+ }
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "CollectionPageHeader5161014";
8
+ var _namespace_ = "CollectionPageHeader2816488786";
9
9
  var _style_ = classesRuntime.bind(null, _namespace_);
10
10
 
11
11
  export var cssStates = statesRuntime.bind(null, _namespace_);
@@ -13,7 +13,7 @@ export var style = _style_;
13
13
  export var st: import("@stylable/runtime").STFunction = _style_;
14
14
 
15
15
  export var namespace = _namespace_;
16
- export var classes = {"root":"CollectionPageHeader5161014__root"};
16
+ export var classes = {"root":"CollectionPageHeader2816488786__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -261,7 +261,12 @@ export class CellValueState<T, F extends FiltersMap> {
261
261
  try {
262
262
  return { value: resolved.deserialize(rawValue) };
263
263
  } catch {
264
- return { value: rawValue, error: 'Value is not compatible' };
264
+ return {
265
+ value: rawValue,
266
+ error: this._parent.collection?.translate(
267
+ 'cairo.editableTable.cell.validation.notCompatible',
268
+ ),
269
+ };
265
270
  }
266
271
  }
267
272
 
@@ -295,7 +300,10 @@ export class CellValueState<T, F extends FiltersMap> {
295
300
  * read-only cells protected regardless of entry point.
296
301
  */
297
302
  applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {
298
- const rowItems = new Map<string, T>();
303
+ const rowUpdates = new Map<
304
+ string,
305
+ { item: T; changedFieldIds: Set<string> }
306
+ >();
299
307
 
300
308
  for (const { rowKey, columnId, value } of changes) {
301
309
  const column = this._parent._columnMap.get(columnId);
@@ -334,10 +342,17 @@ export class CellValueState<T, F extends FiltersMap> {
334
342
  }
335
343
  continue;
336
344
  }
337
- const currentItem =
338
- rowItems.get(rowKey) ??
339
- this._consumeRowDrafts(rowKey, keyedItem.item);
340
- rowItems.set(rowKey, column.setValue(currentItem, value));
345
+ let rowUpdate = rowUpdates.get(rowKey);
346
+ if (!rowUpdate) {
347
+ const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
348
+ rowUpdate = {
349
+ item: consumed.item,
350
+ changedFieldIds: new Set(consumed.changedFieldIds),
351
+ };
352
+ rowUpdates.set(rowKey, rowUpdate);
353
+ }
354
+ rowUpdate.item = column.setValue(rowUpdate.item, value);
355
+ rowUpdate.changedFieldIds.add(column.id);
341
356
  } else if (pendingKey) {
342
357
  this._pendingCells.set(pendingKey, {
343
358
  value,
@@ -346,7 +361,11 @@ export class CellValueState<T, F extends FiltersMap> {
346
361
  }
347
362
  }
348
363
 
349
- this._parent.mutation.updateItems(Array.from(rowItems.values()));
364
+ const updates = Array.from(rowUpdates.values());
365
+ this._parent.mutation.updateItems(
366
+ updates.map(({ item }) => item),
367
+ updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),
368
+ );
350
369
  }
351
370
 
352
371
  private _applyValue(rowKey: string, columnId: string, value: any) {
@@ -388,26 +407,32 @@ export class CellValueState<T, F extends FiltersMap> {
388
407
  }
389
408
  }
390
409
 
391
- const items: T[] = [];
410
+ const updates: { item: T; changedFieldIds: string[] }[] = [];
392
411
  for (const rowKey of rowKeys) {
393
412
  const keyedItem = this._parent._getKeyedItem(rowKey);
394
413
  if (!keyedItem) {
395
414
  this._dropRowDrafts(rowKey);
396
415
  } else if (this._parent.mutation.isLocalNewRow(rowKey)) {
397
- this._parent.mutation.commitNewRow(
398
- rowKey,
399
- this._consumeRowDrafts(rowKey, keyedItem.item),
400
- );
416
+ const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
417
+ this._parent.mutation.commitNewRow(rowKey, consumed.item);
401
418
  } else {
402
- items.push(this._consumeRowDrafts(rowKey, keyedItem.item));
419
+ const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
420
+ updates.push(consumed);
403
421
  }
404
422
  }
405
- if (items.length > 0) {
406
- this._parent.mutation.updateItems(items);
423
+ if (updates.length > 0) {
424
+ this._parent.mutation.updateItems(
425
+ updates.map(({ item }) => item),
426
+ updates.map(({ changedFieldIds }) => changedFieldIds),
427
+ );
407
428
  }
408
429
  }
409
430
 
410
- private _consumeRowDrafts(rowKey: string, item: T): T {
431
+ private _consumeRowDrafts(
432
+ rowKey: string,
433
+ item: T,
434
+ ): { item: T; changedFieldIds: string[] } {
435
+ const changedFieldIds = new Set<string>();
411
436
  for (const [key, entry] of this._draftCells) {
412
437
  if (entry.rowKey !== rowKey) {
413
438
  continue;
@@ -415,10 +440,11 @@ export class CellValueState<T, F extends FiltersMap> {
415
440
  const column = this._parent._columnMap.get(entry.columnId);
416
441
  if (column?.setValue) {
417
442
  item = column.setValue(item, entry.value);
443
+ changedFieldIds.add(column.id);
418
444
  }
419
445
  this._draftCells.delete(key);
420
446
  }
421
- return item;
447
+ return { item, changedFieldIds: Array.from(changedFieldIds) };
422
448
  }
423
449
 
424
450
  /** Drop a row's draft entries without saving (the row no longer exists). */
@@ -241,6 +241,7 @@ export class EditableTableState<T, F extends FiltersMap>
241
241
  }
242
242
  return buildEditableFieldColumns(
243
243
  source.fieldsSource,
244
+ this.collection.translate,
244
245
  source.editableCellFor,
245
246
  ) as EditableColumn<T>[];
246
247
  }
@@ -1,6 +1,7 @@
1
1
  import { action, makeObservable, observable, runInAction } from 'mobx';
2
2
  import type {
3
3
  CollectionOptimisticActions,
4
+ CollectionUpdateContext,
4
5
  CollectionState,
5
6
  FiltersMap,
6
7
  KeyedItem,
@@ -11,7 +12,10 @@ export interface EditableTableMutationHandlers<T> {
11
12
  /** Factory to create a new empty item with a fresh ID */
12
13
  createItem: () => T;
13
14
  /** Submit updated items to the server */
14
- submitUpdate: (items: T[]) => Promise<T[] | void>;
15
+ submitUpdate: (
16
+ items: T[],
17
+ contexts?: CollectionUpdateContext<T>[],
18
+ ) => Promise<T[] | void>;
15
19
  /** Submit newly created items to the server */
16
20
  submitCreate: (items: T[]) => Promise<T[] | void>;
17
21
  /** Submit item deletions to the server */
@@ -126,6 +130,7 @@ export class MutationState<T, F extends FiltersMap> {
126
130
 
127
131
  /** Create a local new row on the server, with its edited values merged in. */
128
132
  commitNewRow(rowKey: string, item: T) {
133
+ const t = this._parent.collection.translate;
129
134
  const draft = this._drafts.get(rowKey);
130
135
  if (!draft) {
131
136
  return;
@@ -140,15 +145,19 @@ export class MutationState<T, F extends FiltersMap> {
140
145
  this._optimisticActions.createOne(item, {
141
146
  submit: this._submitCreate,
142
147
  afterItemKey,
143
- successToast: 'Item created',
148
+ successToast: t('cairo.editableTable.createItem.success.toast'),
144
149
  errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({
145
- message: 'Failed to create item',
146
- action: { onClick: retry, text: 'Retry' },
150
+ message: t('cairo.editableTable.createItem.error.toast'),
151
+ action: {
152
+ onClick: retry,
153
+ text: t('cairo.editableTable.retry.toast.CTA'),
154
+ },
147
155
  }),
148
156
  });
149
157
  }
150
158
 
151
159
  duplicateItem(rowKey: string) {
160
+ const t = this._parent.collection.translate;
152
161
  const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);
153
162
  if (!keyedItem) {
154
163
  return;
@@ -170,15 +179,19 @@ export class MutationState<T, F extends FiltersMap> {
170
179
  this._optimisticActions.createOne(duplicate as T, {
171
180
  submit: this._submitCreate,
172
181
  afterItemKey: rowKey,
173
- successToast: 'Item duplicated',
182
+ successToast: t('cairo.editableTable.duplicateItem.success.toast'),
174
183
  errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({
175
- message: 'Failed to duplicate item',
176
- action: { onClick: retry, text: 'Retry' },
184
+ message: t('cairo.editableTable.duplicateItem.error.toast'),
185
+ action: {
186
+ onClick: retry,
187
+ text: t('cairo.editableTable.retry.toast.CTA'),
188
+ },
177
189
  }),
178
190
  });
179
191
  }
180
192
 
181
193
  deleteItems(rowKeys: string[]) {
194
+ const t = this._parent.collection.translate;
182
195
  const deleted = new Set(rowKeys);
183
196
 
184
197
  // Surviving drafts anchored on a deleted row move up to the nearest
@@ -217,33 +230,73 @@ export class MutationState<T, F extends FiltersMap> {
217
230
 
218
231
  this._optimisticActions.deleteMany(items, {
219
232
  submit: this._handlers.submitDelete,
220
- successToast:
221
- items.length === 1 ? 'Item deleted' : `${items.length} items deleted`,
233
+ successToast: t('cairo.editableTable.deleteItem.success.toast', {
234
+ count: items.length,
235
+ }),
222
236
  errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({
223
- message: 'Failed to delete items',
224
- action: { onClick: retry, text: 'Retry' },
237
+ message: t('cairo.editableTable.deleteItem.error.toast'),
238
+ action: {
239
+ onClick: retry,
240
+ text: t('cairo.editableTable.retry.toast.CTA'),
241
+ },
225
242
  }),
226
243
  });
227
244
  }
228
245
 
229
- updateItems(updatedItems: T[]) {
246
+ updateItems(
247
+ updatedItems: T[],
248
+ changedFieldIdsByItem?: string[][],
249
+ ) {
250
+ const t = this._parent.collection.translate;
230
251
  if (updatedItems.length === 0) {
231
252
  return;
232
253
  }
254
+ const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
233
255
  this._optimisticActions.updateMany(updatedItems, {
234
256
  keepPosition: true,
235
- submit: this._handlers.submitUpdate,
236
- successToast:
237
- updatedItems.length === 1
238
- ? 'Item updated'
239
- : `${updatedItems.length} items updated`,
257
+ submit: (items) => this._submitUpdate(items, updatedItems, contexts),
258
+ successToast: t('cairo.editableTable.updateItem.success.toast', {
259
+ count: updatedItems.length,
260
+ }),
240
261
  errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({
241
- message: 'Failed to update items',
242
- action: { onClick: retry, text: 'Retry' },
262
+ message: t('cairo.editableTable.updateItem.error.toast'),
263
+ action: {
264
+ onClick: retry,
265
+ text: t('cairo.editableTable.retry.toast.CTA'),
266
+ },
243
267
  }),
244
268
  });
245
269
  }
246
270
 
271
+ private _submitUpdate(
272
+ items: T[],
273
+ updatedItems: T[],
274
+ contexts: CollectionUpdateContext<T>[],
275
+ ) {
276
+ const sameItems =
277
+ items.length === updatedItems.length &&
278
+ items.every((item, index) => item === updatedItems[index]);
279
+
280
+ return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);
281
+ }
282
+
283
+ private _updateContexts(
284
+ updatedItems: T[],
285
+ changedFieldIdsByItem?: string[][],
286
+ ): CollectionUpdateContext<T>[] {
287
+ return updatedItems.map((item, index) => {
288
+ const key = this._parent.collection.itemKey(item);
289
+ const previousItem =
290
+ this._parent.collection.result.get(key)?.item ?? item;
291
+ return {
292
+ previousItem,
293
+ changedFieldIds:
294
+ changedFieldIdsByItem?.[index] ??
295
+ changedFieldIdsFromItems(previousItem, item),
296
+ };
297
+ });
298
+ }
299
+
247
300
  /**
248
301
  * Nearest row above `rowKey` that a create can anchor on: a server row
249
302
  * that is not a draft and not itself a created row still living as an
@@ -320,3 +373,21 @@ export class MutationState<T, F extends FiltersMap> {
320
373
  return createdItems;
321
374
  };
322
375
  }
376
+
377
+ const changedFieldIdsFromItems = <T>(
378
+ previousItem: T,
379
+ updatedItem: T,
380
+ ): string[] => {
381
+ if (!isRecord(previousItem) || !isRecord(updatedItem)) {
382
+ return [];
383
+ }
384
+
385
+ return Array.from(
386
+ new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),
387
+ ).filter(
388
+ (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),
389
+ );
390
+ };
391
+
392
+ const isRecord = (value: unknown): value is Record<string, unknown> =>
393
+ typeof value === 'object' && value !== null;