@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.
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
- package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
- package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js +6 -3
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js +25 -30
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
- package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupProps.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +66 -17
- package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +22 -14
- package/dist/cjs/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js +329 -0
- package/dist/cjs/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
- package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js +85 -0
- package/dist/cjs/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
- package/dist/cjs/components/CtaProps.js.map +1 -1
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js +59 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +23 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js +20 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.js +23 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css +4 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +23 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js +12 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/index.js +31 -0
- package/dist/cjs/components/EditableTable/cellTypes/email/index.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/index.js +5 -1
- package/dist/cjs/components/EditableTable/cellTypes/index.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js +4 -9
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/View.js +4 -5
- package/dist/cjs/components/EditableTable/cellTypes/number/View.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js +79 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js +23 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js +20 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.js +30 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css +4 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +23 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js +12 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/index.js +45 -0
- package/dist/cjs/components/EditableTable/cellTypes/object/index.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/select/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
- package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js +15 -0
- package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
- package/dist/cjs/components/EditableTable/useKeyboardNavigation.js +10 -0
- package/dist/cjs/components/EditableTable/useKeyboardNavigation.js.map +1 -1
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
- package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
- package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
- package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
- package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
- package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
- package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
- package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
- package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js +14 -38
- package/dist/cjs/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
- package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js +34 -0
- package/dist/cjs/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
- package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
- package/dist/cjs/components/common.st.css.js +4 -4
- package/dist/cjs/components/common.st.css.js.map +1 -1
- package/dist/cjs/hooks/useStaticListFilterCollection.js +2 -1
- package/dist/cjs/hooks/useStaticListFilterCollection.js.map +1 -1
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/EditableTable/CellInteractionState.js +65 -0
- package/dist/cjs/state/EditableTable/CellInteractionState.js.map +1 -1
- package/dist/cjs/state/EditableTable/types.js.map +1 -1
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/TableState.js +2 -0
- package/dist/cjs/state/TableState.js.map +1 -1
- package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js +38 -4
- package/dist/cjs/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
- package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js +56 -17
- package/dist/cjs/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
- package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js +5 -1
- package/dist/cjs/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
- package/dist/cjs/styles.global.css +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/AI Assistant.md +171 -0
- package/dist/docs/ActionCellProps.md +40 -0
- package/dist/docs/ActionSubItem.md +24 -0
- package/dist/docs/Allow Users to Add Extended Fields.md +194 -0
- package/dist/docs/AutoCompleteFilter.md +276 -0
- package/dist/docs/BulkActionModalRenderProp.md +22 -0
- package/dist/docs/BulkSelectState.md +18 -0
- package/dist/docs/Category.md +19 -0
- package/dist/docs/CollectionEmptyState.md +240 -0
- package/dist/docs/CollectionErrorState.md +107 -0
- package/dist/docs/CollectionNoResultsState.md +116 -0
- package/dist/docs/CollectionOptimisticActions.md +1074 -0
- package/dist/docs/CollectionPage.Content.md +154 -0
- package/dist/docs/CollectionPage.Header.md +216 -0
- package/dist/docs/CollectionPage.md +183 -0
- package/dist/docs/CollectionPremiumEmptyState.md +115 -0
- package/dist/docs/CollectionSearch.md +345 -0
- package/dist/docs/CollectionSection.md +16 -0
- package/dist/docs/CollectionState.md +29 -0
- package/dist/docs/CollectionSubToolbar.md +14 -0
- package/dist/docs/CollectionToolbar.md +18 -0
- package/dist/docs/Component Tests.md +191 -0
- package/dist/docs/ComputedQuery.md +45 -0
- package/dist/docs/CtaBaseProps.md +19 -0
- package/dist/docs/CustomColumns.md +916 -0
- package/dist/docs/CustomFieldsViewWidget.md +191 -0
- package/dist/docs/CustomFieldsWidget.md +635 -0
- package/dist/docs/Data Extension Overview.md +85 -0
- package/dist/docs/DataResultRaw.md +25 -0
- package/dist/docs/DateRangeFilter.md +202 -0
- package/dist/docs/Display Extended Fields.md +244 -0
- package/dist/docs/Enable Filters for Extended Fields.md +243 -0
- package/dist/docs/EntityPage.AdditionalContent.md +25 -0
- package/dist/docs/EntityPage.Card.md +250 -0
- package/dist/docs/EntityPage.Content.md +24 -0
- package/dist/docs/EntityPage.Header.md +260 -0
- package/dist/docs/EntityPage.MainContent.md +24 -0
- package/dist/docs/EntityPage.Slots.md +75 -0
- package/dist/docs/EntityPage.md +1030 -0
- package/dist/docs/EntityPageState.md +23 -0
- package/dist/docs/Explore Apps.md +170 -0
- package/dist/docs/ExportTo.md +894 -0
- package/dist/docs/Filter Overview.md +448 -0
- package/dist/docs/FilterProps.md +26 -0
- package/dist/docs/FormPageState.md +17 -0
- package/dist/docs/Grid Sections.md +170 -0
- package/dist/docs/Grid.md +598 -0
- package/dist/docs/GridDragAndDrop.md +131 -0
- package/dist/docs/GridFolders.md +259 -0
- package/dist/docs/GridFoldersSection.md +16 -0
- package/dist/docs/GridFoldersState.md +20 -0
- package/dist/docs/GridSectionsProp.md +22 -0
- package/dist/docs/GridState.md +22 -0
- package/dist/docs/Highlighted Search.md +114 -0
- package/dist/docs/InMemoryBackend.md +81 -0
- package/dist/docs/Indeterminate.md +273 -0
- package/dist/docs/Internal Scroll.md +236 -0
- package/dist/docs/More Actions.md +1015 -0
- package/dist/docs/MoreActionsItem.md +33 -0
- package/dist/docs/MultiAutoInlineCheckboxFilter.md +850 -0
- package/dist/docs/MultiBulkActionToolbar.md +1174 -0
- package/dist/docs/MultiInlineCheckboxFilter.md +871 -0
- package/dist/docs/MultiLevelSorting.md +376 -0
- package/dist/docs/MultiSelectCheckboxFilter.md +369 -0
- package/dist/docs/MultiSelectCollectionFilter.md +218 -0
- package/dist/docs/NestedTable.md +1101 -0
- package/dist/docs/NestedTableLevel.md +24 -0
- package/dist/docs/NestedTableNodeState.md +23 -0
- package/dist/docs/NestedTableOptimisticActions.md +21 -0
- package/dist/docs/NestedTableState.md +21 -0
- package/dist/docs/Next.js.md +143 -0
- package/dist/docs/NumberRangeFilter.md +230 -0
- package/dist/docs/OperatorFilterPicker.md +195 -0
- package/dist/docs/PageWrapper.md +50 -0
- package/dist/docs/PatternsReactRoute.md +31 -0
- package/dist/docs/PatternsReactRouter.md +24 -0
- package/dist/docs/PickerContent.md +129 -0
- package/dist/docs/PickerModal.md +680 -0
- package/dist/docs/PickerStandalone.md +332 -0
- package/dist/docs/PrimaryActionButton.md +323 -0
- package/dist/docs/PrimaryActions.md +173 -0
- package/dist/docs/PrimaryPageButton.md +140 -0
- package/dist/docs/RadioGroupFilter.md +73 -0
- package/dist/docs/RequestId.md +58 -0
- package/dist/docs/SecondaryActions.md +175 -0
- package/dist/docs/SettingsPage.AdditionalContent.md +25 -0
- package/dist/docs/SettingsPage.Card.md +246 -0
- package/dist/docs/SettingsPage.Content.md +24 -0
- package/dist/docs/SettingsPage.Header.md +176 -0
- package/dist/docs/SettingsPage.MainContent.md +24 -0
- package/dist/docs/SettingsPage.md +680 -0
- package/dist/docs/SettingsPageState.md +22 -0
- package/dist/docs/SingleSelectFilter.md +401 -0
- package/dist/docs/Sled Tests.md +109 -0
- package/dist/docs/Sortable Columns.md +250 -0
- package/dist/docs/Suggestions.md +370 -0
- package/dist/docs/SummaryBar.md +515 -0
- package/dist/docs/Table Sections.md +473 -0
- package/dist/docs/Table.md +1065 -0
- package/dist/docs/TableColumn.md +35 -0
- package/dist/docs/TableDragAndDrop.md +502 -0
- package/dist/docs/TableFolders.md +419 -0
- package/dist/docs/TableFoldersState.md +22 -0
- package/dist/docs/TableGridSwitch.md +298 -0
- package/dist/docs/TableGridSwitchDragAndDrop.md +170 -0
- package/dist/docs/TableGridSwitchFolders.md +446 -0
- package/dist/docs/TableGridSwitchFoldersState.md +22 -0
- package/dist/docs/TableGridSwitchState.md +23 -0
- package/dist/docs/TableSectionsProp.md +22 -0
- package/dist/docs/TableState.md +24 -0
- package/dist/docs/TableTopNotification.md +314 -0
- package/dist/docs/TabsFilter.md +484 -0
- package/dist/docs/Tags Overview.md +118 -0
- package/dist/docs/Tags.md +718 -0
- package/dist/docs/TagsWidget.md +419 -0
- package/dist/docs/ToolbarCollectionState.md +19 -0
- package/dist/docs/ToolbarFilters.md +1588 -0
- package/dist/docs/ToolbarSecondaryActions.md +383 -0
- package/dist/docs/ToolbarTitle.md +324 -0
- package/dist/docs/View.md +23 -0
- package/dist/docs/Views.md +786 -0
- package/dist/docs/WidgetsFormProvider.md +61 -0
- package/dist/docs/WixPatternsBMProvider.md +31 -0
- package/dist/docs/WixPatternsBaseProvider.md +87 -0
- package/dist/docs/WixPatternsEssentialsProvider.md +43 -0
- package/dist/docs/WixPatternsGizaProvider.md +37 -0
- package/dist/docs/WixPatternsProvider.md +68 -0
- package/dist/docs/Working with Cache.md +114 -0
- package/dist/docs/arrayFilter.md +226 -0
- package/dist/docs/bulkActionModal.md +40 -0
- package/dist/docs/createNestedTableLevel.md +24 -0
- package/dist/docs/createNestedTableSingleEntityLevels.md +20 -0
- package/dist/docs/customFilter.md +182 -0
- package/dist/docs/dateRangeFilter.md +55 -0
- package/dist/docs/deleteSecondaryAction.md +122 -0
- package/dist/docs/idNameArrayFilter.md +206 -0
- package/dist/docs/index.json +662 -0
- package/dist/docs/operatorFilter.md +183 -0
- package/dist/docs/stringFilter.md +204 -0
- package/dist/docs/stringsArrayFilter.md +118 -0
- package/dist/docs/useAmbassadorCollection.md +45 -0
- package/dist/docs/useCollection.md +61 -0
- package/dist/docs/useCreateCollection.md +32 -0
- package/dist/docs/useCreateNestedOptimisticActions.md +21 -0
- package/dist/docs/useEntity.md +44 -0
- package/dist/docs/useEntityPage.md +57 -0
- package/dist/docs/useEntityPageContext.md +28 -0
- package/dist/docs/useFilterCollection.md +163 -0
- package/dist/docs/useGridCollection.md +58 -0
- package/dist/docs/useGridFolders.md +25 -0
- package/dist/docs/useItemsSelectionFilter.md +60 -0
- package/dist/docs/useNestedTable.md +66 -0
- package/dist/docs/useOptimisticActions.md +1288 -0
- package/dist/docs/usePatternsNavigate.md +57 -0
- package/dist/docs/usePickerContent.md +61 -0
- package/dist/docs/usePickerModal.md +68 -0
- package/dist/docs/usePickerStandalone.md +56 -0
- package/dist/docs/useSelector.md +181 -0
- package/dist/docs/useSettingsPage.md +54 -0
- package/dist/docs/useSettingsPageContext.md +28 -0
- package/dist/docs/useStaticListFilterCollection.md +194 -0
- package/dist/docs/useTableCollection.md +58 -0
- package/dist/docs/useTableFolders.md +25 -0
- package/dist/docs/useTableGridSwitchCollection.md +58 -0
- package/dist/docs/useTableGridSwitchFolders.md +25 -0
- package/dist/docs/useWidgetsFormContext.md +19 -0
- package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js +3 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.js +3 -2
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js +39 -6
- package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js +2 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js +110 -0
- package/dist/esm/components/CollectionToolbar/ToolbarOverflowMenu.js.map +1 -0
- package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js +74 -0
- package/dist/esm/components/CollectionToolbar/useToolbarOverflowItems.js.map +1 -0
- package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
- package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
- package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
- package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
- package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.js +21 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js +13 -0
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.js +5 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css +4 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js +8 -0
- package/dist/esm/components/EditableTable/cellTypes/email/View.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/email/index.js +22 -0
- package/dist/esm/components/EditableTable/cellTypes/email/index.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/index.js +5 -1
- package/dist/esm/components/EditableTable/cellTypes/index.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.js +2 -5
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/View.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/View.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.js +39 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js +13 -0
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.js +5 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css +4 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js +8 -0
- package/dist/esm/components/EditableTable/cellTypes/object/View.uni.driver.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/object/index.js +47 -0
- package/dist/esm/components/EditableTable/cellTypes/object/index.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/select/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/useCellFocusAndEditing.js +15 -1
- package/dist/esm/components/EditableTable/useCellFocusAndEditing.js.map +1 -1
- package/dist/esm/components/EditableTable/useKeyboardNavigation.js +10 -0
- package/dist/esm/components/EditableTable/useKeyboardNavigation.js.map +1 -1
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
- package/dist/esm/components/Fade/Fade.st.css.js +2 -2
- package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
- package/dist/esm/components/Heading/Heading.st.css.js +2 -2
- package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
- package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
- package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
- package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
- package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
- package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
- package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js +2 -12
- package/dist/esm/components/TableGridSwitchButton/TableGridSwitchButton.js.map +1 -1
- package/dist/esm/components/TableGridSwitchButton/layoutConfig.js +14 -0
- package/dist/esm/components/TableGridSwitchButton/layoutConfig.js.map +1 -0
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
- package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
- package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
- package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
- package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/esm/components/common.st.css.js +2 -2
- package/dist/esm/hooks/useStaticListFilterCollection.js +1 -0
- package/dist/esm/hooks/useStaticListFilterCollection.js.map +1 -1
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/esm/state/EditableTable/CellInteractionState.js +58 -0
- package/dist/esm/state/EditableTable/CellInteractionState.js.map +1 -1
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/state/TableState.js +2 -0
- package/dist/esm/state/TableState.js.map +1 -1
- package/dist/esm/state/Toolbar/ToolbarResponsiveState.js +40 -5
- package/dist/esm/state/Toolbar/ToolbarResponsiveState.js.map +1 -1
- package/dist/esm/state/Toolbar/computeResponsiveTargetState.js +46 -18
- package/dist/esm/state/Toolbar/computeResponsiveTargetState.js.map +1 -1
- package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js +4 -0
- package/dist/esm/state/Toolbar/toolbarResponsiveConstants.js.map +1 -1
- package/dist/esm/styles.global.css +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTable.uni.driver.d.ts +24 -24
- package/dist/types/components/CollectionTable/CollectionTableWSRTable.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbar.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbar.uni.driver.d.ts +11 -11
- package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts +3 -0
- package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupProps.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts +5 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts +24 -0
- package/dist/types/components/CollectionToolbar/ToolbarOverflowMenu.d.ts.map +1 -0
- package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts +17 -0
- package/dist/types/components/CollectionToolbar/useToolbarOverflowItems.d.ts.map +1 -0
- package/dist/types/components/CollectionViewsDropdown/ViewsDropdown.st.css.d.ts.map +1 -1
- package/dist/types/components/CtaProps.d.ts +1 -1
- package/dist/types/components/CustomFieldModal/CustomFieldModal.uni.driver.d.ts +2 -2
- package/dist/types/components/CustomFieldsWidget/CustomFieldsWidget.uni.driver.d.ts +3 -3
- package/dist/types/components/DropdownFilter/CollectionDropdownFilter.uni.driver.d.ts +1 -1
- package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts +14 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts +22 -0
- package/dist/types/components/EditableTable/cellTypes/email/Edit.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts +14 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts +15 -0
- package/dist/types/components/EditableTable/cellTypes/email/View.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/email/index.d.ts +5 -0
- package/dist/types/components/EditableTable/cellTypes/email/index.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/index.d.ts +3 -1
- package/dist/types/components/EditableTable/cellTypes/index.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/number/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/number/View.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts +14 -0
- package/dist/types/components/EditableTable/cellTypes/object/Edit.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts +22 -0
- package/dist/types/components/EditableTable/cellTypes/object/Edit.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.d.ts +4 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts +14 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts +15 -0
- package/dist/types/components/EditableTable/cellTypes/object/View.uni.driver.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/object/index.d.ts +5 -0
- package/dist/types/components/EditableTable/cellTypes/object/index.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/useCellFocusAndEditing.d.ts.map +1 -1
- package/dist/types/components/EditableTable/useKeyboardNavigation.d.ts.map +1 -1
- package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
- package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
- package/dist/types/components/FiltersPanel/FiltersPanel.uni.driver.d.ts +4 -4
- package/dist/types/components/Grid/Grid.uni.driver.d.ts +13 -13
- package/dist/types/components/Grid/GridFolders.uni.driver.d.ts +38 -38
- package/dist/types/components/Grid/GridFoldersSection.uni.driver.d.ts +13 -13
- package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
- package/dist/types/components/Kanban/Kanban.uni.driver.d.ts +11 -11
- package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
- package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts +37 -37
- package/dist/types/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.d.ts.map +1 -1
- package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
- package/dist/types/components/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
- package/dist/types/components/ScrollableContent/ScrollableContent.st.css.d.ts.map +1 -1
- package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
- package/dist/types/components/SummaryBar/SummaryBar.uni.driver.d.ts +1 -1
- package/dist/types/components/Table/Table.uni.driver.d.ts +26 -26
- package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts +37 -37
- package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts +40 -40
- package/dist/types/components/TableGridSwitchButton/TableGridSwitchButton.d.ts.map +1 -1
- package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts +9 -0
- package/dist/types/components/TableGridSwitchButton/layoutConfig.d.ts.map +1 -0
- package/dist/types/components/TabsFilter/TabsFilter.uni.driver.d.ts +1 -1
- package/dist/types/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.d.ts.map +1 -1
- package/dist/types/hooks/useStaticListFilterCollection.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/CellInteractionState.d.ts +7 -0
- package/dist/types/state/EditableTable/CellInteractionState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/types.d.ts +2 -0
- package/dist/types/state/EditableTable/types.d.ts.map +1 -1
- package/dist/types/state/TableState.d.ts +2 -0
- package/dist/types/state/TableState.d.ts.map +1 -1
- package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts +3 -0
- package/dist/types/state/Toolbar/ToolbarResponsiveState.d.ts.map +1 -1
- package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts +8 -1
- package/dist/types/state/Toolbar/computeResponsiveTargetState.d.ts.map +1 -1
- package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts +2 -0
- package/dist/types/state/Toolbar/toolbarResponsiveConstants.d.ts.map +1 -1
- package/dist/types/testkit/enzyme.d.ts +194 -194
- package/dist/types/testkit/jsdom.d.ts +207 -207
- package/dist/types/testkit/playwright.d.ts +194 -194
- package/dist/types/testkit/puppeteer.d.ts +205 -205
- package/dist/types/version.d.ts +1 -1
- package/package.json +10 -7
- package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
- package/src/components/Collapse/Collapse.st.css.ts +2 -2
- package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
- package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTableWSRTable.tsx +3 -0
- package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
- package/src/components/CollectionToolbar/CollectionToolbar.tsx +11 -4
- package/src/components/CollectionToolbar/CollectionToolbarActionsGroupProps.ts +3 -0
- package/src/components/CollectionToolbar/CollectionToolbarActionsGroupResponsiveLayout.tsx +73 -16
- package/src/components/CollectionToolbar/CollectionToolbarActionsToolbarItemsGroup.tsx +4 -0
- package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
- package/src/components/CollectionToolbar/ToolbarOverflowMenu.tsx +323 -0
- package/src/components/CollectionToolbar/useToolbarOverflowItems.ts +112 -0
- package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
- package/src/components/CtaProps.ts +1 -1
- package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/Edit.st.css +4 -0
- package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/email/Edit.tsx +46 -0
- package/src/components/EditableTable/cellTypes/email/Edit.uni.driver.ts +23 -0
- package/src/components/EditableTable/cellTypes/email/View.st.css +4 -0
- package/src/components/EditableTable/cellTypes/email/View.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/email/View.tsx +8 -0
- package/src/components/EditableTable/cellTypes/email/View.uni.driver.ts +9 -0
- package/src/components/EditableTable/cellTypes/email/index.ts +23 -0
- package/src/components/EditableTable/cellTypes/index.ts +6 -0
- package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/Edit.tsx +3 -8
- package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/View.tsx +2 -4
- package/src/components/EditableTable/cellTypes/object/Edit.st.css +4 -0
- package/src/components/EditableTable/cellTypes/object/Edit.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/object/Edit.tsx +72 -0
- package/src/components/EditableTable/cellTypes/object/Edit.uni.driver.ts +22 -0
- package/src/components/EditableTable/cellTypes/object/View.st.css +4 -0
- package/src/components/EditableTable/cellTypes/object/View.st.css.ts +25 -0
- package/src/components/EditableTable/cellTypes/object/View.tsx +12 -0
- package/src/components/EditableTable/cellTypes/object/View.uni.driver.ts +9 -0
- package/src/components/EditableTable/cellTypes/object/index.ts +49 -0
- package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/select/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
- package/src/components/EditableTable/useCellFocusAndEditing.ts +16 -1
- package/src/components/EditableTable/useKeyboardNavigation.ts +11 -0
- package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
- package/src/components/Fade/Fade.st.css.ts +2 -2
- package/src/components/Heading/Heading.st.css.ts +2 -2
- package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
- package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
- package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
- package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
- package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
- package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
- package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
- package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
- package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
- package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
- package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
- package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
- package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
- package/src/components/TableGridSwitchButton/TableGridSwitchButton.tsx +2 -21
- package/src/components/TableGridSwitchButton/layoutConfig.tsx +20 -0
- package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
- package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
- package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
- package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
- package/src/components/common.st.css.ts +2 -2
- package/src/hooks/useStaticListFilterCollection.ts +1 -0
- package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/EditableTable/CellInteractionState.ts +63 -0
- package/src/state/EditableTable/types.ts +2 -0
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/state/TableState.ts +3 -0
- package/src/state/Toolbar/ToolbarResponsiveState.ts +64 -10
- package/src/state/Toolbar/computeResponsiveTargetState.ts +68 -18
- package/src/state/Toolbar/toolbarResponsiveConstants.ts +4 -0
- package/src/styles.global.css +1 -1
- package/src/version.ts +1 -1
|
@@ -0,0 +1,1065 @@
|
|
|
1
|
+
# Table
|
|
2
|
+
|
|
3
|
+
**Category:** Base Components/Collections/Table/Table
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Table, useTableCollection } from '@wix/patterns'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Design
|
|
12
|
+
|
|
13
|
+
### Description
|
|
14
|
+
|
|
15
|
+
The `Table` component displays data in rows and columns, allowing you to organize information in an easy-to-scan format. This component extends the standard Wix Design System [`Table`](https://www.docs.wixdesignsystem.com/?path=/story/components-lists-table--table) to offer additional advanced features like infinite scroll, search, and filters.
|
|
16
|
+
|
|
17
|
+
#### Usage
|
|
18
|
+
|
|
19
|
+
1. Wrap your code in a `WixDesignSystemProvider` followed by a [`WixPatternsProvider`](./?path=/story/base-components-providers--wixpatternsprovider).
|
|
20
|
+
1. Wrap `Table` in a [`CollectionPage`](./?path=/story/base-components-pages-collection-page--collectionpage).
|
|
21
|
+
1. Create a [`TableState`](./?path=/story/base-components-collections-table-tablestate--tablestate) using [`useTableCollection()`](./?path=/story/base-components-collections-table-usetablecollection--usetablecollection).
|
|
22
|
+
1. Pass the `TableState` to the `state` prop.
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
import { Table } from '@wix/patterns';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
### Variations
|
|
31
|
+
|
|
32
|
+
### Basic table
|
|
33
|
+
|
|
34
|
+
A basic table. Contains a search bar in the table's toolbar by default. To remove the search bar from the table's toolbar, set the `collectionSearch` prop to `false`.
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import React from 'react';
|
|
38
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
39
|
+
import {
|
|
40
|
+
CollectionEmptyState,
|
|
41
|
+
Table,
|
|
42
|
+
OffsetQuery,
|
|
43
|
+
useTableCollection,
|
|
44
|
+
} from '@wix/patterns';
|
|
45
|
+
import { Avatar } from '@wix/design-system';
|
|
46
|
+
import { Edit } from '@wix/wix-ui-icons-common';
|
|
47
|
+
import { contacts } from '@wix/crm';
|
|
48
|
+
|
|
49
|
+
function BasicTable() {
|
|
50
|
+
const tableState = useTableCollection<contacts.Contact>({
|
|
51
|
+
queryName: 'contacts-Basic',
|
|
52
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
53
|
+
fetchData: async (query: OffsetQuery) => {
|
|
54
|
+
const { limit, offset, search } = query;
|
|
55
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
56
|
+
|
|
57
|
+
if (search) {
|
|
58
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const { items = [], totalCount: total } = await queryBuilder.find();
|
|
62
|
+
return {
|
|
63
|
+
items,
|
|
64
|
+
total,
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<CollectionPage height="400px">
|
|
71
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
72
|
+
<CollectionPage.Content>
|
|
73
|
+
<Table
|
|
74
|
+
state={tableState}
|
|
75
|
+
columns={[
|
|
76
|
+
{
|
|
77
|
+
title: '',
|
|
78
|
+
width: '50px',
|
|
79
|
+
render: (contact) => (
|
|
80
|
+
<Avatar
|
|
81
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
82
|
+
/>
|
|
83
|
+
),
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
title: 'Name',
|
|
87
|
+
render: (contact) =>
|
|
88
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
89
|
+
width: '300px',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: 'Last Activity',
|
|
93
|
+
render: (contact) =>
|
|
94
|
+
contact.lastActivity?.activityDate?.toLocaleString(),
|
|
95
|
+
},
|
|
96
|
+
]}
|
|
97
|
+
actionCell={() => ({
|
|
98
|
+
secondaryActions: [
|
|
99
|
+
{
|
|
100
|
+
icon: <Edit />,
|
|
101
|
+
text: 'Edit',
|
|
102
|
+
onClick: () => {},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
})}
|
|
106
|
+
/>
|
|
107
|
+
</CollectionPage.Content>
|
|
108
|
+
</CollectionPage>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Horizontal scroll
|
|
114
|
+
|
|
115
|
+
Enabling horizontal scrolling within rows.
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
import React from 'react';
|
|
119
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
120
|
+
import { Table, OffsetQuery, useTableCollection } from '@wix/patterns';
|
|
121
|
+
import { Avatar } from '@wix/design-system';
|
|
122
|
+
import { contacts } from '@wix/crm';
|
|
123
|
+
|
|
124
|
+
function HorizontalScrollTable() {
|
|
125
|
+
const tableState = useTableCollection<contacts.Contact>({
|
|
126
|
+
queryName: 'contacts-HorizontalScroll',
|
|
127
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
128
|
+
fetchData: async (query: OffsetQuery) => {
|
|
129
|
+
const { limit, offset, search } = query;
|
|
130
|
+
|
|
131
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
132
|
+
|
|
133
|
+
if (search) {
|
|
134
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return queryBuilder.find().then(({ items = [], totalCount: total }) => {
|
|
138
|
+
return {
|
|
139
|
+
items,
|
|
140
|
+
total,
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
return (
|
|
147
|
+
<CollectionPage height="400px">
|
|
148
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
149
|
+
<CollectionPage.Content>
|
|
150
|
+
<Table
|
|
151
|
+
state={tableState}
|
|
152
|
+
horizontalScroll // Add this line to enable horizontal scrolling
|
|
153
|
+
columns={[
|
|
154
|
+
{
|
|
155
|
+
title: '',
|
|
156
|
+
width: '50px',
|
|
157
|
+
render: (contact) => (
|
|
158
|
+
<Avatar
|
|
159
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
160
|
+
/>
|
|
161
|
+
),
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
title: 'Name',
|
|
165
|
+
render: (contact) =>
|
|
166
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
167
|
+
width: '250px',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: 'email',
|
|
171
|
+
title: 'Email',
|
|
172
|
+
width: '200px',
|
|
173
|
+
render: (contact) => contact.primaryInfo?.email,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: 'phone',
|
|
177
|
+
title: 'Phone',
|
|
178
|
+
width: '200px',
|
|
179
|
+
render: (contact) => contact.primaryInfo?.phone,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: 'lastActivity',
|
|
183
|
+
title: 'Last Activity',
|
|
184
|
+
width: '200px',
|
|
185
|
+
render: (contact) =>
|
|
186
|
+
contact.lastActivity?.activityDate?.toLocaleString(),
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: 'createdDate',
|
|
190
|
+
title: 'Created Date',
|
|
191
|
+
width: '200px',
|
|
192
|
+
render: (contact) => contact._createdDate?.toLocaleString(),
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: 'updatedDate',
|
|
196
|
+
title: 'Updated Date',
|
|
197
|
+
width: '200px',
|
|
198
|
+
render: (contact) => contact._updatedDate?.toLocaleString(),
|
|
199
|
+
},
|
|
200
|
+
]}
|
|
201
|
+
/>
|
|
202
|
+
</CollectionPage.Content>
|
|
203
|
+
</CollectionPage>
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Filters
|
|
209
|
+
|
|
210
|
+
A table with filters. Use the `filters` prop to add filter capabilities to the table's toolbar.
|
|
211
|
+
|
|
212
|
+
```tsx
|
|
213
|
+
import React from 'react';
|
|
214
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
215
|
+
import {
|
|
216
|
+
CollectionToolbarFilters,
|
|
217
|
+
idNameArrayFilter,
|
|
218
|
+
Table,
|
|
219
|
+
MultiSelectCheckboxFilter,
|
|
220
|
+
SingleSelectFilter,
|
|
221
|
+
stringsArrayFilter,
|
|
222
|
+
useCollection,
|
|
223
|
+
Filter,
|
|
224
|
+
useStaticListFilterCollection,
|
|
225
|
+
useTableCollection,
|
|
226
|
+
} from '@wix/patterns';
|
|
227
|
+
import { Avatar } from '@wix/design-system';
|
|
228
|
+
import { contacts } from '@wix/crm';
|
|
229
|
+
import { subDays } from 'date-fns';
|
|
230
|
+
|
|
231
|
+
interface Duration {
|
|
232
|
+
id: string;
|
|
233
|
+
name: string;
|
|
234
|
+
days: number | null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
type ContactsFilters = {
|
|
238
|
+
level: Filter<string[]>;
|
|
239
|
+
lastSeen: Filter<Duration[]>;
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
function ToolbarFiltersTable() {
|
|
243
|
+
const tableState = useTableCollection<contacts.Contact, ContactsFilters>({
|
|
244
|
+
queryName: 'contacts-ToolbarFilters',
|
|
245
|
+
fetchData: (query) => {
|
|
246
|
+
const { limit, offset, search, filters } = query;
|
|
247
|
+
|
|
248
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
249
|
+
|
|
250
|
+
if (search) {
|
|
251
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (filters.level) {
|
|
255
|
+
queryBuilder = queryBuilder.in('info.jobTitle', filters.level);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const lastSeenDays = filters.lastSeen?.[0]?.days;
|
|
259
|
+
if (lastSeenDays) {
|
|
260
|
+
queryBuilder = queryBuilder.gt(
|
|
261
|
+
'lastActivity.activityDate',
|
|
262
|
+
subDays(new window.Date(), lastSeenDays),
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return queryBuilder.find().then(({ items = [], totalCount: total }) => {
|
|
267
|
+
return {
|
|
268
|
+
items,
|
|
269
|
+
total,
|
|
270
|
+
};
|
|
271
|
+
});
|
|
272
|
+
},
|
|
273
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
274
|
+
filters: {
|
|
275
|
+
level: stringsArrayFilter(),
|
|
276
|
+
lastSeen: idNameArrayFilter(),
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
const lastSeenCollection = useStaticListFilterCollection(
|
|
281
|
+
tableState.collection.filters.lastSeen,
|
|
282
|
+
[
|
|
283
|
+
{ id: 'w', name: 'Week', days: 7 },
|
|
284
|
+
{ id: 'm', name: 'Month', days: 30 },
|
|
285
|
+
{ id: 'y', name: 'Year', days: 365 },
|
|
286
|
+
{ id: 'o', name: 'Other', days: null },
|
|
287
|
+
],
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
const levelsCollection = useStaticListFilterCollection(
|
|
291
|
+
tableState.collection.filters.level,
|
|
292
|
+
[
|
|
293
|
+
'Beginner',
|
|
294
|
+
'Amateur',
|
|
295
|
+
'Semi-Pro',
|
|
296
|
+
'Professional',
|
|
297
|
+
'World Class',
|
|
298
|
+
'Legendary',
|
|
299
|
+
'Ultimate',
|
|
300
|
+
],
|
|
301
|
+
);
|
|
302
|
+
|
|
303
|
+
return (
|
|
304
|
+
<CollectionPage height="400px">
|
|
305
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
306
|
+
<CollectionPage.Content>
|
|
307
|
+
<Table
|
|
308
|
+
state={tableState}
|
|
309
|
+
columns={[
|
|
310
|
+
{
|
|
311
|
+
title: '',
|
|
312
|
+
width: '50px',
|
|
313
|
+
render: (contact) => (
|
|
314
|
+
<Avatar
|
|
315
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
316
|
+
/>
|
|
317
|
+
),
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
title: 'Name',
|
|
321
|
+
render: (contact) =>
|
|
322
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
323
|
+
width: '250px',
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
id: 'jobTitle',
|
|
327
|
+
title: 'Job Title',
|
|
328
|
+
render: (contact) => contact.info?.jobTitle,
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
id: 'lastActivity',
|
|
332
|
+
title: 'Last Activity',
|
|
333
|
+
width: '200px',
|
|
334
|
+
render: (contact) =>
|
|
335
|
+
contact.lastActivity?.activityDate?.toLocaleString(),
|
|
336
|
+
},
|
|
337
|
+
]}
|
|
338
|
+
filters={
|
|
339
|
+
<CollectionToolbarFilters
|
|
340
|
+
inline={1}
|
|
341
|
+
panelTitle="Filter your contacts"
|
|
342
|
+
>
|
|
343
|
+
<MultiSelectCheckboxFilter
|
|
344
|
+
popoverProps={{ appendTo: 'window' }}
|
|
345
|
+
placeholder="Select Level"
|
|
346
|
+
accordionItemProps={{ label: 'Level' }}
|
|
347
|
+
filter={tableState.collection.filters.level}
|
|
348
|
+
collection={levelsCollection}
|
|
349
|
+
renderItem={(level) => ({ title: level })}
|
|
350
|
+
/>
|
|
351
|
+
|
|
352
|
+
<SingleSelectFilter
|
|
353
|
+
filter={tableState.collection.filters.lastSeen}
|
|
354
|
+
placeholder="Select Last Seen"
|
|
355
|
+
accordionItemProps={{ label: 'Last Seen' }}
|
|
356
|
+
collection={lastSeenCollection}
|
|
357
|
+
/>
|
|
358
|
+
</CollectionToolbarFilters>
|
|
359
|
+
}
|
|
360
|
+
/>
|
|
361
|
+
</CollectionPage.Content>
|
|
362
|
+
</CollectionPage>
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Cursor Pagination
|
|
368
|
+
|
|
369
|
+
The default pagination is offset but you can change by providing cursor to `paginationMode` property.
|
|
370
|
+
|
|
371
|
+
```tsx
|
|
372
|
+
import React from 'react';
|
|
373
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
374
|
+
import {
|
|
375
|
+
CollectionEmptyState,
|
|
376
|
+
Table,
|
|
377
|
+
useTableCollection,
|
|
378
|
+
CursorQuery,
|
|
379
|
+
} from '@wix/patterns';
|
|
380
|
+
import { useHttpClient } from '@wix/yoshi-flow-bm';
|
|
381
|
+
|
|
382
|
+
interface User {
|
|
383
|
+
id: string;
|
|
384
|
+
name: string;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function CursorPaginationTable() {
|
|
388
|
+
const httpClient = useHttpClient();
|
|
389
|
+
|
|
390
|
+
const tableState = useTableCollection<User>({
|
|
391
|
+
queryName: 'users-CursorPagination',
|
|
392
|
+
paginationMode: 'cursor',
|
|
393
|
+
fetchData: (query: CursorQuery) => {
|
|
394
|
+
const { limit, cursor, search } = query;
|
|
395
|
+
return httpClient
|
|
396
|
+
.request<{ total: number; items: User[]; cursor?: string }>({
|
|
397
|
+
url: '/api/users',
|
|
398
|
+
data: {
|
|
399
|
+
query: {
|
|
400
|
+
limit,
|
|
401
|
+
cursor,
|
|
402
|
+
search,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
})
|
|
406
|
+
.then(({ data: { items, total, cursor } }) => ({
|
|
407
|
+
items,
|
|
408
|
+
total,
|
|
409
|
+
cursor,
|
|
410
|
+
}));
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
return (
|
|
415
|
+
<CollectionPage height="400px">
|
|
416
|
+
<CollectionPage.Header title={{ text: 'Users' }} />
|
|
417
|
+
<CollectionPage.Content>
|
|
418
|
+
<Table
|
|
419
|
+
state={tableState}
|
|
420
|
+
columns={[
|
|
421
|
+
{
|
|
422
|
+
title: 'Name',
|
|
423
|
+
width: '250px',
|
|
424
|
+
render: (user) => user.name,
|
|
425
|
+
},
|
|
426
|
+
]}
|
|
427
|
+
emptyState={<CollectionEmptyState />}
|
|
428
|
+
/>
|
|
429
|
+
</CollectionPage.Content>
|
|
430
|
+
</CollectionPage>
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Header
|
|
436
|
+
|
|
437
|
+
A table with a header row. Set the `titleBarDisplay` prop to `false` to hide the table header row.
|
|
438
|
+
|
|
439
|
+
```tsx
|
|
440
|
+
import React from 'react';
|
|
441
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
442
|
+
import {
|
|
443
|
+
CollectionEmptyState,
|
|
444
|
+
Table,
|
|
445
|
+
OffsetQuery,
|
|
446
|
+
useCollection,
|
|
447
|
+
} from '@wix/patterns';
|
|
448
|
+
import { Avatar } from '@wix/design-system';
|
|
449
|
+
import { Edit } from '@wix/wix-ui-icons-common';
|
|
450
|
+
import { contacts } from '@wix/crm';
|
|
451
|
+
|
|
452
|
+
function HiddenHeader() {
|
|
453
|
+
const collection = useCollection<contacts.Contact>({
|
|
454
|
+
queryName: 'contacts-Basic',
|
|
455
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
456
|
+
fetchData: (query: OffsetQuery) => {
|
|
457
|
+
const { limit, offset, search } = query;
|
|
458
|
+
|
|
459
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
460
|
+
|
|
461
|
+
if (search) {
|
|
462
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
return queryBuilder.find().then(({ items = [], totalCount: total }) => {
|
|
466
|
+
return {
|
|
467
|
+
items,
|
|
468
|
+
total,
|
|
469
|
+
};
|
|
470
|
+
});
|
|
471
|
+
},
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
return (
|
|
475
|
+
<CollectionPage height="400px">
|
|
476
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
477
|
+
<CollectionPage.Content>
|
|
478
|
+
<Table
|
|
479
|
+
showTitleBar={false}
|
|
480
|
+
state={collection}
|
|
481
|
+
columns={[
|
|
482
|
+
{
|
|
483
|
+
title: '',
|
|
484
|
+
width: '50px',
|
|
485
|
+
render: (contact) => (
|
|
486
|
+
<Avatar
|
|
487
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
488
|
+
/>
|
|
489
|
+
),
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
title: 'Name',
|
|
493
|
+
render: (contact) =>
|
|
494
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
495
|
+
width: '250px',
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
id: 'jobTitle',
|
|
499
|
+
title: 'Job Title',
|
|
500
|
+
render: (contact) => contact.info?.jobTitle,
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
id: 'lastActivity',
|
|
504
|
+
title: 'Last Activity',
|
|
505
|
+
width: '200px',
|
|
506
|
+
render: (contact) =>
|
|
507
|
+
contact.lastActivity?.activityDate?.toLocaleString(),
|
|
508
|
+
},
|
|
509
|
+
]}
|
|
510
|
+
emptyState={<CollectionEmptyState />}
|
|
511
|
+
actionCell={(contact, index) => ({
|
|
512
|
+
secondaryActions: [
|
|
513
|
+
{
|
|
514
|
+
icon: <Edit />,
|
|
515
|
+
text: 'Edit',
|
|
516
|
+
onClick: () => {},
|
|
517
|
+
},
|
|
518
|
+
],
|
|
519
|
+
})}
|
|
520
|
+
/>
|
|
521
|
+
</CollectionPage.Content>
|
|
522
|
+
</CollectionPage>
|
|
523
|
+
);
|
|
524
|
+
}
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Table disabled rows
|
|
528
|
+
|
|
529
|
+
set `selectionDisabled` to disabled rows.
|
|
530
|
+
|
|
531
|
+
```tsx
|
|
532
|
+
import React from 'react';
|
|
533
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
534
|
+
import {
|
|
535
|
+
Table,
|
|
536
|
+
OffsetQuery,
|
|
537
|
+
useTableCollection,
|
|
538
|
+
MultiBulkActionToolbar,
|
|
539
|
+
} from '@wix/patterns';
|
|
540
|
+
import { Avatar } from '@wix/design-system';
|
|
541
|
+
import { Visible, Hidden } from '@wix/wix-ui-icons-common';
|
|
542
|
+
import { contacts } from '@wix/crm';
|
|
543
|
+
|
|
544
|
+
function SelectionDisabled() {
|
|
545
|
+
const tableState = useTableCollection<contacts.Contact>({
|
|
546
|
+
queryName: 'contacts-SelectionDisabled',
|
|
547
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
548
|
+
fetchData: (query: OffsetQuery) => {
|
|
549
|
+
const { limit, offset, search } = query;
|
|
550
|
+
|
|
551
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
552
|
+
|
|
553
|
+
if (search) {
|
|
554
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
return queryBuilder.find().then(({ items = [], totalCount: total }) => {
|
|
558
|
+
return {
|
|
559
|
+
items,
|
|
560
|
+
total,
|
|
561
|
+
};
|
|
562
|
+
});
|
|
563
|
+
},
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
const options = [
|
|
567
|
+
{ label: 'Visible', icon: <Visible /> },
|
|
568
|
+
{ label: 'Hidden', icon: <Hidden /> },
|
|
569
|
+
];
|
|
570
|
+
|
|
571
|
+
const [selectedOption, setSelectedOption] = React.useState({
|
|
572
|
+
label: 'Set Visibility',
|
|
573
|
+
icon: <Visible />,
|
|
574
|
+
});
|
|
575
|
+
|
|
576
|
+
return (
|
|
577
|
+
<CollectionPage height="400px">
|
|
578
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
579
|
+
<CollectionPage.Content>
|
|
580
|
+
<Table
|
|
581
|
+
selectionDisabled={({ index }) => index % 2 === 0}
|
|
582
|
+
checkboxTooltipContent={(rowData) => {
|
|
583
|
+
const name = `${rowData.item.info?.name?.first} ${rowData.item.info?.name?.last}`;
|
|
584
|
+
return `Selection disabled for ${name}`;
|
|
585
|
+
}}
|
|
586
|
+
bulkActionToolbar={() => {
|
|
587
|
+
return (
|
|
588
|
+
<MultiBulkActionToolbar
|
|
589
|
+
primaryActionItems={[
|
|
590
|
+
{
|
|
591
|
+
dataHook: 'set-visibility',
|
|
592
|
+
label: selectedOption.label,
|
|
593
|
+
prefixIcon: selectedOption.icon,
|
|
594
|
+
subItems: options.map((el) => ({
|
|
595
|
+
prefixIcon: el.icon,
|
|
596
|
+
label: el.label,
|
|
597
|
+
onClick: () => setSelectedOption(el),
|
|
598
|
+
})),
|
|
599
|
+
},
|
|
600
|
+
]}
|
|
601
|
+
/>
|
|
602
|
+
);
|
|
603
|
+
}}
|
|
604
|
+
state={tableState}
|
|
605
|
+
columns={[
|
|
606
|
+
{
|
|
607
|
+
title: '',
|
|
608
|
+
width: '50px',
|
|
609
|
+
render: (contact) => (
|
|
610
|
+
<Avatar
|
|
611
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
612
|
+
/>
|
|
613
|
+
),
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
title: 'Name',
|
|
617
|
+
render: (contact) =>
|
|
618
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
619
|
+
width: '300px',
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
title: 'Created Date',
|
|
623
|
+
render: (contact) => contact._createdDate?.toLocaleString(),
|
|
624
|
+
},
|
|
625
|
+
]}
|
|
626
|
+
/>
|
|
627
|
+
</CollectionPage.Content>
|
|
628
|
+
</CollectionPage>
|
|
629
|
+
);
|
|
630
|
+
}
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
---
|
|
634
|
+
|
|
635
|
+
### Virtual
|
|
636
|
+
|
|
637
|
+
The `TableVirtual` component is an extension of the `Table` component, designed to efficiently handle large datasets by utilizing virtualization. It provides smooth scrolling and rendering performance, especially when dealing with a large number of rows. The virtualization technique only renders the visible rows on the screen, making it highly efficient.
|
|
638
|
+
|
|
639
|
+
It is recommended to use the `rowHeight` prop when the row heights are consistent across the table, and the `estimatedRowHeight` prop when the row heights are variable. Providing the correct props helps to optimize the virtualized rendering process.
|
|
640
|
+
|
|
641
|
+
```tsx
|
|
642
|
+
import { Avatar } from '@wix/design-system';
|
|
643
|
+
import React from 'react';
|
|
644
|
+
import { Edit } from '@wix/wix-ui-icons-common';
|
|
645
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
646
|
+
import {
|
|
647
|
+
CollectionEmptyState,
|
|
648
|
+
OffsetQuery,
|
|
649
|
+
useTableCollection,
|
|
650
|
+
TableVirtual,
|
|
651
|
+
} from '@wix/patterns';
|
|
652
|
+
import { contacts } from '@wix/crm';
|
|
653
|
+
|
|
654
|
+
function Virtual() {
|
|
655
|
+
const tableState = useTableCollection<contacts.Contact>({
|
|
656
|
+
queryName: 'contacts-Virtual',
|
|
657
|
+
itemName: (item) => `${item.info?.name?.first} ${item.info?.name?.last}`,
|
|
658
|
+
fetchData: (query: OffsetQuery) => {
|
|
659
|
+
const { limit, offset, search } = query;
|
|
660
|
+
|
|
661
|
+
let queryBuilder = contacts.queryContacts().limit(limit).skip(offset);
|
|
662
|
+
|
|
663
|
+
if (search) {
|
|
664
|
+
queryBuilder = queryBuilder.startsWith('info.name.first', search);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
return queryBuilder.find().then(({ items = [], totalCount: total }) => {
|
|
668
|
+
return {
|
|
669
|
+
items,
|
|
670
|
+
total,
|
|
671
|
+
};
|
|
672
|
+
});
|
|
673
|
+
},
|
|
674
|
+
});
|
|
675
|
+
|
|
676
|
+
return (
|
|
677
|
+
<CollectionPage height="400px">
|
|
678
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
679
|
+
<CollectionPage.Content>
|
|
680
|
+
<TableVirtual
|
|
681
|
+
state={tableState}
|
|
682
|
+
rowHeight={78}
|
|
683
|
+
columns={[
|
|
684
|
+
{
|
|
685
|
+
title: '',
|
|
686
|
+
width: '50px',
|
|
687
|
+
render: (contact) => (
|
|
688
|
+
<Avatar
|
|
689
|
+
name={`${contact.info?.name?.first} ${contact.info?.name?.last}`}
|
|
690
|
+
/>
|
|
691
|
+
),
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
title: 'Name',
|
|
695
|
+
render: (contact) =>
|
|
696
|
+
`${contact.info?.name?.first} ${contact.info?.name?.last}`,
|
|
697
|
+
width: '300px',
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
title: 'Created Date',
|
|
701
|
+
render: (contact) => contact._createdDate?.toLocaleString(),
|
|
702
|
+
},
|
|
703
|
+
]}
|
|
704
|
+
emptyState={<CollectionEmptyState />}
|
|
705
|
+
actionCell={(contact, index) => ({
|
|
706
|
+
secondaryActions: [
|
|
707
|
+
{
|
|
708
|
+
icon: <Edit />,
|
|
709
|
+
text: 'Edit',
|
|
710
|
+
onClick: () => {},
|
|
711
|
+
},
|
|
712
|
+
],
|
|
713
|
+
})}
|
|
714
|
+
/>
|
|
715
|
+
</CollectionPage.Content>
|
|
716
|
+
</CollectionPage>
|
|
717
|
+
);
|
|
718
|
+
}
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
### Fetch Total Async
|
|
724
|
+
|
|
725
|
+
Use the `fetchTotal` prop to retrieve the total number of items in the collection. This example demonstrates how to use the `fetchTotal` prop asynchronously.
|
|
726
|
+
|
|
727
|
+
```tsx
|
|
728
|
+
import React from 'react';
|
|
729
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
730
|
+
import {
|
|
731
|
+
CollectionEmptyState,
|
|
732
|
+
Table,
|
|
733
|
+
useTableCollection,
|
|
734
|
+
CursorQuery,
|
|
735
|
+
} from '@wix/patterns';
|
|
736
|
+
import { useHttpClient } from '@wix/yoshi-flow-bm';
|
|
737
|
+
|
|
738
|
+
interface User {
|
|
739
|
+
id: string;
|
|
740
|
+
name: string;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
function FetchTotalTable() {
|
|
744
|
+
const httpClient = useHttpClient();
|
|
745
|
+
|
|
746
|
+
const tableState = useTableCollection<User>({
|
|
747
|
+
queryName: 'users-CursorPagination',
|
|
748
|
+
paginationMode: 'cursor',
|
|
749
|
+
fetchTotal: async ({ limit, cursor, search }: CursorQuery) => {
|
|
750
|
+
return new Promise((resolve, reject) => {
|
|
751
|
+
window.setTimeout(() => {
|
|
752
|
+
httpClient
|
|
753
|
+
.request<{ total: number; items: User[]; cursor?: string }>({
|
|
754
|
+
url: '/api/users',
|
|
755
|
+
data: {
|
|
756
|
+
query: {
|
|
757
|
+
limit,
|
|
758
|
+
cursor,
|
|
759
|
+
search,
|
|
760
|
+
},
|
|
761
|
+
},
|
|
762
|
+
})
|
|
763
|
+
.then(({ data: { total } }) => {
|
|
764
|
+
resolve(total);
|
|
765
|
+
})
|
|
766
|
+
.catch(reject);
|
|
767
|
+
}, 5000);
|
|
768
|
+
});
|
|
769
|
+
},
|
|
770
|
+
fetchData: (query: CursorQuery) => {
|
|
771
|
+
const { limit, cursor, search } = query;
|
|
772
|
+
return httpClient
|
|
773
|
+
.request<{ total: number; items: User[]; cursor?: string }>({
|
|
774
|
+
url: '/api/users',
|
|
775
|
+
data: {
|
|
776
|
+
query: {
|
|
777
|
+
limit,
|
|
778
|
+
cursor,
|
|
779
|
+
search,
|
|
780
|
+
},
|
|
781
|
+
},
|
|
782
|
+
})
|
|
783
|
+
.then(({ data: { items, cursor } }) => ({
|
|
784
|
+
items,
|
|
785
|
+
// total, // mimicking the total from the fetchTotal
|
|
786
|
+
cursor,
|
|
787
|
+
}));
|
|
788
|
+
},
|
|
789
|
+
fetchErrorMessage: () => 'Error fetching users',
|
|
790
|
+
});
|
|
791
|
+
|
|
792
|
+
return (
|
|
793
|
+
<CollectionPage height="400px">
|
|
794
|
+
<CollectionPage.Header title={{ text: 'Users' }} />
|
|
795
|
+
<CollectionPage.Content>
|
|
796
|
+
<Table
|
|
797
|
+
state={tableState}
|
|
798
|
+
columns={[
|
|
799
|
+
{
|
|
800
|
+
title: 'Name',
|
|
801
|
+
width: '250px',
|
|
802
|
+
render: (user) => user.name,
|
|
803
|
+
},
|
|
804
|
+
]}
|
|
805
|
+
emptyState={<CollectionEmptyState />}
|
|
806
|
+
/>
|
|
807
|
+
</CollectionPage.Content>
|
|
808
|
+
</CollectionPage>
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
### Developer examples
|
|
816
|
+
|
|
817
|
+
### Using Ambassador
|
|
818
|
+
|
|
819
|
+
If you have a crud package from ambassador you can use our [useAmbassadorCollection](./?path=/story/common-hooks--useambassadorcollection) hook instead using the default [useCollection](./?path=/story/common-hooks--usecollection).
|
|
820
|
+
|
|
821
|
+
```tsx
|
|
822
|
+
import React from 'react';
|
|
823
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
824
|
+
import {
|
|
825
|
+
CollectionEmptyState,
|
|
826
|
+
Table,
|
|
827
|
+
useAmbassadorCollection,
|
|
828
|
+
} from '@wix/patterns';
|
|
829
|
+
import * as ambassador from '@wix/ambassador-ecom-v1-order/crud/http';
|
|
830
|
+
|
|
831
|
+
function UseAmbassador() {
|
|
832
|
+
const collection = useAmbassadorCollection({
|
|
833
|
+
ambassador,
|
|
834
|
+
itemName: (t) => t.number!,
|
|
835
|
+
itemKey: (t) => t.id!,
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
return (
|
|
839
|
+
<CollectionPage height="400px">
|
|
840
|
+
<CollectionPage.Header title={{ text: 'Orders' }} />
|
|
841
|
+
<CollectionPage.Content>
|
|
842
|
+
<Table
|
|
843
|
+
state={collection}
|
|
844
|
+
columns={[
|
|
845
|
+
{
|
|
846
|
+
id: 'number',
|
|
847
|
+
width: '30px',
|
|
848
|
+
title: 'Number',
|
|
849
|
+
sortable: true,
|
|
850
|
+
render: (t) => t.number,
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
id: 'paymentStatus',
|
|
854
|
+
width: '50px',
|
|
855
|
+
title: 'Payment Status',
|
|
856
|
+
sortable: true,
|
|
857
|
+
render: (t) => t.paymentStatus,
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
id: 'fulfillmentStatus',
|
|
861
|
+
width: '50px',
|
|
862
|
+
title: 'Fulfillment Status',
|
|
863
|
+
sortable: true,
|
|
864
|
+
render: (t) => t.fulfillmentStatus,
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
id: 'createdDate',
|
|
868
|
+
width: '40px',
|
|
869
|
+
title: 'Created Date',
|
|
870
|
+
sortable: true,
|
|
871
|
+
render: (t) => t.createdDate?.toLocaleDateString(),
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
id: 'updatedDate',
|
|
875
|
+
width: '40px',
|
|
876
|
+
title: 'Updated Date',
|
|
877
|
+
sortable: true,
|
|
878
|
+
render: (t) => t.updatedDate?.toLocaleDateString(),
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
id: 'buyerNote',
|
|
882
|
+
width: '50px',
|
|
883
|
+
title: 'Buyer Note',
|
|
884
|
+
sortable: true,
|
|
885
|
+
render: (t) => t.buyerNote,
|
|
886
|
+
},
|
|
887
|
+
]}
|
|
888
|
+
emptyState={<CollectionEmptyState />}
|
|
889
|
+
/>
|
|
890
|
+
</CollectionPage.Content>
|
|
891
|
+
</CollectionPage>
|
|
892
|
+
);
|
|
893
|
+
}
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
### Using with External Data Source
|
|
897
|
+
|
|
898
|
+
This example demonstrates how to use the `fetchData` API when data already exists from an external source. In this specific case, we used `useRef` to store the data outside the table's scope, but this approach can be applied to any external source. The data can be saved in a context, propagated as a prop, or managed through any other solution that doesn't involve using httpClient directly to fetch the data.
|
|
899
|
+
|
|
900
|
+
Note: Ensure that you use the query filter parameters, such as search and limit, to filter the data correctly.
|
|
901
|
+
|
|
902
|
+
```tsx
|
|
903
|
+
import React from 'react';
|
|
904
|
+
import { CollectionPage } from '@wix/patterns/page';
|
|
905
|
+
import { Table, OffsetQuery, useTableCollection } from '@wix/patterns';
|
|
906
|
+
|
|
907
|
+
interface Contact {
|
|
908
|
+
id: string;
|
|
909
|
+
name: string;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
function UseExternalDataSource() {
|
|
913
|
+
const loadDataFromServer: () => Promise<Contact[]> = async () => {
|
|
914
|
+
return new Promise((resolve) => {
|
|
915
|
+
window.setTimeout(
|
|
916
|
+
() =>
|
|
917
|
+
resolve([
|
|
918
|
+
{ id: '1', name: 'Alice Johnson' },
|
|
919
|
+
{ id: '2', name: 'Bob Smith' },
|
|
920
|
+
{ id: '3', name: 'Carol Davis' },
|
|
921
|
+
{ id: '4', name: 'David Martinez' },
|
|
922
|
+
{ id: '5', name: 'Emma Wilson' },
|
|
923
|
+
{ id: '6', name: 'Frank Taylor' },
|
|
924
|
+
{ id: '7', name: 'Grace Lee' },
|
|
925
|
+
{ id: '8', name: 'Henry White' },
|
|
926
|
+
{ id: '9', name: 'Ivy Harris' },
|
|
927
|
+
{ id: '10', name: 'Jack Brown' },
|
|
928
|
+
]),
|
|
929
|
+
1000,
|
|
930
|
+
);
|
|
931
|
+
});
|
|
932
|
+
};
|
|
933
|
+
|
|
934
|
+
const dataRef = React.useRef<Promise<Contact[]>>(loadDataFromServer());
|
|
935
|
+
|
|
936
|
+
const tableState = useTableCollection<Contact>({
|
|
937
|
+
queryName: 'contacts-external-data',
|
|
938
|
+
itemKey: (item) => item.id as string,
|
|
939
|
+
itemName: (item) => item.name as string,
|
|
940
|
+
fetchData: async (query: OffsetQuery) => {
|
|
941
|
+
const { limit, offset, search } = query;
|
|
942
|
+
const all = await dataRef.current; // wait for external source to be resolved
|
|
943
|
+
let filtered = all; // initially assigned to all data
|
|
944
|
+
|
|
945
|
+
// filter by search value if exists
|
|
946
|
+
if (search && search.trim() !== '') {
|
|
947
|
+
console.log('filtered', filtered);
|
|
948
|
+
filtered = filtered.filter((c) =>
|
|
949
|
+
(c.name as string).toLowerCase().includes(search.toLowerCase()),
|
|
950
|
+
); // filter by search value
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
// filter by given limit
|
|
954
|
+
filtered = filtered.slice(offset, offset + limit);
|
|
955
|
+
|
|
956
|
+
return {
|
|
957
|
+
items: filtered,
|
|
958
|
+
total: filtered.length,
|
|
959
|
+
};
|
|
960
|
+
},
|
|
961
|
+
fetchErrorMessage: ({ err }) => String(err),
|
|
962
|
+
});
|
|
963
|
+
|
|
964
|
+
return (
|
|
965
|
+
<CollectionPage height="400px">
|
|
966
|
+
<CollectionPage.Header title={{ text: 'Contacts' }} />
|
|
967
|
+
<CollectionPage.Content>
|
|
968
|
+
<Table
|
|
969
|
+
state={tableState}
|
|
970
|
+
columns={[
|
|
971
|
+
{
|
|
972
|
+
title: 'Name',
|
|
973
|
+
width: '250px',
|
|
974
|
+
render: (contact) => contact.name,
|
|
975
|
+
},
|
|
976
|
+
]}
|
|
977
|
+
/>
|
|
978
|
+
</CollectionPage.Content>
|
|
979
|
+
</CollectionPage>
|
|
980
|
+
);
|
|
981
|
+
}
|
|
982
|
+
```
|
|
983
|
+
|
|
984
|
+
## API
|
|
985
|
+
|
|
986
|
+
### Extends
|
|
987
|
+
|
|
988
|
+
[TableProps](https://www.docs.wixdesignsystem.com/?path=/story/components-lists-table--table)
|
|
989
|
+
|
|
990
|
+
### Props
|
|
991
|
+
|
|
992
|
+
| Prop | Type | Required | Default | Description |
|
|
993
|
+
|------|------|----------|---------|-------------|
|
|
994
|
+
| `state` | `CollectionState<T, F> \| TableState<T, F>` | Yes | - | A state instance created using the [`useTableCollection()`](./?path=/story/base-components-collections-table-usetablecollection--usetablecollection) hook, responsible for managing the data displayed in the table. |
|
|
995
|
+
| `sections` | `TableSectionsProp<T>` | No | - | Configuration for rendering table sections. When provided, the table will render with section headers that group related rows together |
|
|
996
|
+
| `columns` | `TableColumn<T>[]` | Yes | - | Defines the columns of the table. Accepts an array of [`TableColumn`](./?path=/story/common-types--tablecolumn) objects. |
|
|
997
|
+
| `showSelection` | `boolean` | No | `false` | Whether to show a checkbox column for selecting items. |
|
|
998
|
+
| `onRowClick` | `((item: T, index: number) => void)` | No | - | A callback method to be called on row click. Signature: `onRowClick(rowData, rowNum)`. To enable hover effect you should set this prop. |
|
|
999
|
+
| `exportButton` | `ReactElement<any, string \| JSXElementConstructor<any>>` | No | - | A [`<ExportButton />`](./?path=/story/features-export--exportto) react element to be added to the toolbar. |
|
|
1000
|
+
| `dragAndDrop` | `TableDragAndDropType` | No | - | Adds functionality to allow visitors to reorder items manually. For more information, see the [Drag and Drop Overview](./?path=/story/features-sort-drag-and-drop--overview). |
|
|
1001
|
+
| `dataExtension` | `(FC<DataExtensionOverrides> & DataExtensionObjectType) \| DataExtensionElement` | No | - | Data extension implementation: `import { DataExtension } from '@wix/patterns';` |
|
|
1002
|
+
| `tags` | `TagsElement<T, F>` | No | - | Enables tags feature. In this element you can pass the configuration |
|
|
1003
|
+
| `checkboxTooltipContent` | `((rowData: KeyedItem<T>) => string)` | No | - | A function that receives the item of the row and returns a string for tooltip content. |
|
|
1004
|
+
| `bulkActionToolbar` | `BulkActionToolbarRenderProp<T, F>` | No | - | Render a custom toolbar when more than 1 item is selected.<br> The function accepts the following parameters * `selectedValues`: The items that were checked via the selection column * `uncheckedValues`: The items that were unchecked via the selection column * `allSelected`: Indicates whether the "Select All" checkbox is checked * `openModal`: Opens the modal that contains the component from `bulkActionModal` render prop * `clearSelection`: Clears all existing selection, call this after the action on the selected items was done * `total`: Total items in the server (taken from [`fetchData`](./?path=/story/common-hooks--usecollection) return value). * `openConfirmModal`: Opens a `<MessageModalLayout/>` to confirm an action about to be applied on the selected items. * `query`: ComputedQuery<F> - Representation of the current paging, sorting & filtering applied. Usually for using together with bulk action such as `updateAll` and `deleteAll` > When passed, enables `showSelection` by default. |
|
|
1005
|
+
| `bulkActionModal` | `BulkActionModalRenderProp<T, F>` | No | - | Opens a modal from the [`MultiBulkActionToolbar`](./?path=/story/features-actions-bulk-actions--multibulkactiontoolbar). Supported parameters: + `selectedValues`: Selected item values. + `uncheckedValues`: Unselected item values. + `isSelectAll`: [bool] Whether the **Select All** option is selected. + `closeModal`: Closes the modal. + `query`: [object] Instance of [ComputedQuery](./?path=/story/common-types--computedquery) that represents the query that resulted in an empty state. Representation of the current paging, sorting and filtering applied. Usually for using together with bulk action such as `updateAll` and `deleteAll`. |
|
|
1006
|
+
| `search` | `boolean \| FilterElement<any> \| CollectionSearchElement` | No | `true` | Displays a search input on the right side of the table toolbar.<br> <br> Accepts a boolean or a custom React element as a parameter. When passing `false`, no search input is displayed. |
|
|
1007
|
+
| `title` | `ToolbarTitleElement` | No | - | Displays a title at the left of a toolbar. Accepts a [ToolbarTitle](./?path=/story/features-display-toolbar--toolbartitle) component. |
|
|
1008
|
+
| `errorState` | `((err: unknown, params: { isOnline: boolean; retry: () => void; }) => ReactElement<any, string \| JSXElementConstructor<any>>)` | No | - | A render function to be rendered when there's an error fetching data from the server.<br> The function accepts the following parameters <br> * `err`: The error thrown by the [fetchData](./?path=/story/common-hooks--usecollection) function <br> * `isOnline`: Indicates whether internet connection is available <br> * `retry`: Retry collection fetch on failed response, similar to `collection.retryFetch` <br> Returns [`EmptyState`](https://www.docs.wixdesignsystem.com/?path=/story/components-layout--emptystate) component. |
|
|
1009
|
+
| `maxSelection` | `number` | No | - | Limits the amount of rows a visitor can select. |
|
|
1010
|
+
| `views` | `CollectionViewsDropdownElement<F>` | No | - | Adds view options to the table headers. Accepts a [Views](./?path=/story/features-display-views--views) component. |
|
|
1011
|
+
| `filters` | `CollectionToolbarFiltersElement` | No | - | Adds filters to the toolbar and/or a sliding panel. Accepts a `ToolbarFilters` component, which must have the `panelTitle` prop defined. |
|
|
1012
|
+
| `tabs` | `TabsFilterElement<TabsFilterProps<T>>` | No | - | Displays tabs at the left of a toolbar. Accepts a [TabsFilter](./?path=/story/features-filter-components--tabsfilter) component. |
|
|
1013
|
+
| `minCardHeight` | `MinHeight<string \| number>` | No | `300px` | Minimum height for a card's container when showing:<br> - A loader<br> - Empty state<br> - Error state <br><br> If no unit is specified, `px` is used. |
|
|
1014
|
+
| `renderError` | `((params: { err: unknown; isOnline: boolean; retry: () => void; }) => ReactElement<any, string \| JSXElementConstructor<any>>)` | No | - | A render function to be rendered when there's an error fetching data from the server.<br> The function accepts the following parameters <br> * `err`: The error thrown by the [fetchData](./?path=/story/common-hooks--usecollection) function <br> * `isOnline`: Indicates whether internet connection is available <br> * `retry`: Retry collection fetch on failed response, similar to `collection.retryFetch` <br> Returns [`EmptyState`](https://www.docs.wixdesignsystem.com/?path=/story/components-layout--emptystate) component. @deprecated Use `errorState` instead. |
|
|
1015
|
+
| `emptyState` | `ReactNode` | No | - | Renders when there are no items to display. Accepts a [`CollectionEmptyState`](./?path=/story/features-display-empty-states--collectionemptystate) component. |
|
|
1016
|
+
| `noResultsState` | `ReactNode \| ((params: { hasAvailableItems: boolean; query: ComputedQuery<F>; }) => ReactNode)` | No | - | Shown when a search or filter has no results. Accepts a [`CollectionNoResultsState`](./?path=/story/features-display-empty-states--collectionnoresultsstate) component, or a function that accepts the following parameters: - `hasAvailableItems`: Indicates whether other items may be shown using other filter or search parameters. - `query`: An instance of [`ComputedQuery`](./?path=/story/common-models--computedquery) representing the query that resulted in the empty state. The function should return [`CollectionNoResultsState`](./?path=/story/features-display-empty-states--collectionnoresultsstate). |
|
|
1017
|
+
| `topNotification` | `boolean \| TopNotificationElement \| ((params: { query: ComputedQuery<F>; }) => boolean \| TopNotificationElement \| null) \| null` | No | - | Renders a notification below the header. Accepts a [`TableTopNotification`](./?path=/story/features-display-tabletopnotification--tabletopnotification) component. |
|
|
1018
|
+
| `summaryBar` | `ReactNode` | No | - | Display a summary bar below the toolbar. Accepts a [`SummaryBar`](./?path=/story/features-display-toolbar--summarybar) component. |
|
|
1019
|
+
| `dragAndDropSubmit` | `DragAndDropSubmit<T, F>` | No | - | Function that submits a drop event to the server. <br> <br> The parameter is an event object containing the following details: <br> -`from: {item: T; index: number}`: The dragged item. <br> -`after: null \| [item: T; iindex: number}`: The previous dropped item. If this is the first item to be dropped, this argument is `null`. <br> -`filters`: Applied [Drag and Drop](./?path=/story/features-sort-drag-and-drop--overview) filters. @returns Promise |
|
|
1020
|
+
| `dragAndDropBulkSubmit` | `DragAndDropBulkSubmit<T, F>` | No | - | Function that submits an array of drop events to the server. <br> <br> The parameter is an array of event objects containing the following details: <br> -`from: {item: T; index: number}`: The dragged item. <br> -`after: null \| [item: T; index: number}`: The previous dropped item. If this is the first item to be dropped, this argument is `null`. <br> -`filters`: Applied [Drag and Drop](./?path=/story/features-sort-drag-and-drop--overview) filters. <br> @returns Promise |
|
|
1021
|
+
| `dragAndDropCancel` | `DragAndDropCancel<T, F>` | No | - | A function that cancels a drop event. <br> Supported arguments: <br> - `from: {item: T; index: number}`: The dragged item. - `after: null \| {item: T; index: number}`: The item that the dragged item was dropped after. If dropped at the head of the collection, this argument will be `null`. - `filters`: Currently applied filters. Used in cases where your server holds a unique ordering per filtering. See the `dragAndDropCategories` prop. If the move is cancelled, the function returns a toast config object with a message. Otherwise, the function will return a null value. |
|
|
1022
|
+
| `extensionMenuItems` | `ExtensionMenuItemsType` | No | - | @deprecated It doesn't need to be passed implicitly anymore. |
|
|
1023
|
+
| `dragAndDropReorderModeToolbar` | `ReorderModeToolbarElement \| null` | No | - | Drag and drop reorder mode toolbar. This prop accepts a `ReorderModeToolbar` component.<br> The `ReorderModeToolbar` component accepts the following props:<br> + `learnMoreUrl`: [string] A URL in the toolbar.<br> + `reorderModeTitle`: [string] A title in the toolbar. |
|
|
1024
|
+
| `customColumns` | `CustomColumnsElement \| null` | No | - | Adds functionality to allow visitors to create choose which columns to display and in what order. Accepts a [CustomColumns](./?path=/story/features-display--customcolumns) component. |
|
|
1025
|
+
| `multiLevelSorting` | `MultiLevelSortingElement` | No | - | Adds functionality to allow visitors to sort multiple columns simultaneously. Accepts a [MultiLevelSorting](./?path=/story/features-sort-sortable-columns-multilevelsorting--multilevelsorting) component. |
|
|
1026
|
+
| `primaryActionButton` | `PrimaryActionButtonElement` | No | - | Adds functionality for a primary action button in the toolbar. Accepts a [PrimaryActionButton](./?path=/story/features-actions-primary-actions--primary-action-button) component. |
|
|
1027
|
+
| `secondaryActions` | `ToolbarSecondaryActionsElement` | No | - | Secondary buttons w/o PopoverMenu component to be rendered on the toolbar. |
|
|
1028
|
+
| `moreActions` | `MoreActionsElement` | No | - | A [`MoreActions`](./?path=/story/features-actions-more-actions--more-actions) component to be rendered on the header. |
|
|
1029
|
+
| `AddApplyFiltersButton` | `AddApplyFiltersButtonType` | No | - | Apply filter button implementation: `import { AddApplyFiltersButton } from '@wix/patterns';` <br> Add `Apply` button to the filters panel footer. Panel filters will be applied only after the button is clicked. |
|
|
1030
|
+
| `internalScroll` | `boolean` | No | - | Indicates whether the table should have an [internal scroll](./?path=/story/features-display-internal-scroll--internal-scroll) instead of the default page scroll. |
|
|
1031
|
+
| `showFieldTypeIcons` | `boolean` | No | `false` | When true, renders prefix icons for field types in column headers, filters, and the customize-columns panel. Each column and filter should have a `fieldType` property set so Cairo can render the matching icon. |
|
|
1032
|
+
| `showTitleBar` | `boolean` | No | `true` | Indicates whether to show Table Title Bar or not. Note: if you pass `showTitleBar = false` title bar is not removed from the DOM. For better accessibility column titles should be defined as well. |
|
|
1033
|
+
| `importButton` | `ReactElement<any, string \| JSXElementConstructor<any>>` | No | - | A [`<ImportButton />`] react element to be added to the toolbar. |
|
|
1034
|
+
| `exportModal` | `ReactElement<any, string \| JSXElementConstructor<any>>` | No | - | A [`<ExportModal />`](./?path=/story/features-export--exportto#CTA_is_out_of_the_table) react element to be rendered in table's context. |
|
|
1035
|
+
| `importModal` | `ReactElement<any, string \| JSXElementConstructor<any>>` | No | - | A [`<ImportModal />`] react element to be rendered in table's context. |
|
|
1036
|
+
| `dragAndDropCategories` | `(keyof F)[][] \| null` | No | - | By default, drag and drop works only without filters. To enable drag and drop with filters, pass an array of filters to this prop. The functionality will then work only for the specified filters, and to enable without filters, you must pass an empty array. For more information, see the [Drag and Drop Overview](//?path=/story/features-sort-drag-and-drop--overview). |
|
|
1037
|
+
| `hideBulkSelectionCheckbox` | `boolean` | No | - | Hides bulk selection checkbox in the table titlebar, If the [`MultiBulkActionToolbar`](./?path=/story/features-actions-bulk-actions--multibulkactiontoolbar) feature is enabled, this flag will have no effect. |
|
|
1038
|
+
| `stickySelectionColumn` | `boolean` | No | - | Whether to add a sticky column. <br> Sticky columns allow you to display specific columns at all times while the visitor scrolls the table horizontally. |
|
|
1039
|
+
| `actionCell` | `ActionCell<T, F>` | No | - | Use this property to add an action at the end of each row. For example, a delete button to delete a table item. Accepts an [`ActionCellProps`](./?path=/story/features-actions-action-cell--actioncellprops) object, or a function that returns an `ActionCellProps` object. |
|
|
1040
|
+
| `actionCellWidth` | `string \| number` | No | - | Width of the column containing the `actionCell` component. |
|
|
1041
|
+
| `actionCellProps` | `ActionCellPropsType<T>` | No | - | Extra columns props for the actions cell. |
|
|
1042
|
+
|
|
1043
|
+
## Accessibility
|
|
1044
|
+
|
|
1045
|
+
### Description
|
|
1046
|
+
|
|
1047
|
+
## What we did
|
|
1048
|
+
In this component we added a Live Region which announces the results which are rendered on the screen visually.
|
|
1049
|
+
|
|
1050
|
+
## Why is it important
|
|
1051
|
+
Screen reader users, which have a severe visual impairment need to be notified when there is a change in the page layout or there is some error or status messages that appear. In some cases, in order not to interfere with the users current position on the page, the focus should be kept in place and the status should be announced (in case of search, tabs or adding an item from the collection header). In other cases, specifically if the button on which the user clicked disappears or becomes disabled, both techniques of focus management and live region should be used in parallel (in case of filter, or adding/removing an item from the collection).
|
|
1052
|
+
|
|
1053
|
+
Due to the fact that this all happens behind the scenes you can experience it only with a screen reader on in this video:
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
## What is included in the component?
|
|
1057
|
+
Announcements of the total number of results which were found after performing a search, after applying a filter, when navigating between tabs and when changing the view in the dropdown.
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
## Testkit
|
|
1061
|
+
|
|
1062
|
+
### Extends
|
|
1063
|
+
|
|
1064
|
+
[TableTestkit](https://www.docs.wixdesignsystem.com/?activeTab=Testkit&path=%2Fstory%2Fcomponents-api-components--table)
|
|
1065
|
+
|