@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
@@ -0,0 +1,206 @@
1
+ import React from 'react';
2
+ import { CollectionPage } from '@wix/patterns/page';
3
+ import { EditableTable, defineFieldType } from '@wix/patterns';
4
+ import type { EditableColumn, Field } from '@wix/patterns';
5
+ import {
6
+ useSchemaSource,
7
+ useEditableTableCollection,
8
+ } from '@wix/patterns/schema';
9
+ import type {
10
+ CollectionBackend,
11
+ FieldActions,
12
+ LoadedSchema,
13
+ Schema,
14
+ } from '@wix/patterns/schema';
15
+
16
+ type Task = { id: string; name: string; progress?: number };
17
+
18
+ function CustomFieldTypeFieldModal() {
19
+ // Plain object store (the live-example scope shadows the global `Map`).
20
+ const [store] = React.useState<{ tasks: Task[]; nextId: number }>(() => ({
21
+ nextId: 4,
22
+ tasks: [
23
+ { id: '1', name: 'Design homepage', progress: 80 },
24
+ { id: '2', name: 'Set up payments', progress: 100 },
25
+ { id: '3', name: 'Write product descriptions', progress: 25 },
26
+ ],
27
+ }));
28
+
29
+ const clamp = (value: number) =>
30
+ Math.max(0, Math.min(100, Math.round(value) || 0));
31
+
32
+ const ProgressCellView = ({ value }: { value: number }) => (
33
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
34
+ <div
35
+ style={{
36
+ width: '80px',
37
+ height: '6px',
38
+ borderRadius: '3px',
39
+ background: '#DFE5EB',
40
+ overflow: 'hidden',
41
+ }}
42
+ >
43
+ <div
44
+ style={{
45
+ width: `${clamp(value ?? 0)}%`,
46
+ height: '100%',
47
+ background: '#3899EC',
48
+ }}
49
+ />
50
+ </div>
51
+ <span>{clamp(value ?? 0)}%</span>
52
+ </div>
53
+ );
54
+
55
+ const progressFieldType = defineFieldType<number>({
56
+ type: 'docs.progress',
57
+ display: {
58
+ label: 'Progress',
59
+ icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
60
+ },
61
+ filter: { filterable: false },
62
+ value: { defaultValue: 0, isEmpty: (v) => v == null },
63
+ capabilities: { sortable: true },
64
+ editableTable: {
65
+ ViewComponent: ProgressCellView,
66
+ serialize: (v) => String(clamp(v ?? 0)),
67
+ deserialize: (raw) => clamp(parseFloat(raw)),
68
+ },
69
+ // Opts the type into the add-field modal: it shows in the type picker with
70
+ // the definition's label and icons, and a created field arrives at the
71
+ // source's addField as { type: 'CUSTOM', customType: 'docs.progress' }.
72
+ fieldModal: {
73
+ creatable: true,
74
+ namePlaceholder: 'e.g. Progress',
75
+ subtitle: 'A 0–100% progress bar',
76
+ group: 'Custom types',
77
+ },
78
+ });
79
+
80
+ const [schema] = React.useState<Schema>(() => ({
81
+ id: 'docs-custom-field-type-modal',
82
+ fields: {},
83
+ displayField: 'name',
84
+ idField: 'id',
85
+ itemPermissions: { createItem: true, updateItem: true, deleteItem: true },
86
+ // Enables the add-field flow — the editable table shows the "+" header
87
+ // button, which opens the add-field modal.
88
+ schemaPermissions: {
89
+ createField: true,
90
+ updateField: true,
91
+ deleteField: true,
92
+ },
93
+ }));
94
+
95
+ // In-memory field CRUD: each mutation returns the updated fields map, which
96
+ // the source merges into the loaded schema so the columns update in place.
97
+ const fieldActions: FieldActions = {
98
+ addField: async (field) => {
99
+ schema.fields = { ...schema.fields, [field.id]: field };
100
+ return schema.fields;
101
+ },
102
+ editField: async (fieldId, updates) => {
103
+ const existing = schema.fields[fieldId];
104
+ if (existing) {
105
+ schema.fields = {
106
+ ...schema.fields,
107
+ [fieldId]: { ...existing, ...updates } as Field,
108
+ };
109
+ }
110
+ return schema.fields;
111
+ },
112
+ deleteField: async (fieldId) => {
113
+ const rest = { ...schema.fields };
114
+ delete rest[fieldId];
115
+ schema.fields = rest;
116
+ return schema.fields;
117
+ },
118
+ };
119
+
120
+ const backend: CollectionBackend<Task> = {
121
+ find: async ({ search = '', sort = [] }) => {
122
+ const found = store.tasks.filter((task) =>
123
+ task.name.toLowerCase().includes(search.toLowerCase()),
124
+ );
125
+ if (sort.length) {
126
+ const [{ fieldName, order }] = sort;
127
+ found.sort((a, b) => {
128
+ const left = a[fieldName as keyof Task] ?? 0;
129
+ const right = b[fieldName as keyof Task] ?? 0;
130
+ const diff = left < right ? -1 : left > right ? 1 : 0;
131
+ return order === 'asc' ? diff : -diff;
132
+ });
133
+ }
134
+ return { items: found, total: found.length };
135
+ },
136
+ create: async (entity) => {
137
+ const created = { id: `task-${store.nextId++}`, name: '', ...entity };
138
+ store.tasks = [...store.tasks, created];
139
+ return created;
140
+ },
141
+ update: async (entity) => {
142
+ store.tasks = store.tasks.map((task) =>
143
+ task.id === entity.id ? entity : task,
144
+ );
145
+ return entity;
146
+ },
147
+ bulkDelete: async (entityIds) => {
148
+ store.tasks = store.tasks.filter((task) => !entityIds.includes(task.id));
149
+ },
150
+ };
151
+
152
+ const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
153
+ schema,
154
+ backend,
155
+ fieldActions,
156
+ });
157
+
158
+ const columns: EditableColumn<Task>[] = [
159
+ {
160
+ id: 'name',
161
+ title: 'Name',
162
+ cellType: 'text',
163
+ getValue: (task) => task.name,
164
+ setValue: (task, value) => ({ ...task, name: value }),
165
+ width: 220,
166
+ },
167
+ ];
168
+
169
+ const source = useSchemaSource<Task>({
170
+ collectionId: 'docs-custom-field-type-modal',
171
+ loadSchema,
172
+ fieldTypes: [progressFieldType],
173
+ // The modal renders only what the source declares: these standard picker
174
+ // options plus every creatable custom type (appended automatically).
175
+ fieldModal: {
176
+ text: {
177
+ addTitle: 'Add a field',
178
+ editTitle: 'Edit field',
179
+ },
180
+ types: [
181
+ {
182
+ patternsType: 'SHORT_TEXT',
183
+ label: 'Text',
184
+ subtitle: 'Titles, paragraph',
185
+ group: 'Essentials',
186
+ },
187
+ {
188
+ patternsType: 'NUMBER',
189
+ label: 'Number',
190
+ subtitle: 'ID, rating, order number',
191
+ group: 'Essentials',
192
+ },
193
+ ],
194
+ },
195
+ });
196
+ const state = useEditableTableCollection<Task>(source);
197
+
198
+ return (
199
+ <CollectionPage height="400px">
200
+ <CollectionPage.Header title={{ text: 'Tasks' }} />
201
+ <CollectionPage.Content>
202
+ <EditableTable state={state} columns={columns} />
203
+ </CollectionPage.Content>
204
+ </CollectionPage>
205
+ );
206
+ }
@@ -0,0 +1,206 @@
1
+ import React from 'react';
2
+ import { CollectionPage } from '@wix/patterns/page';
3
+ import { EditableTable, defineFieldType } from '@wix/patterns';
4
+ import type { CellEditProps, EditableColumn, Field } from '@wix/patterns';
5
+ import {
6
+ useSchemaSource,
7
+ useEditableTableCollection,
8
+ } from '@wix/patterns/schema';
9
+ import type {
10
+ CollectionBackend,
11
+ LoadedSchema,
12
+ Schema,
13
+ } from '@wix/patterns/schema';
14
+
15
+ type Task = { id: string; name: string; progress?: number };
16
+
17
+ function CustomFieldTypeSpreadsheet() {
18
+ // Plain object store (the live-example scope shadows the global `Map`).
19
+ const [store] = React.useState<{ tasks: Task[]; nextId: number }>(() => ({
20
+ nextId: 6,
21
+ tasks: [
22
+ { id: '1', name: 'Design homepage', progress: 80 },
23
+ { id: '2', name: 'Set up payments', progress: 100 },
24
+ { id: '3', name: 'Write product descriptions', progress: 25 },
25
+ { id: '4', name: 'Configure shipping', progress: 55 },
26
+ { id: '5', name: 'Launch campaign', progress: 0 },
27
+ ],
28
+ }));
29
+
30
+ const clamp = (value: number) =>
31
+ Math.max(0, Math.min(100, Math.round(value) || 0));
32
+
33
+ const ProgressCellView = ({ value }: { value: number }) => (
34
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
35
+ <div
36
+ style={{
37
+ width: '80px',
38
+ height: '6px',
39
+ borderRadius: '3px',
40
+ background: '#DFE5EB',
41
+ overflow: 'hidden',
42
+ }}
43
+ >
44
+ <div
45
+ style={{
46
+ width: `${clamp(value ?? 0)}%`,
47
+ height: '100%',
48
+ background: '#3899EC',
49
+ }}
50
+ />
51
+ </div>
52
+ <span>{clamp(value ?? 0)}%</span>
53
+ </div>
54
+ );
55
+
56
+ const ProgressCellEdit = ({
57
+ value,
58
+ onChange,
59
+ onCommit,
60
+ onCancel,
61
+ inputRef,
62
+ }: CellEditProps<number>) => {
63
+ const input = React.useRef<HTMLInputElement>(null);
64
+ React.useImperativeHandle(inputRef, () => ({
65
+ focus: () => input.current?.focus(),
66
+ }));
67
+ return (
68
+ <input
69
+ ref={input}
70
+ type="number"
71
+ min={0}
72
+ max={100}
73
+ value={value ?? 0}
74
+ // parseFloat, not Number — the example scope shadows `Number`.
75
+ onChange={(event) => onChange(parseFloat(event.target.value))}
76
+ onKeyDown={(event) => {
77
+ if (event.key === 'Enter') {
78
+ onCommit();
79
+ }
80
+ if (event.key === 'Escape') {
81
+ onCancel();
82
+ }
83
+ }}
84
+ style={{
85
+ width: '100%',
86
+ height: '100%',
87
+ border: 'none',
88
+ outline: 'none',
89
+ }}
90
+ />
91
+ );
92
+ };
93
+
94
+ const progressFieldType = defineFieldType<number>({
95
+ type: 'docs.progress',
96
+ display: {
97
+ label: 'Progress',
98
+ icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
99
+ },
100
+ // This example focuses on the editable cell; opt out of filtering explicitly.
101
+ filter: { filterable: false },
102
+ value: { defaultValue: 0, isEmpty: (v) => v == null },
103
+ capabilities: { sortable: true },
104
+ editableTable: {
105
+ ViewComponent: ProgressCellView,
106
+ EditComponent: ProgressCellEdit,
107
+ serialize: (v) => String(clamp(v ?? 0)),
108
+ deserialize: (raw) => clamp(parseFloat(raw)),
109
+ normalizeOnCommit: (v) => clamp(v ?? 0),
110
+ onTypeToEdit: ({ key }) =>
111
+ /^\d$/.test(key) ? { value: parseInt(key, 10) } : undefined,
112
+ },
113
+ // Items here appear on the field's actions menus (e.g. the editable
114
+ // table's column header menu) — only for fields of this type.
115
+ actions: {
116
+ items: [
117
+ {
118
+ key: 'progress-only-action',
119
+ label: 'This is action only for progress bar',
120
+ onClick: () => window.alert('This is action only for progress bar'),
121
+ },
122
+ ],
123
+ },
124
+ });
125
+
126
+ const progressField: Field = {
127
+ id: 'progress',
128
+ displayName: 'Progress',
129
+ type: 'CUSTOM',
130
+ customType: 'docs.progress',
131
+ };
132
+
133
+ const schema: Schema = {
134
+ id: 'docs-custom-field-type-editable',
135
+ fields: { progress: progressField },
136
+ displayField: 'name',
137
+ idField: 'id',
138
+ itemPermissions: { createItem: true, updateItem: true, deleteItem: true },
139
+ };
140
+
141
+ const backend: CollectionBackend<Task> = {
142
+ // Sorting is delegated to the backend: `find` receives `sort`
143
+ // ({ fieldName, order }[]) and owns applying it.
144
+ find: async ({ search = '', sort = [] }) => {
145
+ const found = store.tasks.filter((task) =>
146
+ task.name.toLowerCase().includes(search.toLowerCase()),
147
+ );
148
+ if (sort.length) {
149
+ const [{ fieldName, order }] = sort;
150
+ found.sort((a, b) => {
151
+ const left = a[fieldName as keyof Task] ?? 0;
152
+ const right = b[fieldName as keyof Task] ?? 0;
153
+ const diff = left < right ? -1 : left > right ? 1 : 0;
154
+ return order === 'asc' ? diff : -diff;
155
+ });
156
+ }
157
+ return { items: found, total: found.length };
158
+ },
159
+ create: async (entity) => {
160
+ const created = { id: `task-${store.nextId++}`, name: '', ...entity };
161
+ store.tasks = [...store.tasks, created];
162
+ return created;
163
+ },
164
+ update: async (entity) => {
165
+ store.tasks = store.tasks.map((task) =>
166
+ task.id === entity.id ? entity : task,
167
+ );
168
+ return entity;
169
+ },
170
+ bulkDelete: async (entityIds) => {
171
+ store.tasks = store.tasks.filter((task) => !entityIds.includes(task.id));
172
+ },
173
+ };
174
+
175
+ const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
176
+ schema,
177
+ backend,
178
+ });
179
+
180
+ const columns: EditableColumn<Task>[] = [
181
+ {
182
+ id: 'name',
183
+ title: 'Name',
184
+ cellType: 'text',
185
+ getValue: (task) => task.name,
186
+ setValue: (task, value) => ({ ...task, name: value }),
187
+ width: 220,
188
+ },
189
+ ];
190
+
191
+ const source = useSchemaSource<Task>({
192
+ collectionId: 'docs-custom-field-type-editable',
193
+ loadSchema,
194
+ fieldTypes: [progressFieldType],
195
+ });
196
+ const state = useEditableTableCollection<Task>(source);
197
+
198
+ return (
199
+ <CollectionPage height="400px">
200
+ <CollectionPage.Header title={{ text: 'Tasks' }} />
201
+ <CollectionPage.Content>
202
+ <EditableTable state={state} columns={columns} />
203
+ </CollectionPage.Content>
204
+ </CollectionPage>
205
+ );
206
+ }
@@ -0,0 +1,133 @@
1
+ import React from 'react';
2
+ import { defineFieldType } from '@wix/patterns';
3
+ import type { Field, FormFieldComponentProps } from '@wix/patterns';
4
+ import { useForm } from '@wix/patterns/form';
5
+ import {
6
+ EntityPage,
7
+ EntityPageFieldsCard,
8
+ useEntityPage,
9
+ useSchemaSource,
10
+ } from '@wix/patterns/schema';
11
+ import type {
12
+ CollectionBackend,
13
+ LoadedSchema,
14
+ Schema,
15
+ } from '@wix/patterns/schema';
16
+ import { Input } from '@wix/design-system';
17
+
18
+ type Task = { id: string; name: string; progress?: number };
19
+
20
+ function CustomFieldTypeEntityPage() {
21
+ // Plain object store (the live-example scope shadows the global `Map`).
22
+ const [store] = React.useState<{ task: Task }>(() => ({
23
+ task: { id: '1', name: 'Design homepage', progress: 80 },
24
+ }));
25
+
26
+ const clamp = (value: number) =>
27
+ Math.max(0, Math.min(100, Math.round(value) || 0));
28
+
29
+ // The entity-page form input. The entity page owns the form wiring and the
30
+ // field UI (label, error message from the definition's value.validate) —
31
+ // this renders only the input.
32
+ const ProgressFormField = ({
33
+ value,
34
+ onChange,
35
+ onBlur,
36
+ }: FormFieldComponentProps<number>) => (
37
+ <Input
38
+ type="number"
39
+ min={0}
40
+ max={100}
41
+ suffix={<Input.Affix>%</Input.Affix>}
42
+ value={String(value ?? 0)}
43
+ // parseFloat, not Number — the example scope shadows `Number`.
44
+ onChange={(event) => onChange(clamp(parseFloat(event.target.value)))}
45
+ onBlur={onBlur}
46
+ />
47
+ );
48
+
49
+ const progressFieldType = defineFieldType<number>({
50
+ type: 'docs.progress',
51
+ display: {
52
+ label: 'Progress',
53
+ icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
54
+ },
55
+ filter: { filterable: false },
56
+ value: {
57
+ defaultValue: 0,
58
+ isEmpty: (v) => v == null,
59
+ // Runs on every surface that validates the field — the entity-page
60
+ // form wires it into its own validation.
61
+ validate: (v) =>
62
+ v != null && (v < 0 || v > 100)
63
+ ? 'Progress must be between 0 and 100'
64
+ : null,
65
+ },
66
+ // Required once the field renders on an entity page — development throws
67
+ // without it; production skips the field.
68
+ form: { Component: ProgressFormField },
69
+ });
70
+
71
+ const progressField: Field = {
72
+ id: 'progress',
73
+ displayName: 'Progress',
74
+ type: 'CUSTOM',
75
+ customType: 'docs.progress',
76
+ };
77
+
78
+ const schema: Schema = {
79
+ id: 'docs-custom-field-type-entity-page',
80
+ fields: {
81
+ name: { id: 'name', displayName: 'Name', type: 'SHORT_TEXT' } as Field,
82
+ progress: progressField,
83
+ },
84
+ displayField: 'name',
85
+ idField: 'id',
86
+ };
87
+
88
+ // The entity page reads and writes the entity through the source's backend:
89
+ // `fetch` derives from `get`, saving from `update`.
90
+ const backend: CollectionBackend<Task> = {
91
+ find: async () => ({ items: [store.task], total: 1 }),
92
+ get: async () => store.task,
93
+ update: async (entity) => {
94
+ store.task = entity;
95
+ return entity;
96
+ },
97
+ };
98
+
99
+ const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
100
+ schema,
101
+ backend,
102
+ });
103
+
104
+ const source = useSchemaSource<Task>({
105
+ collectionId: 'docs-custom-field-type-entity-page',
106
+ loadSchema,
107
+ fieldTypes: [progressFieldType],
108
+ });
109
+
110
+ const form = useForm();
111
+ const state = useEntityPage<Task>(source, {
112
+ parentPageId: '',
113
+ form,
114
+ entityId: '1',
115
+ saveSuccessToast: 'Saved',
116
+ saveErrorToast: () => 'Failed to save',
117
+ });
118
+
119
+ return (
120
+ <EntityPage state={state} dataHook="docs-custom-field-type-entity-page">
121
+ <EntityPage.Header title={{ text: store.task.name }} />
122
+ <EntityPage.Content>
123
+ <EntityPage.MainContent>
124
+ <EntityPageFieldsCard
125
+ title="Fields"
126
+ subtitle="The Progress field renders through its `form` slot"
127
+ minHeight="204px"
128
+ />
129
+ </EntityPage.MainContent>
130
+ </EntityPage.Content>
131
+ </EntityPage>
132
+ );
133
+ }
@@ -0,0 +1,165 @@
1
+ import React from 'react';
2
+ import { CollectionPage } from '@wix/patterns/page';
3
+ import {
4
+ Table,
5
+ defineFieldType,
6
+ idNameArrayFilter,
7
+ MultiInlineCheckboxFilter,
8
+ } from '@wix/patterns';
9
+ import type { Field, FilterProps } from '@wix/patterns';
10
+ import { useSchemaSource, useTableCollection } from '@wix/patterns/schema';
11
+ import type {
12
+ CollectionBackend,
13
+ LoadedSchema,
14
+ Schema,
15
+ } from '@wix/patterns/schema';
16
+
17
+ type Task = { id: string; name: string; progress?: number };
18
+ type Bucket = { id: string; name: string };
19
+
20
+ function CustomFieldTypeTable() {
21
+ const tasks: Task[] = [
22
+ { id: '1', name: 'Design homepage', progress: 80 },
23
+ { id: '2', name: 'Set up payments', progress: 100 },
24
+ { id: '3', name: 'Write product descriptions', progress: 25 },
25
+ { id: '4', name: 'Configure shipping', progress: 55 },
26
+ { id: '5', name: 'Launch campaign', progress: 0 },
27
+ ];
28
+
29
+ const ProgressCell = ({ value }: { value: number }) => (
30
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
31
+ <div
32
+ style={{
33
+ width: '80px',
34
+ height: '6px',
35
+ borderRadius: '3px',
36
+ background: '#DFE5EB',
37
+ overflow: 'hidden',
38
+ }}
39
+ >
40
+ <div
41
+ style={{
42
+ width: `${value ?? 0}%`,
43
+ height: '100%',
44
+ background: '#3899EC',
45
+ }}
46
+ />
47
+ </div>
48
+ <span>{value ?? 0}%</span>
49
+ </div>
50
+ );
51
+
52
+ // The option id encodes the range; the backend parses it back.
53
+ const BUCKETS: Bucket[] = [
54
+ { id: '0-33', name: 'Low (0-33%)' },
55
+ { id: '34-66', name: 'Medium (34-66%)' },
56
+ { id: '67-100', name: 'High (67-100%)' },
57
+ ];
58
+
59
+ const progressFieldType = defineFieldType<number>({
60
+ type: 'docs.progress',
61
+ display: {
62
+ label: 'Progress',
63
+ icons: { Small: () => <span>%</span>, Medium: () => <span>%</span> },
64
+ },
65
+ filter: {
66
+ createFilter: () => idNameArrayFilter<Bucket>(),
67
+ Component: (props: FilterProps<Bucket[]>) => (
68
+ <MultiInlineCheckboxFilter {...props} data={BUCKETS} />
69
+ ),
70
+ },
71
+ value: { defaultValue: 0, isEmpty: (v) => v == null },
72
+ capabilities: { sortable: true },
73
+ table: {
74
+ CellComponent: ({ value }) => <ProgressCell value={value} />,
75
+ width: '160px',
76
+ },
77
+ actions: {
78
+ items: [
79
+ {
80
+ key: 'about-progress',
81
+ label: 'About this field type',
82
+ onClick: (field) =>
83
+ window.alert(`"${field.displayName}" is a custom field type.`),
84
+ },
85
+ ],
86
+ },
87
+ });
88
+
89
+ // The field is typed CUSTOM and points at the definition through `customType`.
90
+ const progressField: Field = {
91
+ id: 'progress',
92
+ displayName: 'Progress',
93
+ type: 'CUSTOM',
94
+ customType: 'docs.progress',
95
+ };
96
+
97
+ const schema: Schema = {
98
+ id: 'docs-custom-field-type-table',
99
+ fields: { progress: progressField },
100
+ displayField: 'name',
101
+ idField: 'id',
102
+ };
103
+
104
+ // Like filtering, sorting is delegated to the backend: `find` receives
105
+ // `sort` ({ fieldName, order }[]) and owns applying it.
106
+ const backend: CollectionBackend<Task> = {
107
+ find: async ({ search = '', filters = {}, sort = [] }) => {
108
+ const buckets = (filters as { progress?: Bucket[] }).progress;
109
+ const found = tasks.filter(
110
+ (task) =>
111
+ task.name.toLowerCase().includes(search.toLowerCase()) &&
112
+ (!buckets?.length ||
113
+ buckets.some(({ id }) => {
114
+ // parseInt, not Number — the example scope shadows `Number`.
115
+ const [min, max] = id
116
+ .split('-')
117
+ .map((part) => parseInt(part, 10));
118
+ const progress = task.progress ?? 0;
119
+ return progress >= min && progress <= max;
120
+ })),
121
+ );
122
+ if (sort.length) {
123
+ const [{ fieldName, order }] = sort;
124
+ found.sort((a, b) => {
125
+ const left = a[fieldName as keyof Task] ?? 0;
126
+ const right = b[fieldName as keyof Task] ?? 0;
127
+ const diff = left < right ? -1 : left > right ? 1 : 0;
128
+ return order === 'asc' ? diff : -diff;
129
+ });
130
+ }
131
+ return { items: found, total: found.length };
132
+ },
133
+ };
134
+
135
+ const loadSchema = async (): Promise<LoadedSchema<Task>> => ({
136
+ schema,
137
+ backend,
138
+ });
139
+
140
+ const source = useSchemaSource<Task>({
141
+ collectionId: 'docs-custom-field-type-table',
142
+ loadSchema,
143
+ fieldTypes: [progressFieldType],
144
+ });
145
+ const state = useTableCollection<Task>(source);
146
+
147
+ return (
148
+ <CollectionPage height="400px">
149
+ <CollectionPage.Header title={{ text: 'Tasks' }} />
150
+ <CollectionPage.Content>
151
+ <Table
152
+ state={state}
153
+ columns={[
154
+ {
155
+ id: 'name',
156
+ title: 'Name',
157
+ render: (task) => task.name,
158
+ width: '220px',
159
+ },
160
+ ]}
161
+ />
162
+ </CollectionPage.Content>
163
+ </CollectionPage>
164
+ );
165
+ }