@wix/patterns 1.452.0 → 1.453.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/CmsFieldManagement/formFields/CharactersLimitInput.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/formFields/CharactersLimitInput.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/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 +7 -0
- 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/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/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/array/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/array/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/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/Edit.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.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/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/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/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 +4 -4
- package/dist/cjs/components/Table/AddFieldColumnHeader.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/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/CellValueState.js +57 -9
- package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js +10 -0
- package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/cjs/state/EditableTable/MutationState.js +1 -0
- package/dist/cjs/state/EditableTable/MutationState.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/styles.global.css +2 -2
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/MultiAutoInlineCheckboxFilter.md +1 -1
- package/dist/docs/MultiInlineCheckboxFilter.md +1 -1
- package/dist/docs/index.json +35 -35
- package/dist/docs/useAmbassadorCollection.md +72 -16
- package/dist/docs/useCollection.md +29 -13
- package/dist/docs/useEntity.md +29 -7
- package/dist/docs/useEntityPage.md +48 -23
- package/dist/docs/useEntityPageContext.md +15 -3
- package/dist/docs/useNestedTable.md +81 -26
- package/dist/docs/usePickerContent.md +26 -12
- package/dist/docs/usePickerModal.md +98 -16
- package/dist/docs/usePickerStandalone.md +49 -19
- package/dist/docs/useSettingsPage.md +43 -22
- package/dist/docs/useSettingsPageContext.md +14 -3
- 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/CmsFieldManagement/formFields/CharactersLimitInput.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/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- 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/CollectionTable.st.css.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
- 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/AutoCompleteReadonly.st.css.js.map +1 -1
- 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/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableCell.st.css +7 -0
- 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/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/array/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
- 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/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
- 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/number/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- 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/time/Edit.st.css.js +2 -2
- 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/EntityPagePlain.st.css.js +2 -2
- package/dist/esm/components/Fade/Fade.st.css.js +2 -2
- 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/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
- 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/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
- 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/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/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
- 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/Table/AddFieldColumnHeader.st.css.js +2 -2
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
- package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
- 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/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
- package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
- package/dist/esm/components/common.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/EditableTable/CellValueState.js +55 -8
- package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js +8 -0
- package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/esm/state/EditableTable/MutationState.js +1 -0
- package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/styles.global.css +2 -2
- package/dist/esm/version.js +1 -1
- package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
- package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionViewsDropdown/ViewsDropdown.st.css.d.ts.map +1 -1
- package/dist/types/components/DragHandle/DragHandle.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/boolean/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.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.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/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
- package/dist/types/components/MaxLines/MaxLines.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/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
- package/dist/types/components/SlidingModal/SlidingModal.st.css.d.ts.map +1 -1
- package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/CellValueState.d.ts +10 -5
- package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/EditableTableState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/MutationState.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/CmsFieldManagement/formFields/CharactersLimitInput.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/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css +7 -0
- 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/address/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/array/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/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/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/object/View.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/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/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/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/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/EditableTable/CellValueState.ts +57 -8
- package/src/state/EditableTable/EditableTableState.ts +10 -0
- package/src/state/EditableTable/MutationState.ts +2 -4
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/styles.global.css +2 -2
- package/src/version.ts +1 -1
|
@@ -28,7 +28,8 @@ class CellValueState {
|
|
|
28
28
|
commitHandler: _mobx.action,
|
|
29
29
|
applyBulkRawValues: _mobx.action,
|
|
30
30
|
applyBulkValues: _mobx.action,
|
|
31
|
-
flushDrafts: _mobx.action
|
|
31
|
+
flushDrafts: _mobx.action,
|
|
32
|
+
dropRowCellState: _mobx.action
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -76,9 +77,9 @@ class CellValueState {
|
|
|
76
77
|
return _utils.validResult;
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
80
|
+
/** Normalize like commitHandler does, then validate, so a value commit
|
|
81
|
+
* would accept (`www.wix.com`) is never reported invalid before it has
|
|
82
|
+
* been committed. */
|
|
82
83
|
validateEditingValue(columnId, value) {
|
|
83
84
|
var _this$_parent$collect;
|
|
84
85
|
const column = this._parent._columnMap.get(columnId);
|
|
@@ -355,6 +356,12 @@ class CellValueState {
|
|
|
355
356
|
}
|
|
356
357
|
}
|
|
357
358
|
flushDrafts(exceptRowKey) {
|
|
359
|
+
const invalidNewRows = new Set();
|
|
360
|
+
for (const rowKey of this._parent.mutation._drafts.keys()) {
|
|
361
|
+
if (rowKey !== exceptRowKey && !this._validateNewRow(rowKey)) {
|
|
362
|
+
invalidNewRows.add(rowKey);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
358
365
|
const rowKeys = new Set();
|
|
359
366
|
for (const entry of this._draftCells.values()) {
|
|
360
367
|
if (entry.rowKey !== exceptRowKey) {
|
|
@@ -365,10 +372,12 @@ class CellValueState {
|
|
|
365
372
|
for (const rowKey of rowKeys) {
|
|
366
373
|
const keyedItem = this._parent._getKeyedItem(rowKey);
|
|
367
374
|
if (!keyedItem) {
|
|
368
|
-
this.
|
|
375
|
+
this.dropRowCellState(rowKey);
|
|
369
376
|
} else if (this._parent.mutation.isLocalNewRow(rowKey)) {
|
|
370
|
-
|
|
371
|
-
|
|
377
|
+
if (!invalidNewRows.has(rowKey)) {
|
|
378
|
+
const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
|
|
379
|
+
this._parent.mutation.commitNewRow(rowKey, consumed.item);
|
|
380
|
+
}
|
|
372
381
|
} else {
|
|
373
382
|
const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);
|
|
374
383
|
updates.push(consumed);
|
|
@@ -382,6 +391,37 @@ class CellValueState {
|
|
|
382
391
|
}) => changedFieldIds));
|
|
383
392
|
}
|
|
384
393
|
}
|
|
394
|
+
|
|
395
|
+
/** Validate all editable cells of a local new row, storing failures as
|
|
396
|
+
* pending cells. Untouched cells validate their current display value. */
|
|
397
|
+
_validateNewRow(rowKey) {
|
|
398
|
+
let valid = true;
|
|
399
|
+
for (const column of this._parent.allColumns) {
|
|
400
|
+
if (!this.isColumnEditable(rowKey, column.id)) {
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
// A cell already showing an error blocks the row even if re-validating
|
|
404
|
+
// its value would pass. A failed paste keeps the raw string here, and a
|
|
405
|
+
// cell type that only rejects on deserialize has no `validate` to fail.
|
|
406
|
+
if (this._getPendingCell(rowKey, column.id)) {
|
|
407
|
+
valid = false;
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
const value = this.getCellDisplayValue(rowKey, column.id);
|
|
411
|
+
const result = this.validateEditingValue(column.id, value);
|
|
412
|
+
if (!result.valid) {
|
|
413
|
+
valid = false;
|
|
414
|
+
const pendingKey = this._pendingCellKey(rowKey, column.id);
|
|
415
|
+
if (pendingKey) {
|
|
416
|
+
this._pendingCells.set(pendingKey, {
|
|
417
|
+
value,
|
|
418
|
+
errors: result.errors ?? []
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return valid;
|
|
424
|
+
}
|
|
385
425
|
_consumeRowDrafts(rowKey, item) {
|
|
386
426
|
const changedFieldIds = new Set();
|
|
387
427
|
for (const [key, entry] of this._draftCells) {
|
|
@@ -401,13 +441,21 @@ class CellValueState {
|
|
|
401
441
|
};
|
|
402
442
|
}
|
|
403
443
|
|
|
404
|
-
/** Drop a row's
|
|
405
|
-
|
|
444
|
+
/** Drop a row's buffered cell state without saving it (the row is gone).
|
|
445
|
+
* Pending cells are keyed by row key, not tracked per entry, so they are
|
|
446
|
+
* swept by prefix. */
|
|
447
|
+
dropRowCellState(rowKey) {
|
|
406
448
|
for (const [key, entry] of this._draftCells) {
|
|
407
449
|
if (entry.rowKey === rowKey) {
|
|
408
450
|
this._draftCells.delete(key);
|
|
409
451
|
}
|
|
410
452
|
}
|
|
453
|
+
const prefix = `${rowKey}:`;
|
|
454
|
+
for (const key of this._pendingCells.keys()) {
|
|
455
|
+
if (key.startsWith(prefix)) {
|
|
456
|
+
this._pendingCells.delete(key);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
411
459
|
}
|
|
412
460
|
}
|
|
413
461
|
exports.CellValueState = CellValueState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_cellTypes","_utils","builtInCellTypeMap","Map","builtInCellTypes","map","ct","type","CellValueState","constructor","parent","extraCellTypes","_defineProperty2","default","_parent","_extraCellTypes","makeObservable","_pendingCells","observable","_draftCells","_cellTypeMap","computed","clearCells","action","toggleCell","commitHandler","applyBulkRawValues","applyBulkValues","flushDrafts","col","allColumns","cellType","typeConfig","set","id","get","textCellType","resolveCellTypeByColumnId","columnId","getCellDisplayValue","rowKey","pending","_getPendingCell","value","draft","_getDraftCell","column","_columnMap","keyedItem","_getKeyedItem","getValue","item","undefined","getCellValidation","valid","errors","validResult","validateEditingValue","_this$_parent$collect","resolved","normalized","normalizeOnCommit","runCellValidation","validation","validate","collection","translate","isCellEditable","editable","EditComponent","isColumnEditable","setValue","serializeCellValue","serialize","String","cells","changes","cell","clearable","pendingKey","_pendingCellKey","delete","deserialize","push","length","toggleValue","newValue","_applyValue","editingValue","key","tryDeserialize","rawValue","_this$_parent$collect2","error","rawChanges","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","_this$_parent$collect4","exceptRowKey","rowKeys","entry","_dropRowDrafts","commitNewRow","exports"],"sources":["../../../../src/state/EditableTable/CellValueState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { CellType, Cell, ValidationResult } from './types';\nimport type { FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport {\n builtInCellTypes,\n textCellType,\n} from '../../components/EditableTable/cellTypes';\nimport { runCellValidation, validResult } from './utils';\n\nconst builtInCellTypeMap = new Map<string, CellType>(\n builtInCellTypes.map((ct) => [ct.type, ct]),\n);\n\nexport class CellValueState<T, F extends FiltersMap> {\n /** Pending invalid cell values, keyed by `${itemId}:${colId}`. */\n readonly _pendingCells = new Map<string, { value: any; errors: string[] }>();\n\n /** Valid committed values not yet saved, keyed by `${itemId}:${colId}`.\n * Each row's drafts are flushed as one update when focus leaves the row. */\n readonly _draftCells = new Map<\n string,\n { rowKey: string; columnId: string; value: any }\n >();\n\n private readonly _parent: EditableTableState<T, F>;\n private readonly _extraCellTypes: Map<string, CellType>;\n\n constructor(\n parent: EditableTableState<T, F>,\n extraCellTypes: Map<string, CellType> = new Map(),\n ) {\n this._parent = parent;\n this._extraCellTypes = extraCellTypes;\n\n makeObservable(this, {\n _pendingCells: observable,\n _draftCells: observable,\n _cellTypeMap: computed,\n clearCells: action,\n toggleCell: action,\n commitHandler: action,\n applyBulkRawValues: action,\n applyBulkValues: action,\n flushDrafts: action,\n });\n }\n\n // Cell-type config per column id, from the merged columns (consumer columns\n // plus the columns the wired source adds). A computed so source columns that\n // load after init still get their cell types registered, without a rebuild.\n get _cellTypeMap(): Map<string, CellType> {\n const map = new Map<string, CellType>();\n for (const col of this._parent.allColumns) {\n if (col.cellType === 'custom' && col.typeConfig) {\n map.set(col.id, { type: 'custom', ...col.typeConfig });\n } else {\n map.set(\n col.id,\n builtInCellTypeMap.get(col.cellType) ??\n this._extraCellTypes.get(col.cellType) ??\n textCellType,\n );\n }\n }\n return map;\n }\n\n resolveCellTypeByColumnId(columnId: string): CellType {\n return this._cellTypeMap.get(columnId) ?? textCellType;\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return pending.value;\n }\n const draft = this._getDraftCell(rowKey, columnId);\n if (draft) {\n return draft.value;\n }\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return column && keyedItem ? column.getValue(keyedItem.item) : undefined;\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return { valid: false, errors: pending.errors };\n }\n return validResult;\n }\n\n /** Validate a value the user is still typing. Normalizes first, like\n * commitHandler does, so a value that commit would accept (`www.wix.com`)\n * is not reported invalid while it's being typed. */\n validateEditingValue(columnId: string, value: any): ValidationResult {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return validResult;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(value)\n : value;\n return runCellValidation(\n normalized,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return false;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.editable === false || !resolved.EditComponent) {\n return false;\n }\n return this.isColumnEditable(rowKey, columnId);\n }\n\n /**\n * Whether `column.editable` permits writing this cell for this row,\n * independent of whether the cell type has an inline EditComponent. Gates\n * bulk/programmatic writes (clear, cut, paste) — narrower than\n * isCellEditable, which also requires an edit UI to exist.\n */\n isColumnEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column?.setValue) {\n return false;\n }\n\n if (typeof column.editable === 'function') {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return keyedItem ? column.editable(keyedItem.item) : false;\n }\n return column.editable !== false;\n }\n\n /** Serialize a cell value to a string (for clipboard copy/cut). */\n serializeCellValue(rowKey: string, columnId: string): string {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column || !keyedItem) {\n return '';\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const value = this.getCellDisplayValue(rowKey, columnId);\n return resolved.serialize ? resolved.serialize(value) : String(value ?? '');\n }\n\n /** Clear selected cells (Delete/Backspace). Respects cellType.clearable and column.editable. */\n clearCells(cells: Cell[]) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n\n for (const cell of cells) {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column?.setValue) {\n continue;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.clearable === false) {\n continue;\n }\n if (!this.isColumnEditable(cell.rowKey, cell.columnId)) {\n continue;\n }\n\n const pendingKey = this._pendingCellKey(cell.rowKey, cell.columnId);\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n const value = resolved.deserialize ? resolved.deserialize('') : '';\n changes.push({ rowKey: cell.rowKey, columnId: cell.columnId, value });\n }\n\n if (changes.length > 0) {\n this.applyBulkValues(changes);\n }\n }\n\n toggleCell(rowKey: string, columnId: string) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.toggleValue) {\n return;\n }\n\n const value = this.getCellDisplayValue(rowKey, columnId);\n const newValue = resolved.toggleValue(value);\n this._applyValue(rowKey, columnId, newValue);\n }\n\n /** Commit handler — used as callback for CellInteractionState. */\n commitHandler(editingValue: any, cell: Cell) {\n if (editingValue !== undefined) {\n const resolved = this.resolveCellTypeByColumnId(cell.columnId);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n this._applyValue(cell.rowKey, cell.columnId, normalized);\n }\n }\n\n private _getPendingCell(\n rowKey: string,\n columnId: string,\n ): { value: any; errors: string[] } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._pendingCells.get(key) : undefined;\n }\n\n private _getDraftCell(\n rowKey: string,\n columnId: string,\n ): { value: any } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._draftCells.get(key) : undefined;\n }\n\n private _pendingCellKey(\n rowKey: string,\n columnId: string,\n ): string | undefined {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n const column = this._parent._columnMap.get(columnId);\n if (!keyedItem || !column) {\n return undefined;\n }\n return `${keyedItem.key}:${column.id}`;\n }\n\n /**\n * Deserialize a raw string to a typed value. Returns an error message\n * if the conversion fails\n */\n tryDeserialize(\n columnId: string,\n rawValue: string,\n ): { value: any; error?: string } {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return { value: rawValue };\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.deserialize) {\n return { value: rawValue };\n }\n try {\n return { value: resolved.deserialize(rawValue) };\n } catch {\n return {\n value: rawValue,\n error: this._parent.collection?.translate(\n 'cairo.editableTable.cell.validation.notCompatible',\n ),\n };\n }\n }\n\n /**\n * Deserialize and apply multiple raw string values in bulk.\n * Handles conversion failures by storing them as pending cells.\n */\n applyBulkRawValues(\n rawChanges: { rowKey: string; columnId: string; rawValue: string }[],\n ) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n for (const { rowKey, columnId, rawValue } of rawChanges) {\n const { value, error } = this.tryDeserialize(columnId, rawValue);\n if (error) {\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, { value, errors: [error] });\n }\n } else {\n changes.push({ rowKey, columnId, value });\n }\n }\n this.applyBulkValues(changes);\n }\n\n /**\n * Apply multiple cell values in bulk. Validates per cell, accumulates\n * changes per row, and submits all modified items in a single update.\n * Every mutation path (clear, paste, cut) funnels through here, so\n * checking isColumnEditable here — not just at the call sites — keeps\n * read-only cells protected regardless of entry point.\n */\n applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {\n const rowUpdates = new Map<\n string,\n { item: T; changedFieldIds: Set<string> }\n >();\n\n for (const { rowKey, columnId, value } of changes) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (\n !column?.setValue ||\n !keyedItem ||\n !this.isColumnEditable(rowKey, columnId)\n ) {\n continue;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = runCellValidation(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid) {\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n if (this._parent.mutation.isLocalNewRow(rowKey)) {\n // A row not created on the server yet can't take an update —\n // buffer the value as a draft; it goes out with the row's\n // create when focus leaves the row.\n if (pendingKey) {\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n }\n continue;\n }\n let rowUpdate = rowUpdates.get(rowKey);\n if (!rowUpdate) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n rowUpdate = {\n item: consumed.item,\n changedFieldIds: new Set(consumed.changedFieldIds),\n };\n rowUpdates.set(rowKey, rowUpdate);\n }\n rowUpdate.item = column.setValue(rowUpdate.item, value);\n rowUpdate.changedFieldIds.add(column.id);\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n const updates = Array.from(rowUpdates.values());\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),\n );\n }\n\n private _applyValue(rowKey: string, columnId: string, value: any) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = runCellValidation(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid && pendingKey) {\n this._pendingCells.delete(pendingKey);\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n flushDrafts(exceptRowKey?: string) {\n const rowKeys = new Set<string>();\n for (const entry of this._draftCells.values()) {\n if (entry.rowKey !== exceptRowKey) {\n rowKeys.add(entry.rowKey);\n }\n }\n\n const updates: { item: T; changedFieldIds: string[] }[] = [];\n for (const rowKey of rowKeys) {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!keyedItem) {\n this._dropRowDrafts(rowKey);\n } else if (this._parent.mutation.isLocalNewRow(rowKey)) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n this._parent.mutation.commitNewRow(rowKey, consumed.item);\n } else {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n updates.push(consumed);\n }\n }\n if (updates.length > 0) {\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => changedFieldIds),\n );\n }\n }\n\n private _consumeRowDrafts(\n rowKey: string,\n item: T,\n ): { item: T; changedFieldIds: string[] } {\n const changedFieldIds = new Set<string>();\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey !== rowKey) {\n continue;\n }\n const column = this._parent._columnMap.get(entry.columnId);\n if (column?.setValue) {\n item = column.setValue(item, entry.value);\n changedFieldIds.add(column.id);\n }\n this._draftCells.delete(key);\n }\n return { item, changedFieldIds: Array.from(changedFieldIds) };\n }\n\n /** Drop a row's draft entries without saving (the row no longer exists). */\n private _dropRowDrafts(rowKey: string) {\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey === rowKey) {\n this._draftCells.delete(key);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_cellTypes","_utils","builtInCellTypeMap","Map","builtInCellTypes","map","ct","type","CellValueState","constructor","parent","extraCellTypes","_defineProperty2","default","_parent","_extraCellTypes","makeObservable","_pendingCells","observable","_draftCells","_cellTypeMap","computed","clearCells","action","toggleCell","commitHandler","applyBulkRawValues","applyBulkValues","flushDrafts","dropRowCellState","col","allColumns","cellType","typeConfig","set","id","get","textCellType","resolveCellTypeByColumnId","columnId","getCellDisplayValue","rowKey","pending","_getPendingCell","value","draft","_getDraftCell","column","_columnMap","keyedItem","_getKeyedItem","getValue","item","undefined","getCellValidation","valid","errors","validResult","validateEditingValue","_this$_parent$collect","resolved","normalized","normalizeOnCommit","runCellValidation","validation","validate","collection","translate","isCellEditable","editable","EditComponent","isColumnEditable","setValue","serializeCellValue","serialize","String","cells","changes","cell","clearable","pendingKey","_pendingCellKey","delete","deserialize","push","length","toggleValue","newValue","_applyValue","editingValue","key","tryDeserialize","rawValue","_this$_parent$collect2","error","rawChanges","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","_this$_parent$collect4","exceptRowKey","invalidNewRows","_drafts","keys","_validateNewRow","rowKeys","entry","has","commitNewRow","prefix","startsWith","exports"],"sources":["../../../../src/state/EditableTable/CellValueState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { CellType, Cell, ValidationResult } from './types';\nimport type { FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport {\n builtInCellTypes,\n textCellType,\n} from '../../components/EditableTable/cellTypes';\nimport { runCellValidation, validResult } from './utils';\n\nconst builtInCellTypeMap = new Map<string, CellType>(\n builtInCellTypes.map((ct) => [ct.type, ct]),\n);\n\nexport class CellValueState<T, F extends FiltersMap> {\n /** Pending invalid cell values, keyed by `${itemId}:${colId}`. */\n readonly _pendingCells = new Map<string, { value: any; errors: string[] }>();\n\n /** Valid committed values not yet saved, keyed by `${itemId}:${colId}`.\n * Each row's drafts are flushed as one update when focus leaves the row. */\n readonly _draftCells = new Map<\n string,\n { rowKey: string; columnId: string; value: any }\n >();\n\n private readonly _parent: EditableTableState<T, F>;\n private readonly _extraCellTypes: Map<string, CellType>;\n\n constructor(\n parent: EditableTableState<T, F>,\n extraCellTypes: Map<string, CellType> = new Map(),\n ) {\n this._parent = parent;\n this._extraCellTypes = extraCellTypes;\n\n makeObservable(this, {\n _pendingCells: observable,\n _draftCells: observable,\n _cellTypeMap: computed,\n clearCells: action,\n toggleCell: action,\n commitHandler: action,\n applyBulkRawValues: action,\n applyBulkValues: action,\n flushDrafts: action,\n dropRowCellState: action,\n });\n }\n\n // Cell-type config per column id, from the merged columns (consumer columns\n // plus the columns the wired source adds). A computed so source columns that\n // load after init still get their cell types registered, without a rebuild.\n get _cellTypeMap(): Map<string, CellType> {\n const map = new Map<string, CellType>();\n for (const col of this._parent.allColumns) {\n if (col.cellType === 'custom' && col.typeConfig) {\n map.set(col.id, { type: 'custom', ...col.typeConfig });\n } else {\n map.set(\n col.id,\n builtInCellTypeMap.get(col.cellType) ??\n this._extraCellTypes.get(col.cellType) ??\n textCellType,\n );\n }\n }\n return map;\n }\n\n resolveCellTypeByColumnId(columnId: string): CellType {\n return this._cellTypeMap.get(columnId) ?? textCellType;\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return pending.value;\n }\n const draft = this._getDraftCell(rowKey, columnId);\n if (draft) {\n return draft.value;\n }\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return column && keyedItem ? column.getValue(keyedItem.item) : undefined;\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return { valid: false, errors: pending.errors };\n }\n return validResult;\n }\n\n /** Normalize like commitHandler does, then validate, so a value commit\n * would accept (`www.wix.com`) is never reported invalid before it has\n * been committed. */\n validateEditingValue(columnId: string, value: any): ValidationResult {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return validResult;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(value)\n : value;\n return runCellValidation(\n normalized,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return false;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.editable === false || !resolved.EditComponent) {\n return false;\n }\n return this.isColumnEditable(rowKey, columnId);\n }\n\n /**\n * Whether `column.editable` permits writing this cell for this row,\n * independent of whether the cell type has an inline EditComponent. Gates\n * bulk/programmatic writes (clear, cut, paste) — narrower than\n * isCellEditable, which also requires an edit UI to exist.\n */\n isColumnEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column?.setValue) {\n return false;\n }\n\n if (typeof column.editable === 'function') {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return keyedItem ? column.editable(keyedItem.item) : false;\n }\n return column.editable !== false;\n }\n\n /** Serialize a cell value to a string (for clipboard copy/cut). */\n serializeCellValue(rowKey: string, columnId: string): string {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column || !keyedItem) {\n return '';\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const value = this.getCellDisplayValue(rowKey, columnId);\n return resolved.serialize ? resolved.serialize(value) : String(value ?? '');\n }\n\n /** Clear selected cells (Delete/Backspace). Respects cellType.clearable and column.editable. */\n clearCells(cells: Cell[]) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n\n for (const cell of cells) {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column?.setValue) {\n continue;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.clearable === false) {\n continue;\n }\n if (!this.isColumnEditable(cell.rowKey, cell.columnId)) {\n continue;\n }\n\n const pendingKey = this._pendingCellKey(cell.rowKey, cell.columnId);\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n const value = resolved.deserialize ? resolved.deserialize('') : '';\n changes.push({ rowKey: cell.rowKey, columnId: cell.columnId, value });\n }\n\n if (changes.length > 0) {\n this.applyBulkValues(changes);\n }\n }\n\n toggleCell(rowKey: string, columnId: string) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.toggleValue) {\n return;\n }\n\n const value = this.getCellDisplayValue(rowKey, columnId);\n const newValue = resolved.toggleValue(value);\n this._applyValue(rowKey, columnId, newValue);\n }\n\n /** Commit handler — used as callback for CellInteractionState. */\n commitHandler(editingValue: any, cell: Cell) {\n if (editingValue !== undefined) {\n const resolved = this.resolveCellTypeByColumnId(cell.columnId);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n this._applyValue(cell.rowKey, cell.columnId, normalized);\n }\n }\n\n private _getPendingCell(\n rowKey: string,\n columnId: string,\n ): { value: any; errors: string[] } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._pendingCells.get(key) : undefined;\n }\n\n private _getDraftCell(\n rowKey: string,\n columnId: string,\n ): { value: any } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._draftCells.get(key) : undefined;\n }\n\n private _pendingCellKey(\n rowKey: string,\n columnId: string,\n ): string | undefined {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n const column = this._parent._columnMap.get(columnId);\n if (!keyedItem || !column) {\n return undefined;\n }\n return `${keyedItem.key}:${column.id}`;\n }\n\n /**\n * Deserialize a raw string to a typed value. Returns an error message\n * if the conversion fails\n */\n tryDeserialize(\n columnId: string,\n rawValue: string,\n ): { value: any; error?: string } {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return { value: rawValue };\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.deserialize) {\n return { value: rawValue };\n }\n try {\n return { value: resolved.deserialize(rawValue) };\n } catch {\n return {\n value: rawValue,\n error: this._parent.collection?.translate(\n 'cairo.editableTable.cell.validation.notCompatible',\n ),\n };\n }\n }\n\n /**\n * Deserialize and apply multiple raw string values in bulk.\n * Handles conversion failures by storing them as pending cells.\n */\n applyBulkRawValues(\n rawChanges: { rowKey: string; columnId: string; rawValue: string }[],\n ) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n for (const { rowKey, columnId, rawValue } of rawChanges) {\n const { value, error } = this.tryDeserialize(columnId, rawValue);\n if (error) {\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, { value, errors: [error] });\n }\n } else {\n changes.push({ rowKey, columnId, value });\n }\n }\n this.applyBulkValues(changes);\n }\n\n /**\n * Apply multiple cell values in bulk. Validates per cell, accumulates\n * changes per row, and submits all modified items in a single update.\n * Every mutation path (clear, paste, cut) funnels through here, so\n * checking isColumnEditable here — not just at the call sites — keeps\n * read-only cells protected regardless of entry point.\n */\n applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {\n const rowUpdates = new Map<\n string,\n { item: T; changedFieldIds: Set<string> }\n >();\n\n for (const { rowKey, columnId, value } of changes) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (\n !column?.setValue ||\n !keyedItem ||\n !this.isColumnEditable(rowKey, columnId)\n ) {\n continue;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = runCellValidation(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid) {\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n if (this._parent.mutation.isLocalNewRow(rowKey)) {\n // A row not created on the server yet can't take an update —\n // buffer the value as a draft; it goes out with the row's\n // create when focus leaves the row.\n if (pendingKey) {\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n }\n continue;\n }\n let rowUpdate = rowUpdates.get(rowKey);\n if (!rowUpdate) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n rowUpdate = {\n item: consumed.item,\n changedFieldIds: new Set(consumed.changedFieldIds),\n };\n rowUpdates.set(rowKey, rowUpdate);\n }\n rowUpdate.item = column.setValue(rowUpdate.item, value);\n rowUpdate.changedFieldIds.add(column.id);\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n const updates = Array.from(rowUpdates.values());\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),\n );\n }\n\n private _applyValue(rowKey: string, columnId: string, value: any) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = runCellValidation(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid && pendingKey) {\n this._pendingCells.delete(pendingKey);\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n flushDrafts(exceptRowKey?: string) {\n const invalidNewRows = new Set<string>();\n for (const rowKey of this._parent.mutation._drafts.keys()) {\n if (rowKey !== exceptRowKey && !this._validateNewRow(rowKey)) {\n invalidNewRows.add(rowKey);\n }\n }\n\n const rowKeys = new Set<string>();\n for (const entry of this._draftCells.values()) {\n if (entry.rowKey !== exceptRowKey) {\n rowKeys.add(entry.rowKey);\n }\n }\n\n const updates: { item: T; changedFieldIds: string[] }[] = [];\n for (const rowKey of rowKeys) {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!keyedItem) {\n this.dropRowCellState(rowKey);\n } else if (this._parent.mutation.isLocalNewRow(rowKey)) {\n if (!invalidNewRows.has(rowKey)) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n this._parent.mutation.commitNewRow(rowKey, consumed.item);\n }\n } else {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n updates.push(consumed);\n }\n }\n if (updates.length > 0) {\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => changedFieldIds),\n );\n }\n }\n\n /** Validate all editable cells of a local new row, storing failures as\n * pending cells. Untouched cells validate their current display value. */\n private _validateNewRow(rowKey: string): boolean {\n let valid = true;\n for (const column of this._parent.allColumns) {\n if (!this.isColumnEditable(rowKey, column.id)) {\n continue;\n }\n // A cell already showing an error blocks the row even if re-validating\n // its value would pass. A failed paste keeps the raw string here, and a\n // cell type that only rejects on deserialize has no `validate` to fail.\n if (this._getPendingCell(rowKey, column.id)) {\n valid = false;\n continue;\n }\n const value = this.getCellDisplayValue(rowKey, column.id);\n const result = this.validateEditingValue(column.id, value);\n if (!result.valid) {\n valid = false;\n const pendingKey = this._pendingCellKey(rowKey, column.id);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n }\n return valid;\n }\n\n private _consumeRowDrafts(\n rowKey: string,\n item: T,\n ): { item: T; changedFieldIds: string[] } {\n const changedFieldIds = new Set<string>();\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey !== rowKey) {\n continue;\n }\n const column = this._parent._columnMap.get(entry.columnId);\n if (column?.setValue) {\n item = column.setValue(item, entry.value);\n changedFieldIds.add(column.id);\n }\n this._draftCells.delete(key);\n }\n return { item, changedFieldIds: Array.from(changedFieldIds) };\n }\n\n /** Drop a row's buffered cell state without saving it (the row is gone).\n * Pending cells are keyed by row key, not tracked per entry, so they are\n * swept by prefix. */\n dropRowCellState(rowKey: string) {\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey === rowKey) {\n this._draftCells.delete(key);\n }\n }\n const prefix = `${rowKey}:`;\n for (const key of this._pendingCells.keys()) {\n if (key.startsWith(prefix)) {\n this._pendingCells.delete(key);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -195,9 +195,19 @@ class EditableTableState {
|
|
|
195
195
|
init(columns) {
|
|
196
196
|
this._providedColumns = columns;
|
|
197
197
|
const disposeMutation = this.mutation.init();
|
|
198
|
+
const {
|
|
199
|
+
onBeforeUnload
|
|
200
|
+
} = this.toolbar.container;
|
|
201
|
+
const onBeforeUnloadSubscription = onBeforeUnload == null ? void 0 : onBeforeUnload(event => {
|
|
202
|
+
if (this.cellValue._pendingCells.size === 0) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
event.preventDefault();
|
|
206
|
+
});
|
|
198
207
|
return () => {
|
|
199
208
|
this.cellValue.flushDrafts();
|
|
200
209
|
disposeMutation();
|
|
210
|
+
onBeforeUnloadSubscription == null || onBeforeUnloadSubscription.remove();
|
|
201
211
|
};
|
|
202
212
|
}
|
|
203
213
|
addItem(afterItemKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","translate","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","flushDrafts","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n this.collection.translate,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n return () => {\n this.cellValue.flushDrafts();\n disposeMutation();\n };\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_buildEditableFieldColumns","TableStateWithDraftRows","TableState","constructor","params","mergeDraftRows","_defineProperty2","default","_mergeDraftRows","keyedItems","collection","result","showEmptyState","toolbar","multi","length","EditableTableState","_params$extraCellType","ConditionalModalState","undefined","items","tableState","onAddItemActionComplete","origin","toolbarBIReporter","onAddItemClick","columnId","forceDirection","multiple","sort","id","clearResult","ToolbarCollectionState","container","componentType","mutation","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","ref","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isMultiDeleteDisabled","rowKeys","some","key","visibleColumns","itemsToRenderCount","source","collectionFieldsSource","initTask","status","isSuccess","buildEditableFieldColumns","fieldsSource","translate","editableCellFor","c","getKeyedItem","find","ki","_toIndices","pos","row","findIndex","col","_toPosition","visibleIds","filter","columns","disposeMutation","onBeforeUnload","onBeforeUnloadSubscription","event","_pendingCells","size","preventDefault","flushDrafts","remove","addItem","afterItemKey","duplicateItem","deleteItems","deletableRowKeys","t","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","isColumnEditable","clearCells","cells","handleCellClick","shiftKey","isEditing","commitEdit","get","res","editOnClick","val","focusCell","startEdit","column","resolved","toggleValue","showEditWhenFocused","value","selectionAnchor","selectRange","handleCellDoubleClick","exports"],"sources":["../../../../src/state/EditableTable/EditableTableState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport {\n CollectionOptimisticActions,\n CollectionState,\n ConditionalModalState,\n FiltersMap,\n SortOrder,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type { KeyedItem, RemoveItemDisabledResult } from '@wix/bex-core';\nimport { ToolbarCollectionState } from '../ToolbarCollectionState';\nimport { TableState } from '../TableState';\nimport type { TableStateParams } from '../TableState';\nimport { ICollectionComponentState } from '../ICollectionComponentState';\nimport { CellInteractionState } from './CellInteractionState';\nimport { CellValueState } from './CellValueState';\nimport { ClipboardState } from './ClipboardState';\nimport { MutationState } from './MutationState';\nimport type { EditableTableMutationHandlers } from './MutationState';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type { RemoveItemDisabledResult } from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n updateItemDisabled?: boolean;\n removeItemDisabled?: boolean;\n /** Deleting several rows in one operation. Absent = follows `removeItemDisabled`. */\n multiDeleteDisabled?: boolean;\n /** Per-item refinement of `removeItemDisabled`: disables deleting an item\n * even though deleting is generally allowed, optionally with a reason.\n * Must be pure and synchronous. Absent = all items deletable. */\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult;\n}\n\nexport interface EditableTableStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar?: ToolbarCollectionState<T, F>;\n readonly permissions?: EditableTablePermissions<T>;\n readonly mutations: EditableTableMutationHandlers<T>;\n readonly createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>;\n /**\n * Additional cell types to register alongside the built-in ones.\n * Augment `CellTypeConfigMap` to use these types on `EditableColumn.cellType`.\n */\n readonly extraCellTypes?: CellType[];\n}\n\nexport interface EditableTableStatePublicAPI<T, F extends FiltersMap> {\n /** Underlying CollectionState instance */\n readonly collection: CollectionState<T, F>;\n /** Underlying ToolbarCollectionState instance */\n readonly toolbar: ToolbarCollectionState<T, F>;\n /** Reset active filters & sorting and adds new items to the collection */\n onAddItemActionComplete(items: T[]): void;\n /** Sort by column */\n sort: (\n columnId: string,\n params?: { forceDirection?: SortOrder; multiple?: boolean },\n ) => void;\n /** Replace all permission flags and the per-item delete predicate */\n setPermissions(permissions: EditableTablePermissions<T>): void;\n /** Whether deleting the given row is disabled (user-level or per-item) */\n isRowDeleteDisabled(rowKey: string): boolean;\n /** The reason the given row cannot be deleted, when the per-item predicate\n * returned one. `undefined` when the row is deletable or no reason was given. */\n rowDeleteDisabledReason(rowKey: string): string | undefined;\n /** Whether deleting the given rows in one operation is disabled */\n isMultiDeleteDisabled(rowKeys: string[]): boolean;\n}\n\n/**\n * Draft rows (added locally, not yet created on the server) are not part of\n * the collection result. This TableState merges them into the rendered list,\n * so everything that renders rows — the WDS table and the virtualizer — sees\n * them, and a table whose only rows are drafts does not show the empty state.\n */\nclass TableStateWithDraftRows<T, F extends FiltersMap> extends TableState<\n T,\n F\n> {\n private readonly _mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[];\n\n constructor(\n params: TableStateParams<T, F>,\n mergeDraftRows: (items: KeyedItem<T>[]) => KeyedItem<T>[],\n ) {\n super(params);\n this._mergeDraftRows = mergeDraftRows;\n }\n\n get keyedItems() {\n return this._mergeDraftRows(this.collection.result.keyedItems);\n }\n\n get showEmptyState() {\n return this.toolbar.multi.showEmptyState && this.keyedItems.length === 0;\n }\n}\n\nexport class EditableTableState<T, F extends FiltersMap>\n implements ICollectionComponentState, EditableTableStatePublicAPI<T, F>\n{\n readonly toolbar: ToolbarCollectionState<T, F>;\n readonly tableState: TableState<T, F>;\n\n readonly cellInteraction: CellInteractionState<T, F>;\n readonly cellValue: CellValueState<T, F>;\n readonly clipboard: ClipboardState<T, F>;\n readonly mutation: MutationState<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n updateItemDisabled = false;\n removeItemDisabled = false;\n multiDeleteDisabled = false;\n // Needs an explicit initializer: a declaration-only field is erased at\n // compile time, and makeObservable throws on a property that doesn't exist.\n isRemoveItemDisabled?: (item: T) => RemoveItemDisabledResult = undefined;\n\n _providedColumns: EditableColumn<T>[] = [];\n\n constructor(params: EditableTableStateParams<T, F>) {\n this.toolbar =\n params.toolbar ??\n new ToolbarCollectionState({\n collection: params.collection,\n container: params.container,\n componentType: 'EditableTable',\n });\n\n this.tableState = new TableStateWithDraftRows(\n {\n collection: params.collection,\n container: params.container,\n toolbar: this.toolbar,\n },\n (keyedItems) => this.mutation._mergeDraftRows(keyedItems),\n );\n\n this.cellValue = new CellValueState<T, F>(\n this,\n new Map(params.extraCellTypes?.map((ct) => [ct.type, ct])),\n );\n\n this.cellInteraction = new CellInteractionState<T, F>(\n (editingValue, cell) => {\n this.cellValue.commitHandler(editingValue, cell);\n },\n this,\n );\n this.clipboard = new ClipboardState<T, F>(this);\n this.mutation = new MutationState<T, F>(\n this,\n params.mutations,\n params.createOptimisticActions,\n );\n makeObservable(this, {\n addItemDisabled: observable,\n updateItemDisabled: observable,\n removeItemDisabled: observable,\n multiDeleteDisabled: observable,\n isRemoveItemDisabled: observable.ref,\n setPermissions: action,\n _providedColumns: observable.ref,\n editableColumns: computed,\n sourceColumns: computed,\n allColumns: computed,\n _columnMap: computed,\n init: action,\n confirmDeleteItems: action,\n });\n\n this.setPermissions(params.permissions ?? {});\n }\n\n setPermissions(permissions: EditableTablePermissions<T>) {\n this.addItemDisabled = permissions.addItemDisabled ?? false;\n this.updateItemDisabled = permissions.updateItemDisabled ?? false;\n this.removeItemDisabled = permissions.removeItemDisabled ?? false;\n this.multiDeleteDisabled =\n permissions.multiDeleteDisabled ?? this.removeItemDisabled;\n this.isRemoveItemDisabled = permissions.isRemoveItemDisabled;\n }\n\n isRowDeleteDisabled(rowKey: string): boolean {\n if (this.removeItemDisabled) {\n return true;\n }\n if (!this.isRemoveItemDisabled) {\n return false;\n }\n const keyed = this._getKeyedItem(rowKey);\n return keyed ? this.isRemoveItemDisabled(keyed.item).disabled : false;\n }\n\n rowDeleteDisabledReason(rowKey: string): string | undefined {\n if (!this.isRemoveItemDisabled) {\n return undefined;\n }\n const keyed = this._getKeyedItem(rowKey);\n const result = keyed ? this.isRemoveItemDisabled(keyed.item) : undefined;\n return result?.disabled ? result.reason : undefined;\n }\n\n isMultiDeleteDisabled(rowKeys: string[]): boolean {\n if (this.multiDeleteDisabled) {\n return true;\n }\n return rowKeys.some((key) => this.isRowDeleteDisabled(key));\n }\n\n get collection() {\n return this.tableState.collection;\n }\n\n get keyedItems() {\n return this.tableState.keyedItems;\n }\n\n get visibleColumns() {\n return this.tableState.visibleColumns;\n }\n\n get itemsToRenderCount() {\n return this.tableState.itemsToRenderCount;\n }\n\n /** Editable columns built from the wired fields source, once it loads. */\n get sourceColumns(): EditableColumn<T>[] {\n const source = this.toolbar.collectionFieldsSource;\n if (!source || !source.initTask.status.isSuccess) {\n return [];\n }\n return buildEditableFieldColumns(\n source.fieldsSource,\n this.collection.translate,\n source.editableCellFor,\n ) as EditableColumn<T>[];\n }\n\n /**\n * Consumer columns plus the columns built from the fields source, merged the\n * same way the toolbar merges its columns (ToolbarCollectionState.columns).\n * Consumer and source columns are expected to be disjoint by id.\n */\n get allColumns(): EditableColumn<T>[] {\n return [...this._providedColumns, ...this.sourceColumns];\n }\n\n get _columnMap(): Map<string, EditableColumn<T>> {\n return new Map(this.allColumns.map((c) => [c.id, c]));\n }\n\n _getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n // Draft rows are not in the collection — fall back to the merged list.\n return (\n this.collection.getKeyedItem(key) ??\n this.keyedItems.find((ki) => ki.key === key)\n );\n }\n\n _toIndices(pos: Cell): { row: number; col: number } | null {\n const row = this.keyedItems.findIndex((ki) => ki.key === pos.rowKey);\n const col = this.editableColumns.findIndex((c) => c.id === pos.columnId);\n return row === -1 || col === -1 ? null : { row, col };\n }\n\n _toPosition(row: number, col: number): Cell | null {\n const ki = this.keyedItems[row];\n const c = this.editableColumns[col];\n return ki && c ? { rowKey: ki.key, columnId: c.id } : null;\n }\n\n onAddItemActionComplete = (items: T[]) => {\n return this.tableState.onAddItemActionComplete(items);\n };\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n get editableColumns(): EditableColumn<T>[] {\n const visibleIds = this.visibleColumns.map((c) => c.id);\n if (!visibleIds.length) {\n return this.allColumns;\n }\n return visibleIds\n .map((id) => this.allColumns.find((c) => c.id === id))\n .filter((c): c is EditableColumn<T> => c !== undefined);\n }\n\n init(columns: EditableColumn<T>[]) {\n this._providedColumns = columns;\n const disposeMutation = this.mutation.init();\n\n const { onBeforeUnload } = this.toolbar.container;\n const onBeforeUnloadSubscription = onBeforeUnload?.((event) => {\n if (this.cellValue._pendingCells.size === 0) {\n return;\n }\n event.preventDefault();\n });\n\n return () => {\n this.cellValue.flushDrafts();\n disposeMutation();\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n addItem(afterItemKey?: string): string {\n return this.mutation.addItem(afterItemKey);\n }\n\n duplicateItem(rowKey: string) {\n this.mutation.duplicateItem(rowKey);\n }\n\n deleteItems(rowKeys: string[]) {\n this.mutation.deleteItems(rowKeys);\n }\n\n confirmDeleteItems(rowKeys: string[]) {\n // The context menu disables blocked deletes; this filter is the barrier\n // for callers that bypass the UI gate.\n const deletableRowKeys = rowKeys.filter(\n (key) => !this.isRowDeleteDisabled(key),\n );\n if (!deletableRowKeys.length) {\n return;\n }\n const { translate: t } = this.collection;\n this.deleteConfirmModal.open({\n theme: 'destructive',\n title: t('cairo.deleteModal.title'),\n content: t('cairo.deleteModal.body'),\n primaryButtonText: t('cairo.delete.button'),\n secondaryButtonText: t('cairo.cancel.button'),\n primaryButtonOnClick: () => {\n this.deleteItems(deletableRowKeys);\n },\n });\n }\n\n resolveCellTypeByColumnId(columnId: string) {\n return this.cellValue.resolveCellTypeByColumnId(columnId);\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n return this.cellValue.getCellDisplayValue(rowKey, columnId);\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const committed = this.cellValue.getCellValidation(rowKey, columnId);\n\n if (\n committed.valid ||\n !this.cellInteraction.isCellEditing(rowKey, columnId) ||\n this.cellInteraction.editingValue === undefined\n ) {\n return committed;\n }\n return this.cellValue.validateEditingValue(\n columnId,\n this.cellInteraction.editingValue,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isCellEditable(rowKey, columnId);\n }\n\n isColumnEditable(rowKey: string, columnId: string): boolean {\n return this.cellValue.isColumnEditable(rowKey, columnId);\n }\n\n clearCells(cells: Cell[]) {\n this.cellValue.clearCells(cells);\n }\n\n handleCellClick(rowKey: string, columnId: string, shiftKey: boolean) {\n if (this.cellInteraction.isEditing) {\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\n // Click landed inside the active editor — let the editor handle it.\n return;\n }\n // Shift-click while editing: ignore — extending a range selection during\n // an active edit is not a meaningful action.\n if (shiftKey) {\n return;\n }\n // Plain click on a different cell: commit the edit and move focus.\n this.cellInteraction.commitEdit();\n\n // If the target cell wants edit-on-click, enter edit directly.\n const col = this._columnMap.get(columnId);\n const res = col ? this.resolveCellTypeByColumnId(col.id) : null;\n if (res?.editOnClick) {\n const val = this.getCellDisplayValue(rowKey, columnId);\n if (res.editOnClick(val) && this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n // Toggle/showEditWhenFocused cells: click focuses the cell and shows the\n // EditComponent affordance. Keyboard navigation remains active.\n this.cellInteraction.focusCell(rowKey, columnId);\n return;\n }\n\n if (resolved?.editOnClick) {\n const value = this.getCellDisplayValue(rowKey, columnId);\n if (\n resolved.editOnClick(value) &&\n this.isCellEditable(rowKey, columnId)\n ) {\n this.cellInteraction.focusCell(rowKey, columnId);\n this.cellInteraction.startEdit(rowKey, columnId, 'click');\n return;\n }\n }\n\n if (shiftKey && this.cellInteraction.selectionAnchor) {\n this.cellInteraction.selectRange(this.cellInteraction.selectionAnchor, {\n rowKey,\n columnId,\n });\n } else {\n this.cellInteraction.focusCell(rowKey, columnId);\n }\n }\n\n handleCellDoubleClick(rowKey: string, columnId: string) {\n if (this.updateItemDisabled) {\n return;\n }\n const column = this._columnMap.get(columnId);\n const resolved = column ? this.resolveCellTypeByColumnId(column.id) : null;\n // Toggle-value cells (e.g. boolean) activate on single click, not double-click.\n // Entering edit mode on double-click would apply the editing box-shadow\n // without any EditComponent being shown, causing a visual border glitch.\n if (resolved?.toggleValue || resolved?.showEditWhenFocused) {\n return;\n }\n if (this.isCellEditable(rowKey, columnId)) {\n this.cellInteraction.startEdit(rowKey, columnId, 'doubleClick');\n }\n }\n\n sort = (\n columnId: string,\n {\n forceDirection,\n multiple,\n }: { forceDirection?: SortOrder; multiple?: boolean } = {},\n ) => {\n this.collection.sort(\n { id: columnId },\n { forceDirection, clearResult: true, multiple },\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","onClick","text","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updateItems","updatedItems","changedFieldIdsByItem","contexts","_updateContexts","updateMany","keepPosition","_submitUpdate","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","result","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, { item: T; afterItemKey?: string }>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.createItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.duplicateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.deleteItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n updateItems(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ) {\n const t = this._parent.collection.translate;\n if (updatedItems.length === 0) {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: (items) => this._submitUpdate(items, updatedItems, contexts),\n successToast: t('cairo.editableTable.updateItem.success.toast', {\n count: updatedItems.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.updateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","MutationState","constructor","parent","handlers","createOptimisticActions","_defineProperty2","default","Map","Set","items","createdItems","_handlers","submitCreate","itemKey","_parent","collection","runInAction","forEach","createdItem","index","submittedItem","oldKey","newKey","_pendingCreateKeys","delete","rowKey","draft","_drafts","afterItemKey","set","cellInteraction","replaceRowKey","_optimisticActions","makeObservable","observable","shallow","addItem","action","commitNewRow","deleteItems","init","_mergeDraftRows","keyedItems","size","draftBelow","key","item","merged","pushDraftsBelow","anchorKey","get","push","id","length","pageIndex","indexWithinPage","undefined","keyedItem","keys","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_submitCreate","successToast","errorToast","_err","retry","message","onClick","text","duplicateItem","find","ki","sourceItem","newId","sourceId","duplicate","k","Object","String","rowKeys","deleted","_survivingAnchorAbove","serverRowKeys","cellValue","dropRowCellState","map","_this$_parent$keyedIt","filter","deleteMany","submitDelete","count","updateItems","updatedItems","changedFieldIdsByItem","contexts","_updateContexts","updateMany","keepPosition","_submitUpdate","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","result","changedFieldIds","changedFieldIdsFromItems","start","findIndex","i","_isPatchCreatedRow","state","patches","some","patch","actionType","patchedItems","exports","updatedItem","isRecord","Array","from","fieldId","is","value"],"sources":["../../../../src/state/EditableTable/MutationState.ts"],"sourcesContent":["import { action, makeObservable, observable, runInAction } from 'mobx';\nimport type {\n CollectionOptimisticActions,\n CollectionUpdateContext,\n CollectionState,\n FiltersMap,\n KeyedItem,\n} from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\n\nexport interface EditableTableMutationHandlers<T> {\n /** Factory to create a new empty item with a fresh ID */\n createItem: () => T;\n /** Submit updated items to the server */\n submitUpdate: (\n items: T[],\n contexts?: CollectionUpdateContext<T>[],\n ) => Promise<T[] | void>;\n /** Submit newly created items to the server */\n submitCreate: (items: T[]) => Promise<T[] | void>;\n /** Submit item deletions to the server */\n submitDelete: (items: T[]) => Promise<void>;\n}\n\nexport class MutationState<T, F extends FiltersMap> {\n private readonly _handlers: EditableTableMutationHandlers<T>;\n private readonly _optimisticActions: CollectionOptimisticActions<T, F>;\n private readonly _parent: EditableTableState<T, F>;\n\n /**\n * Rows added locally and not yet created on the server, by row key.\n * `afterItemKey` is the key of the row directly above the draft\n * (undefined = top of the list). `addItem` keeps this exact, so at most\n * one draft is anchored on any given row.\n */\n readonly _drafts = new Map<string, { item: T; afterItemKey?: string }>();\n\n /**\n * Row keys of creates still in flight. Their rows are already in the\n * collection result (optimistic patch), but their keys change when the\n * server responds, so nothing may anchor on them.\n */\n private readonly _pendingCreateKeys = new Set<string>();\n\n constructor(\n parent: EditableTableState<T, F>,\n handlers: EditableTableMutationHandlers<T>,\n createOptimisticActions: (\n collection: CollectionState<T, F>,\n ) => CollectionOptimisticActions<T, F>,\n ) {\n this._parent = parent;\n this._handlers = handlers;\n this._optimisticActions = createOptimisticActions(parent.collection);\n makeObservable(this, {\n _drafts: observable.shallow,\n addItem: action,\n commitNewRow: action,\n deleteItems: action,\n });\n }\n\n init() {\n return this._optimisticActions.init();\n }\n\n /**\n * Merge draft rows into the collection's keyed items for rendering.\n * Every draft renders directly below the row it is anchored on, so a\n * draft anchored on another draft follows it down the list. Drafts whose\n * anchor left the list (filtered out, deleted) stay visible at the end.\n */\n _mergeDraftRows(keyedItems: KeyedItem<T>[]): KeyedItem<T>[] {\n if (this._drafts.size === 0) {\n return keyedItems;\n }\n\n const draftBelow = new Map<string | undefined, { key: string; item: T }>();\n for (const [rowKey, draft] of this._drafts) {\n draftBelow.set(draft.afterItemKey, { key: rowKey, item: draft.item });\n }\n\n const merged: KeyedItem<T>[] = [];\n const pushDraftsBelow = (rowKey: string | undefined) => {\n let anchorKey = rowKey;\n let draft = draftBelow.get(anchorKey);\n while (draft) {\n draftBelow.delete(anchorKey);\n merged.push({\n item: draft.item,\n key: draft.key,\n id: draft.key,\n index: merged.length,\n pageIndex: -1,\n indexWithinPage: -1,\n });\n anchorKey = draft.key;\n draft = draftBelow.get(anchorKey);\n }\n };\n\n pushDraftsBelow(undefined);\n for (const keyedItem of keyedItems) {\n merged.push(keyedItem);\n pushDraftsBelow(keyedItem.key);\n }\n for (const anchorKey of [...draftBelow.keys()]) {\n pushDraftsBelow(anchorKey);\n }\n return merged;\n }\n\n addItem(afterItemKey?: string): string {\n const newItem = this._handlers.createItem();\n const rowKey = this._parent.collection.itemKey(newItem);\n // The new row lands directly below its anchor, pushing down whichever\n // draft sat there — that draft is now anchored on the new row.\n for (const [key, draft] of this._drafts) {\n if (draft.afterItemKey === afterItemKey) {\n this._drafts.set(key, { ...draft, afterItemKey: rowKey });\n }\n }\n this._drafts.set(rowKey, { item: newItem, afterItemKey });\n return rowKey;\n }\n\n isLocalNewRow(rowKey: string): boolean {\n return this._drafts.has(rowKey);\n }\n\n /** Create a local new row on the server, with its edited values merged in. */\n commitNewRow(rowKey: string, item: T) {\n const t = this._parent.collection.translate;\n const draft = this._drafts.get(rowKey);\n if (!draft) {\n return;\n }\n\n // The create's optimistic patch can only anchor on a real server row —\n // not a draft, not another row created through this table's patches.\n const afterItemKey = this._serverAnchorFor(rowKey);\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._submitCreate,\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.createItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n duplicateItem(rowKey: string) {\n const t = this._parent.collection.translate;\n const keyedItem = this._parent.keyedItems.find((ki) => ki.key === rowKey);\n if (!keyedItem) {\n return;\n }\n\n const sourceItem = keyedItem.item;\n const newItem = this._handlers.createItem();\n const { itemKey } = this._parent.collection;\n const newId = itemKey(newItem);\n const sourceId = itemKey(sourceItem);\n const duplicate = { ...sourceItem } as any;\n for (const k of Object.keys(duplicate)) {\n if (String(duplicate[k]) === sourceId) {\n duplicate[k] = newId;\n break;\n }\n }\n this._pendingCreateKeys.add(newId);\n this._optimisticActions.createOne(duplicate as T, {\n submit: this._submitCreate,\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.duplicateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n deleteItems(rowKeys: string[]) {\n const t = this._parent.collection.translate;\n const deleted = new Set(rowKeys);\n\n // Surviving drafts anchored on a deleted row move up to the nearest\n // surviving row, so they don't fall to the end of the list.\n for (const [rowKey, draft] of this._drafts) {\n if (\n deleted.has(rowKey) ||\n draft.afterItemKey == null ||\n !deleted.has(draft.afterItemKey)\n ) {\n continue;\n }\n this._drafts.set(rowKey, {\n ...draft,\n afterItemKey: this._survivingAnchorAbove(draft.afterItemKey, deleted),\n });\n }\n\n const serverRowKeys: string[] = [];\n for (const rowKey of rowKeys) {\n if (this._drafts.has(rowKey)) {\n // Never created on the server — dropping the draft is the whole\n // delete.\n this._drafts.delete(rowKey);\n this._parent.cellValue.dropRowCellState(rowKey);\n } else {\n serverRowKeys.push(rowKey);\n }\n }\n\n const items = serverRowKeys\n .map((key) => this._parent.keyedItems.find((ki) => ki.key === key)?.item)\n .filter((item): item is T => item != null);\n if (items.length === 0) {\n return;\n }\n\n this._optimisticActions.deleteMany(items, {\n submit: this._handlers.submitDelete,\n successToast: t('cairo.editableTable.deleteItem.success.toast', {\n count: items.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.deleteItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n updateItems(updatedItems: T[], changedFieldIdsByItem?: string[][]) {\n const t = this._parent.collection.translate;\n if (updatedItems.length === 0) {\n return;\n }\n const contexts = this._updateContexts(updatedItems, changedFieldIdsByItem);\n this._optimisticActions.updateMany(updatedItems, {\n keepPosition: true,\n submit: (items) => this._submitUpdate(items, updatedItems, contexts),\n successToast: t('cairo.editableTable.updateItem.success.toast', {\n count: updatedItems.length,\n }),\n errorToast: (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t('cairo.editableTable.updateItem.error.toast'),\n action: {\n onClick: retry,\n text: t('cairo.editableTable.retry.toast.CTA'),\n },\n }),\n });\n }\n\n private _submitUpdate(\n items: T[],\n updatedItems: T[],\n contexts: CollectionUpdateContext<T>[],\n ) {\n const sameItems =\n items.length === updatedItems.length &&\n items.every((item, index) => item === updatedItems[index]);\n\n return this._handlers.submitUpdate(items, sameItems ? contexts : undefined);\n }\n\n private _updateContexts(\n updatedItems: T[],\n changedFieldIdsByItem?: string[][],\n ): CollectionUpdateContext<T>[] {\n return updatedItems.map((item, index) => {\n const key = this._parent.collection.itemKey(item);\n const previousItem =\n this._parent.collection.result.get(key)?.item ?? item;\n return {\n previousItem,\n changedFieldIds:\n changedFieldIdsByItem?.[index] ??\n changedFieldIdsFromItems(previousItem, item),\n };\n });\n }\n\n /**\n * Nearest row above `rowKey` that a create can anchor on: a server row\n * that is not a draft and not itself a created row still living as an\n * optimistic patch. Anchoring one create on another strands the new row\n * at the top of the table — the core merge repositions created patches\n * newest-first, so the anchor moves away after the new row is placed.\n */\n private _serverAnchorFor(rowKey: string): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === rowKey);\n for (let i = start - 1; i >= 0; i--) {\n const key = keyedItems[i].key;\n if (\n !this._drafts.has(key) &&\n !this._pendingCreateKeys.has(key) &&\n !this._isPatchCreatedRow(key)\n ) {\n return key;\n }\n }\n return undefined;\n }\n\n private _isPatchCreatedRow(key: string): boolean {\n return this._optimisticActions.state.patches.some(\n (patch) =>\n patch.actionType === 'createMany' && patch.patchedItems.has(key),\n );\n }\n\n private _survivingAnchorAbove(\n key: string,\n deleted: Set<string>,\n ): string | undefined {\n const keyedItems = this._parent.keyedItems;\n const start = keyedItems.findIndex((ki) => ki.key === key);\n for (let i = start - 1; i >= 0; i--) {\n const k = keyedItems[i].key;\n if (!deleted.has(k)) {\n return k;\n }\n }\n return undefined;\n }\n\n private readonly _submitCreate = async (items: T[]) => {\n const createdItems = await this._handlers.submitCreate(items);\n if (!createdItems) {\n return createdItems;\n }\n\n const { itemKey } = this._parent.collection;\n runInAction(() => {\n createdItems.forEach((createdItem, index) => {\n const submittedItem = items[index];\n if (!submittedItem) {\n return;\n }\n\n const oldKey = itemKey(submittedItem);\n const newKey = itemKey(createdItem);\n this._pendingCreateKeys.delete(oldKey);\n // The server assigned the row a new key — drafts anchored on the\n // old key must follow the row under its new key.\n for (const [rowKey, draft] of this._drafts) {\n if (draft.afterItemKey === oldKey) {\n this._drafts.set(rowKey, { ...draft, afterItemKey: newKey });\n }\n }\n this._parent.cellInteraction.replaceRowKey(oldKey, newKey);\n });\n });\n\n return createdItems;\n };\n}\n\nconst changedFieldIdsFromItems = <T>(\n previousItem: T,\n updatedItem: T,\n): string[] => {\n if (!isRecord(previousItem) || !isRecord(updatedItem)) {\n return [];\n }\n\n return Array.from(\n new Set([...Object.keys(previousItem), ...Object.keys(updatedItem)]),\n ).filter(\n (fieldId) => !Object.is(previousItem[fieldId], updatedItem[fieldId]),\n );\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
|
|
|
5
5
|
var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
|
|
6
6
|
// @ts-nocheck
|
|
7
7
|
|
|
8
|
-
var _namespace_ = "
|
|
8
|
+
var _namespace_ = "FormPageHeader3740981318";
|
|
9
9
|
var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
|
|
10
10
|
var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
|
|
11
11
|
var style = exports.style = _style_;
|
|
12
12
|
var st = exports.st = _style_;
|
|
13
13
|
var namespace = exports.namespace = _namespace_;
|
|
14
14
|
var classes = exports.classes = {
|
|
15
|
-
"root": "
|
|
15
|
+
"root": "FormPageHeader3740981318__root"
|
|
16
16
|
};
|
|
17
17
|
var keyframes = exports.keyframes = {};
|
|
18
18
|
var layers = exports.layers = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"
|
|
1
|
+
{"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader3740981318\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader3740981318__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
|