@wix/patterns 1.366.0 → 1.370.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 (678) 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/Collapse/Collapse.st.css.js +3 -3
  4. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  5. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  6. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  7. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  8. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  9. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  10. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  11. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js +6 -3
  12. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  13. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js +25 -30
  14. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  15. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  16. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupProps.js.map +1 -1
  18. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +66 -17
  19. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
  20. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +22 -14
  21. package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
  22. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  23. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  24. package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js +329 -0
  25. package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
  26. package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js +85 -0
  27. package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
  28. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  29. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  30. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  31. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  32. package/dist/cjs/components/CtaProps.js.map +1 -1
  33. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  34. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  36. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  38. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  42. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js +59 -0
  46. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
  47. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  48. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +23 -0
  49. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
  50. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js +20 -0
  51. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
  52. package/dist/cjs/components/EditableTable/cellTypes/email/View.js +23 -0
  53. package/dist/cjs/components/EditableTable/cellTypes/email/View.js.map +1 -0
  54. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css +4 -0
  55. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +23 -0
  56. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
  57. package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js +12 -0
  58. package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
  59. package/dist/cjs/components/EditableTable/cellTypes/email/index.js +31 -0
  60. package/dist/cjs/components/EditableTable/cellTypes/email/index.js.map +1 -0
  61. package/dist/cjs/components/EditableTable/cellTypes/index.js +5 -1
  62. package/dist/cjs/components/EditableTable/cellTypes/index.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js +4 -9
  64. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  66. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/number/View.js +4 -5
  68. package/dist/cjs/components/EditableTable/cellTypes/number/View.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  70. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js +79 -0
  72. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
  73. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  74. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +23 -0
  75. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
  76. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js +20 -0
  77. package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
  78. package/dist/cjs/components/EditableTable/cellTypes/object/View.js +30 -0
  79. package/dist/cjs/components/EditableTable/cellTypes/object/View.js.map +1 -0
  80. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css +4 -0
  81. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +23 -0
  82. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
  83. package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js +12 -0
  84. package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
  85. package/dist/cjs/components/EditableTable/cellTypes/object/index.js +45 -0
  86. package/dist/cjs/components/EditableTable/cellTypes/object/index.js.map +1 -0
  87. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  88. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  89. package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js +3 -3
  90. package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js.map +1 -1
  91. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  92. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  93. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +3 -3
  94. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  95. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  96. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  97. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  98. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  99. package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js +15 -0
  100. package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
  101. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js +10 -0
  102. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  103. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  104. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  105. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  106. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  107. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  108. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  109. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  110. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  111. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  112. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  113. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  114. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  115. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  116. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  117. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  118. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  119. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  120. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  121. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  122. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  123. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  124. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  125. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  126. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  127. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  128. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  129. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  130. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  131. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  132. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  133. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  134. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  135. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  136. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  137. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  138. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  139. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  140. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  141. package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js +14 -38
  142. package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
  143. package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js +34 -0
  144. package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
  145. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  146. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  147. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  148. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  149. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  150. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  151. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  152. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  153. package/dist/cjs/components/common.st.css.js +4 -4
  154. package/dist/cjs/components/common.st.css.js.map +1 -1
  155. package/dist/cjs/hooks/useStaticListFilterCollection.js +2 -1
  156. package/dist/cjs/hooks/useStaticListFilterCollection.js.map +1 -1
  157. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  158. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  159. package/dist/cjs/state/EditableTable/CellInteractionState.js +65 -0
  160. package/dist/cjs/state/EditableTable/CellInteractionState.js.map +1 -1
  161. package/dist/cjs/state/EditableTable/types.js.map +1 -1
  162. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  163. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  164. package/dist/cjs/state/TableState.js +2 -0
  165. package/dist/cjs/state/TableState.js.map +1 -1
  166. package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js +38 -4
  167. package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
  168. package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js +56 -17
  169. package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
  170. package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js +5 -1
  171. package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
  172. package/dist/cjs/styles.global.css +1 -1
  173. package/dist/cjs/version.js +1 -1
  174. package/dist/cjs/version.js.map +1 -1
  175. package/dist/docs/AI Assistant.md +171 -0
  176. package/dist/docs/ActionCellProps.md +40 -0
  177. package/dist/docs/ActionSubItem.md +24 -0
  178. package/dist/docs/Allow Users to Add Extended Fields.md +194 -0
  179. package/dist/docs/AutoCompleteFilter.md +276 -0
  180. package/dist/docs/BulkActionModalRenderProp.md +22 -0
  181. package/dist/docs/BulkSelectState.md +18 -0
  182. package/dist/docs/Category.md +19 -0
  183. package/dist/docs/CollectionEmptyState.md +240 -0
  184. package/dist/docs/CollectionErrorState.md +107 -0
  185. package/dist/docs/CollectionNoResultsState.md +116 -0
  186. package/dist/docs/CollectionOptimisticActions.md +1074 -0
  187. package/dist/docs/CollectionPage.Content.md +154 -0
  188. package/dist/docs/CollectionPage.Header.md +216 -0
  189. package/dist/docs/CollectionPage.md +183 -0
  190. package/dist/docs/CollectionPremiumEmptyState.md +115 -0
  191. package/dist/docs/CollectionSearch.md +345 -0
  192. package/dist/docs/CollectionSection.md +16 -0
  193. package/dist/docs/CollectionState.md +29 -0
  194. package/dist/docs/CollectionSubToolbar.md +14 -0
  195. package/dist/docs/CollectionToolbar.md +18 -0
  196. package/dist/docs/Component Tests.md +191 -0
  197. package/dist/docs/ComputedQuery.md +45 -0
  198. package/dist/docs/CtaBaseProps.md +19 -0
  199. package/dist/docs/CustomColumns.md +916 -0
  200. package/dist/docs/CustomFieldsViewWidget.md +191 -0
  201. package/dist/docs/CustomFieldsWidget.md +635 -0
  202. package/dist/docs/Data Extension Overview.md +85 -0
  203. package/dist/docs/DataResultRaw.md +25 -0
  204. package/dist/docs/DateRangeFilter.md +202 -0
  205. package/dist/docs/Display Extended Fields.md +244 -0
  206. package/dist/docs/Enable Filters for Extended Fields.md +243 -0
  207. package/dist/docs/EntityPage.AdditionalContent.md +25 -0
  208. package/dist/docs/EntityPage.Card.md +250 -0
  209. package/dist/docs/EntityPage.Content.md +24 -0
  210. package/dist/docs/EntityPage.Header.md +260 -0
  211. package/dist/docs/EntityPage.MainContent.md +24 -0
  212. package/dist/docs/EntityPage.Slots.md +75 -0
  213. package/dist/docs/EntityPage.md +1030 -0
  214. package/dist/docs/EntityPageState.md +23 -0
  215. package/dist/docs/Explore Apps.md +170 -0
  216. package/dist/docs/ExportTo.md +894 -0
  217. package/dist/docs/Filter Overview.md +448 -0
  218. package/dist/docs/FilterProps.md +26 -0
  219. package/dist/docs/FormPageState.md +17 -0
  220. package/dist/docs/Grid Sections.md +170 -0
  221. package/dist/docs/Grid.md +598 -0
  222. package/dist/docs/GridDragAndDrop.md +131 -0
  223. package/dist/docs/GridFolders.md +259 -0
  224. package/dist/docs/GridFoldersSection.md +16 -0
  225. package/dist/docs/GridFoldersState.md +20 -0
  226. package/dist/docs/GridSectionsProp.md +22 -0
  227. package/dist/docs/GridState.md +22 -0
  228. package/dist/docs/Highlighted Search.md +114 -0
  229. package/dist/docs/InMemoryBackend.md +81 -0
  230. package/dist/docs/Indeterminate.md +273 -0
  231. package/dist/docs/Internal Scroll.md +236 -0
  232. package/dist/docs/More Actions.md +1015 -0
  233. package/dist/docs/MoreActionsItem.md +33 -0
  234. package/dist/docs/MultiAutoInlineCheckboxFilter.md +850 -0
  235. package/dist/docs/MultiBulkActionToolbar.md +1174 -0
  236. package/dist/docs/MultiInlineCheckboxFilter.md +871 -0
  237. package/dist/docs/MultiLevelSorting.md +376 -0
  238. package/dist/docs/MultiSelectCheckboxFilter.md +369 -0
  239. package/dist/docs/MultiSelectCollectionFilter.md +218 -0
  240. package/dist/docs/NestedTable.md +1101 -0
  241. package/dist/docs/NestedTableLevel.md +24 -0
  242. package/dist/docs/NestedTableNodeState.md +23 -0
  243. package/dist/docs/NestedTableOptimisticActions.md +21 -0
  244. package/dist/docs/NestedTableState.md +21 -0
  245. package/dist/docs/Next.js.md +143 -0
  246. package/dist/docs/NumberRangeFilter.md +230 -0
  247. package/dist/docs/OperatorFilterPicker.md +195 -0
  248. package/dist/docs/PageWrapper.md +50 -0
  249. package/dist/docs/PatternsReactRoute.md +31 -0
  250. package/dist/docs/PatternsReactRouter.md +24 -0
  251. package/dist/docs/PickerContent.md +129 -0
  252. package/dist/docs/PickerModal.md +680 -0
  253. package/dist/docs/PickerStandalone.md +332 -0
  254. package/dist/docs/PrimaryActionButton.md +323 -0
  255. package/dist/docs/PrimaryActions.md +173 -0
  256. package/dist/docs/PrimaryPageButton.md +140 -0
  257. package/dist/docs/RadioGroupFilter.md +73 -0
  258. package/dist/docs/RequestId.md +58 -0
  259. package/dist/docs/SecondaryActions.md +175 -0
  260. package/dist/docs/SettingsPage.AdditionalContent.md +25 -0
  261. package/dist/docs/SettingsPage.Card.md +246 -0
  262. package/dist/docs/SettingsPage.Content.md +24 -0
  263. package/dist/docs/SettingsPage.Header.md +176 -0
  264. package/dist/docs/SettingsPage.MainContent.md +24 -0
  265. package/dist/docs/SettingsPage.md +680 -0
  266. package/dist/docs/SettingsPageState.md +22 -0
  267. package/dist/docs/SingleSelectFilter.md +401 -0
  268. package/dist/docs/Sled Tests.md +109 -0
  269. package/dist/docs/Sortable Columns.md +250 -0
  270. package/dist/docs/Suggestions.md +370 -0
  271. package/dist/docs/SummaryBar.md +515 -0
  272. package/dist/docs/Table Sections.md +473 -0
  273. package/dist/docs/Table.md +1065 -0
  274. package/dist/docs/TableColumn.md +35 -0
  275. package/dist/docs/TableDragAndDrop.md +502 -0
  276. package/dist/docs/TableFolders.md +419 -0
  277. package/dist/docs/TableFoldersState.md +22 -0
  278. package/dist/docs/TableGridSwitch.md +298 -0
  279. package/dist/docs/TableGridSwitchDragAndDrop.md +170 -0
  280. package/dist/docs/TableGridSwitchFolders.md +446 -0
  281. package/dist/docs/TableGridSwitchFoldersState.md +22 -0
  282. package/dist/docs/TableGridSwitchState.md +23 -0
  283. package/dist/docs/TableSectionsProp.md +22 -0
  284. package/dist/docs/TableState.md +24 -0
  285. package/dist/docs/TableTopNotification.md +314 -0
  286. package/dist/docs/TabsFilter.md +484 -0
  287. package/dist/docs/Tags Overview.md +118 -0
  288. package/dist/docs/Tags.md +718 -0
  289. package/dist/docs/TagsWidget.md +419 -0
  290. package/dist/docs/ToolbarCollectionState.md +19 -0
  291. package/dist/docs/ToolbarFilters.md +1588 -0
  292. package/dist/docs/ToolbarSecondaryActions.md +383 -0
  293. package/dist/docs/ToolbarTitle.md +324 -0
  294. package/dist/docs/View.md +23 -0
  295. package/dist/docs/Views.md +786 -0
  296. package/dist/docs/WidgetsFormProvider.md +61 -0
  297. package/dist/docs/WixPatternsBMProvider.md +31 -0
  298. package/dist/docs/WixPatternsBaseProvider.md +87 -0
  299. package/dist/docs/WixPatternsEssentialsProvider.md +43 -0
  300. package/dist/docs/WixPatternsGizaProvider.md +37 -0
  301. package/dist/docs/WixPatternsProvider.md +68 -0
  302. package/dist/docs/Working with Cache.md +114 -0
  303. package/dist/docs/arrayFilter.md +226 -0
  304. package/dist/docs/bulkActionModal.md +40 -0
  305. package/dist/docs/createNestedTableLevel.md +24 -0
  306. package/dist/docs/createNestedTableSingleEntityLevels.md +20 -0
  307. package/dist/docs/customFilter.md +182 -0
  308. package/dist/docs/dateRangeFilter.md +55 -0
  309. package/dist/docs/deleteSecondaryAction.md +122 -0
  310. package/dist/docs/idNameArrayFilter.md +206 -0
  311. package/dist/docs/index.json +662 -0
  312. package/dist/docs/operatorFilter.md +183 -0
  313. package/dist/docs/stringFilter.md +204 -0
  314. package/dist/docs/stringsArrayFilter.md +118 -0
  315. package/dist/docs/useAmbassadorCollection.md +45 -0
  316. package/dist/docs/useCollection.md +61 -0
  317. package/dist/docs/useCreateCollection.md +32 -0
  318. package/dist/docs/useCreateNestedOptimisticActions.md +21 -0
  319. package/dist/docs/useEntity.md +44 -0
  320. package/dist/docs/useEntityPage.md +57 -0
  321. package/dist/docs/useEntityPageContext.md +28 -0
  322. package/dist/docs/useFilterCollection.md +163 -0
  323. package/dist/docs/useGridCollection.md +58 -0
  324. package/dist/docs/useGridFolders.md +25 -0
  325. package/dist/docs/useItemsSelectionFilter.md +60 -0
  326. package/dist/docs/useNestedTable.md +66 -0
  327. package/dist/docs/useOptimisticActions.md +1288 -0
  328. package/dist/docs/usePatternsNavigate.md +57 -0
  329. package/dist/docs/usePickerContent.md +61 -0
  330. package/dist/docs/usePickerModal.md +68 -0
  331. package/dist/docs/usePickerStandalone.md +56 -0
  332. package/dist/docs/useSelector.md +181 -0
  333. package/dist/docs/useSettingsPage.md +54 -0
  334. package/dist/docs/useSettingsPageContext.md +28 -0
  335. package/dist/docs/useStaticListFilterCollection.md +194 -0
  336. package/dist/docs/useTableCollection.md +58 -0
  337. package/dist/docs/useTableFolders.md +25 -0
  338. package/dist/docs/useTableGridSwitchCollection.md +58 -0
  339. package/dist/docs/useTableGridSwitchFolders.md +25 -0
  340. package/dist/docs/useWidgetsFormContext.md +19 -0
  341. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  342. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  343. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  344. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  345. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  346. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  347. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js +3 -1
  348. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
  349. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js +3 -2
  350. package/dist/esm/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
  351. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  352. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  353. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +39 -6
  354. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
  355. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +2 -1
  356. package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
  357. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  358. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  359. package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js +110 -0
  360. package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
  361. package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js +74 -0
  362. package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
  363. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  364. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  365. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  366. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  367. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  368. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  369. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  370. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  371. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  372. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  373. package/dist/esm/components/EditableTable/cellTypes/email/Edit.js +21 -0
  374. package/dist/esm/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
  375. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  376. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +15 -0
  377. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
  378. package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js +13 -0
  379. package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
  380. package/dist/esm/components/EditableTable/cellTypes/email/View.js +5 -0
  381. package/dist/esm/components/EditableTable/cellTypes/email/View.js.map +1 -0
  382. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css +4 -0
  383. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +15 -0
  384. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
  385. package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js +8 -0
  386. package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
  387. package/dist/esm/components/EditableTable/cellTypes/email/index.js +22 -0
  388. package/dist/esm/components/EditableTable/cellTypes/email/index.js.map +1 -0
  389. package/dist/esm/components/EditableTable/cellTypes/index.js +5 -1
  390. package/dist/esm/components/EditableTable/cellTypes/index.js.map +1 -1
  391. package/dist/esm/components/EditableTable/cellTypes/number/Edit.js +2 -5
  392. package/dist/esm/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
  393. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  394. package/dist/esm/components/EditableTable/cellTypes/number/View.js +2 -2
  395. package/dist/esm/components/EditableTable/cellTypes/number/View.js.map +1 -1
  396. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  397. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  398. package/dist/esm/components/EditableTable/cellTypes/object/Edit.js +39 -0
  399. package/dist/esm/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
  400. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  401. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +15 -0
  402. package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
  403. package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js +13 -0
  404. package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
  405. package/dist/esm/components/EditableTable/cellTypes/object/View.js +5 -0
  406. package/dist/esm/components/EditableTable/cellTypes/object/View.js.map +1 -0
  407. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css +4 -0
  408. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +15 -0
  409. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
  410. package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js +8 -0
  411. package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
  412. package/dist/esm/components/EditableTable/cellTypes/object/index.js +47 -0
  413. package/dist/esm/components/EditableTable/cellTypes/object/index.js.map +1 -0
  414. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  415. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  416. package/dist/esm/components/EditableTable/cellTypes/select/View.st.css.js +2 -2
  417. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  418. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  419. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  420. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  421. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  422. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  423. package/dist/esm/components/EditableTable/useCellFocusAndEditing.js +15 -1
  424. package/dist/esm/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
  425. package/dist/esm/components/EditableTable/useKeyboardNavigation.js +10 -0
  426. package/dist/esm/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  427. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  428. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  429. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  430. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  431. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  432. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  433. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  434. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  435. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  436. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  437. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  438. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  439. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  440. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  441. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  442. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  443. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  444. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  445. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  446. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  447. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  448. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  449. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  450. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  451. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  452. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  453. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  454. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  455. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  456. package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js +2 -12
  457. package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
  458. package/dist/esm/components/TableGridSwitchButton/layoutConfig.js +14 -0
  459. package/dist/esm/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
  460. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  461. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  462. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  463. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  464. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  465. package/dist/esm/components/common.st.css.js +2 -2
  466. package/dist/esm/hooks/useStaticListFilterCollection.js +1 -0
  467. package/dist/esm/hooks/useStaticListFilterCollection.js.map +1 -1
  468. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  469. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  470. package/dist/esm/state/EditableTable/CellInteractionState.js +58 -0
  471. package/dist/esm/state/EditableTable/CellInteractionState.js.map +1 -1
  472. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  473. package/dist/esm/state/TableState.js +2 -0
  474. package/dist/esm/state/TableState.js.map +1 -1
  475. package/dist/esm/state/Toolbar/ToolbarResponsiveState.js +40 -5
  476. package/dist/esm/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
  477. package/dist/esm/state/Toolbar/computeResponsiveTargetState.js +46 -18
  478. package/dist/esm/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
  479. package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js +4 -0
  480. package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
  481. package/dist/esm/styles.global.css +1 -1
  482. package/dist/esm/version.js +1 -1
  483. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  484. package/dist/types/components/CollectionTable/CollectionTable.uni.driver.d.ts +24 -24
  485. package/dist/types/components/CollectionTable/CollectionTableWSRTable.d.ts.map +1 -1
  486. package/dist/types/components/CollectionToolbar/CollectionToolbar.d.ts.map +1 -1
  487. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  488. package/dist/types/components/CollectionToolbar/CollectionToolbar.uni.driver.d.ts +11 -11
  489. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts +3 -0
  490. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts.map +1 -1
  491. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts +5 -1
  492. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts.map +1 -1
  493. package/dist/types/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.d.ts.map +1 -1
  494. package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
  495. package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts +24 -0
  496. package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts.map +1 -0
  497. package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts +17 -0
  498. package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts.map +1 -0
  499. package/dist/types/components/CollectionViewsDropdown/ViewsDropdown.st.css.d.ts.map +1 -1
  500. package/dist/types/components/CtaProps.d.ts +1 -1
  501. package/dist/types/components/CustomFieldModal/CustomFieldModal.uni.driver.d.ts +2 -2
  502. package/dist/types/components/CustomFieldsWidget/CustomFieldsWidget.uni.driver.d.ts +3 -3
  503. package/dist/types/components/DropdownFilter/CollectionDropdownFilter.uni.driver.d.ts +1 -1
  504. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  505. package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts +4 -0
  506. package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts.map +1 -0
  507. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts +14 -0
  508. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -0
  509. package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts +22 -0
  510. package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts.map +1 -0
  511. package/dist/types/components/EditableTable/cellTypes/email/View.d.ts +4 -0
  512. package/dist/types/components/EditableTable/cellTypes/email/View.d.ts.map +1 -0
  513. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts +14 -0
  514. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -0
  515. package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts +15 -0
  516. package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts.map +1 -0
  517. package/dist/types/components/EditableTable/cellTypes/email/index.d.ts +5 -0
  518. package/dist/types/components/EditableTable/cellTypes/email/index.d.ts.map +1 -0
  519. package/dist/types/components/EditableTable/cellTypes/index.d.ts +3 -1
  520. package/dist/types/components/EditableTable/cellTypes/index.d.ts.map +1 -1
  521. package/dist/types/components/EditableTable/cellTypes/number/Edit.d.ts.map +1 -1
  522. package/dist/types/components/EditableTable/cellTypes/number/View.d.ts.map +1 -1
  523. package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
  524. package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts +4 -0
  525. package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts.map +1 -0
  526. package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts +14 -0
  527. package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts.map +1 -0
  528. package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts +22 -0
  529. package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts.map +1 -0
  530. package/dist/types/components/EditableTable/cellTypes/object/View.d.ts +4 -0
  531. package/dist/types/components/EditableTable/cellTypes/object/View.d.ts.map +1 -0
  532. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts +14 -0
  533. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -0
  534. package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts +15 -0
  535. package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts.map +1 -0
  536. package/dist/types/components/EditableTable/cellTypes/object/index.d.ts +5 -0
  537. package/dist/types/components/EditableTable/cellTypes/object/index.d.ts.map +1 -0
  538. package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
  539. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  540. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  541. package/dist/types/components/EditableTable/useCellFocusAndEditing.d.ts.map +1 -1
  542. package/dist/types/components/EditableTable/useKeyboardNavigation.d.ts.map +1 -1
  543. package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
  544. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  545. package/dist/types/components/FiltersPanel/FiltersPanel.uni.driver.d.ts +4 -4
  546. package/dist/types/components/Grid/Grid.uni.driver.d.ts +13 -13
  547. package/dist/types/components/Grid/GridFolders.uni.driver.d.ts +38 -38
  548. package/dist/types/components/Grid/GridFoldersSection.uni.driver.d.ts +13 -13
  549. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  550. package/dist/types/components/Kanban/Kanban.uni.driver.d.ts +11 -11
  551. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  552. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  553. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts +37 -37
  554. package/dist/types/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.d.ts.map +1 -1
  555. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  556. package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
  557. package/dist/types/components/ScrollableContent/ScrollableContent.st.css.d.ts.map +1 -1
  558. package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
  559. package/dist/types/components/SummaryBar/SummaryBar.uni.driver.d.ts +1 -1
  560. package/dist/types/components/Table/Table.uni.driver.d.ts +26 -26
  561. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts +37 -37
  562. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts +40 -40
  563. package/dist/types/components/TableGridSwitchButton/TableGridSwitchButton.d.ts.map +1 -1
  564. package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts +9 -0
  565. package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts.map +1 -0
  566. package/dist/types/components/TabsFilter/TabsFilter.uni.driver.d.ts +1 -1
  567. package/dist/types/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.d.ts.map +1 -1
  568. package/dist/types/hooks/useStaticListFilterCollection.d.ts.map +1 -1
  569. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  570. package/dist/types/state/EditableTable/CellInteractionState.d.ts +7 -0
  571. package/dist/types/state/EditableTable/CellInteractionState.d.ts.map +1 -1
  572. package/dist/types/state/EditableTable/types.d.ts +2 -0
  573. package/dist/types/state/EditableTable/types.d.ts.map +1 -1
  574. package/dist/types/state/TableState.d.ts +2 -0
  575. package/dist/types/state/TableState.d.ts.map +1 -1
  576. package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts +3 -0
  577. package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts.map +1 -1
  578. package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts +8 -1
  579. package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts.map +1 -1
  580. package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts +2 -0
  581. package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts.map +1 -1
  582. package/dist/types/testkit/enzyme.d.ts +194 -194
  583. package/dist/types/testkit/jsdom.d.ts +207 -207
  584. package/dist/types/testkit/playwright.d.ts +194 -194
  585. package/dist/types/testkit/puppeteer.d.ts +205 -205
  586. package/dist/types/version.d.ts +1 -1
  587. package/package.json +10 -7
  588. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  589. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  590. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  591. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  592. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  593. package/src/components/CollectionTable/CollectionTableWSRTable.tsx +3 -0
  594. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  595. package/src/components/CollectionToolbar/CollectionToolbar.tsx +11 -4
  596. package/src/components/CollectionToolbar/CollectionToolbarActionsGroupProps.ts +3 -0
  597. package/src/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.tsx +73 -16
  598. package/src/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.tsx +4 -0
  599. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  600. package/src/components/CollectionToolbar/ToolbarOverflowMenu.tsx +323 -0
  601. package/src/components/CollectionToolbar/useToolbarOverflowItems.ts +112 -0
  602. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  603. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  604. package/src/components/CtaProps.ts +1 -1
  605. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  606. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  607. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  608. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  609. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  610. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  611. package/src/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
  612. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +25 -0
  613. package/src/components/EditableTable/cellTypes/email/Edit.tsx +46 -0
  614. package/src/components/EditableTable/cellTypes/email/Edit.uni.driver.ts +23 -0
  615. package/src/components/EditableTable/cellTypes/email/View.st.css +4 -0
  616. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +25 -0
  617. package/src/components/EditableTable/cellTypes/email/View.tsx +8 -0
  618. package/src/components/EditableTable/cellTypes/email/View.uni.driver.ts +9 -0
  619. package/src/components/EditableTable/cellTypes/email/index.ts +23 -0
  620. package/src/components/EditableTable/cellTypes/index.ts +6 -0
  621. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  622. package/src/components/EditableTable/cellTypes/number/Edit.tsx +3 -8
  623. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  624. package/src/components/EditableTable/cellTypes/number/View.tsx +2 -4
  625. package/src/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
  626. package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +25 -0
  627. package/src/components/EditableTable/cellTypes/object/Edit.tsx +72 -0
  628. package/src/components/EditableTable/cellTypes/object/Edit.uni.driver.ts +22 -0
  629. package/src/components/EditableTable/cellTypes/object/View.st.css +4 -0
  630. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +25 -0
  631. package/src/components/EditableTable/cellTypes/object/View.tsx +12 -0
  632. package/src/components/EditableTable/cellTypes/object/View.uni.driver.ts +9 -0
  633. package/src/components/EditableTable/cellTypes/object/index.ts +49 -0
  634. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  635. package/src/components/EditableTable/cellTypes/select/View.st.css.ts +2 -2
  636. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  637. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  638. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  639. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  640. package/src/components/EditableTable/useCellFocusAndEditing.ts +16 -1
  641. package/src/components/EditableTable/useKeyboardNavigation.ts +11 -0
  642. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  643. package/src/components/Fade/Fade.st.css.ts +2 -2
  644. package/src/components/Heading/Heading.st.css.ts +2 -2
  645. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  646. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  647. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  648. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  649. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  650. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  651. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  652. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  653. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  654. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  655. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  656. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  657. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  658. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  659. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  660. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  661. package/src/components/TableGridSwitchButton/TableGridSwitchButton.tsx +2 -21
  662. package/src/components/TableGridSwitchButton/layoutConfig.tsx +20 -0
  663. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  664. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  665. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  666. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  667. package/src/components/common.st.css.ts +2 -2
  668. package/src/hooks/useStaticListFilterCollection.ts +1 -0
  669. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  670. package/src/state/EditableTable/CellInteractionState.ts +63 -0
  671. package/src/state/EditableTable/types.ts +2 -0
  672. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  673. package/src/state/TableState.ts +3 -0
  674. package/src/state/Toolbar/ToolbarResponsiveState.ts +64 -10
  675. package/src/state/Toolbar/computeResponsiveTargetState.ts +68 -18
  676. package/src/state/Toolbar/toolbarResponsiveConstants.ts +4 -0
  677. package/src/styles.global.css +1 -1
  678. package/src/version.ts +1 -1
