@wix/patterns 1.447.0 → 1.449.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 (601) 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/EditableCell.st.css.js +3 -3
  32. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  33. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  34. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  36. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  38. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  42. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  46. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  48. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  50. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  52. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  54. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  56. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  58. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  60. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
  64. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  66. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  68. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  70. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  72. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  74. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  76. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  78. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  79. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  80. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  81. package/dist/cjs/components/EntityPage/EntityPage.uni.driver.js +2 -0
  82. package/dist/cjs/components/EntityPage/EntityPage.uni.driver.js.map +1 -1
  83. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js +88 -10
  84. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  85. package/dist/cjs/components/EntityPage/EntityPageDeleteAction.js +71 -0
  86. package/dist/cjs/components/EntityPage/EntityPageDeleteAction.js.map +1 -0
  87. package/dist/cjs/components/EntityPage/EntityPageDeleteConfirmModal.js +46 -0
  88. package/dist/cjs/components/EntityPage/EntityPageDeleteConfirmModal.js.map +1 -0
  89. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  90. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  91. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  92. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  93. package/dist/cjs/components/FormPage/FormPageActionsBar.js +6 -5
  94. package/dist/cjs/components/FormPage/FormPageActionsBar.js.map +1 -1
  95. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  96. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  97. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  98. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  99. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  100. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  101. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  102. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  103. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  104. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  105. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  106. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  107. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  108. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  109. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  110. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  111. package/dist/cjs/components/NestedTable/NestedTableRow.js +2 -2
  112. package/dist/cjs/components/NestedTable/NestedTableRow.js.map +1 -1
  113. package/dist/cjs/components/NestedTable/NestedTableRow.st.css +14 -4
  114. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +12 -6
  115. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  116. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  117. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +8 -3
  118. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  119. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  120. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +6 -3
  121. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  122. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragHandle.js +7 -4
  123. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragHandle.js.map +1 -1
  124. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  125. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  126. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  127. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  128. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  129. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  130. package/dist/cjs/components/QuerySearch.js +4 -1
  131. package/dist/cjs/components/QuerySearch.js.map +1 -1
  132. package/dist/cjs/components/ReferenceFieldFilter/ReferenceFieldFilter.js +22 -15
  133. package/dist/cjs/components/ReferenceFieldFilter/ReferenceFieldFilter.js.map +1 -1
  134. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  135. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  136. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  137. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  138. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  139. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  140. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  141. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  142. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +4 -4
  143. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  144. package/dist/cjs/components/TabsFilter/TabTitle.js +7 -10
  145. package/dist/cjs/components/TabsFilter/TabTitle.js.map +1 -1
  146. package/dist/cjs/components/TabsFilter/TabsFilter.js +6 -8
  147. package/dist/cjs/components/TabsFilter/TabsFilter.js.map +1 -1
  148. package/dist/cjs/components/TabsFilter/TabsFilter.st.css +4 -17
  149. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +4 -10
  150. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  151. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  152. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  153. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  154. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  155. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  156. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  157. package/dist/cjs/components/common.st.css.js +4 -4
  158. package/dist/cjs/components/common.st.css.js.map +1 -1
  159. package/dist/cjs/exports/schema.js.map +1 -1
  160. package/dist/cjs/hooks/index.js +6 -0
  161. package/dist/cjs/hooks/index.js.map +1 -1
  162. package/dist/cjs/hooks/useEntityPage.js.map +1 -1
  163. package/dist/cjs/hooks/useOptionalCachedState.js +2 -0
  164. package/dist/cjs/hooks/useOptionalCachedState.js.map +1 -1
  165. package/dist/cjs/hooks/useSyncCollectionOnEntityDelete.js +40 -0
  166. package/dist/cjs/hooks/useSyncCollectionOnEntityDelete.js.map +1 -0
  167. package/dist/cjs/hooks/useSyncCollectionOnEntityReturn.js +13 -20
  168. package/dist/cjs/hooks/useSyncCollectionOnEntityReturn.js.map +1 -1
  169. package/dist/cjs/schema/sourceMutations.js +4 -1
  170. package/dist/cjs/schema/sourceMutations.js.map +1 -1
  171. package/dist/cjs/schema/useEntityPage.js +25 -4
  172. package/dist/cjs/schema/useEntityPage.js.map +1 -1
  173. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  174. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  175. package/dist/cjs/state/EditableTable/CellValueState.js +35 -10
  176. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  177. package/dist/cjs/state/EditableTable/MutationState.js +25 -2
  178. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  179. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js +147 -0
  180. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js.map +1 -0
  181. package/dist/cjs/state/EntityPage/EntityPageState.js +41 -3
  182. package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
  183. package/dist/cjs/state/EntityPage/index.js +6 -0
  184. package/dist/cjs/state/EntityPage/index.js.map +1 -1
  185. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  186. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  187. package/dist/cjs/state/WixPatternsRouterState.js.map +1 -1
  188. package/dist/cjs/state/index.js +6 -0
  189. package/dist/cjs/state/index.js.map +1 -1
  190. package/dist/cjs/styles.global.css +2 -2
  191. package/dist/cjs/version.js +1 -1
  192. package/dist/cjs/version.js.map +1 -1
  193. package/dist/docs/Allow Users to Add Extended Fields.md +18 -16
  194. package/dist/docs/CollectionSearch.md +3 -1
  195. package/dist/docs/CollectionToolbar.md +1 -1
  196. package/dist/docs/Component Tests.md +4 -4
  197. package/dist/docs/CustomColumns.md +1 -1
  198. package/dist/docs/CustomFieldType.md +9 -9
  199. package/dist/docs/CustomFieldsViewWidget.md +10 -10
  200. package/dist/docs/CustomFieldsWidget.md +46 -35
  201. package/dist/docs/Display Extended Fields.md +21 -15
  202. package/dist/docs/Enable Filters for Extended Fields.md +4 -2
  203. package/dist/docs/EntityPage.AdditionalContent.md +1 -1
  204. package/dist/docs/EntityPage.Card.md +11 -11
  205. package/dist/docs/EntityPage.Content.md +1 -1
  206. package/dist/docs/EntityPage.Header.md +9 -6
  207. package/dist/docs/EntityPage.MainContent.md +1 -1
  208. package/dist/docs/EntityPageState.md +1 -1
  209. package/dist/docs/Explore Apps.md +8 -1
  210. package/dist/docs/ExportTo.md +6 -6
  211. package/dist/docs/Filter Overview.md +23 -8
  212. package/dist/docs/Grid.md +3 -3
  213. package/dist/docs/ImportButton.md +18 -8
  214. package/dist/docs/MultiBulkActionToolbar.md +1 -1
  215. package/dist/docs/MultiLevelSorting.md +3 -3
  216. package/dist/docs/Next.js.md +19 -19
  217. package/dist/docs/NumberRangeFilter.md +5 -5
  218. package/dist/docs/PageWrapper.md +1 -1
  219. package/dist/docs/PatternsReactRouter.md +77 -1
  220. package/dist/docs/PickerContent.md +14 -9
  221. package/dist/docs/PickerModal.md +4 -4
  222. package/dist/docs/PrimaryActionButton.md +2 -2
  223. package/dist/docs/SettingsPage.AdditionalContent.md +1 -1
  224. package/dist/docs/SettingsPage.Card.md +11 -11
  225. package/dist/docs/SettingsPage.Content.md +1 -1
  226. package/dist/docs/SettingsPage.Header.md +8 -5
  227. package/dist/docs/SettingsPage.MainContent.md +1 -1
  228. package/dist/docs/SettingsPageState.md +1 -1
  229. package/dist/docs/Suggestions.md +10 -10
  230. package/dist/docs/SummaryBar.md +6 -6
  231. package/dist/docs/TableTopNotification.md +1 -1
  232. package/dist/docs/TabsFilter.md +5 -5
  233. package/dist/docs/Tags.md +15 -7
  234. package/dist/docs/TagsWidget.md +48 -31
  235. package/dist/docs/ToolbarFilters.md +4 -4
  236. package/dist/docs/ToolbarTitle.md +4 -4
  237. package/dist/docs/Views.md +8 -8
  238. package/dist/docs/WidgetsFormProvider.md +11 -7
  239. package/dist/docs/WixPatternsProvider.md +48 -4
  240. package/dist/docs/Working with Cache.md +5 -5
  241. package/dist/docs/bulkActionModal.md +13 -8
  242. package/dist/docs/index.json +30 -30
  243. package/dist/docs/useAmbassadorCollection.md +4 -1
  244. package/dist/docs/useEntity.md +8 -5
  245. package/dist/docs/useEntityPage.md +10 -7
  246. package/dist/docs/useEntityPageContext.md +1 -1
  247. package/dist/docs/useGridCollection.md +8 -2
  248. package/dist/docs/useNestedTable.md +2 -2
  249. package/dist/docs/useOptimisticActions.md +2 -2
  250. package/dist/docs/usePatternsNavigate.md +8 -2
  251. package/dist/docs/usePickerContent.md +5 -2
  252. package/dist/docs/usePickerModal.md +4 -4
  253. package/dist/docs/usePickerStandalone.md +5 -2
  254. package/dist/docs/useSettingsPage.md +7 -7
  255. package/dist/docs/useSettingsPageContext.md +1 -1
  256. package/dist/docs/useTableCollection.md +8 -2
  257. package/dist/docs/useTableGridSwitchCollection.md +8 -2
  258. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  259. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  260. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  261. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  262. package/dist/esm/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +2 -2
  263. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  264. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  265. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  266. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  267. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  268. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  269. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  270. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  271. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  272. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  273. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  274. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  275. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  276. package/dist/esm/components/DragHandle/DragHandle.st.css.js.map +1 -1
  277. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  278. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  279. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  280. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  281. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js +2 -2
  282. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  283. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  284. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  285. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  286. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  287. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  288. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  289. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  290. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  291. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  292. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  293. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  294. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  295. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  296. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  297. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  298. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  299. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
  300. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  301. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  302. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  303. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  304. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  305. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  306. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  307. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  308. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  309. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  310. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  311. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  312. package/dist/esm/components/EntityPage/EntityPage.uni.driver.js +3 -1
  313. package/dist/esm/components/EntityPage/EntityPage.uni.driver.js.map +1 -1
  314. package/dist/esm/components/EntityPage/EntityPageActionsBar.js +46 -3
  315. package/dist/esm/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  316. package/dist/esm/components/EntityPage/EntityPageDeleteAction.js +31 -0
  317. package/dist/esm/components/EntityPage/EntityPageDeleteAction.js.map +1 -0
  318. package/dist/esm/components/EntityPage/EntityPageDeleteConfirmModal.js +16 -0
  319. package/dist/esm/components/EntityPage/EntityPageDeleteConfirmModal.js.map +1 -0
  320. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  321. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  322. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  323. package/dist/esm/components/FormPage/FormPageActionsBar.js +2 -1
  324. package/dist/esm/components/FormPage/FormPageActionsBar.js.map +1 -1
  325. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  326. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  327. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  328. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  329. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  330. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  331. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  332. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  333. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  334. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  335. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  336. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  337. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  338. package/dist/esm/components/NestedTable/NestedTableRow.js +1 -3
  339. package/dist/esm/components/NestedTable/NestedTableRow.js.map +1 -1
  340. package/dist/esm/components/NestedTable/NestedTableRow.st.css +14 -4
  341. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +3 -3
  342. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  343. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  344. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +3 -3
  345. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  346. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  347. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +3 -3
  348. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  349. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragHandle.js +4 -1
  350. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragHandle.js.map +1 -1
  351. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  352. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  353. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  354. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  355. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  356. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  357. package/dist/esm/components/QuerySearch.js +3 -1
  358. package/dist/esm/components/QuerySearch.js.map +1 -1
  359. package/dist/esm/components/ReferenceFieldFilter/ReferenceFieldFilter.js +11 -6
  360. package/dist/esm/components/ReferenceFieldFilter/ReferenceFieldFilter.js.map +1 -1
  361. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  362. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  363. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  364. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  365. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  366. package/dist/esm/components/TabsFilter/TabTitle.js +5 -5
  367. package/dist/esm/components/TabsFilter/TabTitle.js.map +1 -1
  368. package/dist/esm/components/TabsFilter/TabsFilter.js +2 -3
  369. package/dist/esm/components/TabsFilter/TabsFilter.js.map +1 -1
  370. package/dist/esm/components/TabsFilter/TabsFilter.st.css +4 -17
  371. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +3 -3
  372. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  373. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  374. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  375. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  376. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  377. package/dist/esm/components/common.st.css.js +2 -2
  378. package/dist/esm/components/common.st.css.js.map +1 -1
  379. package/dist/esm/hooks/index.js +1 -0
  380. package/dist/esm/hooks/index.js.map +1 -1
  381. package/dist/esm/hooks/useEntityPage.js.map +1 -1
  382. package/dist/esm/hooks/useOptionalCachedState.js +2 -0
  383. package/dist/esm/hooks/useOptionalCachedState.js.map +1 -1
  384. package/dist/esm/hooks/useSyncCollectionOnEntityDelete.js +36 -0
  385. package/dist/esm/hooks/useSyncCollectionOnEntityDelete.js.map +1 -0
  386. package/dist/esm/hooks/useSyncCollectionOnEntityReturn.js +24 -21
  387. package/dist/esm/hooks/useSyncCollectionOnEntityReturn.js.map +1 -1
  388. package/dist/esm/schema/sourceMutations.js +4 -1
  389. package/dist/esm/schema/sourceMutations.js.map +1 -1
  390. package/dist/esm/schema/useEntityPage.js +24 -2
  391. package/dist/esm/schema/useEntityPage.js.map +1 -1
  392. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  393. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  394. package/dist/esm/state/EditableTable/CellValueState.js +24 -11
  395. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  396. package/dist/esm/state/EditableTable/MutationState.js +26 -2
  397. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  398. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js +136 -0
  399. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js.map +1 -0
  400. package/dist/esm/state/EntityPage/EntityPageState.js +40 -2
  401. package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
  402. package/dist/esm/state/EntityPage/index.js +1 -0
  403. package/dist/esm/state/EntityPage/index.js.map +1 -1
  404. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  405. package/dist/esm/state/WixPatternsRouterState.js.map +1 -1
  406. package/dist/esm/state/index.js +1 -0
  407. package/dist/esm/state/index.js.map +1 -1
  408. package/dist/esm/styles.global.css +2 -2
  409. package/dist/esm/version.js +1 -1
  410. package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
  411. package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
  412. package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
  413. package/dist/types/components/DragHandle/DragHandle.st.css.d.ts.map +1 -1
  414. package/dist/types/components/EditableTable/cellTypes/boolean/Edit.st.css.d.ts.map +1 -1
  415. package/dist/types/components/EditableTable/cellTypes/boolean/View.st.css.d.ts.map +1 -1
  416. package/dist/types/components/EditableTable/cellTypes/color/Edit.st.css.d.ts.map +1 -1
  417. package/dist/types/components/EditableTable/cellTypes/date/View.st.css.d.ts.map +1 -1
  418. package/dist/types/components/EditableTable/cellTypes/datetime/Edit.st.css.d.ts.map +1 -1
  419. package/dist/types/components/EditableTable/cellTypes/datetime/View.st.css.d.ts.map +1 -1
  420. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
  421. package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
  422. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  423. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  424. package/dist/types/components/EntityPage/EntityPage.uni.driver.d.ts +97 -1
  425. package/dist/types/components/EntityPage/EntityPage.uni.driver.d.ts.map +1 -1
  426. package/dist/types/components/EntityPage/EntityPageActionsBar.d.ts +2 -2
  427. package/dist/types/components/EntityPage/EntityPageActionsBar.d.ts.map +1 -1
  428. package/dist/types/components/EntityPage/EntityPageDeleteAction.d.ts +7 -0
  429. package/dist/types/components/EntityPage/EntityPageDeleteAction.d.ts.map +1 -0
  430. package/dist/types/components/EntityPage/EntityPageDeleteConfirmModal.d.ts +11 -0
  431. package/dist/types/components/EntityPage/EntityPageDeleteConfirmModal.d.ts.map +1 -0
  432. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  433. package/dist/types/components/FormPage/FormPageActionsBar.d.ts +3 -2
  434. package/dist/types/components/FormPage/FormPageActionsBar.d.ts.map +1 -1
  435. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  436. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  437. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  438. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  439. package/dist/types/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.d.ts.map +1 -1
  440. package/dist/types/components/NestedTable/NestedTableRow.d.ts.map +1 -1
  441. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts +7 -1
  442. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  443. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts +6 -1
  444. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts.map +1 -1
  445. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts +4 -1
  446. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
  447. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragHandle.d.ts.map +1 -1
  448. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  449. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  450. package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
  451. package/dist/types/components/QuerySearch.d.ts.map +1 -1
  452. package/dist/types/components/ReferenceFieldFilter/ReferenceFieldFilter.d.ts +2 -1
  453. package/dist/types/components/ReferenceFieldFilter/ReferenceFieldFilter.d.ts.map +1 -1
  454. package/dist/types/components/TabsFilter/TabTitle.d.ts +1 -2
  455. package/dist/types/components/TabsFilter/TabTitle.d.ts.map +1 -1
  456. package/dist/types/components/TabsFilter/TabsFilter.d.ts.map +1 -1
  457. package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts +2 -8
  458. package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
  459. package/dist/types/components/ToolbarItemBox/ToolbarItemBox.st.css.d.ts.map +1 -1
  460. package/dist/types/components/common.st.css.d.ts.map +1 -1
  461. package/dist/types/exports/schema.d.ts +1 -1
  462. package/dist/types/exports/schema.d.ts.map +1 -1
  463. package/dist/types/hooks/index.d.ts +1 -0
  464. package/dist/types/hooks/index.d.ts.map +1 -1
  465. package/dist/types/hooks/useEntityPage.d.ts +1 -1
  466. package/dist/types/hooks/useEntityPage.d.ts.map +1 -1
  467. package/dist/types/hooks/useOptionalCachedState.d.ts.map +1 -1
  468. package/dist/types/hooks/useSyncCollectionOnEntityDelete.d.ts +4 -0
  469. package/dist/types/hooks/useSyncCollectionOnEntityDelete.d.ts.map +1 -0
  470. package/dist/types/hooks/useSyncCollectionOnEntityReturn.d.ts +1 -0
  471. package/dist/types/hooks/useSyncCollectionOnEntityReturn.d.ts.map +1 -1
  472. package/dist/types/schema/sourceMutations.d.ts.map +1 -1
  473. package/dist/types/schema/useEntityPage.d.ts +1 -1
  474. package/dist/types/schema/useEntityPage.d.ts.map +1 -1
  475. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  476. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  477. package/dist/types/state/EditableTable/MutationState.d.ts +5 -3
  478. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  479. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts +55 -0
  480. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts.map +1 -0
  481. package/dist/types/state/EntityPage/EntityPageState.d.ts +27 -0
  482. package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
  483. package/dist/types/state/EntityPage/index.d.ts +1 -0
  484. package/dist/types/state/EntityPage/index.d.ts.map +1 -1
  485. package/dist/types/state/WixPatternsRouterState.d.ts +1 -0
  486. package/dist/types/state/WixPatternsRouterState.d.ts.map +1 -1
  487. package/dist/types/state/index.d.ts +1 -0
  488. package/dist/types/state/index.d.ts.map +1 -1
  489. package/dist/types/testkit/enzyme.d.ts +94 -0
  490. package/dist/types/testkit/enzyme.d.ts.map +1 -1
  491. package/dist/types/testkit/jsdom.d.ts +94 -0
  492. package/dist/types/testkit/jsdom.d.ts.map +1 -1
  493. package/dist/types/testkit/playwright.d.ts +94 -0
  494. package/dist/types/testkit/playwright.d.ts.map +1 -1
  495. package/dist/types/testkit/puppeteer.d.ts +94 -0
  496. package/dist/types/testkit/puppeteer.d.ts.map +1 -1
  497. package/dist/types/version.d.ts +1 -1
  498. package/package.json +7 -7
  499. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  500. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  501. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  502. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  503. package/src/components/CmsFieldManagement/formFields/CharactersLimitInput.st.css.ts +2 -2
  504. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  505. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  506. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  507. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  508. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  509. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  510. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  511. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  512. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  513. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  514. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  515. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  516. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  517. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  518. package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
  519. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  520. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  521. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  522. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  523. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  524. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  525. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  526. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  527. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  528. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  529. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  530. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
  531. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  532. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  533. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  534. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  535. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  536. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  537. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  538. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  539. package/src/components/EntityPage/EntityPage.uni.driver.ts +13 -0
  540. package/src/components/EntityPage/EntityPageActionsBar.tsx +93 -9
  541. package/src/components/EntityPage/EntityPageDeleteAction.tsx +50 -0
  542. package/src/components/EntityPage/EntityPageDeleteConfirmModal.tsx +40 -0
  543. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  544. package/src/components/Fade/Fade.st.css.ts +2 -2
  545. package/src/components/FormPage/FormPageActionsBar.tsx +4 -1
  546. package/src/components/Heading/Heading.st.css.ts +2 -2
  547. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  548. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  549. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  550. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  551. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  552. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  553. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  554. package/src/components/NestedTable/NestedTableRow.st.css +14 -4
  555. package/src/components/NestedTable/NestedTableRow.st.css.ts +3 -3
  556. package/src/components/NestedTable/NestedTableRow.tsx +1 -4
  557. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css +16 -7
  558. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +3 -3
  559. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css +5 -1
  560. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +3 -3
  561. package/src/components/NestedTableDragAndDrop/NestedTableDragHandle.tsx +4 -2
  562. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  563. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  564. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  565. package/src/components/QuerySearch.tsx +3 -0
  566. package/src/components/ReferenceFieldFilter/ReferenceFieldFilter.tsx +14 -6
  567. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  568. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  569. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  570. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  571. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  572. package/src/components/TabsFilter/TabTitle.tsx +8 -6
  573. package/src/components/TabsFilter/TabsFilter.st.css +4 -17
  574. package/src/components/TabsFilter/TabsFilter.st.css.ts +3 -3
  575. package/src/components/TabsFilter/TabsFilter.tsx +0 -3
  576. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  577. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  578. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  579. package/src/components/common.st.css.ts +2 -2
  580. package/src/exports/schema.ts +1 -0
  581. package/src/hooks/index.ts +1 -0
  582. package/src/hooks/useEntityPage.ts +3 -0
  583. package/src/hooks/useOptionalCachedState.ts +2 -0
  584. package/src/hooks/useSyncCollectionOnEntityDelete.ts +74 -0
  585. package/src/hooks/useSyncCollectionOnEntityReturn.ts +26 -23
  586. package/src/schema/sourceMutations.ts +5 -2
  587. package/src/schema/useEntityPage.ts +47 -7
  588. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  589. package/src/state/EditableTable/CellValueState.ts +37 -16
  590. package/src/state/EditableTable/MutationState.ts +58 -3
  591. package/src/state/EntityPage/EntityPageDeleteActionState.ts +228 -0
  592. package/src/state/EntityPage/EntityPageState.ts +72 -2
  593. package/src/state/EntityPage/index.ts +1 -0
  594. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  595. package/src/state/WixPatternsRouterState.ts +1 -0
  596. package/src/state/index.ts +1 -0
  597. package/src/styles.global.css +2 -2
  598. package/src/version.ts +1 -1
  599. package/dist/cjs/components/ReferenceFieldFilter/pr-5715-comments.md +0 -73
  600. package/dist/esm/components/ReferenceFieldFilter/pr-5715-comments.md +0 -73
  601. package/src/components/ReferenceFieldFilter/pr-5715-comments.md +0 -73
