@wix/patterns 1.498.0 → 1.500.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 (593) 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/CollectionItemActions/CollectionItemActionsHelper.js +2 -2
  12. package/dist/cjs/components/CollectionItemActions/CollectionItemActionsHelper.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/CustomColumnsPanel/ColumnListTableListItem.js +24 -27
  30. package/dist/cjs/components/CustomColumnsPanel/ColumnListTableListItem.js.map +1 -1
  31. package/dist/cjs/components/CustomFieldModal/CustomFieldCollectionInput.js +30 -15
  32. package/dist/cjs/components/CustomFieldModal/CustomFieldCollectionInput.js.map +1 -1
  33. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
  34. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js.map +1 -1
  35. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  36. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +6 -6
  38. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  40. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  42. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  46. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  48. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  50. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  52. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  54. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  56. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  58. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  60. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  64. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  66. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/index.js +1 -10
  68. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/index.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/multiReference/Edit.js +2 -2
  72. package/dist/cjs/components/EditableTable/cellTypes/multiReference/Edit.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/multiReference/View.js +2 -2
  74. package/dist/cjs/components/EditableTable/cellTypes/multiReference/View.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  76. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  78. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  80. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/reference/Edit.js +2 -2
  82. package/dist/cjs/components/EditableTable/cellTypes/reference/Edit.js.map +1 -1
  83. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
  84. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  85. package/dist/cjs/components/EditableTable/cellTypes/reference/View.js +5 -5
  86. package/dist/cjs/components/EditableTable/cellTypes/reference/View.js.map +1 -1
  87. package/dist/cjs/components/EditableTable/cellTypes/reference/types.js.map +1 -1
  88. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  89. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  90. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  91. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  92. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  93. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  94. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  95. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  96. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  97. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  98. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  99. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  100. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  101. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  102. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  103. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  104. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +3 -3
  105. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
  106. package/dist/cjs/components/EntityPageFields/EntityPageReferenceField.js +6 -5
  107. package/dist/cjs/components/EntityPageFields/EntityPageReferenceField.js.map +1 -1
  108. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js +7 -6
  109. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  110. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
  111. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -1
  112. package/dist/cjs/components/EntityPageFields/useReferencedSchema.js +0 -6
  113. package/dist/cjs/components/EntityPageFields/useReferencedSchema.js.map +1 -1
  114. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  115. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  116. package/dist/cjs/components/Grid/GridSingleGridContent.js +7 -4
  117. package/dist/cjs/components/Grid/GridSingleGridContent.js.map +1 -1
  118. package/dist/cjs/components/GridSections/GridSectionsContent.js +5 -4
  119. package/dist/cjs/components/GridSections/GridSectionsContent.js.map +1 -1
  120. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  121. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  122. package/dist/cjs/components/ImportButton/ImportButtonModalLayout.js +49 -15
  123. package/dist/cjs/components/ImportButton/ImportButtonModalLayout.js.map +1 -1
  124. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  125. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  126. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js +2 -13
  127. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  128. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  129. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  130. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  131. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  132. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  133. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  134. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  135. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  136. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  137. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  138. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  139. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  140. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  141. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  142. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  143. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  144. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  145. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  146. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  147. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  148. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  149. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  150. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  151. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  152. package/dist/cjs/components/PrimaryActions/PrimaryActions.js +1 -1
  153. package/dist/cjs/components/PrimaryActions/PrimaryActions.js.map +1 -1
  154. package/dist/cjs/components/SchemaSource/ReferenceFieldCell.js +7 -7
  155. package/dist/cjs/components/SchemaSource/ReferenceFieldCell.js.map +1 -1
  156. package/dist/cjs/components/SchemaSource/referenceCells.js +3 -8
  157. package/dist/cjs/components/SchemaSource/referenceCells.js.map +1 -1
  158. package/dist/cjs/components/SchemaSource/schemaFieldActions.js +15 -1
  159. package/dist/cjs/components/SchemaSource/schemaFieldActions.js.map +1 -1
  160. package/dist/cjs/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  161. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  162. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  163. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  164. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  165. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  166. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  167. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  168. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  169. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
  170. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  171. package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
  172. package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
  173. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  174. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  175. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  176. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  177. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  178. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  179. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  180. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  181. package/dist/cjs/components/common.st.css.js +4 -4
  182. package/dist/cjs/components/common.st.css.js.map +1 -1
  183. package/dist/cjs/exports/schema.js.map +1 -1
  184. package/dist/cjs/index.js.map +1 -1
  185. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
  186. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  187. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  188. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  189. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
  190. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  191. package/dist/cjs/state/CustomColumnsEntityPageState.js +30 -2
  192. package/dist/cjs/state/CustomColumnsEntityPageState.js.map +1 -1
  193. package/dist/cjs/state/CustomColumnsPanelStateBase.js.map +1 -1
  194. package/dist/cjs/state/CustomColumnsState.js +18 -6
  195. package/dist/cjs/state/CustomColumnsState.js.map +1 -1
  196. package/dist/cjs/state/EditableTable/CellValueState.js +154 -7
  197. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  198. package/dist/cjs/state/EditableTable/ClipboardState.js +30 -14
  199. package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
  200. package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
  201. package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
  202. package/dist/cjs/state/EditableTable/MutationState.js +31 -7
  203. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  204. package/dist/cjs/state/EntityPage/EntityPageState.js +24 -0
  205. package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
  206. package/dist/cjs/state/EntityPage/EntityPageStateBIReporter.js +55 -2
  207. package/dist/cjs/state/EntityPage/EntityPageStateBIReporter.js.map +1 -1
  208. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  209. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  210. package/dist/cjs/state/NestedTableState/NestedTableNestedModeState.js +1 -1
  211. package/dist/cjs/state/NestedTableState/NestedTableNestedModeState.js.map +1 -1
  212. package/dist/cjs/state/OperatorFilterPickerState.js +2 -1
  213. package/dist/cjs/state/OperatorFilterPickerState.js.map +1 -1
  214. package/dist/cjs/styles.global.css +2 -2
  215. package/dist/cjs/utils/referenceImage.js +35 -0
  216. package/dist/cjs/utils/referenceImage.js.map +1 -0
  217. package/dist/cjs/version.js +1 -1
  218. package/dist/cjs/version.js.map +1 -1
  219. package/dist/docs/CustomFieldType.md +25 -0
  220. package/dist/docs/Explore Apps.md +1 -0
  221. package/dist/docs/ImportButton.md +3 -1
  222. package/dist/docs/Settings Page Template.md +1 -1
  223. package/dist/docs/Table.md +3 -1
  224. package/dist/docs/useGridCollection.md +1 -0
  225. package/dist/docs/useTableCollection.md +16 -1
  226. package/dist/docs/useTableGridSwitchCollection.md +1 -0
  227. package/dist/dts-bundle/components/EditableTable.d.ts +4 -3
  228. package/dist/dts-bundle/components/LayoutSwitch.d.ts +4 -3
  229. package/dist/dts-bundle/hooks/usePickerModal.d.ts +9 -0
  230. package/dist/dts-bundle/index.json +29 -29
  231. package/dist/dts-bundle/index.txt +7 -7
  232. package/dist/dts-bundle/types/CellType.d.ts +13 -3
  233. package/dist/dts-bundle/types/SchemaSource.d.ts +6 -1
  234. package/dist/dts-bundle/types/SchemaSourceInput.d.ts +6 -1
  235. package/dist/dts-bundle/types/UseCmsSchemaSourceDeps.d.ts +6 -1
  236. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  237. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  238. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  239. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  240. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  241. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  242. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  243. package/dist/esm/components/CollectionItemActions/CollectionItemActionsHelper.js +8 -2
  244. package/dist/esm/components/CollectionItemActions/CollectionItemActionsHelper.js.map +1 -1
  245. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  246. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  247. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  248. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  249. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  250. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  251. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  252. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  253. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  254. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  255. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  256. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  257. package/dist/esm/components/CustomColumnsPanel/ColumnListTableListItem.js +12 -13
  258. package/dist/esm/components/CustomColumnsPanel/ColumnListTableListItem.js.map +1 -1
  259. package/dist/esm/components/CustomFieldModal/CustomFieldCollectionInput.js +31 -10
  260. package/dist/esm/components/CustomFieldModal/CustomFieldCollectionInput.js.map +1 -1
  261. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
  262. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  263. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  264. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  265. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  266. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  267. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  268. package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
  269. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  270. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  271. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  272. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  273. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  274. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  275. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  276. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  277. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  278. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  279. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  280. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  281. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  282. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  283. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  284. package/dist/esm/components/EditableTable/cellTypes/mediaImage/index.js +2 -11
  285. package/dist/esm/components/EditableTable/cellTypes/mediaImage/index.js.map +1 -1
  286. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
  287. package/dist/esm/components/EditableTable/cellTypes/multiReference/Edit.js +1 -1
  288. package/dist/esm/components/EditableTable/cellTypes/multiReference/Edit.js.map +1 -1
  289. package/dist/esm/components/EditableTable/cellTypes/multiReference/View.js +1 -1
  290. package/dist/esm/components/EditableTable/cellTypes/multiReference/View.js.map +1 -1
  291. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  292. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  293. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  294. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  295. package/dist/esm/components/EditableTable/cellTypes/reference/Edit.js +1 -1
  296. package/dist/esm/components/EditableTable/cellTypes/reference/Edit.js.map +1 -1
  297. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
  298. package/dist/esm/components/EditableTable/cellTypes/reference/View.js +3 -5
  299. package/dist/esm/components/EditableTable/cellTypes/reference/View.js.map +1 -1
  300. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  301. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  302. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  303. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  304. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  305. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  306. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  307. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  308. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
  309. package/dist/esm/components/EntityPageFields/EntityPageReferenceField.js +4 -5
  310. package/dist/esm/components/EntityPageFields/EntityPageReferenceField.js.map +1 -1
  311. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js +5 -6
  312. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  313. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
  314. package/dist/esm/components/EntityPageFields/useReferencedSchema.js +0 -1
  315. package/dist/esm/components/EntityPageFields/useReferencedSchema.js.map +1 -1
  316. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  317. package/dist/esm/components/Grid/GridSingleGridContent.js +5 -2
  318. package/dist/esm/components/Grid/GridSingleGridContent.js.map +1 -1
  319. package/dist/esm/components/GridSections/GridSectionsContent.js +2 -1
  320. package/dist/esm/components/GridSections/GridSectionsContent.js.map +1 -1
  321. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  322. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  323. package/dist/esm/components/ImportButton/ImportButtonModalLayout.js +35 -2
  324. package/dist/esm/components/ImportButton/ImportButtonModalLayout.js.map +1 -1
  325. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  326. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  327. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js +2 -12
  328. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  329. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  330. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  331. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  332. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  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/NestedTableRow.st.css.js +2 -2
  338. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  339. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  340. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  341. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  342. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  343. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  344. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  345. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  346. package/dist/esm/components/PrimaryActions/PrimaryActions.js +1 -1
  347. package/dist/esm/components/PrimaryActions/PrimaryActions.js.map +1 -1
  348. package/dist/esm/components/SchemaSource/ReferenceFieldCell.js +4 -5
  349. package/dist/esm/components/SchemaSource/ReferenceFieldCell.js.map +1 -1
  350. package/dist/esm/components/SchemaSource/referenceCells.js +3 -5
  351. package/dist/esm/components/SchemaSource/referenceCells.js.map +1 -1
  352. package/dist/esm/components/SchemaSource/schemaFieldActions.js +14 -2
  353. package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
  354. package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  355. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  356. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  357. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  358. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  359. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  360. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  361. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  362. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  363. package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
  364. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  365. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  366. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  367. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  368. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  369. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  370. package/dist/esm/components/common.st.css.js +2 -2
  371. package/dist/esm/index.js.map +1 -1
  372. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  373. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  374. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
  375. package/dist/esm/state/CustomColumnsEntityPageState.js +23 -2
  376. package/dist/esm/state/CustomColumnsEntityPageState.js.map +1 -1
  377. package/dist/esm/state/CustomColumnsPanelStateBase.js.map +1 -1
  378. package/dist/esm/state/CustomColumnsState.js +15 -6
  379. package/dist/esm/state/CustomColumnsState.js.map +1 -1
  380. package/dist/esm/state/EditableTable/CellValueState.js +146 -7
  381. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  382. package/dist/esm/state/EditableTable/ClipboardState.js +16 -15
  383. package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
  384. package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
  385. package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
  386. package/dist/esm/state/EditableTable/MutationState.js +28 -7
  387. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  388. package/dist/esm/state/EntityPage/EntityPageState.js +24 -0
  389. package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
  390. package/dist/esm/state/EntityPage/EntityPageStateBIReporter.js +38 -1
  391. package/dist/esm/state/EntityPage/EntityPageStateBIReporter.js.map +1 -1
  392. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  393. package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  394. package/dist/esm/state/NestedTableState/NestedTableNestedModeState.js +1 -1
  395. package/dist/esm/state/NestedTableState/NestedTableNestedModeState.js.map +1 -1
  396. package/dist/esm/state/OperatorFilterPickerState.js +1 -0
  397. package/dist/esm/state/OperatorFilterPickerState.js.map +1 -1
  398. package/dist/esm/styles.global.css +2 -2
  399. package/dist/esm/utils/referenceImage.js +20 -0
  400. package/dist/esm/utils/referenceImage.js.map +1 -0
  401. package/dist/esm/version.js +1 -1
  402. package/dist/examples/Table/mobile-columns.tsx +66 -98
  403. package/dist/templates/collection-entity/ItemEntityPage.tsx +4 -3
  404. package/dist/templates/settings-page/SettingsPageView.tsx +4 -3
  405. package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
  406. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  407. package/dist/types/components/CollectionItemActions/CollectionItemActionsHelper.d.ts.map +1 -1
  408. package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
  409. package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
  410. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  411. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  412. package/dist/types/components/CustomColumnsPanel/ColumnListTableListItem.d.ts.map +1 -1
  413. package/dist/types/components/CustomFieldModal/CustomFieldCollectionInput.d.ts.map +1 -1
  414. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  415. package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
  416. package/dist/types/components/EditableTable/cellTypes/boolean/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/email/Edit.st.css.d.ts.map +1 -1
  420. package/dist/types/components/EditableTable/cellTypes/mediaImage/index.d.ts.map +1 -1
  421. package/dist/types/components/EditableTable/cellTypes/number/Edit.st.css.d.ts.map +1 -1
  422. package/dist/types/components/EditableTable/cellTypes/reference/View.d.ts.map +1 -1
  423. package/dist/types/components/EditableTable/cellTypes/reference/types.d.ts +3 -3
  424. package/dist/types/components/EditableTable/cellTypes/reference/types.d.ts.map +1 -1
  425. package/dist/types/components/EntityPageFields/EntityPageReferenceField.d.ts.map +1 -1
  426. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.d.ts.map +1 -1
  427. package/dist/types/components/EntityPageFields/useReferencedSchema.d.ts +0 -1
  428. package/dist/types/components/EntityPageFields/useReferencedSchema.d.ts.map +1 -1
  429. package/dist/types/components/Grid/GridSingleGridContent.d.ts +5 -1
  430. package/dist/types/components/Grid/GridSingleGridContent.d.ts.map +1 -1
  431. package/dist/types/components/GridSections/GridSectionsContent.d.ts.map +1 -1
  432. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  433. package/dist/types/components/ImportButton/ImportButtonModalLayout.d.ts.map +1 -1
  434. package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
  435. package/dist/types/components/ImportButton/SchemaImportFieldEditor.d.ts.map +1 -1
  436. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  437. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  438. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  439. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts.map +1 -1
  440. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  441. package/dist/types/components/SchemaSource/ReferenceFieldCell.d.ts.map +1 -1
  442. package/dist/types/components/SchemaSource/referenceCells.d.ts.map +1 -1
  443. package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
  444. package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
  445. package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
  446. package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
  447. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  448. package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
  449. package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
  450. package/dist/types/exports/schema.d.ts +1 -1
  451. package/dist/types/exports/schema.d.ts.map +1 -1
  452. package/dist/types/index.d.ts +1 -1
  453. package/dist/types/index.d.ts.map +1 -1
  454. package/dist/types/state/CustomColumnsEntityPageState.d.ts +3 -1
  455. package/dist/types/state/CustomColumnsEntityPageState.d.ts.map +1 -1
  456. package/dist/types/state/CustomColumnsPanelStateBase.d.ts +1 -0
  457. package/dist/types/state/CustomColumnsPanelStateBase.d.ts.map +1 -1
  458. package/dist/types/state/CustomColumnsState.d.ts +2 -1
  459. package/dist/types/state/CustomColumnsState.d.ts.map +1 -1
  460. package/dist/types/state/EditableTable/CellValueState.d.ts +40 -6
  461. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  462. package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
  463. package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
  464. package/dist/types/state/EditableTable/MutationState.d.ts +18 -1
  465. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  466. package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
  467. package/dist/types/state/EntityPage/EntityPageStateBIReporter.d.ts +10 -0
  468. package/dist/types/state/EntityPage/EntityPageStateBIReporter.d.ts.map +1 -1
  469. package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
  470. package/dist/types/state/OperatorFilterPickerState.d.ts.map +1 -1
  471. package/dist/types/utils/referenceImage.d.ts +11 -0
  472. package/dist/types/utils/referenceImage.d.ts.map +1 -0
  473. package/dist/types/version.d.ts +1 -1
  474. package/package.json +8 -8
  475. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  476. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  477. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  478. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  479. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  480. package/src/components/CollectionItemActions/CollectionItemActionsHelper.ts +9 -2
  481. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  482. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  483. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  484. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  485. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  486. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  487. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  488. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  489. package/src/components/CustomColumnsPanel/ColumnListTableListItem.tsx +12 -13
  490. package/src/components/CustomFieldModal/CustomFieldCollectionInput.tsx +49 -13
  491. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
  492. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  493. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  494. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  495. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  496. package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
  497. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  498. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  499. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  500. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  501. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  502. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  503. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  504. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  505. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  506. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  507. package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
  508. package/src/components/EditableTable/cellTypes/mediaImage/index.ts +2 -11
  509. package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
  510. package/src/components/EditableTable/cellTypes/multiReference/Edit.tsx +2 -2
  511. package/src/components/EditableTable/cellTypes/multiReference/View.tsx +2 -2
  512. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  513. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  514. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  515. package/src/components/EditableTable/cellTypes/reference/Edit.tsx +2 -2
  516. package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
  517. package/src/components/EditableTable/cellTypes/reference/View.tsx +3 -9
  518. package/src/components/EditableTable/cellTypes/reference/types.ts +3 -4
  519. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  520. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  521. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  522. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  523. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  524. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  525. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  526. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  527. package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
  528. package/src/components/EntityPageFields/EntityPageReferenceField.tsx +4 -5
  529. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +2 -2
  530. package/src/components/EntityPageFields/EntityPageReferenceValue.tsx +5 -6
  531. package/src/components/EntityPageFields/useReferencedSchema.ts +0 -5
  532. package/src/components/Fade/Fade.st.css.ts +2 -2
  533. package/src/components/Grid/GridSingleGridContent.tsx +8 -2
  534. package/src/components/GridSections/GridSectionsContent.tsx +4 -1
  535. package/src/components/Heading/Heading.st.css.ts +2 -2
  536. package/src/components/ImportButton/ImportButtonModalLayout.tsx +42 -1
  537. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  538. package/src/components/ImportButton/SchemaImportFieldEditor.tsx +1 -20
  539. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  540. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  541. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  542. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  543. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  544. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  545. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  546. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  547. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  548. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  549. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  550. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  551. package/src/components/PrimaryActions/PrimaryActions.tsx +1 -1
  552. package/src/components/SchemaSource/ReferenceFieldCell.tsx +5 -8
  553. package/src/components/SchemaSource/referenceCells.ts +4 -10
  554. package/src/components/SchemaSource/schemaFieldActions.ts +16 -2
  555. package/src/components/SchemaSource/schemaFieldManagement.ts +3 -1
  556. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  557. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  558. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  559. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  560. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  561. package/src/components/Table/NumberCell.st.css.ts +2 -2
  562. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  563. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  564. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  565. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  566. package/src/components/common.st.css.ts +2 -2
  567. package/src/exports/schema.ts +2 -0
  568. package/src/index.ts +2 -0
  569. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  570. package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
  571. package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
  572. package/src/state/CustomColumnsEntityPageState.ts +28 -3
  573. package/src/state/CustomColumnsPanelStateBase.ts +1 -0
  574. package/src/state/CustomColumnsState.ts +17 -8
  575. package/src/state/EditableTable/CellValueState.ts +197 -8
  576. package/src/state/EditableTable/ClipboardState.ts +24 -22
  577. package/src/state/EditableTable/EditableTableState.ts +1 -1
  578. package/src/state/EditableTable/MutationState.ts +56 -7
  579. package/src/state/EntityPage/EntityPageState.ts +25 -0
  580. package/src/state/EntityPage/EntityPageStateBIReporter.ts +55 -0
  581. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  582. package/src/state/NestedTableState/NestedTableNestedModeState.ts +1 -1
  583. package/src/state/OperatorFilterPickerState.ts +2 -0
  584. package/src/styles.global.css +2 -2
  585. package/src/utils/referenceImage.ts +35 -0
  586. package/src/version.ts +1 -1
  587. package/dist/cjs/components/EditableTable/cellTypes/reference/getImageFieldId.js +0 -10
  588. package/dist/cjs/components/EditableTable/cellTypes/reference/getImageFieldId.js.map +0 -1
  589. package/dist/esm/components/EditableTable/cellTypes/reference/getImageFieldId.js +0 -2
  590. package/dist/esm/components/EditableTable/cellTypes/reference/getImageFieldId.js.map +0 -1
  591. package/dist/types/components/EditableTable/cellTypes/reference/getImageFieldId.d.ts +0 -3
  592. package/dist/types/components/EditableTable/cellTypes/reference/getImageFieldId.d.ts.map +0 -1
  593. package/src/components/EditableTable/cellTypes/reference/getImageFieldId.ts +0 -6
