@wix/patterns 1.459.0 → 1.461.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 (719) hide show
  1. package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
  2. package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
  3. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
  4. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
  5. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
  6. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  7. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
  8. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
  9. package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
  10. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  11. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  12. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  13. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  14. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  15. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  16. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  18. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  19. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  20. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  21. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  22. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  23. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  24. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  25. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  26. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  27. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js +33 -29
  28. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  29. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdown.js +6 -5
  30. package/dist/cjs/components/CustomFieldModal/CustomFieldTypeDropdown.js.map +1 -1
  31. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  32. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  33. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  34. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/EditableTable.uni.driver.js +17 -0
  36. package/dist/cjs/components/EditableTable/EditableTable.uni.driver.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js +7 -11
  38. package/dist/cjs/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  40. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  42. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js +3 -3
  46. package/dist/cjs/components/EditableTable/cellTypes/array/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/mediaGallery/index.js +4 -4
  66. package/dist/cjs/components/EditableTable/cellTypes/mediaGallery/index.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  68. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
  72. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  74. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/richContent/index.js +1 -1
  76. package/dist/cjs/components/EditableTable/cellTypes/richContent/index.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/richText/index.js +1 -1
  78. package/dist/cjs/components/EditableTable/cellTypes/richText/index.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  80. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  82. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  83. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  84. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  85. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  86. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  87. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  88. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  89. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  90. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  91. package/dist/cjs/components/EditableTable/useClipboardHandler.js +0 -3
  92. package/dist/cjs/components/EditableTable/useClipboardHandler.js.map +1 -1
  93. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  94. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  95. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  96. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  97. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  98. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  99. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  100. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  101. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  102. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  103. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  104. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  105. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  106. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  107. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  108. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  109. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  110. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  111. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  112. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  113. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  114. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  115. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  116. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  117. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  118. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  119. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  120. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  121. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  122. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  123. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  124. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  125. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  126. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  127. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  128. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  129. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  130. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  131. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  132. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  133. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  134. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  135. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +4 -4
  136. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  137. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  138. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  139. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  140. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  141. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  142. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  143. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  144. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  145. package/dist/cjs/components/common.st.css.js +4 -4
  146. package/dist/cjs/components/common.st.css.js.map +1 -1
  147. package/dist/cjs/schema/entityPageFieldManagement.js +3 -1
  148. package/dist/cjs/schema/entityPageFieldManagement.js.map +1 -1
  149. package/dist/cjs/state/CollectionFieldsSourceState.js +3 -1
  150. package/dist/cjs/state/CollectionFieldsSourceState.js.map +1 -1
  151. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  152. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  153. package/dist/cjs/state/CustomFields/CustomFieldsPanelState.js +3 -0
  154. package/dist/cjs/state/CustomFields/CustomFieldsPanelState.js.map +1 -1
  155. package/dist/cjs/state/EditableTable/CellValueState.js +1 -2
  156. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  157. package/dist/cjs/state/EditableTable/ClipboardState.js +10 -14
  158. package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
  159. package/dist/cjs/state/EditableTable/utils.js +3 -0
  160. package/dist/cjs/state/EditableTable/utils.js.map +1 -1
  161. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  162. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  163. package/dist/cjs/state/ManageFieldsSource.js.map +1 -1
  164. package/dist/cjs/state/ToolbarCollectionState.js +6 -2
  165. package/dist/cjs/state/ToolbarCollectionState.js.map +1 -1
  166. package/dist/cjs/styles.global.css +2 -2
  167. package/dist/cjs/version.js +1 -1
  168. package/dist/cjs/version.js.map +1 -1
  169. package/dist/docs/ActionCellProps.md +6 -21
  170. package/dist/docs/AutoCompleteFilter.md +6 -128
  171. package/dist/docs/BulkActionModalRenderProp.md +6 -9
  172. package/dist/docs/CollectionEmptyState/2-ctas.tsx +67 -0
  173. package/dist/docs/CollectionEmptyState/demo.tsx +61 -0
  174. package/dist/docs/CollectionEmptyState/passive-empty-state.tsx +59 -0
  175. package/dist/docs/CollectionEmptyState.md +9 -207
  176. package/dist/docs/CollectionNoResultsState.md +6 -11
  177. package/dist/docs/CollectionOptimisticActions/create-many.tsx +110 -0
  178. package/dist/docs/CollectionOptimisticActions/create-one.tsx +104 -0
  179. package/dist/docs/CollectionOptimisticActions/delete-all.tsx +132 -0
  180. package/dist/docs/CollectionOptimisticActions/delete-many.tsx +104 -0
  181. package/dist/docs/CollectionOptimisticActions/delete-one.tsx +94 -0
  182. package/dist/docs/CollectionOptimisticActions/update-all.tsx +142 -0
  183. package/dist/docs/CollectionOptimisticActions/update-many.tsx +119 -0
  184. package/dist/docs/CollectionOptimisticActions/update-one.tsx +108 -0
  185. package/dist/docs/CollectionOptimisticActions.md +14 -939
  186. package/dist/docs/CollectionPage.md +6 -19
  187. package/dist/docs/CollectionPremiumEmptyState.md +6 -14
  188. package/dist/docs/CollectionSearch/default.tsx +57 -0
  189. package/dist/docs/CollectionSearch/max-length.tsx +59 -0
  190. package/dist/docs/CollectionSearch/placeholder.tsx +59 -0
  191. package/dist/docs/CollectionSearch/search-highlighting.tsx +60 -0
  192. package/dist/docs/CollectionSearch.md +10 -247
  193. package/dist/docs/ComputedQuery.md +6 -15
  194. package/dist/docs/CustomColumns/add-a-tooltip.tsx +85 -0
  195. package/dist/docs/CustomColumns/basic.tsx +78 -0
  196. package/dist/docs/CustomColumns/exclude-columns.tsx +79 -0
  197. package/dist/docs/CustomColumns/freeze-column-reorder.tsx +111 -0
  198. package/dist/docs/CustomColumns/get-visible-columns.tsx +92 -0
  199. package/dist/docs/CustomColumns/hide-specific-columns-by-default.tsx +79 -0
  200. package/dist/docs/CustomColumns/load-only-selected-columns.tsx +85 -0
  201. package/dist/docs/CustomColumns/lock-columns.tsx +80 -0
  202. package/dist/docs/CustomColumns/reorder-columns.tsx +84 -0
  203. package/dist/docs/CustomColumns.md +9 -791
  204. package/dist/docs/CustomFieldType/add-field-modal.tsx +206 -0
  205. package/dist/docs/CustomFieldType/editable-cell.tsx +206 -0
  206. package/dist/docs/CustomFieldType/entity-page-form.tsx +133 -0
  207. package/dist/docs/CustomFieldType/table-cell-and-filter.tsx +165 -0
  208. package/dist/docs/CustomFieldType.md +4 -718
  209. package/dist/docs/CustomFieldsWidget/basic.tsx +53 -0
  210. package/dist/docs/CustomFieldsWidget/controllable-state.tsx +78 -0
  211. package/dist/docs/CustomFieldsWidget/empty-state.tsx +20 -0
  212. package/dist/docs/CustomFieldsWidget/inline-theme.tsx +54 -0
  213. package/dist/docs/CustomFieldsWidget/responsive.tsx +44 -0
  214. package/dist/docs/CustomFieldsWidget/with-tpa-fields.tsx +57 -0
  215. package/dist/docs/CustomFieldsWidget/without-entity-page.tsx +42 -0
  216. package/dist/docs/CustomFieldsWidget.md +7 -362
  217. package/dist/docs/DateRangeFilter.Components.md +6 -71
  218. package/dist/docs/EntityPage/2-columns.tsx +72 -0
  219. package/dist/docs/EntityPage/basic.tsx +72 -0
  220. package/dist/docs/EntityPage/delete-action.tsx +77 -0
  221. package/dist/docs/EntityPage/delete-error-handling.tsx +65 -0
  222. package/dist/docs/EntityPage/demo.tsx +212 -0
  223. package/dist/docs/EntityPage/error-on-fetch.tsx +68 -0
  224. package/dist/docs/EntityPage/error-on-save.tsx +59 -0
  225. package/dist/docs/EntityPage/input-initialization-with-controller.tsx +96 -0
  226. package/dist/docs/EntityPage/input-initialization-with-usecontroller.tsx +99 -0
  227. package/dist/docs/EntityPage/loading.tsx +107 -0
  228. package/dist/docs/EntityPage/overriding-save-button-text.tsx +75 -0
  229. package/dist/docs/EntityPage.md +17 -1045
  230. package/dist/docs/ExportTo/cta-is-out-of-the-table.tsx +157 -0
  231. package/dist/docs/ExportTo/export-all-table.tsx +144 -0
  232. package/dist/docs/ExportTo/export-filtered-table.tsx +148 -0
  233. package/dist/docs/ExportTo/export-table-with-selection-bulk-selection.tsx +203 -0
  234. package/dist/docs/ExportTo.md +10 -674
  235. package/dist/docs/Filter Overview/interactive-example.tsx +211 -0
  236. package/dist/docs/Filter Overview.md +1 -213
  237. package/dist/docs/FilterProps.md +6 -13
  238. package/dist/docs/Grid/card-with-a-cta-that-opens-a-modal.tsx +103 -0
  239. package/dist/docs/Grid/card-with-a-cta-that-opens-a-popup.tsx +91 -0
  240. package/dist/docs/Grid/demo.tsx +73 -0
  241. package/dist/docs/Grid/grid-sections.tsx +62 -0
  242. package/dist/docs/Grid/grid-with-a-reduced-width.tsx +72 -0
  243. package/dist/docs/Grid/use-the-preset-prop.tsx +55 -0
  244. package/dist/docs/Grid.md +12 -509
  245. package/dist/docs/GridFolders.md +6 -45
  246. package/dist/docs/GridFoldersState.md +6 -3
  247. package/dist/docs/GridState.md +6 -5
  248. package/dist/docs/ImportButton/backup-error-handling.tsx +80 -0
  249. package/dist/docs/ImportButton/cms-import.tsx +38 -0
  250. package/dist/docs/ImportButton/create-new-field.tsx +40 -0
  251. package/dist/docs/ImportButton/platformized-import-fields-inline.tsx +65 -0
  252. package/dist/docs/ImportButton/platformized-import-from-a-source.tsx +50 -0
  253. package/dist/docs/ImportButton/required-fields.tsx +65 -0
  254. package/dist/docs/ImportButton/update-or-skip-by-id.tsx +40 -0
  255. package/dist/docs/ImportButton.md +7 -392
  256. package/dist/docs/Indeterminate/all-indeterminate.tsx +127 -0
  257. package/dist/docs/Indeterminate/items-indeterminate-status.tsx +126 -0
  258. package/dist/docs/Indeterminate.md +2 -257
  259. package/dist/docs/Internal Scroll/full-width-section.tsx +96 -0
  260. package/dist/docs/Internal Scroll/narrow-side-section.tsx +82 -0
  261. package/dist/docs/Internal Scroll.md +2 -182
  262. package/dist/docs/More Actions/collection-page-2.tsx +98 -0
  263. package/dist/docs/More Actions/collection-page.tsx +97 -0
  264. package/dist/docs/More Actions/explore-related-apps.tsx +129 -0
  265. package/dist/docs/More Actions/featured-more-actions-custom-position.tsx +116 -0
  266. package/dist/docs/More Actions/featured-more-actions-opt-out.tsx +86 -0
  267. package/dist/docs/More Actions/featured-more-actions.tsx +82 -0
  268. package/dist/docs/More Actions/integrate-with-extension.tsx +100 -0
  269. package/dist/docs/More Actions/more-actions-in-the-toolbar.tsx +96 -0
  270. package/dist/docs/More Actions/more-actions-with-a-divider.tsx +115 -0
  271. package/dist/docs/More Actions.md +9 -937
  272. package/dist/docs/MoreActionsItem.md +6 -16
  273. package/dist/docs/MultiAutoInlineCheckboxFilter.md +6 -879
  274. package/dist/docs/MultiBulkActionToolbar/basic-secondary-action.tsx +177 -0
  275. package/dist/docs/MultiBulkActionToolbar/bulk-action.tsx +169 -0
  276. package/dist/docs/MultiBulkActionToolbar/extend-menu-items.tsx +174 -0
  277. package/dist/docs/MultiBulkActionToolbar/maximum-selection.tsx +168 -0
  278. package/dist/docs/MultiBulkActionToolbar/popover-menu.tsx +123 -0
  279. package/dist/docs/MultiBulkActionToolbar/primary-secondary-actions-with-a-divider.tsx +218 -0
  280. package/dist/docs/MultiBulkActionToolbar.md +12 -1048
  281. package/dist/docs/MultiInlineCheckboxFilter.md +6 -878
  282. package/dist/docs/MultiLevelSorting/basic-multi-level-sorting.tsx +93 -0
  283. package/dist/docs/MultiLevelSorting/multi-level-sorting-with-custom-sort-order.tsx +100 -0
  284. package/dist/docs/MultiLevelSorting/multi-level-sorting-with-defined-sort-directions.tsx +96 -0
  285. package/dist/docs/MultiLevelSorting.md +9 -301
  286. package/dist/docs/MultiSelectCheckboxFilter.md +6 -133
  287. package/dist/docs/MultiSelectCollectionFilter.md +6 -138
  288. package/dist/docs/NestedTable/drag-and-drop.tsx +107 -0
  289. package/dist/docs/NestedTable/filters.tsx +192 -0
  290. package/dist/docs/NestedTable/flat-mode-search.tsx +92 -0
  291. package/dist/docs/NestedTable/node-api-usage.tsx +188 -0
  292. package/dist/docs/NestedTable/single-entity.tsx +85 -0
  293. package/dist/docs/NestedTable/various-entities.tsx +138 -0
  294. package/dist/docs/NestedTable.md +6 -814
  295. package/dist/docs/NumberRangeFilter.md +6 -13
  296. package/dist/docs/OperatorFilterPicker.md +6 -13
  297. package/dist/docs/PatternsReactRoute.md +6 -7
  298. package/dist/docs/PatternsReactRouter.md +9 -0
  299. package/dist/docs/PickerModal/multi-select.tsx +97 -0
  300. package/dist/docs/PickerModal/pre-selected-item.tsx +120 -0
  301. package/dist/docs/PickerModal/search-override.tsx +99 -0
  302. package/dist/docs/PickerModal/single-selection.tsx +98 -0
  303. package/dist/docs/PickerModal/with-filter-dropdown.tsx +139 -0
  304. package/dist/docs/PickerModal.md +11 -605
  305. package/dist/docs/PickerStandalone/basic.tsx +49 -0
  306. package/dist/docs/PickerStandalone/createnew.tsx +65 -0
  307. package/dist/docs/PickerStandalone/custom-empty-state.tsx +33 -0
  308. package/dist/docs/PickerStandalone/custom-items.tsx +78 -0
  309. package/dist/docs/PickerStandalone.md +4 -233
  310. package/dist/docs/PrimaryActionButton.md +6 -71
  311. package/dist/docs/PrimaryActions.md +6 -14
  312. package/dist/docs/PrimaryPageButton.md +6 -69
  313. package/dist/docs/RadioGroupFilter.md +6 -19
  314. package/dist/docs/SecondaryActions.md +6 -14
  315. package/dist/docs/SettingsPage/2-columns.tsx +70 -0
  316. package/dist/docs/SettingsPage/basic.tsx +66 -0
  317. package/dist/docs/SettingsPage/error-on-fetch.tsx +65 -0
  318. package/dist/docs/SettingsPage/error-on-save.tsx +59 -0
  319. package/dist/docs/SettingsPage/input-initialization-with-controller.tsx +89 -0
  320. package/dist/docs/SettingsPage/input-initialization-with-usecontroller.tsx +92 -0
  321. package/dist/docs/SettingsPage/loading.tsx +99 -0
  322. package/dist/docs/SettingsPage.md +13 -574
  323. package/dist/docs/SingleSelectFilter/custom-render-items.tsx +57 -0
  324. package/dist/docs/SingleSelectFilter/empty-state.tsx +33 -0
  325. package/dist/docs/SingleSelectFilter/sections.tsx +69 -0
  326. package/dist/docs/SingleSelectFilter/server-data.tsx +53 -0
  327. package/dist/docs/SingleSelectFilter/static-data.tsx +25 -0
  328. package/dist/docs/SingleSelectFilter.md +11 -374
  329. package/dist/docs/Sortable Columns/basic-sortable-column.tsx +90 -0
  330. package/dist/docs/Sortable Columns/custom-sort-order.tsx +94 -0
  331. package/dist/docs/Sortable Columns.md +2 -188
  332. package/dist/docs/Suggestions/carousel-customization.tsx +27 -0
  333. package/dist/docs/Suggestions/carousel-vs-container-layout.tsx +40 -0
  334. package/dist/docs/Suggestions/custom-card-rendering.tsx +99 -0
  335. package/dist/docs/Suggestions/with-transform-function.tsx +56 -0
  336. package/dist/docs/Suggestions.md +4 -230
  337. package/dist/docs/SummaryBar/error.tsx +75 -0
  338. package/dist/docs/SummaryBar/loading-with-error.tsx +96 -0
  339. package/dist/docs/SummaryBar/loading-with-success.tsx +105 -0
  340. package/dist/docs/SummaryBar/loading.tsx +73 -0
  341. package/dist/docs/SummaryBar/success.tsx +73 -0
  342. package/dist/docs/SummaryBar.md +11 -437
  343. package/dist/docs/Table/basic-table.tsx +74 -0
  344. package/dist/docs/Table/cursor-pagination.tsx +61 -0
  345. package/dist/docs/Table/fetch-total-async.tsx +83 -0
  346. package/dist/docs/Table/filters.tsx +152 -0
  347. package/dist/docs/Table/header.tsx +85 -0
  348. package/dist/docs/Table/horizontal-scroll.tsx +90 -0
  349. package/dist/docs/Table/table-disabled-rows.tsx +99 -0
  350. package/dist/docs/Table/using-ambassador.tsx +72 -0
  351. package/dist/docs/Table/using-with-external-data-source.tsx +79 -0
  352. package/dist/docs/Table/virtual.tsx +77 -0
  353. package/dist/docs/Table Sections/demo.tsx +96 -0
  354. package/dist/docs/Table Sections/with-badge.tsx +107 -0
  355. package/dist/docs/Table Sections/with-collapse.tsx +104 -0
  356. package/dist/docs/Table Sections/with-summary.tsx +118 -0
  357. package/dist/docs/Table Sections.md +4 -433
  358. package/dist/docs/Table.md +16 -961
  359. package/dist/docs/TableColumn.md +6 -21
  360. package/dist/docs/TableDragAndDrop/save-order-mode.tsx +85 -0
  361. package/dist/docs/TableDragAndDrop/specific-filters.tsx +135 -0
  362. package/dist/docs/TableDragAndDrop/specific-tabs.tsx +117 -0
  363. package/dist/docs/TableDragAndDrop/table.tsx +83 -0
  364. package/dist/docs/TableDragAndDrop.md +4 -428
  365. package/dist/docs/TableFolders/demo.tsx +101 -0
  366. package/dist/docs/TableFolders/table-folders.tsx +101 -0
  367. package/dist/docs/TableFolders/with-tags.tsx +124 -0
  368. package/dist/docs/TableFolders.md +9 -391
  369. package/dist/docs/TableFoldersState.md +6 -5
  370. package/dist/docs/TableGridSwitch/basic-table-grid-switch.tsx +91 -0
  371. package/dist/docs/TableGridSwitch/custom-columns.tsx +94 -0
  372. package/dist/docs/TableGridSwitch.md +8 -255
  373. package/dist/docs/TableGridSwitchFolders/demo.tsx +103 -0
  374. package/dist/docs/TableGridSwitchFolders/tablegridswitchfolders.tsx +103 -0
  375. package/dist/docs/TableGridSwitchFolders/with-tags.tsx +124 -0
  376. package/dist/docs/TableGridSwitchFolders.md +3 -336
  377. package/dist/docs/TableGridSwitchState.md +6 -6
  378. package/dist/docs/TableState.md +6 -7
  379. package/dist/docs/TableTopNotification/base.tsx +92 -0
  380. package/dist/docs/TableTopNotification/nested-table.tsx +114 -0
  381. package/dist/docs/TableTopNotification.md +8 -235
  382. package/dist/docs/TabsFilter/basic-tabs.tsx +96 -0
  383. package/dist/docs/TabsFilter/disabled-tabs.tsx +100 -0
  384. package/dist/docs/TabsFilter/tabs-with-a-basic-counter.tsx +149 -0
  385. package/dist/docs/TabsFilter/tabs-with-a-counter-badge.tsx +153 -0
  386. package/dist/docs/TabsFilter.md +10 -515
  387. package/dist/docs/Tags/basic.tsx +90 -0
  388. package/dist/docs/Tags/custom-config-for-tags-column.tsx +95 -0
  389. package/dist/docs/Tags/customized-filter-position.tsx +121 -0
  390. package/dist/docs/Tags/customized-tags-column-position.tsx +94 -0
  391. package/dist/docs/Tags/on-table-with-folders.tsx +124 -0
  392. package/dist/docs/Tags.md +5 -534
  393. package/dist/docs/ToolbarCollectionState.md +1 -1
  394. package/dist/docs/ToolbarFilters/2-filters-with-a-title.tsx +162 -0
  395. package/dist/docs/ToolbarFilters/2-filters-without-a-title.tsx +158 -0
  396. package/dist/docs/ToolbarFilters/add-filter-presets-for-future-dates.tsx +108 -0
  397. package/dist/docs/ToolbarFilters/apply-changes.tsx +167 -0
  398. package/dist/docs/ToolbarFilters/custom-label-for-tags.tsx +167 -0
  399. package/dist/docs/ToolbarFilters/customize-filter-display-tags.tsx +163 -0
  400. package/dist/docs/ToolbarFilters/mini-toolbar-with-filters.tsx +121 -0
  401. package/dist/docs/ToolbarFilters/mini-toolbar.tsx +80 -0
  402. package/dist/docs/ToolbarFilters/more-than-2-filters.tsx +164 -0
  403. package/dist/docs/ToolbarFilters/postpone-collection-filter-initial-fetch.tsx +158 -0
  404. package/dist/docs/ToolbarFilters.md +17 -1466
  405. package/dist/docs/ToolbarSecondaryActions/grouped-actions-with-dividers.tsx +91 -0
  406. package/dist/docs/ToolbarSecondaryActions/mixed-buttons-and-dropdown-menus.tsx +80 -0
  407. package/dist/docs/ToolbarSecondaryActions/multiple-actions-with-dropdown-menus.tsx +88 -0
  408. package/dist/docs/ToolbarSecondaryActions/multiple-secondary-action-buttons.tsx +73 -0
  409. package/dist/docs/ToolbarSecondaryActions.md +4 -340
  410. package/dist/docs/ToolbarTitle/title-and-count.tsx +60 -0
  411. package/dist/docs/ToolbarTitle/title-count-and-the-collection-s-item-limit.tsx +60 -0
  412. package/dist/docs/ToolbarTitle/title-subtitle-and-learn-more.tsx +68 -0
  413. package/dist/docs/ToolbarTitle/title.tsx +60 -0
  414. package/dist/docs/ToolbarTitle.md +4 -256
  415. package/dist/docs/Views/basic-view-that-can-be-chosen.tsx +142 -0
  416. package/dist/docs/Views/basic-view.tsx +134 -0
  417. package/dist/docs/Views/view-with-selected-columns.tsx +142 -0
  418. package/dist/docs/Views/views-separated-by-category-in-the-dropdown.tsx +209 -0
  419. package/dist/docs/Views.md +4 -635
  420. package/dist/docs/WidgetsFormProvider.md +9 -0
  421. package/dist/docs/WixPatternsBMProvider.md +9 -0
  422. package/dist/docs/WixPatternsBaseProvider.md +6 -3
  423. package/dist/docs/WixPatternsEssentialsProvider.md +9 -0
  424. package/dist/docs/WixPatternsGizaProvider.md +9 -0
  425. package/dist/docs/WixPatternsProvider.md +9 -0
  426. package/dist/docs/arrayFilter.md +6 -12
  427. package/dist/docs/customFilter.md +6 -19
  428. package/dist/docs/dateRangeFilter.Factories.md +6 -13
  429. package/dist/docs/deleteSecondaryAction.md +6 -13
  430. package/dist/docs/idNameArrayFilter.md +6 -12
  431. package/dist/docs/index.json +164 -90
  432. package/dist/docs/operatorFilter.md +6 -13
  433. package/dist/docs/stringFilter.md +6 -4
  434. package/dist/docs/stringsArrayFilter.md +6 -12
  435. package/dist/docs/useCreateCollection.md +6 -19
  436. package/dist/docs/useEntityPage.md +6 -13
  437. package/dist/docs/useFilterCollection.md +6 -13
  438. package/dist/docs/useGridCollection.md +6 -19
  439. package/dist/docs/useGridFolders.md +6 -4
  440. package/dist/docs/useOptimisticActions/custom-error-handling.tsx +178 -0
  441. package/dist/docs/useOptimisticActions/default-behaviour.tsx +155 -0
  442. package/dist/docs/useOptimisticActions/error-handling-and-retries.tsx +175 -0
  443. package/dist/docs/useOptimisticActions/items-orders.tsx +165 -0
  444. package/dist/docs/useOptimisticActions/revision-handling.tsx +109 -0
  445. package/dist/docs/useOptimisticActions/success-toast-with-undo.tsx +164 -0
  446. package/dist/docs/useOptimisticActions/update-with-query.tsx +195 -0
  447. package/dist/docs/useOptimisticActions.md +13 -1164
  448. package/dist/docs/usePatternsNavigate.md +11 -0
  449. package/dist/docs/usePickerModal.md +6 -16
  450. package/dist/docs/useStaticListFilterCollection.md +6 -4
  451. package/dist/docs/useTableCollection.md +6 -19
  452. package/dist/docs/useTableFolders.md +6 -4
  453. package/dist/docs/useTableGridSwitchCollection.md +6 -19
  454. package/dist/dts-bundle/index.json +1 -1
  455. package/dist/dts-bundle/types/EntityPageStateParams.d.ts +13 -0
  456. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  457. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  458. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  459. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  460. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
  461. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  462. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  463. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  464. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  465. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  466. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  467. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  468. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  469. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  470. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  471. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  472. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js +5 -4
  473. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  474. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js +2 -2
  475. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js.map +1 -1
  476. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  477. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  478. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  479. package/dist/esm/components/EditableTable/EditableTable.uni.driver.js +14 -0
  480. package/dist/esm/components/EditableTable/EditableTable.uni.driver.js.map +1 -1
  481. package/dist/esm/components/EditableTable/EditableTableContextMenu.js +0 -4
  482. package/dist/esm/components/EditableTable/EditableTableContextMenu.js.map +1 -1
  483. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  484. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  485. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  486. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  487. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js +2 -2
  488. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js.map +1 -1
  489. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  490. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  491. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  492. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  493. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  494. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  495. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  496. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  497. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  498. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  499. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  500. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  501. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  502. package/dist/esm/components/EditableTable/cellTypes/mediaGallery/index.js +3 -2
  503. package/dist/esm/components/EditableTable/cellTypes/mediaGallery/index.js.map +1 -1
  504. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  505. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  506. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  507. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
  508. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  509. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  510. package/dist/esm/components/EditableTable/cellTypes/richContent/index.js +1 -1
  511. package/dist/esm/components/EditableTable/cellTypes/richContent/index.js.map +1 -1
  512. package/dist/esm/components/EditableTable/cellTypes/richText/index.js +1 -1
  513. package/dist/esm/components/EditableTable/cellTypes/richText/index.js.map +1 -1
  514. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  515. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  516. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  517. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  518. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  519. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  520. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  521. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  522. package/dist/esm/components/EditableTable/useClipboardHandler.js +0 -3
  523. package/dist/esm/components/EditableTable/useClipboardHandler.js.map +1 -1
  524. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  525. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  526. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  527. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  528. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  529. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  530. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  531. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  532. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  533. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  534. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  535. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  536. package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
  537. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  538. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  539. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  540. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  541. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  542. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  543. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  544. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  545. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  546. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  547. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  548. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  549. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  550. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  551. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  552. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  553. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  554. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  555. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  556. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  557. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  558. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  559. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  560. package/dist/esm/components/common.st.css.js +2 -2
  561. package/dist/esm/components/common.st.css.js.map +1 -1
  562. package/dist/esm/schema/entityPageFieldManagement.js +2 -0
  563. package/dist/esm/schema/entityPageFieldManagement.js.map +1 -1
  564. package/dist/esm/state/CollectionFieldsSourceState.js +2 -0
  565. package/dist/esm/state/CollectionFieldsSourceState.js.map +1 -1
  566. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  567. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  568. package/dist/esm/state/CustomFields/CustomFieldsPanelState.js +4 -0
  569. package/dist/esm/state/CustomFields/CustomFieldsPanelState.js.map +1 -1
  570. package/dist/esm/state/EditableTable/CellValueState.js +5 -2
  571. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  572. package/dist/esm/state/EditableTable/ClipboardState.js +12 -16
  573. package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
  574. package/dist/esm/state/EditableTable/utils.js +3 -0
  575. package/dist/esm/state/EditableTable/utils.js.map +1 -1
  576. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  577. package/dist/esm/state/ToolbarCollectionState.js +6 -2
  578. package/dist/esm/state/ToolbarCollectionState.js.map +1 -1
  579. package/dist/esm/styles.global.css +2 -2
  580. package/dist/esm/version.js +1 -1
  581. package/dist/types/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.d.ts.map +1 -1
  582. package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
  583. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  584. package/dist/types/components/CustomFieldModal/CustomFieldForm.d.ts.map +1 -1
  585. package/dist/types/components/CustomFieldModal/CustomFieldTypeDropdown.d.ts.map +1 -1
  586. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  587. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts +2 -0
  588. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts.map +1 -1
  589. package/dist/types/components/EditableTable/EditableTableContextMenu.d.ts.map +1 -1
  590. package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
  591. package/dist/types/components/EditableTable/cellTypes/array/Edit.st.css.d.ts.map +1 -1
  592. package/dist/types/components/EditableTable/cellTypes/color/Edit.st.css.d.ts.map +1 -1
  593. package/dist/types/components/EditableTable/cellTypes/date/Edit.st.css.d.ts.map +1 -1
  594. package/dist/types/components/EditableTable/cellTypes/datetime/Edit.st.css.d.ts.map +1 -1
  595. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
  596. package/dist/types/components/EditableTable/cellTypes/mediaGallery/index.d.ts.map +1 -1
  597. package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
  598. package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts.map +1 -1
  599. package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
  600. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  601. package/dist/types/components/EditableTable/useClipboardHandler.d.ts.map +1 -1
  602. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  603. package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
  604. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  605. package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
  606. package/dist/types/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.d.ts.map +1 -1
  607. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  608. package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
  609. package/dist/types/components/ScrollableContent/ScrollableContent.st.css.d.ts.map +1 -1
  610. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  611. package/dist/types/components/ToolbarItemBox/ToolbarItemBox.st.css.d.ts.map +1 -1
  612. package/dist/types/components/common.st.css.d.ts.map +1 -1
  613. package/dist/types/schema/entityPageFieldManagement.d.ts.map +1 -1
  614. package/dist/types/state/CollectionFieldsSourceState.d.ts +2 -6
  615. package/dist/types/state/CollectionFieldsSourceState.d.ts.map +1 -1
  616. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  617. package/dist/types/state/CustomFields/CustomFieldsPanelState.d.ts +2 -4
  618. package/dist/types/state/CustomFields/CustomFieldsPanelState.d.ts.map +1 -1
  619. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  620. package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
  621. package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
  622. package/dist/types/state/EditableTable/utils.d.ts.map +1 -1
  623. package/dist/types/state/ManageFieldsSource.d.ts +2 -6
  624. package/dist/types/state/ManageFieldsSource.d.ts.map +1 -1
  625. package/dist/types/state/ToolbarCollectionState.d.ts +2 -4
  626. package/dist/types/state/ToolbarCollectionState.d.ts.map +1 -1
  627. package/dist/types/testkit/jsdom.d.ts +1 -0
  628. package/dist/types/testkit/jsdom.d.ts.map +1 -1
  629. package/dist/types/testkit/playwright.d.ts +1 -0
  630. package/dist/types/testkit/playwright.d.ts.map +1 -1
  631. package/dist/types/testkit/puppeteer.d.ts +1 -0
  632. package/dist/types/testkit/puppeteer.d.ts.map +1 -1
  633. package/dist/types/version.d.ts +1 -1
  634. package/package.json +7 -7
  635. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  636. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  637. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  638. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  639. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  640. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  641. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  642. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  643. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  644. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  645. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  646. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  647. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  648. package/src/components/CustomFieldModal/CustomFieldForm.tsx +11 -3
  649. package/src/components/CustomFieldModal/CustomFieldTypeDropdown.tsx +3 -1
  650. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  651. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  652. package/src/components/EditableTable/EditableTable.uni.driver.ts +18 -0
  653. package/src/components/EditableTable/EditableTableContextMenu.tsx +0 -4
  654. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  655. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  656. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  657. package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
  658. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  659. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  660. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  661. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  662. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  663. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  664. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  665. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  666. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  667. package/src/components/EditableTable/cellTypes/mediaGallery/index.tsx +6 -2
  668. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  669. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  670. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
  671. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  672. package/src/components/EditableTable/cellTypes/richContent/index.tsx +1 -1
  673. package/src/components/EditableTable/cellTypes/richText/index.tsx +1 -1
  674. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  675. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  676. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  677. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  678. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  679. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  680. package/src/components/EditableTable/useClipboardHandler.ts +0 -4
  681. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  682. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  683. package/src/components/Fade/Fade.st.css.ts +2 -2
  684. package/src/components/Heading/Heading.st.css.ts +2 -2
  685. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  686. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  687. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  688. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  689. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  690. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  691. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  692. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  693. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  694. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  695. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  696. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  697. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  698. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  699. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  700. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  701. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  702. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  703. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  704. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  705. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  706. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  707. package/src/components/common.st.css.ts +2 -2
  708. package/src/schema/entityPageFieldManagement.ts +2 -0
  709. package/src/state/CollectionFieldsSourceState.ts +4 -5
  710. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  711. package/src/state/CustomFields/CustomFieldsPanelState.ts +9 -5
  712. package/src/state/EditableTable/CellValueState.ts +5 -2
  713. package/src/state/EditableTable/ClipboardState.ts +14 -21
  714. package/src/state/EditableTable/utils.ts +4 -0
  715. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  716. package/src/state/ManageFieldsSource.ts +2 -6
  717. package/src/state/ToolbarCollectionState.ts +14 -2
  718. package/src/styles.global.css +2 -2
  719. package/src/version.ts +1 -1
