diff --git a/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png b/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png index cd6535068e..3a64235c97 100644 Binary files a/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png and b/e2e/visual-comparison/docs/docs-visual-comparison.spec.ts-snapshots/default-doc-ci-chromium-linux.png differ diff --git a/packages/docs-ui/src/commands/operations/doc-create-table.operation.ts b/packages/docs-ui/src/commands/operations/doc-create-table.operation.ts index 2cc1078137..ec58356b13 100644 --- a/packages/docs-ui/src/commands/operations/doc-create-table.operation.ts +++ b/packages/docs-ui/src/commands/operations/doc-create-table.operation.ts @@ -14,9 +14,9 @@ * limitations under the License. */ +import type { IAccessor, ICommand } from '@univerjs/core'; import { CommandType, ICommandService, LocaleService } from '@univerjs/core'; import { IConfirmService } from '@univerjs/ui'; -import type { IAccessor, ICommand } from '@univerjs/core'; import { COMPONENT_DOC_CREATE_TABLE_CONFIRM } from '../../views/table/create/component-name'; import { CreateDocTableCommand } from '../commands/table/doc-table-create.command'; diff --git a/packages/docs-ui/src/controllers/menu.schema.ts b/packages/docs-ui/src/controllers/menu.schema.ts index 1179ebba46..cfc52705df 100644 --- a/packages/docs-ui/src/controllers/menu.schema.ts +++ b/packages/docs-ui/src/controllers/menu.schema.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { ContextMenuGroup, ContextMenuPosition, RibbonStartGroup } from '@univerjs/ui'; import type { MenuSchemaType } from '@univerjs/ui'; +import { ContextMenuGroup, ContextMenuPosition, RibbonStartGroup } from '@univerjs/ui'; import { DocCopyCommand, DocCutCommand, DocPasteCommand } from '../commands/commands/clipboard.command'; import { DeleteLeftCommand } from '../commands/commands/delete.command'; import { OpenHeaderFooterPanelCommand } from '../commands/commands/doc-header-footer.command'; diff --git a/packages/docs-ui/src/controllers/menu/context-menu.ts b/packages/docs-ui/src/controllers/menu/context-menu.ts index a41d188274..d9e3228c22 100644 --- a/packages/docs-ui/src/controllers/menu/context-menu.ts +++ b/packages/docs-ui/src/controllers/menu/context-menu.ts @@ -14,13 +14,13 @@ * limitations under the License. */ +import type { IAccessor } from '@univerjs/core'; +import type { IRectRangeWithStyle } from '@univerjs/engine-render'; +import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui'; import { IUniverInstanceService, UniverInstanceType } from '@univerjs/core'; import { DocSelectionManagerService } from '@univerjs/docs'; import { getMenuHiddenObservable, MenuItemType } from '@univerjs/ui'; import { combineLatest, Observable } from 'rxjs'; -import type { IAccessor } from '@univerjs/core'; -import type { IRectRangeWithStyle } from '@univerjs/engine-render'; -import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui'; import { DocCopyCommand, DocCutCommand, DocPasteCommand } from '../../commands/commands/clipboard.command'; import { DeleteLeftCommand } from '../../commands/commands/delete.command'; import { DocTableDeleteColumnsCommand, DocTableDeleteRowsCommand, DocTableDeleteTableCommand } from '../../commands/commands/table/doc-table-delete.command'; @@ -85,6 +85,8 @@ const getDisableWhenSelectionNotInTableObservable = (accessor: IAccessor) => { subscriber.next(true); }); + subscriber.next(true); + return () => observable.unsubscribe(); }); }; diff --git a/packages/sheets-ui/src/controllers/menu.schema.ts b/packages/sheets-ui/src/controllers/menu.schema.ts index 0d0a90825a..3d218ac81b 100644 --- a/packages/sheets-ui/src/controllers/menu.schema.ts +++ b/packages/sheets-ui/src/controllers/menu.schema.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import type { MenuSchemaType } from '@univerjs/ui'; import { AddWorksheetMergeAllCommand, AddWorksheetMergeCommand, @@ -42,7 +43,6 @@ import { SetWorksheetRowIsAutoHeightCommand, } from '@univerjs/sheets'; import { ContextMenuGroup, ContextMenuPosition, RibbonStartGroup } from '@univerjs/ui'; -import type { MenuSchemaType } from '@univerjs/ui'; import { SheetCopyCommand, // SheetCutCommand, diff --git a/packages/ui/src/components/menu/desktop/Menu.tsx b/packages/ui/src/components/menu/desktop/Menu.tsx index 9b275353f8..924a8927c5 100644 --- a/packages/ui/src/components/menu/desktop/Menu.tsx +++ b/packages/ui/src/components/menu/desktop/Menu.tsx @@ -34,7 +34,7 @@ import { CheckMarkSingle, MoreSingle } from '@univerjs/icons'; import clsx from 'clsx'; import React, { useMemo, useState } from 'react'; -import { combineLatest, isObservable, map, Observable } from 'rxjs'; +import { combineLatest, isObservable, Observable } from 'rxjs'; import { ILayoutService } from '../../../services/layout/layout.service'; import { MenuItemType } from '../../../services/menu/menu'; import { IMenuManagerService } from '../../../services/menu/menu-manager.service'; @@ -74,18 +74,19 @@ function MenuWrapper(props: IBaseMenuProps) { if (!item.children) return item; let hasChildren = false; - const hiddenObservables = item.children?.map((item) => item.item?.hidden$ ?? new Observable((n) => n.next(false))); + const hiddenObservables = item.children?.map((subItem) => { + return subItem.item?.hidden$ ?? new Observable((s) => { + s.next(false); + return s.unsubscribe(); + }); + }); + combineLatest(hiddenObservables).subscribe((hiddenValues) => { + hasChildren = hiddenValues.every((hidden) => hidden === true); - combineLatest(hiddenObservables) - .pipe( - map((hiddenValues) => hiddenValues.every((hidden) => hidden === true)) - ) - .subscribe((allHidden) => { - if (!allHidden) { - hasChildren = true; - } - }) - .unsubscribe(); + if (!hasChildren) { + hasChildren = true; + } + }).unsubscribe(); return hasChildren; }); diff --git a/packages/ui/src/services/confirm/desktop-confirm.service.ts b/packages/ui/src/services/confirm/desktop-confirm.service.ts index 35d41c36c8..4e39e4c3cb 100644 --- a/packages/ui/src/services/confirm/desktop-confirm.service.ts +++ b/packages/ui/src/services/confirm/desktop-confirm.service.ts @@ -14,18 +14,18 @@ * limitations under the License. */ -import { connectInjector, Disposable, toDisposable } from '@univerjs/core'; -import { type IDisposable, Inject, Injector } from '@univerjs/core'; -import { Subject } from 'rxjs'; - import type { IConfirmPartMethodOptions } from '../../views/components/confirm-part/interface'; -import { BuiltInUIPart, IUIPartsService } from '../parts/parts.service'; -import { ConfirmPart } from '../../views/components/confirm-part/ConfirmPart'; import type { IConfirmService } from './confirm.service'; +import { connectInjector, Disposable, toDisposable } from '@univerjs/core'; + +import { type IDisposable, Inject, Injector } from '@univerjs/core'; +import { BehaviorSubject } from 'rxjs'; +import { ConfirmPart } from '../../views/components/confirm-part/ConfirmPart'; +import { BuiltInUIPart, IUIPartsService } from '../parts/parts.service'; export class DesktopConfirmService extends Disposable implements IConfirmService { private _confirmOptions: IConfirmPartMethodOptions[] = []; - readonly confirmOptions$ = new Subject(); + readonly confirmOptions$ = new BehaviorSubject([]); constructor( @Inject(Injector) protected readonly _injector: Injector, diff --git a/packages/ui/src/services/menu/menu-manager.service.ts b/packages/ui/src/services/menu/menu-manager.service.ts index c5623b7eaf..950eb0536a 100644 --- a/packages/ui/src/services/menu/menu-manager.service.ts +++ b/packages/ui/src/services/menu/menu-manager.service.ts @@ -15,10 +15,10 @@ */ import type { IAccessor, Nullable } from '@univerjs/core'; -import { createIdentifier, Disposable, IConfigService, Inject, Injector, Tools } from '@univerjs/core'; import type { Observable } from 'rxjs'; -import { Subject } from 'rxjs'; import type { IMenuItem } from '../menu/menu'; +import { createIdentifier, Disposable, IConfigService, Inject, Injector, Tools } from '@univerjs/core'; +import { Subject } from 'rxjs'; import { mergeMenuConfigs } from '../../common/menu-merge-configs'; import { ContextMenuGroup, ContextMenuPosition, MenuManagerPosition, RibbonDataGroup, RibbonFormulasGroup, RibbonInsertGroup, RibbonOthersGroup, RibbonPosition, RibbonStartGroup, RibbonViewGroup } from './types'; diff --git a/packages/ui/src/views/components/confirm-part/ConfirmPart.tsx b/packages/ui/src/views/components/confirm-part/ConfirmPart.tsx index 750c206d3b..653afc8238 100644 --- a/packages/ui/src/views/components/confirm-part/ConfirmPart.tsx +++ b/packages/ui/src/views/components/confirm-part/ConfirmPart.tsx @@ -15,13 +15,13 @@ */ import type { IConfirmProps } from '@univerjs/design'; -import { Confirm } from '@univerjs/design'; +import type { IConfirmPartMethodOptions } from './interface'; import { useDependency } from '@univerjs/core'; -import React, { useEffect, useState } from 'react'; +import { Confirm } from '@univerjs/design'; +import React, { useEffect, useState } from 'react'; import { CustomLabel } from '../../../components/custom-label/CustomLabel'; import { IConfirmService } from '../../../services/confirm/confirm.service'; -import type { IConfirmPartMethodOptions } from './interface'; export function ConfirmPart() { const confirmService = useDependency(IConfirmService);