@wix/patterns 1.459.0 → 1.460.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 (651) 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 +32 -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/HeaderActionsPopover.st.css.js +2 -2
  36. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  38. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js +3 -3
  42. package/dist/cjs/components/EditableTable/cellTypes/array/Edit.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  46. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  48. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  50. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  52. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  54. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  56. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  58. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  60. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  64. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +3 -3
  66. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  68. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  72. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  74. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  76. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  78. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  80. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  81. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  82. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  83. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  84. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  85. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  86. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  87. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  88. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  89. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  90. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  91. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  92. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  93. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  94. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  95. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  96. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  97. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  98. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  99. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  100. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  101. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  102. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  103. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  104. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  105. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  106. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  107. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  108. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  109. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  110. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  111. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  112. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  113. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  114. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  115. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  116. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  117. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  118. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  119. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  120. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  121. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  122. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  123. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +4 -4
  124. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  125. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  126. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  127. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  128. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  129. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  130. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  131. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  132. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  133. package/dist/cjs/components/common.st.css.js +4 -4
  134. package/dist/cjs/components/common.st.css.js.map +1 -1
  135. package/dist/cjs/schema/entityPageFieldManagement.js +3 -1
  136. package/dist/cjs/schema/entityPageFieldManagement.js.map +1 -1
  137. package/dist/cjs/state/CollectionFieldsSourceState.js +3 -1
  138. package/dist/cjs/state/CollectionFieldsSourceState.js.map +1 -1
  139. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  140. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  141. package/dist/cjs/state/CustomFields/CustomFieldsPanelState.js +3 -0
  142. package/dist/cjs/state/CustomFields/CustomFieldsPanelState.js.map +1 -1
  143. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  144. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  145. package/dist/cjs/state/ManageFieldsSource.js.map +1 -1
  146. package/dist/cjs/state/ToolbarCollectionState.js +6 -2
  147. package/dist/cjs/state/ToolbarCollectionState.js.map +1 -1
  148. package/dist/cjs/styles.global.css +2 -2
  149. package/dist/cjs/version.js +1 -1
  150. package/dist/cjs/version.js.map +1 -1
  151. package/dist/docs/ActionCellProps.md +6 -21
  152. package/dist/docs/AutoCompleteFilter.md +6 -128
  153. package/dist/docs/BulkActionModalRenderProp.md +6 -9
  154. package/dist/docs/CollectionEmptyState/2-ctas.tsx +67 -0
  155. package/dist/docs/CollectionEmptyState/demo.tsx +61 -0
  156. package/dist/docs/CollectionEmptyState/passive-empty-state.tsx +59 -0
  157. package/dist/docs/CollectionEmptyState.md +9 -207
  158. package/dist/docs/CollectionNoResultsState.md +6 -11
  159. package/dist/docs/CollectionOptimisticActions/create-many.tsx +110 -0
  160. package/dist/docs/CollectionOptimisticActions/create-one.tsx +104 -0
  161. package/dist/docs/CollectionOptimisticActions/delete-all.tsx +132 -0
  162. package/dist/docs/CollectionOptimisticActions/delete-many.tsx +104 -0
  163. package/dist/docs/CollectionOptimisticActions/delete-one.tsx +94 -0
  164. package/dist/docs/CollectionOptimisticActions/update-all.tsx +142 -0
  165. package/dist/docs/CollectionOptimisticActions/update-many.tsx +119 -0
  166. package/dist/docs/CollectionOptimisticActions/update-one.tsx +108 -0
  167. package/dist/docs/CollectionOptimisticActions.md +14 -939
  168. package/dist/docs/CollectionPage.md +6 -19
  169. package/dist/docs/CollectionPremiumEmptyState.md +6 -14
  170. package/dist/docs/CollectionSearch/default.tsx +57 -0
  171. package/dist/docs/CollectionSearch/max-length.tsx +59 -0
  172. package/dist/docs/CollectionSearch/placeholder.tsx +59 -0
  173. package/dist/docs/CollectionSearch/search-highlighting.tsx +60 -0
  174. package/dist/docs/CollectionSearch.md +10 -247
  175. package/dist/docs/ComputedQuery.md +6 -15
  176. package/dist/docs/CustomColumns/add-a-tooltip.tsx +85 -0
  177. package/dist/docs/CustomColumns/basic.tsx +78 -0
  178. package/dist/docs/CustomColumns/exclude-columns.tsx +79 -0
  179. package/dist/docs/CustomColumns/freeze-column-reorder.tsx +111 -0
  180. package/dist/docs/CustomColumns/get-visible-columns.tsx +92 -0
  181. package/dist/docs/CustomColumns/hide-specific-columns-by-default.tsx +79 -0
  182. package/dist/docs/CustomColumns/load-only-selected-columns.tsx +85 -0
  183. package/dist/docs/CustomColumns/lock-columns.tsx +80 -0
  184. package/dist/docs/CustomColumns/reorder-columns.tsx +84 -0
  185. package/dist/docs/CustomColumns.md +9 -791
  186. package/dist/docs/CustomFieldType/add-field-modal.tsx +206 -0
  187. package/dist/docs/CustomFieldType/editable-cell.tsx +206 -0
  188. package/dist/docs/CustomFieldType/entity-page-form.tsx +133 -0
  189. package/dist/docs/CustomFieldType/table-cell-and-filter.tsx +165 -0
  190. package/dist/docs/CustomFieldType.md +4 -718
  191. package/dist/docs/CustomFieldsWidget/basic.tsx +53 -0
  192. package/dist/docs/CustomFieldsWidget/controllable-state.tsx +78 -0
  193. package/dist/docs/CustomFieldsWidget/empty-state.tsx +20 -0
  194. package/dist/docs/CustomFieldsWidget/inline-theme.tsx +54 -0
  195. package/dist/docs/CustomFieldsWidget/responsive.tsx +44 -0
  196. package/dist/docs/CustomFieldsWidget/with-tpa-fields.tsx +57 -0
  197. package/dist/docs/CustomFieldsWidget/without-entity-page.tsx +42 -0
  198. package/dist/docs/CustomFieldsWidget.md +7 -362
  199. package/dist/docs/DateRangeFilter.Components.md +6 -71
  200. package/dist/docs/EntityPage/2-columns.tsx +72 -0
  201. package/dist/docs/EntityPage/basic.tsx +72 -0
  202. package/dist/docs/EntityPage/delete-action.tsx +77 -0
  203. package/dist/docs/EntityPage/delete-error-handling.tsx +65 -0
  204. package/dist/docs/EntityPage/demo.tsx +212 -0
  205. package/dist/docs/EntityPage/error-on-fetch.tsx +68 -0
  206. package/dist/docs/EntityPage/error-on-save.tsx +59 -0
  207. package/dist/docs/EntityPage/input-initialization-with-controller.tsx +96 -0
  208. package/dist/docs/EntityPage/input-initialization-with-usecontroller.tsx +99 -0
  209. package/dist/docs/EntityPage/loading.tsx +107 -0
  210. package/dist/docs/EntityPage/overriding-save-button-text.tsx +75 -0
  211. package/dist/docs/EntityPage.md +17 -1045
  212. package/dist/docs/ExportTo/cta-is-out-of-the-table.tsx +157 -0
  213. package/dist/docs/ExportTo/export-all-table.tsx +144 -0
  214. package/dist/docs/ExportTo/export-filtered-table.tsx +148 -0
  215. package/dist/docs/ExportTo/export-table-with-selection-bulk-selection.tsx +203 -0
  216. package/dist/docs/ExportTo.md +10 -674
  217. package/dist/docs/Filter Overview/interactive-example.tsx +211 -0
  218. package/dist/docs/Filter Overview.md +1 -213
  219. package/dist/docs/FilterProps.md +6 -13
  220. package/dist/docs/Grid/card-with-a-cta-that-opens-a-modal.tsx +103 -0
  221. package/dist/docs/Grid/card-with-a-cta-that-opens-a-popup.tsx +91 -0
  222. package/dist/docs/Grid/demo.tsx +73 -0
  223. package/dist/docs/Grid/grid-sections.tsx +62 -0
  224. package/dist/docs/Grid/grid-with-a-reduced-width.tsx +72 -0
  225. package/dist/docs/Grid/use-the-preset-prop.tsx +55 -0
  226. package/dist/docs/Grid.md +12 -509
  227. package/dist/docs/GridFolders.md +6 -45
  228. package/dist/docs/GridFoldersState.md +6 -3
  229. package/dist/docs/GridState.md +6 -5
  230. package/dist/docs/ImportButton/backup-error-handling.tsx +80 -0
  231. package/dist/docs/ImportButton/cms-import.tsx +38 -0
  232. package/dist/docs/ImportButton/create-new-field.tsx +40 -0
  233. package/dist/docs/ImportButton/platformized-import-fields-inline.tsx +65 -0
  234. package/dist/docs/ImportButton/platformized-import-from-a-source.tsx +50 -0
  235. package/dist/docs/ImportButton/required-fields.tsx +65 -0
  236. package/dist/docs/ImportButton/update-or-skip-by-id.tsx +40 -0
  237. package/dist/docs/ImportButton.md +7 -392
  238. package/dist/docs/Indeterminate/all-indeterminate.tsx +127 -0
  239. package/dist/docs/Indeterminate/items-indeterminate-status.tsx +126 -0
  240. package/dist/docs/Indeterminate.md +2 -257
  241. package/dist/docs/Internal Scroll/full-width-section.tsx +96 -0
  242. package/dist/docs/Internal Scroll/narrow-side-section.tsx +82 -0
  243. package/dist/docs/Internal Scroll.md +2 -182
  244. package/dist/docs/More Actions/collection-page-2.tsx +98 -0
  245. package/dist/docs/More Actions/collection-page.tsx +97 -0
  246. package/dist/docs/More Actions/explore-related-apps.tsx +129 -0
  247. package/dist/docs/More Actions/featured-more-actions-custom-position.tsx +116 -0
  248. package/dist/docs/More Actions/featured-more-actions-opt-out.tsx +86 -0
  249. package/dist/docs/More Actions/featured-more-actions.tsx +82 -0
  250. package/dist/docs/More Actions/integrate-with-extension.tsx +100 -0
  251. package/dist/docs/More Actions/more-actions-in-the-toolbar.tsx +96 -0
  252. package/dist/docs/More Actions/more-actions-with-a-divider.tsx +115 -0
  253. package/dist/docs/More Actions.md +9 -937
  254. package/dist/docs/MoreActionsItem.md +6 -16
  255. package/dist/docs/MultiAutoInlineCheckboxFilter.md +6 -879
  256. package/dist/docs/MultiBulkActionToolbar/basic-secondary-action.tsx +177 -0
  257. package/dist/docs/MultiBulkActionToolbar/bulk-action.tsx +169 -0
  258. package/dist/docs/MultiBulkActionToolbar/extend-menu-items.tsx +174 -0
  259. package/dist/docs/MultiBulkActionToolbar/maximum-selection.tsx +168 -0
  260. package/dist/docs/MultiBulkActionToolbar/popover-menu.tsx +123 -0
  261. package/dist/docs/MultiBulkActionToolbar/primary-secondary-actions-with-a-divider.tsx +218 -0
  262. package/dist/docs/MultiBulkActionToolbar.md +12 -1048
  263. package/dist/docs/MultiInlineCheckboxFilter.md +6 -878
  264. package/dist/docs/MultiLevelSorting/basic-multi-level-sorting.tsx +93 -0
  265. package/dist/docs/MultiLevelSorting/multi-level-sorting-with-custom-sort-order.tsx +100 -0
  266. package/dist/docs/MultiLevelSorting/multi-level-sorting-with-defined-sort-directions.tsx +96 -0
  267. package/dist/docs/MultiLevelSorting.md +9 -301
  268. package/dist/docs/MultiSelectCheckboxFilter.md +6 -133
  269. package/dist/docs/MultiSelectCollectionFilter.md +6 -138
  270. package/dist/docs/NestedTable/drag-and-drop.tsx +107 -0
  271. package/dist/docs/NestedTable/filters.tsx +192 -0
  272. package/dist/docs/NestedTable/flat-mode-search.tsx +92 -0
  273. package/dist/docs/NestedTable/node-api-usage.tsx +188 -0
  274. package/dist/docs/NestedTable/single-entity.tsx +85 -0
  275. package/dist/docs/NestedTable/various-entities.tsx +138 -0
  276. package/dist/docs/NestedTable.md +6 -814
  277. package/dist/docs/NumberRangeFilter.md +6 -13
  278. package/dist/docs/OperatorFilterPicker.md +6 -13
  279. package/dist/docs/PatternsReactRoute.md +6 -7
  280. package/dist/docs/PatternsReactRouter.md +9 -0
  281. package/dist/docs/PickerModal/multi-select.tsx +97 -0
  282. package/dist/docs/PickerModal/pre-selected-item.tsx +120 -0
  283. package/dist/docs/PickerModal/search-override.tsx +99 -0
  284. package/dist/docs/PickerModal/single-selection.tsx +98 -0
  285. package/dist/docs/PickerModal/with-filter-dropdown.tsx +139 -0
  286. package/dist/docs/PickerModal.md +11 -605
  287. package/dist/docs/PickerStandalone/basic.tsx +49 -0
  288. package/dist/docs/PickerStandalone/createnew.tsx +65 -0
  289. package/dist/docs/PickerStandalone/custom-empty-state.tsx +33 -0
  290. package/dist/docs/PickerStandalone/custom-items.tsx +78 -0
  291. package/dist/docs/PickerStandalone.md +4 -233
  292. package/dist/docs/PrimaryActionButton.md +6 -71
  293. package/dist/docs/PrimaryActions.md +6 -14
  294. package/dist/docs/PrimaryPageButton.md +6 -69
  295. package/dist/docs/RadioGroupFilter.md +6 -19
  296. package/dist/docs/SecondaryActions.md +6 -14
  297. package/dist/docs/SettingsPage/2-columns.tsx +70 -0
  298. package/dist/docs/SettingsPage/basic.tsx +66 -0
  299. package/dist/docs/SettingsPage/error-on-fetch.tsx +65 -0
  300. package/dist/docs/SettingsPage/error-on-save.tsx +59 -0
  301. package/dist/docs/SettingsPage/input-initialization-with-controller.tsx +89 -0
  302. package/dist/docs/SettingsPage/input-initialization-with-usecontroller.tsx +92 -0
  303. package/dist/docs/SettingsPage/loading.tsx +99 -0
  304. package/dist/docs/SettingsPage.md +13 -574
  305. package/dist/docs/SingleSelectFilter/custom-render-items.tsx +57 -0
  306. package/dist/docs/SingleSelectFilter/empty-state.tsx +33 -0
  307. package/dist/docs/SingleSelectFilter/sections.tsx +69 -0
  308. package/dist/docs/SingleSelectFilter/server-data.tsx +53 -0
  309. package/dist/docs/SingleSelectFilter/static-data.tsx +25 -0
  310. package/dist/docs/SingleSelectFilter.md +11 -374
  311. package/dist/docs/Sortable Columns/basic-sortable-column.tsx +90 -0
  312. package/dist/docs/Sortable Columns/custom-sort-order.tsx +94 -0
  313. package/dist/docs/Sortable Columns.md +2 -188
  314. package/dist/docs/Suggestions/carousel-customization.tsx +27 -0
  315. package/dist/docs/Suggestions/carousel-vs-container-layout.tsx +40 -0
  316. package/dist/docs/Suggestions/custom-card-rendering.tsx +99 -0
  317. package/dist/docs/Suggestions/with-transform-function.tsx +56 -0
  318. package/dist/docs/Suggestions.md +4 -230
  319. package/dist/docs/SummaryBar/error.tsx +75 -0
  320. package/dist/docs/SummaryBar/loading-with-error.tsx +96 -0
  321. package/dist/docs/SummaryBar/loading-with-success.tsx +105 -0
  322. package/dist/docs/SummaryBar/loading.tsx +73 -0
  323. package/dist/docs/SummaryBar/success.tsx +73 -0
  324. package/dist/docs/SummaryBar.md +11 -437
  325. package/dist/docs/Table/basic-table.tsx +74 -0
  326. package/dist/docs/Table/cursor-pagination.tsx +61 -0
  327. package/dist/docs/Table/fetch-total-async.tsx +83 -0
  328. package/dist/docs/Table/filters.tsx +152 -0
  329. package/dist/docs/Table/header.tsx +85 -0
  330. package/dist/docs/Table/horizontal-scroll.tsx +90 -0
  331. package/dist/docs/Table/table-disabled-rows.tsx +99 -0
  332. package/dist/docs/Table/using-ambassador.tsx +72 -0
  333. package/dist/docs/Table/using-with-external-data-source.tsx +79 -0
  334. package/dist/docs/Table/virtual.tsx +77 -0
  335. package/dist/docs/Table Sections/demo.tsx +96 -0
  336. package/dist/docs/Table Sections/with-badge.tsx +107 -0
  337. package/dist/docs/Table Sections/with-collapse.tsx +104 -0
  338. package/dist/docs/Table Sections/with-summary.tsx +118 -0
  339. package/dist/docs/Table Sections.md +4 -433
  340. package/dist/docs/Table.md +16 -961
  341. package/dist/docs/TableColumn.md +6 -21
  342. package/dist/docs/TableDragAndDrop/save-order-mode.tsx +85 -0
  343. package/dist/docs/TableDragAndDrop/specific-filters.tsx +135 -0
  344. package/dist/docs/TableDragAndDrop/specific-tabs.tsx +117 -0
  345. package/dist/docs/TableDragAndDrop/table.tsx +83 -0
  346. package/dist/docs/TableDragAndDrop.md +4 -428
  347. package/dist/docs/TableFolders/demo.tsx +101 -0
  348. package/dist/docs/TableFolders/table-folders.tsx +101 -0
  349. package/dist/docs/TableFolders/with-tags.tsx +124 -0
  350. package/dist/docs/TableFolders.md +9 -391
  351. package/dist/docs/TableFoldersState.md +6 -5
  352. package/dist/docs/TableGridSwitch/basic-table-grid-switch.tsx +91 -0
  353. package/dist/docs/TableGridSwitch/custom-columns.tsx +94 -0
  354. package/dist/docs/TableGridSwitch.md +8 -255
  355. package/dist/docs/TableGridSwitchFolders/demo.tsx +103 -0
  356. package/dist/docs/TableGridSwitchFolders/tablegridswitchfolders.tsx +103 -0
  357. package/dist/docs/TableGridSwitchFolders/with-tags.tsx +124 -0
  358. package/dist/docs/TableGridSwitchFolders.md +3 -336
  359. package/dist/docs/TableGridSwitchState.md +6 -6
  360. package/dist/docs/TableState.md +6 -7
  361. package/dist/docs/TableTopNotification/base.tsx +92 -0
  362. package/dist/docs/TableTopNotification/nested-table.tsx +114 -0
  363. package/dist/docs/TableTopNotification.md +8 -235
  364. package/dist/docs/TabsFilter/basic-tabs.tsx +96 -0
  365. package/dist/docs/TabsFilter/disabled-tabs.tsx +100 -0
  366. package/dist/docs/TabsFilter/tabs-with-a-basic-counter.tsx +149 -0
  367. package/dist/docs/TabsFilter/tabs-with-a-counter-badge.tsx +153 -0
  368. package/dist/docs/TabsFilter.md +10 -515
  369. package/dist/docs/Tags/basic.tsx +90 -0
  370. package/dist/docs/Tags/custom-config-for-tags-column.tsx +95 -0
  371. package/dist/docs/Tags/customized-filter-position.tsx +121 -0
  372. package/dist/docs/Tags/customized-tags-column-position.tsx +94 -0
  373. package/dist/docs/Tags/on-table-with-folders.tsx +124 -0
  374. package/dist/docs/Tags.md +5 -534
  375. package/dist/docs/ToolbarCollectionState.md +1 -1
  376. package/dist/docs/ToolbarFilters/2-filters-with-a-title.tsx +162 -0
  377. package/dist/docs/ToolbarFilters/2-filters-without-a-title.tsx +158 -0
  378. package/dist/docs/ToolbarFilters/add-filter-presets-for-future-dates.tsx +108 -0
  379. package/dist/docs/ToolbarFilters/apply-changes.tsx +167 -0
  380. package/dist/docs/ToolbarFilters/custom-label-for-tags.tsx +167 -0
  381. package/dist/docs/ToolbarFilters/customize-filter-display-tags.tsx +163 -0
  382. package/dist/docs/ToolbarFilters/mini-toolbar-with-filters.tsx +121 -0
  383. package/dist/docs/ToolbarFilters/mini-toolbar.tsx +80 -0
  384. package/dist/docs/ToolbarFilters/more-than-2-filters.tsx +164 -0
  385. package/dist/docs/ToolbarFilters/postpone-collection-filter-initial-fetch.tsx +158 -0
  386. package/dist/docs/ToolbarFilters.md +17 -1466
  387. package/dist/docs/ToolbarSecondaryActions/grouped-actions-with-dividers.tsx +91 -0
  388. package/dist/docs/ToolbarSecondaryActions/mixed-buttons-and-dropdown-menus.tsx +80 -0
  389. package/dist/docs/ToolbarSecondaryActions/multiple-actions-with-dropdown-menus.tsx +88 -0
  390. package/dist/docs/ToolbarSecondaryActions/multiple-secondary-action-buttons.tsx +73 -0
  391. package/dist/docs/ToolbarSecondaryActions.md +4 -340
  392. package/dist/docs/ToolbarTitle/title-and-count.tsx +60 -0
  393. package/dist/docs/ToolbarTitle/title-count-and-the-collection-s-item-limit.tsx +60 -0
  394. package/dist/docs/ToolbarTitle/title-subtitle-and-learn-more.tsx +68 -0
  395. package/dist/docs/ToolbarTitle/title.tsx +60 -0
  396. package/dist/docs/ToolbarTitle.md +4 -256
  397. package/dist/docs/Views/basic-view-that-can-be-chosen.tsx +142 -0
  398. package/dist/docs/Views/basic-view.tsx +134 -0
  399. package/dist/docs/Views/view-with-selected-columns.tsx +142 -0
  400. package/dist/docs/Views/views-separated-by-category-in-the-dropdown.tsx +209 -0
  401. package/dist/docs/Views.md +4 -635
  402. package/dist/docs/WidgetsFormProvider.md +9 -0
  403. package/dist/docs/WixPatternsBMProvider.md +9 -0
  404. package/dist/docs/WixPatternsBaseProvider.md +6 -3
  405. package/dist/docs/WixPatternsEssentialsProvider.md +9 -0
  406. package/dist/docs/WixPatternsGizaProvider.md +9 -0
  407. package/dist/docs/WixPatternsProvider.md +9 -0
  408. package/dist/docs/arrayFilter.md +6 -12
  409. package/dist/docs/customFilter.md +6 -19
  410. package/dist/docs/dateRangeFilter.Factories.md +6 -13
  411. package/dist/docs/deleteSecondaryAction.md +6 -13
  412. package/dist/docs/idNameArrayFilter.md +6 -12
  413. package/dist/docs/index.json +170 -96
  414. package/dist/docs/operatorFilter.md +6 -13
  415. package/dist/docs/stringFilter.md +6 -4
  416. package/dist/docs/stringsArrayFilter.md +6 -12
  417. package/dist/docs/useCreateCollection.md +6 -19
  418. package/dist/docs/useEntityPage.md +6 -13
  419. package/dist/docs/useFilterCollection.md +6 -13
  420. package/dist/docs/useGridCollection.md +6 -19
  421. package/dist/docs/useGridFolders.md +6 -4
  422. package/dist/docs/useOptimisticActions/custom-error-handling.tsx +178 -0
  423. package/dist/docs/useOptimisticActions/default-behaviour.tsx +155 -0
  424. package/dist/docs/useOptimisticActions/error-handling-and-retries.tsx +175 -0
  425. package/dist/docs/useOptimisticActions/items-orders.tsx +165 -0
  426. package/dist/docs/useOptimisticActions/revision-handling.tsx +109 -0
  427. package/dist/docs/useOptimisticActions/success-toast-with-undo.tsx +164 -0
  428. package/dist/docs/useOptimisticActions/update-with-query.tsx +195 -0
  429. package/dist/docs/useOptimisticActions.md +13 -1164
  430. package/dist/docs/usePatternsNavigate.md +11 -0
  431. package/dist/docs/usePickerModal.md +6 -16
  432. package/dist/docs/useStaticListFilterCollection.md +6 -4
  433. package/dist/docs/useTableCollection.md +6 -19
  434. package/dist/docs/useTableFolders.md +6 -4
  435. package/dist/docs/useTableGridSwitchCollection.md +6 -19
  436. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  437. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  438. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  439. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  440. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  441. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  442. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  443. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  444. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  445. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  446. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  447. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  448. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  449. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  450. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  451. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  452. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js +4 -3
  453. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  454. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js +2 -2
  455. package/dist/esm/components/CustomFieldModal/CustomFieldTypeDropdown.js.map +1 -1
  456. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  457. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  458. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  459. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  460. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  461. package/dist/esm/components/EditableTable/cellTypes/array/Edit.st.css.js +2 -2
  462. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  463. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  464. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  465. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  466. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  467. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  468. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  469. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  470. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  471. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  472. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  473. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  474. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  475. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  476. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  477. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  478. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  479. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
  480. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  481. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  482. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  483. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  484. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  485. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  486. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  487. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  488. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  489. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  490. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  491. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  492. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  493. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  494. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  495. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  496. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  497. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  498. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  499. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  500. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  501. package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
  502. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  503. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  504. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  505. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  506. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  507. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  508. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  509. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  510. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  511. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  512. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  513. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  514. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  515. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  516. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  517. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  518. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  519. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  520. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  521. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  522. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  523. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  524. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  525. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  526. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  527. package/dist/esm/components/common.st.css.js +2 -2
  528. package/dist/esm/schema/entityPageFieldManagement.js +2 -0
  529. package/dist/esm/schema/entityPageFieldManagement.js.map +1 -1
  530. package/dist/esm/state/CollectionFieldsSourceState.js +2 -0
  531. package/dist/esm/state/CollectionFieldsSourceState.js.map +1 -1
  532. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  533. package/dist/esm/state/CustomFields/CustomFieldsPanelState.js +4 -0
  534. package/dist/esm/state/CustomFields/CustomFieldsPanelState.js.map +1 -1
  535. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  536. package/dist/esm/state/ToolbarCollectionState.js +6 -2
  537. package/dist/esm/state/ToolbarCollectionState.js.map +1 -1
  538. package/dist/esm/styles.global.css +2 -2
  539. package/dist/esm/version.js +1 -1
  540. package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
  541. package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
  542. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  543. package/dist/types/components/CustomFieldModal/CustomFieldForm.d.ts.map +1 -1
  544. package/dist/types/components/CustomFieldModal/CustomFieldTypeDropdown.d.ts.map +1 -1
  545. package/dist/types/components/EditableTable/cellTypes/boolean/View.st.css.d.ts.map +1 -1
  546. package/dist/types/components/EditableTable/cellTypes/date/Edit.st.css.d.ts.map +1 -1
  547. package/dist/types/components/EditableTable/cellTypes/datetime/Edit.st.css.d.ts.map +1 -1
  548. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -1
  549. package/dist/types/components/EditableTable/cellTypes/number/Edit.st.css.d.ts.map +1 -1
  550. package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
  551. package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
  552. package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
  553. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  554. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  555. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  556. package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
  557. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  558. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  559. package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
  560. package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
  561. package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
  562. package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
  563. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  564. package/dist/types/components/ToolbarItemBox/ToolbarItemBox.st.css.d.ts.map +1 -1
  565. package/dist/types/schema/entityPageFieldManagement.d.ts.map +1 -1
  566. package/dist/types/state/CollectionFieldsSourceState.d.ts +2 -6
  567. package/dist/types/state/CollectionFieldsSourceState.d.ts.map +1 -1
  568. package/dist/types/state/CustomFields/CustomFieldsPanelState.d.ts +2 -4
  569. package/dist/types/state/CustomFields/CustomFieldsPanelState.d.ts.map +1 -1
  570. package/dist/types/state/ManageFieldsSource.d.ts +2 -6
  571. package/dist/types/state/ManageFieldsSource.d.ts.map +1 -1
  572. package/dist/types/state/ToolbarCollectionState.d.ts +2 -4
  573. package/dist/types/state/ToolbarCollectionState.d.ts.map +1 -1
  574. package/dist/types/version.d.ts +1 -1
  575. package/package.json +7 -7
  576. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  577. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  578. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  579. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  580. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  581. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  582. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  583. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  584. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  585. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  586. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  587. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  588. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  589. package/src/components/CustomFieldModal/CustomFieldForm.tsx +7 -2
  590. package/src/components/CustomFieldModal/CustomFieldTypeDropdown.tsx +3 -1
  591. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  592. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  593. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  594. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  595. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  596. package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
  597. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  598. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  599. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  600. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  601. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  602. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  603. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  604. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  605. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  606. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  607. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  608. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +2 -2
  609. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  610. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  611. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  612. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  613. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  614. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  615. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  616. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  617. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  618. package/src/components/Fade/Fade.st.css.ts +2 -2
  619. package/src/components/Heading/Heading.st.css.ts +2 -2
  620. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  621. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  622. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  623. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  624. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  625. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  626. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  627. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  628. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  629. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  630. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  631. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  632. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  633. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  634. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  635. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  636. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  637. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  638. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  639. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  640. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  641. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  642. package/src/components/common.st.css.ts +2 -2
  643. package/src/schema/entityPageFieldManagement.ts +2 -0
  644. package/src/state/CollectionFieldsSourceState.ts +4 -5
  645. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  646. package/src/state/CustomFields/CustomFieldsPanelState.ts +9 -5
  647. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  648. package/src/state/ManageFieldsSource.ts +2 -6
  649. package/src/state/ToolbarCollectionState.ts +14 -2
  650. package/src/styles.global.css +2 -2
  651. package/src/version.ts +1 -1