@@ -83,1206 +83,55 @@ import { useOptimisticActions } from '@wix/patterns';
83
83
 
84
84
  Default behaviour of create, update and delete.
85
85
 
86
- ```tsx
87
- import { Avatar } from '@wix/design-system';
88
- import React from 'react';
89
- import { CollectionPage } from '@wix/patterns/page';
90
- import {
91
- Table,
92
- OffsetQuery,
93
- PrimaryActionButton,
94
- useTableCollection,
95
- useOptimisticActions,
96
- } from '@wix/patterns';
97
- import { Delete } from '@wix/wix-ui-icons-common';
98
- import { contacts } from '@wix/crm';
99
-
100
- function DefaultBehaviour() {
101
- const state = useTableCollection<contacts.Contact>({
102
- queryName: 'contacts-DefaultBehaviour',
103
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
104
- fetchData: (query: OffsetQuery) => {
105
- const { limit, offset, search, filters } = query;
106
-
107
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
108
-
109
- if (search) {
110
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
111
- }
112
-
113
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
114
- items,
115
- total,
116
- }));
117
- },
118
- fetchErrorMessage: () => 'Error fetching contacts',
119
- });
120
-
121
- const collection = state.collection;
122
-
123
- const optimisticActions = useOptimisticActions(collection);
124
-
125
- const _createContact = () => {
126
- const newContact = {
127
- id: new window.Date().toString(),
128
- info: {
129
- name: {
130
- first: 'New',
131
- last: 'Contact',
132
- },
133
- },
134
- };
135
-
136
- optimisticActions.createOne(newContact, {
137
- submit: async (_contacts) => {
138
- const response = (await Promise.all(
139
- _contacts.map((contact) =>
140
- contacts.createContact(contact.info as contacts.ContactInfo),
141
- ),
142
- )) as contacts.CreateContactResponse[];
143
-
144
- return response.map(({ contact }) => contact as contacts.Contact);
145
- },
146
- });
147
- };
148
-
149
- const _updateContact = (contact: contacts.Contact) => {
150
- const updatedContact = {
151
- ...contact,
152
- info: {
153
- ...contact.info,
154
- jobTitle: 'Ultimate',
155
- },
156
- };
157
-
158
- optimisticActions.updateOne(updatedContact, {
159
- submit: async (_contacts) => {
160
- const response = (await Promise.all(
161
- _contacts.map((contact) =>
162
- contacts.updateContact(
163
- contact._id as string,
164
- contact.info as contacts.ContactInfo,
165
- contact.revision as number,
166
- ),
167
- ),
168
- )) as contacts.UpdateContactResponse[];
169
-
170
- return response.map(({ contact }) => contact as contacts.Contact);
171
- },
172
- });
173
- };
174
-
175
- const _deleteContact = (contact: contacts.Contact) => {
176
- optimisticActions.deleteOne(contact, {
177
- submit: async (_contacts) =>
178
- Promise.all(
179
- _contacts.map((contact) =>
180
- contacts.deleteContact(contact._id as string),
181
- ),
182
- ),
183
- });
184
- };
185
-
186
- return (
187
- <CollectionPage height="400px">
188
- <CollectionPage.Header title={{ text: 'Contacts' }} />
189
- <CollectionPage.Content>
190
- <Table
191
- state={collection}
192
- primaryActionButton={<PrimaryActionButton onClick={_createContact} />}
193
- columns={[
194
- {
195
- title: '',
196
- width: '50px',
197
- render: (contact) => (
198
- <Avatar
199
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
200
- imgProps={{ src: contact.info?.picture?.image }}
201
- />
202
- ),
203
- },
204
- {
205
- title: 'Name',
206
- width: '250px',
207
- render: (contact) =>
208
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
209
- },
210
- {
211
- title: 'Level',
212
- render: (contact) => contact.info?.jobTitle,
213
- },
214
- {
215
- title: 'Last Activity',
216
- render: (contact) =>
217
- contact.lastActivity?.activityDate?.toLocaleString(),
218
- },
219
- ]}
220
- actionCell={(contact) => ({
221
- primaryAction: {
222
- text: 'Update',
223
- onClick: () => {
224
- _updateContact(contact);
225
- },
226
- },
227
- secondaryActions: [
228
- {
229
- icon: <Delete />,
230
- text: 'Delete',
231
- onClick: () => {
232
- _deleteContact(contact);
233
- },
234
- },
235
- ],
236
- })}
237
- />
238
- </CollectionPage.Content>
239
- </CollectionPage>
240
- );
241
- }
242
- ```
86
+ Example code: read `dist/docs/useOptimisticActions/default-behaviour.tsx`
243
87
 