@@ -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,
@@ -13,7 +13,10 @@ import {
13
13
  export type SchemaEntityPageOptions<
14
14
  T,
15
15
  V extends FieldValues = FieldValues,
16
- > = Omit<UseEntityPageParams<T, V>, 'fetch' | 'onSave' | 'schemaSource'> & {
16
+ > = Omit<
17
+ UseEntityPageParams<T, V>,
18
+ 'fetch' | 'onSave' | 'schemaSource' | 'isNewEntity'
19
+ > & {
17
20
  /** Creates the initial values for a new entity. */
18
21
  createLocalItem?: () => Partial<T>;
19
22
  /** The entity to load. Omitted ⇒ the create route: the page starts empty and
@@ -32,7 +35,8 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
32
35
  source: SchemaSource<T>,
33
36
  options: SchemaEntityPageOptions<T, V>,
34
37
  ): EntityPageState<T, V> {
35
- const { entityId, fetch, onSave, createLocalItem, ...rest } = options;
38
+ const { entityId, fetch, onSave, createLocalItem, deleteAction, ...rest } =
39
+ options;
36
40
 
37
41
  // The derived read and write need values that change or don't exist yet when
38
42
  // the state is created: the state itself (the save merges into the loaded
@@ -43,9 +47,11 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
43
47
  const state = useOpenEntityPage<T, V>({
44
48
  ...rest,
45
49
  schemaSource: source,
50
+ isNewEntity: () => !page.entityId,
46
51
  fetch:
47
52
  fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),
48
53
  onSave: onSave ?? (() => saveToSource(source, page)),
54
+ deleteAction: resolveDeleteAction(page, deleteAction),
49
55
  } as UseEntityPageParams<T, V>);
50
56
 
51
57
  page.state = state;
@@ -53,6 +59,17 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
53
59
  return state;
54
60
  }
55
61
 
62
+ function resolveDeleteAction<T, V extends FieldValues>(
63
+ page: PageRef<T, V>,
64
+ deleteAction: EntityPageDeleteAction<T> | undefined,
65
+ ): EntityPageDeleteAction<T> | undefined {
66
+ if (!deleteAction || !page.entityId) {
67
+ return undefined;
68
+ }
69
+
70
+ return deleteAction;
71
+ }
72
+
56
73
  interface PageRef<T, V extends FieldValues> {
57
74
  entityId?: string;
58
75
  state?: EntityPageState<T, V>;
@@ -99,11 +116,13 @@ async function saveToSource<T, V extends FieldValues>(
99
116
  throw new Error(`The source has no entity "${entityId}" to update`);
100
117
  }
101
118
 
119
+ const updatedEntity = { ...entity, ...values } as T;
120
+
102
121
  return {
103
- updatedEntity: await required(
104
- backend.update,
105
- 'updating',
106
- )({ ...entity, ...values } as T),
122
+ updatedEntity: await required(backend.update, 'updating')(updatedEntity, {
123
+ previousItem: entity,
124
+ changedFieldIds: changedFieldIds(entity, updatedEntity, state!.form),
125
+ }),
107
126
  };
108
127
  }
109
128
 
@@ -113,3 +132,24 @@ function required<F>(fn: F | undefined, action: string): F {
113
132
  }
114
133
  return fn;
115
134
  }
135
+
136
+ function changedFieldIds<T, V extends FieldValues>(
137
+ previousItem: T,
138
+ updatedItem: T,
139
+ form: EntityPageState<T, V>['form'],
140
+ ): string[] {
141
+ const dirtyFields = form.formState.dirtyFields as Record<string, unknown>;
142
+ const dirtyFieldIds = Object.entries(dirtyFields)
143
+ .filter(([, value]) => Boolean(value))
144
+ .map(([fieldId]) => fieldId);
145
+
146
+ const previousRecord = previousItem as Record<string, unknown>;
147
+ const updatedRecord = updatedItem as Record<string, unknown>;
148
+ const changedByValue = Array.from(
149
+ new Set([...Object.keys(previousRecord), ...Object.keys(updatedRecord)]),
150
+ ).filter(
151
+ (fieldId) => !Object.is(previousRecord[fieldId], updatedRecord[fieldId]),
152
+ );
153
+
154
+ return Array.from(new Set([...dirtyFieldIds, ...changedByValue]));
155
+ }
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "CollectionPageHeader4273170589";
8
+ var _namespace_ = "CollectionPageHeader572984085";
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":"CollectionPageHeader4273170589__root"};
16
+ export var classes = {"root":"CollectionPageHeader572984085__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -300,7 +300,10 @@ export class CellValueState<T, F extends FiltersMap> {
300
300
  * read-only cells protected regardless of entry point.
301
301
  */
302
302
  applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {
303
- const rowItems = new Map<string, T>();
303
+ const rowUpdates = new Map<
304
+ string,
305
+ { item: T; changedFieldIds: Set<string> }
306
+ >();
304
307
 
305
308
  for (const { rowKey, columnId, value } of changes) {
306
309
  const column = this._parent._columnMap.get(columnId);
@@ -339,10 +342,17 @@ export class CellValueState<T, F extends FiltersMap> {
339
342
  }
340
343
  continue;
341
344
  }
342
- const currentItem =
343
- rowItems.get(rowKey) ??
344
- this._consumeRowDrafts(rowKey, keyedItem.item);
345
- 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);
346
356
  } else if (pendingKey) {
347
357
  this._pendingCells.set(pendingKey, {
348
358
  value,
@@ -351,7 +361,11 @@ export class CellValueState<T, F extends FiltersMap> {
351
361
  }
352
362
  }
353
363
 
354
- 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
+ );
355
369
  }
356
370
 
357
371
  private _applyValue(rowKey: string, columnId: string, value: any) {
@@ -393,26 +407,32 @@ export class CellValueState<T, F extends FiltersMap> {
393
407
  }
394
408
  }
395
409
 
396
- const items: T[] = [];
410
+ const updates: { item: T; changedFieldIds: string[] }[] = [];
397
411
  for (const rowKey of rowKeys) {
398
412
  const keyedItem = this._parent._getKeyedItem(rowKey);
399
413
  if (!keyedItem) {
400
414
  this._dropRowDrafts(rowKey);
401
415
  } else if (this._parent.mutation.isLocalNewRow(rowKey)) {
402
- this._parent.mutation.commitNewRow(
403
- rowKey,
404
- this._consumeRowDrafts(rowKey, keyedItem.item),
405
- );
416
+ const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
417
+ this._parent.mutation.commitNewRow(rowKey, consumed.item);
406
418
  } else {
407
- items.push(this._consumeRowDrafts(rowKey, keyedItem.item));
419
+ const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
420
+ updates.push(consumed);
408
421
  }
409
422
  }
410
- if (items.length > 0) {
411
- 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
+ );
412
428
  }
413
429
  }