@@ -0,0 +1,1030 @@
1
+ # EntityPage
2
+
3
+ **Category:** Base Components/Pages/Entity Page
4
+
5
+ ## Overview
6
+
7
+ ### Introduction
8
+
9
+ The `EntityPage` component serves as a container that encapsulates the logic and layout structure for rendering an entity page. It provides a structured and organized way to display and manage information related to a specific entity.
10
+
11
+ Here's a breakdown of its main purposes:
12
+
13
+ 1. **Appearance of the Entity Page**: The `EntityPage` component handles the overall layout and structure of the entity page. It defines how the page is organized, including title and subtitle, more actions dropdown, CTAs, content basic layout and widgets. Also, it is responsible for rendering loading skeletons, error state, displaying notifications and other.
14
+
15
+ 2. **Handling Fetch**: The `EntityPage` component typically integrates with a fetch mechanism (e.g., an API call) to retrieve data related to the entity being displayed on the page. This integration is done through the `fetch` function passed as a prop to the [`useEntityPage`](./?path=/story/base-components-pages-entity-page-hooks-useentitypage--useentitypage) hook, allowing the component to retrieve the necessary data for rendering. You can use the [`useEntity`](./?path=/story/base-components-pages-entity-page-hooks-useentity--useentity) to access a fetched entity.
16
+
17
+ 3. **Handling Save and Validation Logic**: The [useForm](https://react-hook-form.com/docs/useform) hook from [react-hook-form](https://react-hook-form.com/) is used to create a form object, and the `onSave` function passed as a prop to the [`useEntityPage`](./?path=/story/components-page-entitypage-hooks-useentitypage--useentitypage) hook, is triggered when the user initiates a save action.
18
+
19
+ 4. **Easy integration with open platform capabilities**: Create a container in Dev Center, and Wix Patterns will automatically fetch and display the relevant plugins. Pass your `componentId` to the `componentId` prop of `EntityPage.Slots` to add widgets to an entity page, or to the `componentId` prop of [`MoreActions`](./?path=/story/features-actions-more-actions--moreactions) to extend the "More Actions" menu with extra items.
20
+
21
+ In summary, the ``EntityPage`` component and the associated [`useEntityPage`](./?path=/story/base-components-pages-entity-page-hooks-useentitypage--useentitypage) hook together provide a streamlined approach to rendering, fetching, saving, and validating data for a specific entity within an application.
22
+
23
+
24
+ ---
25
+
26
+ ### Demo
27
+
28
+ This comprehensive demo demonstrates all the key functionalities supported by `EntityPage`:
29
+
30
+ - Page designed with 2 sections: the main content using the [EntityPage.MainContent](./?path=/story/base-components-pages-entity-page--entitypage-maincontent) component and the additional content using the [EntityPage.AdditionalContent](./?path=/story/base-components-pages-entity-page--entitypage-additionalcontent) component.
31
+
32
+ - [MoreActions](./?path=/story/base-components-pages-entity-page--entitypage-header#More_Actions), offering a more actions menu with inline actions and additional actions that are extended using `containerId`, alongside [EntityPage.Slots](./?path=/story/base-components-pages-entity-page--entitypage-slots) which enable the broadening of your UI with a variety of Cards.
33
+
34
+ - Integration with current widgets such as [CustomFieldsWidget](./?path=/story/base-components-pages-entity-page--entitypage-customfieldswidget) and [TagsWidget](./?path=/story/base-components-pages-entity-page--entitypage-tagswidget), linked to the page's state, enables their use in conjunction with the page's isDirty state.
35
+
36
+ - A save and validation process that ensures required fields are filled.
37
+
38
+ Explore the [Examples](./?path=/story/components-page-entitypage--entitypage&tab=Examples) section for a clearer understanding of the various states of the entity state, and examine each sub-component to see their available states and examples.
39
+
40
+
41
+ ```tsx
42
+ import React from 'react';
43
+ import {
44
+ CustomFieldsWidget,
45
+ EntityPage,
46
+ EntityPageState,
47
+ MoreActions,
48
+ TagsWidget,
49
+ useEntity,
50
+ useEntityPage,
51
+ useEntityPageContext,
52
+ } from '@wix/patterns';
53
+ import { useController, useForm } from '@wix/patterns/form';
54
+ import { ExtendedFields, Tags } from '@wix/patterns/core';
55
+ import {
56
+ Box,
57
+ Card,
58
+ FormField,
59
+ Input,
60
+ Text,
61
+ Checkbox,
62
+ } from '@wix/design-system';
63
+ import { InvoiceSmall } from '@wix/wix-ui-icons-common';
64
+
65
+ interface MyEntity {
66
+ id?: string;
67
+ name?: string;
68
+ booleanField?: boolean;
69
+ createdDate?: Date;
70
+ updatedDate?: Date;
71
+ extendedFields?: ExtendedFields;
72
+ tags?: Tags;
73
+ }
74
+
75
+ interface FormFields {
76
+ name?: string;
77
+ booleanField?: boolean;
78
+ }
79
+
80
+ function FullExample() {
81
+ const form = useForm<FormFields>();
82
+ const state: EntityPageState<MyEntity> = useEntityPage<MyEntity, FormFields>({
83
+ parentPageId: 'YOUR_PARENT_PAGE_ID',
84
+ form,
85
+ onSave: ({ widgetsFormData: { extendedFields, tags } }) =>
86
+ new Promise((res) => {
87
+ window.setTimeout(() => {
88
+ const formValues = form.getValues();
89
+
90
+ const updatedEntity: MyEntity = {
91
+ ...state.entity,
92
+ ...formValues,
93
+ extendedFields,
94
+ tags,
95
+ };
96
+
97
+ console.log('updated entity:', updatedEntity);
98
+
99
+ if (state.entity?.id) {
100
+ console.log('update request');
101
+ } else {
102
+ console.log('create request');
103
+ }
104
+
105
+ res({ updatedEntity });
106
+ }, 1000);
107
+ }),
108
+ saveErrorToast: (e) => 'Failed to save',
109
+ fetch: () =>
110
+ new Promise((res) => {
111
+ window.setTimeout(
112
+ () =>
113
+ res({
114
+ entity: {
115
+ id: 'id',
116
+ name: 'Entity Name',
117
+ booleanField: true,
118
+ createdDate: new window.Date(),
119
+ updatedDate: new window.Date(),
120
+ extendedFields: {
121
+ namespaces: {
122
+ _user_fields: {
123
+ datetime: '2023-05-31T21:00:00.000Z',
124
+ date: '1990-06-13',
125
+ shortText: 'Hello world!',
126
+ longText: 'Hello world! '.repeat(15),
127
+ checkbox: true,
128
+ decimal: 3.14,
129
+ integer: 43,
130
+ url: 'https://www.wix.com/',
131
+ },
132
+ },
133
+ },
134
+ tags: { privateTags: { tagIds: [] } },
135
+ },
136
+ }),
137
+ 500,
138
+ );
139
+ }),
140
+ });
141
+
142
+ // Usually we will extract this component to a separate file
143
+ const MainContent = () => {
144
+ const pageState = useEntityPageContext<MyEntity, FormFields>();
145
+
146
+ const name = useController({
147
+ name: 'name',
148
+ control: pageState.form.control,
149
+ defaultValue: pageState.entity?.name,
150
+ rules: { required: { value: true, message: 'This field is required!' } },
151
+ });
152
+
153
+ const booleanField = useController({
154
+ name: 'booleanField',
155
+ control: pageState.form.control,
156
+ defaultValue: pageState.entity?.booleanField,
157
+ });
158
+
159
+ return (
160
+ <Card.Content>
161
+ <Box gap="SP2" direction="vertical">
162
+ <FormField label="Name">
163
+ <Input
164
+ dataHook="name-input"
165
+ status={name.fieldState.invalid ? 'error' : undefined}
166
+ statusMessage={name.fieldState.error?.message}
167
+ inputRef={name.field.ref}
168
+ value={name.field.value}
169
+ onChange={name.field.onChange}
170
+ onBlur={name.field.onBlur}
171
+ />
172
+ </FormField>
173
+ <FormField label="Boolean Field">
174
+ <Checkbox
175
+ dataHook="boolean-field-checkbox"
176
+ checked={booleanField.field.value}
177
+ onChange={booleanField.field.onChange}
178
+ >
179
+ Use boolean field
180
+ </Checkbox>
181
+ </FormField>
182
+ </Box>
183
+ </Card.Content>
184
+ );
185
+ };
186
+
187
+ const entity = useEntity<MyEntity, FormFields>(state);
188
+
189
+ return (
190
+ <EntityPage state={state}>
191
+ <EntityPage.Header
192
+ title={{ text: entity?.name ?? '' }}
193
+ subtitle={{
194
+ text: `id: ${entity?.id}`,
195
+ learnMore: {
196
+ url: 'https://www.wix.com/',
197
+ label: 'My custom learn more', // Defaults to "Learn more"
198
+ },
199
+ }}
200
+ moreActions={
201
+ <MoreActions
202
+ containerId="cd910877-1bb2-445e-822a-aa04a342c2f5"
203
+ items={[
204
+ [
205
+ {
206
+ biName: 'open-subscriptions',
207
+ text: 'Open Subscriptions',
208
+ prefixIcon: <InvoiceSmall />,
209
+ onClick: () => {
210
+ console.log('Open Subscriptions');
211
+ },
212
+ },
213
+ ],
214
+ ]}
215
+ />
216
+ }
217
+ />
218
+ <EntityPage.Content>
219
+ <EntityPage.MainContent>
220
+ <EntityPage.Card minHeight="24px">
221
+ <Card.Header title="Main Content Card" />
222
+ <Card.Divider />
223
+ <MainContent />
224
+ </EntityPage.Card>
225
+ <CustomFieldsWidget
226
+ fqdn="wix.patterns.dummyservice.v1.dummy_entity"
227
+ dataHook="demo-custom-fields-widget"
228
+ extendedFields={entity?.extendedFields}
229
+ />
230
+ </EntityPage.MainContent>
231
+ <EntityPage.AdditionalContent>
232
+ <EntityPage.Card minHeight="24px">
233
+ <Card.Header title="Side Content Card" />
234
+ <Card.Divider />
235
+ <Card.Content>
236
+ <Box gap="SP2" direction="vertical">
237
+ <Text>Stretched to 4/12 of available space.</Text>
238
+ </Box>
239
+ </Card.Content>
240
+ </EntityPage.Card>
241
+ <EntityPage.Slots containerId="cd910877-1bb2-445e-822a-aa04a342c2f5" />
242
+ <TagsWidget
243
+ fqdn="wix.patterns.dummyservice.v1.dummy_entity"
244
+ dataHook="demo-tags-widget"
245
+ entityTypeName="My Entity"
246
+ entityId={entity?.id}
247
+ initialTags={entity?.tags}
248
+ />
249
+ </EntityPage.AdditionalContent>
250
+ </EntityPage.Content>
251
+ </EntityPage>
252
+ );
253
+ }
254
+ ```
255
+
256
+ ## Examples
257
+
258
+ ### Variations
259
+
260
+ ### Basic
261
+
262
+ This example demonstrates a basic usage of the `EntityPage`.
263
+
264
+ ```tsx
265
+ import React from 'react';
266
+ import {
267
+ EntityPage,
268
+ EntityPageState,
269
+ useEntity,
270
+ useEntityPage,
271
+ } from '@wix/patterns';
272
+ import { useForm } from '@wix/patterns/form';
273
+ import { Box, Card, Text } from '@wix/design-system';
274
+
275
+ interface MyEntity {
276
+ id: string;
277
+ name?: string;
278
+ createdAt: Date;
279
+ updatedAt: Date;
280
+ }
281
+
282
+ interface FormValues {
283
+ name?: string;
284
+ }
285
+
286
+ function Basic() {
287
+ const form = useForm<FormValues>();
288
+ const state: EntityPageState<MyEntity, FormValues> = useEntityPage<
289
+ MyEntity,
290
+ FormValues
291
+ >({
292
+ parentPageId: '',
293
+ form,
294
+ onSave: async () => {
295
+ const formValues = form.getValues();
296
+
297
+ return Promise.resolve({
298
+ updatedEntity: {
299
+ ...state.entity,
300
+ ...formValues,
301
+ } as MyEntity,
302
+ });
303
+ },
304
+ saveErrorToast: (e) => 'Failed to save',
305
+ fetch: () =>
306
+ Promise.resolve({
307
+ entity: {
308
+ id: 'id',
309
+ name: 'Entity Name',
310
+ createdAt: new window.Date(),
311
+ updatedAt: new window.Date(),
312
+ },
313
+ }),
314
+ });
315
+
316
+ const entity = useEntity<MyEntity, FormValues>(state);
317
+
318
+ return (
319
+ <EntityPage state={state}>
320
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
321
+ <EntityPage.Content>
322
+ <EntityPage.MainContent>
323
+ <EntityPage.Card minHeight="24px">
324
+ <Card.Header title="Name Card" />
325
+ <Card.Divider />
326
+ <Card.Content>
327
+ <Box gap="SP2" direction="vertical">
328
+ <Text>{entity?.name}</Text>
329
+ </Box>
330
+ </Card.Content>
331
+ </EntityPage.Card>
332
+ </EntityPage.MainContent>
333
+ </EntityPage.Content>
334
+ </EntityPage>
335
+ );
336
+ }
337
+ ```
338
+
339
+ ---
340
+
341
+ ### 2 Columns
342
+
343
+ This example illustrates the use of both main and additional content.
344
+
345
+ ```tsx
346
+ import React from 'react';
347
+ import {
348
+ EntityPage,
349
+ EntityPageState,
350
+ useEntity,
351
+ useEntityPage,
352
+ } from '@wix/patterns';
353
+ import { useForm } from '@wix/patterns/form';
354
+ import { Box, Card, Text } from '@wix/design-system';
355
+
356
+ interface MyEntity {
357
+ id: string;
358
+ name?: string;
359
+ createdAt: Date;
360
+ updatedAt: Date;
361
+ }
362
+
363
+ function TwoColumns() {
364
+ const form = useForm();
365
+ const state: EntityPageState<MyEntity> = useEntityPage<MyEntity>({
366
+ parentPageId: '',
367
+ form,
368
+ onSave: () =>
369
+ Promise.resolve({
370
+ updatedEntity: {
371
+ ...state.entity,
372
+ } as MyEntity,
373
+ }),
374
+ saveErrorToast: (e) => 'Failed to save',
375
+ fetch: () =>
376
+ Promise.resolve({
377
+ entity: {
378
+ id: 'id',
379
+ name: 'Entity Name',
380
+ createdAt: new window.Date(),
381
+ updatedAt: new window.Date(),
382
+ },
383
+ }),
384
+ });
385
+
386
+ const entity = useEntity<MyEntity>(state);
387
+
388
+ return (
389
+ <EntityPage state={state}>
390
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
391
+ <EntityPage.Content>
392
+ <EntityPage.MainContent>
393
+ <EntityPage.Card minHeight="24px">
394
+ <Card.Header title="Main Content Card" />
395
+ <Card.Divider />
396
+ <Card.Content>
397
+ <Box gap="SP2" direction="vertical">
398
+ <Text>Stretched to 8/12 of available space.</Text>
399
+ </Box>
400
+ </Card.Content>
401
+ </EntityPage.Card>
402
+ </EntityPage.MainContent>
403
+ <EntityPage.AdditionalContent>
404
+ <EntityPage.Card minHeight="24px">
405
+ <Card.Header title="Side Content Card" />
406
+ <Card.Divider />
407
+ <Card.Content>
408
+ <Box gap="SP2" direction="vertical">
409
+ <Text>Stretched to 4/12 of available space.</Text>
410
+ </Box>
411
+ </Card.Content>
412
+ </EntityPage.Card>
413
+ </EntityPage.AdditionalContent>
414
+ </EntityPage.Content>
415
+ </EntityPage>
416
+ );
417
+ }
418
+ ```
419
+
420
+ ---
421
+
422
+ ### Loading
423
+
424
+ This sample illustrates the skeleton state of an entity page based on the provided structure.
425
+
426
+ ```tsx
427
+ import React from 'react';
428
+ import { EntityPage, EntityPageState, useEntityPage } from '@wix/patterns';
429
+ import { useForm } from '@wix/patterns/form';
430
+ import { Box, Card, Text } from '@wix/design-system';
431
+
432
+ interface MyEntity {
433
+ id: string;
434
+ name?: string;
435
+ createdAt: Date;
436
+ updatedAt: Date;
437
+ }
438
+
439
+ interface FormFields {
440
+ id: string;
441
+ name?: string;
442
+ }
443
+
444
+ function Loading() {
445
+ const form = useForm<FormFields>();
446
+ const state: EntityPageState<MyEntity, FormFields> = useEntityPage<
447
+ MyEntity,
448
+ FormFields
449
+ >({
450
+ parentPageId: 'YOUR_PARENT_ID_HERE',
451
+ form,
452
+ onSave: () =>
453
+ new Promise((resolve) => {
454
+ const formValues = form.getValues();
455
+ console.log('form values:', formValues);
456
+
457
+ window.setTimeout(
458
+ () =>
459
+ resolve({
460
+ updatedEntity: {
461
+ ...state.entity,
462
+ ...formValues,
463
+ } as MyEntity,
464
+ }),
465
+ 1000,
466
+ );
467
+ }),
468
+ saveErrorToast: (e) => 'Failed to save',
469
+ fetch: () =>
470
+ new Promise((resolve) => {
471
+ const dateToResolve = new window.Date(window.Date.now());
472
+ // keep waiting :)
473
+ if (dateToResolve.getFullYear() === 2500) {
474
+ resolve({
475
+ entity: {
476
+ id: 'id',
477
+ name: 'My Entity',
478
+ createdAt: new window.Date(),
479
+ updatedAt: new window.Date(),
480
+ },
481
+ });
482
+ }
483
+ }),
484
+ });
485
+
486
+ return (
487
+ <EntityPage state={state}>
488
+ <EntityPage.Header title={{ text: 'Entity Page' }} />
489
+ <EntityPage.Content>
490
+ <EntityPage.MainContent>
491
+ <EntityPage.Card minHeight="24px">
492
+ <Card.Header title="Card" />
493
+ <Card.Divider />
494
+ <Card.Content>
495
+ <Box>
496
+ <Text>Main Card #1</Text>
497
+ </Box>
498
+ </Card.Content>
499
+ </EntityPage.Card>
500
+ <EntityPage.Card minHeight="24px">
501
+ <Card.Header title="Card" />
502
+ <Card.Divider />
503
+ <Card.Content>
504
+ <Box>
505
+ <Text>Main Card #2</Text>
506
+ </Box>
507
+ </Card.Content>
508
+ </EntityPage.Card>
509
+ </EntityPage.MainContent>
510
+ <EntityPage.AdditionalContent>
511
+ <EntityPage.Card minHeight="24px">
512
+ <Card.Header title="Card" />
513
+ <Card.Divider />
514
+ <Card.Content>
515
+ <Box>
516
+ <Text>Side Card #1</Text>
517
+ </Box>
518
+ </Card.Content>
519
+ </EntityPage.Card>
520
+ <EntityPage.Card minHeight="24px">
521
+ <Card.Header title="Card" />
522
+ <Card.Divider />
523
+ <Card.Content>
524
+ <Box>
525
+ <Text>Side Card #2</Text>
526
+ </Box>
527
+ </Card.Content>
528
+ </EntityPage.Card>
529
+ </EntityPage.AdditionalContent>
530
+ </EntityPage.Content>
531
+ </EntityPage>
532
+ );
533
+ }
534
+ ```
535
+
536
+ ---
537
+
538
+ ### Error on Fetch
539
+
540
+ This example demonstrates the error state when fetching an entity fails.
541
+
542
+ ```tsx
543
+ import React from 'react';
544
+ import {
545
+ EntityPage,
546
+ EntityPageState,
547
+ useEntity,
548
+ useEntityPage,
549
+ } from '@wix/patterns';
550
+ import { useForm } from '@wix/patterns/form';
551
+ import { Box, Card, Text } from '@wix/design-system';
552
+
553
+ interface MyEntity {
554
+ id: string;
555
+ name?: string;
556
+ createdAt: Date;
557
+ updatedAt: Date;
558
+ }
559
+
560
+ function FetchError() {
561
+ const form = useForm();
562
+ const state: EntityPageState<MyEntity> = useEntityPage<MyEntity>({
563
+ parentPageId: '',
564
+ form,
565
+ onSave: async () => {
566
+ return Promise.resolve({
567
+ updatedEntity: {
568
+ ...state.entity,
569
+ } as MyEntity,
570
+ });
571
+ },
572
+ saveErrorToast: (e) => 'Failed to save',
573
+ fetch: () =>
574
+ new Promise((_, reject) =>
575
+ window.setTimeout(() => reject(new Error('Something went wrong')), 1000),
576
+ ),
577
+ });
578
+
579
+ const entity = useEntity<MyEntity>(state);
580
+
581
+ return (
582
+ <EntityPage state={state}>
583
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
584
+ <EntityPage.Content>
585
+ <EntityPage.MainContent>
586
+ <EntityPage.Card minHeight="24px">
587
+ <Card.Header title="Main Content Card" />
588
+ <Card.Divider />
589
+ <Card.Content>
590
+ <Box gap="SP2" direction="vertical">
591
+ <Text>Stretched to 8/12 of available space.</Text>
592
+ </Box>
593
+ </Card.Content>
594
+ </EntityPage.Card>
595
+ </EntityPage.MainContent>
596
+ <EntityPage.AdditionalContent>
597
+ <EntityPage.Card minHeight="24px">
598
+ <Card.Header title="Side Content Card" />
599
+ <Card.Divider />
600
+ <Card.Content>
601
+ <Box gap="SP2" direction="vertical">
602
+ <Text>Stretched to 4/12 of available space.</Text>
603
+ </Box>
604
+ </Card.Content>
605
+ </EntityPage.Card>
606
+ </EntityPage.AdditionalContent>
607
+ </EntityPage.Content>
608
+ </EntityPage>
609
+ );
610
+ }
611
+ ```
612
+
613
+ ---
614
+
615
+ ### Error on Save
616
+
617
+ This example demonstrates the error toast when saving an entity fails.
618
+
619
+ ```tsx
620
+ import React from 'react';
621
+ import {
622
+ EntityPage,
623
+ EntityPageState,
624
+ useEntity,
625
+ useEntityPage,
626
+ } from '@wix/patterns';
627
+ import { useForm } from '@wix/patterns/form';
628
+ import { Box, Card, Text } from '@wix/design-system';
629
+
630
+ interface MyEntity {
631
+ id: string;
632
+ name?: string;
633
+ createdAt: Date;
634
+ updatedAt: Date;
635
+ }
636
+
637
+ function SaveError() {
638
+ const form = useForm();
639
+ const state: EntityPageState<MyEntity> = useEntityPage<MyEntity>({
640
+ parentPageId: '',
641
+ form,
642
+ onSave: () => Promise.reject(new Error('Something went wrong')),
643
+ saveErrorToast: (e, { retry }) => ({
644
+ message: 'oops.. unknown error',
645
+ action: { text: 'Retry', onClick: retry },
646
+ }),
647
+ fetch: () =>
648
+ Promise.resolve({
649
+ entity: {
650
+ id: 'id',
651
+ name: 'Entity Name',
652
+ createdAt: new window.Date(),
653
+ updatedAt: new window.Date(),
654
+ },
655
+ }),
656
+ });
657
+
658
+ const entity = useEntity<MyEntity>(state);
659
+
660
+ return (
661
+ <EntityPage state={state}>
662
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
663
+ <EntityPage.Content>
664
+ <EntityPage.MainContent>
665
+ <EntityPage.Card minHeight="24px">
666
+ <Card.Header title="Card" />
667
+ <Card.Divider />
668
+ <Card.Content>
669
+ <Box gap="SP2" direction="vertical">
670
+ <Text>I'm a card</Text>
671
+ </Box>
672
+ </Card.Content>
673
+ </EntityPage.Card>
674
+ </EntityPage.MainContent>
675
+ </EntityPage.Content>
676
+ </EntityPage>
677
+ );
678
+ }
679
+ ```
680
+
681
+ ---
682
+
683
+ ### Overriding Save Button Text
684
+
685
+ This examples demonstrates how to use the `saveCta` prop to override the default **Save** button text.
686
+
687
+ ```tsx
688
+ import React from 'react';
689
+ import {
690
+ EntityPage,
691
+ EntityPageState,
692
+ useEntity,
693
+ useEntityPage,
694
+ } from '@wix/patterns';
695
+ import { useForm } from '@wix/patterns/form';
696
+ import { Box, Card, Text } from '@wix/design-system';
697
+
698
+ interface MyEntity {
699
+ id: string;
700
+ name?: string;
701
+ createdAt: Date;
702
+ updatedAt: Date;
703
+ }
704
+
705
+ interface FormValues {
706
+ name?: string;
707
+ }
708
+
709
+ function SaveCta() {
710
+ const form = useForm<FormValues>();
711
+ const state: EntityPageState<MyEntity, FormValues> = useEntityPage<
712
+ MyEntity,
713
+ FormValues
714
+ >({
715
+ parentPageId: 'YOUR_PARENT_PAGE_ID',
716
+ form,
717
+ onSave: async () => {
718
+ const formValues = form.getValues();
719
+
720
+ return Promise.resolve({
721
+ updatedEntity: {
722
+ ...state.entity,
723
+ ...formValues,
724
+ } as MyEntity,
725
+ });
726
+ },
727
+ saveErrorToast: (e) => 'Failed to save',
728
+ fetch: () =>
729
+ Promise.resolve({
730
+ entity: {
731
+ id: 'id',
732
+ name: 'Entity Name',
733
+ createdAt: new window.Date(),
734
+ updatedAt: new window.Date(),
735
+ },
736
+ }),
737
+ });
738
+
739
+ const entity = useEntity<MyEntity, FormValues>(state);
740
+
741
+ return (
742
+ <EntityPage
743
+ state={state}
744
+ actionsBarConfig={{ saveCta: { text: 'ACTIVATE' } }}
745
+ >
746
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
747
+ <EntityPage.Content>
748
+ <EntityPage.MainContent>
749
+ <EntityPage.Card minHeight="24px">
750
+ <Card.Header title="Name Card" />
751
+ <Card.Divider />
752
+ <Card.Content>
753
+ <Box gap="SP2" direction="vertical">
754
+ <Text>{entity?.name}</Text>
755
+ </Box>
756
+ </Card.Content>
757
+ </EntityPage.Card>
758
+ </EntityPage.MainContent>
759
+ </EntityPage.Content>
760
+ </EntityPage>
761
+ );
762
+ }
763
+ ```
764
+
765
+ ---
766
+
767
+ ### Developer Examples
768
+
769
+ ### Input initialization with useController
770
+
771
+ This demonstrates how to use [useController](https://react-hook-form.com/docs/usecontroller) with the default value set at the `Card.Content` level. Note that the `state.entity` value is initialized following the Card skeleton loader. To obtain the initial value, it must be accessed within the Card.Content child, as illustrated in the following example. Accessing it before or at a higher level will result in an `undefined` value.
772
+
773
+ ```tsx
774
+ import React from 'react';
775
+ import {
776
+ EntityPage,
777
+ EntityPageState,
778
+ useEntity,
779
+ useEntityPage,
780
+ useEntityPageContext,
781
+ } from '@wix/patterns';
782
+ import { useController, useForm } from '@wix/patterns/form';
783
+ import { Box, Card, FormField, Input } from '@wix/design-system';
784
+ import { CardContainerProps } from '../../../dist/types/components/CardContainer';
785
+
786
+ interface MyEntity {
787
+ id: string;
788
+ name?: string;
789
+ createdAt: Date;
790
+ updatedAt: Date;
791
+ }
792
+
793
+ interface FormValues {
794
+ name?: string;
795
+ }
796
+
797
+ function useControllerExample() {
798
+ const form = useForm<FormValues>();
799
+ const state: EntityPageState<MyEntity, FormValues> = useEntityPage<
800
+ MyEntity,
801
+ FormValues
802
+ >({
803
+ parentPageId: '',
804
+ form,
805
+ onSave: async () => {
806
+ const formValues = form.getValues();
807
+
808
+ return Promise.resolve({
809
+ updatedEntity: {
810
+ ...state.entity,
811
+ ...formValues,
812
+ } as MyEntity,
813
+ });
814
+ },
815
+ saveErrorToast: (e) => 'Failed to save',
816
+ fetch: () =>
817
+ Promise.resolve({
818
+ entity: {
819
+ id: 'id',
820
+ name: 'Entity Name',
821
+ createdAt: new window.Date(),
822
+ updatedAt: new window.Date(),
823
+ },
824
+ }),
825
+ });
826
+
827
+ // Usually we will extract this component to a separate file
828
+ const CardContent = () => {
829
+ const pageState = useEntityPageContext<MyEntity, FormValues>();
830
+ const name = useController({
831
+ name: 'name',
832
+ control: pageState.form.control,
833
+ defaultValue: pageState.entity?.name,
834
+ rules: {
835
+ required: { value: true, message: 'This field is required!' },
836
+ },
837
+ });
838
+
839
+ return (
840
+ <Box gap="SP2" direction="vertical">
841
+ <FormField label="Name">
842
+ <Input
843
+ dataHook="name-input"
844
+ inputRef={name.field.ref}
845
+ value={name.field.value}
846
+ onChange={name.field.onChange}
847
+ onBlur={name.field.onBlur}
848
+ />
849
+ </FormField>
850
+ </Box>
851
+ );
852
+ };
853
+
854
+ const entity = useEntity<MyEntity, FormValues>(state);
855
+
856
+ return (
857
+ <EntityPage state={state}>
858
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
859
+ <EntityPage.Content>
860
+ <EntityPage.MainContent>
861
+ <EntityPage.Card minHeight="24px">
862
+ <Card.Header title="Name Card" />
863
+ <Card.Divider />
864
+ <Card.Content>
865
+ <CardContent />
866
+ </Card.Content>
867
+ </EntityPage.Card>
868
+ </EntityPage.MainContent>
869
+ </EntityPage.Content>
870
+ </EntityPage>
871
+ );
872
+ }
873
+ ```
874
+
875
+ ---
876
+
877
+ ### Input initialization with Controller
878
+
879
+ This demonstrates how to use [Controller](https://react-hook-form.com/docs/usecontroller/controller) where you can easily access the entity by using `useEntity`. This method allows for accessing the entity much earlier in the process. As a result, the default value will be dynamically updated as soon as the entity itself is updated, as shown in the example below.
880
+
881
+ ```tsx
882
+ import React from 'react';
883
+ import {
884
+ EntityPage,
885
+ EntityPageState,
886
+ useEntity,
887
+ useEntityPage,
888
+ } from '@wix/patterns';
889
+ import { Controller, useController, useForm } from '@wix/patterns/form';
890
+ import { Box, Card, FormField, Input } from '@wix/design-system';
891
+ import { CardContainerProps } from '../../../dist/types/components/CardContainer';
892
+
893
+ interface MyEntity {
894
+ id: string;
895
+ name?: string;
896
+ createdAt: Date;
897
+ updatedAt: Date;
898
+ }
899
+
900
+ interface FormValues {
901
+ name?: string;
902
+ }
903
+
904
+ function ControllerExample() {
905
+ const form = useForm<FormValues>();
906
+ const state: EntityPageState<MyEntity, FormValues> = useEntityPage<
907
+ MyEntity,
908
+ FormValues
909
+ >({
910
+ parentPageId: '',
911
+ form,
912
+ onSave: async () => {
913
+ const formValues = form.getValues();
914
+
915
+ return Promise.resolve({
916
+ updatedEntity: {
917
+ ...state.entity,
918
+ ...formValues,
919
+ } as MyEntity,
920
+ });
921
+ },
922
+ saveErrorToast: (e) => 'Failed to save',
923
+ fetch: () =>
924
+ Promise.resolve({
925
+ entity: {
926
+ id: 'id',
927
+ name: 'Entity Name',
928
+ createdAt: new window.Date(),
929
+ updatedAt: new window.Date(),
930
+ },
931
+ }),
932
+ });
933
+
934
+ const entity = useEntity<MyEntity, FormValues>(state);
935
+
936
+ return (
937
+ <EntityPage state={state}>
938
+ <EntityPage.Header title={{ text: entity?.name ?? '' }} />
939
+ <EntityPage.Content>
940
+ <EntityPage.MainContent>
941
+ <EntityPage.Card minHeight="24px">
942
+ <Card.Header title="Name Card" />
943
+ <Card.Divider />
944
+ <Card.Content>
945
+ <Controller
946
+ control={form.control}
947
+ name="name"
948
+ defaultValue={entity?.name}
949
+ rules={{
950
+ required: { value: true, message: 'This field is required!' },
951
+ }}
952
+ render={({
953
+ field: { onChange, onBlur, value, ref },
954
+ fieldState: { invalid, error },
955
+ }) => (
956
+ <FormField
957
+ label="Name"
958
+ status={invalid ? 'error' : undefined}
959
+ statusMessage={error?.message}
960
+ >
961
+ <Input
962
+ dataHook="name-input"
963
+ inputRef={ref}
964
+ value={value}
965
+ onChange={onChange}
966
+ onBlur={onBlur}
967
+ />
968
+ </FormField>
969
+ )}
970
+ />
971
+ </Card.Content>
972
+ </EntityPage.Card>
973
+ </EntityPage.MainContent>
974
+ </EntityPage.Content>
975
+ </EntityPage>
976
+ );
977
+ }
978
+ ```
979
+
980
+ ## API
981
+
982
+ ### Extends
983
+
984
+ [Page](https://www.docs.wixdesignsystem.com/?path=/story/components-layout-page--page)
985
+
986
+ ### Props
987
+
988
+ | Prop | Type | Required | Default | Description |
989
+ |------|------|----------|---------|-------------|
990
+ | `state` | `EntityPageState<T, V>` | Yes | - | EntityPageState instance created with the `useEntityPage` hook |
991
+ | `actionsBarConfig` | `ActionsBarConfig` | No | - | Configuration for the actions bar |
992
+ | `children` | `ReactNode` | No | - | Accepts compound components as child items: - `<Page.Header/>` - `<Page.Content/>` - `<Page.Tail/>` - `<Page.Section/>` - `<Page.Footer/>` |
993
+ | `dataHook` | `string` | No | - | Applies a data-hook HTML attribute that can be used in the tests |
994
+ | `backgroundImageUrl` | `string` | No | - | Provides a link to the background image source (URL). Image will be displayed at the top of a page, underneath the \<Page.Header/>. |
995
+ | `maxWidth` | `number` | No | - | Sets the maximum width of the page (paddings excluded) |
996
+ | `minWidth` | `number` | No | - | Sets the minimum width of the page (paddings excluded) |
997
+ | `height` | `string` | No | - | Sets the height of the page in pixels (px), viewport height (vh), etc. |
998
+ | `sidePadding` | `number` | No | - | Sets the side paddings of a page |
999
+ | `className` | `string` | No | - | Specifies a CSS class name to be appended to the component’s root element. |
1000
+ | `gradientClassName` | `string` | No | - | Specifies a CSS class name that defines a gradient background for \<Page.Header/> |
1001
+ | `scrollableContentRef` | `((ref: HTMLElement \| null) => void)` | No | - | Defines a reference called together with page scrollable content ref after page mount. <br/> **Note** - if you need this ref only for listening to scroll events on the scrollable content then use this prop instead: `scrollProps = {onScrollChanged/onScrollAreaChanged}` |
1002
+ | `zIndex` | `number` | No | - | Specifies the stack order (z-index) of a page |
1003
+ | `horizontalScroll` | `boolean` | No | - | Enables page content to scroll horizontally when its width exceed maximum allowed width |
1004
+ | `scrollProps` | `ScrollableContainerCommonProps` | No | - | Pass properties related to the scrollable content of the page. <br/> **onScrollAreaChanged** - defines a handler function for scroll area changes. Function is triggered when the user scrolls to a different area of the scrollable content. See signature for possible areas: `function({area: {y: AreaY, x: AreaX}, target: HTMLElement}) => void` `AreaY`: top \| middle \| bottom \| none `AreaX`: start \| middle \| end \| none (not implemented yet) <br/> **onScrollAreaChanged** - defines a general handler for scroll changes with throttling (100ms): `function({target: HTMLElement}) => void` |
1005
+
1006
+ ## BI
1007
+
1008
+ ### Entity Page Events
1009
+
1010
+ | Event | Description |
1011
+ |-----------------------------------------------------------------------------------------------------------|------------------------------------------------------|
1012
+ | [144:150](https://bo.wix.com/data-tools/bi-catalog-app/event/144:150) | Sent on `Cancel` / `Save` click with `isValid` flag. |
1013
+ | [144:149](https://bo.wix.com/data-tools/bi-catalog-app/event/144:149) | Sent on unsuccessful `Save`. |
1014
+ | [144:141](https://bo.wix.com/data-tools/bi-catalog-app/event/144:141) | Sent when a user clicks on a "try again" CTA. |
1015
+ | [144:174](https://bo.wix.com/data-tools/bi-catalog-app/event/144:174) | Sent on navigation with a dirty state. |
1016
+
1017
+
1018
+
1019
+ ### Component load events
1020
+ Event | Description |
1021
+ --------- | --------------- |
1022
+ [144:110](https://bo.wix.com/data-tools/bi-catalog-app/event/144:110) | Sent when a Wix Patterns component starts loading
1023
+ [144:111](https://bo.wix.com/data-tools/bi-catalog-app/event/144:111) | Sent when a Wix Patterns component is done loading
1024
+
1025
+
1026
+ #### 🐪 Couldn't find what you need?
1027
+ * Check our [BI Catalog](https://bo.wix.com/data-tools/bi-catalog-app?viewId=all-items-view&selectedColumns=src%2Cevid%2Cname%2Cowner%2Cproduct%2CuserType+false%2CdateUpdated%2CdateCreated+false%2CcreatedBy+false%2Cstatus&source=%5B%7B%22id%22%3A%22144%22%2C%22name%22%3A%22144+-+Cairo%22%7D%5D)
1028
+ * Contact us on [#cairo-bi](https://wix.slack.com/archives/C03N53KURH9)
1029
+
1030
+