@wix/patterns 1.497.0 → 1.499.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 (466) 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/Collapse/Collapse.st.css.js +3 -3
  10. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  11. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  12. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  13. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  14. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  15. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  16. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  18. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  19. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  20. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  21. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  22. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  23. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  24. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  25. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  26. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  27. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
  28. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.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 +6 -6
  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/JsonInputEdit.st.css.js +3 -3
  38. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/address/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/mediaImage/Edit.st.css.js +2 -2
  60. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  64. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  66. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  68. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
  70. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  72. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  74. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  76. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  78. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  80. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  82. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  83. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  84. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  85. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js +1 -1
  86. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  87. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  88. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  89. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +3 -3
  90. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
  91. package/dist/cjs/components/EntityPageFields/EntityPageFields.js +9 -8
  92. package/dist/cjs/components/EntityPageFields/EntityPageFields.js.map +1 -1
  93. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js +49 -7
  94. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  95. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  96. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +26 -0
  97. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
  98. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  99. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  100. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  101. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  102. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  103. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  104. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js +2 -13
  105. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  106. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  107. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  108. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  109. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  110. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  111. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  112. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  113. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  114. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  115. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  116. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  117. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  118. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  119. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  120. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  121. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  122. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  123. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.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/SchemaSource/schemaFieldActions.js.map +1 -1
  131. package/dist/cjs/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  132. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  133. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  134. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  135. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  136. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  137. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  138. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  139. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  140. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
  141. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  142. package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
  143. package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
  144. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  145. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  146. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  147. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  148. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  149. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  150. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  151. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  152. package/dist/cjs/components/common.st.css.js +4 -4
  153. package/dist/cjs/components/common.st.css.js.map +1 -1
  154. package/dist/cjs/model/itemAccess.js +21 -0
  155. package/dist/cjs/model/itemAccess.js.map +1 -0
  156. package/dist/cjs/schema/syncSourcePermissions.js +9 -4
  157. package/dist/cjs/schema/syncSourcePermissions.js.map +1 -1
  158. package/dist/cjs/schema/useEntityPage.js +17 -3
  159. package/dist/cjs/schema/useEntityPage.js.map +1 -1
  160. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
  161. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  162. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  163. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  164. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
  165. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  166. package/dist/cjs/state/EditableTable/CellValueState.js +154 -7
  167. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  168. package/dist/cjs/state/EditableTable/ClipboardState.js +30 -14
  169. package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
  170. package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
  171. package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
  172. package/dist/cjs/state/EditableTable/MutationState.js +31 -7
  173. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  174. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js +5 -5
  175. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
  176. package/dist/cjs/state/EntityPage/EntityPageState.js +57 -8
  177. package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
  178. package/dist/cjs/state/EntityPage/sourceSave.js +16 -0
  179. package/dist/cjs/state/EntityPage/sourceSave.js.map +1 -0
  180. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  181. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  182. package/dist/cjs/styles.global.css +2 -2
  183. package/dist/cjs/version.js +1 -1
  184. package/dist/cjs/version.js.map +1 -1
  185. package/dist/docs/Table.md +3 -1
  186. package/dist/docs/index.json +2 -2
  187. package/dist/docs/useEntity.md +1 -1
  188. package/dist/dts-bundle/hooks/schema/useEntityPage.d.ts +5 -4
  189. package/dist/dts-bundle/hooks/useEntityPage.d.ts +5 -4
  190. package/dist/dts-bundle/hooks/usePickerModal.d.ts +3 -0
  191. package/dist/dts-bundle/index.json +25 -25
  192. package/dist/dts-bundle/index.txt +8 -8
  193. package/dist/dts-bundle/types/CellType.d.ts +3 -0
  194. package/dist/dts-bundle/types/EntityPageState.d.ts +10 -4
  195. package/dist/dts-bundle/types/EntityPageStateParams.d.ts +5 -4
  196. package/dist/dts-bundle/types/OnSaveParams.d.ts +5 -4
  197. package/dist/dts-bundle/types/UseEntityPageParams.d.ts +5 -4
  198. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  199. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  200. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  201. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  202. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  203. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  204. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  205. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  206. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  207. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  208. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  209. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  210. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  211. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  212. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  213. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  214. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  215. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
  216. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  217. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  218. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  219. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  220. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  221. package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
  222. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  223. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  224. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  225. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  226. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  227. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  228. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  229. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  230. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  231. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  232. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  233. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  234. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
  235. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
  236. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  237. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  238. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  239. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
  240. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  241. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  242. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  243. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  244. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  245. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  246. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  247. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  248. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  249. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  250. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  251. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  252. package/dist/esm/components/EntityPage/EntityPageActionsBar.js +1 -1
  253. package/dist/esm/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  254. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  255. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
  256. package/dist/esm/components/EntityPageFields/EntityPageFields.js +3 -1
  257. package/dist/esm/components/EntityPageFields/EntityPageFields.js.map +1 -1
  258. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js +19 -2
  259. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  260. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  261. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +15 -0
  262. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
  263. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  264. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  265. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  266. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  267. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js +2 -12
  268. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  269. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  270. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  271. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  272. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  273. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  274. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  275. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  276. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  277. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  278. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  279. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  280. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  281. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  282. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  283. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  284. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  285. package/dist/esm/components/SchemaSource/schemaFieldActions.js +2 -1
  286. package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
  287. package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  288. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  289. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  290. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  291. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  292. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  293. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  294. package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
  295. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  296. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  297. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  298. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  299. package/dist/esm/components/common.st.css.js +2 -2
  300. package/dist/esm/model/itemAccess.js +17 -0
  301. package/dist/esm/model/itemAccess.js.map +1 -0
  302. package/dist/esm/schema/syncSourcePermissions.js +6 -5
  303. package/dist/esm/schema/syncSourcePermissions.js.map +1 -1
  304. package/dist/esm/schema/useEntityPage.js +11 -4
  305. package/dist/esm/schema/useEntityPage.js.map +1 -1
  306. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  307. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  308. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
  309. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  310. package/dist/esm/state/EditableTable/CellValueState.js +146 -7
  311. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  312. package/dist/esm/state/EditableTable/ClipboardState.js +16 -15
  313. package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
  314. package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
  315. package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
  316. package/dist/esm/state/EditableTable/MutationState.js +28 -7
  317. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  318. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js +4 -2
  319. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
  320. package/dist/esm/state/EntityPage/EntityPageState.js +45 -1
  321. package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
  322. package/dist/esm/state/EntityPage/sourceSave.js +11 -0
  323. package/dist/esm/state/EntityPage/sourceSave.js.map +1 -0
  324. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  325. package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  326. package/dist/esm/styles.global.css +2 -2
  327. package/dist/esm/version.js +1 -1
  328. package/dist/examples/Table/mobile-columns.tsx +66 -98
  329. package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
  330. package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
  331. package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
  332. package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
  333. package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
  334. package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
  335. package/dist/types/components/EditableTable/cellTypes/multiDocument/Edit.st.css.d.ts.map +1 -1
  336. package/dist/types/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.d.ts.map +1 -1
  337. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  338. package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
  339. package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
  340. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  341. package/dist/types/components/EntityPageFields/EntityPageFields.d.ts.map +1 -1
  342. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.d.ts.map +1 -1
  343. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts +17 -0
  344. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts.map +1 -0
  345. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  346. package/dist/types/components/ImportButton/SchemaImportFieldEditor.d.ts.map +1 -1
  347. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  348. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  349. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
  350. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  351. package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
  352. package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
  353. package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
  354. package/dist/types/model/itemAccess.d.ts +16 -0
  355. package/dist/types/model/itemAccess.d.ts.map +1 -0
  356. package/dist/types/schema/syncSourcePermissions.d.ts.map +1 -1
  357. package/dist/types/schema/useEntityPage.d.ts.map +1 -1
  358. package/dist/types/state/CollectionPage/TitleBadges.st.css.d.ts.map +1 -1
  359. package/dist/types/state/EditableTable/CellValueState.d.ts +40 -6
  360. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  361. package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
  362. package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
  363. package/dist/types/state/EditableTable/MutationState.d.ts +18 -1
  364. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  365. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts.map +1 -1
  366. package/dist/types/state/EntityPage/EntityPageState.d.ts +10 -4
  367. package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
  368. package/dist/types/state/EntityPage/sourceSave.d.ts +3 -0
  369. package/dist/types/state/EntityPage/sourceSave.d.ts.map +1 -0
  370. package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
  371. package/dist/types/version.d.ts +1 -1
  372. package/package.json +7 -7
  373. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  374. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  375. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  376. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  377. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  378. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  379. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  380. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  381. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  382. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  383. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  384. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  385. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  386. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
  387. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  388. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  389. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  390. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  391. package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
  392. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  393. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  394. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  395. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  396. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  397. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  398. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  399. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  400. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  401. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  402. package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
  403. package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
  404. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  405. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  406. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  407. package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
  408. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  409. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  410. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  411. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  412. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  413. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  414. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  415. package/src/components/EntityPage/EntityPageActionsBar.tsx +1 -1
  416. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  417. package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
  418. package/src/components/EntityPageFields/EntityPageFields.tsx +5 -1
  419. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  420. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +25 -0
  421. package/src/components/EntityPageFields/EntityPageReferenceValue.tsx +43 -6
  422. package/src/components/Fade/Fade.st.css.ts +2 -2
  423. package/src/components/Heading/Heading.st.css.ts +2 -2
  424. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  425. package/src/components/ImportButton/SchemaImportFieldEditor.tsx +1 -20
  426. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  427. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  428. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  429. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  430. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  431. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  432. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  433. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  434. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  435. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  436. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  437. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  438. package/src/components/SchemaSource/schemaFieldActions.ts +4 -1
  439. package/src/components/SchemaSource/schemaFieldManagement.ts +3 -1
  440. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  441. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  442. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  443. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  444. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  445. package/src/components/Table/NumberCell.st.css.ts +2 -2
  446. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  447. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  448. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  449. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  450. package/src/components/common.st.css.ts +2 -2
  451. package/src/model/itemAccess.ts +36 -0
  452. package/src/schema/syncSourcePermissions.ts +6 -6
  453. package/src/schema/useEntityPage.ts +17 -4
  454. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  455. package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
  456. package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
  457. package/src/state/EditableTable/CellValueState.ts +197 -8
  458. package/src/state/EditableTable/ClipboardState.ts +24 -22
  459. package/src/state/EditableTable/EditableTableState.ts +1 -1
  460. package/src/state/EditableTable/MutationState.ts +56 -7
  461. package/src/state/EntityPage/EntityPageDeleteActionState.ts +4 -2
  462. package/src/state/EntityPage/EntityPageState.ts +61 -5
  463. package/src/state/EntityPage/sourceSave.ts +12 -0
  464. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  465. package/src/styles.global.css +2 -2
  466. package/src/version.ts +1 -1
