@wix/patterns 1.497.0 → 1.499.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/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.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.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.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/SearchOrCustomFilter.st.css.js +4 -4
- package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- 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/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
- package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.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 +6 -6
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.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/color/Edit.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/color/Edit.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 +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
- package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.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.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/View.st.css.js +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
- package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
- 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/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 +2 -2
- package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.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/EmptyState/EmptyStateBase.st.css.js +2 -2
- package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPage/EntityPageActionsBar.js +1 -1
- package/dist/cjs/components/EntityPage/EntityPageActionsBar.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/EntityPageFields/EntityPageField.st.css.js +3 -3
- package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
- package/dist/cjs/components/EntityPageFields/EntityPageFields.js +9 -8
- package/dist/cjs/components/EntityPageFields/EntityPageFields.js.map +1 -1
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js +49 -7
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +26 -0
- package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
- 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/ImportButton/SchemaImportFieldEditor.js +2 -13
- package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.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/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/cjs/components/SchemaSource/schemaFieldManagement.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/SetupWidget/SetupWidget.st.css.js +10 -10
- package/dist/cjs/components/SetupWidget/SetupWidget.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/Table/AddFieldColumnHeader.st.css.js +6 -6
- package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
- package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
- package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
- 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/model/itemAccess.js +21 -0
- package/dist/cjs/model/itemAccess.js.map +1 -0
- package/dist/cjs/schema/syncSourcePermissions.js +9 -4
- package/dist/cjs/schema/syncSourcePermissions.js.map +1 -1
- package/dist/cjs/schema/useEntityPage.js +17 -3
- package/dist/cjs/schema/useEntityPage.js.map +1 -1
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/cjs/state/EditableTable/CellValueState.js +154 -7
- package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/cjs/state/EditableTable/ClipboardState.js +30 -14
- package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/cjs/state/EditableTable/MutationState.js +31 -7
- package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
- package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js +5 -5
- package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
- package/dist/cjs/state/EntityPage/EntityPageState.js +57 -8
- package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
- package/dist/cjs/state/EntityPage/sourceSave.js +16 -0
- package/dist/cjs/state/EntityPage/sourceSave.js.map +1 -0
- 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/styles.global.css +2 -2
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/Table.md +3 -1
- package/dist/docs/index.json +2 -2
- package/dist/docs/useEntity.md +1 -1
- package/dist/dts-bundle/hooks/schema/useEntityPage.d.ts +5 -4
- package/dist/dts-bundle/hooks/useEntityPage.d.ts +5 -4
- package/dist/dts-bundle/hooks/usePickerModal.d.ts +3 -0
- package/dist/dts-bundle/index.json +25 -25
- package/dist/dts-bundle/index.txt +8 -8
- package/dist/dts-bundle/types/CellType.d.ts +3 -0
- package/dist/dts-bundle/types/EntityPageState.d.ts +10 -4
- package/dist/dts-bundle/types/EntityPageStateParams.d.ts +5 -4
- package/dist/dts-bundle/types/OnSaveParams.d.ts +5 -4
- package/dist/dts-bundle/types/UseEntityPageParams.d.ts +5 -4
- package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
- package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
- package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
- package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
- 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/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
- 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/HeaderActionsPopover.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.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/color/Edit.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/datetime/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.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.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.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/time/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.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/Edit.st.css.js.map +1 -1
- 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/EmptyState/EmptyStateBase.st.css.js +2 -2
- package/dist/esm/components/EntityPage/EntityPageActionsBar.js +1 -1
- package/dist/esm/components/EntityPage/EntityPageActionsBar.js.map +1 -1
- package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
- package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
- package/dist/esm/components/EntityPageFields/EntityPageFields.js +3 -1
- package/dist/esm/components/EntityPageFields/EntityPageFields.js.map +1 -1
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js +19 -2
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +15 -0
- package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
- 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/ImportButton/ImportStepUpload.st.css.js +2 -2
- package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js +2 -12
- package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
- 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/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/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
- package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
- 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/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
- package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
- package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
- package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/esm/components/SchemaSource/schemaFieldActions.js +2 -1
- package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.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/Table/AddFieldColumnHeader.st.css.js +2 -2
- package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
- 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/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/model/itemAccess.js +17 -0
- package/dist/esm/model/itemAccess.js.map +1 -0
- package/dist/esm/schema/syncSourcePermissions.js +6 -5
- package/dist/esm/schema/syncSourcePermissions.js.map +1 -1
- package/dist/esm/schema/useEntityPage.js +11 -4
- package/dist/esm/schema/useEntityPage.js.map +1 -1
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/esm/state/EditableTable/CellValueState.js +146 -7
- package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/esm/state/EditableTable/ClipboardState.js +16 -15
- package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/esm/state/EditableTable/MutationState.js +28 -7
- package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
- package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js +4 -2
- package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
- package/dist/esm/state/EntityPage/EntityPageState.js +45 -1
- package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
- package/dist/esm/state/EntityPage/sourceSave.js +11 -0
- package/dist/esm/state/EntityPage/sourceSave.js.map +1 -0
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
- package/dist/esm/styles.global.css +2 -2
- package/dist/esm/version.js +1 -1
- package/dist/examples/Table/mobile-columns.tsx +66 -98
- package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/multiDocument/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/reference/EmptyReferenceView.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/time/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/url/Edit.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/EntityPageFields/EntityPageFields.d.ts.map +1 -1
- package/dist/types/components/EntityPageFields/EntityPageReferenceValue.d.ts.map +1 -1
- package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts +17 -0
- package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts.map +1 -0
- package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
- package/dist/types/components/ImportButton/SchemaImportFieldEditor.d.ts.map +1 -1
- package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
- package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
- package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
- package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
- package/dist/types/model/itemAccess.d.ts +16 -0
- package/dist/types/model/itemAccess.d.ts.map +1 -0
- package/dist/types/schema/syncSourcePermissions.d.ts.map +1 -1
- package/dist/types/schema/useEntityPage.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/TitleBadges.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/CellValueState.d.ts +40 -6
- package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
- package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/MutationState.d.ts +18 -1
- package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
- package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts.map +1 -1
- package/dist/types/state/EntityPage/EntityPageState.d.ts +10 -4
- package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
- package/dist/types/state/EntityPage/sourceSave.d.ts +3 -0
- package/dist/types/state/EntityPage/sourceSave.d.ts.map +1 -0
- package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +7 -7
- package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
- package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.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.st.css.ts +2 -2
- package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
- package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
- package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
- package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
- package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/address/Edit.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/color/Edit.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/datetime/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/select/Edit.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/time/Edit.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/EmptyState/EmptyStateBase.st.css.ts +2 -2
- package/src/components/EntityPage/EntityPageActionsBar.tsx +1 -1
- package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
- package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
- package/src/components/EntityPageFields/EntityPageFields.tsx +5 -1
- package/src/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
- package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +25 -0
- package/src/components/EntityPageFields/EntityPageReferenceValue.tsx +43 -6
- 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/ImportButton/SchemaImportFieldEditor.tsx +1 -20
- 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/SchemaSource/schemaFieldActions.ts +4 -1
- package/src/components/SchemaSource/schemaFieldManagement.ts +3 -1
- package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
- package/src/components/SetupWidget/SetupWidget.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/Table/AddFieldColumnHeader.st.css.ts +2 -2
- package/src/components/Table/NumberCell.st.css.ts +2 -2
- 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/model/itemAccess.ts +36 -0
- package/src/schema/syncSourcePermissions.ts +6 -6
- package/src/schema/useEntityPage.ts +17 -4
- package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
- package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
- package/src/state/EditableTable/CellValueState.ts +197 -8
- package/src/state/EditableTable/ClipboardState.ts +24 -22
- package/src/state/EditableTable/EditableTableState.ts +1 -1
- package/src/state/EditableTable/MutationState.ts +56 -7
- package/src/state/EntityPage/EntityPageDeleteActionState.ts +4 -2
- package/src/state/EntityPage/EntityPageState.ts +61 -5
- package/src/state/EntityPage/sourceSave.ts +12 -0
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/styles.global.css +2 -2
- package/src/version.ts +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CollectionBackend, ItemPermissions } from '@wix/bex-core';
|
|
2
|
+
|
|
3
|
+
interface ItemActions {
|
|
4
|
+
create: boolean;
|
|
5
|
+
update: boolean;
|
|
6
|
+
delete: boolean;
|
|
7
|
+
bulkDelete: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ItemAccess {
|
|
11
|
+
/** What the item permissions allow. An unset permission allows the action. */
|
|
12
|
+
permitted: ItemActions;
|
|
13
|
+
/** Which write methods the backend has. */
|
|
14
|
+
supported: ItemActions;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function getItemAccess(
|
|
18
|
+
permissions: ItemPermissions<any> | undefined,
|
|
19
|
+
backend: CollectionBackend<any> | undefined,
|
|
20
|
+
): ItemAccess {
|
|
21
|
+
return {
|
|
22
|
+
permitted: {
|
|
23
|
+
create: permissions?.createItem ?? true,
|
|
24
|
+
update: permissions?.updateItem ?? true,
|
|
25
|
+
delete: permissions?.deleteItem ?? true,
|
|
26
|
+
bulkDelete:
|
|
27
|
+
permissions?.bulkDeleteItems ?? permissions?.deleteItem ?? true,
|
|
28
|
+
},
|
|
29
|
+
supported: {
|
|
30
|
+
create: !!backend?.create,
|
|
31
|
+
update: !!backend?.update,
|
|
32
|
+
delete: !!backend?.delete,
|
|
33
|
+
bulkDelete: !!backend?.bulkDelete,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { autorun } from 'mobx';
|
|
2
2
|
import type { FiltersMap, SourceState } from '@wix/bex-core';
|
|
3
3
|
import type { EditableTableState } from '../state/EditableTable';
|
|
4
|
+
import { getItemAccess } from '../model/itemAccess';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Keeps an editable table's row-action flags in sync with its source: an action
|
|
@@ -19,15 +20,14 @@ export function syncSourcePermissions<T, F extends FiltersMap>(
|
|
|
19
20
|
const perms = loaded?.schema.itemPermissions;
|
|
20
21
|
const backend = loaded?.backend;
|
|
21
22
|
|
|
23
|
+
const { permitted, supported } = getItemAccess(perms, backend);
|
|
22
24
|
const isRemoveItemDisabled = perms?.isRemoveItemDisabled;
|
|
23
25
|
|
|
24
26
|
state.setPermissions({
|
|
25
|
-
addItemDisabled: !
|
|
26
|
-
updateItemDisabled: !
|
|
27
|
-
removeItemDisabled: !
|
|
28
|
-
multiDeleteDisabled:
|
|
29
|
-
!(perms?.bulkDeleteItems ?? perms?.deleteItem ?? true) ||
|
|
30
|
-
!backend?.bulkDelete,
|
|
27
|
+
addItemDisabled: !permitted.create || !supported.create,
|
|
28
|
+
updateItemDisabled: !permitted.update || !supported.update,
|
|
29
|
+
removeItemDisabled: !permitted.delete || !supported.bulkDelete,
|
|
30
|
+
multiDeleteDisabled: !permitted.bulkDelete || !supported.bulkDelete,
|
|
31
31
|
isCreateItemDisabled: perms?.isCreateItemDisabled,
|
|
32
32
|
isRemoveItemDisabled: isRemoveItemDisabled
|
|
33
33
|
? (item: T) => isRemoveItemDisabled(item as Record<string, unknown>)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { observable, runInAction } from 'mobx';
|
|
2
3
|
import type { FieldValues } from 'react-hook-form';
|
|
3
4
|
import type { SchemaSource } from '@wix/bex-core';
|
|
4
5
|
import type { EntityPageDeleteAction, EntityPageState } from '../state';
|
|
6
|
+
import { markSourceSave } from '../state/EntityPage/sourceSave';
|
|
5
7
|
import {
|
|
6
8
|
useEntityPage as useOpenEntityPage,
|
|
7
9
|
type UseEntityPageParams,
|
|
@@ -41,8 +43,19 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
|
|
|
41
43
|
// The derived read and write need values that change or don't exist yet when
|
|
42
44
|
// the state is created: the state itself (the save merges into the loaded
|
|
43
45
|
// entity) and the latest entityId (a re-fetch should read the current one).
|
|
44
|
-
|
|
45
|
-
page
|
|
46
|
+
// entityId is observable so the page's create/update permission follows it.
|
|
47
|
+
const [page] = useState(() =>
|
|
48
|
+
observable<PageRef<T, V>>(
|
|
49
|
+
{ entityId, state: undefined },
|
|
50
|
+
{ state: false },
|
|
51
|
+
{ deep: false },
|
|
52
|
+
),
|
|
53
|
+
);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
runInAction(() => {
|
|
56
|
+
page.entityId = entityId;
|
|
57
|
+
});
|
|
58
|
+
}, [page, entityId]);
|
|
46
59
|
|
|
47
60
|
const state = useOpenEntityPage<T, V>({
|
|
48
61
|
...rest,
|
|
@@ -50,7 +63,7 @@ export function useEntityPage<T, V extends FieldValues = FieldValues>(
|
|
|
50
63
|
isNewEntity: () => !page.entityId,
|
|
51
64
|
fetch:
|
|
52
65
|
fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),
|
|
53
|
-
onSave: onSave ?? (() => saveToSource(source, page)),
|
|
66
|
+
onSave: onSave ?? markSourceSave(() => saveToSource(source, page)),
|
|
54
67
|
deleteAction: resolveDeleteAction(page, deleteAction),
|
|
55
68
|
} as UseEntityPageParams<T, V>);
|
|
56
69
|
|
|
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "CollectionPageHeader1447808307";
|
|
9
9
|
var _style_ = classesRuntime.bind(null, _namespace_);
|
|
10
10
|
|
|
11
11
|
export var cssStates = statesRuntime.bind(null, _namespace_);
|
|
@@ -13,7 +13,7 @@ export var style = _style_;
|
|
|
13
13
|
export var st: import("@stylable/runtime").STFunction = _style_;
|
|
14
14
|
|
|
15
15
|
export var namespace = _namespace_;
|
|
16
|
-
export var classes = {"root":"
|
|
16
|
+
export var classes = {"root":"CollectionPageHeader1447808307__root","mobileMoreActions":"CollectionPageHeader1447808307__mobileMoreActions"};
|
|
17
17
|
export var keyframes = {};
|
|
18
18
|
export var layers = {};
|
|
19
19
|
export var containers = {};
|
|
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "MobilePrimaryActionBar1781613891";
|
|
9
9
|
var _style_ = classesRuntime.bind(null, _namespace_);
|
|
10
10
|
|
|
11
11
|
export var cssStates = statesRuntime.bind(null, _namespace_);
|
|
@@ -13,7 +13,7 @@ export var style = _style_;
|
|
|
13
13
|
export var st: import("@stylable/runtime").STFunction = _style_;
|
|
14
14
|
|
|
15
15
|
export var namespace = _namespace_;
|
|
16
|
-
export var classes = {"root":"
|
|
16
|
+
export var classes = {"root":"MobilePrimaryActionBar1781613891__root"};
|
|
17
17
|
export var keyframes = {};
|
|
18
18
|
export var layers = {};
|
|
19
19
|
export var containers = {};
|
|
@@ -5,7 +5,7 @@ import { classesRuntime, statesRuntime } from "../../stylable-esm-runtime.js";
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "TitleBadges239452423";
|
|
9
9
|
var _style_ = classesRuntime.bind(null, _namespace_);
|
|
10
10
|
|
|
11
11
|
export var cssStates = statesRuntime.bind(null, _namespace_);
|
|
@@ -13,7 +13,7 @@ export var style = _style_;
|
|
|
13
13
|
export var st: import("@stylable/runtime").STFunction = _style_;
|
|
14
14
|
|
|
15
15
|
export var namespace = _namespace_;
|
|
16
|
-
export var classes = {"root":"
|
|
16
|
+
export var classes = {"root":"TitleBadges239452423__root","tooltip":"TitleBadges239452423__tooltip","tooltipTrigger":"TitleBadges239452423__tooltipTrigger"};
|
|
17
17
|
export var keyframes = {};
|
|
18
18
|
export var layers = {};
|
|
19
19
|
export var containers = {};
|
|
@@ -2,6 +2,7 @@ import { action, computed, makeObservable, observable } from 'mobx';
|
|
|
2
2
|
import type { CellType, Cell, ValidationResult } from './types';
|
|
3
3
|
import type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';
|
|
4
4
|
import type { EditableTableState } from './EditableTableState';
|
|
5
|
+
import type { UpdateOptions } from './MutationState';
|
|
5
6
|
import {
|
|
6
7
|
builtInCellTypes,
|
|
7
8
|
textCellType,
|
|
@@ -27,6 +28,10 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
27
28
|
{ rowKey: string; columnId: string; value: any }
|
|
28
29
|
>();
|
|
29
30
|
|
|
31
|
+
/** Local new rows not to create yet, with how many open paste toasts hold
|
|
32
|
+
* each. See `applyPastedValues`. */
|
|
33
|
+
private readonly _heldNewRows = new Map<string, number>();
|
|
34
|
+
|
|
30
35
|
private readonly _parent: EditableTableState<T, F>;
|
|
31
36
|
private readonly _extraCellTypes: Map<string, CellType>;
|
|
32
37
|
|
|
@@ -46,8 +51,10 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
46
51
|
commitHandler: action,
|
|
47
52
|
applyBulkRawValues: action,
|
|
48
53
|
applyBulkValues: action,
|
|
54
|
+
applyPastedValues: action,
|
|
49
55
|
revalidatePendingCells: action,
|
|
50
56
|
flushDrafts: action,
|
|
57
|
+
flushDraftsOnUnmount: action,
|
|
51
58
|
flushRow: action,
|
|
52
59
|
dropRowCellState: action,
|
|
53
60
|
});
|
|
@@ -359,9 +366,13 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
359
366
|
* Deserialize and apply multiple raw string values in bulk.
|
|
360
367
|
* Handles conversion failures by storing them as pending cells.
|
|
361
368
|
*/
|
|
362
|
-
applyBulkRawValues(
|
|
363
|
-
rawChanges
|
|
364
|
-
|
|
369
|
+
applyBulkRawValues(rawChanges: RawCellChange[]) {
|
|
370
|
+
this.applyBulkValues(this._deserializeRawValues(rawChanges));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/** Values that fail are stored as pending cells with their error and left
|
|
374
|
+
* out of the result. */
|
|
375
|
+
private _deserializeRawValues(rawChanges: RawCellChange[]) {
|
|
365
376
|
const changes: { rowKey: string; columnId: string; value: any }[] = [];
|
|
366
377
|
for (const { rowKey, columnId, rawValue } of rawChanges) {
|
|
367
378
|
const { value, error } = this.tryDeserialize(columnId, rawValue);
|
|
@@ -378,7 +389,7 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
378
389
|
changes.push({ rowKey, columnId, value });
|
|
379
390
|
}
|
|
380
391
|
}
|
|
381
|
-
|
|
392
|
+
return changes;
|
|
382
393
|
}
|
|
383
394
|
|
|
384
395
|
/**
|
|
@@ -388,7 +399,10 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
388
399
|
* checking isColumnEditable here — not just at the call sites — keeps
|
|
389
400
|
* read-only cells protected regardless of entry point.
|
|
390
401
|
*/
|
|
391
|
-
applyBulkValues(
|
|
402
|
+
applyBulkValues(
|
|
403
|
+
changes: { rowKey: string; columnId: string; value: any }[],
|
|
404
|
+
options?: UpdateOptions,
|
|
405
|
+
) {
|
|
392
406
|
const rowUpdates = new Map<
|
|
393
407
|
string,
|
|
394
408
|
{ item: T; changedFieldIds: Set<string> }
|
|
@@ -454,6 +468,148 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
454
468
|
this._parent.mutation.updateItems(
|
|
455
469
|
updates.map(({ item }) => item),
|
|
456
470
|
updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),
|
|
471
|
+
options,
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Applies pasted values and shows `successToast` with Undo. The server call
|
|
477
|
+
* waits until the toast closes or times out. With `batchWait` the toast has
|
|
478
|
+
* no Undo (see `MutationState.updatesAreBatched`).
|
|
479
|
+
*
|
|
480
|
+
* Undo rolls back the saved rows, and puts back the unsaved state (invalid
|
|
481
|
+
* values and drafts) of the pasted cells and of the drafts in their rows,
|
|
482
|
+
* which the paste saves along with it. A cell changed again after the paste
|
|
483
|
+
* keeps its newer value.
|
|
484
|
+
*
|
|
485
|
+
* Local new rows the paste touched are not created while the toast is open.
|
|
486
|
+
* Otherwise the click on Undo, which takes focus out of the table, would
|
|
487
|
+
* create them with the pasted values first.
|
|
488
|
+
*/
|
|
489
|
+
applyPastedValues(
|
|
490
|
+
changes: { rowKey: string; columnId: string; value: any }[],
|
|
491
|
+
rawChanges: RawCellChange[],
|
|
492
|
+
successToast: string,
|
|
493
|
+
) {
|
|
494
|
+
if (this._parent.mutation.updatesAreBatched) {
|
|
495
|
+
this.applyBulkValues(
|
|
496
|
+
[...changes, ...this._deserializeRawValues(rawChanges)],
|
|
497
|
+
{ successToast },
|
|
498
|
+
);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
const pastedCells = [...changes, ...rawChanges];
|
|
503
|
+
const rowKeys = new Set(pastedCells.map(({ rowKey }) => rowKey));
|
|
504
|
+
const affectedCellKeys = new Set<string>();
|
|
505
|
+
for (const { rowKey, columnId } of pastedCells) {
|
|
506
|
+
const key = this._pendingCellKey(rowKey, columnId);
|
|
507
|
+
if (key) {
|
|
508
|
+
affectedCellKeys.add(key);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
for (const [key, draft] of this._draftCells) {
|
|
512
|
+
if (rowKeys.has(draft.rowKey)) {
|
|
513
|
+
affectedCellKeys.add(key);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
const beforePaste = this._snapshotUnsavedCells(affectedCellKeys);
|
|
517
|
+
// Replaced right after the paste below. `onUndo` reads it, and core calls
|
|
518
|
+
// `onUndo` only on a click on the toast, after that.
|
|
519
|
+
let afterPaste = beforePaste;
|
|
520
|
+
|
|
521
|
+
const newRowKeys = new Set(
|
|
522
|
+
[...rowKeys].filter((rowKey) =>
|
|
523
|
+
this._parent.mutation.isLocalNewRow(rowKey),
|
|
524
|
+
),
|
|
525
|
+
);
|
|
526
|
+
for (const rowKey of newRowKeys) {
|
|
527
|
+
this._heldNewRows.set(rowKey, (this._heldNewRows.get(rowKey) ?? 0) + 1);
|
|
528
|
+
}
|
|
529
|
+
let toastOpen = true;
|
|
530
|
+
// Retry calls `onKept` again; only the first call counts.
|
|
531
|
+
const endUndoWindow = () => {
|
|
532
|
+
if (!toastOpen) {
|
|
533
|
+
return false;
|
|
534
|
+
}
|
|
535
|
+
toastOpen = false;
|
|
536
|
+
for (const rowKey of newRowKeys) {
|
|
537
|
+
const holds = (this._heldNewRows.get(rowKey) ?? 1) - 1;
|
|
538
|
+
if (holds > 0) {
|
|
539
|
+
this._heldNewRows.set(rowKey, holds);
|
|
540
|
+
} else {
|
|
541
|
+
this._heldNewRows.delete(rowKey);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return true;
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
this.applyBulkValues(
|
|
548
|
+
// After the snapshot: this writes invalid values into `_pendingCells`.
|
|
549
|
+
[...changes, ...this._deserializeRawValues(rawChanges)],
|
|
550
|
+
{
|
|
551
|
+
successToast,
|
|
552
|
+
undo: {
|
|
553
|
+
onUndo: action(() => {
|
|
554
|
+
const wasOpen = endUndoWindow();
|
|
555
|
+
if (!wasOpen) {
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
const restoredDraftRows = new Set<string>();
|
|
559
|
+
for (const key of affectedCellKeys) {
|
|
560
|
+
const pasted = afterPaste.get(key);
|
|
561
|
+
if (
|
|
562
|
+
this._pendingCells.get(key) !== pasted?.pending ||
|
|
563
|
+
this._draftCells.get(key) !== pasted?.draft
|
|
564
|
+
) {
|
|
565
|
+
continue;
|
|
566
|
+
}
|
|
567
|
+
const { pending, draft } = beforePaste.get(key) ?? {};
|
|
568
|
+
setOrDelete(this._pendingCells, key, pending);
|
|
569
|
+
setOrDelete(this._draftCells, key, draft);
|
|
570
|
+
if (draft) {
|
|
571
|
+
restoredDraftRows.add(draft.rowKey);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
// The click on Undo already flushed the table, before these drafts
|
|
575
|
+
// were back. No toast: nothing should confirm the Undo.
|
|
576
|
+
this._flushRowsWithoutFocus(restoredDraftRows, {
|
|
577
|
+
successToast: null,
|
|
578
|
+
});
|
|
579
|
+
}),
|
|
580
|
+
onKept: action(() => {
|
|
581
|
+
const wasOpen = endUndoWindow();
|
|
582
|
+
if (!wasOpen) {
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
this._flushRowsWithoutFocus(newRowKeys);
|
|
586
|
+
}),
|
|
587
|
+
},
|
|
588
|
+
},
|
|
589
|
+
);
|
|
590
|
+
afterPaste = this._snapshotUnsavedCells(affectedCellKeys);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
private _snapshotUnsavedCells(keys: Set<string>): UnsavedCellsSnapshot {
|
|
594
|
+
return new Map(
|
|
595
|
+
[...keys].map((key) => [
|
|
596
|
+
key,
|
|
597
|
+
{
|
|
598
|
+
pending: this._pendingCells.get(key),
|
|
599
|
+
draft: this._draftCells.get(key),
|
|
600
|
+
},
|
|
601
|
+
]),
|
|
602
|
+
);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
private _flushRowsWithoutFocus(
|
|
606
|
+
rowKeys: Set<string>,
|
|
607
|
+
options?: UpdateOptions,
|
|
608
|
+
) {
|
|
609
|
+
const focusedRowKey = this._parent.cellInteraction.focusedCell?.rowKey;
|
|
610
|
+
this._flushRows(
|
|
611
|
+
(rowKey) => rowKeys.has(rowKey) && rowKey !== focusedRowKey,
|
|
612
|
+
options,
|
|
457
613
|
);
|
|
458
614
|
}
|
|
459
615
|
|
|
@@ -511,22 +667,36 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
511
667
|
this._flushRows((rowKey) => rowKey !== exceptRowKey);
|
|
512
668
|
}
|
|
513
669
|
|
|
670
|
+
/** Like `flushDrafts()`, but also saves new rows held by an open paste
|
|
671
|
+
* toast: focus can stay on a held row on unmount, and the toast doesn't
|
|
672
|
+
* create a focused row. */
|
|
673
|
+
flushDraftsOnUnmount() {
|
|
674
|
+
this._heldNewRows.clear();
|
|
675
|
+
this.flushDrafts();
|
|
676
|
+
}
|
|
677
|
+
|
|
514
678
|
/** Save one row's drafts now, leaving other rows' drafts buffered. */
|
|
515
679
|
flushRow(rowKey: string) {
|
|
516
680
|
this._flushRows((key) => key === rowKey);
|
|
517
681
|
}
|
|
518
682
|
|
|
519
|
-
private _flushRows(
|
|
683
|
+
private _flushRows(
|
|
684
|
+
includeRow: (rowKey: string) => boolean,
|
|
685
|
+
options?: UpdateOptions,
|
|
686
|
+
) {
|
|
687
|
+
const include = (rowKey: string) =>
|
|
688
|
+
includeRow(rowKey) && !this._heldNewRows.has(rowKey);
|
|
689
|
+
|
|
520
690
|
const invalidNewRows = new Set<string>();
|
|
521
691
|
for (const rowKey of this._parent.mutation._drafts.keys()) {
|
|
522
|
-
if (
|
|
692
|
+
if (include(rowKey) && !this._validateNewRow(rowKey)) {
|
|
523
693
|
invalidNewRows.add(rowKey);
|
|
524
694
|
}
|
|
525
695
|
}
|
|
526
696
|
|
|
527
697
|
const rowKeys = new Set<string>();
|
|
528
698
|
for (const entry of this._draftCells.values()) {
|
|
529
|
-
if (
|
|
699
|
+
if (include(entry.rowKey)) {
|
|
530
700
|
rowKeys.add(entry.rowKey);
|
|
531
701
|
}
|
|
532
702
|
}
|
|
@@ -550,6 +720,7 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
550
720
|
this._parent.mutation.updateItems(
|
|
551
721
|
updates.map(({ item }) => item),
|
|
552
722
|
updates.map(({ changedFieldIds }) => changedFieldIds),
|
|
723
|
+
options,
|
|
553
724
|
);
|
|
554
725
|
}
|
|
555
726
|
}
|
|
@@ -621,3 +792,21 @@ export class CellValueState<T, F extends FiltersMap> {
|
|
|
621
792
|
}
|
|
622
793
|
}
|
|
623
794
|
}
|
|
795
|
+
|
|
796
|
+
type RawCellChange = { rowKey: string; columnId: string; rawValue: string };
|
|
797
|
+
|
|
798
|
+
type UnsavedCellsSnapshot = Map<
|
|
799
|
+
string,
|
|
800
|
+
{
|
|
801
|
+
pending?: { value: any; errors: string[] };
|
|
802
|
+
draft?: { rowKey: string; columnId: string; value: any };
|
|
803
|
+
}
|
|
804
|
+
>;
|
|
805
|
+
|
|
806
|
+
const setOrDelete = <V>(map: Map<string, V>, key: string, value?: V) => {
|
|
807
|
+
if (value === undefined) {
|
|
808
|
+
map.delete(key);
|
|
809
|
+
} else {
|
|
810
|
+
map.set(key, value);
|
|
811
|
+
}
|
|
812
|
+
};
|
|
@@ -74,18 +74,28 @@ export class ClipboardState<T, F extends FiltersMap> {
|
|
|
74
74
|
this._copiedDataString !== undefined &&
|
|
75
75
|
this._copiedDataString === rawData;
|
|
76
76
|
|
|
77
|
-
const { keptSourceKeys, pasted } = this._pasteGrid(
|
|
77
|
+
const { richChanges, rawChanges, keptSourceKeys, pasted } = this._pasteGrid(
|
|
78
78
|
rawData,
|
|
79
79
|
targetPos,
|
|
80
80
|
isInternal,
|
|
81
|
-
cellValue,
|
|
82
81
|
);
|
|
83
82
|
|
|
83
|
+
// Clearing the cut sources goes out in the same update as the paste, so
|
|
84
|
+
// one Undo restores both sides.
|
|
84
85
|
if (this.isCut && isInternal) {
|
|
85
|
-
this.
|
|
86
|
+
richChanges.push(...this._cutSourceClears(keptSourceKeys));
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
if (pasted.length > 0) {
|
|
90
|
+
cellValue.applyPastedValues(
|
|
91
|
+
richChanges,
|
|
92
|
+
rawChanges,
|
|
93
|
+
this._parent.collection.translate(
|
|
94
|
+
'cairo.editableTable.paste.success.toast',
|
|
95
|
+
{ count: pasted.length },
|
|
96
|
+
),
|
|
97
|
+
);
|
|
98
|
+
|
|
89
99
|
this._parent.bi.clipboardAction({
|
|
90
100
|
actionName: 'paste',
|
|
91
101
|
origin,
|
|
@@ -101,8 +111,8 @@ export class ClipboardState<T, F extends FiltersMap> {
|
|
|
101
111
|
rawData: string,
|
|
102
112
|
targetPos: { row: number; col: number },
|
|
103
113
|
useRichValues: boolean,
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
) {
|
|
115
|
+
const { cellValue } = this._parent;
|
|
106
116
|
const keptSourceKeys = new Set<string>();
|
|
107
117
|
const pasted: Cell[] = [];
|
|
108
118
|
const richChanges: { rowKey: string; columnId: string; value: any }[] = [];
|
|
@@ -161,14 +171,7 @@ export class ClipboardState<T, F extends FiltersMap> {
|
|
|
161
171
|
}
|
|
162
172
|
}
|
|
163
173
|
|
|
164
|
-
|
|
165
|
-
cellValue.applyBulkValues(richChanges);
|
|
166
|
-
}
|
|
167
|
-
if (rawChanges.length > 0) {
|
|
168
|
-
cellValue.applyBulkRawValues(rawChanges);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return { keptSourceKeys, pasted };
|
|
174
|
+
return { richChanges, rawChanges, keptSourceKeys, pasted };
|
|
172
175
|
}
|
|
173
176
|
|
|
174
177
|
// A typed value pasted into a column of another cell type would skip that
|
|
@@ -189,22 +192,21 @@ export class ClipboardState<T, F extends FiltersMap> {
|
|
|
189
192
|
);
|
|
190
193
|
}
|
|
191
194
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const
|
|
195
|
+
// The clear rule is checked again here because it can depend on row values
|
|
196
|
+
// that changed since the cut.
|
|
197
|
+
private _cutSourceClears(keptSourceKeys: Set<string>) {
|
|
198
|
+
const { cellValue } = this._parent;
|
|
199
|
+
const clears: { rowKey: string; columnId: string; value: undefined }[] = [];
|
|
197
200
|
for (const key of this.copiedCells) {
|
|
198
201
|
if (keptSourceKeys.has(key)) {
|
|
199
202
|
continue;
|
|
200
203
|
}
|
|
201
204
|
const pos = parseCellKey(key);
|
|
202
|
-
if (pos) {
|
|
203
|
-
|
|
205
|
+
if (pos && !cellValue.getCellActionDisabledTooltip('clear', pos)) {
|
|
206
|
+
clears.push({ ...pos, value: undefined });
|
|
204
207
|
}
|
|
205
208
|
}
|
|
206
|
-
|
|
207
|
-
cellValue.clearCells(cells);
|
|
209
|
+
return clears;
|
|
208
210
|
}
|
|
209
211
|
|
|
210
212
|
clear() {
|
|
@@ -351,7 +351,7 @@ export class EditableTableState<T, F extends FiltersMap>
|
|
|
351
351
|
|
|
352
352
|
return () => {
|
|
353
353
|
disposeValidation();
|
|
354
|
-
this.cellValue.
|
|
354
|
+
this.cellValue.flushDraftsOnUnmount();
|
|
355
355
|
disposeMutation();
|
|
356
356
|
onBeforeUnloadSubscription?.remove();
|
|
357
357
|
};
|
|
@@ -26,6 +26,20 @@ export interface EditableTableMutationHandlers<T> {
|
|
|
26
26
|
submitDelete: (items: T[]) => Promise<void>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
export interface UpdateOptions {
|
|
30
|
+
/** Missing: the "Item updated" toast. A string: this text instead. `null`:
|
|
31
|
+
* no success toast. */
|
|
32
|
+
successToast?: string | null;
|
|
33
|
+
/** Adds Undo to the success toast. The server call waits until the toast
|
|
34
|
+
* closes or times out. */
|
|
35
|
+
undo?: {
|
|
36
|
+
/** Runs when the user clicks Undo, after the rows are rolled back. */
|
|
37
|
+
onUndo: () => void;
|
|
38
|
+
/** Runs when the toast closes or times out without Undo. */
|
|
39
|
+
onKept: () => void;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
29
43
|
type DraftRow<T> = {
|
|
30
44
|
item: T;
|
|
31
45
|
afterItemKey?: string;
|
|
@@ -258,18 +272,37 @@ export class MutationState<T, F extends FiltersMap> {
|
|
|
258
272
|
});
|
|
259
273
|
}
|
|
260
274
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
275
|
+
/** With `batchWait`, core runs a batch with the last update's `submit` and
|
|
276
|
+
* toast only, so an earlier update's Undo and `onKept` would be lost. */
|
|
277
|
+
get updatesAreBatched(): boolean {
|
|
278
|
+
return Boolean(this._optimisticActions.executor.batchWait);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
updateItems(
|
|
282
|
+
updatedItems: T[],
|
|
283
|
+
changedFieldIdsByItem?: string[][],
|
|
284
|
+
{ successToast, undo }: UpdateOptions = {},
|
|
285
|
+
) {
|
|
286
|
+
// With its own toast, an empty update still runs, to show the toast for
|
|
287
|
+
// values that stayed local (invalid cells, unsaved rows).
|
|
288
|
+
if (updatedItems.length === 0 && typeof successToast !== 'string') {
|
|
264
289
|
return;
|
|
265
290
|
}
|
|
266
291
|
const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);
|
|
267
292
|
this._optimisticActions.updateMany(updatedItems, {
|
|
268
293
|
keepPosition: true,
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
294
|
+
// With undo, core calls this when the toast closes or times out without
|
|
295
|
+
// Undo. Retry calls it again.
|
|
296
|
+
submit: (items) => {
|
|
297
|
+
undo?.onKept();
|
|
298
|
+
// With `batchWait`, `items` also holds the other updates of the batch.
|
|
299
|
+
return items.length > 0
|
|
300
|
+
? this._submitUpdate(items, updatedItems, contexts)
|
|
301
|
+
: Promise.resolve();
|
|
302
|
+
},
|
|
303
|
+
successToast: this._updateSuccessToast(successToast, updatedItems.length),
|
|
304
|
+
showUndoToast: undo !== undefined,
|
|
305
|
+
onUndo: undo?.onUndo,
|
|
273
306
|
errorToast: this._retryableToast(
|
|
274
307
|
'cairo.editableTable.updateItem.error.toast',
|
|
275
308
|
'Update',
|
|
@@ -277,6 +310,22 @@ export class MutationState<T, F extends FiltersMap> {
|
|
|
277
310
|
});
|
|
278
311
|
}
|
|
279
312
|
|
|
313
|
+
private _updateSuccessToast(
|
|
314
|
+
successToast: UpdateOptions['successToast'],
|
|
315
|
+
count: number,
|
|
316
|
+
) {
|
|
317
|
+
if (successToast === null) {
|
|
318
|
+
return undefined;
|
|
319
|
+
}
|
|
320
|
+
return (
|
|
321
|
+
successToast ??
|
|
322
|
+
this._parent.collection.translate(
|
|
323
|
+
'cairo.editableTable.updateItem.success.toast',
|
|
324
|
+
{ count },
|
|
325
|
+
)
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
|
|
280
329
|
/** Wraps the create submit so the outcome is reported once the server answers
|
|
281
330
|
* — the optimistic action itself has no completion callback. */
|
|
282
331
|
private _reportedCreate(origin: RowCreationOrigin) {
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
WixPatternsContainer,
|
|
7
7
|
} from '@wix/bex-core';
|
|
8
8
|
import { computed, makeObservable } from 'mobx';
|
|
9
|
+
import { getItemAccess } from '../../model/itemAccess';
|
|
9
10
|
|
|
10
11
|
type DeleteErrorToast = (
|
|
11
12
|
err: unknown,
|
|
@@ -104,13 +105,14 @@ export class EntityPageDeleteActionState<T> {
|
|
|
104
105
|
}
|
|
105
106
|
|
|
106
107
|
get canShow() {
|
|
107
|
-
const
|
|
108
|
+
const loaded = this.getLoadedSchema();
|
|
108
109
|
return (
|
|
109
110
|
!!this.getEntity() &&
|
|
110
111
|
!!this.config &&
|
|
111
112
|
this.isEnabled &&
|
|
112
113
|
!!this.getDeleteHandler() &&
|
|
113
|
-
(itemPermissions?.
|
|
114
|
+
getItemAccess(loaded?.schema.itemPermissions, loaded?.backend).permitted
|
|
115
|
+
.delete
|
|
114
116
|
);
|
|
115
117
|
}
|
|
116
118
|
|