244
88
  ### Success toast with undo
245
89
 
246
90
  You have the option to postpone the server request, giving the user a few seconds to regret using "Undo" button.
247
91
  You can also show a toast after the undo action with `showUndoSuccessToast`
248
92
 
249
- ```tsx
250
- import { Avatar } from '@wix/design-system';
251
- import React from 'react';
252
- import { CollectionPage } from '@wix/patterns/page';
253
- import {
254
- Table,
255
- OffsetQuery,
256
- PrimaryActionButton,
257
- useTableCollection,
258
- useOptimisticActions,
259
- } from '@wix/patterns';
260
- import { Delete } from '@wix/wix-ui-icons-common';
261
- import { contacts } from '@wix/crm';
262
-
263
- function UndoBeforeSending() {
264
- const state = useTableCollection<contacts.Contact>({
265
- queryName: 'contacts-UndoBeforeSending',
266
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
267
- fetchData: (query: OffsetQuery) => {
268
- const { limit, offset, search, filters } = query;
269
-
270
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
271
-
272
- if (search) {
273
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
274
- }
275
-
276
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
277
- items,
278
- total,
279
- }));
280
- },
281
- fetchErrorMessage: () => 'Error fetching contacts',
282
- });
283
-
284
- const collection = state.collection;
285
-
286
- const optimisticActions = useOptimisticActions(collection);
287
-
288
- const _createContact = () => {
289
- const newContact = {
290
- id: new window.Date().toString(),
291
- info: {
292
- name: {
293
- first: 'New',
294
- last: 'Contact',
295
- },
296
- },
297
- };
298
-
299
- optimisticActions.createOne(newContact, {
300
- showUndoToast: true,
301
- showUndoSuccessToast: true,
302
- successToast: 'New contact is created',
303
- submit: async (_contacts) => {
304
- const response = (await Promise.all(
305
- _contacts.map((contact) =>
306
- contacts.createContact(contact.info as contacts.ContactInfo),
307
- ),
308
- )) as contacts.CreateContactResponse[];
309
-
310
- return response.map(({ contact }) => contact as contacts.Contact);
311
- },
312
- });
313
- };
314
-
315
- const _updateContact = (contact: contacts.Contact) => {
316
- const updatedContact = {
317
- ...contact,
318
- info: {
319
- ...contact.info,
320
- jobTitle: 'Ultimate',
321
- },
322
- };
323
-
324
- optimisticActions.updateOne(updatedContact, {
325
- showUndoToast: true,
326
- showUndoSuccessToast: true,
327
- successToast: 'A contact has been updated',
328
- submit: async (_contacts) => {
329
- const response = (await Promise.all(
330
- _contacts.map((contact) =>
331
- contacts.updateContact(
332
- contact._id as string,
333
- contact.info as contacts.ContactInfo,
334
- contact.revision as number,
335
- ),
336
- ),
337
- )) as contacts.UpdateContactResponse[];
338
-
339
- return response.map(({ contact }) => contact as contacts.Contact);
340
- },
341
- });
342
- };
343
-
344
- const _deleteContact = (contact: contacts.Contact) => {
345
- optimisticActions.deleteOne(contact, {
346
- showUndoToast: true,
347
- showUndoSuccessToast: true,
348
- successToast: 'A contact was deleted',
349
- submit: async (_contacts) =>
350
- Promise.all(
351
- _contacts.map((contact) =>
352
- contacts.deleteContact(contact._id as string),
353
- ),
354
- ),
355
- });
356
- };
357
-
358
- return (
359
- <CollectionPage height="400px">
360
- <CollectionPage.Header title={{ text: 'Contacts' }} />
361
- <CollectionPage.Content>
362
- <Table
363
- state={collection}
364
- primaryActionButton={<PrimaryActionButton onClick={_createContact} />}
365
- columns={[
366
- {
367
- title: '',
368
- width: '50px',
369
- render: (contact) => (
370
- <Avatar
371
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
372
- imgProps={{ src: contact.info?.picture?.image }}
373
- />
374
- ),
375
- },
376
- {
377
- title: 'Name',
378
- width: '250px',
379
- render: (contact) =>
380
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
381
- },
382
- {
383
- title: 'Level',
384
- render: (contact) => contact.info?.jobTitle,
385
- },
386
- {
387
- title: 'Last Activity',
388
- render: (contact) =>
389
- contact.lastActivity?.activityDate?.toLocaleString(),
390
- },
391
- ]}
392
- actionCell={(contact) => ({
393
- primaryAction: {
394
- text: 'Update',
395
- onClick: () => {
396
- _updateContact(contact);
397
- },
398
- },
399
- secondaryActions: [
400
- {
401
- icon: <Delete />,
402
- text: 'Delete',
403
- onClick: () => {
404
- _deleteContact(contact);
405
- },
406
- },
407
- ],
408
- })}
409
- />
410
- </CollectionPage.Content>
411
- </CollectionPage>
412
- );
413
- }
414
- ```
93
+ Example code: read `dist/docs/useOptimisticActions/success-toast-with-undo.tsx`
415
94
 
