diff --git a/common/shared/package.json b/common/shared/package.json index 3fc3a4bac0..f6fcaf1ecd 100644 --- a/common/shared/package.json +++ b/common/shared/package.json @@ -37,10 +37,10 @@ "sort-keys": "^5.1.0", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.17", - "vite": "^6.1.1", + "vite": "^6.2.0", "vite-plugin-dts": "^4.5.0", "vite-plugin-external": "^6.0.1", - "vitest": "^3.0.6" + "vitest": "^3.0.7" }, "devDependencies": { "@types/fs-extra": "^11.0.4", diff --git a/examples-node/src/locales.ts b/examples-node/src/locales.ts deleted file mode 100644 index e52c300dc0..0000000000 --- a/examples-node/src/locales.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright 2023-present DreamNum Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Tools } from '@univerjs/core'; - -import sheetsformulaenUS from '@univerjs/sheets-formula/locale/en-US'; -import sheetsformulafaIR from '@univerjs/sheets-formula/locale/fa-IR'; -import sheetsformulafrFR from '@univerjs/sheets-formula/locale/fr-FR'; -import sheetsformularuRU from '@univerjs/sheets-formula/locale/ru-RU'; -import sheetsformulaviVN from '@univerjs/sheets-formula/locale/vi-VN'; -import sheetsformulazhCN from '@univerjs/sheets-formula/locale/zh-CN'; -import sheetsformulazhTW from '@univerjs/sheets-formula/locale/zh-TW'; -import sheetssortenUS from '@univerjs/sheets-sort/locale/en-US'; -import sheetssortfaIR from '@univerjs/sheets-sort/locale/fa-IR'; -import sheetssortfrFR from '@univerjs/sheets-sort/locale/fr-FR'; -import sheetssortruRU from '@univerjs/sheets-sort/locale/ru-RU'; -import sheetssortviVN from '@univerjs/sheets-sort/locale/vi-VN'; -import sheetssortzhCN from '@univerjs/sheets-sort/locale/zh-CN'; -import sheetssortzhTW from '@univerjs/sheets-sort/locale/zh-TW'; -import sheetsenUS from '@univerjs/sheets/locale/en-US'; -import sheetsfaIR from '@univerjs/sheets/locale/fa-IR'; -import sheetsfrFR from '@univerjs/sheets/locale/fr-FR'; -import sheetsruRU from '@univerjs/sheets/locale/ru-RU'; -import sheetsviVN from '@univerjs/sheets/locale/vi-VN'; -import sheetszhCN from '@univerjs/sheets/locale/zh-CN'; -import sheetszhTW from '@univerjs/sheets/locale/zh-TW'; - -export const enUS = Tools.deepMerge( - {}, - sheetsenUS, - sheetsformulaenUS, - sheetssortenUS -); -export const frFR = Tools.deepMerge( - {}, - sheetsfrFR, - sheetsformulafrFR, - sheetssortfrFR -); -export const ruRU = Tools.deepMerge( - {}, - sheetsruRU, - sheetsformularuRU, - sheetssortruRU -); -export const zhCN = Tools.deepMerge( - {}, - sheetszhCN, - sheetsformulazhCN, - sheetssortzhCN -); -export const zhTW = Tools.deepMerge( - {}, - sheetszhTW, - sheetsformulazhTW, - sheetssortzhTW -); -export const viVN = Tools.deepMerge( - {}, - sheetsviVN, - sheetsformulaviVN, - sheetssortviVN -); -export const faIR = Tools.deepMerge( - {}, - sheetsfaIR, - sheetsformulafaIR, - sheetssortfaIR -); diff --git a/package.json b/package.json index da745af4a3..0244b438c6 100644 --- a/package.json +++ b/package.json @@ -47,11 +47,11 @@ "@antfu/eslint-config": "4.3.0", "@commitlint/cli": "^19.7.1", "@commitlint/config-conventional": "^19.7.1", - "@eslint-react/eslint-plugin": "^1.27.0", + "@eslint-react/eslint-plugin": "^1.28.0", "@playwright/test": "^1.50.1", "@release-it-plugins/workspaces": "^4.2.0", "@release-it/conventional-changelog": "^9.0.4", - "@storybook/react": "8.5.8", + "@storybook/react": "8.6.0", "@types/node": "^22.13.5", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", @@ -74,9 +74,9 @@ "release-it": "^17.11.0", "serve": "^14.2.4", "tsx": "^4.19.3", - "turbo": "^2.4.2", + "turbo": "^2.4.4", "typescript": "^5.7.3", - "vitest": "^3.0.6" + "vitest": "^3.0.7" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/packages-experimental/action-recorder/package.json b/packages-experimental/action-recorder/package.json index c80b6d477f..cd484cbed7 100644 --- a/packages-experimental/action-recorder/package.json +++ b/packages-experimental/action-recorder/package.json @@ -81,7 +81,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages-experimental/debugger/package.json b/packages-experimental/debugger/package.json index 16dfc42a48..4e3b0cd0da 100644 --- a/packages-experimental/debugger/package.json +++ b/packages-experimental/debugger/package.json @@ -20,7 +20,8 @@ "keywords": [], "exports": { ".": "./src/index.ts", - "./*": "./src/*" + "./*": "./src/*", + "./locale/*": "./src/locale/*.ts" }, "main": "./src/index.ts", "types": "./lib/types/index.d.ts", @@ -39,6 +40,11 @@ "require": "./lib/cjs/*", "types": "./lib/types/index.d.ts" }, + "./locale/*": { + "import": "./lib/es/locale/*.js", + "require": "./lib/cjs/locale/*.js", + "types": "./lib/types/locale/*.d.ts" + }, "./lib/*": "./lib/*" } }, @@ -78,8 +84,8 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6", + "vite": "^6.2.0", + "vitest": "^3.0.7", "vue": "^3.5.13" } } diff --git a/packages-experimental/debugger/src/components/Image.tsx b/packages-experimental/debugger/src/components/Image.tsx index 105d410683..ab095df475 100644 --- a/packages-experimental/debugger/src/components/Image.tsx +++ b/packages-experimental/debugger/src/components/Image.tsx @@ -14,8 +14,6 @@ * limitations under the License. */ -import React from 'react'; - const image = 'data:image/jpeg;base64,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'; export const ImageDemo = () => { diff --git a/packages-experimental/debugger/src/components/float-button.tsx b/packages-experimental/debugger/src/components/float-button.tsx index d90964a839..161210fb98 100644 --- a/packages-experimental/debugger/src/components/float-button.tsx +++ b/packages-experimental/debugger/src/components/float-button.tsx @@ -14,8 +14,6 @@ * limitations under the License. */ -import React from 'react'; - export const FloatButton = () => { const divStyle = { width: '100px', diff --git a/packages-experimental/debugger/src/components/range-loading.tsx b/packages-experimental/debugger/src/components/range-loading.tsx index 04650b0e8e..7df908e96d 100644 --- a/packages-experimental/debugger/src/components/range-loading.tsx +++ b/packages-experimental/debugger/src/components/range-loading.tsx @@ -14,8 +14,6 @@ * limitations under the License. */ -import React from 'react'; - export const RangeLoading = () => { const divStyle = { width: '100%', diff --git a/packages-experimental/debugger/src/index.ts b/packages-experimental/debugger/src/index.ts index cd89cdc3c9..49b638f04e 100644 --- a/packages-experimental/debugger/src/index.ts +++ b/packages-experimental/debugger/src/index.ts @@ -16,4 +16,4 @@ import './global.css'; -export * from './debugger-plugin'; +export { UniverDebuggerPlugin } from './plugin'; diff --git a/packages/watermark/src/locale/en-US.ts b/packages-experimental/debugger/src/locale/en-US.ts similarity index 100% rename from packages/watermark/src/locale/en-US.ts rename to packages-experimental/debugger/src/locale/en-US.ts diff --git a/packages/watermark/src/locale/fa-IR.ts b/packages-experimental/debugger/src/locale/fa-IR.ts similarity index 100% rename from packages/watermark/src/locale/fa-IR.ts rename to packages-experimental/debugger/src/locale/fa-IR.ts diff --git a/packages/watermark/src/locale/fr-FR.ts b/packages-experimental/debugger/src/locale/fr-FR.ts similarity index 100% rename from packages/watermark/src/locale/fr-FR.ts rename to packages-experimental/debugger/src/locale/fr-FR.ts diff --git a/packages/watermark/src/locale/ru-RU.ts b/packages-experimental/debugger/src/locale/ru-RU.ts similarity index 100% rename from packages/watermark/src/locale/ru-RU.ts rename to packages-experimental/debugger/src/locale/ru-RU.ts diff --git a/packages/watermark/src/locale/vi-VN.ts b/packages-experimental/debugger/src/locale/vi-VN.ts similarity index 100% rename from packages/watermark/src/locale/vi-VN.ts rename to packages-experimental/debugger/src/locale/vi-VN.ts diff --git a/packages/watermark/src/locale/zh-CN.ts b/packages-experimental/debugger/src/locale/zh-CN.ts similarity index 100% rename from packages/watermark/src/locale/zh-CN.ts rename to packages-experimental/debugger/src/locale/zh-CN.ts diff --git a/packages/watermark/src/locale/zh-TW.ts b/packages-experimental/debugger/src/locale/zh-TW.ts similarity index 100% rename from packages/watermark/src/locale/zh-TW.ts rename to packages-experimental/debugger/src/locale/zh-TW.ts diff --git a/packages-experimental/debugger/src/debugger-plugin.ts b/packages-experimental/debugger/src/plugin.ts similarity index 100% rename from packages-experimental/debugger/src/debugger-plugin.ts rename to packages-experimental/debugger/src/plugin.ts diff --git a/packages-experimental/debugger/src/views/watermark/WatermarkImageSetting.tsx b/packages-experimental/debugger/src/views/watermark/WatermarkImageSetting.tsx index 71c7e0450d..9e75c73074 100644 --- a/packages-experimental/debugger/src/views/watermark/WatermarkImageSetting.tsx +++ b/packages-experimental/debugger/src/views/watermark/WatermarkImageSetting.tsx @@ -19,15 +19,13 @@ import { LocaleService } from '@univerjs/core'; import { Button, Checkbox, InputNumber } from '@univerjs/design'; import { ILocalFileService, useDependency } from '@univerjs/ui'; import { WATERMARK_IMAGE_ALLOW_IMAGE_LIST } from '@univerjs/watermark'; -import React from 'react'; -import styles from './index.module.less'; interface IWatermarkImageSettingProps { config?: IImageWatermarkConfig; onChange: (config: IImageWatermarkConfig) => void; } -export const WatermarkImageSetting: React.FC = ({ config, onChange }) => { +export function WatermarkImageSetting({ config, onChange }: IWatermarkImageSettingProps) { const fileOpenService = useDependency(ILocalFileService); const localeService = useDependency(LocaleService); @@ -65,38 +63,38 @@ export const WatermarkImageSetting: React.FC = ({ c }; return ( -
+
+
{localeService.t('univer-watermark.image')}
-
{localeService.t('univer-watermark.image')}
- -
- {localeService.t('univer-watermark.image')} +
-
-
+ +
+
{localeService.t('univer-watermark.opacity')}
{ if (val != null) { onChange({ ...config, opacity: Number.parseFloat(val.toString()) }); } }} - max={1} - min={0} - step={0.05} - className={styles.watermarkInput} />
-
+
{localeService.t('univer-watermark.keepRatio')}
{ if (val === true) { @@ -110,12 +108,14 @@ export const WatermarkImageSetting: React.FC = ({ c
-
-
-
+
+
+
{localeService.t('univer-watermark.width')}
{ if (val != null) { const newWidth = Math.max(20, Number.parseInt(val.toString())); @@ -126,15 +126,15 @@ export const WatermarkImageSetting: React.FC = ({ c } } }} - min={20} - className={styles.watermarkInput} />
-
+
{localeService.t('univer-watermark.height')}
{ if (val != null) { const newHeight = Math.max(20, Number.parseInt(val.toString())); @@ -145,96 +145,93 @@ export const WatermarkImageSetting: React.FC = ({ c } } }} - min={20} - className={styles.watermarkInput} />
-
{localeService.t('univer-watermark.layout')}
+
{localeService.t('univer-watermark.layout')}
-
- -
-
+
+
+
{localeService.t('univer-watermark.rotate')}
{ if (val != null) { onChange({ ...config, rotate: Number.parseInt(val.toString()) }); } }} - max={360} - min={-360} - className={styles.watermarkInput} />
-
+
{localeService.t('univer-watermark.repeat')}
onChange({ ...config, repeat: val as boolean })} />
-
-
+
+
{localeService.t('univer-watermark.spacingX')}
{ if (val != null) { onChange({ ...config, spacingX: Number.parseInt(val.toString()) }); } }} - min={0} - className={styles.watermarkInput} />
-
+
{localeService.t('univer-watermark.spacingY')}
{ if (val != null) { onChange({ ...config, spacingY: Number.parseInt(val.toString()) }); } }} - min={0} - className={styles.watermarkInput} />
-
- -
+
+
{localeService.t('univer-watermark.startX')}
{ if (val != null) { onChange({ ...config, x: Number.parseInt(val.toString()) }); } }} - min={0} - className={styles.watermarkInput} />
-
+
{localeService.t('univer-watermark.startY')}
{ if (val != null) { onChange({ ...config, y: Number.parseInt(val.toString()) }); } }} - min={0} - className={styles.watermarkInput} />
diff --git a/packages-experimental/debugger/src/views/watermark/WatermarkPanel.tsx b/packages-experimental/debugger/src/views/watermark/WatermarkPanel.tsx index 0be6e432b2..a1540b4d53 100644 --- a/packages-experimental/debugger/src/views/watermark/WatermarkPanel.tsx +++ b/packages-experimental/debugger/src/views/watermark/WatermarkPanel.tsx @@ -21,7 +21,6 @@ import { IWatermarkTypeEnum, UNIVER_WATERMARK_STORAGE_KEY } from '@univerjs/engi import { useDependency, useObservable } from '@univerjs/ui'; import { WatermarkImageBaseConfig, WatermarkService, WatermarkTextBaseConfig } from '@univerjs/watermark'; import React, { useCallback, useEffect, useState } from 'react'; -import styles from './index.module.less'; import { WatermarkImageSetting } from './WatermarkImageSetting'; import { WatermarkTextSetting } from './WatermarkTextSetting'; @@ -53,25 +52,28 @@ export const WatermarkPanel: React.FC = () => { }, [_refresh, getWatermarkConfig]); return ( -
-
{localeService.t('univer-watermark.type')}
- { + setWatermarkType(v as IWatermarkTypeEnum); + if (v === IWatermarkTypeEnum.Text) { + handleConfigChange({ text: WatermarkTextBaseConfig }, IWatermarkTypeEnum.Text); + } else if (v === IWatermarkTypeEnum.Image) { + handleConfigChange({ image: WatermarkImageBaseConfig }, IWatermarkTypeEnum.Image); + } + }} + /> +
+ +
{watermarkType === IWatermarkTypeEnum.Text && handleConfigChange({ text: v })} />} {watermarkType === IWatermarkTypeEnum.Image && handleConfigChange({ image: v })} />}
diff --git a/packages-experimental/debugger/src/views/watermark/WatermarkPanelFooter.tsx b/packages-experimental/debugger/src/views/watermark/WatermarkPanelFooter.tsx index b6b11eccd5..ec2b3e4838 100644 --- a/packages-experimental/debugger/src/views/watermark/WatermarkPanelFooter.tsx +++ b/packages-experimental/debugger/src/views/watermark/WatermarkPanelFooter.tsx @@ -19,19 +19,17 @@ import { Button } from '@univerjs/design'; import { IWatermarkTypeEnum } from '@univerjs/engine-render'; import { IClipboardInterfaceService, ISidebarService, useDependency } from '@univerjs/ui'; import { WatermarkService, WatermarkTextBaseConfig } from '@univerjs/watermark'; -import React from 'react'; -import styles from './index.module.less'; -export const WatermarkPanelFooter: React.FC = () => { +export function WatermarkPanelFooter() { const sidebarService = useDependency(ISidebarService); const watermarkService = useDependency(WatermarkService); const localeService = useDependency(LocaleService); const clipboardService = useDependency(IClipboardInterfaceService); return ( -
- + -
+
- +
+
    {BORDER_SIZE_CHILDREN.map((item) => ( - handleClick(item.value, 'style')} > - + ))} -
+ )} > - +
diff --git a/packages/sheets-ui/src/components/border-panel/index.module.less b/packages/sheets-ui/src/components/border-panel/index.module.less deleted file mode 100644 index 2de1b467e5..0000000000 --- a/packages/sheets-ui/src/components/border-panel/index.module.less +++ /dev/null @@ -1,70 +0,0 @@ -.ui-plugin-sheets-border-panel { - display: grid; - gap: var(--margin-sm); - - &-position { - display: grid; - grid-template-columns: repeat(5, 1fr); - gap: var(--margin-xxs); - - box-sizing: border-box; - padding-bottom: var(--padding-base); - - border-bottom: 1px solid rgb(var(--border-color)); - - &-item { - display: flex; - align-items: center; - justify-content: center; - - width: 24px; - height: 24px; - - font-size: var(--font-size-lg); - - border-radius: var(--border-radius-base); - - &:hover { - background-color: rgb(var(--bg-color-hover)); - } - - &-active { - background-color: rgb(var(--bg-color-hover)); - } - } - } - - &-styles { - display: flex; - gap: var(--margin-xs); - align-items: center; - justify-content: space-around; - } - - &-button { - cursor: pointer; - - position: relative; - - display: flex; - gap: var(--margin-xs); - align-items: center; - - height: 24px; - padding: 0 var(--padding-xs); - - font-size: var(--font-size-lg); - - border-radius: var(--border-radius-base); - - transition: all 0.15s; - - &:hover { - background-color: rgb(var(--bg-color-hover)); - } - } - - &-more-icon { - color: rgb(var(--grey-400)); - } -} diff --git a/packages/sheets-ui/src/components/border-panel/interface.ts b/packages/sheets-ui/src/components/border-panel/interface.ts index 6d88d63535..1f66c1d759 100644 --- a/packages/sheets-ui/src/components/border-panel/interface.ts +++ b/packages/sheets-ui/src/components/border-panel/interface.ts @@ -16,7 +16,6 @@ import type { IBorderInfo } from '@univerjs/sheets'; import type { ICustomComponentProps } from '@univerjs/ui'; - import { COMPONENT_PREFIX } from '../const'; export const BORDER_PANEL_COMPONENT = `${COMPONENT_PREFIX}_BORDER_PANEL_COMPONENT`; diff --git a/packages/sheets-ui/src/controllers/menu/border.menu.ts b/packages/sheets-ui/src/controllers/menu/border.menu.ts index f41f85b04e..d7641f54d6 100644 --- a/packages/sheets-ui/src/controllers/menu/border.menu.ts +++ b/packages/sheets-ui/src/controllers/menu/border.menu.ts @@ -57,11 +57,13 @@ export function CellBorderSelectorMenuItemFactory(accessor: IAccessor): IMenuSel }), tooltip: 'toolbar.border.main', type: MenuItemType.BUTTON_SELECTOR, + slot: true, selections: [ { label: { name: BORDER_PANEL_COMPONENT, hoverable: false, + selectable: false, }, value$: borderStyleManagerService.borderInfo$, }, diff --git a/packages/sheets-ui/src/controllers/menu/menu.ts b/packages/sheets-ui/src/controllers/menu/menu.ts index 260aed9e27..46d913be5c 100644 --- a/packages/sheets-ui/src/controllers/menu/menu.ts +++ b/packages/sheets-ui/src/controllers/menu/menu.ts @@ -405,7 +405,6 @@ export function FontFamilySelectorMenuItemFactory(accessor: IAccessor): IMenuSel selections: FONT_FAMILY_LIST.map((item) => ({ label: { name: FONT_FAMILY_ITEM_COMPONENT, - hoverable: true, }, value: item.value, })), @@ -527,13 +526,13 @@ export function TextColorSelectorMenuItemFactory(accessor: IAccessor): IMenuSele id: SetRangeTextColorCommand.id, icon: 'FontColor', tooltip: 'toolbar.textColor.main', - type: MenuItemType.BUTTON_SELECTOR, selections: [ { label: { name: COLOR_PICKER_COMPONENT, hoverable: false, + selectable: false, }, }, ], @@ -578,6 +577,7 @@ export function BackgroundColorSelectorMenuItemFactory(accessor: IAccessor): IMe label: { name: COLOR_PICKER_COMPONENT, hoverable: false, + selectable: false, }, }, ], diff --git a/packages/sheets-ui/src/controllers/menu/sheet.menu.ts b/packages/sheets-ui/src/controllers/menu/sheet.menu.ts index 4c7c002677..322bb151e6 100644 --- a/packages/sheets-ui/src/controllers/menu/sheet.menu.ts +++ b/packages/sheets-ui/src/controllers/menu/sheet.menu.ts @@ -15,6 +15,8 @@ */ import type { IAccessor, Workbook } from '@univerjs/core'; +import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui'; +import type { Subscriber } from 'rxjs'; import { BooleanNumber, ICommandService, IUniverInstanceService, UniverInstanceType } from '@univerjs/core'; import { CopySheetCommand, @@ -30,9 +32,7 @@ import { WorkbookHideSheetPermission, WorkbookRenameSheetPermission, } from '@univerjs/sheets'; -import type { IMenuButtonItem, IMenuSelectorItem } from '@univerjs/ui'; import { getMenuHiddenObservable, MenuItemType } from '@univerjs/ui'; -import type { Subscriber } from 'rxjs'; import { combineLatest, combineLatestWith, map, Observable } from 'rxjs'; import { RemoveSheetConfirmCommand } from '../../commands/commands/remove-sheet-confirm.command'; diff --git a/packages/sheets-ui/src/locale/en-US.ts b/packages/sheets-ui/src/locale/en-US.ts index 3a6b11d61f..69f378c1c4 100644 --- a/packages/sheets-ui/src/locale/en-US.ts +++ b/packages/sheets-ui/src/locale/en-US.ts @@ -24,11 +24,6 @@ const locale: typeof zhCN = { undo: 'Undo', redo: 'Redo', formatPainter: 'Paint format', - currencyFormat: 'Format as currency', - percentageFormat: 'Format as percent', - numberDecrease: 'Decrease decimal places', - numberIncrease: 'Increase decimal places', - moreFormats: 'More formats', font: 'Font', fontSize: 'Font size', bold: 'Bold', @@ -42,11 +37,6 @@ const locale: typeof zhCN = { right: 'Choose color', }, resetColor: 'Reset', - customColor: 'CUSTOM', - alternatingColors: 'Alternating colors', - confirmColor: 'OK', - cancelColor: 'Cancel', - collapse: 'Collapse', fillColor: { main: 'Fill color', right: 'Choose color', @@ -75,122 +65,9 @@ const locale: typeof zhCN = { main: 'Text rotate', right: 'Text rotate mode', }, - freezeTopRow: 'Freeze top row', - sortAndFilter: 'Sort and filter', - findAndReplace: 'Find and replace', - sum: 'SUM', - autoSum: 'Auto SUM', - moreFunction: 'More functions', - conditionalFormatting: 'Conditional formatting', - comment: 'Comment', - pivotTable: 'Pivot Table', - chart: 'Chart', - screenshot: 'Screenshot', - splitColumn: 'Split text', - insertImage: 'Insert image', - insertLink: 'Insert link', - dataValidation: 'Data validation', - protection: 'Protect the sheet', - - clearText: 'Clear color', - noColorSelectedText: 'No color is selected', - - toolMore: 'More', - toolLess: 'Less', - toolClose: 'Close', - toolMoreTip: 'More features', - moreOptions: 'More options', - - cellFormat: 'Cell format config', - print: 'Print', - borderMethod: { - top: 'Upper frame line', - bottom: 'Lower frame line', - left: 'Left frame line', - right: 'Right frame line', - }, more: 'More', - hideGridlines: 'Hide Gridlines', - showGridlines: 'Show Gridlines', toggleGridlines: 'Toggle Gridlines', }, - defaultFmt: { - Automatic: { - text: 'Automatic', - value: 'General', - example: '', - }, - Number: { - text: 'Number', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: 'Percent', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: 'Plain text', - value: '@', - example: '', - }, - Scientific: { - text: 'Scientific', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: 'Accounting', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: 'Ten Thousand', - value: 'w', - example: '1亿2000万2500', - }, - Currency: { - text: 'Currency', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: '万元2位小数', - value: 'w0.00', - example: '2万2500.55', - }, - Date: { - text: 'Date', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: 'Time', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: 'Time 24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: 'Date time', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: 'Date time 24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: 'Custom Formats', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: 'More currency formats', - moreDateTime: 'More date and time formats', - moreNumber: 'More number formats', - - titleCurrency: 'Currency formats', - decimalPlaces: 'Decimal places', - titleDateTime: 'Date and time formats', - titleNumber: 'Number formats', - }, - print: { - normalBtn: 'Normal', - layoutBtn: 'Page Layout', - pageBtn: 'Page break preview', - - menuItemPrint: 'Print (Ctrl+P)', - menuItemAreas: 'Print areas', - menuItemRows: 'Print title rows', - menuItemColumns: 'Print title columns', - }, align: { left: 'left', center: 'center', @@ -308,7 +185,6 @@ const locale: typeof zhCN = { }, rightClick: { copy: 'Copy', - copyAs: 'Copy as', cut: 'Cut', paste: 'Paste', pasteSpecial: 'Paste Special', @@ -340,11 +216,6 @@ const locale: typeof zhCN = { hideSelectedColumn: 'Hide Selected Column', showHideColumn: 'Show Hide Column', columnWidth: 'Column Width', - to: 'Towards', - left: 'Left', - right: 'Right', - top: 'Top', - bottom: 'Bottom', moveLeft: 'Move Left', moveUp: 'Move up', moveRight: 'Move Right', @@ -352,42 +223,11 @@ const locale: typeof zhCN = { add: 'Add', row: 'Row', column: 'Column', - width: 'Width', - height: 'Height', - number: 'Number', confirm: 'Confirm', - orderAZ: 'A-Z order', - orderZA: 'Z-A order', clearSelection: 'Clear', clearContent: 'Clear Contents', clearFormat: 'Clear Formats', clearAll: 'Clear All', - matrix: 'Matrix operation', - sortSelection: 'Sort', - filterSelection: 'Filter', - chartGeneration: 'Create Chart', - firstLineTitle: 'First Line Title', - untitled: 'Untitled', - array1: 'One-dimensional array', - array2: 'Two-dimensional array', - array3: 'Multidimensional Arrays', - diagonal: 'Diagonal', - antiDiagonal: 'Anti-diagonal', - diagonalOffset: 'Diagonal offset', - offset: 'Offset', - boolean: 'Boolean', - flip: 'Flip', - upAndDown: 'Up and down', - leftAndRight: 'Left and right', - clockwise: 'Clockwise', - counterclockwise: 'Counterclockwise', - transpose: 'Transpose', - matrixCalculation: 'Matrix Calculation', - plus: 'Plus', - minus: 'Minus', - multiply: 'Multiply', - divided: 'Divided', - power: 'Power', root: 'Root', log: 'Log', delete0: 'Delete 0 values at both ends', @@ -400,7 +240,6 @@ const locale: typeof zhCN = { freezeCol: 'Freeze to this column', freezeRow: 'Freeze to this row', cancelFreeze: 'Cancel freeze', - zenEditor: 'Full Screen Editor', deleteAllRowsAlert: 'You can\'t delete all the rows on the sheet', deleteAllColumnsAlert: 'You can\'t delete all the columns on the sheet', hideAllRowsAlert: 'You can\'t hide all the rows on the sheet', diff --git a/packages/sheets-ui/src/locale/fa-IR.ts b/packages/sheets-ui/src/locale/fa-IR.ts index 2dd99f3b80..fb464df520 100644 --- a/packages/sheets-ui/src/locale/fa-IR.ts +++ b/packages/sheets-ui/src/locale/fa-IR.ts @@ -24,11 +24,6 @@ const locale: typeof zhCN = { undo: 'بازگرداندن', redo: 'تکرار', formatPainter: 'کپی قالب', - currencyFormat: 'قالب‌بندی به عنوان ارز', - percentageFormat: 'قالب‌بندی به عنوان درصد', - numberDecrease: 'کاهش اعشار', - numberIncrease: 'افزایش اعشار', - moreFormats: 'قالب‌های بیشتر', font: 'فونت', fontSize: 'اندازه فونت', bold: 'پررنگ', @@ -42,11 +37,6 @@ const locale: typeof zhCN = { right: 'انتخاب رنگ', }, resetColor: 'بازنشانی', - customColor: 'سفارشی', - alternatingColors: 'رنگ‌های متناوب', - confirmColor: 'تایید', - cancelColor: 'انصراف', - collapse: 'جمع کردن', fillColor: { main: 'رنگ پر کردن', right: 'انتخاب رنگ', @@ -75,122 +65,9 @@ const locale: typeof zhCN = { main: 'چرخش متن', right: 'حالت چرخش متن', }, - freezeTopRow: 'فریز کردن سطر بالا', - sortAndFilter: 'مرتب‌سازی و فیلتر', - findAndReplace: 'یافتن و جایگزینی', - sum: 'SUM', - autoSum: 'جمع خودکار', - moreFunction: 'توابع بیشتر', - conditionalFormatting: 'قالب‌بندی شرطی', - comment: 'نظر', - pivotTable: 'جدول محوری', - chart: 'نمودار', - screenshot: 'عکس صفحه', - splitColumn: 'تقسیم متن', - insertImage: 'درج تصویر', - insertLink: 'درج لینک', - dataValidation: 'اعتبارسنجی داده', - protection: 'محافظت از برگ', - - clearText: 'پاک کردن رنگ', - noColorSelectedText: 'هیچ رنگی انتخاب نشده است', - - toolMore: 'بیشتر', - toolLess: 'کمتر', - toolClose: 'بستن', - toolMoreTip: 'امکانات بیشتر', - moreOptions: 'گزینه‌های بیشتر', - - cellFormat: 'تنظیمات قالب سلول', - print: 'چاپ', - borderMethod: { - top: 'خط بالای قاب', - bottom: 'خط پایینی قاب', - left: 'خط چپ قاب', - right: 'خط راست قاب', - }, more: 'بیشتر', - hideGridlines: 'پنهان کردن خطوط شبکه', - showGridlines: 'نمایش خطوط شبکه', toggleGridlines: 'تغییر وضعیت خطوط شبکه', }, - defaultFmt: { - Automatic: { - text: 'خودکار', - value: 'General', - example: '', - }, - Number: { - text: 'عدد', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: 'درصد', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: 'متن ساده', - value: '@', - example: '', - }, - Scientific: { - text: 'علمی', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: 'حسابداری', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: 'ده هزار', - value: 'w', - example: '1亿2000万2500', - }, - Currency: { - text: 'ارز', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: 'ده‌ها هزار با دو رقم اعشار', - value: 'w0.00', - example: '2万2500.55', - }, - Date: { - text: 'تاریخ', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: 'زمان', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: 'زمان 24 ساعته', value: 'hh:mm', example: '15:00' }, - DateTime: { text: 'تاریخ و زمان', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: 'تاریخ و زمان 24 ساعته', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: 'قالب‌های سفارشی', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: 'قالب‌های ارز بیشتر', - moreDateTime: 'قالب‌های تاریخ و زمان بیشتر', - moreNumber: 'قالب‌های عددی بیشتر', - - titleCurrency: 'قالب‌های ارز', - decimalPlaces: 'اعشار', - titleDateTime: 'قالب‌های تاریخ و زمان', - titleNumber: 'قالب‌های عددی', - }, - print: { - normalBtn: 'عادی', - layoutBtn: 'چیدمان صفحه', - pageBtn: 'پیش‌نمایش شکست صفحه', - - menuItemPrint: 'چاپ (Ctrl+P)', - menuItemAreas: 'مناطق چاپ', - menuItemRows: 'سطرهای عنوان چاپ', - menuItemColumns: 'ستون‌های عنوان چاپ', - }, align: { left: 'چپ', center: 'وسط', @@ -308,7 +185,6 @@ const locale: typeof zhCN = { }, rightClick: { copy: 'کپی', - copyAs: 'کپی به عنوان', cut: 'برش', paste: 'چسباندن', pasteSpecial: 'چسباندن ویژه', @@ -340,11 +216,6 @@ const locale: typeof zhCN = { hideSelectedColumn: 'پنهان کردن ستون انتخاب شده', showHideColumn: 'نمایش پنهان کردن ستون', columnWidth: 'عرض ستون', - to: 'به سمت', - left: 'چپ', - right: 'راست', - top: 'بالا', - bottom: 'پایین', moveLeft: 'جابجایی به چپ', moveUp: 'جابجایی به بالا', moveRight: 'جابجایی به راست', @@ -352,42 +223,11 @@ const locale: typeof zhCN = { add: 'اضافه کردن', row: 'سطر', column: 'ستون', - width: 'عرض', - height: 'ارتفاع', - number: 'عدد', confirm: 'تایید', - orderAZ: 'ترتیب A-Z', - orderZA: 'ترتیب Z-A', clearSelection: 'پاک کردن', clearContent: 'پاک کردن محتوا', clearFormat: 'پاک کردن قالب‌ها', clearAll: 'پاک کردن همه', - matrix: 'عملیات ماتریسی', - sortSelection: 'مرتب‌سازی', - filterSelection: 'فیلتر کردن', - chartGeneration: 'ایجاد نمودار', - firstLineTitle: 'عنوان خط اول', - untitled: 'بدون عنوان', - array1: 'آرایه یک بعدی', - array2: 'آرایه دو بعدی', - array3: 'آرایه‌های چند بعدی', - diagonal: 'قطری', - antiDiagonal: 'ضد قطری', - diagonalOffset: 'جابجایی قطری', - offset: 'جابجایی', - boolean: 'بولین', - flip: 'واژگون کردن', - upAndDown: 'بالا و پایین', - leftAndRight: 'چپ و راست', - clockwise: 'در جهت عقربه‌های ساعت', - counterclockwise: 'در خلاف جهت عقربه‌های ساعت', - transpose: 'ترانهاده', - matrixCalculation: 'محاسبه ماتریسی', - plus: 'جمع', - minus: 'تفریق', - multiply: 'ضرب', - divided: 'تقسیم', - power: 'توان', root: 'ریشه', log: 'لوگاریتم', delete0: 'حذف مقادیر 0 در دو طرف', @@ -400,7 +240,6 @@ const locale: typeof zhCN = { freezeCol: 'انجماد در این ستون', freezeRow: 'انجماد در این سطر', cancelFreeze: 'لغو انجماد', - zenEditor: 'ویرایشگر تمام صفحه', deleteAllRowsAlert: 'شما نمی‌توانید تمام سطرهای برگه را حذف کنید', deleteAllColumnsAlert: 'شما نمی‌توانید تمام ستون‌های برگه را حذف کنید', hideAllRowsAlert: 'شما نمی‌توانید تمام سطرهای برگه را پنهان کنید', diff --git a/packages/sheets-ui/src/locale/fr-FR.ts b/packages/sheets-ui/src/locale/fr-FR.ts index c01550fb29..7583100f1d 100644 --- a/packages/sheets-ui/src/locale/fr-FR.ts +++ b/packages/sheets-ui/src/locale/fr-FR.ts @@ -24,11 +24,6 @@ const locale: typeof enUS = { undo: 'Annuler', redo: 'Refaire', formatPainter: 'Reproduire la mise en forme', - currencyFormat: 'Format en devise', - percentageFormat: 'Format en pourcentage', - numberDecrease: 'Diminuer les décimales', - numberIncrease: 'Augmenter les décimales', - moreFormats: 'Plus de formats', font: 'Police', fontSize: 'Taille de police', bold: 'Gras', @@ -42,11 +37,6 @@ const locale: typeof enUS = { right: 'Choisir la couleur', }, resetColor: 'Réinitialiser', - customColor: 'PERSONNALISÉ', - alternatingColors: 'Couleurs alternées', - confirmColor: 'OK', - cancelColor: 'Annuler', - collapse: 'Réduire', fillColor: { main: 'Couleur de remplissage', right: 'Choisir la couleur', @@ -75,122 +65,9 @@ const locale: typeof enUS = { main: 'Rotation du texte', right: 'Mode de rotation du texte', }, - freezeTopRow: 'Figer la ligne du haut', - sortAndFilter: 'Trier et filtrer', - findAndReplace: 'Rechercher et remplacer', - sum: 'SOMME', - autoSum: 'Somme automatique', - moreFunction: 'Plus de fonctions', - conditionalFormatting: 'Mise en forme conditionnelle', - comment: 'Commentaire', - pivotTable: 'Tableau croisé dynamique', - chart: 'Graphique', - screenshot: 'Capture d\'écran', - splitColumn: 'Fractionner le texte', - insertImage: 'Insérer une image', - insertLink: 'Insérer un lien', - dataValidation: 'Validation des données', - protection: 'Protéger la feuille', - - clearText: 'Effacer la couleur', - noColorSelectedText: 'Aucune couleur sélectionnée', - - toolMore: 'Plus', - toolLess: 'Moins', - toolClose: 'Fermer', - toolMoreTip: 'Plus de fonctionnalités', - moreOptions: 'Plus d\'options', - - cellFormat: 'Configuration du format de cellule', - print: 'Imprimer', - borderMethod: { - top: 'Ligne de cadre supérieure', - bottom: 'Ligne de cadre inférieure', - left: 'Ligne de cadre gauche', - right: 'Ligne de cadre droite', - }, more: 'Plus', - hideGridlines: 'Masquer le quadrillage', - showGridlines: 'Afficher le quadrillage', toggleGridlines: 'Activer/désactiver le quadrillage', }, - defaultFmt: { - Automatic: { - text: 'Automatique', - value: 'Général', - example: '', - }, - Number: { - text: 'Nombre', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: 'Pourcentage', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: 'Texte brut', - value: '@', - example: '', - }, - Scientific: { - text: 'Scientifique', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: 'Comptabilité', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: 'Dix Mille', - value: 'w', - example: '1 2000 2500', - }, - Currency: { - text: 'Devise', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: 'Dix Mille 2 Décimales', - value: 'w0.00', - example: '2 2500.55', - }, - Date: { - text: 'Date', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: 'Heure', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: 'Heure 24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: 'Date et heure', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: 'Date et heure 24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: 'Formats personnalisés', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: 'Plus de formats de devise', - moreDateTime: 'Plus de formats de date et heure', - moreNumber: 'Plus de formats de nombre', - - titleCurrency: 'Formats de devise', - decimalPlaces: 'Décimales', - titleDateTime: 'Formats de date et heure', - titleNumber: 'Formats de nombre', - }, - print: { - normalBtn: 'Normal', - layoutBtn: 'Disposition de la page', - pageBtn: 'Aperçu des sauts de page', - - menuItemPrint: 'Imprimer (Ctrl+P)', - menuItemAreas: 'Zones d\'impression', - menuItemRows: 'Lignes de titre à imprimer', - menuItemColumns: 'Colonnes de titre à imprimer', - }, align: { left: 'gauche', center: 'centre', @@ -308,7 +185,6 @@ const locale: typeof enUS = { }, rightClick: { copy: 'Copier', - copyAs: 'Copier en tant que', cut: 'Couper', paste: 'Coller', pasteSpecial: 'Collage spécial', @@ -340,11 +216,6 @@ const locale: typeof enUS = { hideSelectedColumn: 'Masquer la colonne sélectionnée', showHideColumn: 'Afficher/Masquer la colonne', columnWidth: 'Largeur de colonne', - to: 'Vers', - left: 'Gauche', - right: 'Droite', - top: 'Haut', - bottom: 'Bas', moveLeft: 'Déplacer à gauche', moveUp: 'Déplacer vers le haut', moveRight: 'Déplacer à droite', @@ -352,42 +223,11 @@ const locale: typeof enUS = { add: 'Ajouter', row: 'Ligne', column: 'Colonne', - width: 'Largeur', - height: 'Hauteur', - number: 'Nombre', confirm: 'Confirmer', - orderAZ: 'Ordre A-Z', - orderZA: 'Ordre Z-A', clearSelection: 'Effacer', clearContent: 'Effacer le contenu', clearFormat: 'Effacer les formats', clearAll: 'Tout effacer', - matrix: 'Opération matricielle', - sortSelection: 'Trier', - filterSelection: 'Filtrer', - chartGeneration: 'Créer un graphique', - firstLineTitle: 'Titre de la première ligne', - untitled: 'Sans titre', - array1: 'Tableau unidimensionnel', - array2: 'Tableau bidimensionnel', - array3: 'Tableaux multidimensionnels', - diagonal: 'Diagonale', - antiDiagonal: 'Anti-diagonale', - diagonalOffset: 'Décalage diagonal', - offset: 'Décalage', - boolean: 'Booléen', - flip: 'Retourner', - upAndDown: 'De haut en bas', - leftAndRight: 'De gauche à droite', - clockwise: 'Dans le sens des aiguilles d\'une montre', - counterclockwise: 'Dans le sens inverse des aiguilles d\'une montre', - transpose: 'Transposer', - matrixCalculation: 'Calcul matriciel', - plus: 'Plus', - minus: 'Moins', - multiply: 'Multiplier', - divided: 'Divisé', - power: 'Puissance', root: 'Racine', log: 'Logarithme', delete0: 'Supprimer les valeurs 0 aux deux extrémités', @@ -400,7 +240,6 @@ const locale: typeof enUS = { freezeCol: 'Figer jusqu\'à cette colonne', freezeRow: 'Figer jusqu\'à cette ligne', cancelFreeze: 'Annuler le figement', - zenEditor: 'Éditeur plein écran', deleteAllRowsAlert: 'Vous ne pouvez pas supprimer toutes les lignes de la feuille', deleteAllColumnsAlert: 'Vous ne pouvez pas supprimer toutes les colonnes de la feuille', hideAllRowsAlert: 'Vous ne pouvez pas masquer toutes les lignes de la feuille', diff --git a/packages/sheets-ui/src/locale/ru-RU.ts b/packages/sheets-ui/src/locale/ru-RU.ts index ec0946025c..32a5194030 100644 --- a/packages/sheets-ui/src/locale/ru-RU.ts +++ b/packages/sheets-ui/src/locale/ru-RU.ts @@ -24,11 +24,6 @@ const locale: typeof zhCN = { undo: 'Отменить', redo: 'Повторить', formatPainter: 'Копировать формат', - currencyFormat: 'Форматировать как валюту', - percentageFormat: 'Форматировать как процент', - numberDecrease: 'Уменьшить количество десятичных знаков', - numberIncrease: 'Увеличить количество десятичных знаков', - moreFormats: 'Больше форматов', font: 'Шрифт', fontSize: 'Размер шрифта', bold: 'Жирный', @@ -42,11 +37,6 @@ const locale: typeof zhCN = { right: 'Выбрать цвет', }, resetColor: 'Сбросить', - customColor: 'ПОЛЬЗ.', - alternatingColors: 'Чередующиеся цвета', - confirmColor: 'ОК', - cancelColor: 'Отмена', - collapse: 'Свернуть', fillColor: { main: 'Цвет заливки', right: 'Выбрать цвет', @@ -75,122 +65,9 @@ const locale: typeof zhCN = { main: 'Поворот текста', right: 'Режим поворота текста', }, - freezeTopRow: 'Закрепить верхнюю строку', - sortAndFilter: 'Сортировка и фильтр', - findAndReplace: 'Найти и заменить', - sum: 'СУММ', - autoSum: 'Авто СУММ', - moreFunction: 'Больше функций', - conditionalFormatting: 'Условное форматирование', - comment: 'Комментарий', - pivotTable: 'Сводная таблица', - chart: 'Диаграмма', - screenshot: 'Снимок экрана', - splitColumn: 'Разделить текст', - insertImage: 'Вставить изображение', - insertLink: 'Вставить ссылку', - dataValidation: 'Проверка данных', - protection: 'Защита листа', - - clearText: 'Очистить цвет', - noColorSelectedText: 'Цвет не выбран', - - toolMore: 'Больше', - toolLess: 'Меньше', - toolClose: 'Закрыть', - toolMoreTip: 'Больше возможностей', - moreOptions: 'Больше опций', - - cellFormat: 'Настройка формата ячейки', - print: 'Печать', - borderMethod: { - top: 'Верхняя рамка', - bottom: 'Нижняя рамка', - left: 'Левая рамка', - right: 'Правая рамка', - }, more: 'Больше', - hideGridlines: 'Скрыть сетку', - showGridlines: 'Показать сетку', toggleGridlines: 'Переключить сетку', }, - defaultFmt: { - Automatic: { - text: 'Автоматический', - value: 'Общий', - example: '', - }, - Number: { - text: 'Число', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: 'Процент', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: 'Простой текст', - value: '@', - example: '', - }, - Scientific: { - text: 'Научный', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: 'Бухгалтерский учет', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: 'Десять тысяч', - value: 'w', - example: '1億2000万2500', - }, - Currency: { - text: 'Валюта', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: 'Десятичные 2 знака', - value: 'w0.00', - example: '2万2500.55', - }, - Date: { - text: 'Дата', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: 'Время', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: 'Время 24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: 'Дата и время', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: 'Дата и время 24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: 'Пользовательские форматы', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: 'Больше форматов валюты', - moreDateTime: 'Больше форматов даты и времени', - moreNumber: 'Больше форматов чисел', - - titleCurrency: 'Форматы валюты', - decimalPlaces: 'Десятичные знаки', - titleDateTime: 'Форматы даты и времени', - titleNumber: 'Числовые форматы', - }, - print: { - normalBtn: 'Обычный', - layoutBtn: 'Макет страницы', - pageBtn: 'Предпросмотр разрыва страницы', - - menuItemPrint: 'Печать (Ctrl+P)', - menuItemAreas: 'Области печати', - menuItemRows: 'Печатать строки заголовков', - menuItemColumns: 'Печатать столбцы заголовков', - }, align: { left: 'лево', center: 'центр', @@ -308,7 +185,6 @@ const locale: typeof zhCN = { }, rightClick: { copy: 'Копировать', - copyAs: 'Копировать как', cut: 'Вырезать', paste: 'Вставить', pasteSpecial: 'Специальная вставка', @@ -340,11 +216,6 @@ const locale: typeof zhCN = { hideSelectedColumn: 'Скрыть выбранный столбец', showHideColumn: 'Показать скрытый столбец', columnWidth: 'Ширина столбца', - to: 'К', - left: 'Лево', - right: 'Право', - top: 'Верх', - bottom: 'Низ', moveLeft: 'Переместить влево', moveUp: 'Переместить вверх', moveRight: 'Переместить вправо', @@ -352,42 +223,11 @@ const locale: typeof zhCN = { add: 'Добавить', row: 'Строка', column: 'Столбец', - width: 'Ширина', - height: 'Высота', - number: 'Номер', confirm: 'Подтвердить', - orderAZ: 'Порядок А-Я', - orderZA: 'Порядок Я-А', clearSelection: 'Очистить', clearContent: 'Очистить содержимое', clearFormat: 'Очистить формат', clearAll: 'Очистить все', - matrix: 'Матричная операция', - sortSelection: 'Сортировать', - filterSelection: 'Фильтр', - chartGeneration: 'Создать диаграмму', - firstLineTitle: 'Заголовок первой строки', - untitled: 'Без названия', - array1: 'Одномерный массив', - array2: 'Двумерный массив', - array3: 'Многомерные массивы', - diagonal: 'Диагональ', - antiDiagonal: 'Антидиагональ', - diagonalOffset: 'Смещение диагонали', - offset: 'Смещение', - boolean: 'Булевый', - flip: 'Перевернуть', - upAndDown: 'Вверх и вниз', - leftAndRight: 'Влево и вправо', - clockwise: 'По часовой стрелке', - counterclockwise: 'Против часовой стрелки', - transpose: 'Транспонировать', - matrixCalculation: 'Матричное вычисление', - plus: 'Плюс', - minus: 'Минус', - multiply: 'Умножить', - divided: 'Делить', - power: 'Степень', root: 'Корень', log: 'Логарифм', delete0: 'Удалить значения 0 с обоих концов', @@ -400,7 +240,6 @@ const locale: typeof zhCN = { freezeCol: 'Закрепить до этого столбца', freezeRow: 'Закрепить до этой строки', cancelFreeze: 'Отменить закрепление', - zenEditor: 'Редактор на весь экран', deleteAllRowsAlert: 'Нельзя удалить все строки на листе', deleteAllColumnsAlert: 'Нельзя удалить все столбцы на листе', hideAllRowsAlert: 'Нельзя скрыть все строки на листе', diff --git a/packages/sheets-ui/src/locale/vi-VN.ts b/packages/sheets-ui/src/locale/vi-VN.ts index eb35e4a067..002edbd150 100644 --- a/packages/sheets-ui/src/locale/vi-VN.ts +++ b/packages/sheets-ui/src/locale/vi-VN.ts @@ -24,11 +24,6 @@ const locale: typeof zhCN = { undo: 'Hoàn tác', redo: 'Làm lại', formatPainter: 'Chổi định dạng', - currencyFormat: 'Định dạng tiền tệ', - percentageFormat: 'Định dạng phần trăm', - numberDecrease: 'Giảm số thập phân', - numberIncrease: 'Tăng số thập phân', - moreFormats: 'Thêm định dạng', font: 'Phông chữ', fontSize: 'Cỡ chữ', bold: 'In đậm', @@ -42,11 +37,6 @@ const locale: typeof zhCN = { right: 'Chọn màu', }, resetColor: 'Đặt lại màu', - customColor: 'Tùy chỉnh màu', - alternatingColors: 'Màu xen kẽ', - confirmColor: 'Xác nhận màu', - cancelColor: 'Hủy', - collapse: 'Thu gọn', fillColor: { main: 'Màu ô', right: 'Chọn màu', @@ -75,122 +65,9 @@ const locale: typeof zhCN = { main: 'Xoay văn bản', right: 'Chọn kiểu xoay', }, - freezeTopRow: 'Đóng băng hàng đầu', - sortAndFilter: 'Sắp xếp và lọc', - findAndReplace: 'Tìm và thay thế', - sum: 'Tổng', - autoSum: 'Tổng tự động', - moreFunction: 'Thêm chức năng', - conditionalFormatting: 'Định dạng có điều kiện', - comment: 'Nhận xét', - pivotTable: 'Bảng tổng hợp', - chart: 'Biểu đồ', - screenshot: 'Chụp màn hình', - splitColumn: 'Tách cột', - insertImage: 'Chèn hình ảnh', - insertLink: 'Chèn liên kết', - dataValidation: 'Xác thực dữ liệu', - protection: 'Bảo vệ nội dung trang tính', - - clearText: 'Xóa lựa chọn màu', - noColorSelectedText: 'Không có màu nào được chọn', - - toolMore: 'Thêm', - toolLess: 'Ít hơn', - toolClose: 'Đóng lại', - toolMoreTip: 'Thêm chức năng', - moreOptions: 'Thêm tùy chọn', - - cellFormat: 'Định dạng ô', - print: 'In', - borderMethod: { - top: 'Viền trên', - bottom: 'Viền dưới', - left: 'Viền trái', - right: 'Viền phải', - }, more: 'Thêm', - hideGridlines: 'Ẩn đường lưới', - showGridlines: 'Hiện đường lưới', toggleGridlines: 'Chuyển đổi đường lưới', }, - defaultFmt: { - Automatic: { - text: 'Tự động', - value: 'General', - example: '', - }, - Number: { - text: 'Số', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: 'Phần trăm', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: 'Văn bản thuần', - value: '@', - example: '', - }, - Scientific: { - text: 'Khoa học', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: 'Kế toán', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: 'Ngàn', - value: 'w', - example: '1 tỷ 2000 triệu 2500', - }, - Currency: { - text: 'Tiền tệ', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: 'Ngàn với 2 số thập phân', - value: 'w0.00', - example: '2 triệu 2500.55', - }, - Date: { - text: 'Ngày', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: 'Thời gian', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: 'Thời gian 24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: 'Ngày giờ', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: 'Ngày giờ 24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: 'Định dạng tùy chỉnh', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: 'Thêm định dạng tiền tệ', - moreDateTime: 'Thêm định dạng ngày giờ', - moreNumber: 'Thêm định dạng số', - - titleCurrency: 'Định dạng tiền tệ', - decimalPlaces: 'Số thập phân', - titleDateTime: 'Định dạng ngày giờ', - titleNumber: 'Định dạng số', - }, - print: { - normalBtn: 'Chế độ xem thường', - layoutBtn: 'Bố cục trang', - pageBtn: 'Xem trước trang', - - menuItemPrint: 'In (Ctrl+P)', - menuItemAreas: 'Vùng in', - menuItemRows: 'Hàng tiêu đề', - menuItemColumns: 'Cột tiêu đề', - }, align: { left: 'Căn trái', center: 'Căn giữa', @@ -307,7 +184,6 @@ const locale: typeof zhCN = { }, rightClick: { copy: 'Sao chép', - copyAs: 'Sao chép dưới dạng', cut: 'Cắt', paste: 'Dán', pasteSpecial: 'Dán đặc biệt', @@ -339,11 +215,6 @@ const locale: typeof zhCN = { hideSelectedColumn: 'Ẩn cột đã chọn', showHideColumn: 'Hiển thị ẩn cột', columnWidth: 'Độ rộng cột', - to: 'Đến', - left: 'Trái', - right: 'Phải', - top: 'Trên', - bottom: 'Dưới', moveLeft: 'Di chuyển sang trái', moveUp: 'Di chuyển lên trên', moveRight: 'Di chuyển sang phải', @@ -351,42 +222,11 @@ const locale: typeof zhCN = { add: 'Thêm', row: 'Hàng', column: 'Cột', - width: 'Rộng', - height: 'Cao', - number: 'Số', confirm: 'Xác nhận', - orderAZ: 'Sắp xếp A-Z', - orderZA: 'Sắp xếp Z-A', clearSelection: 'Xóa', clearContent: 'Xóa nội dung', clearFormat: 'Xóa định dạng', clearAll: 'Xóa tất cả', - matrix: 'Ma trận thao tác vùng chọn', - sortSelection: 'Sắp xếp vùng chọn', - filterSelection: 'Lọc vùng chọn', - chartGeneration: 'Tạo biểu đồ', - firstLineTitle: 'Dòng đầu tiên làm tiêu đề', - untitled: 'Không tiêu đề', - array1: 'Mảng một chiều', - array2: 'Mảng hai chiều', - array3: 'Mảng đa chiều', - diagonal: 'Đường chéo', - antiDiagonal: 'Đường chéo ngược', - diagonalOffset: 'Độ lệch đường chéo', - offset: 'Độ lệch', - boolean: 'Giá trị Boolean', - flip: 'Lật', - upAndDown: 'Lên và xuống', - leftAndRight: 'Trái và phải', - clockwise: 'Theo chiều kim đồng hồ', - counterclockwise: 'Ngược chiều kim đồng hồ', - transpose: 'Chuyển vị', - matrixCalculation: 'Tính toán ma trận', - plus: 'Cộng', - minus: 'Trừ', - multiply: 'Nhân', - divided: 'Chia', - power: 'Lũy thừa', root: 'Căn bậc', log: 'log', delete0: 'Xóa giá trị 0 ở hai đầu', @@ -399,7 +239,6 @@ const locale: typeof zhCN = { freezeCol: 'Đóng băng cột', freezeRow: 'Đóng băng hàng', cancelFreeze: 'Hủy đóng băng', - zenEditor: 'Chế độ chỉnh sửa Zen', deleteAllRowsAlert: 'Bạn không thể xóa tất cả các hàng trong trang bảng', deleteAllColumnsAlert: 'Bạn không thể xóa tất cả các cột trong trang bảng', hideAllRowsAlert: 'Bạn không thể ẩn tất cả các hàng trong trang bảng', diff --git a/packages/sheets-ui/src/locale/zh-CN.ts b/packages/sheets-ui/src/locale/zh-CN.ts index 65e2f6b951..7a9087776c 100644 --- a/packages/sheets-ui/src/locale/zh-CN.ts +++ b/packages/sheets-ui/src/locale/zh-CN.ts @@ -23,11 +23,6 @@ const locale = { undo: '撤销', redo: '重做', formatPainter: '格式刷', - currencyFormat: '货币格式', - percentageFormat: '百分比格式', - numberDecrease: '减少小数位数', - numberIncrease: '增加小数位数', - moreFormats: '更多格式', font: '字体', fontSize: '字号', bold: '粗体', @@ -41,11 +36,6 @@ const locale = { right: '颜色选择', }, resetColor: '重置颜色', - customColor: '自定义', - alternatingColors: '交替颜色', - confirmColor: '确定颜色', - cancelColor: '取消', - collapse: '收起', fillColor: { main: '单元格颜色', right: '颜色选择', @@ -74,122 +64,9 @@ const locale = { main: '文本旋转', right: '旋转方式', }, - freezeTopRow: '冻结首行', - sortAndFilter: '排序和筛选', - findAndReplace: '查找替换', - sum: '求和', - autoSum: '自动求和', - moreFunction: '更多函数', - conditionalFormatting: '条件格式', - comment: '批注', - pivotTable: '数据透视表', - chart: '图表', - screenshot: '截图', - splitColumn: '分列', - insertImage: '插入图片', - insertLink: '插入链接', - dataValidation: '数据验证', - protection: '保护工作表内容', - - clearText: '清除颜色选择', - noColorSelectedText: '没有颜色被选择', - - toolMore: '更多', - toolLess: '少于', - toolClose: '收起', - toolMoreTip: '更多功能', - moreOptions: '更多选项', - - cellFormat: '设置单元格格式', - print: '打印', - borderMethod: { - top: '上框线', - bottom: '下框线', - left: '左框线', - right: '右框线', - }, more: '更多', - hideGridlines: '隐藏网格线', - showGridlines: '展示网格线', toggleGridlines: '切换网格线', }, - defaultFmt: { - Automatic: { - text: '自动', - value: 'General', - example: '', - }, - Number: { - text: '数字', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: '百分比', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: '纯文本', - value: '@', - example: '', - }, - Scientific: { - text: '科学计数', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: '会计', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: '万元', - value: 'w', - example: '1亿2000万2500', - }, - Currency: { - text: '货币', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: '万元2位小数', - value: 'w0.00', - example: '2万2500.55', - }, - Date: { - text: '日期', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: '时间', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: '时间24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: '日期时间', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: '日期时间24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: '自定义格式', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: '更多货币格式', - moreDateTime: '更多日期与时间格式', - moreNumber: '更多数字格式', - - titleCurrency: '货币格式', - decimalPlaces: '小数位数', - titleDateTime: '日期与时间格式', - titleNumber: '数字格式', - }, - print: { - normalBtn: '常规视图', - layoutBtn: '页面布局', - pageBtn: '分页预览', - - menuItemPrint: '打印(Ctrl+P)', - menuItemAreas: '打印区域', - menuItemRows: '打印标题行', - menuItemColumns: '打印标题列', - }, align: { left: '左对齐', center: '中间对齐', @@ -306,7 +183,6 @@ const locale = { }, rightClick: { copy: '复制', - copyAs: '复制为', cut: '剪切', paste: '粘贴', pasteSpecial: '选择性粘贴', @@ -338,11 +214,6 @@ const locale = { hideSelectedColumn: '隐藏选中列', showHideColumn: '显示隐藏列', columnWidth: '列宽', - to: '向', - left: '左', - right: '右', - top: '上', - bottom: '下', moveLeft: '左移', moveUp: '上移', moveRight: '右移', @@ -350,42 +221,11 @@ const locale = { add: '增加', row: '行', column: '列', - width: '宽', - height: '高', - number: '数字', confirm: '确认', - orderAZ: 'A-Z顺序排列', - orderZA: 'Z-A降序排列', clearSelection: '清除', clearContent: '清除内容', clearFormat: '清除格式', clearAll: '清除全部', - matrix: '矩阵操作选区', - sortSelection: '排序选区', - filterSelection: '筛选选区', - chartGeneration: '图表生成', - firstLineTitle: '首行为标题', - untitled: '无标题', - array1: '一维数组', - array2: '二维数组', - array3: '多维数组', - diagonal: '对角线', - antiDiagonal: '反对角线', - diagonalOffset: '对角偏移', - offset: '偏移量', - boolean: '布尔值', - flip: '翻转', - upAndDown: '上下', - leftAndRight: '左右', - clockwise: '顺时针', - counterclockwise: '逆时针', - transpose: '转置', - matrixCalculation: '矩阵计算', - plus: '加', - minus: '减', - multiply: '乘', - divided: '除', - power: '次方', root: '次方根', log: 'log', delete0: '删除两端0值', @@ -398,7 +238,6 @@ const locale = { freezeCol: '冻结列', freezeRow: '冻结行', cancelFreeze: '取消冻结', - zenEditor: '禅模式编辑', deleteAllRowsAlert: '您无法删除工作表上的所有行', deleteAllColumnsAlert: '您无法删除工作表上的所有列', hideAllRowsAlert: '您无法隐藏工作表上的所有行', diff --git a/packages/sheets-ui/src/locale/zh-TW.ts b/packages/sheets-ui/src/locale/zh-TW.ts index 3fe9d8fd61..a0db47b531 100644 --- a/packages/sheets-ui/src/locale/zh-TW.ts +++ b/packages/sheets-ui/src/locale/zh-TW.ts @@ -25,11 +25,6 @@ const locale: typeof zhCN = { undo: '撤銷', redo: '重做', formatPainter: '格式刷', - currencyFormat: '貨幣格式', - percentageFormat: '百分比格式', - numberDecrease: '減少小數位數', - numberIncrease: '增加小數位數', - moreFormats: '更多格式', font: '字體', fontSize: '字號', bold: '粗體', @@ -43,11 +38,6 @@ const locale: typeof zhCN = { right: '顏色選擇', }, resetColor: '重置顏色', - customColor: '自訂', - alternatingColors: '交替顏色', - confirmColor: '確定顏色', - cancelColor: '取消', - collapse: '收起', fillColor: { main: '單元格顏色', right: '顏色選擇', @@ -76,122 +66,9 @@ const locale: typeof zhCN = { main: '文字旋轉', right: '旋轉方式', }, - freezeTopRow: '凍結首行', - sortAndFilter: '排序與篩選', - findAndReplace: '尋找替換', - sum: '求和', - autoSum: '自動求和', - moreFunction: '更多函數', - conditionalFormatting: '條件格式', - comment: '批註', - pivotTable: '資料透視表', - chart: '圖表', - screenshot: '截圖', - splitColumn: '分列', - insertImage: '插入圖片', - insertLink: '插入連結', - dataValidation: '資料驗證', - protection: '保護工作表內容', - - clearText: '清除顏色選擇', - noColorSelectedText: '沒有顏色被選', - - toolMore: '更多', - toolLess: '少於', - toolClose: '收起', - toolMoreTip: '更多功能', - moreOptions: '更多選項', - - cellFormat: '設定儲存格格式', - print: '列印', - borderMethod: { - top: '上框線', - bottom: '下框線', - left: '左框線', - right: '右框線', - }, more: '更多', - hideGridlines: '隱藏網格線', - showGridlines: '顯示網格線', toggleGridlines: '切換網格線', }, - defaultFmt: { - Automatic: { - text: '自動', - value: 'General', - example: '', - }, - Number: { - text: '數字', - value: '##0.00', - example: '1000.12', - }, - Percent: { - text: '百分比', - value: '#0.00%', - example: '12.21%', - }, - PlainText: { - text: '純文字', - value: '@', - example: '', - }, - Scientific: { - text: '科學計數', - value: '0.00E+00', - example: '1.01E+5', - }, - Accounting: { - text: '會計', - value: '¥(0.00)', - example: '¥(1200.09)', - }, - Thousand: { - text: '萬元', - value: 'w', - example: '1億2000萬2500', - }, - Currency: { - text: '貨幣', - value: '¥0.00', - example: '¥1200.09', - }, - Digit: { - text: '萬元2位小數', - value: 'w0.00', - example: '2萬2500.55', - }, - Date: { - text: '日期', - value: 'yyyy-MM-dd', - example: '2017-11-29', - }, - Time: { text: '時間', value: 'hh:mm AM/PM', example: '3:00 PM' }, - Time24H: { text: '時間24H', value: 'hh:mm', example: '15:00' }, - DateTime: { text: '日期時間', value: 'yyyy-MM-dd hh:mm AM/PM', example: '2017-11-29 3:00 PM' }, - DateTime24H: { text: '日期時間24H', value: 'yyyy-MM-dd hh:mm', example: '2017-11-29 15:00' }, - CustomFormats: { text: '自訂格式', value: 'fmtOtherSelf', example: '' }, - }, - format: { - moreCurrency: '更多貨幣格式', - moreDateTime: '更多日期與時間格式', - moreNumber: '更多數字格式', - - titleCurrency: '貨幣格式', - decimalPlaces: '小數位數', - titleDateTime: '日期與時間格式', - titleNumber: '數字格式', - }, - print: { - normalBtn: '常規視圖', - layoutBtn: '頁面佈局', - pageBtn: '分頁預覽', - - menuItemPrint: '打印(Ctrl+P)', - menuItemAreas: '列印區域', - menuItemRows: '列印標題行', - menuItemColumns: '列印標題列', - }, align: { left: '左對齊', center: '中間對齊', @@ -308,7 +185,6 @@ const locale: typeof zhCN = { }, rightClick: { copy: '複製', - copyAs: '複製為', cut: '剪切', paste: '貼上', pasteSpecial: '選擇性貼上', @@ -340,11 +216,6 @@ const locale: typeof zhCN = { hideSelectedColumn: '隱藏選取列', showHideColumn: '顯示隱藏列', columnWidth: '列寬', - to: '向', - left: '左', - right: '右', - top: '上', - bottom: '下', moveLeft: '左移', moveUp: '上移', moveRight: '右移', @@ -352,42 +223,11 @@ const locale: typeof zhCN = { add: '增加', row: '行', column: '列', - width: '寬', - height: '高', - number: '數字', confirm: '確認', - orderAZ: 'A-Z順序排列', - orderZA: 'Z-A降序排列', clearSelection: '清除', clearContent: '清除內容', clearFormat: '清除格式', clearAll: '清除全部', - matrix: '矩陣運算選區', - sortSelection: '排序選區', - filterSelection: '篩選選區', - chartGeneration: '圖表生成', - firstLineTitle: '首行為標題', - untitled: '無標題', - array1: '一維數組', - array2: '二維數組', - array3: '多維數組', - diagonal: '對角線', - antiDiagonal: '反對角線', - diagonalOffset: '對角線偏移', - offset: '偏移量', - boolean: '布林值', - flip: '翻轉', - upAndDown: '上下', - leftAndRight: '左右', - clockwise: '順時針', - counterclockwise: '逆時針', - transpose: '轉置', - matrixCalculation: '矩陣計算', - plus: '加', - minus: '減', - multiply: '乘', - divided: '除', - power: '次方', root: '次方根', log: 'log', delete0: '刪除兩端0值', @@ -400,7 +240,6 @@ const locale: typeof zhCN = { freezeCol: '凍結列', freezeRow: '凍結行', cancelFreeze: '取消凍結', - zenEditor: '禪模式編輯', deleteAllRowsAlert: '您無法刪除工作表上的所有行', deleteAllColumnsAlert: '您無法刪除工作表上的所有欄位', hideAllRowsAlert: '您無法隱藏工作表上的所有行', diff --git a/packages/sheets-ui/src/views/defined-name/DefinedName.tsx b/packages/sheets-ui/src/views/defined-name/DefinedName.tsx index 0dcf4ba6bf..7aca46941b 100644 --- a/packages/sheets-ui/src/views/defined-name/DefinedName.tsx +++ b/packages/sheets-ui/src/views/defined-name/DefinedName.tsx @@ -14,12 +14,11 @@ * limitations under the License. */ -import { Dropdown } from '@univerjs/design'; +import { clsx, Dropdown } from '@univerjs/design'; import { IDefinedNamesService } from '@univerjs/engine-formula'; import { MoreDownSingle } from '@univerjs/icons'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { DefinedNameOverlay } from './DefinedNameOverlay'; import styles from './index.module.less'; @@ -35,7 +34,6 @@ export function DefinedName({ disable }: { disable: boolean }) { return () => { subscription.unsubscribe(); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); // Empty dependency array means this effect runs once on mount and clean up on unmount // TODO: @DR-Univer: Should be implemented diff --git a/packages/sheets-ui/src/views/defined-name/DefinedNameContainer.tsx b/packages/sheets-ui/src/views/defined-name/DefinedNameContainer.tsx index 2c8e035091..e85c7b714f 100644 --- a/packages/sheets-ui/src/views/defined-name/DefinedNameContainer.tsx +++ b/packages/sheets-ui/src/views/defined-name/DefinedNameContainer.tsx @@ -18,13 +18,12 @@ import type { Nullable, Workbook } from '@univerjs/core'; import type { IDefinedNamesServiceParam, ISetDefinedNameMutationParam } from '@univerjs/engine-formula'; import { ICommandService, IUniverInstanceService, LocaleService, Tools, UniverInstanceType } from '@univerjs/core'; -import { Confirm, Tooltip } from '@univerjs/design'; +import { clsx, Confirm, Tooltip } from '@univerjs/design'; import { IDefinedNamesService, serializeRangeWithSheet } from '@univerjs/engine-formula'; import { CheckMarkSingle, DeleteSingle, IncreaseSingle } from '@univerjs/icons'; import { InsertDefinedNameCommand, RemoveDefinedNameCommand, SCOPE_WORKBOOK_VALUE_DEFINED_NAME, SetDefinedNameCommand, SetWorksheetShowCommand, SheetsSelectionsService } from '@univerjs/sheets'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { DefinedNameInput } from './DefinedNameInput'; import styles from './index.module.less'; diff --git a/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx b/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx index a090110074..8cee774efd 100644 --- a/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx +++ b/packages/sheets-ui/src/views/mobile/sheet-bar/MobileSheetBar.tsx @@ -18,6 +18,7 @@ import type { ICommandInfo, Workbook } from '@univerjs/core'; import type { ISetWorksheetActiveOperationParams } from '@univerjs/sheets'; import type { IBaseSheetBarProps } from '../../sheet-bar/sheet-bar-tabs/SheetBarItem'; import { ICommandService } from '@univerjs/core'; +import { clsx } from '@univerjs/design'; import { InsertSheetMutation, RemoveSheetMutation, @@ -27,9 +28,7 @@ import { SetWorksheetOrderMutation, } from '@univerjs/sheets'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; - +import { useCallback, useEffect, useRef, useState } from 'react'; import { useActiveWorkbook } from '../../../components/hook'; import styles from './index.module.less'; diff --git a/packages/sheets-ui/src/views/permission/panel-list/index.tsx b/packages/sheets-ui/src/views/permission/panel-list/index.tsx index d6add22e50..0af8243548 100644 --- a/packages/sheets-ui/src/views/permission/panel-list/index.tsx +++ b/packages/sheets-ui/src/views/permission/panel-list/index.tsx @@ -19,16 +19,13 @@ import type { IPermissionPoint } from '@univerjs/protocol'; import type { IRangeProtectionRule, IWorksheetProtectionRule } from '@univerjs/sheets'; import type { IPermissionPanelRule } from '../../../services/permission/sheet-permission-panel.model'; import { IAuthzIoService, ICommandService, IPermissionService, IUniverInstanceService, LocaleService, Tools, UniverInstanceType, UserManagerService } from '@univerjs/core'; -import { Avatar, Button, Tooltip } from '@univerjs/design'; +import { Avatar, Button, clsx, Tooltip } from '@univerjs/design'; import { serializeRange } from '@univerjs/engine-formula'; import { DeleteSingle, WriteSingle } from '@univerjs/icons'; import { UnitAction, UnitObject } from '@univerjs/protocol'; import { baseProtectionActions, DeleteRangeProtectionCommand, DeleteWorksheetProtectionCommand, RangeProtectionRuleModel, SetWorksheetActiveOperation, WorkbookCreateProtectPermission, WorksheetProtectionRuleModel } from '@univerjs/sheets'; import { ISidebarService, useDependency, useObservable } from '@univerjs/ui'; -import clsx from 'clsx'; - -import React, { useCallback, useEffect, useState } from 'react'; - +import { useCallback, useEffect, useState } from 'react'; import { distinctUntilChanged, merge } from 'rxjs'; import { UNIVER_SHEET_PERMISSION_PANEL } from '../../../consts/permission'; import { useHighlightRange } from '../../../hooks/use-highlight-range'; diff --git a/packages/sheets-ui/src/views/permission/permission-dialog/index.tsx b/packages/sheets-ui/src/views/permission/permission-dialog/index.tsx index ba41e18ed4..9f845d0743 100644 --- a/packages/sheets-ui/src/views/permission/permission-dialog/index.tsx +++ b/packages/sheets-ui/src/views/permission/permission-dialog/index.tsx @@ -18,12 +18,11 @@ import type { Workbook } from '@univerjs/core'; import type { ICollaborator, UnitAction } from '@univerjs/protocol'; import { IAuthzIoService, ICommandService, IPermissionService, IUniverInstanceService, LocaleService, UniverInstanceType } from '@univerjs/core'; -import { Button, Switch } from '@univerjs/design'; +import { Button, clsx, Switch } from '@univerjs/design'; import { ObjectScope, UnitObject, UnitRole } from '@univerjs/protocol'; import { getAllWorksheetPermissionPoint, SetWorksheetPermissionPointsCommand, WorksheetProtectionPointModel } from '@univerjs/sheets'; import { IDialogService, useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { defaultWorksheetUnitActionList, subUnitPermissionTypeMap, UNIVER_SHEET_PERMISSION_DIALOG_ID } from '../../../consts/permission'; import Spin from '../spin'; import styles from './index.module.less'; diff --git a/packages/sheets-ui/src/views/permission/user-dialog/index.tsx b/packages/sheets-ui/src/views/permission/user-dialog/index.tsx index 8584eef8ae..2cff4c5deb 100644 --- a/packages/sheets-ui/src/views/permission/user-dialog/index.tsx +++ b/packages/sheets-ui/src/views/permission/user-dialog/index.tsx @@ -16,19 +16,18 @@ import type { ICollaborator } from '@univerjs/protocol'; import { LocaleService } from '@univerjs/core'; -import { Avatar, Button, Input } from '@univerjs/design'; +import { Avatar, Button, clsx, Input } from '@univerjs/design'; import { CheckMarkSingle } from '@univerjs/icons'; import { UnitRole } from '@univerjs/protocol'; import { IDialogService, useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useState } from 'react'; +import { useState } from 'react'; import { UNIVER_SHEET_PERMISSION_USER_DIALOG_ID } from '../../../consts/permission'; import { SheetPermissionUserManagerService } from '../../../services/permission/sheet-permission-user-list.service'; import { UserEmptyBase64 } from './constant'; import styles from './index.module.less'; export const SheetPermissionUserDialog = () => { - const [inputValue, setInputValue] = React.useState(''); + const [inputValue, setInputValue] = useState(''); const localeService = useDependency(LocaleService); const dialogService = useDependency(IDialogService); const sheetPermissionUserManagerService = useDependency(SheetPermissionUserManagerService); diff --git a/packages/sheets-ui/src/views/status-bar/StatusBar.tsx b/packages/sheets-ui/src/views/status-bar/StatusBar.tsx index 5d53acf0e2..2d9be7840f 100644 --- a/packages/sheets-ui/src/views/status-bar/StatusBar.tsx +++ b/packages/sheets-ui/src/views/status-bar/StatusBar.tsx @@ -18,9 +18,8 @@ import type { Nullable } from '@univerjs/core'; import type { IStatusBarServiceStatus, StatusBarService } from '../../services/status-bar.service'; import type { IStatisticItem } from './CopyableStatisticItem'; import { debounce, IConfigService } from '@univerjs/core'; +import { clsx } from '@univerjs/design'; import { useDependency } from '@univerjs/ui'; - -import clsx from 'clsx'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { HIDE_STATUS_BAR_STATISTIC } from '../../controllers/config.schema'; import { IStatusBarService } from '../../services/status-bar.service'; diff --git a/packages/sheets-zen-editor/package.json b/packages/sheets-zen-editor/package.json index 44e6137458..e46da5af1e 100644 --- a/packages/sheets-zen-editor/package.json +++ b/packages/sheets-zen-editor/package.json @@ -92,7 +92,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/sheets-zen-editor/src/locale/en-US.ts b/packages/sheets-zen-editor/src/locale/en-US.ts index 8ad27ebe98..b1a985c958 100644 --- a/packages/sheets-zen-editor/src/locale/en-US.ts +++ b/packages/sheets-zen-editor/src/locale/en-US.ts @@ -17,6 +17,9 @@ import type zhCN from './zh-CN'; const locale: typeof zhCN = { + rightClick: { + zenEditor: 'Full Screen Editor', + }, shortcut: { sheet: { 'zen-edit-cancel': 'Cancel Zen Edit', diff --git a/packages/sheets-zen-editor/src/locale/fa-IR.ts b/packages/sheets-zen-editor/src/locale/fa-IR.ts index 9d83a1e42c..0ec70e650b 100644 --- a/packages/sheets-zen-editor/src/locale/fa-IR.ts +++ b/packages/sheets-zen-editor/src/locale/fa-IR.ts @@ -17,6 +17,9 @@ import type zhCN from './zh-CN'; const locale: typeof zhCN = { + rightClick: { + zenEditor: 'ویرایشگر تمام صفحه', + }, shortcut: { sheet: { 'zen-edit-cancel': 'لغو ویرایش Zen', diff --git a/packages/sheets-zen-editor/src/locale/fr-FR.ts b/packages/sheets-zen-editor/src/locale/fr-FR.ts index 550968d7bc..c9c69e330b 100644 --- a/packages/sheets-zen-editor/src/locale/fr-FR.ts +++ b/packages/sheets-zen-editor/src/locale/fr-FR.ts @@ -17,6 +17,9 @@ import type enUS from './en-US'; const locale: typeof enUS = { + rightClick: { + zenEditor: 'Éditeur plein écran', + }, shortcut: { sheet: { 'zen-edit-cancel': 'Annuler l\'édition plein écran', diff --git a/packages/sheets-zen-editor/src/locale/ru-RU.ts b/packages/sheets-zen-editor/src/locale/ru-RU.ts index 03accf9d7f..a9edf21c55 100644 --- a/packages/sheets-zen-editor/src/locale/ru-RU.ts +++ b/packages/sheets-zen-editor/src/locale/ru-RU.ts @@ -17,6 +17,9 @@ import type zhCN from './zh-CN'; const locale: typeof zhCN = { + rightClick: { + zenEditor: 'Редактор на весь экран', + }, shortcut: { sheet: { 'zen-edit-cancel': 'Отменить Zen редактирование', diff --git a/packages/sheets-zen-editor/src/locale/vi-VN.ts b/packages/sheets-zen-editor/src/locale/vi-VN.ts index bf2caecbd5..b32a0909e3 100644 --- a/packages/sheets-zen-editor/src/locale/vi-VN.ts +++ b/packages/sheets-zen-editor/src/locale/vi-VN.ts @@ -17,6 +17,9 @@ import type zhCN from './zh-CN'; const locale: typeof zhCN = { + rightClick: { + zenEditor: 'Chế độ chỉnh sửa Zen', + }, shortcut: { sheet: { 'zen-edit-cancel': 'Hủy chỉnh sửa (trạng thái Zen mode)', diff --git a/packages/sheets-zen-editor/src/locale/zh-CN.ts b/packages/sheets-zen-editor/src/locale/zh-CN.ts index ada6e2afc4..14f12f8d52 100644 --- a/packages/sheets-zen-editor/src/locale/zh-CN.ts +++ b/packages/sheets-zen-editor/src/locale/zh-CN.ts @@ -15,6 +15,9 @@ */ const locale = { + rightClick: { + zenEditor: '禅模式编辑', + }, shortcut: { sheet: { 'zen-edit-cancel': '取消编辑(禅模式状态)', diff --git a/packages/sheets-zen-editor/src/locale/zh-TW.ts b/packages/sheets-zen-editor/src/locale/zh-TW.ts index 8c74887f50..ed36670fd5 100644 --- a/packages/sheets-zen-editor/src/locale/zh-TW.ts +++ b/packages/sheets-zen-editor/src/locale/zh-TW.ts @@ -17,6 +17,9 @@ import type zhCN from './zh-CN'; const locale: typeof zhCN = { + rightClick: { + zenEditor: '禪模式編輯', + }, shortcut: { sheet: { 'zen-edit-cancel': '取消編輯(禪模式狀態)', diff --git a/packages/sheets-zen-editor/src/views/zen-editor/ZenEditor.tsx b/packages/sheets-zen-editor/src/views/zen-editor/ZenEditor.tsx index 8f969d6436..6e6d9f1752 100644 --- a/packages/sheets-zen-editor/src/views/zen-editor/ZenEditor.tsx +++ b/packages/sheets-zen-editor/src/views/zen-editor/ZenEditor.tsx @@ -16,19 +16,17 @@ import type { IDocumentData } from '@univerjs/core'; import { DEFAULT_EMPTY_DOCUMENT_VALUE, DOCS_ZEN_EDITOR_UNIT_ID_KEY, DocumentFlavor, ICommandService } from '@univerjs/core'; +import { clsx } from '@univerjs/design'; import { IEditorService } from '@univerjs/docs-ui'; import { CheckMarkSingle, CloseSingle } from '@univerjs/icons'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; - -import React, { useEffect, useRef } from 'react'; +import { useEffect, useRef } from 'react'; import { CancelZenEditCommand, ConfirmZenEditCommand } from '../../commands/commands/zen-editor.command'; - import { IZenEditorManagerService } from '../../services/zen-editor.service'; import styles from './index.module.less'; const COMPONENT_PREFIX = 'ZEN_EDITOR_PLUGIN_'; -// eslint-disable-next-line react-refresh/only-export-components + export const ZEN_EDITOR_COMPONENT = `${COMPONENT_PREFIX}ZEN_EDITOR_COMPONENT`; const INITIAL_SNAPSHOT: IDocumentData = { @@ -100,7 +98,6 @@ export function ZenEditor() { registerSubscription.dispose(); resizeObserver.unobserve(editorDom); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); // Empty dependency array means this effect runs once on mount and clean up on unmount function handleCloseBtnClick() { diff --git a/packages/sheets/package.json b/packages/sheets/package.json index 1eacf43e5f..1b139db41c 100644 --- a/packages/sheets/package.json +++ b/packages/sheets/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/slides-ui/package.json b/packages/slides-ui/package.json index 74107051d6..0243a42018 100644 --- a/packages/slides-ui/package.json +++ b/packages/slides-ui/package.json @@ -87,7 +87,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/slides-ui/src/components/image-popup-menu/ImagePopupMenu.tsx b/packages/slides-ui/src/components/image-popup-menu/ImagePopupMenu.tsx index 771748179a..ef3cffedee 100644 --- a/packages/slides-ui/src/components/image-popup-menu/ImagePopupMenu.tsx +++ b/packages/slides-ui/src/components/image-popup-menu/ImagePopupMenu.tsx @@ -16,11 +16,10 @@ import type { IDrawingSearch } from '@univerjs/core'; import { ICommandService, LocaleService } from '@univerjs/core'; -import { Dropdown } from '@univerjs/design'; +import { clsx, Dropdown } from '@univerjs/design'; import { Autofill, MoreDownSingle } from '@univerjs/icons'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useState } from 'react'; +import { useState } from 'react'; import styles from './index.module.less'; export interface IImagePopupMenuItem { @@ -41,7 +40,7 @@ export interface IImagePopupMenuProps { }; } -export const SlideImagePopupMenu: React.FC = (props: IImagePopupMenuProps) => { +export function SlideImagePopupMenu(props: IImagePopupMenuProps) { const menuItems = props.popup?.extraProps?.menuItems; if (!menuItems) { diff --git a/packages/slides-ui/src/components/panels/ArrangePanel.tsx b/packages/slides-ui/src/components/panels/ArrangePanel.tsx index f8ee4f5edd..2fd30564a3 100644 --- a/packages/slides-ui/src/components/panels/ArrangePanel.tsx +++ b/packages/slides-ui/src/components/panels/ArrangePanel.tsx @@ -15,15 +15,11 @@ */ import type { Nullable } from '@univerjs/core'; - import type { Image, Rect, RichText } from '@univerjs/engine-render'; import { ICommandService, LocaleService } from '@univerjs/core'; -import { Button } from '@univerjs/design'; +import { Button, clsx } from '@univerjs/design'; import { BottomSingle, MoveDownSingle, MoveUpSingle, TopmostSingle } from '@univerjs/icons'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; - -import React from 'react'; import { UpdateSlideElementOperation } from '../../commands/operations/update-element.operation'; import { CanvasView } from '../../controllers/canvas-view'; import styles from './index.module.less'; diff --git a/packages/slides-ui/src/components/panels/FillPanel.tsx b/packages/slides-ui/src/components/panels/FillPanel.tsx index 29cba47a4e..e9b984a13c 100644 --- a/packages/slides-ui/src/components/panels/FillPanel.tsx +++ b/packages/slides-ui/src/components/panels/FillPanel.tsx @@ -18,10 +18,9 @@ import type { Nullable } from '@univerjs/core'; import type { Rect } from '@univerjs/engine-render'; import { ICommandService, LocaleService } from '@univerjs/core'; -import { ColorPicker, Dropdown } from '@univerjs/design'; +import { clsx, ColorPicker, Dropdown } from '@univerjs/design'; import { MoreDownSingle, PaintBucket } from '@univerjs/icons'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; import React from 'react'; import { UpdateSlideElementOperation } from '../../commands/operations/update-element.operation'; diff --git a/packages/slides-ui/src/components/panels/TransformPanel.tsx b/packages/slides-ui/src/components/panels/TransformPanel.tsx index f04aed83c5..87e6fed052 100644 --- a/packages/slides-ui/src/components/panels/TransformPanel.tsx +++ b/packages/slides-ui/src/components/panels/TransformPanel.tsx @@ -15,13 +15,11 @@ */ import type { Nullable } from '@univerjs/core'; - import type { BaseObject, IChangeObserverConfig, Image, Rect, RichText } from '@univerjs/engine-render'; import { ICommandService, LocaleService } from '@univerjs/core'; -import { InputNumber } from '@univerjs/design'; +import { clsx, InputNumber } from '@univerjs/design'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { UpdateSlideElementOperation } from '../../commands/operations/update-element.operation'; import { CanvasView } from '../../controllers/canvas-view'; import styles from './index.module.less'; @@ -195,7 +193,6 @@ export default function TransformPanel(props: IProps) { changeStartSub.unsubscribe(); // focusSub.unsubscribe(); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); function handleWidthChange(val: number | null) { diff --git a/packages/slides-ui/src/components/slide-bar/SlideBar.tsx b/packages/slides-ui/src/components/slide-bar/SlideBar.tsx index 2caa59ed5c..6b4aac6fe8 100644 --- a/packages/slides-ui/src/components/slide-bar/SlideBar.tsx +++ b/packages/slides-ui/src/components/slide-bar/SlideBar.tsx @@ -16,10 +16,9 @@ import type { SlideDataModel } from '@univerjs/core'; import { ICommandService, IUniverInstanceService, LocaleService, UniverInstanceType } from '@univerjs/core'; -import { Scrollbar } from '@univerjs/design'; +import { clsx, Scrollbar } from '@univerjs/design'; import { IRenderManagerService } from '@univerjs/engine-render'; import { useDependency } from '@univerjs/ui'; -import clsx from 'clsx'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { ActivateSlidePageOperation } from '../../commands/operations/activate.operation'; import { AppendSlideOperation } from '../../commands/operations/append-slide.operation'; @@ -67,7 +66,6 @@ export function SlideSideBar() { return () => { subscriber?.unsubscribe(); }; - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { diff --git a/packages/slides/package.json b/packages/slides/package.json index 41e71fa2a9..79b997f7da 100644 --- a/packages/slides/package.json +++ b/packages/slides/package.json @@ -64,7 +64,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 6b17c05986..eb5bc6e466 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -60,7 +60,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/thread-comment-ui/package.json b/packages/thread-comment-ui/package.json index 81fe3969a6..1be5a54c94 100644 --- a/packages/thread-comment-ui/package.json +++ b/packages/thread-comment-ui/package.json @@ -82,7 +82,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/thread-comment/package.json b/packages/thread-comment/package.json index 1c60166874..77ba6efa1c 100644 --- a/packages/thread-comment/package.json +++ b/packages/thread-comment/package.json @@ -66,7 +66,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.0", + "vitest": "^3.0.7" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 32727ec8af..5c68d0a8e5 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -98,8 +98,8 @@ "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "typescript": "^5.7.3", - "vite": "^6.1.1", - "vitest": "^3.0.6", + "vite": "^6.2.0", + "vitest": "^3.0.7", "vue": "^3.5.13" } } diff --git a/packages/ui/src/components/custom-label/CustomLabel.tsx b/packages/ui/src/components/custom-label/CustomLabel.tsx index b257befeb6..e06f5bbd45 100644 --- a/packages/ui/src/components/custom-label/CustomLabel.tsx +++ b/packages/ui/src/components/custom-label/CustomLabel.tsx @@ -93,7 +93,7 @@ export function CustomLabel(props: ICustomLabelProps) { nodes.push( ); } diff --git a/packages/ui/src/components/menu/desktop/Menu.tsx b/packages/ui/src/components/menu/desktop/Menu.tsx index ac352cb1f5..e7016dc72f 100644 --- a/packages/ui/src/components/menu/desktop/Menu.tsx +++ b/packages/ui/src/components/menu/desktop/Menu.tsx @@ -14,8 +14,7 @@ * limitations under the License. */ -import type { - MenuRef } from '@univerjs/design'; +import type { MenuRef } from '@univerjs/design'; import type { IDisplayMenuItem, IMenuButtonItem, @@ -26,15 +25,13 @@ import type { } from '../../../services/menu/menu'; import { isRealNum } from '@univerjs/core'; import { + clsx, Menu as DesignMenu, MenuItem as DesignMenuItem, - MenuItemGroup as DesignMenuItemGroup, - SubMenu as DesignSubMenu, + MenuItemGroup as DesignMenuItemGroup, SubMenu as DesignSubMenu, } from '@univerjs/design'; import { CheckMarkSingle, MoreSingle } from '@univerjs/icons'; -import clsx from 'clsx'; - -import React, { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { combineLatest, isObservable, of } from 'rxjs'; import { ILayoutService } from '../../../services/layout/layout.service'; import { MenuItemType } from '../../../services/menu/menu'; @@ -46,6 +43,7 @@ import styles from './index.module.less'; // TODO: @jikkai disabled and hidden are not working +/** @deprecated */ export interface IBaseMenuProps { parentKey?: string | number; menuType?: string; @@ -60,6 +58,7 @@ export interface IBaseMenuProps { onOptionSelect?: (option: IValueOption) => void; } +/** @deprecated */ function MenuWrapper(props: IBaseMenuProps) { const { menuType, onOptionSelect } = props; @@ -132,6 +131,7 @@ function MenuWrapper(props: IBaseMenuProps) { : null); } +/** @deprecated */ function MenuOptionsWrapper(props: IBaseMenuProps) { const { options, value, onOptionSelect, parentKey } = props; @@ -181,6 +181,7 @@ function MenuOptionsWrapper(props: IBaseMenuProps) { }) ?? null; } +/** @deprecated */ export const Menu = (props: IBaseMenuProps) => { const { overViewport, ...restProps } = props; const [menuEl, setMenuEl] = useState(); @@ -205,11 +206,13 @@ export const Menu = (props: IBaseMenuProps) => { ); }; +/** @deprecated */ interface IMenuItemProps { menuItem: IDisplayMenuItem; onClick: (object: Partial) => void; } +/** @deprecated */ function MenuItem({ menuItem, onClick }: IMenuItemProps) { const menuManagerService = useDependency(IMenuManagerService); diff --git a/packages/ui/src/components/notification/Notification.tsx b/packages/ui/src/components/notification/Notification.tsx index 40c3d51ccd..199482596f 100644 --- a/packages/ui/src/components/notification/Notification.tsx +++ b/packages/ui/src/components/notification/Notification.tsx @@ -14,14 +14,11 @@ * limitations under the License. */ -/* eslint-disable react-refresh/only-export-components */ - -import { ConfigContext } from '@univerjs/design'; -import { CloseSingle, ErrorSingle, SuccessSingle, WarningSingle } from '@univerjs/icons'; -import clsx from 'clsx'; -import { useNotification } from 'rc-notification'; import type { Placement } from 'rc-notification/es/interface'; -import React, { useContext, useEffect, useRef } from 'react'; +import { clsx, ConfigContext } from '@univerjs/design'; +import { CloseSingle, ErrorSingle, SuccessSingle, WarningSingle } from '@univerjs/icons'; +import { useNotification } from 'rc-notification'; +import { useContext, useEffect, useRef } from 'react'; import { Subject } from 'rxjs'; import styles from './index.module.less'; diff --git a/packages/ui/src/services/menu/menu.ts b/packages/ui/src/services/menu/menu.ts index 783e428f0a..da202b1635 100644 --- a/packages/ui/src/services/menu/menu.ts +++ b/packages/ui/src/services/menu/menu.ts @@ -45,9 +45,8 @@ interface IMenuItemBase { description?: string; icon?: string | Observable; tooltip?: string; - + slot?: boolean; type: MenuItemType; - /** * Custom label component id. */ @@ -56,6 +55,7 @@ interface IMenuItemBase { | { name: string; hoverable?: boolean; + selectable?: boolean; props?: Record; }; // custom component, send to CustomLabel label property @@ -75,11 +75,13 @@ export interface IValueOption { id?: string; value?: string | number; value$?: Observable; + slot?: boolean; label?: | string | { name: string; hoverable?: boolean; + selectable?: boolean; props?: Record>; }; // custom component, send to CustomLabel label property icon?: string; diff --git a/packages/ui/src/views/components/global-zone/GlobalZone.tsx b/packages/ui/src/views/components/global-zone/GlobalZone.tsx index 07a490614b..2b079feeec 100644 --- a/packages/ui/src/views/components/global-zone/GlobalZone.tsx +++ b/packages/ui/src/views/components/global-zone/GlobalZone.tsx @@ -14,8 +14,8 @@ * limitations under the License. */ -import clsx from 'clsx'; -import React, { useEffect, useMemo, useState } from 'react'; +import { clsx } from '@univerjs/design'; +import { useEffect, useMemo, useState } from 'react'; import { ComponentManager } from '../../../common/component-manager'; import { IGlobalZoneService } from '../../../services/global-zone/global-zone.service'; import { useDependency, useObservable } from '../../../utils/di'; diff --git a/packages/ui/src/views/components/ribbon/ToolbarItem.tsx b/packages/ui/src/views/components/ribbon/ToolbarItem.tsx index 534a454682..385cbc6f82 100644 --- a/packages/ui/src/views/components/ribbon/ToolbarItem.tsx +++ b/packages/ui/src/views/components/ribbon/ToolbarItem.tsx @@ -17,20 +17,19 @@ import type { IDisplayMenuItem, IMenuItem, IMenuSelectorItem, IValueOption } from '../../../services/menu/menu'; import type { ITooltipWrapperRef } from './TooltipButtonWrapper'; import { ICommandService, LocaleService } from '@univerjs/core'; +import { clsx } from '@univerjs/design'; import { MoreDownSingle } from '@univerjs/icons'; -import clsx from 'clsx'; import { forwardRef, useMemo } from 'react'; import { isObservable, Observable } from 'rxjs'; import { ComponentManager } from '../../../common/component-manager'; import { CustomLabel } from '../../../components/custom-label/CustomLabel'; -import { Menu } from '../../../components/menu/desktop/Menu'; import { ILayoutService } from '../../../services/layout/layout.service'; import { MenuItemType } from '../../../services/menu/menu'; import { useDependency, useObservable } from '../../../utils/di'; import { ToolbarButton } from './Button/ToolbarButton'; import { useToolbarItemStatus } from './hook'; import styles from './index.module.less'; -import { DropdownWrapper, TooltipWrapper } from './TooltipButtonWrapper'; +import { DropdownMenuWrapper, TooltipWrapper } from './TooltipButtonWrapper'; export const ToolbarItem = forwardRef>((props, ref) => { const localeService = useDependency(LocaleService); @@ -45,7 +44,7 @@ export const ToolbarItem = forwardRef
- - )} + onOptionSelect={handleSelect} >
-
+
); } else { return ( - - )} + onOptionSelect={handleSelect} >
- + ); } } diff --git a/packages/ui/src/views/components/ribbon/TooltipButtonWrapper.tsx b/packages/ui/src/views/components/ribbon/TooltipButtonWrapper.tsx index 23e577c599..5002b43eb9 100644 --- a/packages/ui/src/views/components/ribbon/TooltipButtonWrapper.tsx +++ b/packages/ui/src/views/components/ribbon/TooltipButtonWrapper.tsx @@ -14,10 +14,16 @@ * limitations under the License. */ -import type { ITooltipProps } from '@univerjs/design'; +import type { IDropdownProps, ITooltipProps } from '@univerjs/design'; import type { ReactNode } from 'react'; -import { Dropdown, Tooltip } from '@univerjs/design'; -import { createContext, forwardRef, useContext, useImperativeHandle, useMemo, useRef, useState } from 'react'; +import type { IMenuItem, IValueOption } from '../../../services/menu/menu'; +import { clsx, Dropdown, DropdownMenu, Tooltip } from '@univerjs/design'; +import { CheckMarkSingle } from '@univerjs/icons'; +import { createContext, forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'; +import { combineLatest, of } from 'rxjs'; +import { CustomLabel } from '../../../components/custom-label/CustomLabel'; +import { IMenuManagerService } from '../../../services/menu/menu-manager.service'; +import { useDependency } from '../../../utils/di'; const TooltipWrapperContext = createContext({ dropdownVisible: false, @@ -97,3 +103,232 @@ export function DropdownWrapper({ children, overlay, disabled }: { children: Rea ); } + +function Label({ icon, value, option, onOptionSelect }: { + icon?: IMenuItem['icon']; + value?: string | number; + option: IValueOption; + onOptionSelect?: (option: IValueOption) => void; +}) { + const onChange = (v: string | number) => { + onOptionSelect?.({ value: v, label: option?.label, commandId: option?.commandId }); + }; + + const hasCheckMark = typeof option.label === 'string' || (typeof option.label === 'object' && option.label?.selectable !== false); + + return ( +
+ {hasCheckMark && String(value) === String(option.value) && ( + + )} + +
+ ); +} + +export function DropdownMenuWrapper({ + menuId, + slot, + value, + options, + children, + disabled, + onOptionSelect, +}: { + menuId: string; + slot?: boolean; + value?: string | number; + options: IValueOption[]; + children: ReactNode; + disabled?: boolean; + onOptionSelect: (option: IValueOption) => void; +}) { + const { setDropdownVisible } = useContext(TooltipWrapperContext); + + const menuManagerService = useDependency(IMenuManagerService); + const [hiddenStates, setHiddenStates] = useState>({}); + + const menuItems = useMemo(() => { + return menuId ? menuManagerService.getMenuByPositionKey(menuId) : []; + }, [menuId]); + + const filteredMenuItems = useMemo(() => { + return menuItems.filter((item) => { + if (!item.children) return item; + + const itemKey = item.key?.toString() || ''; + return !hiddenStates[itemKey]; + }); + }, [menuItems, hiddenStates]); + + function handleVisibleChange(visible: boolean) { + setDropdownVisible(visible); + } + + useEffect(() => { + const subscriptions = menuItems.map((item) => { + if (!item.children) return null; + + const hiddenObservables = item.children.map((subItem) => subItem.item?.hidden$ ?? of(false)); + + return combineLatest(hiddenObservables).subscribe((hiddenValues) => { + const isAllHidden = hiddenValues.every((hidden) => hidden === true); + setHiddenStates((prev) => ({ + ...prev, + [item.key]: isAllHidden, + })); + }); + }); + + return () => { + subscriptions.forEach((sub) => sub?.unsubscribe()); + setHiddenStates({}); + }; + }, [menuItems]); + + if (slot) { + return ( + ( + + ); + } + + // options menu + if (options?.length) { + const items: IDropdownProps['items'] = options.map((option) => ({ + type: 'item', + className: clsx({ + 'focus:univer-bg-white': typeof option.label !== 'string' && option.label?.hoverable === false, + }), + children: ( +