@@ -0,0 +1,36 @@
1
+ import type { CollectionBackend, ItemPermissions } from '@wix/bex-core';
2
+
3
+ interface ItemActions {
4
+ create: boolean;
5
+ update: boolean;
6
+ delete: boolean;
7
+ bulkDelete: boolean;
8
+ }
9
+
10
+ export interface ItemAccess {
11
+ /** What the item permissions allow. An unset permission allows the action. */
12
+ permitted: ItemActions;
13
+ /** Which write methods the backend has. */
14
+ supported: ItemActions;
15
+ }
16
+
17
+ export function getItemAccess(
18
+ permissions: ItemPermissions<any> | undefined,
19
+ backend: CollectionBackend<any> | undefined,
20
+ ): ItemAccess {
21
+ return {
22
+ permitted: {
23
+ create: permissions?.createItem ?? true,
24
+ update: permissions?.updateItem ?? true,
25
+ delete: permissions?.deleteItem ?? true,
26
+ bulkDelete:
27
+ permissions?.bulkDeleteItems ?? permissions?.deleteItem ?? true,
28
+ },
29
+ supported: {
30
+ create: !!backend?.create,
31
+ update: !!backend?.update,
32
+ delete: !!backend?.delete,
33
+ bulkDelete: !!backend?.bulkDelete,
34
+ },
35
+ };
36
+ }
@@ -1,6 +1,7 @@
1
1
  import { autorun } from 'mobx';