416
95
  ### Error handling and retries
417
96
 
418
97
  In case of an error from the server, you can define what to show the user and what to do during it.
419
98
  Additionally, you can allow the user the option to try to execute the action again
420
99
 
421
- ```tsx
422
- import { Avatar } from '@wix/design-system';
423
- import React from 'react';
424
- import { CollectionPage } from '@wix/patterns/page';
425
- import {
426
- Table,
427
- OffsetQuery,
428
- PrimaryActionButton,
429
- useTableCollection,
430
- useOptimisticActions,
431
- } from '@wix/patterns';
432
- import { Delete } from '@wix/wix-ui-icons-common';
433
- import { contacts } from '@wix/crm';
434
-
435
- function ErrorHandlingAndRetries() {
436
-
437
- const state = useTableCollection<contacts.Contact>({
438
- queryName: 'contacts-ErrorHandlingAndRetries',
439
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
440
- fetchData: (query: OffsetQuery) => {
441
- const { limit, offset, search, filters } = query;
442
-
443
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
444
-
445
- if (search) {
446
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
447
- }
448
-
449
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
450
- items,
451
- total,
452
- }));
453
- },
454
- fetchErrorMessage: () => 'Error fetching contacts',
455
- });
456
-
457
- const collection = state.collection;
458
-
459
- const optimisticActions = useOptimisticActions(collection);
460
-
461
- const _createContact = () => {
462
- const newContact = {
463
- id: new window.Date().toString(),
464
- info: {
465
- name: {
466
- first: 'New',
467
- last: 'Contact',
468
- },
469
- },
470
- };
471
-
472
- optimisticActions.createOne(newContact, {
473
- errorToast: (err) => 'failed to create a contact',
474
- onError: (err) => {
475
- // report error to server
476
- console.log('error');
477
- },
478
- onTryAgain: () => {
479
- // report error to server
480
- console.log('try again');
481
- },
482
- submit: async (contacts) => {
483
- return new Promise((resolve, reject) => {
484
- window.setTimeout(() => {
485
- reject(new Error('error'));
486
- }, 1000);
487
- });
488
- },
489
- });
490
- };
491
-
492
- const _updateContact = (contact: contacts.Contact) => {
493
- const updatedContact = {
494
- ...contact,
495
- info: {
496
- ...contact.info,
497
- jobTitle: 'Ultimate',
498
- },
499
- };
500
- optimisticActions.updateOne(updatedContact, {
501
- errorToast: (err) => 'failed to update a contact',
502
- onError: (err) => {
503
- // report error to server
504
- console.log('error');
505
- },
506
- onTryAgain: () => {
507
- // report error to server
508
- console.log('try again');
509
- },
510
- submit: async (contacts) => {
511
- return new Promise((resolve, reject) => {
512
- window.setTimeout(() => {
513
- reject(new Error('error'));
514
- }, 1000);
515
- });
516
- },
517
- });
518
- };
519
-
520
- const _deleteContact = (contact: contacts.Contact) => {
521
- optimisticActions.deleteOne(contact, {
522
- errorToast: (err) => 'failed to delete a contact',
523
- onError: (err) => {
524
- // report error to server
525
- console.log('error');
526
- },
527
- onTryAgain: () => {
528
- // report error to server
529
- console.log('try again');
530
- },
531
- submit: async (contacts) => {
532
- return new Promise((resolve, reject) => {
533
- window.setTimeout(() => {
534
- reject(new Error('error'));
535
- }, 1000);
536
- });
537
- },
538
- });
539
- };
540
-
541
- return (
542
- <CollectionPage height="400px">
543
- <CollectionPage.Header title={{ text: 'Contacts' }} />
544
- <CollectionPage.Content>
545
- <Table
546
- state={collection}
547
- primaryActionButton={<PrimaryActionButton onClick={_createContact} />}
548
- columns={[
549
- {
550
- title: '',
551
- width: '50px',
552
- render: (contact) => (
553
- <Avatar
554
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
555
- imgProps={{ src: contact.info?.picture?.image }}
556
- />
557
- ),
558
- },
559
- {
560
- title: 'Name',
561
- width: '250px',
562
- render: (contact) =>
563
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
564
- },
565
- {
566
- title: 'Level',
567
- render: (contact) => contact.info?.jobTitle,
568
- },
569
- {
570
- title: 'Last Activity',
571
- render: (contact) =>
572
- contact.lastActivity?.activityDate?.toLocaleString(),
573
- },
574
- ]}
575
- actionCell={(contact) => ({
576
- primaryAction: {
577
- text: 'Update',
578
- onClick: () => {
579
- _updateContact(contact);
580
- },
581
- },
582
- secondaryActions: [
583
- {
584
- icon: <Delete />,
585
- text: 'Delete',
586
- onClick: () => {
587
- _deleteContact(contact);
588
- },
589
- },
590
- ],
591
- })}
592
- />
593
- </CollectionPage.Content>
594
- </CollectionPage>
595
- );
596
- }
597
- ```
100
+ Example code: read `dist/docs/useOptimisticActions/error-handling-and-retries.tsx`
598
101
 