@@ -31,739 +31,25 @@ import { defineFieldType } from '@wix/patterns';
31
31
 
32
32
  What you get: a read-only table where the custom Progress field renders as a progress bar (the `table` slot) and a Progress filter in the toolbar (the `filter` slot — check a bucket and the backend applies the raw filter value). Manage fields can add functionality and visibility on top: the field's actions and show/hide controls appear in the manage-fields and customize-columns panels.
33
33
 
34
- ```tsx
35
- import React from 'react';
36
- import { CollectionPage } from '@wix/patterns/page';
37
- import {
38
- Table,
39
- defineFieldType,
40
- idNameArrayFilter,
41
- MultiInlineCheckboxFilter,
42
- } from '@wix/patterns';
43
- import type { Field, FilterProps } from '@wix/patterns';
44
- import { useSchemaSource, useTableCollection } from '@wix/patterns/schema';
45
- import type {
46
- CollectionBackend,
47
- LoadedSchema,
48
- Schema,
49
- } from '@wix/patterns/schema';
50
-
51
- type Task = { id: string; name: string; progress?: number };
52
- type Bucket = { id: string; name: string };
53
-
54
- function CustomFieldTypeTable() {
55
- const tasks: Task[] = [
56
- { id: '1', name: 'Design homepage', progress: 80 },
57
- { id: '2', name: 'Set up payments', progress: 100 },
58
- { id: '3', name: 'Write product descriptions', progress: 25 },
59
- { id: '4', name: 'Configure shipping', progress: 55 },
60
- { id: '5', name: 'Launch campaign', progress: 0 },
61
- ];
62
-
63
- const ProgressCell = ({ value }: { value: number }) => (
64
- <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
65
- <div
66
- style={{
67
- width: '80px',
68
- height: '6px',
69
- borderRadius: '3px',
70
- background: '#DFE5EB',
71
- overflow: 'hidden',
72
- }}
73
- >
74
- <div
75
- style={{
76
- width: `${value ?? 0}%`,
77
- height: '100%',
78
- background: '#3899EC',
79
- }}
80
- />
81
- </div>
82
- <span>{value ?? 0}%</span>
83
- </div>
84
- );
85
-
86
- // The option id encodes the range; the backend parses it back.
87
- const BUCKETS: Bucket[] = [
88
- { id: '0-33', name: 'Low (0-33%)' },
89
- { id: '34-66', name: 'Medium (34-66%)' },
90
- { id: '67-100', name: 'High (67-100%)' },
91
- ];
92
-
93
- const progressFieldType = defineFieldType<number>({
94
- type: 'docs.progress',
95
- display: {
96
- label: 'Progress',
97
- icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
98
- },
99
- filter: {
100
- createFilter: () => idNameArrayFilter<Bucket>(),
101
- Component: (props: FilterProps<Bucket[]>) => (
102
- <MultiInlineCheckboxFilter {...props} data={BUCKETS} />
103
- ),
104
- },
105
- value: { defaultValue: 0, isEmpty: (v) => v == null },
106
- capabilities: { sortable: true },
107
- table: {
108
- CellComponent: ({ value }) => <ProgressCell value={value} />,
109
- width: '160px',
110
- },
111
- actions: {
112
- items: [
113
- {
114
- key: 'about-progress',
115
- label: 'About this field type',
116
- onClick: (field) =>
117
- window.alert(`"${field.displayName}" is a custom field type.`),
118
- },
119
- ],
120
- },
121
- });
122
-
123
- // The field is typed CUSTOM and points at the definition through `customType`.
124
- const progressField: Field = {
125
- id: 'progress',
126
- displayName: 'Progress',
127
- type: 'CUSTOM',
128
- customType: 'docs.progress',
129
- };
130
-
131
- const schema: Schema = {
132
- id: 'docs-custom-field-type-table',
133
- fields: { progress: progressField },
134
- displayField: 'name',
135
- idField: 'id',
136
- };
137
-
138
- // Like filtering, sorting is delegated to the backend: `find` receives
139
- // `sort` ({ fieldName, order }[]) and owns applying it.
140
- const backend: CollectionBackend<Task> = {
141
- find: async ({ search = '', filters = {}, sort = [] }) => {
142
- const buckets = (filters as { progress?: Bucket[] }).progress;
143
- const found = tasks.filter(
144
- (task) =>
145
- task.name.toLowerCase().includes(search.toLowerCase()) &&
146
- (!buckets?.length ||
147
- buckets.some(({ id }) => {
148
- // parseInt, not Number — the example scope shadows `Number`.
149
- const [min, max] = id
150
- .split('-')
151
- .map((part) => parseInt(part, 10));
152
- const progress = task.progress ?? 0;
153
- return progress >= min && progress <= max;
154
- })),
155
- );
156
- if (sort.length) {
157
- const [{ fieldName, order }] = sort;
158
- found.sort((a, b) => {
159
- const left = a[fieldName as keyof Task] ?? 0;
160
- const right = b[fieldName as keyof Task] ?? 0;
161
- const diff = left < right ? -1 : left > right ? 1 : 0;
162
- return order === 'asc' ? diff : -diff;
163
- });
164
- }
165
- return { items: found, total: found.length };
166
- },
167
- };
168
-
169
- const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
170
- schema,
171
- backend,
172
- });
173
-
174
- const source = useSchemaSource<Task>({
175
- collectionId: 'docs-custom-field-type-table',
176
- loadSchema,
177
- fieldTypes: [progressFieldType],
178
- });
179
- const state = useTableCollection<Task>(source);
180
-
181
- return (
182
- <CollectionPage height="400px">
183
- <CollectionPage.Header title={{ text: 'Tasks' }} />
184
- <CollectionPage.Content>
185
- <Table
186
- state={state}
187
- columns={[
188
- {
189
- id: 'name',
190
- title: 'Name',
191
- render: (task) => task.name,
192
- width: '220px',
193
- },
194
- ]}
195
- />
196
- </CollectionPage.Content>
197
- </CollectionPage>
198
- );
199
- }
200
- ```
34
+ Example code: read `dist/docs/CustomFieldType/table-cell-and-filter.tsx`
201
35
 