2
2
  import type { FiltersMap, SourceState } from '@wix/bex-core';
3
3
  import type { EditableTableState } from '../state/EditableTable';
4
+ import { getItemAccess } from '../model/itemAccess';
4
5
 
5
6
  /**
6
7
  * Keeps an editable table's row-action flags in sync with its source: an action
@@ -19,15 +20,14 @@ export function syncSourcePermissions<T, F extends FiltersMap>(
19
20
  const perms = loaded?.schema.itemPermissions;
20
21
  const backend = loaded?.backend;
21
22
 
23
+ const { permitted, supported } = getItemAccess(perms, backend);
22
24
  const isRemoveItemDisabled = perms?.isRemoveItemDisabled;
23
25
 
24
26
  state.setPermissions({
25
- addItemDisabled: !(perms?.createItem ?? true) || !backend?.create,
26
- updateItemDisabled: !(perms?.updateItem ?? true) || !backend?.update,
27
- removeItemDisabled: !(perms?.deleteItem ?? true) || !backend?.bulkDelete,
28
- multiDeleteDisabled:
29
- !(perms?.bulkDeleteItems ?? perms?.deleteItem ?? true) ||
30
- !backend?.bulkDelete,
27
+ addItemDisabled: !permitted.create || !supported.create,
28
+ updateItemDisabled: !permitted.update || !supported.update,
29
+ removeItemDisabled: !permitted.delete || !supported.bulkDelete,
30
+ multiDeleteDisabled: !permitted.bulkDelete || !supported.bulkDelete,
31
31
  isCreateItemDisabled: perms?.isCreateItemDisabled,
32
32
  isRemoveItemDisabled: isRemoveItemDisabled
33
33
  ? (item: T) => isRemoveItemDisabled(item as Record<string, unknown>)
@@ -1,7 +1,9 @@
1
- import { useState } from 'react';
1
+ import { useEffect, useState } from 'react';
2
+ import { observable, runInAction } from 'mobx';
2
3
  import type { FieldValues } from 'react-hook-form';
3
4
  import type { SchemaSource } from '@wix/bex-core';
4
5
  import type { EntityPageDeleteAction, EntityPageState } from '../state';
6
+ import { markSourceSave } from '../state/EntityPage/sourceSave';
5
7
  import {
6
8
  useEntityPage as useOpenEntityPage,
7
9
  type UseEntityPageParams,
@@ -41,8 +43,19 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
41
43
  // The derived read and write need values that change or don't exist yet when
42
44
  // the state is created: the state itself (the save merges into the loaded
43
45
  // entity) and the latest entityId (a re-fetch should read the current one).
44
- const [page] = useState<PageRef<T, V>>(() => ({}));
45
- page.entityId = entityId;
46
+ // entityId is observable so the page's create/update permission follows it.
47
+ const [page] = useState(() =>
48
+ observable<PageRef<T, V>>(
49
+ { entityId, state: undefined },
50
+ { state: false },
51
+ { deep: false },
52
+ ),
53
+ );
54
+ useEffect(() => {
55
+ runInAction(() => {
56
+ page.entityId = entityId;
57
+ });
58
+ }, [page, entityId]);
46
59
 
47
60
  const state = useOpenEntityPage<T, V>({
48
61
  ...rest,
@@ -50,7 +63,7 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
50
63
  isNewEntity: () => !page.entityId,
51
64
  fetch:
52
65
  fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),
53
- onSave: onSave ?? (() => saveToSource(source, page)),
66
+ onSave: onSave ?? markSourceSave(() => saveToSource(source, page)),
54
67
  deleteAction: resolveDeleteAction(page, deleteAction),
55
68
  } as UseEntityPageParams<T, V>);
56
69
 
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "CollectionPageHeader3311006848";
8
+ var _namespace_ = "CollectionPageHeader1447808307";
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":"CollectionPageHeader3311006848__root","mobileMoreActions":"CollectionPageHeader3311006848__mobileMoreActions"};
16
+ export var classes = {"root":"CollectionPageHeader1447808307__root","mobileMoreActions":"CollectionPageHeader1447808307__mobileMoreActions"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "MobilePrimaryActionBar4227138949";
8
+ var _namespace_ = "MobilePrimaryActionBar1781613891";
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":"MobilePrimaryActionBar4227138949__root"};
16
+ export var classes = {"root":"MobilePrimaryActionBar1781613891__root"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
5
5
 
6
6
 
7
7
 
8
- var _namespace_ = "TitleBadges3914608263";
8
+ var _namespace_ = "TitleBadges239452423";
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":"TitleBadges3914608263__root","tooltip":"TitleBadges3914608263__tooltip","tooltipTrigger":"TitleBadges3914608263__tooltipTrigger"};
16
+ export var classes = {"root":"TitleBadges239452423__root","tooltip":"TitleBadges239452423__tooltip","tooltipTrigger":"TitleBadges239452423__tooltipTrigger"};
17
17
  export var keyframes = {};
18
18
  export var layers = {};
19
19
  export var containers = {};
@@ -2,6 +2,7 @@ import { action, computed, makeObservable, observable } from 'mobx';
2
2
  import type { CellType, Cell, ValidationResult } from './types';
3
3
  import type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';
4
4
  import type { EditableTableState } from './EditableTableState';
5
+ import type { UpdateOptions } from './MutationState';
5
6
  import {
6
7
  builtInCellTypes,
7
8
  textCellType,
@@ -27,6 +28,10 @@ export class CellValueState<T, F extends FiltersMap> {
27
28
  { rowKey: string; columnId: string; value: any }
28
29
  >();
29
30
 
31
+ /** Local new rows not to create yet, with how many open paste toasts hold
32
+ * each. See `applyPastedValues`. */
33
+ private readonly _heldNewRows = new Map<string, number>();
34
+
30
35
  private readonly _parent: EditableTableState<T, F>;