@@ -239,21 +239,45 @@ class MutationState {
239
239
  errorToast: this._retryableToast('cairo.editableTable.deleteItem.error.toast', 'Delete')
240
240
  });
241
241
  }
242
- updateItems(updatedItems, changedFieldIdsByItem) {
243
- const t = this._parent.collection.translate;
244
- if (updatedItems.length === 0) {
242
+
243
+ /** With `batchWait`, core runs a batch with the last update's `submit` and
244
+ * toast only, so an earlier update's Undo and `onKept` would be lost. */
245
+ get updatesAreBatched() {
246
+ return Boolean(this._optimisticActions.executor.batchWait);
247
+ }
248
+ updateItems(updatedItems, changedFieldIdsByItem, {
249
+ successToast,
250
+ undo
251
+ } = {}) {
252
+ // With its own toast, an empty update still runs, to show the toast for
253
+ // values that stayed local (invalid cells, unsaved rows).
254
+ if (updatedItems.length === 0 && typeof successToast !== 'string') {
245
255
  return;
246
256
  }
247
257
  const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
248
258
  this._optimisticActions.updateMany(updatedItems, {
249
259
  keepPosition: true,
250
- submit: items => this._submitUpdate(items, updatedItems, contexts),
251
- successToast: t('cairo.editableTable.updateItem.success.toast', {
252
- count: updatedItems.length
253
- }),
260
+ // With undo, core calls this when the toast closes or times out without
261
+ // Undo. Retry calls it again.
262
+ submit: items => {
263
+ undo == null || undo.onKept();
264
+ // With `batchWait`, `items` also holds the other updates of the batch.
265
+ return items.length > 0 ? this._submitUpdate(items, updatedItems, contexts) : Promise.resolve();
266
+ },
267
+ successToast: this._updateSuccessToast(successToast, updatedItems.length),
268
+ showUndoToast: undo !== undefined,
269
+ onUndo: undo == null ? void 0 : undo.onUndo,
254
270
  errorToast: this._retryableToast('cairo.editableTable.updateItem.error.toast', 'Update')
255
271
  });
256
272
  }
273
+ _updateSuccessToast(successToast, count) {
274
+ if (successToast === null) {
275
+ return undefined;
276
+ }
277
+ return successToast ?? this._parent.collection.translate('cairo.editableTable.updateItem.success.toast', {
278
+ count
279
+ });
280
+ }
257
281
 
258
282
  /** Wraps the create submit so the outcome is reported once the server answers
259
283
  * — the optimistic action itself has no completion callback. */
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","origin","bi","rowCreationStart","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_reportedCreate","successToast","errorToast","_retryableToast","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","cellValue","dropRowCellState","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updateItems","updatedItems","changedFieldIdsByItem","contexts","_updateContexts","updateMany","keepPosition","_submitUpdate","result","_submitCreate","rowCreationEnd","resultType","itemIds","error","messageKey","actionName","_err","retry","message","onClick","tryAgainClicked","text","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport type {\n RetryActionName,\n RowCreationOrigin,\n} from './EditableTableStateBIReporter';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\ntype DraftRow<T> = {\n item: T;\n afterItemKey?: string;\n origin: RowCreationOrigin;\n};\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, DraftRow<T>>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(\n afterItemKey?: string,\n origin: RowCreationOrigin = 'Card CTA',\n ): string {\n // The add-row button reports through `onAddItemClick`; context-menu\n // entries report here so each origin stays distinct.\n if (origin !== 'Card CTA') {\n this._parent.bi.rowCreationStart(origin);\n }\n\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey, origin });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n const { origin } = draft;\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._reportedCreate(origin),\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.createItem.error.toast',\n 'Create',\n ),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const origin: RowCreationOrigin = 'Row Context Menu - Duplicate';\n this._parent.bi.rowCreationStart(origin);\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._reportedCreate(origin),\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.duplicateItem.error.toast',\n 'Duplicate',\n ),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n this._parent.cellValue.dropRowCellState(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.deleteItem.error.toast',\n 'Delete',\n ),\n });\n }\n\n updateItems(updatedItems: T[], changedFieldIdsByItem?: string[][]) {\n const t = this._parent.collection.translate;\n if (updatedItems.length === 0) {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: (items) => this._submitUpdate(items, updatedItems, contexts),\n successToast: t('cairo.editableTable.updateItem.success.toast', {\n count: updatedItems.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.updateItem.error.toast',\n 'Update',\n ),\n });\n }\n\n /** Wraps the create submit so the outcome is reported once the server answers\n * — the optimistic action itself has no completion callback. */\n private _reportedCreate(origin: RowCreationOrigin) {\n return async (items: T[]) => {\n try {\n const result = await this._submitCreate(items);\n const { itemKey } = this._parent.collection;\n this._parent.bi.rowCreationEnd({\n origin,\n resultType: 'success',\n itemIds: (result ?? items).map(itemKey),\n });\n return result;\n } catch (error) {\n this._parent.bi.rowCreationEnd({ origin, resultType: 'failure' });\n throw error;\n }\n };\n }\n\n private _retryableToast(\n messageKey:\n | 'cairo.editableTable.createItem.error.toast'\n | 'cairo.editableTable.duplicateItem.error.toast'\n | 'cairo.editableTable.deleteItem.error.toast'\n | 'cairo.editableTable.updateItem.error.toast',\n actionName: RetryActionName,\n ) {\n const t = this._parent.collection.translate;\n return (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t(messageKey),\n action: {\n onClick: () => {\n this._parent.bi.tryAgainClicked(actionName);\n retry();\n },\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","origin","bi","rowCreationStart","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_reportedCreate","successToast","errorToast","_retryableToast","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","cellValue","dropRowCellState","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updatesAreBatched","Boolean","executor","batchWait","updateItems","updatedItems","changedFieldIdsByItem","undo","contexts","_updateContexts","updateMany","keepPosition","onKept","_submitUpdate","Promise","resolve","_updateSuccessToast","showUndoToast","onUndo","result","_submitCreate","rowCreationEnd","resultType","itemIds","error","messageKey","actionName","_err","retry","message","onClick","tryAgainClicked","text","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport type {\n RetryActionName,\n RowCreationOrigin,\n} from './EditableTableStateBIReporter';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport interface UpdateOptions {\n /** Missing: the \"Item updated\" toast. A string: this text instead. `null`:\n * no success toast. */\n successToast?: string | null;\n /** Adds Undo to the success toast. The server call waits until the toast\n * closes or times out. */\n undo?: {\n /** Runs when the user clicks Undo, after the rows are rolled back. */\n onUndo: () => void;\n /** Runs when the toast closes or times out without Undo. */\n onKept: () => void;\n };\n}\n\ntype DraftRow<T> = {\n item: T;\n afterItemKey?: string;\n origin: RowCreationOrigin;\n};\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, DraftRow<T>>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(\n afterItemKey?: string,\n origin: RowCreationOrigin = 'Card CTA',\n ): string {\n // The add-row button reports through `onAddItemClick`; context-menu\n // entries report here so each origin stays distinct.\n if (origin !== 'Card CTA') {\n this._parent.bi.rowCreationStart(origin);\n }\n\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey, origin });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n const { origin } = draft;\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._reportedCreate(origin),\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.createItem.error.toast',\n 'Create',\n ),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const origin: RowCreationOrigin = 'Row Context Menu - Duplicate';\n this._parent.bi.rowCreationStart(origin);\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._reportedCreate(origin),\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.duplicateItem.error.toast',\n 'Duplicate',\n ),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n this._parent.cellValue.dropRowCellState(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: this._retryableToast(\n 'cairo.editableTable.deleteItem.error.toast',\n 'Delete',\n ),\n });\n }\n\n /** With `batchWait`, core runs a batch with the last update's `submit` and\n * toast only, so an earlier update's Undo and `onKept` would be lost. */\n get updatesAreBatched(): boolean {\n return Boolean(this._optimisticActions.executor.batchWait);\n }\n\n updateItems(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n { successToast, undo }: UpdateOptions = {},\n ) {\n // With its own toast, an empty update still runs, to show the toast for\n // values that stayed local (invalid cells, unsaved rows).\n if (updatedItems.length === 0 && typeof successToast !== 'string') {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n // With undo, core calls this when the toast closes or times out without\n // Undo. Retry calls it again.\n submit: (items) => {\n undo?.onKept();\n // With `batchWait`, `items` also holds the other updates of the batch.\n return items.length > 0\n ? this._submitUpdate(items, updatedItems, contexts)\n : Promise.resolve();\n },\n successToast: this._updateSuccessToast(successToast, updatedItems.length),\n showUndoToast: undo !== undefined,\n onUndo: undo?.onUndo,\n errorToast: this._retryableToast(\n 'cairo.editableTable.updateItem.error.toast',\n 'Update',\n ),\n });\n }\n\n private _updateSuccessToast(\n successToast: UpdateOptions['successToast'],\n count: number,\n ) {\n if (successToast === null) {\n return undefined;\n }\n return (\n successToast ??\n this._parent.collection.translate(\n 'cairo.editableTable.updateItem.success.toast',\n { count },\n )\n );\n }\n\n /** Wraps the create submit so the outcome is reported once the server answers\n * — the optimistic action itself has no completion callback. */\n private _reportedCreate(origin: RowCreationOrigin) {\n return async (items: T[]) => {\n try {\n const result = await this._submitCreate(items);\n const { itemKey } = this._parent.collection;\n this._parent.bi.rowCreationEnd({\n origin,\n resultType: 'success',\n itemIds: (result ?? items).map(itemKey),\n });\n return result;\n } catch (error) {\n this._parent.bi.rowCreationEnd({ origin, resultType: 'failure' });\n throw error;\n }\n };\n }\n\n private _retryableToast(\n messageKey:\n | 'cairo.editableTable.createItem.error.toast'\n | 'cairo.editableTable.duplicateItem.error.toast'\n | 'cairo.editableTable.deleteItem.error.toast'\n | 'cairo.editableTable.updateItem.error.toast',\n actionName: RetryActionName,\n ) {\n const t = this._parent.collection.translate;\n return (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t(messageKey),\n action: {\n onClick: () => {\n this._parent.bi.tryAgainClicked(actionName);\n retry();\n },\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
@@ -163,6 +163,9 @@ class EntityPageState {
163
163
  this.setSchema(loadedSchema.schema);
164
164
  }
165
165
  (_this$bi$appLoaded = (_this$bi = this.bi).appLoaded) == null || _this$bi$appLoaded.call(_this$bi);
166
+ if (!this._isExistingEntity) {
167
+ this.bi.reportItemCreationStart();
168
+ }
166
169
  });
167
170
  return () => {
168
171
  onBeforeUnloadSubscription == null || onBeforeUnloadSubscription.remove();
@@ -222,6 +225,14 @@ class EntityPageState {
222
225
  ctaName: 'Cancel',
223
226
  additionalInfo: (_this$actionsBarConfi = this.actionsBarConfig) == null || (_this$actionsBarConfi = _this$actionsBarConfi.cancelCta) == null ? void 0 : _this$actionsBarConfi.biAdditionalInfo
224
227
  });
228
+ const creating = !this._isExistingEntity;
229
+ if (creating || this.isFormDirty) {
230
+ var _this$schema;
231
+ this.bi.reportItemDismissed({
232
+ editing: !creating,
233
+ itemId: creating ? undefined : entityItemId(this.entity, (_this$schema = this.schema) == null ? void 0 : _this$schema.idField)
234
+ });
235
+ }
225
236
  this.navigateToParent();
226
237
  }