202
36
  ### Editable cell
203
37
 
204
38
  What you get: the same field type in an editable spreadsheet — the `editableTable` slot renders progress bars in view mode and a number input in edit mode. Try it: double-click a Progress cell (or focus it and type a digit) to edit — Enter or Tab commits, Escape cancels, values clamp to 0–100 on commit (`normalizeOnCommit`), and copy/paste round-trips through `serialize`/`deserialize`. The Progress column's header menu has "This is action only for progress bar" (the `actions` slot) — it appears only on this field type. Filtering is opted out with `{ filterable: false }`, so the toolbar shows no Progress filter.
205
39
 
206
- ```tsx
207
- import React from 'react';
208
- import { CollectionPage } from '@wix/patterns/page';
209
- import { EditableTable, defineFieldType } from '@wix/patterns';
210
- import type { CellEditProps, EditableColumn, Field } from '@wix/patterns';
211
- import {
212
- useSchemaSource,
213
- useEditableTableCollection,
214
- } from '@wix/patterns/schema';
215
- import type {
216
- CollectionBackend,
217
- LoadedSchema,
218
- Schema,
219
- } from '@wix/patterns/schema';
220
-
221
- type Task = { id: string; name: string; progress?: number };
222
-
223
- function CustomFieldTypeSpreadsheet() {
224
- // Plain object store (the live-example scope shadows the global `Map`).
225
- const [store] = React.useState<{ tasks: Task[]; nextId: number }>(() => ({
226
- nextId: 6,
227
- tasks: [
228
- { id: '1', name: 'Design homepage', progress: 80 },
229
- { id: '2', name: 'Set up payments', progress: 100 },
230
- { id: '3', name: 'Write product descriptions', progress: 25 },
231
- { id: '4', name: 'Configure shipping', progress: 55 },
232
- { id: '5', name: 'Launch campaign', progress: 0 },
233
- ],
234
- }));
235
-
236
- const clamp = (value: number) =>
237
- Math.max(0, Math.min(100, Math.round(value) || 0));
238
-
239
- const ProgressCellView = ({ value }: { value: number }) => (
240
- <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
241
- <div
242
- style={{
243
- width: '80px',
244
- height: '6px',
245
- borderRadius: '3px',
246
- background: '#DFE5EB',
247
- overflow: 'hidden',
248
- }}
249
- >
250
- <div
251
- style={{
252
- width: `${clamp(value ?? 0)}%`,
253
- height: '100%',
254
- background: '#3899EC',
255
- }}
256
- />
257
- </div>
258
- <span>{clamp(value ?? 0)}%</span>
259
- </div>
260
- );
261
-
262
- const ProgressCellEdit = ({
263
- value,
264
- onChange,
265
- onCommit,
266
- onCancel,
267
- inputRef,
268
- }: CellEditProps<number>) => {
269
- const input = React.useRef<HTMLInputElement>(null);
270
- React.useImperativeHandle(inputRef, () => ({
271
- focus: () => input.current?.focus(),
272
- }));
273
- return (
274
- <input
275
- ref={input}
276
- type="number"
277
- min={0}
278
- max={100}
279
- value={value ?? 0}
280
- // parseFloat, not Number — the example scope shadows `Number`.
281
- onChange={(event) => onChange(parseFloat(event.target.value))}
282
- onKeyDown={(event) => {
283
- if (event.key === 'Enter') {
284
- onCommit();
285
- }
286
- if (event.key === 'Escape') {
287
- onCancel();
288
- }
289
- }}
290
- style={{
291
- width: '100%',
292
- height: '100%',
293
- border: 'none',
294
- outline: 'none',
295
- }}
296
- />
297
- );
298
- };
299
-
300
- const progressFieldType = defineFieldType<number>({
301
- type: 'docs.progress',
302
- display: {
303
- label: 'Progress',
304
- icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
305
- },
306
- // This example focuses on the editable cell; opt out of filtering explicitly.
307
- filter: { filterable: false },
308
- value: { defaultValue: 0, isEmpty: (v) => v == null },
309
- capabilities: { sortable: true },
310
- editableTable: {
311
- ViewComponent: ProgressCellView,
312
- EditComponent: ProgressCellEdit,
313
- serialize: (v) => String(clamp(v ?? 0)),
314
- deserialize: (raw) => clamp(parseFloat(raw)),
315
- normalizeOnCommit: (v) => clamp(v ?? 0),
316
- onTypeToEdit: ({ key }) =>
317
- /^\d$/.test(key) ? { value: parseInt(key, 10) } : undefined,
318
- },
319
- // Items here appear on the field's actions menus (e.g. the editable
320
- // table's column header menu) — only for fields of this type.
321
- actions: {
322
- items: [
323
- {
324
- key: 'progress-only-action',
325
- label: 'This is action only for progress bar',
326
- onClick: () => window.alert('This is action only for progress bar'),
327
- },
328
- ],
329
- },
330
- });
331
-
332
- const progressField: Field = {
333
- id: 'progress',
334
- displayName: 'Progress',
335
- type: 'CUSTOM',
336
- customType: 'docs.progress',
337
- };
338
-
339
- const schema: Schema = {
340
- id: 'docs-custom-field-type-editable',
341
- fields: { progress: progressField },
342
- displayField: 'name',
343
- idField: 'id',
344
- itemPermissions: { createItem: true, updateItem: true, deleteItem: true },
345
- };
346
-
347
- const backend: CollectionBackend<Task> = {
348
- // Sorting is delegated to the backend: `find` receives `sort`
349
- // ({ fieldName, order }[]) and owns applying it.
350
- find: async ({ search = '', sort = [] }) => {
351
- const found = store.tasks.filter((task) =>
352
- task.name.toLowerCase().includes(search.toLowerCase()),
353
- );
354
- if (sort.length) {
355
- const [{ fieldName, order }] = sort;
356
- found.sort((a, b) => {
357
- const left = a[fieldName as keyof Task] ?? 0;
358
- const right = b[fieldName as keyof Task] ?? 0;
359
- const diff = left < right ? -1 : left > right ? 1 : 0;
360
- return order === 'asc' ? diff : -diff;
361
- });
362
- }
363
- return { items: found, total: found.length };
364
- },
365
- create: async (entity) => {
366
- const created = { id: `task-${store.nextId++}`, name: '', ...entity };
367
- store.tasks = [...store.tasks, created];
368
- return created;
369
- },
370
- update: async (entity) => {
371
- store.tasks = store.tasks.map((task) =>
372
- task.id === entity.id ? entity : task,
373
- );
374
- return entity;
375
- },
376
- bulkDelete: async (entityIds) => {
377
- store.tasks = store.tasks.filter((task) => !entityIds.includes(task.id));
378
- },
379
- };
380
-
381
- const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
382
- schema,
383
- backend,
384
- });
385
-
386
- const columns: EditableColumn<Task>[] = [
387
- {
388
- id: 'name',
389
- title: 'Name',
390
- cellType: 'text',
391
- getValue: (task) => task.name,
392
- setValue: (task, value) => ({ ...task, name: value }),
393
- width: 220,
394
- },
395
- ];
396
-
397
- const source = useSchemaSource<Task>({
398
- collectionId: 'docs-custom-field-type-editable',
399
- loadSchema,
400
- fieldTypes: [progressFieldType],
401
- });
402
- const state = useEditableTableCollection<Task>(source);
403
-
404
- return (
405
- <CollectionPage height="400px">
406
- <CollectionPage.Header title={{ text: 'Tasks' }} />
407
- <CollectionPage.Content>
408
- <EditableTable state={state} columns={columns} />
409
- </CollectionPage.Content>
410
- </CollectionPage>
411
- );
412
- }
413
- ```
40
+ Example code: read `dist/docs/CustomFieldType/editable-cell.tsx`
414
41
 