599
102
  ### Items orders
600
103
 
601
104
  You can decide the orders of the item with `OrdeyBy`
602
105
 
603
- ```tsx
604
- import { Avatar } from '@wix/design-system';
605
- import React from 'react';
606
- import { CollectionPage } from '@wix/patterns/page';
607
- import {
608
- Table,
609
- OffsetQuery,
610
- PrimaryActionButton,
611
- useTableCollection,
612
- useOptimisticActions,
613
- } from '@wix/patterns';
614
- import { Delete } from '@wix/wix-ui-icons-common';
615
- import { contacts } from '@wix/crm';
616
-
617
- function UndoAfterSuccess() {
618
- const state = useTableCollection<contacts.Contact>({
619
- queryName: 'contacts-UndoAfterSuccess',
620
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
621
- fetchData: (query: OffsetQuery) => {
622
- const { limit, offset, search, sort, filters } = query;
623
-
624
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
625
-
626
- if (search) {
627
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
628
- }
629
-
630
- queryBuilder = queryBuilder.ascending('info.name.first');
631
-
632
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
633
- items,
634
- total,
635
- }));
636
- },
637
- fetchErrorMessage: () => 'Error fetching contacts',
638
- });
639
-
640
- const collection = state.collection;
641
-
642
- const optimisticActions = useOptimisticActions(collection, {
643
- orderBy: ({ sort }) => [
644
- ...(sort || []),
645
- {
646
- fieldName: (item) => item.info?.name?.first || '',
647
- order: 'asc',
648
- },
649
- ],
650
- });
651
-
652
- const _createContact = () => {
653
- const newContact = {
654
- id: new window.Date().toString(),
655
- info: {
656
- name: {
657
- first: 'Aaa',
658
- last: 'Contact',
659
- },
660
- },
661
- };
662
-
663
- optimisticActions.createOne(newContact, {
664
- submit: async (_contacts) => {
665
- const response = (await Promise.all(
666
- _contacts.map((contact) =>
667
- contacts.createContact(contact.info as contacts.ContactInfo),
668
- ),
669
- )) as contacts.CreateContactResponse[];
670
-
671
- return response.map(({ contact }) => contact as contacts.Contact);
672
- },
673
- });
674
- };
675
-
676
- const _updateContact = (contact: contacts.Contact) => {
677
- const updatedContact = {
678
- ...contact,
679
- info: {
680
- ...contact.info,
681
- jobTitle: 'Ultimate',
682
- },
683
- };
684
-
685
- optimisticActions.updateOne(updatedContact, {
686
- submit: async (_contacts) => {
687
- const response = (await Promise.all(
688
- _contacts.map((contact) =>
689
- contacts.updateContact(
690
- contact._id as string,
691
- contact.info as contacts.ContactInfo,
692
- contact.revision as number,
693
- ),
694
- ),
695
- )) as contacts.UpdateContactResponse[];
696
-
697
- return response.map(({ contact }) => contact as contacts.Contact);
698
- },
699
- });
700
- };
701
-
702
- const _deleteContact = (contact: contacts.Contact) => {
703
- optimisticActions.deleteOne(contact, {
704
- submit: async (_contacts) =>
705
- Promise.all(
706
- _contacts.map((contact) =>
707
- contacts.deleteContact(contact._id as string),
708
- ),
709
- ),
710
- });
711
- };
712
-
713
- return (
714
- <CollectionPage height="400px">
715
- <CollectionPage.Header title={{ text: 'Contacts' }} />
716
- <CollectionPage.Content>
717
- <Table
718
- state={collection}
719
- primaryActionButton={<PrimaryActionButton onClick={_createContact} />}
720
- columns={[
721
- {
722
- title: '',
723
- width: '50px',
724
- render: (contact) => (
725
- <Avatar
726
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
727
- imgProps={{ src: contact.info?.picture?.image }}
728
- />
729
- ),
730
- },
731
- {
732
- title: 'Name',
733
- width: '250px',
734
- render: (contact) =>
735
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
736
- },
737
- {
738
- title: 'Level',
739
- render: (contact) => contact.info?.jobTitle,
740
- },
741
- {
742
- title: 'Last Activity',
743
- render: (contact) =>
744
- contact.lastActivity?.activityDate?.toLocaleString(),
745
- },
746
- ]}
747
- actionCell={(contact) => ({
748
- primaryAction: {
749
- text: 'Update',
750
- onClick: () => {
751
- _updateContact(contact);
752
- },
753
- },
754
- secondaryActions: [
755
- {
756
- icon: <Delete />,
757
- text: 'Delete',
758
- onClick: () => {
759
- _deleteContact(contact);
760
- },
761
- },
762
- ],
763
- })}
764
- />
765
- </CollectionPage.Content>
766
- </CollectionPage>
767
- );
768
- }
769
- ```
106
+ Example code: read `dist/docs/useOptimisticActions/items-orders.tsx`
770
107
 