227
238
  get areFieldsReadOnly() {
@@ -373,7 +384,9 @@ class EntityPageState {
373
384
  },
374
385
  bi
375
386
  } = this;
387
+ const creating = !this._isExistingEntity;
376
388
  submitTask.run(async () => {
389
+ var _this$schema2;
377
390
  let savedEntity;
378
391
  let submitSuccessful = false;
379
392
  await form.handleSubmit(async () => {
@@ -417,6 +430,10 @@ class EntityPageState {
417
430
  if (!submitSuccessful) {
418
431
  return;
419
432
  }
433
+ bi.reportItemSaved({
434
+ creating,
435
+ itemId: entityItemId(savedEntity ?? this.entity, (_this$schema2 = this.schema) == null ? void 0 : _this$schema2.idField)
436
+ });
420
437
  const transformedItem = savedEntity && this.transformEntityToCollectionItem ? this.transformEntityToCollectionItem(savedEntity) : savedEntity;
421
438
  this.navigateToParent(transformedItem);
422
439
  });
@@ -444,4 +461,11 @@ class EntityPageState {
444
461
  }
445
462
  }
446
463
  exports.EntityPageState = EntityPageState;
464
+ function entityItemId(entity, idField = 'id') {
465
+ if (entity == null || typeof entity !== 'object' || !(idField in entity)) {
466
+ return undefined;
467
+ }
468
+ const id = entity[idField];
469
+ return typeof id === 'string' ? id : undefined;
470
+ }
447
471
  //# sourceMappingURL=EntityPageState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_mobx","_schemaFieldsContainer","_EntityPageStateBIReporter","_events","_EntityPageDeleteActionState","_sourceSave","_itemAccess","EntityPageState","fieldsContainer","fieldsContainerOf","schemaSource","constructor","params","_defineProperty2","default","undefined","observable","set","deep","EventEmitter","fetch","onSave","_usesSourceSave","isSourceSave","saveSuccessToast","saveErrorToast","formPage","FormPageState","form","_parentPageId","parentPageId","_isNewEntity","isNewEntity","transformEntityToCollectionItem","anEntity","_parentPath","parentPath","_parentReferrer","parentReferrer","actionsBarConfig","container","deleteActionState","EntityPageDeleteActionState","deleteAction","getEntity","entity","getLoadedSchema","loadedSchema","onDeleted","action","deletedCollectionItem","handleEntityDeleted","emitDelete","events","emit","emitDeleteError","err","_routerState","routerState","_this$_routerState$cu","_entity","currentState","_chosenEntity","reportBI","createBILogger","componentType","pageType","route","window","location","pathname","bi","EntityPageStateBIReporter","entityPageState","init","makeObservable","handleSubmit","ref","setEntity","_schema","setSchema","_loadedSchema","setLoadedSchema","customColumnsState","setActionsBarConfig","holdSave","isSaveHeld","computed","isFormDirty","areFieldsReadOnly","resolvedActionsBarConfig","_withinRouter","_checkPageParams","initTask","onBeforeUnload","onBeforeUnloadSubscription","event","isMobileDevice","formState","isSubmitSuccessful","_isSubmitSuccessful","preventDefault","reportOnBeforeUnload","runOnce","_this$fieldsContainer","_this$schemaSource","_this$fieldsContainer2","_this$bi$appLoaded","_this$bi","data","Promise","all","loadSchema","status","promise","schema","appLoaded","call","remove","retryFetch","newEntity","markFieldsChanged","_this$_routerState","isFetching","flag","isDirty","_isFormDirty","val","onCancel","_this$actionsBarConfi","reportButtonClick","ctaName","additionalInfo","cancelCta","biAdditionalInfo","navigateToParent","_ref","loaded","permissions","itemPermissions","permitted","supported","getItemAccess","backend","requiresBackendWrite","_isExistingEntity","update","create","isCreateItemDisabled","disabled","_config$saveCta","config","saveCta","secondaryActions","map","item","isRouteKnown","updatedEntity","entityStringKey","navigateToParentWithState","entityObject","navigate","state","navigateTo","pageId","referrer","_showErrorToast","e","_this$saveErrorToast","_this$container$showT","_this$container","errorToast","retry","message","showTryAgain","tryAgain","showToast","type","biName","translate","code","uiType","text","onClick","reportSaveTryAgain","removeToastOnClick","_showSuccessToast","_this$saveSuccessToas","_this$container$showT2","_this$container2","_deletedEntity","hold","_saveHolds","add","delete","size","_this$resolvedActions","submitTask","isLoading","isValid","widgetsFormData","validate","_this$actionsBarConfi2","run","savedEntity","submitSuccessful","_this$actionsBarConfi3","onSaveResult","errorMonitor","captureException","setError","_this$actionsBarConfi4","transformedItem","Error","exports"],"sources":["../../../../src/state/EntityPage/EntityPageState.ts"],"sourcesContent":["import {\n FormPageState,\n ReportBI,\n WixPatternsContainer,\n ActionsBarConfig,\n isMobileDevice,\n SchemaSource,\n Schema,\n} from '@wix/bex-core';\nimport type { LoadedSchema } from '@wix/bex-core';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport type { PatternsFieldsAppContainer } from '@wix/patterns-fields/providers';\nimport { fieldsContainerOf } from '../../model/schemaFieldsContainer';\nimport { FieldValues, UseFormReturn } from 'react-hook-form';\nimport { EntityPageStateBIReporter } from './EntityPageStateBIReporter';\nimport { EventEmitter, TypedEmitter } from '@wix/bex-core/events';\nimport { WixPatternsRouterState } from '../WixPatternsRouterState';\nimport type { SidePanelsState } from '../SidePanelsState';\nimport type { CustomColumnsEntityPageState } from '../CustomColumnsEntityPageState';\nimport {\n EntityPageDeleteAction,\n EntityPageDeleteActionState,\n} from './EntityPageDeleteActionState';\nimport { isSourceSave } from './sourceSave';\nimport { getItemAccess } from '../../model/itemAccess';\n\ntype OnSaveParams<T> = {\n widgetsFormData: { [key: string]: any };\n /**\n * The entity as `fetch` loaded it, or `null` on a create route. Use it for what\n * the form does not hold but the update needs, such as the record's revision.\n */\n entity: T | null;\n};\n\ninterface EntityPageStateParamsBase<T, V extends FieldValues = FieldValues> {\n /**\n * A function that fetches the entity data.\n * @returns a promise that resolves to an object containing the entity.\n */\n fetch: () => Promise<{ entity: T | undefined }>;\n\n /**\n * A function to handle the save action.\n * @returns promise that resolves to an object that contains a 'updatedEntity' object.\n */\n onSave: (params: OnSaveParams<T>) => Promise<{ updatedEntity: T }>;\n\n /**\n * An optional object with an optional message, or it can directly get a string message.\n */\n saveSuccessToast?: { message?: string } | string;\n\n /**\n * An optional function to display an error toast message when a save operation fails.\n * @returns An object with a `message` and an `action` object. Alternatively, it can return an object with an optional `message` and a `tryAgain` flag, or a string message.\n * The previous return types are still supported but are now deprecated.\n */\n saveErrorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) =>\n | {\n message?: string;\n /**\n * @deprecated use `action` instead\n */\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\n /**\n * Enables deleting the loaded entity from the entity page. Pass `true` for a\n * schema-backed page to use the source backend, or an object to customize the\n * action and to provide a delete handler for manually wired pages.\n */\n deleteAction?: EntityPageDeleteAction<T>;\n\n /**\n * An optional function to transform the updated entity data before it is passed to the collection page.\n * @param entity the updated entity.\n * @returns an object representing the entity in the collection page.\n */\n transformEntityToCollectionItem?: (entity: T) => any;\n\n form: UseFormReturn<V>;\n /**\n * An object representing the container, possibly for dependency injection or component management.\n */\n container: WixPatternsContainer;\n\n /**\n * A string representing the ID of the parent page.\n * Must be passed if not using Patterns Router\n */\n parentPageId?: string;\n\n /**\n * A string representing the path of the parent page.\n * Must be passed if using Patterns Router\n */\n parentPath?: string;\n\n /**\n * Referrer forwarded to the parent page on back, cancel and save, so callers\n * can carry navigation context across the transition.\n *\n * Only used for parentPageId navigations; Patterns Router keeps its context\n * in router state.\n *\n * Forwarded by the BM and Giza providers. Dropped by the dashboard provider,\n * whose SDK Destination has no referrer field.\n */\n parentReferrer?: string;\n\n /**\n * An object representing the router state\n */\n routerState?: WixPatternsRouterState | null;\n\n /**\n * An optional object to override the actions bar.\n */\n actionsBarConfig?: ActionsBarConfig;\n\n /**\n * Whether the page was opened to create a new entity rather than to edit an\n * existing one. Selects the create/update permission and how a save is\n * announced to the parent page — created vs updated — so a seeded item is announced\n * as created. Pass a getter when the route can change while the page stays\n * mounted; the fields switch between create and update permissions only when\n * the getter reads MobX observables. When omitted, the announcement follows\n * whether an entity was loaded.\n */\n isNewEntity?: boolean | (() => boolean);\n\n /**\n * An optional schema source describing how to load the schema and access\n * the entity's data. When present, the page can read fields from the source\n * instead of relying only on hand-wired fetch/onSave callbacks.\n */\n schemaSource?: SchemaSource<T>;\n}\n\nexport type EntityPageStateParams<\n T,\n V extends FieldValues = FieldValues,\n> = EntityPageStateParamsBase<T, V>;\n\nexport interface EntityPageStateInterface {}\n\nexport interface EntityPageWidgetState {\n validate: () => Promise<{ isValid: boolean; values?: any }>;\n isDirty: boolean;\n}\n\nexport class EntityPageState<T, V extends FieldValues = FieldValues>\n implements EntityPageStateInterface\n{\n readonly fetch: EntityPageStateParams<T>['fetch'];\n readonly onSave: EntityPageStateParams<T, V>['onSave'];\n private readonly _usesSourceSave: boolean;\n readonly saveSuccessToast?: EntityPageStateParams<T>['saveSuccessToast'];\n readonly saveErrorToast?: EntityPageStateParams<T>['saveErrorToast'];\n readonly transformEntityToCollectionItem: (entity: T) => any;\n\n _entity: T | null = null;\n _schema: Schema | null = null;\n _loadedSchema: LoadedSchema<T> | null = null;\n private readonly _isNewEntity?: boolean | (() => boolean);\n private readonly _parentPageId?: string;\n private readonly _parentPath?: string;\n private readonly _parentReferrer?: string;\n\n actionsBarConfig: EntityPageStateParams<T>['actionsBarConfig'] = undefined;\n\n /**\n * The page's side-panel host, the way a table's lives on its toolbar.\n * Attached by the first feature that needs one, through\n * `SidePanelsState.setOnPage` — so a page with no panels neither builds nor\n * bundles the side-panel code. Everything on the page shares this host, which\n * is what keeps one panel open at a time.\n */\n panels: SidePanelsState | null = null;\n\n /** The fields card's \"Manage fields\" state, set by the card that owns it —\n * the panel is rendered by the host with no props and reads it from here,\n * as a table's panel reads `toolbar.customColumnsState`. */\n customColumnsState: CustomColumnsEntityPageState | null = null;\n\n // Shallow: a deep set would wrap the token objects, and release could not\n // find them again.\n private readonly _saveHolds = observable.set<object>([], { deep: false });\n\n readonly schemaSource?: SchemaSource<T>;\n\n /**\n * The container the page's field renderers are built with — the one the schema\n * carries, so a table on the same schema shares it. Initialized in `init()`\n * below, next to the schema load the fields also wait on; the schema-entry\n * EntityPage puts it in React context.\n */\n get fieldsContainer(): PatternsFieldsAppContainer | undefined {\n return fieldsContainerOf(this.schemaSource);\n }\n\n readonly container: WixPatternsContainer;\n readonly reportBI: ReportBI;\n readonly bi: EntityPageStateBIReporter<T, V>;\n\n _routerState: WixPatternsRouterState | null = null;\n\n readonly formPage: FormPageState<V>;\n readonly deleteActionState: EntityPageDeleteActionState<T>;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n save: () => void;\n saveError: (err: unknown) => void;\n delete: () => void;\n deleteError: (err: unknown) => void;\n }>;\n\n constructor(params: EntityPageStateParams<T, V>) {\n this.fetch = params.fetch;\n this.onSave = params.onSave;\n this._usesSourceSave = isSourceSave(params.onSave);\n this.saveSuccessToast = params.saveSuccessToast;\n this.saveErrorToast = params.saveErrorToast;\n this.formPage = new FormPageState<V>({ form: params.form });\n this._parentPageId = params.parentPageId;\n this._isNewEntity = params.isNewEntity;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem || ((anEntity: T) => anEntity);\n this._parentPath = params.parentPath;\n this._parentReferrer = params.parentReferrer;\n this.actionsBarConfig = params.actionsBarConfig;\n this.schemaSource = params.schemaSource;\n\n this.container = params.container;\n this.deleteActionState = new EntityPageDeleteActionState<T>({\n container: this.container,\n deleteAction: params.deleteAction,\n schemaSource: this.schemaSource,\n getEntity: () => this.entity,\n getLoadedSchema: () => this.loadedSchema,\n transformEntityToCollectionItem: this.transformEntityToCollectionItem,\n onDeleted: action((deletedCollectionItem) =>\n this.handleEntityDeleted(deletedCollectionItem),\n ),\n emitDelete: () => this.events.emit('delete'),\n emitDeleteError: (err) => this.events.emit('deleteError', err),\n });\n\n this._routerState = params.routerState ?? null;\n\n if (this._routerState) {\n this._entity = this._routerState.currentState?._chosenEntity?.entity;\n }\n\n this.reportBI = this.container.createBILogger({\n componentType: 'Entity page',\n pageType: 'Entity',\n route: window.location.pathname,\n });\n\n this.bi = new EntityPageStateBIReporter({\n reportBI: this.reportBI,\n entityPageState: this,\n });\n this.bi.init();\n\n makeObservable(this, {\n handleSubmit: action,\n _entity: observable.ref,\n setEntity: action,\n _schema: observable.ref,\n setSchema: action,\n _loadedSchema: observable.ref,\n setLoadedSchema: action,\n customColumnsState: observable.ref,\n actionsBarConfig: observable.ref,\n setActionsBarConfig: action,\n holdSave: action,\n isSaveHeld: computed,\n isFormDirty: computed,\n areFieldsReadOnly: computed,\n resolvedActionsBarConfig: computed,\n _withinRouter: computed,\n });\n }\n\n init() {\n this._checkPageParams();\n const {\n formPage: { initTask },\n container,\n } = this;\n const { onBeforeUnload } = container;\n\n const onBeforeUnloadSubscription = onBeforeUnload?.(\n action((event: Event) => {\n if (isMobileDevice()) {\n return;\n }\n\n const { form } = this;\n // Check both react-hook-form's state AND the explicitly set flag\n if (\n form.formState.isSubmitSuccessful ||\n this.formPage._isSubmitSuccessful ||\n !this.isFormDirty\n ) {\n return;\n }\n event.preventDefault();\n this.bi.reportOnBeforeUnload();\n }),\n );\n\n initTask.runOnce(async () => {\n // The field renderers can't translate until this resolves, so the page\n // waits on it alongside the fetch. Idempotent.\n this.fieldsContainer?.init();\n\n const [data, loadedSchema] = await Promise.all([\n this.fetch(),\n this.schemaSource?.loadSchema(),\n container.initTask.status.promise,\n this.fieldsContainer?.initTask.status.promise,\n ]);\n\n this.setEntity(data.entity ?? null);\n // A fields card can mirror a newer value while these promises settle.\n if (loadedSchema && !this.loadedSchema) {\n this.setLoadedSchema(loadedSchema);\n }\n if (loadedSchema && !this.schema) {\n this.setSchema(loadedSchema.schema);\n }\n this.bi.appLoaded?.();\n });\n\n return () => {\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n retryFetch() {\n this.formPage.retryFetch();\n }\n\n setEntity(newEntity: T | null) {\n this._entity = newEntity;\n }\n\n get entity(): T | null {\n return this._entity;\n }\n\n setSchema(schema: Schema | null) {\n this._schema = schema;\n }\n\n get schema(): Schema | null {\n return this._schema;\n }\n\n setActionsBarConfig(actionsBarConfig?: ActionsBarConfig) {\n this.actionsBarConfig = actionsBarConfig;\n }\n\n setLoadedSchema(loadedSchema: LoadedSchema<T> | null) {\n this._loadedSchema = loadedSchema;\n }\n\n get loadedSchema(): LoadedSchema<T> | null {\n return this._loadedSchema;\n }\n\n markFieldsChanged() {\n this._routerState?.markFieldsChanged();\n }\n\n get isFetching() {\n return this.formPage.isFetching;\n }\n\n get form() {\n return this.formPage.form;\n }\n\n set isSubmitSuccessful(flag: boolean) {\n this.formPage.isSubmitSuccessful = flag;\n }\n\n get isFormDirty() {\n return this.formPage.isDirty;\n }\n\n // backwards compatibility\n set _isFormDirty(val: boolean) {\n this.formPage._isFormDirty = val;\n }\n\n get _withinRouter() {\n return !!this._routerState;\n }\n\n onCancel() {\n this.bi.reportButtonClick({\n ctaName: 'Cancel',\n additionalInfo: this.actionsBarConfig?.cancelCta?.biAdditionalInfo,\n });\n this.navigateToParent();\n }\n\n get areFieldsReadOnly(): boolean {\n const loaded = this.loadedSchema;\n if (this.schemaSource && !loaded) {\n return true;\n }\n\n const permissions = (loaded?.schema ?? this.schema)?.itemPermissions;\n const { permitted, supported } = getItemAccess(\n permissions,\n loaded?.backend,\n );\n // A custom save doesn't go through the backend, so it needs no write method.\n const requiresBackendWrite = this._usesSourceSave && !!loaded;\n if (this._isExistingEntity) {\n return !permitted.update || (requiresBackendWrite && !supported.update);\n }\n\n return (\n !permitted.create ||\n (requiresBackendWrite && !supported.create) ||\n !!permissions?.isCreateItemDisabled?.().disabled\n );\n }\n\n /** `actionsBarConfig` with Save and its secondary actions disabled while the\n * fields are read-only. */\n get resolvedActionsBarConfig(): ActionsBarConfig | undefined {\n const config = this.actionsBarConfig;\n if (!this.areFieldsReadOnly) {\n return config;\n }\n\n return {\n ...config,\n saveCta: {\n ...config?.saveCta,\n disabled: true,\n secondaryActions: config?.saveCta?.secondaryActions?.map((item) => ({\n ...item,\n disabled: true,\n })),\n },\n };\n }\n\n private get _isExistingEntity(): boolean {\n const isNewEntity =\n typeof this._isNewEntity === 'function'\n ? this._isNewEntity()\n : this._isNewEntity;\n const isRouteKnown = isNewEntity !== undefined;\n return isRouteKnown ? !isNewEntity : !!this._entity;\n }\n\n navigateToParent(updatedEntity?: any) {\n const entityStringKey = this._isExistingEntity\n ? '_updatedEntity'\n : '_createdEntity';\n this.navigateToParentWithState({ [entityStringKey]: updatedEntity });\n }\n\n navigateToParentWithState(entityObject: Record<string, unknown>) {\n if (this._withinRouter) {\n this._routerState!.navigate(this._parentPath!, { state: entityObject });\n } else {\n this.container.navigateTo!({\n pageId: this._parentPageId!,\n ...(this._parentReferrer !== undefined && {\n referrer: this._parentReferrer,\n }),\n });\n }\n }\n\n _showErrorToast(err: any, e?: React.BaseSyntheticEvent) {\n const errorToast = this.saveErrorToast?.(err, {\n retry: () => this.handleSubmit(e),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-save-error-toast',\n message:\n message ??\n this.container.translate(\n err?.code === 'ERR_NETWORK'\n ? 'cairo.entityPage.saveError-offline.toast.description'\n : 'cairo.entityPage.saveError-technical.toast.description',\n ),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.bi.reportSaveTryAgain();\n this.handleSubmit(e);\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n _showSuccessToast() {\n const message =\n typeof this.saveSuccessToast === 'string'\n ? this.saveSuccessToast\n : this.saveSuccessToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-save-success-toast',\n message:\n message ?? this.container.translate('cairo.entityPage.success.toast'),\n });\n }\n\n private handleEntityDeleted(deletedCollectionItem: any) {\n this.isSubmitSuccessful = true;\n this.navigateToParentWithState({ _deletedEntity: deletedCollectionItem });\n }\n\n /**\n * Blocks `handleSubmit` until the returned release is called (idempotent).\n * For features whose form fields are not mounted yet — react-hook-form only\n * validates mounted controls, so a save in that window would skip their\n * required-field validation.\n */\n holdSave(): () => void {\n const hold = {};\n this._saveHolds.add(hold);\n return action(() => {\n this._saveHolds.delete(hold);\n });\n }\n\n get isSaveHeld(): boolean {\n return this._saveHolds.size > 0;\n }\n\n async handleSubmit(e?: React.BaseSyntheticEvent) {\n if (\n this.formPage.submitTask.status.isLoading ||\n this.isSaveHeld ||\n this.resolvedActionsBarConfig?.saveCta?.disabled\n ) {\n return;\n }\n\n this.events.emit('save');\n\n const { isValid, data: widgetsFormData } = await this.formPage.validate();\n\n if (!isValid) {\n this.bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n return;\n }\n\n const {\n form,\n formPage: { submitTask },\n bi,\n } = this;\n\n submitTask.run(async () => {\n let savedEntity: T | undefined;\n let submitSuccessful = false;\n\n await form.handleSubmit(\n async () => {\n // The permission can be revoked while the form validates.\n if (this.areFieldsReadOnly) {\n return;\n }\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: true,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n try {\n if (!this.isFetching) {\n const onSaveResult = await this.onSave({\n widgetsFormData,\n entity: this.entity,\n });\n savedEntity = onSaveResult?.updatedEntity;\n }\n this._showSuccessToast();\n submitSuccessful = true; // Mark as successful locally\n // Explicitly set isSubmitSuccessful to prevent onBeforeUnload from triggering\n this.isSubmitSuccessful = true;\n } catch (err) {\n this._showErrorToast(err, e);\n this.container.errorMonitor.captureException(err);\n this.events.emit('saveError', err);\n form.setError('root.serverError', {}); // https://react-hook-form.com/docs/useform/seterror\n }\n },\n () => {\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n }, // can be used to report validation errors\n )(e);\n\n if (!submitSuccessful) {\n return;\n }\n const transformedItem =\n savedEntity && this.transformEntityToCollectionItem\n ? this.transformEntityToCollectionItem(savedEntity)\n : savedEntity;\n this.navigateToParent(transformedItem);\n });\n await this.formPage.submitTask.status.promise;\n }\n\n get initTask() {\n return this.formPage.initTask;\n }\n\n get submitTask() {\n return this.formPage.submitTask;\n }\n\n private _checkPageParams() {\n if (this._withinRouter) {\n if (this._parentPath === undefined) {\n throw new Error('parentPath was not defined in useEntityPage');\n }\n } else {\n if (this._parentPageId === undefined) {\n throw new Error('parentPageId was not defined in useEntityPage');\n }\n\n if (!this.container.navigateTo) {\n throw new Error('navigateTo was not defined in Patterns Provider');\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_mobx","_schemaFieldsContainer","_EntityPageStateBIReporter","_events","_EntityPageDeleteActionState","_sourceSave","_itemAccess","EntityPageState","fieldsContainer","fieldsContainerOf","schemaSource","constructor","params","_defineProperty2","default","undefined","observable","set","deep","EventEmitter","fetch","onSave","_usesSourceSave","isSourceSave","saveSuccessToast","saveErrorToast","formPage","FormPageState","form","_parentPageId","parentPageId","_isNewEntity","isNewEntity","transformEntityToCollectionItem","anEntity","_parentPath","parentPath","_parentReferrer","parentReferrer","actionsBarConfig","container","deleteActionState","EntityPageDeleteActionState","deleteAction","getEntity","entity","getLoadedSchema","loadedSchema","onDeleted","action","deletedCollectionItem","handleEntityDeleted","emitDelete","events","emit","emitDeleteError","err","_routerState","routerState","_this$_routerState$cu","_entity","currentState","_chosenEntity","reportBI","createBILogger","componentType","pageType","route","window","location","pathname","bi","EntityPageStateBIReporter","entityPageState","init","makeObservable","handleSubmit","ref","setEntity","_schema","setSchema","_loadedSchema","setLoadedSchema","customColumnsState","setActionsBarConfig","holdSave","isSaveHeld","computed","isFormDirty","areFieldsReadOnly","resolvedActionsBarConfig","_withinRouter","_checkPageParams","initTask","onBeforeUnload","onBeforeUnloadSubscription","event","isMobileDevice","formState","isSubmitSuccessful","_isSubmitSuccessful","preventDefault","reportOnBeforeUnload","runOnce","_this$fieldsContainer","_this$schemaSource","_this$fieldsContainer2","_this$bi$appLoaded","_this$bi","data","Promise","all","loadSchema","status","promise","schema","appLoaded","call","_isExistingEntity","reportItemCreationStart","remove","retryFetch","newEntity","markFieldsChanged","_this$_routerState","isFetching","flag","isDirty","_isFormDirty","val","onCancel","_this$actionsBarConfi","reportButtonClick","ctaName","additionalInfo","cancelCta","biAdditionalInfo","creating","_this$schema","reportItemDismissed","editing","itemId","entityItemId","idField","navigateToParent","_ref","loaded","permissions","itemPermissions","permitted","supported","getItemAccess","backend","requiresBackendWrite","update","create","isCreateItemDisabled","disabled","_config$saveCta","config","saveCta","secondaryActions","map","item","isRouteKnown","updatedEntity","entityStringKey","navigateToParentWithState","entityObject","navigate","state","navigateTo","pageId","referrer","_showErrorToast","e","_this$saveErrorToast","_this$container$showT","_this$container","errorToast","retry","message","showTryAgain","tryAgain","showToast","type","biName","translate","code","uiType","text","onClick","reportSaveTryAgain","removeToastOnClick","_showSuccessToast","_this$saveSuccessToas","_this$container$showT2","_this$container2","_deletedEntity","hold","_saveHolds","add","delete","size","_this$resolvedActions","submitTask","isLoading","isValid","widgetsFormData","validate","_this$actionsBarConfi2","run","_this$schema2","savedEntity","submitSuccessful","_this$actionsBarConfi3","onSaveResult","errorMonitor","captureException","setError","_this$actionsBarConfi4","reportItemSaved","transformedItem","Error","exports","id"],"sources":["../../../../src/state/EntityPage/EntityPageState.ts"],"sourcesContent":["import {\n FormPageState,\n ReportBI,\n WixPatternsContainer,\n ActionsBarConfig,\n isMobileDevice,\n SchemaSource,\n Schema,\n} from '@wix/bex-core';\nimport type { LoadedSchema } from '@wix/bex-core';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport type { PatternsFieldsAppContainer } from '@wix/patterns-fields/providers';\nimport { fieldsContainerOf } from '../../model/schemaFieldsContainer';\nimport { FieldValues, UseFormReturn } from 'react-hook-form';\nimport { EntityPageStateBIReporter } from './EntityPageStateBIReporter';\nimport { EventEmitter, TypedEmitter } from '@wix/bex-core/events';\nimport { WixPatternsRouterState } from '../WixPatternsRouterState';\nimport type { SidePanelsState } from '../SidePanelsState';\nimport type { CustomColumnsEntityPageState } from '../CustomColumnsEntityPageState';\nimport {\n EntityPageDeleteAction,\n EntityPageDeleteActionState,\n} from './EntityPageDeleteActionState';\nimport { isSourceSave } from './sourceSave';\nimport { getItemAccess } from '../../model/itemAccess';\n\ntype OnSaveParams<T> = {\n widgetsFormData: { [key: string]: any };\n /**\n * The entity as `fetch` loaded it, or `null` on a create route. Use it for what\n * the form does not hold but the update needs, such as the record's revision.\n */\n entity: T | null;\n};\n\ninterface EntityPageStateParamsBase<T, V extends FieldValues = FieldValues> {\n /**\n * A function that fetches the entity data.\n * @returns a promise that resolves to an object containing the entity.\n */\n fetch: () => Promise<{ entity: T | undefined }>;\n\n /**\n * A function to handle the save action.\n * @returns promise that resolves to an object that contains a 'updatedEntity' object.\n */\n onSave: (params: OnSaveParams<T>) => Promise<{ updatedEntity: T }>;\n\n /**\n * An optional object with an optional message, or it can directly get a string message.\n */\n saveSuccessToast?: { message?: string } | string;\n\n /**\n * An optional function to display an error toast message when a save operation fails.\n * @returns An object with a `message` and an `action` object. Alternatively, it can return an object with an optional `message` and a `tryAgain` flag, or a string message.\n * The previous return types are still supported but are now deprecated.\n */\n saveErrorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) =>\n | {\n message?: string;\n /**\n * @deprecated use `action` instead\n */\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\n /**\n * Enables deleting the loaded entity from the entity page. Pass `true` for a\n * schema-backed page to use the source backend, or an object to customize the\n * action and to provide a delete handler for manually wired pages.\n */\n deleteAction?: EntityPageDeleteAction<T>;\n\n /**\n * An optional function to transform the updated entity data before it is passed to the collection page.\n * @param entity the updated entity.\n * @returns an object representing the entity in the collection page.\n */\n transformEntityToCollectionItem?: (entity: T) => any;\n\n form: UseFormReturn<V>;\n /**\n * An object representing the container, possibly for dependency injection or component management.\n */\n container: WixPatternsContainer;\n\n /**\n * A string representing the ID of the parent page.\n * Must be passed if not using Patterns Router\n */\n parentPageId?: string;\n\n /**\n * A string representing the path of the parent page.\n * Must be passed if using Patterns Router\n */\n parentPath?: string;\n\n /**\n * Referrer forwarded to the parent page on back, cancel and save, so callers\n * can carry navigation context across the transition.\n *\n * Only used for parentPageId navigations; Patterns Router keeps its context\n * in router state.\n *\n * Forwarded by the BM and Giza providers. Dropped by the dashboard provider,\n * whose SDK Destination has no referrer field.\n */\n parentReferrer?: string;\n\n /**\n * An object representing the router state\n */\n routerState?: WixPatternsRouterState | null;\n\n /**\n * An optional object to override the actions bar.\n */\n actionsBarConfig?: ActionsBarConfig;\n\n /**\n * Whether the page was opened to create a new entity rather than to edit an\n * existing one. Selects the create/update permission and how a save is\n * announced to the parent page — created vs updated — so a seeded item is announced\n * as created. Pass a getter when the route can change while the page stays\n * mounted; the fields switch between create and update permissions only when\n * the getter reads MobX observables. When omitted, the announcement follows\n * whether an entity was loaded.\n */\n isNewEntity?: boolean | (() => boolean);\n\n /**\n * An optional schema source describing how to load the schema and access\n * the entity's data. When present, the page can read fields from the source\n * instead of relying only on hand-wired fetch/onSave callbacks.\n */\n schemaSource?: SchemaSource<T>;\n}\n\nexport type EntityPageStateParams<\n T,\n V extends FieldValues = FieldValues,\n> = EntityPageStateParamsBase<T, V>;\n\nexport interface EntityPageStateInterface {}\n\nexport interface EntityPageWidgetState {\n validate: () => Promise<{ isValid: boolean; values?: any }>;\n isDirty: boolean;\n}\n\nexport class EntityPageState<T, V extends FieldValues = FieldValues>\n implements EntityPageStateInterface\n{\n readonly fetch: EntityPageStateParams<T>['fetch'];\n readonly onSave: EntityPageStateParams<T, V>['onSave'];\n private readonly _usesSourceSave: boolean;\n readonly saveSuccessToast?: EntityPageStateParams<T>['saveSuccessToast'];\n readonly saveErrorToast?: EntityPageStateParams<T>['saveErrorToast'];\n readonly transformEntityToCollectionItem: (entity: T) => any;\n\n _entity: T | null = null;\n _schema: Schema | null = null;\n _loadedSchema: LoadedSchema<T> | null = null;\n private readonly _isNewEntity?: boolean | (() => boolean);\n private readonly _parentPageId?: string;\n private readonly _parentPath?: string;\n private readonly _parentReferrer?: string;\n\n actionsBarConfig: EntityPageStateParams<T>['actionsBarConfig'] = undefined;\n\n /**\n * The page's side-panel host, the way a table's lives on its toolbar.\n * Attached by the first feature that needs one, through\n * `SidePanelsState.setOnPage` — so a page with no panels neither builds nor\n * bundles the side-panel code. Everything on the page shares this host, which\n * is what keeps one panel open at a time.\n */\n panels: SidePanelsState | null = null;\n\n /** The fields card's \"Manage fields\" state, set by the card that owns it —\n * the panel is rendered by the host with no props and reads it from here,\n * as a table's panel reads `toolbar.customColumnsState`. */\n customColumnsState: CustomColumnsEntityPageState | null = null;\n\n // Shallow: a deep set would wrap the token objects, and release could not\n // find them again.\n private readonly _saveHolds = observable.set<object>([], { deep: false });\n\n readonly schemaSource?: SchemaSource<T>;\n\n /**\n * The container the page's field renderers are built with — the one the schema\n * carries, so a table on the same schema shares it. Initialized in `init()`\n * below, next to the schema load the fields also wait on; the schema-entry\n * EntityPage puts it in React context.\n */\n get fieldsContainer(): PatternsFieldsAppContainer | undefined {\n return fieldsContainerOf(this.schemaSource);\n }\n\n readonly container: WixPatternsContainer;\n readonly reportBI: ReportBI;\n readonly bi: EntityPageStateBIReporter<T, V>;\n\n _routerState: WixPatternsRouterState | null = null;\n\n readonly formPage: FormPageState<V>;\n readonly deleteActionState: EntityPageDeleteActionState<T>;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n save: () => void;\n saveError: (err: unknown) => void;\n delete: () => void;\n deleteError: (err: unknown) => void;\n }>;\n\n constructor(params: EntityPageStateParams<T, V>) {\n this.fetch = params.fetch;\n this.onSave = params.onSave;\n this._usesSourceSave = isSourceSave(params.onSave);\n this.saveSuccessToast = params.saveSuccessToast;\n this.saveErrorToast = params.saveErrorToast;\n this.formPage = new FormPageState<V>({ form: params.form });\n this._parentPageId = params.parentPageId;\n this._isNewEntity = params.isNewEntity;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem || ((anEntity: T) => anEntity);\n this._parentPath = params.parentPath;\n this._parentReferrer = params.parentReferrer;\n this.actionsBarConfig = params.actionsBarConfig;\n this.schemaSource = params.schemaSource;\n\n this.container = params.container;\n this.deleteActionState = new EntityPageDeleteActionState<T>({\n container: this.container,\n deleteAction: params.deleteAction,\n schemaSource: this.schemaSource,\n getEntity: () => this.entity,\n getLoadedSchema: () => this.loadedSchema,\n transformEntityToCollectionItem: this.transformEntityToCollectionItem,\n onDeleted: action((deletedCollectionItem) =>\n this.handleEntityDeleted(deletedCollectionItem),\n ),\n emitDelete: () => this.events.emit('delete'),\n emitDeleteError: (err) => this.events.emit('deleteError', err),\n });\n\n this._routerState = params.routerState ?? null;\n\n if (this._routerState) {\n this._entity = this._routerState.currentState?._chosenEntity?.entity;\n }\n\n this.reportBI = this.container.createBILogger({\n componentType: 'Entity page',\n pageType: 'Entity',\n route: window.location.pathname,\n });\n\n this.bi = new EntityPageStateBIReporter({\n reportBI: this.reportBI,\n entityPageState: this,\n });\n this.bi.init();\n\n makeObservable(this, {\n handleSubmit: action,\n _entity: observable.ref,\n setEntity: action,\n _schema: observable.ref,\n setSchema: action,\n _loadedSchema: observable.ref,\n setLoadedSchema: action,\n customColumnsState: observable.ref,\n actionsBarConfig: observable.ref,\n setActionsBarConfig: action,\n holdSave: action,\n isSaveHeld: computed,\n isFormDirty: computed,\n areFieldsReadOnly: computed,\n resolvedActionsBarConfig: computed,\n _withinRouter: computed,\n });\n }\n\n init() {\n this._checkPageParams();\n const {\n formPage: { initTask },\n container,\n } = this;\n const { onBeforeUnload } = container;\n\n const onBeforeUnloadSubscription = onBeforeUnload?.(\n action((event: Event) => {\n if (isMobileDevice()) {\n return;\n }\n\n const { form } = this;\n // Check both react-hook-form's state AND the explicitly set flag\n if (\n form.formState.isSubmitSuccessful ||\n this.formPage._isSubmitSuccessful ||\n !this.isFormDirty\n ) {\n return;\n }\n event.preventDefault();\n this.bi.reportOnBeforeUnload();\n }),\n );\n\n initTask.runOnce(async () => {\n // The field renderers can't translate until this resolves, so the page\n // waits on it alongside the fetch. Idempotent.\n this.fieldsContainer?.init();\n\n const [data, loadedSchema] = await Promise.all([\n this.fetch(),\n this.schemaSource?.loadSchema(),\n container.initTask.status.promise,\n this.fieldsContainer?.initTask.status.promise,\n ]);\n\n this.setEntity(data.entity ?? null);\n // A fields card can mirror a newer value while these promises settle.\n if (loadedSchema && !this.loadedSchema) {\n this.setLoadedSchema(loadedSchema);\n }\n if (loadedSchema && !this.schema) {\n this.setSchema(loadedSchema.schema);\n }\n this.bi.appLoaded?.();\n if (!this._isExistingEntity) {\n this.bi.reportItemCreationStart();\n }\n });\n\n return () => {\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n retryFetch() {\n this.formPage.retryFetch();\n }\n\n setEntity(newEntity: T | null) {\n this._entity = newEntity;\n }\n\n get entity(): T | null {\n return this._entity;\n }\n\n setSchema(schema: Schema | null) {\n this._schema = schema;\n }\n\n get schema(): Schema | null {\n return this._schema;\n }\n\n setActionsBarConfig(actionsBarConfig?: ActionsBarConfig) {\n this.actionsBarConfig = actionsBarConfig;\n }\n\n setLoadedSchema(loadedSchema: LoadedSchema<T> | null) {\n this._loadedSchema = loadedSchema;\n }\n\n get loadedSchema(): LoadedSchema<T> | null {\n return this._loadedSchema;\n }\n\n markFieldsChanged() {\n this._routerState?.markFieldsChanged();\n }\n\n get isFetching() {\n return this.formPage.isFetching;\n }\n\n get form() {\n return this.formPage.form;\n }\n\n set isSubmitSuccessful(flag: boolean) {\n this.formPage.isSubmitSuccessful = flag;\n }\n\n get isFormDirty() {\n return this.formPage.isDirty;\n }\n\n // backwards compatibility\n set _isFormDirty(val: boolean) {\n this.formPage._isFormDirty = val;\n }\n\n get _withinRouter() {\n return !!this._routerState;\n }\n\n onCancel() {\n this.bi.reportButtonClick({\n ctaName: 'Cancel',\n additionalInfo: this.actionsBarConfig?.cancelCta?.biAdditionalInfo,\n });\n const creating = !this._isExistingEntity;\n if (creating || this.isFormDirty) {\n this.bi.reportItemDismissed({\n editing: !creating,\n itemId: creating\n ? undefined\n : entityItemId(this.entity, this.schema?.idField),\n });\n }\n this.navigateToParent();\n }\n\n get areFieldsReadOnly(): boolean {\n const loaded = this.loadedSchema;\n if (this.schemaSource && !loaded) {\n return true;\n }\n\n const permissions = (loaded?.schema ?? this.schema)?.itemPermissions;\n const { permitted, supported } = getItemAccess(\n permissions,\n loaded?.backend,\n );\n // A custom save doesn't go through the backend, so it needs no write method.\n const requiresBackendWrite = this._usesSourceSave && !!loaded;\n if (this._isExistingEntity) {\n return !permitted.update || (requiresBackendWrite && !supported.update);\n }\n\n return (\n !permitted.create ||\n (requiresBackendWrite && !supported.create) ||\n !!permissions?.isCreateItemDisabled?.().disabled\n );\n }\n\n /** `actionsBarConfig` with Save and its secondary actions disabled while the\n * fields are read-only. */\n get resolvedActionsBarConfig(): ActionsBarConfig | undefined {\n const config = this.actionsBarConfig;\n if (!this.areFieldsReadOnly) {\n return config;\n }\n\n return {\n ...config,\n saveCta: {\n ...config?.saveCta,\n disabled: true,\n secondaryActions: config?.saveCta?.secondaryActions?.map((item) => ({\n ...item,\n disabled: true,\n })),\n },\n };\n }\n\n private get _isExistingEntity(): boolean {\n const isNewEntity =\n typeof this._isNewEntity === 'function'\n ? this._isNewEntity()\n : this._isNewEntity;\n const isRouteKnown = isNewEntity !== undefined;\n return isRouteKnown ? !isNewEntity : !!this._entity;\n }\n\n navigateToParent(updatedEntity?: any) {\n const entityStringKey = this._isExistingEntity\n ? '_updatedEntity'\n : '_createdEntity';\n this.navigateToParentWithState({ [entityStringKey]: updatedEntity });\n }\n\n navigateToParentWithState(entityObject: Record<string, unknown>) {\n if (this._withinRouter) {\n this._routerState!.navigate(this._parentPath!, { state: entityObject });\n } else {\n this.container.navigateTo!({\n pageId: this._parentPageId!,\n ...(this._parentReferrer !== undefined && {\n referrer: this._parentReferrer,\n }),\n });\n }\n }\n\n _showErrorToast(err: any, e?: React.BaseSyntheticEvent) {\n const errorToast = this.saveErrorToast?.(err, {\n retry: () => this.handleSubmit(e),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-save-error-toast',\n message:\n message ??\n this.container.translate(\n err?.code === 'ERR_NETWORK'\n ? 'cairo.entityPage.saveError-offline.toast.description'\n : 'cairo.entityPage.saveError-technical.toast.description',\n ),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.bi.reportSaveTryAgain();\n this.handleSubmit(e);\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n _showSuccessToast() {\n const message =\n typeof this.saveSuccessToast === 'string'\n ? this.saveSuccessToast\n : this.saveSuccessToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-save-success-toast',\n message:\n message ?? this.container.translate('cairo.entityPage.success.toast'),\n });\n }\n\n private handleEntityDeleted(deletedCollectionItem: any) {\n this.isSubmitSuccessful = true;\n this.navigateToParentWithState({ _deletedEntity: deletedCollectionItem });\n }\n\n /**\n * Blocks `handleSubmit` until the returned release is called (idempotent).\n * For features whose form fields are not mounted yet — react-hook-form only\n * validates mounted controls, so a save in that window would skip their\n * required-field validation.\n */\n holdSave(): () => void {\n const hold = {};\n this._saveHolds.add(hold);\n return action(() => {\n this._saveHolds.delete(hold);\n });\n }\n\n get isSaveHeld(): boolean {\n return this._saveHolds.size > 0;\n }\n\n async handleSubmit(e?: React.BaseSyntheticEvent) {\n if (\n this.formPage.submitTask.status.isLoading ||\n this.isSaveHeld ||\n this.resolvedActionsBarConfig?.saveCta?.disabled\n ) {\n return;\n }\n\n this.events.emit('save');\n\n const { isValid, data: widgetsFormData } = await this.formPage.validate();\n\n if (!isValid) {\n this.bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n return;\n }\n\n const {\n form,\n formPage: { submitTask },\n bi,\n } = this;\n\n const creating = !this._isExistingEntity;\n submitTask.run(async () => {\n let savedEntity: T | undefined;\n let submitSuccessful = false;\n\n await form.handleSubmit(\n async () => {\n // The permission can be revoked while the form validates.\n if (this.areFieldsReadOnly) {\n return;\n }\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: true,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n try {\n if (!this.isFetching) {\n const onSaveResult = await this.onSave({\n widgetsFormData,\n entity: this.entity,\n });\n savedEntity = onSaveResult?.updatedEntity;\n }\n this._showSuccessToast();\n submitSuccessful = true; // Mark as successful locally\n // Explicitly set isSubmitSuccessful to prevent onBeforeUnload from triggering\n this.isSubmitSuccessful = true;\n } catch (err) {\n this._showErrorToast(err, e);\n this.container.errorMonitor.captureException(err);\n this.events.emit('saveError', err);\n form.setError('root.serverError', {}); // https://react-hook-form.com/docs/useform/seterror\n }\n },\n () => {\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n }, // can be used to report validation errors\n )(e);\n\n if (!submitSuccessful) {\n return;\n }\n bi.reportItemSaved({\n creating,\n itemId: entityItemId(savedEntity ?? this.entity, this.schema?.idField),\n });\n const transformedItem =\n savedEntity && this.transformEntityToCollectionItem\n ? this.transformEntityToCollectionItem(savedEntity)\n : savedEntity;\n this.navigateToParent(transformedItem);\n });\n await this.formPage.submitTask.status.promise;\n }\n\n get initTask() {\n return this.formPage.initTask;\n }\n\n get submitTask() {\n return this.formPage.submitTask;\n }\n\n private _checkPageParams() {\n if (this._withinRouter) {\n if (this._parentPath === undefined) {\n throw new Error('parentPath was not defined in useEntityPage');\n }\n } else {\n if (this._parentPageId === undefined) {\n throw new Error('parentPageId was not defined in useEntityPage');\n }\n\n if (!this.container.navigateTo) {\n throw new Error('navigateTo was not defined in Patterns Provider');\n }\n }\n }\n}\n\nfunction entityItemId(entity: unknown, idField = 'id'): string | undefined {\n if (entity == null || typeof entity !== 'object' || !(idField in entity)) {\n return undefined;\n }\n const id = (entity as Record<string, unknown>)[idField];\n return typeof id === 'string' ? id : undefined;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,59 @@ class EntityPageStateBIReporter {
35
35
  disposers.forEach(disposer => disposer());
36
36
  };
37
37
  }