415
42
  ### Add-field modal
416
43
 
417
44
  What you get: a custom type users can create fields of. The `fieldModal` slot opts the Progress type into the add-field modal — click the "+" header button, pick "Progress" in the type picker (it shows the definition's label, icons, subtitle, and group), name it, and confirm. The new field arrives at the source's `fieldActions.addField` as `{ type: 'CUSTOM', customType: 'docs.progress' }` and its column appears immediately, rendered by the type's `editableTable` slot. Requires `schemaPermissions.createField` and `fieldActions.addField` on the source. Note the picker offers only what the source declares (`fieldModal.types`) plus creatable custom types, and persistence belongs to the source's `FieldActions` — this demo stores fields in memory, so they reset on refresh; a source backed by a real service persists them (see the API tab).
418
45
 
419
- ```tsx
420
- import React from 'react';
421
- import { CollectionPage } from '@wix/patterns/page';
422
- import { EditableTable, defineFieldType } from '@wix/patterns';
423
- import type { EditableColumn, Field } from '@wix/patterns';
424
- import {
425
- useSchemaSource,
426
- useEditableTableCollection,
427
- } from '@wix/patterns/schema';
428
- import type {
429
- CollectionBackend,
430
- FieldActions,
431
- LoadedSchema,
432
- Schema,
433
- } from '@wix/patterns/schema';
434
-
435
- type Task = { id: string; name: string; progress?: number };
436
-
437
- function CustomFieldTypeFieldModal() {
438
- // Plain object store (the live-example scope shadows the global `Map`).
439
- const [store] = React.useState<{ tasks: Task[]; nextId: number }>(() => ({
440
- nextId: 4,
441
- tasks: [
442
- { id: '1', name: 'Design homepage', progress: 80 },
443
- { id: '2', name: 'Set up payments', progress: 100 },
444
- { id: '3', name: 'Write product descriptions', progress: 25 },
445
- ],
446
- }));
447
-
448
- const clamp = (value: number) =>
449
- Math.max(0, Math.min(100, Math.round(value) || 0));
450
-
451
- const ProgressCellView = ({ value }: { value: number }) => (
452
- <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
453
- <div
454
- style={{
455
- width: '80px',
456
- height: '6px',
457
- borderRadius: '3px',
458
- background: '#DFE5EB',
459
- overflow: 'hidden',
460
- }}
461
- >
462
- <div
463
- style={{
464
- width: `${clamp(value ?? 0)}%`,
465
- height: '100%',
466
- background: '#3899EC',
467
- }}
468
- />
469
- </div>
470
- <span>{clamp(value ?? 0)}%</span>
471
- </div>
472
- );
473
-
474
- const progressFieldType = defineFieldType<number>({
475
- type: 'docs.progress',
476
- display: {
477
- label: 'Progress',
478
- icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
479
- },
480
- filter: { filterable: false },
481
- value: { defaultValue: 0, isEmpty: (v) => v == null },
482
- capabilities: { sortable: true },
483
- editableTable: {
484
- ViewComponent: ProgressCellView,
485
- serialize: (v) => String(clamp(v ?? 0)),
486
- deserialize: (raw) => clamp(parseFloat(raw)),
487
- },
488
- // Opts the type into the add-field modal: it shows in the type picker with
489
- // the definition's label and icons, and a created field arrives at the
490
- // source's addField as { type: 'CUSTOM', customType: 'docs.progress' }.
491
- fieldModal: {
492
- creatable: true,
493
- namePlaceholder: 'e.g. Progress',
494
- subtitle: 'A 0–100% progress bar',
495
- group: 'Custom types',
496
- },
497
- });
498
-
499
- const [schema] = React.useState<Schema>(() => ({
500
- id: 'docs-custom-field-type-modal',
501
- fields: {},
502
- displayField: 'name',
503
- idField: 'id',
504
- itemPermissions: { createItem: true, updateItem: true, deleteItem: true },
505
- // Enables the add-field flow — the editable table shows the "+" header
506
- // button, which opens the add-field modal.
507
- schemaPermissions: {
508
- createField: true,
509
- updateField: true,
510
- deleteField: true,
511
- },
512
- }));
513
-
514
- // In-memory field CRUD: each mutation returns the updated fields map, which
515
- // the source merges into the loaded schema so the columns update in place.
516
- const fieldActions: FieldActions = {
517
- addField: async (field) => {
518
- schema.fields = { ...schema.fields, [field.id]: field };
519
- return schema.fields;
520
- },
521
- editField: async (fieldId, updates) => {
522
- const existing = schema.fields[fieldId];
523
- if (existing) {
524
- schema.fields = {
525
- ...schema.fields,
526
- [fieldId]: { ...existing, ...updates } as Field,
527
- };
528
- }
529
- return schema.fields;
530
- },
531
- deleteField: async (fieldId) => {
532
- const rest = { ...schema.fields };
533
- delete rest[fieldId];
534
- schema.fields = rest;
535
- return schema.fields;
536
- },
537
- };
538
-
539
- const backend: CollectionBackend<Task> = {
540
- find: async ({ search = '', sort = [] }) => {
541
- const found = store.tasks.filter((task) =>
542
- task.name.toLowerCase().includes(search.toLowerCase()),
543
- );
544
- if (sort.length) {
545
- const [{ fieldName, order }] = sort;
546
- found.sort((a, b) => {
547
- const left = a[fieldName as keyof Task] ?? 0;
548
- const right = b[fieldName as keyof Task] ?? 0;
549
- const diff = left < right ? -1 : left > right ? 1 : 0;
550
- return order === 'asc' ? diff : -diff;
551
- });
552
- }
553
- return { items: found, total: found.length };
554
- },
555
- create: async (entity) => {
556
- const created = { id: `task-${store.nextId++}`, name: '', ...entity };
557
- store.tasks = [...store.tasks, created];
558
- return created;
559
- },
560
- update: async (entity) => {
561
- store.tasks = store.tasks.map((task) =>
562
- task.id === entity.id ? entity : task,
563
- );
564
- return entity;
565
- },
566
- bulkDelete: async (entityIds) => {
567
- store.tasks = store.tasks.filter((task) => !entityIds.includes(task.id));
568
- },
569
- };
570
-
571
- const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
572
- schema,
573
- backend,
574
- fieldActions,
575
- });
576
-
577
- const columns: EditableColumn<Task>[] = [
578
- {
579
- id: 'name',
580
- title: 'Name',
581
- cellType: 'text',
582
- getValue: (task) => task.name,
583
- setValue: (task, value) => ({ ...task, name: value }),
584
- width: 220,
585
- },
586
- ];
587
-
588
- const source = useSchemaSource<Task>({
589
- collectionId: 'docs-custom-field-type-modal',
590
- loadSchema,
591
- fieldTypes: [progressFieldType],
592
- // The modal renders only what the source declares: these standard picker
593
- // options plus every creatable custom type (appended automatically).
594
- fieldModal: {
595
- text: {
596
- addTitle: 'Add a field',
597
- editTitle: 'Edit field',
598
- },
599
- types: [
600
- {
601
- patternsType: 'SHORT_TEXT',
602
- label: 'Text',
603
- subtitle: 'Titles, paragraph',
604
- group: 'Essentials',
605
- },
606
- {
607
- patternsType: 'NUMBER',
608
- label: 'Number',
609
- subtitle: 'ID, rating, order number',
610
- group: 'Essentials',
611
- },
612
- ],
613
- },
614
- });
615
- const state = useEditableTableCollection<Task>(source);
616
-
617
- return (
618
- <CollectionPage height="400px">
619
- <CollectionPage.Header title={{ text: 'Tasks' }} />
620
- <CollectionPage.Content>
621
- <EditableTable state={state} columns={columns} />
622
- </CollectionPage.Content>
623
- </CollectionPage>
624
- );
625
- }
626
- ```
46
+ Example code: read `dist/docs/CustomFieldType/add-field-modal.tsx`
627
47
 
628
48
  ### Entity-page form
629
49
 
630
50
  What you get: the custom type in the entity-page form. The `form` slot's component renders only the Progress input — it receives `value`/`onChange` props, and the entity page owns the form wiring (registration on the form, validation from the definition's `value.validate`) and the field UI (label, required marker, error message). Without a `form` slot, an entity page rendering the field throws in development (production skips it). Try it: change the progress, save from the header, and the value round-trips through the source's backend.