31
36
  private readonly _extraCellTypes: Map<string, CellType>;
32
37
 
@@ -46,8 +51,10 @@ export class CellValueState<T, F extends FiltersMap> {
46
51
  commitHandler: action,
47
52
  applyBulkRawValues: action,
48
53
  applyBulkValues: action,
54
+ applyPastedValues: action,
49
55
  revalidatePendingCells: action,
50
56
  flushDrafts: action,
57
+ flushDraftsOnUnmount: action,
51
58
  flushRow: action,
52
59
  dropRowCellState: action,
53
60
  });
@@ -359,9 +366,13 @@ export class CellValueState<T, F extends FiltersMap> {
359
366
  * Deserialize and apply multiple raw string values in bulk.
360
367
  * Handles conversion failures by storing them as pending cells.
361
368
  */
362
- applyBulkRawValues(
363
- rawChanges: { rowKey: string; columnId: string; rawValue: string }[],
364
- ) {
369
+ applyBulkRawValues(rawChanges: RawCellChange[]) {
370
+ this.applyBulkValues(this._deserializeRawValues(rawChanges));
371
+ }
372
+
373
+ /** Values that fail are stored as pending cells with their error and left
374
+ * out of the result. */
375
+ private _deserializeRawValues(rawChanges: RawCellChange[]) {
365
376
  const changes: { rowKey: string; columnId: string; value: any }[] = [];
366
377
  for (const { rowKey, columnId, rawValue } of rawChanges) {
367
378
  const { value, error } = this.tryDeserialize(columnId, rawValue);
@@ -378,7 +389,7 @@ export class CellValueState<T, F extends FiltersMap> {
378
389
  changes.push({ rowKey, columnId, value });
379
390
  }
380
391
  }
381
- this.applyBulkValues(changes);
392
+ return changes;
382
393
  }
383
394
 
384
395
  /**
@@ -388,7 +399,10 @@ export class CellValueState<T, F extends FiltersMap> {
388
399
  * checking isColumnEditable here — not just at the call sites — keeps
389
400
  * read-only cells protected regardless of entry point.
390
401
  */
391
- applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {
402
+ applyBulkValues(
403
+ changes: { rowKey: string; columnId: string; value: any }[],
404
+ options?: UpdateOptions,
405
+ ) {
392
406
  const rowUpdates = new Map<
393
407
  string,
394
408
  { item: T; changedFieldIds: Set<string> }
@@ -454,6 +468,148 @@ export class CellValueState<T, F extends FiltersMap> {
454
468
  this._parent.mutation.updateItems(
455
469
  updates.map(({ item }) => item),
456
470
  updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),
471
+ options,
472
+ );
473
+ }
474
+
475
+ /**
476
+ * Applies pasted values and shows `successToast` with Undo. The server call
477
+ * waits until the toast closes or times out. With `batchWait` the toast has
478
+ * no Undo (see `MutationState.updatesAreBatched`).
479
+ *
480
+ * Undo rolls back the saved rows, and puts back the unsaved state (invalid
481
+ * values and drafts) of the pasted cells and of the drafts in their rows,
482
+ * which the paste saves along with it. A cell changed again after the paste
483
+ * keeps its newer value.
484
+ *
485
+ * Local new rows the paste touched are not created while the toast is open.
486
+ * Otherwise the click on Undo, which takes focus out of the table, would
487
+ * create them with the pasted values first.
488
+ */
489
+ applyPastedValues(
490
+ changes: { rowKey: string; columnId: string; value: any }[],
491
+ rawChanges: RawCellChange[],
492
+ successToast: string,
493
+ ) {
494
+ if (this._parent.mutation.updatesAreBatched) {
495
+ this.applyBulkValues(
496
+ [...changes, ...this._deserializeRawValues(rawChanges)],
497
+ { successToast },
498
+ );
499
+ return;
500
+ }
501
+
502
+ const pastedCells = [...changes, ...rawChanges];
503
+ const rowKeys = new Set(pastedCells.map(({ rowKey }) => rowKey));
504
+ const affectedCellKeys = new Set<string>();
505
+ for (const { rowKey, columnId } of pastedCells) {
506
+ const key = this._pendingCellKey(rowKey, columnId);
507
+ if (key) {
508
+ affectedCellKeys.add(key);
509
+ }
510
+ }
511
+ for (const [key, draft] of this._draftCells) {
512
+ if (rowKeys.has(draft.rowKey)) {
513
+ affectedCellKeys.add(key);
514
+ }
515
+ }
516
+ const beforePaste = this._snapshotUnsavedCells(affectedCellKeys);
517
+ // Replaced right after the paste below. `onUndo` reads it, and core calls
518
+ // `onUndo` only on a click on the toast, after that.
519
+ let afterPaste = beforePaste;
520
+
521
+ const newRowKeys = new Set(
522
+ [...rowKeys].filter((rowKey) =>
523
+ this._parent.mutation.isLocalNewRow(rowKey),
524
+ ),
525
+ );
526
+ for (const rowKey of newRowKeys) {
527
+ this._heldNewRows.set(rowKey, (this._heldNewRows.get(rowKey) ?? 0) + 1);
528
+ }
529
+ let toastOpen = true;
530
+ // Retry calls `onKept` again; only the first call counts.
531
+ const endUndoWindow = () => {
532
+ if (!toastOpen) {
533
+ return false;
534
+ }
535
+ toastOpen = false;
536
+ for (const rowKey of newRowKeys) {
537
+ const holds = (this._heldNewRows.get(rowKey) ?? 1) - 1;
538
+ if (holds > 0) {
539
+ this._heldNewRows.set(rowKey, holds);
540
+ } else {
541
+ this._heldNewRows.delete(rowKey);
542
+ }
543
+ }
544
+ return true;
545
+ };
546
+
547
+ this.applyBulkValues(
548
+ // After the snapshot: this writes invalid values into `_pendingCells`.
549
+ [...changes, ...this._deserializeRawValues(rawChanges)],
550
+ {
551
+ successToast,
552
+ undo: {
553
+ onUndo: action(() => {
554
+ const wasOpen = endUndoWindow();
555
+ if (!wasOpen) {
556
+ return;
557
+ }
558
+ const restoredDraftRows = new Set<string>();
559
+ for (const key of affectedCellKeys) {
560
+ const pasted = afterPaste.get(key);
561
+ if (
562
+ this._pendingCells.get(key) !== pasted?.pending ||
563
+ this._draftCells.get(key) !== pasted?.draft
564
+ ) {
565
+ continue;
566
+ }
567
+ const { pending, draft } = beforePaste.get(key) ?? {};
568
+ setOrDelete(this._pendingCells, key, pending);
569
+ setOrDelete(this._draftCells, key, draft);
570
+ if (draft) {
571
+ restoredDraftRows.add(draft.rowKey);
572
+ }
573
+ }
574
+ // The click on Undo already flushed the table, before these drafts
575
+ // were back. No toast: nothing should confirm the Undo.
576
+ this._flushRowsWithoutFocus(restoredDraftRows, {
577
+ successToast: null,
578
+ });
579
+ }),
580
+ onKept: action(() => {
581
+ const wasOpen = endUndoWindow();
582
+ if (!wasOpen) {
583
+ return;
584
+ }
585
+ this._flushRowsWithoutFocus(newRowKeys);
586
+ }),
587
+ },
588
+ },
589
+ );
590
+ afterPaste = this._snapshotUnsavedCells(affectedCellKeys);
591
+ }
592
+
593
+ private _snapshotUnsavedCells(keys: Set<string>): UnsavedCellsSnapshot {
594
+ return new Map(
595
+ [...keys].map((key) => [
596
+ key,
597
+ {
598
+ pending: this._pendingCells.get(key),
599
+ draft: this._draftCells.get(key),
600
+ },
601
+ ]),
602
+ );
603
+ }
604
+
605
+ private _flushRowsWithoutFocus(
606
+ rowKeys: Set<string>,
607
+ options?: UpdateOptions,
608
+ ) {
609
+ const focusedRowKey = this._parent.cellInteraction.focusedCell?.rowKey;
610
+ this._flushRows(
611
+ (rowKey) => rowKeys.has(rowKey) && rowKey !== focusedRowKey,
612
+ options,
457
613
  );
458
614
  }
459
615
 
@@ -511,22 +667,36 @@ export class CellValueState<T, F extends FiltersMap> {
511
667
  this._flushRows((rowKey) => rowKey !== exceptRowKey);
512
668
  }
513
669
 
670
+ /** Like `flushDrafts()`, but also saves new rows held by an open paste
671
+ * toast: focus can stay on a held row on unmount, and the toast doesn't
672
+ * create a focused row. */
673
+ flushDraftsOnUnmount() {
674
+ this._heldNewRows.clear();
675
+ this.flushDrafts();
676
+ }
677
+
514
678
  /** Save one row's drafts now, leaving other rows' drafts buffered. */
515
679
  flushRow(rowKey: string) {
516
680
  this._flushRows((key) => key === rowKey);
517
681
  }
518
682
 
519
- private _flushRows(includeRow: (rowKey: string) => boolean) {
683
+ private _flushRows(
684
+ includeRow: (rowKey: string) => boolean,
685
+ options?: UpdateOptions,
686
+ ) {
687
+ const include = (rowKey: string) =>
688
+ includeRow(rowKey) && !this._heldNewRows.has(rowKey);
689
+
520
690
  const invalidNewRows = new Set<string>();
521
691
  for (const rowKey of this._parent.mutation._drafts.keys()) {
522
- if (includeRow(rowKey) && !this._validateNewRow(rowKey)) {
692
+ if (include(rowKey) && !this._validateNewRow(rowKey)) {
523
693
  invalidNewRows.add(rowKey);
524
694
  }
525
695
  }
526
696
 
527
697
  const rowKeys = new Set<string>();
528
698
  for (const entry of this._draftCells.values()) {
529
- if (includeRow(entry.rowKey)) {
699
+ if (include(entry.rowKey)) {
530
700
  rowKeys.add(entry.rowKey);
531
701
  }
532
702
  }
@@ -550,6 +720,7 @@ export class CellValueState<T, F extends FiltersMap> {
550
720
  this._parent.mutation.updateItems(
551
721
  updates.map(({ item }) => item),
552
722
  updates.map(({ changedFieldIds }) => changedFieldIds),
723
+ options,
553
724
  );
554
725
  }
555
726
  }
@@ -621,3 +792,21 @@ export class CellValueState<T, F extends FiltersMap> {
621
792
  }
622
793
  }
623
794
  }
795
+
796
+ type RawCellChange = { rowKey: string; columnId: string; rawValue: string };
797
+
798
+ type UnsavedCellsSnapshot = Map<
799
+ string,
800
+ {
801
+ pending?: { value: any; errors: string[] };
802
+ draft?: { rowKey: string; columnId: string; value: any };
803
+ }
804
+ >;
805
+
806
+ const setOrDelete = <V>(map: Map<string, V>, key: string, value?: V) => {
807
+ if (value === undefined) {
808
+ map.delete(key);
809
+ } else {
810
+ map.set(key, value);
811
+ }
812
+ };
@@ -74,18 +74,28 @@ export class ClipboardState<T, F extends FiltersMap> {
74
74
  this._copiedDataString !== undefined &&
75
75
  this._copiedDataString === rawData;
76
76
 
77
- const { keptSourceKeys, pasted } = this._pasteGrid(
77
+ const { richChanges, rawChanges, keptSourceKeys, pasted } = this._pasteGrid(
78
78
  rawData,
79
79
  targetPos,
80
80
  isInternal,
81
- cellValue,
82
81
  );
83
82
 
83
+ // Clearing the cut sources goes out in the same update as the paste, so
84
+ // one Undo restores both sides.
84
85
  if (this.isCut && isInternal) {
85
- this._clearCutSources(keptSourceKeys, cellValue);
86
+ richChanges.push(...this._cutSourceClears(keptSourceKeys));
86
87
  }
87
88
 
88
89
  if (pasted.length > 0) {
90
+ cellValue.applyPastedValues(
91
+ richChanges,
92
+ rawChanges,
93
+ this._parent.collection.translate(
94
+ 'cairo.editableTable.paste.success.toast',
95
+ { count: pasted.length },
96
+ ),
97
+ );
98
+
89
99
  this._parent.bi.clipboardAction({
90
100
  actionName: 'paste',
91
101
  origin,
@@ -101,8 +111,8 @@ export class ClipboardState<T, F extends FiltersMap> {
101
111
  rawData: string,
102
112
  targetPos: { row: number; col: number },
103
113
  useRichValues: boolean,
104
- cellValue: EditableTableState<T, F>['cellValue'],
105
- ): { keptSourceKeys: Set<string>; pasted: Cell[] } {
114
+ ) {
115
+ const { cellValue } = this._parent;
106
116
  const keptSourceKeys = new Set<string>();
107
117
  const pasted: Cell[] = [];
108
118
  const richChanges: { rowKey: string; columnId: string; value: any }[] = [];
@@ -161,14 +171,7 @@ export class ClipboardState<T, F extends FiltersMap> {
161
171
  }
162
172
  }
163
173
 
164
- if (richChanges.length > 0) {
165
- cellValue.applyBulkValues(richChanges);
166
- }
167
- if (rawChanges.length > 0) {
168
- cellValue.applyBulkRawValues(rawChanges);
169
- }
170
-
171
- return { keptSourceKeys, pasted };
174
+ return { richChanges, rawChanges, keptSourceKeys, pasted };
172
175
  }
173
176
 
174
177
  // A typed value pasted into a column of another cell type would skip that
@@ -189,22 +192,21 @@ export class ClipboardState<T, F extends FiltersMap> {
189
192
  );
190
193
  }
191
194
 
192
- private _clearCutSources(
193
- keptSourceKeys: Set<string>,
194
- cellValue: EditableTableState<T, F>['cellValue'],
195
- ) {
196
- const cells: Cell[] = [];
195
+ // The clear rule is checked again here because it can depend on row values
196
+ // that changed since the cut.
197
+ private _cutSourceClears(keptSourceKeys: Set<string>) {
198
+ const { cellValue } = this._parent;
199
+ const clears: { rowKey: string; columnId: string; value: undefined }[] = [];
197
200
  for (const key of this.copiedCells) {
198
201
  if (keptSourceKeys.has(key)) {
199
202
  continue;
200
203
  }
201
204
  const pos = parseCellKey(key);
202
- if (pos) {
203
- cells.push(pos);
205
+ if (pos && !cellValue.getCellActionDisabledTooltip('clear', pos)) {
206
+ clears.push({ ...pos, value: undefined });
204
207
  }
205
208
  }
206
-
207
- cellValue.clearCells(cells);
209
+ return clears;
208
210
  }
209
211
 
210
212
  clear() {
@@ -351,7 +351,7 @@ export class EditableTableState<T, F extends FiltersMap>
351
351
 
352
352
  return () => {
353
353
  disposeValidation();
354
- this.cellValue.flushDrafts();
354
+ this.cellValue.flushDraftsOnUnmount();
355
355
  disposeMutation();
356
356
  onBeforeUnloadSubscription?.remove();
357
357
  };
@@ -26,6 +26,20 @@ export interface EditableTableMutationHandlers<T> {
26
26
  submitDelete: (items: T[]) => Promise<void>;
27
27
  }
28
28
 
29
+ export interface UpdateOptions {
30
+ /** Missing: the "Item updated" toast. A string: this text instead. `null`:
31
+ * no success toast. */
32
+ successToast?: string | null;
33
+ /** Adds Undo to the success toast. The server call waits until the toast
34
+ * closes or times out. */
35
+ undo?: {
36
+ /** Runs when the user clicks Undo, after the rows are rolled back. */
37
+ onUndo: () => void;
38
+ /** Runs when the toast closes or times out without Undo. */
39
+ onKept: () => void;
40
+ };
41
+ }
42
+
29
43
  type DraftRow<T> = {
30
44
  item: T;
31
45
  afterItemKey?: string;
@@ -258,18 +272,37 @@ export class MutationState<T, F extends FiltersMap> {
258
272
  });
259
273
  }
260
274
 
261
- updateItems(updatedItems: T[], changedFieldIdsByItem?: string[][]) {
262
- const t = this._parent.collection.translate;
263
- if (updatedItems.length === 0) {
275
+ /** With `batchWait`, core runs a batch with the last update's `submit` and
276
+ * toast only, so an earlier update's Undo and `onKept` would be lost. */
277
+ get updatesAreBatched(): boolean {
278
+ return Boolean(this._optimisticActions.executor.batchWait);
279
+ }
280
+
281
+ updateItems(
282
+ updatedItems: T[],
283
+ changedFieldIdsByItem?: string[][],
284
+ { successToast, undo }: UpdateOptions = {},
285
+ ) {
286
+ // With its own toast, an empty update still runs, to show the toast for
287
+ // values that stayed local (invalid cells, unsaved rows).
288
+ if (updatedItems.length === 0 && typeof successToast !== 'string') {
264
289
  return;
265
290
  }
266
291
  const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
267
292
  this._optimisticActions.updateMany(updatedItems, {
268
293
  keepPosition: true,
269
- submit: (items) => this._submitUpdate(items, updatedItems, contexts),
270
- successToast: t('cairo.editableTable.updateItem.success.toast', {
271
- count: updatedItems.length,
272
- }),
294
+ // With undo, core calls this when the toast closes or times out without
295
+ // Undo. Retry calls it again.
296
+ submit: (items) => {
297
+ undo?.onKept();
298
+ // With `batchWait`, `items` also holds the other updates of the batch.
299
+ return items.length > 0
300
+ ? this._submitUpdate(items, updatedItems, contexts)
301
+ : Promise.resolve();
302
+ },
303
+ successToast: this._updateSuccessToast(successToast, updatedItems.length),
304
+ showUndoToast: undo !== undefined,
305
+ onUndo: undo?.onUndo,
273
306
  errorToast: this._retryableToast(
274
307
  'cairo.editableTable.updateItem.error.toast',
275
308
  'Update',
@@ -277,6 +310,22 @@ export class MutationState<T, F extends FiltersMap> {
277
310
  });
278
311
  }
279
312
 
313
+ private _updateSuccessToast(
314
+ successToast: UpdateOptions['successToast'],
315
+ count: number,
316
+ ) {
317
+ if (successToast === null) {
318
+ return undefined;
319
+ }
320
+ return (
321
+ successToast ??
322
+ this._parent.collection.translate(
323
+ 'cairo.editableTable.updateItem.success.toast',
324
+ { count },
325
+ )
326
+ );
327
+ }
328
+
280
329
  /** Wraps the create submit so the outcome is reported once the server answers
281
330
  * — the optimistic action itself has no completion callback. */
282
331
  private _reportedCreate(origin: RowCreationOrigin) {
@@ -6,6 +6,7 @@ import type {
6
6
  WixPatternsContainer,
7
7
  } from '@wix/bex-core';
8
8
  import { computed, makeObservable } from 'mobx';
9
+ import { getItemAccess } from '../../model/itemAccess';
9
10
 
10
11
  type DeleteErrorToast = (
11
12
  err: unknown,
@@ -104,13 +105,14 @@ export class EntityPageDeleteActionState<T> {
104
105
  }
105
106
 
106
107
  get canShow() {
107
- const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;
108
+ const loaded = this.getLoadedSchema();
108
109
  return (
109
110
  !!this.getEntity() &&
110
111
  !!this.config &&
111
112
  this.isEnabled &&
112
113
  !!this.getDeleteHandler() &&
113
- (itemPermissions?.deleteItem ?? true)
114
+ getItemAccess(loaded?.schema.itemPermissions, loaded?.backend).permitted
115
+ .delete
114
116
  );
115
117
  }
116
118