38
+ reportItemCreationStart() {
39
+ const event = (0, _bexCore.withoutDefaults)(_bi.newItemCreationStart)({
40
+ origin: 'Entity page',
41
+ ...this.tableParams()
42
+ });
43
+ this.reportBI({
44
+ ...event,
45
+ params: {
46
+ ...event.params,
47
+ componentType: 'Entity page'
48
+ }
49
+ });
50
+ }
51
+ reportItemSaved({
52
+ creating,
53
+ itemId
54
+ }) {
55
+ const event = (0, _bexCore.withoutDefaults)(_bi.newItemCreationEnd)({
56
+ origin: 'Entity page',
57
+ resultType: creating ? 'success' : 'edit success',
58
+ itemId,
59
+ ...this.tableParams()
60
+ });
61
+ this.reportBI({
62
+ ...event,
63
+ params: {
64
+ ...event.params,
65
+ componentType: 'Entity page'
66
+ }
67
+ });
68
+ }
69
+ reportItemDismissed({
70
+ editing,
71
+ itemId
72
+ }) {
73
+ const event = (0, _bexCore.withoutDefaults)(_bi.newItemCreationEnd)({
74
+ origin: 'Entity page',
75
+ resultType: editing ? 'edit dismissed' : 'dismissed',
76
+ itemId,
77
+ ...this.tableParams()
78
+ });
79
+ this.reportBI({
80
+ ...event,
81
+ params: {
82
+ ...event.params,
83
+ componentType: 'Entity page'
84
+ }
85
+ });
86
+ }
87
+ tableParams() {
88
+ var _this$entityPageState;
89
+ return ((_this$entityPageState = this.entityPageState.schemaSource) == null ? void 0 : _this$entityPageState.schemaParams()) ?? {};
90
+ }
38
91
  reportButtonClick({
39
92
  ctaName,
40
93
  isValid,
@@ -66,8 +119,8 @@ class EntityPageStateBIReporter {
66
119
  this.reportBI((0, _bexCore.withoutDefaults)(_bi.cairoPageDiscardChangesBeforeSave)({
67
120
  numOfFields: fields.length,
68
121
  numOfActions: fields.reduce((prev, key) => {
69
- var _this$entityPageState;
70
- return prev + +((_this$entityPageState = this.entityPageState.form.getFieldState(key)) == null ? void 0 : _this$entityPageState.isDirty);
122
+ var _this$entityPageState2;
123
+ return prev + +((_this$entityPageState2 = this.entityPageState.form.getFieldState(key)) == null ? void 0 : _this$entityPageState2.isDirty);
71
124
  }, 0)
72
125
  }));
73
126
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_mobx","_bi","EntityPageStateBIReporter","constructor","params","_defineProperty2","default","performance","now","entityPageState","reportBI","_getErrorType","e","isNetworkError","code","init","events","disposers","addEventListener","action","once","err","reportSaveError","startTime","appLoaded","reportOnLoadStart","forEach","disposer","reportButtonClick","ctaName","isValid","additionalInfo","withoutDefaults","cairoPageCtaClicked","ctaType","location","reportSaveTryAgain","cairoTryAgainClicked","actionName","loaction","cairoApiRequestDataLoadEnd","errorType","duration","reportOnBeforeUnload","values","form","getValues","fields","Object","keys","cairoPageDiscardChangesBeforeSave","numOfFields","length","numOfActions","reduce","prev","key","_this$entityPageState","getFieldState","isDirty","loadStart","_commonDynamicBiParams","reportOnLoadEnd","Math","round","endTime","loadEnd","loadingTime","url","window","href","route","pathname","routerUsage","_withinRouter","exports"],"sources":["../../../../src/state/EntityPage/EntityPageStateBIReporter.ts"],"sourcesContent":["import { addEventListener, ReportBI, withoutDefaults } from '@wix/bex-core'; // withoutDefaults\nimport { EntityPageState } from './EntityPageState';\nimport { FieldValues } from 'react-hook-form';\nimport { action } from 'mobx';\nimport {\n cairoTryAgainClicked,\n cairoApiRequestDataLoadEnd,\n cairoPageCtaClicked,\n cairoPageDiscardChangesBeforeSave,\n loadStart,\n loadEnd,\n} from '@wix/bex-core/bi';\n\nexport interface EntityPageStateBIReporterParams<\n T,\n V extends FieldValues = FieldValues,\n> {\n reportBI: ReportBI;\n entityPageState: EntityPageState<T, V>;\n}\n\nexport class EntityPageStateBIReporter<T, V extends FieldValues> {\n readonly entityPageState: EntityPageState<T, V>;\n readonly reportBI: ReportBI;\n readonly startTime: number = performance.now();\n appLoaded?: () => void;\n\n constructor(params: EntityPageStateBIReporterParams<T, V>) {\n this.entityPageState = params.entityPageState;\n this.reportBI = params.reportBI;\n }\n\n _getErrorType(e: any) {\n const isNetworkError = e?.code === 'ERR_NETWORK';\n return isNetworkError ? 'Network error' : 'Technical issue';\n }\n\n init() {\n const { events } = this.entityPageState;\n const disposers = [\n addEventListener(\n events,\n 'save',\n action(() => {\n events.once('saveError', (err) => {\n this.reportSaveError(err, this.startTime);\n });\n }),\n ),\n (this.appLoaded = this.reportOnLoadStart(this.startTime)),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n reportButtonClick({\n ctaName,\n isValid,\n additionalInfo,\n }: {\n ctaName: string;\n isValid?: boolean;\n additionalInfo?: string;\n }) {\n this.reportBI(\n withoutDefaults(cairoPageCtaClicked)({\n ctaName,\n ctaType: 'Main',\n location: 'Entity page header',\n isValid,\n additionalInfo,\n }),\n );\n }\n\n reportSaveTryAgain() {\n this.reportBI(\n withoutDefaults(cairoTryAgainClicked)({\n actionName: 'Saving Entity',\n loaction: 'toast',\n }),\n );\n }\n\n reportSaveError(e: any, startTime: number) {\n this.reportBI(\n withoutDefaults(cairoApiRequestDataLoadEnd)({\n errorType: this._getErrorType(e),\n duration: performance.now() - startTime,\n }),\n );\n }\n\n reportOnBeforeUnload() {\n const values = this.entityPageState.form.getValues();\n const fields = Object.keys(values);\n this.reportBI(\n withoutDefaults(cairoPageDiscardChangesBeforeSave)({\n numOfFields: fields.length,\n numOfActions: fields.reduce(\n (prev, key: any) =>\n prev + +this.entityPageState.form.getFieldState(key)?.isDirty,\n 0,\n ),\n }),\n );\n }\n\n reportOnLoadStart(startTime: number) {\n this.reportBI(\n withoutDefaults(loadStart)({\n ...this._commonDynamicBiParams(),\n }),\n );\n return () => {\n this.reportOnLoadEnd(Math.round(performance.now() - startTime));\n };\n }\n\n reportOnLoadEnd(endTime: number) {\n this.reportBI(\n withoutDefaults(loadEnd)({\n ...this._commonDynamicBiParams(),\n loadingTime: endTime,\n }),\n );\n }\n\n _commonDynamicBiParams() {\n return {\n url: window.location.href,\n route: window.location.pathname,\n routerUsage: this.entityPageState._withinRouter,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_mobx","_bi","EntityPageStateBIReporter","constructor","params","_defineProperty2","default","performance","now","entityPageState","reportBI","_getErrorType","e","isNetworkError","code","init","events","disposers","addEventListener","action","once","err","reportSaveError","startTime","appLoaded","reportOnLoadStart","forEach","disposer","reportItemCreationStart","event","withoutDefaults","newItemCreationStart","origin","tableParams","componentType","reportItemSaved","creating","itemId","newItemCreationEnd","resultType","reportItemDismissed","editing","_this$entityPageState","schemaSource","schemaParams","reportButtonClick","ctaName","isValid","additionalInfo","cairoPageCtaClicked","ctaType","location","reportSaveTryAgain","cairoTryAgainClicked","actionName","loaction","cairoApiRequestDataLoadEnd","errorType","duration","reportOnBeforeUnload","values","form","getValues","fields","Object","keys","cairoPageDiscardChangesBeforeSave","numOfFields","length","numOfActions","reduce","prev","key","_this$entityPageState2","getFieldState","isDirty","loadStart","_commonDynamicBiParams","reportOnLoadEnd","Math","round","endTime","loadEnd","loadingTime","url","window","href","route","pathname","routerUsage","_withinRouter","exports"],"sources":["../../../../src/state/EntityPage/EntityPageStateBIReporter.ts"],"sourcesContent":["import { addEventListener, ReportBI, withoutDefaults } from '@wix/bex-core'; // withoutDefaults\nimport { EntityPageState } from './EntityPageState';\nimport { FieldValues } from 'react-hook-form';\nimport { action } from 'mobx';\nimport {\n cairoTryAgainClicked,\n cairoApiRequestDataLoadEnd,\n cairoPageCtaClicked,\n cairoPageDiscardChangesBeforeSave,\n newItemCreationStart,\n newItemCreationEnd,\n loadStart,\n loadEnd,\n} from '@wix/bex-core/bi';\n\nexport interface EntityPageStateBIReporterParams<\n T,\n V extends FieldValues = FieldValues,\n> {\n reportBI: ReportBI;\n entityPageState: EntityPageState<T, V>;\n}\n\nexport class EntityPageStateBIReporter<T, V extends FieldValues> {\n readonly entityPageState: EntityPageState<T, V>;\n readonly reportBI: ReportBI;\n readonly startTime: number = performance.now();\n appLoaded?: () => void;\n\n constructor(params: EntityPageStateBIReporterParams<T, V>) {\n this.entityPageState = params.entityPageState;\n this.reportBI = params.reportBI;\n }\n\n _getErrorType(e: any) {\n const isNetworkError = e?.code === 'ERR_NETWORK';\n return isNetworkError ? 'Network error' : 'Technical issue';\n }\n\n init() {\n const { events } = this.entityPageState;\n const disposers = [\n addEventListener(\n events,\n 'save',\n action(() => {\n events.once('saveError', (err) => {\n this.reportSaveError(err, this.startTime);\n });\n }),\n ),\n (this.appLoaded = this.reportOnLoadStart(this.startTime)),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n reportItemCreationStart() {\n const event = withoutDefaults(newItemCreationStart)({\n origin: 'Entity page',\n ...this.tableParams(),\n });\n this.reportBI({\n ...event,\n params: { ...event.params, componentType: 'Entity page' },\n });\n }\n\n reportItemSaved({\n creating,\n itemId,\n }: {\n creating: boolean;\n itemId?: string;\n }) {\n const event = withoutDefaults(newItemCreationEnd)({\n origin: 'Entity page',\n resultType: creating ? 'success' : 'edit success',\n itemId,\n ...this.tableParams(),\n });\n this.reportBI({\n ...event,\n params: { ...event.params, componentType: 'Entity page' },\n });\n }\n\n reportItemDismissed({\n editing,\n itemId,\n }: {\n editing: boolean;\n itemId?: string;\n }) {\n const event = withoutDefaults(newItemCreationEnd)({\n origin: 'Entity page',\n resultType: editing ? 'edit dismissed' : 'dismissed',\n itemId,\n ...this.tableParams(),\n });\n this.reportBI({\n ...event,\n params: { ...event.params, componentType: 'Entity page' },\n });\n }\n\n private tableParams() {\n return this.entityPageState.schemaSource?.schemaParams() ?? {};\n }\n\n reportButtonClick({\n ctaName,\n isValid,\n additionalInfo,\n }: {\n ctaName: string;\n isValid?: boolean;\n additionalInfo?: string;\n }) {\n this.reportBI(\n withoutDefaults(cairoPageCtaClicked)({\n ctaName,\n ctaType: 'Main',\n location: 'Entity page header',\n isValid,\n additionalInfo,\n }),\n );\n }\n\n reportSaveTryAgain() {\n this.reportBI(\n withoutDefaults(cairoTryAgainClicked)({\n actionName: 'Saving Entity',\n loaction: 'toast',\n }),\n );\n }\n\n reportSaveError(e: any, startTime: number) {\n this.reportBI(\n withoutDefaults(cairoApiRequestDataLoadEnd)({\n errorType: this._getErrorType(e),\n duration: performance.now() - startTime,\n }),\n );\n }\n\n reportOnBeforeUnload() {\n const values = this.entityPageState.form.getValues();\n const fields = Object.keys(values);\n this.reportBI(\n withoutDefaults(cairoPageDiscardChangesBeforeSave)({\n numOfFields: fields.length,\n numOfActions: fields.reduce(\n (prev, key: any) =>\n prev + +this.entityPageState.form.getFieldState(key)?.isDirty,\n 0,\n ),\n }),\n );\n }\n\n reportOnLoadStart(startTime: number) {\n this.reportBI(\n withoutDefaults(loadStart)({\n ...this._commonDynamicBiParams(),\n }),\n );\n return () => {\n this.reportOnLoadEnd(Math.round(performance.now() - startTime));\n };\n }\n\n reportOnLoadEnd(endTime: number) {\n this.reportBI(\n withoutDefaults(loadEnd)({\n ...this._commonDynamicBiParams(),\n loadingTime: endTime,\n }),\n );\n }\n\n _commonDynamicBiParams() {\n return {\n url: window.location.href,\n route: window.location.pathname,\n routerUsage: this.entityPageState._withinRouter,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "FormPageHeader1618937696";
8
+ var _namespace_ = "FormPageHeader679506871";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "FormPageHeader1618937696__root"
15
+ "root": "FormPageHeader679506871__root"
16
16
  };
17
17
  var keyframes = exports.keyframes = {};
18
18
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader1618937696\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader1618937696__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader679506871\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader679506871__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,yBAAyB;AAC3C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAA+B,CAAC;AACtD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -186,7 +186,7 @@ class NestedTableNestedModeState {
186
186
  return initTask.status.isError;
187
187
  }
188
188
  get showLoadingState() {
189
- return this.initTask.status.isLoading;
189
+ return this.initTask.status.isIdle || this.initTask.status.isLoading;
190
190
  }
191
191
  get errorStatus() {
192
192
  const {