631
51
 
632
- ```tsx
633
- import React from 'react';
634
- import { defineFieldType } from '@wix/patterns';
635
- import type { Field, FormFieldComponentProps } from '@wix/patterns';
636
- import { useForm } from '@wix/patterns/form';
637
- import {
638
- EntityPage,
639
- EntityPageFieldsCard,
640
- useEntityPage,
641
- useSchemaSource,
642
- } from '@wix/patterns/schema';
643
- import type {
644
- CollectionBackend,
645
- LoadedSchema,
646
- Schema,
647
- } from '@wix/patterns/schema';
648
- import { Input } from '@wix/design-system';
649
-
650
- type Task = { id: string; name: string; progress?: number };
651
-
652
- function CustomFieldTypeEntityPage() {
653
- // Plain object store (the live-example scope shadows the global `Map`).
654
- const [store] = React.useState<{ task: Task }>(() => ({
655
- task: { id: '1', name: 'Design homepage', progress: 80 },
656
- }));
657
-
658
- const clamp = (value: number) =>
659
- Math.max(0, Math.min(100, Math.round(value) || 0));
660
-
661
- // The entity-page form input. The entity page owns the form wiring and the
662
- // field UI (label, error message from the definition's value.validate) —
663
- // this renders only the input.
664
- const ProgressFormField = ({
665
- value,
666
- onChange,
667
- onBlur,
668
- }: FormFieldComponentProps<number>) => (
669
- <Input
670
- type="number"
671
- min={0}
672
- max={100}
673
- suffix={<Input.Affix>%</Input.Affix>}
674
- value={String(value ?? 0)}
675
- // parseFloat, not Number — the example scope shadows `Number`.
676
- onChange={(event) => onChange(clamp(parseFloat(event.target.value)))}
677
- onBlur={onBlur}
678
- />
679
- );
680
-
681
- const progressFieldType = defineFieldType<number>({
682
- type: 'docs.progress',
683
- display: {
684
- label: 'Progress',
685
- icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
686
- },
687
- filter: { filterable: false },
688
- value: {
689
- defaultValue: 0,
690
- isEmpty: (v) => v == null,
691
- // Runs on every surface that validates the field — the entity-page
692
- // form wires it into its own validation.
693
- validate: (v) =>
694
- v != null && (v < 0 || v > 100)
695
- ? 'Progress must be between 0 and 100'
696
- : null,
697
- },
698
- // Required once the field renders on an entity page — development throws
699
- // without it; production skips the field.
700
- form: { Component: ProgressFormField },
701
- });
702
-
703
- const progressField: Field = {
704
- id: 'progress',
705
- displayName: 'Progress',
706
- type: 'CUSTOM',
707
- customType: 'docs.progress',
708
- };
709
-
710
- const schema: Schema = {
711
- id: 'docs-custom-field-type-entity-page',
712
- fields: {
713
- name: { id: 'name', displayName: 'Name', type: 'SHORT_TEXT' } as Field,
714
- progress: progressField,
715
- },
716
- displayField: 'name',
717
- idField: 'id',
718
- };
719
-
720
- // The entity page reads and writes the entity through the source's backend:
721
- // `fetch` derives from `get`, saving from `update`.
722
- const backend: CollectionBackend<Task> = {
723
- find: async () => ({ items: [store.task], total: 1 }),
724
- get: async () => store.task,
725
- update: async (entity) => {
726
- store.task = entity;
727
- return entity;
728
- },
729
- };
730
-
731
- const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
732
- schema,
733
- backend,
734
- });
735
-
736
- const source = useSchemaSource<Task>({
737
- collectionId: 'docs-custom-field-type-entity-page',
738
- loadSchema,
739
- fieldTypes: [progressFieldType],
740
- });
741
-
742
- const form = useForm();
743
- const state = useEntityPage<Task>(source, {
744
- parentPageId: '',
745
- form,
746
- entityId: '1',
747
- saveSuccessToast: 'Saved',
748
- saveErrorToast: () => 'Failed to save',
749
- });
750
-
751
- return (
752
- <EntityPage state={state} dataHook="docs-custom-field-type-entity-page">
753
- <EntityPage.Header title={{ text: store.task.name }} />
754
- <EntityPage.Content>
755
- <EntityPage.MainContent>
756
- <EntityPageFieldsCard
757
- title="Fields"
758
- subtitle="The Progress field renders through its `form` slot"
759
- minHeight="204px"
760
- />
761
- </EntityPage.MainContent>
762
- </EntityPage.Content>
763
- </EntityPage>
764
- );
765
- }
766
- ```
52
+ Example code: read `dist/docs/CustomFieldType/entity-page-form.tsx`
767
53
 
768
54
  ## API
769
55