414
430
 
415
- 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>();
416
436
  for (const [key, entry] of this._draftCells) {
417
437
  if (entry.rowKey !== rowKey) {
418
438
  continue;
@@ -420,10 +440,11 @@ export class CellValueState<T, F extends FiltersMap> {
420
440
  const column = this._parent._columnMap.get(entry.columnId);
421
441
  if (column?.setValue) {
422
442
  item = column.setValue(item, entry.value);
443
+ changedFieldIds.add(column.id);
423
444
  }
424
445
  this._draftCells.delete(key);
425
446
  }
426
- return item;
447
+ return { item, changedFieldIds: Array.from(changedFieldIds) };
427
448
  }
428
449
 
429
450
  /** Drop a row's draft entries without saving (the row no longer exists). */
@@ -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 */
@@ -239,14 +243,18 @@ export class MutationState<T, F extends FiltersMap> {
239
243
  });
240
244
  }
241
245
 
242
- updateItems(updatedItems: T[]) {
246
+ updateItems(
247
+ updatedItems: T[],
248
+ changedFieldIdsByItem?: string[][],
249
+ ) {
243
250
  const t = this._parent.collection.translate;
244
251
  if (updatedItems.length === 0) {
245
252
  return;
246
253
  }
254
+ const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
247
255
  this._optimisticActions.updateMany(updatedItems, {
248
256
  keepPosition: true,
249
- submit: this._handlers.submitUpdate,
257
+ submit: (items) => this._submitUpdate(items, updatedItems, contexts),
250
258
  successToast: t('cairo.editableTable.updateItem.success.toast', {
251
259
  count: updatedItems.length,
252
260
  }),
@@ -260,6 +268,35 @@ export class MutationState<T, F extends FiltersMap> {
260
268
  });
261
269
  }
262
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
+
263
300
  /**
264
301
  * Nearest row above `rowKey` that a create can anchor on: a server row
265
302
  * that is not a draft and not itself a created row still living as an
@@ -336,3 +373,21 @@ export class MutationState<T, F extends FiltersMap> {
336
373
  return createdItems;
337
374
  };
338
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;
@@ -0,0 +1,228 @@
1
+ import { TaskState } from '@wix/bex-core';
2
+ import type {
3
+ LoadedSchema,
4
+ SchemaSource,
5
+ ToastConfig,
6
+ WixPatternsContainer,
7
+ } from '@wix/bex-core';
8
+ import { computed, makeObservable } from 'mobx';
9
+
10
+ type DeleteErrorToast = (
11
+ err: unknown,
12
+ params: { retry: () => void },
13
+ ) =>
14
+ | {
15
+ message?: string;
16
+ tryAgain?: boolean;
17
+ action?: { text: string; onClick: () => void };
18
+ }
19
+ | string;
20
+
21
+ export interface EntityPageDeleteActionConfig<T> {
22
+ enabled?: boolean;
23
+ onDelete?: (entity: T) => Promise<void>;
24
+ successToast?: Pick<ToastConfig, 'message'> | string;
25
+ errorToast?: DeleteErrorToast;
26
+ itemName?: (entity: T) => string;
27
+ }
28
+
29
+ export type EntityPageDeleteAction<T> =
30
+ | boolean
31
+ | EntityPageDeleteActionConfig<T>;
32
+
33
+ export interface EntityPageDeleteActionStateParams<T> {
34
+ container: WixPatternsContainer;
35
+ deleteAction?: EntityPageDeleteAction<T>;
36
+ schemaSource?: SchemaSource<T>;
37
+ getEntity: () => T | null;
38
+ getLoadedSchema: () => LoadedSchema<T> | null;
39
+ transformEntityToCollectionItem: (entity: T) => any;
40
+ onDeleted: (deletedCollectionItem: any) => void;
41
+ emitDelete: () => void;
42
+ emitDeleteError: (err: unknown) => void;
43
+ }
44
+
45
+ export class EntityPageDeleteActionState<T> {
46
+ readonly container: WixPatternsContainer;
47
+ readonly deleteAction?: EntityPageDeleteAction<T>;
48
+ readonly schemaSource?: SchemaSource<T>;
49
+ readonly getEntity: () => T | null;
50
+ readonly getLoadedSchema: () => LoadedSchema<T> | null;
51
+ readonly transformEntityToCollectionItem: (entity: T) => any;
52
+ readonly onDeleted: (deletedCollectionItem: any) => void;
53
+ readonly emitDelete: () => void;
54
+ readonly emitDeleteError: (err: unknown) => void;
55
+
56
+ readonly task = new TaskState<void>();
57
+
58
+ constructor(params: EntityPageDeleteActionStateParams<T>) {
59
+ this.container = params.container;
60
+ this.deleteAction = params.deleteAction;
61
+ this.schemaSource = params.schemaSource;
62
+ this.getEntity = params.getEntity;
63
+ this.getLoadedSchema = params.getLoadedSchema;
64
+ this.transformEntityToCollectionItem =
65
+ params.transformEntityToCollectionItem;
66
+ this.onDeleted = params.onDeleted;
67
+ this.emitDelete = params.emitDelete;
68
+ this.emitDeleteError = params.emitDeleteError;
69
+
70
+ makeObservable(this, {
71
+ canShow: computed,
72
+ disabledReason: computed,
73
+ });
74
+ }
75
+
76
+ private get config(): EntityPageDeleteActionConfig<T> | null {
77
+ if (!this.deleteAction) {
78
+ return null;
79
+ }
80
+
81
+ return typeof this.deleteAction === 'boolean' ? {} : this.deleteAction;
82
+ }
83
+
84
+ private get isEnabled() {
85
+ return this.config?.enabled !== false;
86
+ }
87
+
88
+ private getDeleteHandler(): ((entity: T) => Promise<void>) | undefined {
89
+ const config = this.config;
90
+ if (!config || !this.isEnabled) {
91
+ return undefined;
92
+ }
93
+
94
+ if (config.onDelete) {
95
+ return config.onDelete;
96
+ }
97
+
98
+ const backendDelete = this.getLoadedSchema()?.backend.delete;
99
+ if (this.schemaSource && backendDelete) {
100
+ return (entity) => backendDelete(this.schemaSource!.itemKey(entity));
101
+ }
102
+
103
+ return undefined;
104
+ }
105
+
106
+ get canShow() {
107
+ const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;
108
+ return (
109
+ !!this.getEntity() &&
110
+ !!this.config &&
111
+ this.isEnabled &&
112
+ !!this.getDeleteHandler() &&
113
+ (itemPermissions?.deleteItem ?? true)
114
+ );
115
+ }
116
+
117
+ get disabledReason() {
118
+ const entity = this.getEntity();
119
+ const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;
120
+ const disabledResult =
121
+ entity && itemPermissions?.isRemoveItemDisabled
122
+ ? itemPermissions.isRemoveItemDisabled(entity)
123
+ : undefined;
124
+
125
+ if (!disabledResult?.disabled) {
126
+ return undefined;
127
+ }
128
+
129
+ return disabledResult.reason ?? this.container.translate('cairo.disabled');
130
+ }
131
+
132
+ getItemName(entity: T) {
133
+ const itemName =
134
+ this.config?.itemName?.(entity) ?? this.schemaSource?.itemName(entity);
135
+
136
+ return (
137
+ itemName ||
138
+ this.container.translate('cairo.entity.item', {
139
+ num: 1,
140
+ })
141
+ );
142
+ }
143
+
144
+ private showSuccessToast(deletedEntity: T) {
145
+ const successToast = this.config?.successToast;
146
+ const message =
147
+ typeof successToast === 'string' ? successToast : successToast?.message;
148
+
149
+ this.container.showToast?.({
150
+ type: 'SUCCESS',
151
+ biName: 'cairo-entity-page-delete-success-toast',
152
+ message:
153
+ message ??
154
+ this.container.translate('cairo.deleteSuccess', {
155
+ itemName: this.getItemName(deletedEntity),
156
+ }),
157
+ });
158
+ }
159
+
160
+ private showErrorToast(err: unknown) {
161
+ const errorToast = this.config?.errorToast?.(err, {
162
+ retry: () => this.deleteEntity(),
163
+ });
164
+ const message =
165
+ typeof errorToast === 'string' ? errorToast : errorToast?.message;
166
+ const showTryAgain =
167
+ typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;
168
+ const action =
169
+ typeof errorToast === 'string' ? undefined : errorToast?.action;
170
+
171
+ this.container.showToast?.({
172
+ type: 'ERROR',
173
+ biName: 'cairo-entity-page-delete-error-toast',
174
+ message:
175
+ message ?? this.container.translate('cairo.technical.error.text'),
176
+ action:
177
+ action || showTryAgain
178
+ ? {
179
+ uiType: 'LINK',
180
+ text:
181
+ action?.text ?? this.container.translate('cairo.toast.retry'),
182
+ onClick: () => {
183
+ if (action?.onClick) {
184
+ action.onClick();
185
+ } else {
186
+ this.deleteEntity();
187
+ }
188
+ },
189
+ removeToastOnClick: true,
190
+ }
191
+ : undefined,
192
+ });
193
+ }
194
+
195
+ async deleteEntity() {
196
+ if (this.task.status.isLoading || !this.canShow || this.disabledReason) {
197
+ return;
198
+ }
199
+
200
+ const entity = this.getEntity();
201
+ const deleteHandler = this.getDeleteHandler();
202
+ if (!entity || !deleteHandler) {
203
+ return;
204
+ }
205
+
206
+ this.emitDelete();
207
+
208
+ let caughtError: unknown;
209
+ await this.task.run(
210
+ async () => {
211
+ await deleteHandler(entity);
212
+ },
213
+ (err) => {
214
+ caughtError = err;
215
+ },
216
+ );
217
+
218
+ if (caughtError) {
219
+ this.showErrorToast(caughtError);
220
+ this.container.errorMonitor.captureException(caughtError);
221
+ this.emitDeleteError(caughtError);
222
+ throw caughtError;
223
+ }
224
+
225
+ this.showSuccessToast(entity);
226
+ this.onDeleted(this.transformEntityToCollectionItem(entity));
227
+ }
228
+ }