771
108
  ### Update with query
772
109
 
773
110
  When you update the data when query exists (filters, search) you need to define `predicate` and `orderBy` in order to update the relevant items.
774
111
  In this example, try to update the filtered items, remove the filters and see that only the filtered items were updated.
775
112
 
776
- ```tsx
777
- import { Avatar } from '@wix/design-system';
778
- import React from 'react';
779
- import { CollectionPage } from '@wix/patterns/page';
780
- import {
781
- BulkActionButton,
782
- BulkActionToolbar,
783
- CollectionToolbarFilters,
784
- Filter,
785
- Table,
786
- MultiSelectCheckboxFilter,
787
- OffsetQuery,
788
- stringsArrayFilter,
789
- useTableCollection,
790
- useOptimisticActions,
791
- useStaticListFilterCollection,
792
- } from '@wix/patterns';
793
- import {
794
- bulkUpdateContacts,
795
- queryContacts,
796
- updateContact,
797
- } from '@wix/ambassador-contacts-v4-contact/http';
798
- import {
799
- Contact,
800
- ContactInfo,
801
- UpdateContactRequest,
802
- } from '@wix/ambassador-contacts-v4-contact/types';
803
- import { useHttpClient } from '@wix/yoshi-flow-bm';
804
-
805
- type ContactsFilters = {
806
- level: Filter<string[]>;
807
- };
808
-
809
- function OrderBy() {
810
- const httpClient = useHttpClient();
811
-
812
- const state = useTableCollection<Contact, ContactsFilters>({
813
- queryName: 'contacts-OrderBy',
814
- fetchData: (query: OffsetQuery<ContactsFilters>) => {
815
- const { limit, offset, search, filters } = query;
816
- return httpClient
817
- .request(
818
- queryContacts({
819
- query: { paging: { limit, offset }, filter: filters },
820
- search,
821
- }),
822
- )
823
- .then(({ data: { contacts = [], pagingMetadata } }) => ({
824
- items: contacts,
825
- total: pagingMetadata?.total,
826
- }));
827
- },
828
- itemKey: (item) => item.id as string,
829
- itemName: (item) => item.name as string,
830
- fetchErrorMessage: () => 'Error fetching contacts',
831
- filters: {
832
- level: stringsArrayFilter({
833
- initialValue: ['Beginner'],
834
- }),
835
- },
836
- });
837
-
838
- const collection = state.collection;
839
-
840
- const optimisticActions = useOptimisticActions(collection, {
841
- predicate: ({ filters }) => {
842
- const { level } = filters;
843
- return (item) => {
844
- if (level && !level.some((level) => level === String(item.level))) {
845
- return false;
846
- }
847
- return true;
848
- };
849
- },
850
- orderBy: ({ sort }) => [
851
- ...(sort || []),
852
- {
853
- fieldName: (item) => item.createdDate || new Date(0),
854
- order: 'desc',
855
- },
856
- ],
857
- });
858
-
859
- const _updateContacts = (
860
- contacts: Contact[],
861
- { allSelected, total }: { allSelected: boolean; total: number },
862
- ) => {
863
- if (allSelected) {
864
- const newNameContact = { name: 'new name' } as Partial<Contact>;
865
-
866
- optimisticActions.updateAll(newNameContact, {
867
- successToast: `${total} contacts changed`,
868
- submit: () =>
869
- httpClient.request(
870
- bulkUpdateContacts({
871
- filter: {
872
- level: collection.filters.level.value,
873
- },
874
- info: newNameContact as ContactInfo,
875
- }),
876
- ),
877
- });
878
- } else {
879
- const updatedContacts = contacts.map((c) => ({ ...c, name: 'new name' }));
880
-
881
- optimisticActions.updateMany(updatedContacts, {
882
- successToast: `${contacts.length} contacts changed`,
883
- submit: (contacts) =>
884
- Promise.all(
885
- contacts.map((contact) =>
886
- httpClient.request(
887
- updateContact(contact as UpdateContactRequest),
888
- ),
889
- ),
890
- ),
891
- });
892
- }
893
- };
894
-
895
- const levelsCollection = useStaticListFilterCollection(
896
- collection.filters.level,
897
- [
898
- 'Beginner',
899
- 'Amateur',
900
- 'Semi-Pro',
901
- 'Professional',
902
- 'World Class',
903
- 'Legendary',
904
- 'Ultimate',
905
- ],
906
- );
907
-
908
- return (
909
- <CollectionPage height="400px">
910
- <CollectionPage.Header title={{ text: 'Contacts' }} />
911
- <CollectionPage.Content>
912
- <Table
913
- state={collection}
914
- columns={[
915
- {
916
- title: '',
917
- width: '50px',
918
- render: (contact) => (
919
- <Avatar name={contact.name} imgProps={{ src: contact.image }} />
920
- ),
921
- },
922
- {
923
- title: 'Name',
924
- width: '250px',
925
- render: (contact) => contact.name,
926
- },
927
- {
928
- title: 'Level',
929
- render: (contact) => contact.level,
930
- },
931
- {
932
- title: 'Last Seen',
933
- render: (contact) => contact.lastSeen?.toLocaleString(),
934
- },
935
- ]}
936
- filters={
937
- <CollectionToolbarFilters>
938
- <MultiSelectCheckboxFilter
939
- accordionItemProps={{ label: 'Level' }}
940
- popoverProps={{ appendTo: 'window' }}
941
- filter={collection.filters.level!}
942
- collection={levelsCollection}
943
- renderItem={(level) => ({ title: level })}
944
- />
945
- </CollectionToolbarFilters>
946
- }
947
- showSelection
948
- bulkActionToolbar={({
949
- selectedValues,
950
- clearSelection,
951
- allSelected,
952
- total,
953
- }) => (
954
- <BulkActionToolbar
955
- actionButton={
956
- <BulkActionButton
957
- onClick={() => {
958
- _updateContacts(selectedValues, { allSelected, total });
959
- clearSelection();
960
- }}
961
- >
962
- Update Contacts' Names
963
- </BulkActionButton>
964
- }
965
- />
966
- )}
967
- />
968
- </CollectionPage.Content>
969
- </CollectionPage>
970
- );
971
- }
972
- ```
113
+ Example code: read `dist/docs/useOptimisticActions/update-with-query.tsx`
973
114
 
