@wix/patterns 1.480.0 → 1.482.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/CmsFieldModalBiReporter.js +50 -0
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModalBiReporter.js.map +1 -0
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModalState.js +43 -3
- package/dist/cjs/components/CmsFieldManagement/CmsFieldModalState.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/CmsFormState.js +8 -0
- package/dist/cjs/components/CmsFieldManagement/CmsFormState.js.map +1 -1
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
- package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
- package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
- package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
- package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
- package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
- package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.uni.driver.js +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTable.uni.driver.js.map +1 -1
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.js +10 -8
- package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.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/CollectionToolbarFilters/CollectionToolbarFiltersState.js +19 -13
- package/dist/cjs/components/CollectionToolbarFilters/CollectionToolbarFiltersState.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/CustomColumnsPanel/CustomColumnsPanel.js +1 -1
- package/dist/cjs/components/CustomColumnsPanel/CustomColumnsPanel.js.map +1 -1
- package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
- package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js.map +1 -1
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.js +60 -10
- package/dist/cjs/components/EditableTable/EditableCell.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
- package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableCell.uni.driver.js +3 -0
- package/dist/cjs/components/EditableTable/EditableCell.uni.driver.js.map +1 -1
- package/dist/cjs/components/EditableTable/EditableTableContextMenu.js +4 -4
- package/dist/cjs/components/EditableTable/EditableTableContextMenu.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/HeaderFieldActions.js +6 -7
- package/dist/cjs/components/EditableTable/HeaderFieldActions.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.js +24 -4
- package/dist/cjs/components/EditableTable/cellTypes/address/Edit.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.js +10 -15
- package/dist/cjs/components/EditableTable/cellTypes/array/Edit.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.js +9 -3
- package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.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.js +38 -4
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.js.map +1 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css +0 -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/Edit.uni.driver.js +3 -1
- package/dist/cjs/components/EditableTable/cellTypes/date/Edit.uni.driver.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.js +42 -26
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.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/Edit.uni.driver.js +5 -3
- package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.uni.driver.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.js +10 -16
- package/dist/cjs/components/EditableTable/cellTypes/object/Edit.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/reference/Edit.js +22 -6
- package/dist/cjs/components/EditableTable/cellTypes/reference/Edit.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.js +9 -6
- package/dist/cjs/components/EditableTable/cellTypes/text/Edit.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.js +8 -5
- package/dist/cjs/components/EditableTable/cellTypes/time/Edit.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/EditableTable/cellTypes/useCommitOnEnter.js +19 -0
- package/dist/cjs/components/EditableTable/cellTypes/useCommitOnEnter.js.map +1 -0
- package/dist/cjs/components/EditableTable/cellTypes/useMultilineEditKeyboard.js +36 -0
- package/dist/cjs/components/EditableTable/cellTypes/useMultilineEditKeyboard.js.map +1 -0
- package/dist/cjs/components/EditableTable/useCellFocusAndEditing.js +13 -13
- package/dist/cjs/components/EditableTable/useCellFocusAndEditing.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/FieldActions/FieldActions.js +14 -9
- package/dist/cjs/components/FieldActions/FieldActions.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/MoreActions/MoreActions.uni.driver.js +4 -2
- package/dist/cjs/components/MoreActions/MoreActions.uni.driver.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/SchemaCard/SchemaCard.js +1 -1
- package/dist/cjs/components/SchemaCard/SchemaCard.js.map +1 -1
- package/dist/cjs/components/SchemaSource/schemaFieldActions.js +2 -1
- package/dist/cjs/components/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/cjs/components/SchemaSource/schemaFieldDisable.js +7 -5
- package/dist/cjs/components/SchemaSource/schemaFieldDisable.js.map +1 -1
- package/dist/cjs/components/SchemaSource/tableSchemaSource.js +3 -0
- package/dist/cjs/components/SchemaSource/tableSchemaSource.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/SearchableCollectionContent/SearchableCollectionContent.uni.driver.js +5 -5
- package/dist/cjs/components/SearchableCollectionContent/SearchableCollectionContent.uni.driver.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.js +1 -1
- package/dist/cjs/components/Table/AddFieldColumnHeader.js.map +1 -1
- package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
- package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
- package/dist/cjs/components/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/TagsWidget/TagsWidgetContent.js +3 -2
- package/dist/cjs/components/TagsWidget/TagsWidgetContent.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/providers/SchemaContext.js.map +1 -1
- package/dist/cjs/providers/SchemaProvider.js +6 -5
- package/dist/cjs/providers/SchemaProvider.js.map +1 -1
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
- package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
- package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/cjs/state/EditableTable/CellValueState.js +11 -2
- package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/cjs/state/EditableTable/EditableTableState.js +11 -3
- package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/cjs/state/EditableTable/EditableTableStateBIReporter.js +3 -3
- package/dist/cjs/state/EditableTable/EditableTableStateBIReporter.js.map +1 -1
- package/dist/cjs/state/EditableTable/MutationState.js +59 -40
- 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/state/TableState.js +11 -0
- package/dist/cjs/state/TableState.js.map +1 -1
- package/dist/cjs/styles.global.css +2 -2
- package/dist/cjs/utils/fieldTypePrefixIcons.js +25 -9
- package/dist/cjs/utils/fieldTypePrefixIcons.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/docs/CMS Collection and Entity Template.md +2 -0
- package/dist/docs/Collection and Entity Template.md +2 -0
- package/dist/docs/Collection and Read-Only Detail Template.md +1 -1
- package/dist/docs/CollectionPage.Content.md +9 -0
- package/dist/docs/Page Templates.md +10 -4
- package/dist/docs/PickerContent.md +20 -20
- package/dist/docs/TableGridSwitchFolders.md +7 -5
- package/dist/docs/index.json +12 -12
- package/dist/docs/useEntityPage.md +86 -0
- package/dist/docs/usePatternsNavigate.md +5 -0
- package/dist/docs/useSchemaSource.md +1 -1
- package/dist/dts-bundle/index.json +40 -40
- package/dist/dts-bundle/index.txt +11 -11
- package/dist/dts-bundle/types/SchemaSource.d.ts +5 -4
- package/dist/dts-bundle/types/SchemaSourceInput.d.ts +8 -4
- package/dist/dts-bundle/types/TableState.d.ts +1 -0
- package/dist/dts-bundle/types/UseCmsSchemaSourceDeps.d.ts +2 -2
- package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
- package/dist/esm/components/CardContainer/CardContainer.st.css.js.map +1 -1
- 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/CmsFieldModalBiReporter.js +38 -0
- package/dist/esm/components/CmsFieldManagement/CmsFieldModalBiReporter.js.map +1 -0
- package/dist/esm/components/CmsFieldManagement/CmsFieldModalState.js +36 -3
- package/dist/esm/components/CmsFieldManagement/CmsFieldModalState.js.map +1 -1
- package/dist/esm/components/CmsFieldManagement/CmsFormState.js +6 -0
- package/dist/esm/components/CmsFieldManagement/CmsFormState.js.map +1 -1
- package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
- package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
- 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/CollectionTable.uni.driver.js +1 -1
- package/dist/esm/components/CollectionTable/CollectionTable.uni.driver.js.map +1 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.js +2 -1
- package/dist/esm/components/CollectionTable/CollectionTableWSRTable.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/CollectionToolbar.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
- package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
- package/dist/esm/components/CollectionToolbarFilters/CollectionToolbarFiltersState.js +19 -11
- package/dist/esm/components/CollectionToolbarFilters/CollectionToolbarFiltersState.js.map +1 -1
- 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/CustomColumnsPanel/CustomColumnsPanel.js +1 -1
- package/dist/esm/components/CustomColumnsPanel/CustomColumnsPanel.js.map +1 -1
- package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
- package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
- package/dist/esm/components/DragHandle/DragHandle.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableCell.js +52 -5
- package/dist/esm/components/EditableTable/EditableCell.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
- package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableCell.uni.driver.js +3 -0
- package/dist/esm/components/EditableTable/EditableCell.uni.driver.js.map +1 -1
- package/dist/esm/components/EditableTable/EditableTableContextMenu.js +2 -2
- package/dist/esm/components/EditableTable/EditableTableContextMenu.js.map +1 -1
- package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
- package/dist/esm/components/EditableTable/HeaderFieldActions.js +6 -6
- package/dist/esm/components/EditableTable/HeaderFieldActions.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.js +18 -2
- package/dist/esm/components/EditableTable/cellTypes/address/Edit.js.map +1 -1
- 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.js +5 -13
- package/dist/esm/components/EditableTable/cellTypes/array/Edit.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.js +6 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.js +35 -4
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css +0 -1
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.uni.driver.js +2 -0
- package/dist/esm/components/EditableTable/cellTypes/date/Edit.uni.driver.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.js +33 -18
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js +3 -1
- package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.uni.driver.js.map +1 -1
- 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/email/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.js +5 -14
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/object/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/reference/Edit.js +6 -1
- package/dist/esm/components/EditableTable/cellTypes/reference/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.js +3 -1
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.js +3 -1
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
- package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
- package/dist/esm/components/EditableTable/cellTypes/useCommitOnEnter.js +15 -0
- package/dist/esm/components/EditableTable/cellTypes/useCommitOnEnter.js.map +1 -0
- package/dist/esm/components/EditableTable/cellTypes/useMultilineEditKeyboard.js +27 -0
- package/dist/esm/components/EditableTable/cellTypes/useMultilineEditKeyboard.js.map +1 -0
- package/dist/esm/components/EditableTable/useCellFocusAndEditing.js +14 -14
- package/dist/esm/components/EditableTable/useCellFocusAndEditing.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/FieldActions/FieldActions.js +5 -0
- package/dist/esm/components/FieldActions/FieldActions.js.map +1 -1
- package/dist/esm/components/Heading/Heading.st.css.js +2 -2
- package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
- package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
- package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
- package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
- package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
- package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
- package/dist/esm/components/MoreActions/MoreActions.uni.driver.js +5 -3
- package/dist/esm/components/MoreActions/MoreActions.uni.driver.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/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
- package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
- package/dist/esm/components/SchemaCard/SchemaCard.js +1 -1
- package/dist/esm/components/SchemaCard/SchemaCard.js.map +1 -1
- package/dist/esm/components/SchemaSource/schemaFieldActions.js +3 -0
- package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
- package/dist/esm/components/SchemaSource/schemaFieldDisable.js +9 -5
- package/dist/esm/components/SchemaSource/schemaFieldDisable.js.map +1 -1
- package/dist/esm/components/SchemaSource/tableSchemaSource.js +3 -0
- package/dist/esm/components/SchemaSource/tableSchemaSource.js.map +1 -1
- package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
- package/dist/esm/components/SearchableCollectionContent/SearchableCollectionContent.uni.driver.js +5 -5
- package/dist/esm/components/SearchableCollectionContent/SearchableCollectionContent.uni.driver.js.map +1 -1
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
- package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
- package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
- package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
- package/dist/esm/components/Table/AddFieldColumnHeader.js +1 -1
- package/dist/esm/components/Table/AddFieldColumnHeader.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/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
- package/dist/esm/components/TagsWidget/TagsWidgetContent.js +1 -1
- package/dist/esm/components/TagsWidget/TagsWidgetContent.js.map +1 -1
- 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/providers/SchemaContext.js.map +1 -1
- package/dist/esm/providers/SchemaProvider.js +4 -3
- package/dist/esm/providers/SchemaProvider.js.map +1 -1
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
- package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
- package/dist/esm/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
- package/dist/esm/state/EditableTable/CellValueState.js +10 -2
- package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
- package/dist/esm/state/EditableTable/EditableTableState.js +7 -2
- package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
- package/dist/esm/state/EditableTable/EditableTableStateBIReporter.js +3 -3
- package/dist/esm/state/EditableTable/EditableTableStateBIReporter.js.map +1 -1
- package/dist/esm/state/EditableTable/MutationState.js +48 -31
- package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
- package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
- package/dist/esm/state/TableState.js +10 -0
- package/dist/esm/state/TableState.js.map +1 -1
- package/dist/esm/styles.global.css +2 -2
- package/dist/esm/utils/fieldTypePrefixIcons.js +6 -2
- package/dist/esm/utils/fieldTypePrefixIcons.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/templates/cms-collection-entity/ItemEntityPage.tsx +11 -6
- package/dist/types/components/ActionCell/useActionCellColumn.d.ts +1 -1
- package/dist/types/components/ActionCell/useActionCellColumnBase.d.ts +1 -1
- package/dist/types/components/AppliedFiltersTagList/AppliedFiltersTagListState.d.ts +1 -0
- package/dist/types/components/AppliedFiltersTagList/AppliedFiltersTagListState.d.ts.map +1 -1
- package/dist/types/components/CardContainer/CardContainer.st.css.d.ts.map +1 -1
- package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
- package/dist/types/components/CmsFieldManagement/CmsFieldModalBiReporter.d.ts +25 -0
- package/dist/types/components/CmsFieldManagement/CmsFieldModalBiReporter.d.ts.map +1 -0
- package/dist/types/components/CmsFieldManagement/CmsFieldModalState.d.ts +9 -3
- package/dist/types/components/CmsFieldManagement/CmsFieldModalState.d.ts.map +1 -1
- package/dist/types/components/CmsFieldManagement/CmsFormState.d.ts +3 -0
- package/dist/types/components/CmsFieldManagement/CmsFormState.d.ts.map +1 -1
- package/dist/types/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.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/CollectionTable/CollectionTable.uni.driver.d.ts.map +1 -1
- package/dist/types/components/CollectionTable/CollectionTableWSRTable.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/PrimaryActionButton.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/CollectionToolbarFilters/CollectionToolbarFiltersState.d.ts +3 -0
- package/dist/types/components/CollectionToolbarFilters/CollectionToolbarFiltersState.d.ts.map +1 -1
- package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.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/EditableCell.d.ts.map +1 -1
- package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/EditableCell.uni.driver.d.ts +20 -5
- package/dist/types/components/EditableTable/EditableCell.uni.driver.d.ts.map +1 -1
- package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts +32 -0
- package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts.map +1 -1
- package/dist/types/components/EditableTable/EditableTableContextMenu.d.ts.map +1 -1
- package/dist/types/components/EditableTable/HeaderFieldActions.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/address/Edit.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/array/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/boolean/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/date/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/date/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/date/Edit.uni.driver.d.ts +2 -0
- package/dist/types/components/EditableTable/cellTypes/date/Edit.uni.driver.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.uni.driver.d.ts +2 -1
- package/dist/types/components/EditableTable/cellTypes/datetime/Edit.uni.driver.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/email/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/object/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/reference/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/text/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/text/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/time/Edit.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
- package/dist/types/components/EditableTable/cellTypes/useCommitOnEnter.d.ts +9 -0
- package/dist/types/components/EditableTable/cellTypes/useCommitOnEnter.d.ts.map +1 -0
- package/dist/types/components/EditableTable/cellTypes/useMultilineEditKeyboard.d.ts +13 -0
- package/dist/types/components/EditableTable/cellTypes/useMultilineEditKeyboard.d.ts.map +1 -0
- package/dist/types/components/EditableTable/useCellFocusAndEditing.d.ts.map +1 -1
- package/dist/types/components/FieldActions/FieldActions.d.ts +1 -0
- package/dist/types/components/FieldActions/FieldActions.d.ts.map +1 -1
- package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
- package/dist/types/components/MoreActions/MoreActions.uni.driver.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/PickerTableListItem/PickerTableListItem.st.css.d.ts.map +1 -1
- package/dist/types/components/ResponsiveButton/ResponsiveButton.d.ts +1 -1
- package/dist/types/components/ResponsiveButton/ResponsiveButton.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/schemaFieldDisable.d.ts +5 -4
- package/dist/types/components/SchemaSource/schemaFieldDisable.d.ts.map +1 -1
- package/dist/types/components/SchemaSource/tableSchemaSource.d.ts.map +1 -1
- package/dist/types/components/SearchableCollectionContent/SearchableCollectionContent.uni.driver.d.ts.map +1 -1
- package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
- package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
- package/dist/types/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.d.ts.map +1 -1
- package/dist/types/components/TagsWidget/TagsWidgetContent.d.ts.map +1 -1
- package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
- package/dist/types/providers/SchemaContext.d.ts +3 -2
- package/dist/types/providers/SchemaContext.d.ts.map +1 -1
- package/dist/types/providers/SchemaProvider.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
- package/dist/types/state/CollectionPage/TitleBadges.st.css.d.ts.map +1 -1
- package/dist/types/state/EditableTable/CellValueState.d.ts +3 -0
- package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/EditableTableState.d.ts +2 -2
- package/dist/types/state/EditableTable/EditableTableState.d.ts.map +1 -1
- package/dist/types/state/EditableTable/EditableTableStateBIReporter.d.ts +3 -3
- package/dist/types/state/EditableTable/EditableTableStateBIReporter.d.ts.map +1 -1
- package/dist/types/state/EditableTable/MutationState.d.ts +13 -5
- package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
- package/dist/types/state/TableState.d.ts +1 -0
- package/dist/types/state/TableState.d.ts.map +1 -1
- package/dist/types/testkit/jsdom.d.ts +32 -0
- package/dist/types/testkit/jsdom.d.ts.map +1 -1
- package/dist/types/testkit/playwright.d.ts +32 -0
- package/dist/types/testkit/playwright.d.ts.map +1 -1
- package/dist/types/testkit/puppeteer.d.ts +32 -0
- package/dist/types/testkit/puppeteer.d.ts.map +1 -1
- package/dist/types/utils/fieldTypePrefixIcons.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +8 -8
- 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/CmsFieldModalBiReporter.ts +65 -0
- package/src/components/CmsFieldManagement/CmsFieldModalState.ts +45 -2
- package/src/components/CmsFieldManagement/CmsFormState.ts +9 -0
- package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
- package/src/components/Collapse/Collapse.st.css.ts +2 -2
- package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
- package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTable.uni.driver.ts +1 -3
- package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
- package/src/components/CollectionTable/CollectionTableWSRTable.tsx +2 -0
- package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
- package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
- package/src/components/CollectionToolbarFilters/CollectionToolbarFiltersState.ts +18 -5
- package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
- package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
- package/src/components/CustomColumnsPanel/CustomColumnsPanel.tsx +1 -1
- package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
- package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
- package/src/components/EditableTable/EditableCell.tsx +56 -8
- package/src/components/EditableTable/EditableCell.uni.driver.ts +4 -0
- package/src/components/EditableTable/EditableTableContextMenu.tsx +8 -2
- package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
- package/src/components/EditableTable/HeaderFieldActions.tsx +7 -6
- 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/address/Edit.tsx +21 -1
- package/src/components/EditableTable/cellTypes/array/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/array/Edit.tsx +5 -17
- package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/boolean/Edit.tsx +6 -0
- 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 +0 -1
- package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/date/Edit.tsx +57 -3
- package/src/components/EditableTable/cellTypes/date/Edit.uni.driver.ts +2 -0
- 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/Edit.tsx +38 -17
- package/src/components/EditableTable/cellTypes/datetime/Edit.uni.driver.ts +4 -1
- 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/Edit.tsx +5 -18
- package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/reference/Edit.tsx +26 -19
- 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/Edit.tsx +4 -0
- 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/time/Edit.tsx +4 -0
- package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
- package/src/components/EditableTable/cellTypes/useCommitOnEnter.ts +19 -0
- package/src/components/EditableTable/cellTypes/useMultilineEditKeyboard.ts +39 -0
- package/src/components/EditableTable/useCellFocusAndEditing.ts +16 -14
- 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/FieldActions/FieldActions.tsx +6 -0
- 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/MoreActions/MoreActions.uni.driver.ts +9 -3
- 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/SchemaCard/SchemaCard.tsx +1 -1
- package/src/components/SchemaSource/schemaFieldActions.ts +3 -0
- package/src/components/SchemaSource/schemaFieldDisable.ts +11 -6
- package/src/components/SchemaSource/tableSchemaSource.ts +3 -0
- package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
- package/src/components/SearchableCollectionContent/SearchableCollectionContent.uni.driver.ts +6 -5
- package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
- package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
- package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
- package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
- package/src/components/Table/AddFieldColumnHeader.tsx +1 -1
- 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/TagsWidget/TagsWidgetContent.tsx +1 -0
- 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/providers/SchemaContext.ts +3 -2
- package/src/providers/SchemaProvider.tsx +7 -2
- package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
- package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
- package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
- package/src/state/EditableTable/CellValueState.ts +12 -2
- package/src/state/EditableTable/EditableTableState.ts +10 -2
- package/src/state/EditableTable/EditableTableStateBIReporter.ts +5 -5
- package/src/state/EditableTable/MutationState.ts +84 -32
- package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
- package/src/state/TableState.ts +15 -0
- package/src/styles.global.css +2 -2
- package/src/utils/fieldTypePrefixIcons.tsx +20 -2
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_bexCore","_ToolbarCollectionState","_TableState","_CellInteractionState","_CellValueState","_ClipboardState","_MutationState","_EditableTableStateBIReporter","_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","bi","EditableTableStateBIReporter","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","isCreateItemDisabled","ref","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isAddItemDisabled","_this$isCreateItemDis","call","addItemDisabledReason","_this$isCreateItemDis2","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","cleared","clipboardAction","actionName","clipboardCellCounts","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 { ReactNode } from 'react';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type {\n CreateItemDisabledResult,\n KeyedItem,\n RemoveItemDisabledResult,\n} 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 {\n clipboardCellCounts,\n EditableTableStateBIReporter,\n type ClipboardOrigin,\n} from './EditableTableStateBIReporter';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type {\n CreateItemDisabledResult,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n isCreateItemDisabled?: () => CreateItemDisabledResult;\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 isAddItemDisabled(): boolean;\n addItemDisabledReason(): ReactNode | undefined;\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 bi: EditableTableStateBIReporter<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n isCreateItemDisabled?: () => CreateItemDisabledResult = undefined;\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.bi = new EditableTableStateBIReporter<T, F>(this);\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 isCreateItemDisabled: observable.ref,\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.isCreateItemDisabled = permissions.isCreateItemDisabled;\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 isAddItemDisabled(): boolean {\n return this.addItemDisabled || !!this.isCreateItemDisabled?.().disabled;\n }\n\n addItemDisabledReason(): ReactNode | undefined {\n if (this.addItemDisabled) {\n return undefined;\n }\n const result = this.isCreateItemDisabled?.();\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[], origin: ClipboardOrigin = 'Keyboard') {\n const cleared = this.cellValue.clearCells(cells);\n if (cleared.length === 0) {\n return;\n }\n this.bi.clipboardAction({\n actionName: 'clear',\n origin,\n ...clipboardCellCounts(cleared),\n });\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 // A second double-click in an editor that is already open is not a new edit.\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\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","_EditableTableStateBIReporter","_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","bi","EditableTableStateBIReporter","cellValue","CellValueState","Map","extraCellTypes","map","ct","type","cellInteraction","CellInteractionState","editingValue","cell","commitHandler","clipboard","ClipboardState","MutationState","mutations","createOptimisticActions","makeObservable","addItemDisabled","observable","isCreateItemDisabled","ref","updateItemDisabled","removeItemDisabled","multiDeleteDisabled","isRemoveItemDisabled","setPermissions","action","_providedColumns","editableColumns","computed","sourceColumns","allColumns","_columnMap","init","confirmDeleteItems","permissions","isRowDeleteDisabled","rowKey","keyed","_getKeyedItem","item","disabled","rowDeleteDisabledReason","reason","isAddItemDisabled","_this$isCreateItemDis","call","addItemDisabledReason","_this$isCreateItemDis2","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","reportCta","ctaName","deleteModalCtaClicked","deleteModalShown","deleteConfirmModal","open","theme","title","content","primaryButtonText","secondaryButtonText","primaryButtonOnClick","secondaryButtonOnClick","onCloseButtonClick","resolveCellTypeByColumnId","getCellDisplayValue","getCellValidation","committed","valid","isCellEditing","validateEditingValue","isCellEditable","isColumnEditable","clearCells","cells","cleared","clipboardAction","actionName","clipboardCellCounts","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 { ReactNode } from 'react';\nimport type { MessageModalLayoutProps } from '@wix/design-system';\nimport type {\n CreateItemDisabledResult,\n KeyedItem,\n RemoveItemDisabledResult,\n} 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 {\n clipboardCellCounts,\n EditableTableStateBIReporter,\n type ClipboardOrigin,\n type DeleteModalCta,\n type RowCreationOrigin,\n} from './EditableTableStateBIReporter';\nimport type { Cell, CellType, EditableColumn, ValidationResult } from './types';\nimport { buildEditableFieldColumns } from '../buildEditableFieldColumns';\n\nexport type {\n CreateItemDisabledResult,\n RemoveItemDisabledResult,\n} from '@wix/bex-core';\n\nexport interface EditableTablePermissions<T = unknown> {\n addItemDisabled?: boolean;\n isCreateItemDisabled?: () => CreateItemDisabledResult;\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 isAddItemDisabled(): boolean;\n addItemDisabledReason(): ReactNode | undefined;\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 bi: EditableTableStateBIReporter<T, F>;\n readonly deleteConfirmModal = new ConditionalModalState<\n Partial<MessageModalLayoutProps>\n >();\n\n addItemDisabled = false;\n isCreateItemDisabled?: () => CreateItemDisabledResult = undefined;\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.bi = new EditableTableStateBIReporter<T, F>(this);\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 isCreateItemDisabled: observable.ref,\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.isCreateItemDisabled = permissions.isCreateItemDisabled;\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 isAddItemDisabled(): boolean {\n return this.addItemDisabled || !!this.isCreateItemDisabled?.().disabled;\n }\n\n addItemDisabledReason(): ReactNode | undefined {\n if (this.addItemDisabled) {\n return undefined;\n }\n const result = this.isCreateItemDisabled?.();\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, origin?: RowCreationOrigin): string {\n return this.mutation.addItem(afterItemKey, origin);\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 const reportCta = (ctaName: DeleteModalCta) =>\n this.bi.deleteModalCtaClicked({ ctaName, rowKeys: deletableRowKeys });\n this.bi.deleteModalShown(deletableRowKeys);\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 reportCta('Delete');\n this.deleteItems(deletableRowKeys);\n },\n secondaryButtonOnClick: () => reportCta('Cancel'),\n onCloseButtonClick: () => reportCta('X'),\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[], origin: ClipboardOrigin = 'Keyboard') {\n const cleared = this.cellValue.clearCells(cells);\n if (cleared.length === 0) {\n return;\n }\n this.bi.clipboardAction({\n actionName: 'clear',\n origin,\n ...clipboardCellCounts(cleared),\n });\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 // A second double-click in an editor that is already open is not a new edit.\n if (this.cellInteraction.isCellEditing(rowKey, columnId)) {\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":[]}
|
|
@@ -105,7 +105,7 @@ class EditableTableStateBIReporter {
|
|
|
105
105
|
menuType: params.menuType,
|
|
106
106
|
isOpened: params.isOpened,
|
|
107
107
|
key: params.key ?? (cellParams == null ? void 0 : cellParams.key),
|
|
108
|
-
fieldType: params.key ? this.
|
|
108
|
+
fieldType: params.key ? this.fieldTypeOf(params.key) : cellParams == null ? void 0 : cellParams.fieldType,
|
|
109
109
|
itemIndex: cellParams == null ? void 0 : cellParams.itemIndex
|
|
110
110
|
}));
|
|
111
111
|
}
|
|
@@ -158,7 +158,7 @@ class EditableTableStateBIReporter {
|
|
|
158
158
|
var _this$_state$_toIndic;
|
|
159
159
|
return {
|
|
160
160
|
key: cell.columnId,
|
|
161
|
-
fieldType: this.
|
|
161
|
+
fieldType: this.fieldTypeOf(cell.columnId),
|
|
162
162
|
itemId: cell.rowKey,
|
|
163
163
|
itemIndex: (_this$_state$_toIndic = this._state._toIndices(cell)) == null ? void 0 : _this$_state$_toIndic.row
|
|
164
164
|
};
|
|
@@ -166,7 +166,7 @@ class EditableTableStateBIReporter {
|
|
|
166
166
|
|
|
167
167
|
/** The schema field type where the column came from a source, otherwise the
|
|
168
168
|
* registered cell type. */
|
|
169
|
-
|
|
169
|
+
fieldTypeOf(columnId) {
|
|
170
170
|
var _column$field;
|
|
171
171
|
const column = this._state._columnMap.get(columnId);
|
|
172
172
|
return (column == null || (_column$field = column.field) == null ? void 0 : _column$field.type) ?? (column == null ? void 0 : column.cellType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_bexCore","require","_bi","clipboardCellCounts","cells","numItems","length","numColumns","Set","map","cell","columnId","size","editOriginOf","trigger","undefined","EditableTableStateBIReporter","constructor","state","_defineProperty2","default","_state","reportBi","toolbar","hasValueChanged","editingValue","column","_columnMap","get","resolved","resolveCellTypeByColumnId","id","committedValue","normalizeOnCommit","Object","is","cellValue","getCellDisplayValue","rowKey","cellEditStarted","withoutDefaults","editableTableCellEditStarted","_cellParams","origin","cellEditCommitted","params","editableTableCellEditCommitted","isValid","getCellValidation","valid","cellEditCancelled","editableTableCellEditCancelled","clipboardAction","editableTableClipboardAction","actionName","isExternalSource","menuOpened","cellParams","editableTableMenuOpened","menuType","isOpened","key","fieldType","_fieldTypeOf","itemIndex","rowCreationStart","newItemCreationStart","rowCreationEnd","newItemCreationEnd","resultType","itemId","itemIds","JSON","stringify","deleteModalShown","rowKeys","wixPatternsDeleteModalShownSrc144Evid10","_deleteModalParams","deleteModalCtaClicked","wixPatternsDeleteModalCtaClickedSrc144Evid11","ctaName","isSelectAll","collection","result","items","location","modalName","tryAgainClicked","cairoTryAgainClicked","loaction","_this$_state$_toIndic","_toIndices","row","_column$field","field","type","cellType","exports"],"sources":["../../../../src/state/EditableTable/EditableTableStateBIReporter.ts"],"sourcesContent":["import { withoutDefaults } from '@wix/bex-core';\nimport type { Field, FiltersMap } from '@wix/bex-core';\nimport {\n cairoTryAgainClicked,\n editableTableCellEditCancelled,\n editableTableCellEditCommitted,\n editableTableCellEditStarted,\n editableTableClipboardAction,\n editableTableMenuOpened,\n newItemCreationEnd,\n newItemCreationStart,\n wixPatternsDeleteModalCtaClickedSrc144Evid11,\n wixPatternsDeleteModalShownSrc144Evid10,\n} from '@wix/bex-core/bi';\nimport type { EditTrigger } from '../../components/EditableTable/types';\nimport type { EditableTableState } from './EditableTableState';\nimport type { Cell } from './types';\n\n/** Catalog 144:21 `actionName` values — lowercase, matching the Eventor plan. */\nexport type ClipboardActionName = 'copy' | 'cut' | 'paste' | 'clear';\nexport type ClipboardOrigin = 'Keyboard' | 'Context Menu';\nexport type MenuType = 'Cell Context Menu' | 'Column Header';\n\n/** Cell count and how many distinct columns they span. Shared by every\n * clipboard action so copy, cut, paste, and clear count the same set. */\nexport function clipboardCellCounts(cells: Cell[]): {\n numItems: number;\n numColumns: number;\n} {\n return {\n numItems: cells.length,\n numColumns: new Set(cells.map((cell) => cell.columnId)).size,\n };\n}\n\n/** Where a new row was asked for. `Card CTA` is the add-row button and keeps its\n * original name so it stays comparable with data already collected. The context\n * menu entries reported nothing before. */\nexport type RowCreationOrigin =\n | 'Card CTA'\n | 'Row Context Menu - Above'\n | 'Row Context Menu - Below'\n | 'Row Context Menu - Duplicate';\n\n/** Catalog spells these in English, unlocalised. */\nexport type DeleteModalCta = 'Delete' | 'Cancel' | 'X';\n\n/** Catalog 144:141 `actionName` values for the failed-write toast retry. */\nexport type RetryActionName = 'Create' | 'Duplicate' | 'Update' | 'Delete';\n\n/** How the user got into edit mode. `Toggle` never enters it — a toggle cell\n * writes straight through, and reports a commit on its own. */\nexport type CellEditOrigin =\n | 'Click'\n | 'Double Click'\n | 'Enter'\n | 'Typing'\n | 'Toggle';\n\nfunction editOriginOf(trigger: EditTrigger | null): CellEditOrigin | undefined {\n if (trigger === null) {\n return undefined;\n }\n if (typeof trigger === 'object') {\n return 'Typing';\n }\n switch (trigger) {\n case 'click':\n return 'Click';\n case 'doubleClick':\n return 'Double Click';\n case 'enter':\n return 'Enter';\n default:\n return undefined;\n }\n}\n\ninterface CellBiParams {\n key: string;\n fieldType?: string;\n itemId: string;\n itemIndex?: number;\n}\n\nexport class EditableTableStateBIReporter<T, F extends FiltersMap> {\n private readonly _state: EditableTableState<T, F>;\n\n constructor(state: EditableTableState<T, F>) {\n this._state = state;\n }\n\n get reportBi() {\n return this._state.toolbar.reportBi;\n }\n\n /** Whether committing `editingValue` would change the stored cell.\n * Compares the value commit would write, after normalizeOnCommit.\n * Call before the write — afterwards the stored value is the new one. */\n hasValueChanged(cell: Cell, editingValue: unknown): boolean {\n if (editingValue === undefined) {\n return false;\n }\n const column = this._state._columnMap.get(cell.columnId);\n const resolved = column\n ? this._state.resolveCellTypeByColumnId(column.id)\n : undefined;\n const committedValue = resolved?.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n // The displayed value includes uncommitted drafts and pending cells, so a\n // re-edit to what the user already sees is not a change.\n return !Object.is(\n this._state.cellValue.getCellDisplayValue(cell.rowKey, cell.columnId),\n committedValue,\n );\n }\n\n cellEditStarted(cell: Cell, trigger: EditTrigger | null) {\n this.reportBi(\n withoutDefaults(editableTableCellEditStarted)({\n ...this._cellParams(cell),\n origin: editOriginOf(trigger),\n }),\n );\n }\n\n cellEditCommitted(\n cell: Cell,\n params: {\n /** Absent for a toggle cell, which never enters edit mode. */\n trigger?: EditTrigger | null;\n origin?: CellEditOrigin;\n hasValueChanged: boolean;\n },\n ) {\n this.reportBi(\n withoutDefaults(editableTableCellEditCommitted)({\n ...this._cellParams(cell),\n origin: params.origin ?? editOriginOf(params.trigger ?? null),\n hasValueChanged: params.hasValueChanged,\n isValid: this._state.cellValue.getCellValidation(\n cell.rowKey,\n cell.columnId,\n ).valid,\n }),\n );\n }\n\n cellEditCancelled(cell: Cell, params: { hasValueChanged: boolean }) {\n this.reportBi(\n withoutDefaults(editableTableCellEditCancelled)({\n ...this._cellParams(cell),\n hasValueChanged: params.hasValueChanged,\n }),\n );\n }\n\n clipboardAction(params: {\n actionName: ClipboardActionName;\n origin: ClipboardOrigin;\n numItems: number;\n numColumns: number;\n isExternalSource?: boolean;\n }) {\n this.reportBi(\n withoutDefaults(editableTableClipboardAction)({\n actionName: params.actionName,\n origin: params.origin,\n numItems: params.numItems,\n numColumns: params.numColumns,\n isExternalSource: params.isExternalSource,\n }),\n );\n }\n\n menuOpened(params: {\n menuType: MenuType;\n isOpened: boolean;\n cell?: Cell | null;\n key?: string;\n }) {\n const cellParams = params.cell ? this._cellParams(params.cell) : undefined;\n this.reportBi(\n withoutDefaults(editableTableMenuOpened)({\n menuType: params.menuType,\n isOpened: params.isOpened,\n key: params.key ?? cellParams?.key,\n fieldType: params.key\n ? this._fieldTypeOf(params.key)\n : cellParams?.fieldType,\n itemIndex: cellParams?.itemIndex,\n }),\n );\n }\n\n rowCreationStart(origin: RowCreationOrigin) {\n this.reportBi(withoutDefaults(newItemCreationStart)({ origin }));\n }\n\n rowCreationEnd(params: {\n origin: RowCreationOrigin;\n /** Catalog 144:107: `success` or `dismissed` (create did not land). */\n resultType: 'success' | 'dismissed';\n itemIds?: string[];\n }) {\n this.reportBi(\n withoutDefaults(newItemCreationEnd)({\n origin: params.origin,\n resultType: params.resultType,\n itemId: params.itemIds ? JSON.stringify(params.itemIds) : undefined,\n }),\n );\n }\n\n deleteModalShown(rowKeys: string[]) {\n this.reportBi(\n withoutDefaults(wixPatternsDeleteModalShownSrc144Evid10)({\n ...this._deleteModalParams(rowKeys),\n }),\n );\n }\n\n deleteModalCtaClicked(params: {\n ctaName: DeleteModalCta;\n rowKeys: string[];\n }) {\n this.reportBi(\n withoutDefaults(wixPatternsDeleteModalCtaClickedSrc144Evid11)({\n ...this._deleteModalParams(params.rowKeys),\n ctaName: params.ctaName,\n }),\n );\n }\n\n /** Shared fields for 144:10/11 — location is the row context menu, not bulk toolbar. */\n private _deleteModalParams(rowKeys: string[]) {\n const numItems = rowKeys.length;\n return {\n numItems,\n // Catalog: isSelectAll is true when numItems equals the list size.\n isSelectAll:\n numItems > 0 && numItems === this._state.collection.result.items.length,\n location: 'Row Context Menu',\n modalName: 'Delete rows',\n itemId: numItems === 1 ? rowKeys[0] : undefined,\n };\n }\n\n tryAgainClicked(actionName: RetryActionName) {\n this.reportBi(\n withoutDefaults(cairoTryAgainClicked)({\n actionName,\n // Schema spells the field this way.\n loaction: 'toast',\n }),\n );\n }\n\n /** Column key, field type, and row identity used on every cell-level event. */\n private _cellParams(cell: Cell): CellBiParams {\n return {\n key: cell.columnId,\n fieldType: this._fieldTypeOf(cell.columnId),\n itemId: cell.rowKey,\n itemIndex: this._state._toIndices(cell)?.row,\n };\n }\n\n /** The schema field type where the column came from a source, otherwise the\n * registered cell type. */\n private _fieldTypeOf(columnId: string): string | undefined {\n const column = this._state._columnMap.get(columnId) as\n | { field?: Field; cellType?: string }\n | undefined;\n return column?.field?.type ?? column?.cellType;\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,GAAA,GAAAD,OAAA;AAgBA;;AAKA;AACA;AACO,SAASE,mBAAmBA,CAACC,KAAa,EAG/C;EACA,OAAO;IACLC,QAAQ,EAAED,KAAK,CAACE,MAAM;IACtBC,UAAU,EAAE,IAAIC,GAAG,CAACJ,KAAK,CAACK,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC;EAC1D,CAAC;AACH;;AAEA;AACA;AACA;;AAOA;;AAGA;;AAGA;AACA;;AAQA,SAASC,YAAYA,CAACC,OAA2B,EAA8B;EAC7E,IAAIA,OAAO,KAAK,IAAI,EAAE;IACpB,OAAOC,SAAS;EAClB;EACA,IAAI,OAAOD,OAAO,KAAK,QAAQ,EAAE;IAC/B,OAAO,QAAQ;EACjB;EACA,QAAQA,OAAO;IACb,KAAK,OAAO;MACV,OAAO,OAAO;IAChB,KAAK,aAAa;MAChB,OAAO,cAAc;IACvB,KAAK,OAAO;MACV,OAAO,OAAO;IAChB;MACE,OAAOC,SAAS;EACpB;AACF;AASO,MAAMC,4BAA4B,CAA0B;EAGjEC,WAAWA,CAACC,KAA+B,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC3C,IAAI,CAACC,MAAM,GAAGH,KAAK;EACrB;EAEA,IAAII,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACD,MAAM,CAACE,OAAO,CAACD,QAAQ;EACrC;;EAEA;AACF;AACA;EACEE,eAAeA,CAACd,IAAU,EAAEe,YAAqB,EAAW;IAC1D,IAAIA,YAAY,KAAKV,SAAS,EAAE;MAC9B,OAAO,KAAK;IACd;IACA,MAAMW,MAAM,GAAG,IAAI,CAACL,MAAM,CAACM,UAAU,CAACC,GAAG,CAAClB,IAAI,CAACC,QAAQ,CAAC;IACxD,MAAMkB,QAAQ,GAAGH,MAAM,GACnB,IAAI,CAACL,MAAM,CAACS,yBAAyB,CAACJ,MAAM,CAACK,EAAE,CAAC,GAChDhB,SAAS;IACb,MAAMiB,cAAc,GAAGH,QAAQ,YAARA,QAAQ,CAAEI,iBAAiB,GAC9CJ,QAAQ,CAACI,iBAAiB,CAACR,YAAY,CAAC,GACxCA,YAAY;IAChB;IACA;IACA,OAAO,CAACS,MAAM,CAACC,EAAE,CACf,IAAI,CAACd,MAAM,CAACe,SAAS,CAACC,mBAAmB,CAAC3B,IAAI,CAAC4B,MAAM,EAAE5B,IAAI,CAACC,QAAQ,CAAC,EACrEqB,cACF,CAAC;EACH;EAEAO,eAAeA,CAAC7B,IAAU,EAAEI,OAA2B,EAAE;IACvD,IAAI,CAACQ,QAAQ,CACX,IAAAkB,wBAAe,EAACC,gCAA4B,CAAC,CAAC;MAC5C,GAAG,IAAI,CAACC,WAAW,CAAChC,IAAI,CAAC;MACzBiC,MAAM,EAAE9B,YAAY,CAACC,OAAO;IAC9B,CAAC,CACH,CAAC;EACH;EAEA8B,iBAAiBA,CACflC,IAAU,EACVmC,MAKC,EACD;IACA,IAAI,CAACvB,QAAQ,CACX,IAAAkB,wBAAe,EAACM,kCAA8B,CAAC,CAAC;MAC9C,GAAG,IAAI,CAACJ,WAAW,CAAChC,IAAI,CAAC;MACzBiC,MAAM,EAAEE,MAAM,CAACF,MAAM,IAAI9B,YAAY,CAACgC,MAAM,CAAC/B,OAAO,IAAI,IAAI,CAAC;MAC7DU,eAAe,EAAEqB,MAAM,CAACrB,eAAe;MACvCuB,OAAO,EAAE,IAAI,CAAC1B,MAAM,CAACe,SAAS,CAACY,iBAAiB,CAC9CtC,IAAI,CAAC4B,MAAM,EACX5B,IAAI,CAACC,QACP,CAAC,CAACsC;IACJ,CAAC,CACH,CAAC;EACH;EAEAC,iBAAiBA,CAACxC,IAAU,EAAEmC,MAAoC,EAAE;IAClE,IAAI,CAACvB,QAAQ,CACX,IAAAkB,wBAAe,EAACW,kCAA8B,CAAC,CAAC;MAC9C,GAAG,IAAI,CAACT,WAAW,CAAChC,IAAI,CAAC;MACzBc,eAAe,EAAEqB,MAAM,CAACrB;IAC1B,CAAC,CACH,CAAC;EACH;EAEA4B,eAAeA,CAACP,MAMf,EAAE;IACD,IAAI,CAACvB,QAAQ,CACX,IAAAkB,wBAAe,EAACa,gCAA4B,CAAC,CAAC;MAC5CC,UAAU,EAAET,MAAM,CAACS,UAAU;MAC7BX,MAAM,EAAEE,MAAM,CAACF,MAAM;MACrBtC,QAAQ,EAAEwC,MAAM,CAACxC,QAAQ;MACzBE,UAAU,EAAEsC,MAAM,CAACtC,UAAU;MAC7BgD,gBAAgB,EAAEV,MAAM,CAACU;IAC3B,CAAC,CACH,CAAC;EACH;EAEAC,UAAUA,CAACX,MAKV,EAAE;IACD,MAAMY,UAAU,GAAGZ,MAAM,CAACnC,IAAI,GAAG,IAAI,CAACgC,WAAW,CAACG,MAAM,CAACnC,IAAI,CAAC,GAAGK,SAAS;IAC1E,IAAI,CAACO,QAAQ,CACX,IAAAkB,wBAAe,EAACkB,2BAAuB,CAAC,CAAC;MACvCC,QAAQ,EAAEd,MAAM,CAACc,QAAQ;MACzBC,QAAQ,EAAEf,MAAM,CAACe,QAAQ;MACzBC,GAAG,EAAEhB,MAAM,CAACgB,GAAG,KAAIJ,UAAU,oBAAVA,UAAU,CAAEI,GAAG;MAClCC,SAAS,EAAEjB,MAAM,CAACgB,GAAG,GACjB,IAAI,CAACE,YAAY,CAAClB,MAAM,CAACgB,GAAG,CAAC,GAC7BJ,UAAU,oBAAVA,UAAU,CAAEK,SAAS;MACzBE,SAAS,EAAEP,UAAU,oBAAVA,UAAU,CAAEO;IACzB,CAAC,CACH,CAAC;EACH;EAEAC,gBAAgBA,CAACtB,MAAyB,EAAE;IAC1C,IAAI,CAACrB,QAAQ,CAAC,IAAAkB,wBAAe,EAAC0B,wBAAoB,CAAC,CAAC;MAAEvB;IAAO,CAAC,CAAC,CAAC;EAClE;EAEAwB,cAAcA,CAACtB,MAKd,EAAE;IACD,IAAI,CAACvB,QAAQ,CACX,IAAAkB,wBAAe,EAAC4B,sBAAkB,CAAC,CAAC;MAClCzB,MAAM,EAAEE,MAAM,CAACF,MAAM;MACrB0B,UAAU,EAAExB,MAAM,CAACwB,UAAU;MAC7BC,MAAM,EAAEzB,MAAM,CAAC0B,OAAO,GAAGC,IAAI,CAACC,SAAS,CAAC5B,MAAM,CAAC0B,OAAO,CAAC,GAAGxD;IAC5D,CAAC,CACH,CAAC;EACH;EAEA2D,gBAAgBA,CAACC,OAAiB,EAAE;IAClC,IAAI,CAACrD,QAAQ,CACX,IAAAkB,wBAAe,EAACoC,2CAAuC,CAAC,CAAC;MACvD,GAAG,IAAI,CAACC,kBAAkB,CAACF,OAAO;IACpC,CAAC,CACH,CAAC;EACH;EAEAG,qBAAqBA,CAACjC,MAGrB,EAAE;IACD,IAAI,CAACvB,QAAQ,CACX,IAAAkB,wBAAe,EAACuC,gDAA4C,CAAC,CAAC;MAC5D,GAAG,IAAI,CAACF,kBAAkB,CAAChC,MAAM,CAAC8B,OAAO,CAAC;MAC1CK,OAAO,EAAEnC,MAAM,CAACmC;IAClB,CAAC,CACH,CAAC;EACH;;EAEA;EACQH,kBAAkBA,CAACF,OAAiB,EAAE;IAC5C,MAAMtE,QAAQ,GAAGsE,OAAO,CAACrE,MAAM;IAC/B,OAAO;MACLD,QAAQ;MACR;MACA4E,WAAW,EACT5E,QAAQ,GAAG,CAAC,IAAIA,QAAQ,KAAK,IAAI,CAACgB,MAAM,CAAC6D,UAAU,CAACC,MAAM,CAACC,KAAK,CAAC9E,MAAM;MACzE+E,QAAQ,EAAE,kBAAkB;MAC5BC,SAAS,EAAE,aAAa;MACxBhB,MAAM,EAAEjE,QAAQ,KAAK,CAAC,GAAGsE,OAAO,CAAC,CAAC,CAAC,GAAG5D;IACxC,CAAC;EACH;EAEAwE,eAAeA,CAACjC,UAA2B,EAAE;IAC3C,IAAI,CAAChC,QAAQ,CACX,IAAAkB,wBAAe,EAACgD,wBAAoB,CAAC,CAAC;MACpClC,UAAU;MACV;MACAmC,QAAQ,EAAE;IACZ,CAAC,CACH,CAAC;EACH;;EAEA;EACQ/C,WAAWA,CAAChC,IAAU,EAAgB;IAAA,IAAAgF,qBAAA;IAC5C,OAAO;MACL7B,GAAG,EAAEnD,IAAI,CAACC,QAAQ;MAClBmD,SAAS,EAAE,IAAI,CAACC,YAAY,CAACrD,IAAI,CAACC,QAAQ,CAAC;MAC3C2D,MAAM,EAAE5D,IAAI,CAAC4B,MAAM;MACnB0B,SAAS,GAAA0B,qBAAA,GAAE,IAAI,CAACrE,MAAM,CAACsE,UAAU,CAACjF,IAAI,CAAC,qBAA5BgF,qBAAA,CAA8BE;IAC3C,CAAC;EACH;;EAEA;AACF;EACU7B,YAAYA,CAACpD,QAAgB,EAAsB;IAAA,IAAAkF,aAAA;IACzD,MAAMnE,MAAM,GAAG,IAAI,CAACL,MAAM,CAACM,UAAU,CAACC,GAAG,CAACjB,QAAQ,CAErC;IACb,OAAO,CAAAe,MAAM,aAAAmE,aAAA,GAANnE,MAAM,CAAEoE,KAAK,qBAAbD,aAAA,CAAeE,IAAI,MAAIrE,MAAM,oBAANA,MAAM,CAAEsE,QAAQ;EAChD;AACF;AAACC,OAAA,CAAAjF,4BAAA,GAAAA,4BAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_bexCore","require","_bi","clipboardCellCounts","cells","numItems","length","numColumns","Set","map","cell","columnId","size","editOriginOf","trigger","undefined","EditableTableStateBIReporter","constructor","state","_defineProperty2","default","_state","reportBi","toolbar","hasValueChanged","editingValue","column","_columnMap","get","resolved","resolveCellTypeByColumnId","id","committedValue","normalizeOnCommit","Object","is","cellValue","getCellDisplayValue","rowKey","cellEditStarted","withoutDefaults","editableTableCellEditStarted","_cellParams","origin","cellEditCommitted","params","editableTableCellEditCommitted","isValid","getCellValidation","valid","cellEditCancelled","editableTableCellEditCancelled","clipboardAction","editableTableClipboardAction","actionName","isExternalSource","menuOpened","cellParams","editableTableMenuOpened","menuType","isOpened","key","fieldType","fieldTypeOf","itemIndex","rowCreationStart","newItemCreationStart","rowCreationEnd","newItemCreationEnd","resultType","itemId","itemIds","JSON","stringify","deleteModalShown","rowKeys","wixPatternsDeleteModalShownSrc144Evid10","_deleteModalParams","deleteModalCtaClicked","wixPatternsDeleteModalCtaClickedSrc144Evid11","ctaName","isSelectAll","collection","result","items","location","modalName","tryAgainClicked","cairoTryAgainClicked","loaction","_this$_state$_toIndic","_toIndices","row","_column$field","field","type","cellType","exports"],"sources":["../../../../src/state/EditableTable/EditableTableStateBIReporter.ts"],"sourcesContent":["import { withoutDefaults } from '@wix/bex-core';\nimport type { Field, FiltersMap } from '@wix/bex-core';\nimport {\n cairoTryAgainClicked,\n editableTableCellEditCancelled,\n editableTableCellEditCommitted,\n editableTableCellEditStarted,\n editableTableClipboardAction,\n editableTableMenuOpened,\n newItemCreationEnd,\n newItemCreationStart,\n wixPatternsDeleteModalCtaClickedSrc144Evid11,\n wixPatternsDeleteModalShownSrc144Evid10,\n} from '@wix/bex-core/bi';\nimport type { EditTrigger } from '../../components/EditableTable/types';\nimport type { EditableTableState } from './EditableTableState';\nimport type { Cell } from './types';\n\n/** Catalog 144:21 `actionName` values — lowercase, matching the Eventor plan. */\nexport type ClipboardActionName = 'copy' | 'cut' | 'paste' | 'clear';\nexport type ClipboardOrigin = 'Keyboard' | 'Context Menu';\nexport type MenuType = 'Cell Context Menu' | 'Column Header';\n\n/** Cell count and how many distinct columns they span. Shared by every\n * clipboard action so copy, cut, paste, and clear count the same set. */\nexport function clipboardCellCounts(cells: Cell[]): {\n numItems: number;\n numColumns: number;\n} {\n return {\n numItems: cells.length,\n numColumns: new Set(cells.map((cell) => cell.columnId)).size,\n };\n}\n\n/** Where a new row was asked for. `Card CTA` is the add-row button and keeps its\n * original name so it stays comparable with data already collected. The context\n * menu entries reported nothing before. */\nexport type RowCreationOrigin =\n | 'Card CTA'\n | 'Row Context Menu - Above'\n | 'Row Context Menu - Below'\n | 'Row Context Menu - Duplicate';\n\n/** Catalog spells these in English, unlocalised. */\nexport type DeleteModalCta = 'Delete' | 'Cancel' | 'X';\n\n/** Catalog 144:141 `actionName` values for the failed-write toast retry. */\nexport type RetryActionName = 'Create' | 'Duplicate' | 'Update' | 'Delete';\n\n/** How the user got into edit mode. `Toggle` never enters it — a toggle cell\n * writes straight through, and reports a commit on its own. */\nexport type CellEditOrigin =\n | 'Click'\n | 'Double Click'\n | 'Enter'\n | 'Typing'\n | 'Toggle';\n\nfunction editOriginOf(trigger: EditTrigger | null): CellEditOrigin | undefined {\n if (trigger === null) {\n return undefined;\n }\n if (typeof trigger === 'object') {\n return 'Typing';\n }\n switch (trigger) {\n case 'click':\n return 'Click';\n case 'doubleClick':\n return 'Double Click';\n case 'enter':\n return 'Enter';\n default:\n return undefined;\n }\n}\n\ninterface CellBiParams {\n key: string;\n fieldType?: string;\n itemId: string;\n itemIndex?: number;\n}\n\nexport class EditableTableStateBIReporter<T, F extends FiltersMap> {\n private readonly _state: EditableTableState<T, F>;\n\n constructor(state: EditableTableState<T, F>) {\n this._state = state;\n }\n\n get reportBi() {\n return this._state.toolbar.reportBi;\n }\n\n /** Whether committing `editingValue` would change the stored cell.\n * Compares the value commit would write, after normalizeOnCommit.\n * Call before the write — afterwards the stored value is the new one. */\n hasValueChanged(cell: Cell, editingValue: unknown): boolean {\n if (editingValue === undefined) {\n return false;\n }\n const column = this._state._columnMap.get(cell.columnId);\n const resolved = column\n ? this._state.resolveCellTypeByColumnId(column.id)\n : undefined;\n const committedValue = resolved?.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n // The displayed value includes uncommitted drafts and pending cells, so a\n // re-edit to what the user already sees is not a change.\n return !Object.is(\n this._state.cellValue.getCellDisplayValue(cell.rowKey, cell.columnId),\n committedValue,\n );\n }\n\n cellEditStarted(cell: Cell, trigger: EditTrigger | null) {\n this.reportBi(\n withoutDefaults(editableTableCellEditStarted)({\n ...this._cellParams(cell),\n origin: editOriginOf(trigger),\n }),\n );\n }\n\n cellEditCommitted(\n cell: Cell,\n params: {\n /** Absent for a toggle cell, which never enters edit mode. */\n trigger?: EditTrigger | null;\n origin?: CellEditOrigin;\n hasValueChanged: boolean;\n },\n ) {\n this.reportBi(\n withoutDefaults(editableTableCellEditCommitted)({\n ...this._cellParams(cell),\n origin: params.origin ?? editOriginOf(params.trigger ?? null),\n hasValueChanged: params.hasValueChanged,\n isValid: this._state.cellValue.getCellValidation(\n cell.rowKey,\n cell.columnId,\n ).valid,\n }),\n );\n }\n\n cellEditCancelled(cell: Cell, params: { hasValueChanged: boolean }) {\n this.reportBi(\n withoutDefaults(editableTableCellEditCancelled)({\n ...this._cellParams(cell),\n hasValueChanged: params.hasValueChanged,\n }),\n );\n }\n\n clipboardAction(params: {\n actionName: ClipboardActionName;\n origin: ClipboardOrigin;\n numItems: number;\n numColumns: number;\n isExternalSource?: boolean;\n }) {\n this.reportBi(\n withoutDefaults(editableTableClipboardAction)({\n actionName: params.actionName,\n origin: params.origin,\n numItems: params.numItems,\n numColumns: params.numColumns,\n isExternalSource: params.isExternalSource,\n }),\n );\n }\n\n menuOpened(params: {\n menuType: MenuType;\n isOpened: boolean;\n cell?: Cell | null;\n key?: string;\n }) {\n const cellParams = params.cell ? this._cellParams(params.cell) : undefined;\n this.reportBi(\n withoutDefaults(editableTableMenuOpened)({\n menuType: params.menuType,\n isOpened: params.isOpened,\n key: params.key ?? cellParams?.key,\n fieldType: params.key\n ? this.fieldTypeOf(params.key)\n : cellParams?.fieldType,\n itemIndex: cellParams?.itemIndex,\n }),\n );\n }\n\n rowCreationStart(origin: RowCreationOrigin) {\n this.reportBi(withoutDefaults(newItemCreationStart)({ origin }));\n }\n\n rowCreationEnd(params: {\n origin: RowCreationOrigin;\n /** Catalog 144:107: `failure` means the server rejected the create. */\n resultType: 'success' | 'failure';\n itemIds?: string[];\n }) {\n this.reportBi(\n withoutDefaults(newItemCreationEnd)({\n origin: params.origin,\n resultType: params.resultType,\n itemId: params.itemIds ? JSON.stringify(params.itemIds) : undefined,\n }),\n );\n }\n\n deleteModalShown(rowKeys: string[]) {\n this.reportBi(\n withoutDefaults(wixPatternsDeleteModalShownSrc144Evid10)({\n ...this._deleteModalParams(rowKeys),\n }),\n );\n }\n\n deleteModalCtaClicked(params: {\n ctaName: DeleteModalCta;\n rowKeys: string[];\n }) {\n this.reportBi(\n withoutDefaults(wixPatternsDeleteModalCtaClickedSrc144Evid11)({\n ...this._deleteModalParams(params.rowKeys),\n ctaName: params.ctaName,\n }),\n );\n }\n\n /** Shared fields for 144:10/11 — location is the row context menu, not bulk toolbar. */\n private _deleteModalParams(rowKeys: string[]) {\n const numItems = rowKeys.length;\n return {\n numItems,\n // Catalog: isSelectAll is true when numItems equals the list size.\n isSelectAll:\n numItems > 0 && numItems === this._state.collection.result.items.length,\n location: 'Row Context Menu',\n modalName: 'Delete rows',\n itemId: numItems === 1 ? rowKeys[0] : undefined,\n };\n }\n\n tryAgainClicked(actionName: RetryActionName) {\n this.reportBi(\n withoutDefaults(cairoTryAgainClicked)({\n actionName,\n // Schema spells the field this way.\n loaction: 'toast',\n }),\n );\n }\n\n /** Column key, field type, and row identity used on every cell-level event. */\n private _cellParams(cell: Cell): CellBiParams {\n return {\n key: cell.columnId,\n fieldType: this.fieldTypeOf(cell.columnId),\n itemId: cell.rowKey,\n itemIndex: this._state._toIndices(cell)?.row,\n };\n }\n\n /** The schema field type where the column came from a source, otherwise the\n * registered cell type. */\n fieldTypeOf(columnId: string): string | undefined {\n const column = this._state._columnMap.get(columnId) as\n | { field?: Field; cellType?: string }\n | undefined;\n return column?.field?.type ?? column?.cellType;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -114,7 +114,12 @@ class MutationState {
|
|
|
114
114
|
}
|
|
115
115
|
return merged;
|
|
116
116
|
}
|
|
117
|
-
addItem(afterItemKey) {
|
|
117
|
+
addItem(afterItemKey, origin = 'Card CTA') {
|
|
118
|
+
// The add-row button reports through `onAddItemClick`; context-menu
|
|
119
|
+
// entries report here so each origin stays distinct.
|
|
120
|
+
if (origin !== 'Card CTA') {
|
|
121
|
+
this._parent.bi.rowCreationStart(origin);
|
|
122
|
+
}
|
|
118
123
|
const newItem = this._handlers.createItem();
|
|
119
124
|
const rowKey = this._parent.collection.itemKey(newItem);
|
|
120
125
|
// The new row lands directly below its anchor, pushing down whichever
|
|
@@ -129,7 +134,8 @@ class MutationState {
|
|
|
129
134
|
}
|
|
130
135
|
this._drafts.set(rowKey, {
|
|
131
136
|
item: newItem,
|
|
132
|
-
afterItemKey
|
|
137
|
+
afterItemKey,
|
|
138
|
+
origin
|
|
133
139
|
});
|
|
134
140
|
return rowKey;
|
|
135
141
|
}
|
|
@@ -148,21 +154,16 @@ class MutationState {
|
|
|
148
154
|
// The create's optimistic patch can only anchor on a real server row —
|
|
149
155
|
// not a draft, not another row created through this table's patches.
|
|
150
156
|
const afterItemKey = this._serverAnchorFor(rowKey);
|
|
157
|
+
const {
|
|
158
|
+
origin
|
|
159
|
+
} = draft;
|
|
151
160
|
this._drafts.delete(rowKey);
|
|
152
161
|
this._pendingCreateKeys.add(rowKey);
|
|
153
162
|
this._optimisticActions.createOne(item, {
|
|
154
|
-
submit: this.
|
|
163
|
+
submit: this._reportedCreate(origin),
|
|
155
164
|
afterItemKey,
|
|
156
165
|
successToast: t('cairo.editableTable.createItem.success.toast'),
|
|
157
|
-
errorToast: (
|
|
158
|
-
retry
|
|
159
|
-
}) => ({
|
|
160
|
-
message: t('cairo.editableTable.createItem.error.toast'),
|
|
161
|
-
action: {
|
|
162
|
-
onClick: retry,
|
|
163
|
-
text: t('cairo.editableTable.retry.toast.CTA')
|
|
164
|
-
}
|
|
165
|
-
})
|
|
166
|
+
errorToast: this._retryableToast('cairo.editableTable.createItem.error.toast', 'Create')
|
|
166
167
|
});
|
|
167
168
|
}
|
|
168
169
|
duplicateItem(rowKey) {
|
|
@@ -171,6 +172,8 @@ class MutationState {
|
|
|
171
172
|
if (!keyedItem) {
|
|
172
173
|
return;
|
|
173
174
|
}
|
|
175
|
+
const origin = 'Row Context Menu - Duplicate';
|
|
176
|
+
this._parent.bi.rowCreationStart(origin);
|
|
174
177
|
const sourceItem = keyedItem.item;
|
|
175
178
|
const newItem = this._handlers.createItem();
|
|
176
179
|
const {
|
|
@@ -189,18 +192,10 @@ class MutationState {
|
|
|
189
192
|
}
|
|
190
193
|
this._pendingCreateKeys.add(newId);
|
|
191
194
|
this._optimisticActions.createOne(duplicate, {
|
|
192
|
-
submit: this.
|
|
195
|
+
submit: this._reportedCreate(origin),
|
|
193
196
|
afterItemKey: rowKey,
|
|
194
197
|
successToast: t('cairo.editableTable.duplicateItem.success.toast'),
|
|
195
|
-
errorToast: (
|
|
196
|
-
retry
|
|
197
|
-
}) => ({
|
|
198
|
-
message: t('cairo.editableTable.duplicateItem.error.toast'),
|
|
199
|
-
action: {
|
|
200
|
-
onClick: retry,
|
|
201
|
-
text: t('cairo.editableTable.retry.toast.CTA')
|
|
202
|
-
}
|
|
203
|
-
})
|
|
198
|
+
errorToast: this._retryableToast('cairo.editableTable.duplicateItem.error.toast', 'Duplicate')
|
|
204
199
|
});
|
|
205
200
|
}
|
|
206
201
|
deleteItems(rowKeys) {
|
|
@@ -241,15 +236,7 @@ class MutationState {
|
|
|
241
236
|
successToast: t('cairo.editableTable.deleteItem.success.toast', {
|
|
242
237
|
count: items.length
|
|
243
238
|
}),
|
|
244
|
-
errorToast: (
|
|
245
|
-
retry
|
|
246
|
-
}) => ({
|
|
247
|
-
message: t('cairo.editableTable.deleteItem.error.toast'),
|
|
248
|
-
action: {
|
|
249
|
-
onClick: retry,
|
|
250
|
-
text: t('cairo.editableTable.retry.toast.CTA')
|
|
251
|
-
}
|
|
252
|
-
})
|
|
239
|
+
errorToast: this._retryableToast('cairo.editableTable.deleteItem.error.toast', 'Delete')
|
|
253
240
|
});
|
|
254
241
|
}
|
|
255
242
|
updateItems(updatedItems, changedFieldIdsByItem) {
|
|
@@ -264,15 +251,47 @@ class MutationState {
|
|
|
264
251
|
successToast: t('cairo.editableTable.updateItem.success.toast', {
|
|
265
252
|
count: updatedItems.length
|
|
266
253
|
}),
|
|
267
|
-
errorToast: (
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
254
|
+
errorToast: this._retryableToast('cairo.editableTable.updateItem.error.toast', 'Update')
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/** Wraps the create submit so the outcome is reported once the server answers
|
|
259
|
+
* — the optimistic action itself has no completion callback. */
|
|
260
|
+
_reportedCreate(origin) {
|
|
261
|
+
return async items => {
|
|
262
|
+
try {
|
|
263
|
+
const result = await this._submitCreate(items);
|
|
264
|
+
const {
|
|
265
|
+
itemKey
|
|
266
|
+
} = this._parent.collection;
|
|
267
|
+
this._parent.bi.rowCreationEnd({
|
|
268
|
+
origin,
|
|
269
|
+
resultType: 'success',
|
|
270
|
+
itemIds: (result ?? items).map(itemKey)
|
|
271
|
+
});
|
|
272
|
+
return result;
|
|
273
|
+
} catch (error) {
|
|
274
|
+
this._parent.bi.rowCreationEnd({
|
|
275
|
+
origin,
|
|
276
|
+
resultType: 'failure'
|
|
277
|
+
});
|
|
278
|
+
throw error;
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
_retryableToast(messageKey, actionName) {
|
|
283
|
+
const t = this._parent.collection.translate;
|
|
284
|
+
return (_err, {
|
|
285
|
+
retry
|
|
286
|
+
}) => ({
|
|
287
|
+
message: t(messageKey),
|
|
288
|
+
action: {
|
|
289
|
+
onClick: () => {
|
|
290
|
+
this._parent.bi.tryAgainClicked(actionName);
|
|
291
|
+
retry();
|
|
292
|
+
},
|
|
293
|
+
text: t('cairo.editableTable.retry.toast.CTA')
|
|
294
|
+
}
|
|
276
295
|
});
|
|
277
296
|
}
|
|
278
297
|
_submitUpdate(items, updatedItems, contexts) {
|
|
@@ -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","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":[]}
|
|
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","origin","bi","rowCreationStart","newItem","createItem","isLocalNewRow","has","t","translate","_serverAnchorFor","add","createOne","submit","_reportedCreate","successToast","errorToast","_retryableToast","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","result","_submitCreate","rowCreationEnd","resultType","itemIds","error","messageKey","actionName","_err","retry","message","onClick","tryAgainClicked","text","sameItems","every","submitUpdate","_this$_parent$collect","previousItem","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';\nimport type {\n RetryActionName,\n RowCreationOrigin,\n} from './EditableTableStateBIReporter';\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\ntype DraftRow<T> = {\n item: T;\n afterItemKey?: string;\n origin: RowCreationOrigin;\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, DraftRow<T>>();\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(\n afterItemKey?: string,\n origin: RowCreationOrigin = 'Card CTA',\n ): string {\n // The add-row button reports through `onAddItemClick`; context-menu\n // entries report here so each origin stays distinct.\n if (origin !== 'Card CTA') {\n this._parent.bi.rowCreationStart(origin);\n }\n\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, origin });\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 const { origin } = draft;\n\n this._drafts.delete(rowKey);\n this._pendingCreateKeys.add(rowKey);\n this._optimisticActions.createOne(item, {\n submit: this._reportedCreate(origin),\n afterItemKey,\n successToast: t('cairo.editableTable.createItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.createItem.error.toast',\n 'Create',\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 origin: RowCreationOrigin = 'Row Context Menu - Duplicate';\n this._parent.bi.rowCreationStart(origin);\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._reportedCreate(origin),\n afterItemKey: rowKey,\n successToast: t('cairo.editableTable.duplicateItem.success.toast'),\n errorToast: this._retryableToast(\n 'cairo.editableTable.duplicateItem.error.toast',\n 'Duplicate',\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: this._retryableToast(\n 'cairo.editableTable.deleteItem.error.toast',\n 'Delete',\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: this._retryableToast(\n 'cairo.editableTable.updateItem.error.toast',\n 'Update',\n ),\n });\n }\n\n /** Wraps the create submit so the outcome is reported once the server answers\n * — the optimistic action itself has no completion callback. */\n private _reportedCreate(origin: RowCreationOrigin) {\n return async (items: T[]) => {\n try {\n const result = await this._submitCreate(items);\n const { itemKey } = this._parent.collection;\n this._parent.bi.rowCreationEnd({\n origin,\n resultType: 'success',\n itemIds: (result ?? items).map(itemKey),\n });\n return result;\n } catch (error) {\n this._parent.bi.rowCreationEnd({ origin, resultType: 'failure' });\n throw error;\n }\n };\n }\n\n private _retryableToast(\n messageKey:\n | 'cairo.editableTable.createItem.error.toast'\n | 'cairo.editableTable.duplicateItem.error.toast'\n | 'cairo.editableTable.deleteItem.error.toast'\n | 'cairo.editableTable.updateItem.error.toast',\n actionName: RetryActionName,\n ) {\n const t = this._parent.collection.translate;\n return (_err: unknown, { retry }: { retry: () => void }) => ({\n message: t(messageKey),\n action: {\n onClick: () => {\n this._parent.bi.tryAgainClicked(actionName);\n retry();\n },\n text: t('cairo.editableTable.retry.toast.CTA'),\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_ = "FormPageHeader3807393674";
|
|
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": "FormPageHeader3807393674__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_ = \"FormPageHeader3807393674\";\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\":\"FormPageHeader3807393674__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":[]}
|
|
@@ -94,6 +94,7 @@ class TableState {
|
|
|
94
94
|
stickyColumns
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
+
const consumerStickyColumns = stickyColumns;
|
|
97
98
|
if (tableDragAndDropState) {
|
|
98
99
|
stickyColumns = tableDragAndDropState.getStickyColumnsCount({
|
|
99
100
|
...params,
|
|
@@ -104,6 +105,16 @@ class TableState {
|
|
|
104
105
|
if (showSelection && checkboxColumnStickyCompat) {
|
|
105
106
|
stickyColumns += 1;
|
|
106
107
|
}
|
|
108
|
+
|
|
109
|
+
// Without compat the consumer's count already includes the selection column.
|
|
110
|
+
const pinsConsumerColumn = consumerStickyColumns > (showSelection && !checkboxColumnStickyCompat ? 1 : 0);
|
|
111
|
+
|
|
112
|
+
// The row status column is added right after the selection column, so
|
|
113
|
+
// without this it takes the last pinned slot. It is pinned only ahead of a
|
|
114
|
+
// consumer column: pinned last, it clips the column after it.
|
|
115
|
+
if (params.hasRowStatusColumn && pinsConsumerColumn) {
|
|
116
|
+
stickyColumns += 1;
|
|
117
|
+
}
|
|
107
118
|
return stickyColumns;
|
|
108
119
|
}
|
|
109
120
|
get showEmptyState() {
|