974
115
  ### Revision handling
975
116
 
976
117
  In case your server works with revision, you can need to update the revision by yourself
977
118
 
978
- ```tsx
979
- import { Avatar } from '@wix/design-system';
980
- import React from 'react';
981
- import { CollectionPage } from '@wix/patterns/page';
982
- import {
983
- Table,
984
- OffsetQuery,
985
- useTableCollection,
986
- useOptimisticActions,
987
- } from '@wix/patterns';
988
- import { contacts } from '@wix/crm';
989
-
990
- function RevisionHandling() {
991
- const state = useTableCollection<contacts.Contact>({
992
- queryName: 'contacts-RevisionHandling',
993
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
994
- fetchData: (query: OffsetQuery) => {
995
- const { limit, offset, search, filters } = query;
996
-
997
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
998
-
999
- if (search) {
1000
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
1001
- }
1002
-
1003
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
1004
- items,
1005
- total,
1006
- }));
1007
- },
1008
- fetchErrorMessage: () => 'Error fetching contacts',
1009
- });
1010
-
1011
- const collection = state.collection;
1012
-
1013
- const optimisticActions = useOptimisticActions(collection);
1014
-
1015
- const _updateContact = (contact: contacts.Contact) => {
1016
- const updatedContact = {
1017
- ...contact,
1018
- info: {
1019
- ...contact.info,
1020
- jobTitle: 'Ultimate',
1021
- },
1022
- revision: +contact.revision! + 1,
1023
- } as Partial<contacts.Contact>;
1024
-
1025
- optimisticActions.updateOne(updatedContact, {
1026
- submit: async (_contacts) => {
1027
- const response = (await Promise.all(
1028
- _contacts.map((contact) =>
1029
- contacts.updateContact(
1030
- contact._id as string,
1031
- contact.info as contacts.ContactInfo,
1032
- contact.revision as number,
1033
- ),
1034
- ),
1035
- )) as contacts.UpdateContactResponse[];
1036
-
1037
- return response.map(({ contact }) => contact as contacts.Contact);
1038
- },
1039
- });
1040
- };
1041
-
1042
- return (
1043
- <CollectionPage height="400px">
1044
- <CollectionPage.Header title={{ text: 'Contacts' }} />
1045
- <CollectionPage.Content>
1046
- <Table
1047
- state={collection}
1048
- columns={[
1049
- {
1050
- title: '',
1051
- width: '50px',
1052
- render: (contact) => (
1053
- <Avatar
1054
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
1055
- imgProps={{ src: contact.info?.picture?.image }}
1056
- />
1057
- ),
1058
- },
1059
- {
1060
- title: 'Name',
1061
- width: '250px',
1062
- render: (contact) =>
1063
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
1064
- },
1065
- {
1066
- title: 'Level',
1067
- render: (contact) => contact.info?.jobTitle,
1068
- },
1069
- {
1070
- title: 'Last Activity',
1071
- render: (contact) =>
1072
- contact.lastActivity?.activityDate?.toLocaleString(),
1073
- },
1074
- ]}
1075
- actionCell={(contact) => ({
1076
- primaryAction: {
1077
- text: 'Update',
1078
- onClick: () => {
1079
- _updateContact(contact);
1080
- },
1081
- },
1082
- })}
1083
- />
1084
- </CollectionPage.Content>
1085
- </CollectionPage>
1086
- );
1087
- }
1088
- ```
119
+ Example code: read `dist/docs/useOptimisticActions/revision-handling.tsx`
1089
120
 
1090
121
  ### Custom error handling
1091
122
 
1092
123
  You can define your own error handling wirh errorToast prop
1093
124
 
1094
- ```tsx
1095
- import { Avatar } from '@wix/design-system';
1096
- import React from 'react';
1097
- import { CollectionPage } from '@wix/patterns/page';
1098
- import {
1099
- Table,
1100
- OffsetQuery,
1101
- PrimaryActionButton,
1102
- useTableCollection,
1103
- useOptimisticActions,
1104
- } from '@wix/patterns';
1105
- import { Delete } from '@wix/wix-ui-icons-common';
1106
- import { contacts } from '@wix/crm';
1107
-
1108
- function CustomErrorHandling() {
1109
-
1110
- const state = useTableCollection<contacts.Contact>({
1111
- queryName: 'contacts-CustomErrorHandling',
1112
- itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
1113
- fetchData: (query: OffsetQuery) => {
1114
- const { limit, offset, search } = query;
1115
-
1116
- let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
1117
-
1118
- if (search) {
1119
- queryBuilder = queryBuilder.startsWith('info.name.first', search);
1120
- }
1121
-
1122
- return queryBuilder.find().then(({ items = [], totalCount: total }) => ({
1123
- items,
1124
- total,
1125
- }));
1126
- },
1127
- fetchErrorMessage: () => 'Error fetching contacts',
1128
- });
1129
-
1130
- const collection = state.collection;
1131
-
1132
- const optimisticActions = useOptimisticActions(collection);
1133
-
1134
- const _createContact = () => {
1135
- const newContact = {
1136
- id: new window.Date().toString(),
1137
- info: {
1138
- name: {
1139
- first: 'New',
1140
- last: 'Contact',
1141
- },
1142
- },
1143
- };
1144
-
1145
- optimisticActions.createOne(newContact, {
1146
- errorToast: (err, { retry }) => ({
1147
- message: 'failed to create a contact',
1148
- action: {
1149
- text: 'My custom action',
1150
- onClick: () => {
1151
- retry();
1152
- console.log('retry');
1153
- },
1154
- },
1155
- }),
1156
- submit: async (contacts) => {
1157
- return new Promise((resolve, reject) => {
1158
- window.setTimeout(() => {
1159
- reject(new Error('error'));
1160
- }, 1000);
1161
- });
1162
- },
1163
- });
1164
- };
1165
-
1166
- const _updateContact = (contact: contacts.Contact) => {
1167
- const updatedContact = {
1168
- ...contact,
1169
- info: {
1170
- ...contact.info,
1171
- jobTitle: 'Ultimate',
1172
- },
1173
- };
1174
- optimisticActions.updateOne(updatedContact, {
1175
- errorToast: (err, { retry }) => ({
1176
- message: 'failed to update a contact',
1177
- action: {
1178
- text: 'My custom action',
1179
- onClick: () => {
1180
- retry();
1181
- console.log('retry');
1182
- },
1183
- },
1184
- }),
1185
- submit: async (contacts) => {
1186
- return new Promise((resolve, reject) => {
1187
- window.setTimeout(() => {
1188
- reject(new Error('error'));
1189
- }, 1000);
1190
- });
1191
- },
1192
- });
1193
- };
1194
-
1195
- const _deleteContact = (contact: contacts.Contact) => {
1196
- optimisticActions.deleteOne(contact, {
1197
- errorToast: (err, { retry }) => ({
1198
- message: 'failed to delete a contact',
1199
- action: {
1200
- text: 'My custom action',
1201
- onClick: () => {
1202
- retry();
1203
- console.log('retry');
1204
- },
1205
- },
1206
- }),
1207
- submit: async (contacts) => {
1208
- return new Promise((resolve, reject) => {
1209
- window.setTimeout(() => {
1210
- reject(new Error('error'));
1211
- }, 1000);
1212
- });
1213
- },
1214
- });
1215
- };
1216
-
1217
- return (
1218
- <CollectionPage height="400px">
1219
- <CollectionPage.Header title={{ text: 'Contacts' }} />
1220
- <CollectionPage.Content>
1221
- <Table
1222
- state={collection}
1223
- primaryActionButton={<PrimaryActionButton onClick={_createContact} />}
1224
- columns={[
1225
- {
1226
- title: '',
1227
- width: '50px',
1228
- render: (contact) => (
1229
- <Avatar
1230
- name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
1231
- imgProps={{ src: contact.info?.picture?.image }}
1232
- />
1233
- ),
1234
- },
1235
- {
1236
- title: 'Name',
1237
- width: '250px',
1238
- render: (contact) =>
1239
- `${contact.info?.name?.first} ${contact.info?.name?.last}`,
1240
- },
1241
- {
1242
- title: 'Level',
1243
- render: (contact) => contact.info?.jobTitle,
1244
- },
1245
- {
1246
- title: 'Last Activity',
1247
- render: (contact) =>
1248
- contact.lastActivity?.activityDate?.toLocaleString(),
1249
- },
1250
- ]}
1251
- actionCell={(contact) => ({
1252
- primaryAction: {
1253
- text: 'Update',
1254
- onClick: () => {
1255
- _updateContact(contact);
1256
- },
1257
- },
1258
- secondaryActions: [
1259
- {
1260
- icon: <Delete />,
1261
- text: 'Delete',
1262
- onClick: () => {
1263
- _deleteContact(contact);
1264
- },
1265
- },
1266
- ],
1267
- })}
1268
- />
1269
- </CollectionPage.Content>
1270
- </CollectionPage>
1271
- );
1272
- }
1273
- ```
125
+ Example code: read `dist/docs/useOptimisticActions/custom-error-handling.tsx`
1274
126
 
1275
127
  ## API
1276
128
 
1277
129
  ### Props
1278
130
 
1279
- | Prop | Type | Required | Default | Description |
1280
- |------|------|----------|---------|-------------|
1281
- | `collection` | `CollectionState<T, F>` | No | - | The collection state object representing the data collection to perform optimistic actions on |
1282
- | `predicate` | `((computedQuery: ComputedQuery<F>) => (item: T) => boolean)` | No | - | A function that simulates the filtering in the server. The function should return another function that accepts an item, and return a boolean that indicates whether the item passes the query filters or not. @param computedQuery - The computed query object. |
1283
- | `orderBy` | `((computedQuery: ComputedQuery<F>) => Order<T>[])` | No | - | A function that simulates the ordering of the items in the server.<br> The function should return a list of rules in the form of `{fieldName: string; order: 'asc' \| 'desc';}` to order the items by @param computedQuery - The computed query object. |
1284
- | `createdAt` | `((item: T) => Date)` | No | - | A function to retrieve the creation date of an item. @param item - The item. |
1285
- | `batchWait` | `number` | No | `0` | Time to wait before batching multiple `updateMany` calls into a single server call. |
1286
- | `noInvalidate` | `boolean` | No | - | Indicates whether to refresh the current page without invalidating the cache. |
1287
- | `cacheNamespace` | `string` | No | - | Adds a namespace to the cache key. |
131
+ Read `dist/dts-bundle/hooks/useOptimisticActions.d.ts` for `useOptimisticActions`'s full prop list, with types and
132
+ descriptions. They are not repeated here, so the bundle is the single source of truth.
133
+
134
+ A one-line stub in that file is an answer, not a truncation: an empty body with a
135
+ "Produced by" note means you get the value from that hook or factory rather than
136
+ constructing it. `dist/dts-bundle/index.json` maps every name to its bundle path.
1288
137