🎉 Release v0.4.0
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. Your feedback is crucial! Please submit issues and suggestions to help us shape the future of Univer.
🚀 Getting Started
If you're eager to explore Univer, check out our getting started documentation.
Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!
📊 Univer Sheets
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
- Added
formulaBar
configuration option to control the display of the formula bar #3632 - Added
onCellDataChange
andonBeforeCellDataChange
methods to the Facade APIFWorksheet
for monitoring cell data changes #3626 - Added Persian language
fa_IR
support #3558 - Added
REGEXEXTRACT
,REGEXMATCH
, andREGEXREPLACE
formula functions #3633 - The number of formula functions has now reached 372, with a goal of exceeding 500
🐞 Bug Fixes
- Fixed merged cell rendering issue #3671
- Fixed editor cursor position offset #3668
- Fixed custom context menu items not displaying #3688
- Fixed column header rendering issue after reinitializing following
disposeUnit
#3598 - Fixed
SetStyleCommand
only affecting the current active sheet #3586 - Fixed
SetRangeValuesCommand
changing user focus #3697 - Fixed nested
IF
formula calculation error #3774 - Fixed navigation bar flickering #3745
💔 Breaking Changes
- Plugin developers should note that the following changes have been made:
- The
OnLifecycle
decorator has been removed. Please complete the corresponding instance initialization logic in the plugin's lifecycle methods instead #3672
- The
example:
///plugin/controllers/custom-menu.controller.ts
-@OnLifecycle(LifecycleStages.Ready, CustomMenuController)
export class CustomMenuController extends Disposable {
...
}
...
//plugin/plugin.ts
export class UniverSheetsCustomMenuPlugin extends Plugin {
...
+ onReady(): void {
+ this._injector.get(CustomMenuController);
+ }
...
}
- The
injector
parameter in plugin lifecycle methods has been removed. Please use the class property_injector
directly #3672 - Plugin refactoring #3527
@univerjs/sheets-formula
has been split into two plugins:@univerjs/sheets-formula
and@univerjs/sheets-formula-ui
. Please import@univerjs/sheets-formula-ui
into your frontend code as well.
- install:
-pnpm add @univerjs/sheets-formula
+pnpm add @univerjs/sheets-formula @univerjs/sheets-formula-ui
- import:
-import '@univerjs/sheets-formula/lib/index.css'
+import '@univerjs/sheets-formula-ui/lib/index.css'
-import SheetsFormulaEnUS from '@univerjs/sheets-formula/locale/en-US';
+import SheetsFormulaUiEnUS from '@univerjs/sheets-formula-ui/locale/en-US';
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
+import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
- register:
univer.registerPlugin(UniverSheetsFormulaPlugin)
+univer.registerPlugin(UniverSheetsFormulaUIPlugin)
@univerjs/sheets-data-validation
has been split into two plugins:@univerjs/sheets-data-validation
and@univerjs/sheets-data-validation-ui
. Please import@univerjs/sheets-data-validation-ui
into your frontend code as well. The configuration for@univerjs/sheets-data-validation
should also be moved to@univerjs/sheets-data-validation-ui
.
- install:
-pnpm add @univerjs/data-validation @univerjs/sheets-data-validation
+pnpm add @univerjs/data-validation @univerjs/sheets-data-validation @univerjs/sheets-data-validation-ui
- import:
-import '@univerjs/sheets-data-validation/lib/index.css';
+import '@univerjs/sheets-data-validation-ui/lib/index.css';
-import SheetsDataValidationEnUS from '@univerjs/sheets-data-validation/locale/en-US';
+import SheetsDataValidationUiEnUS from '@univerjs/sheets-data-validation-ui/locale/en-US';
import { UniverDataValidationPlugin } from '@univerjs/data-validation';
import { UniverSheetsDataValidationPlugin } from '@univerjs/sheets-data-validation'
+import { UniverSheetsDataValidationUIPlugin } from '@univerjs/sheets-data-validation-ui'
- register:
univer.registerPlugin(UniverDataValidationPlugin)
univer.registerPlugin(UniverSheetsDataValidationPlugin)
+univer.registerPlugin(UniverSheetsDataValidationUIPlugin)
📝 Univer Docs
🔧 Improvements
- Editor refactoring #3551
🎢 Special Thanks
Special thanks to the following community members who have made outstanding contributions to this release:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2024-10-17)
Bug Fixes
- docs-ui: don't refresh-selection after set list (#3780) (924dee7)
- docs-ui: formula-editor should not render paragraph style (#3783) (b7301af)
- docs: header footer setting not focus (#3698) (2db351b)
- docs: no need to cache font style when has no text run (#3779) (8a48479)
- engine-render: check box render (#3776) (83e0897)
- fix permission rangeSelector & insert menu (#3757) (1f43484)
- font render bounds (#3754) (4ecd764)
- formula: fix some bug (#3774) (4c4efe4)
- sheets-ui: can't save first edit cell (#3781) (d29da2f)
- cell style in collaboration (#3748) (e138b95)
- condition-formatting: date calculation error (#3733) (30da399)
- conditional-formatting: reduce icon map size (#3769) (0f19fc0)
- docs-ui: doc list render error after operation like break-line (#3766) (8c95a53)
- flickering when init page (#3762) (fe3ff31)
- formula: fix ArrayValueObject compare cache bug (#3764) (424bb02)
- formula: fix datedif bug (#3747) (f9f4973)
- refresh selection when collapsed (#3761) (a92a389)
- sheet: fix can not delete when there are exclusive range (#3729) (d6db560)
- sheets-data-validation: data validation validator status render error (#3752) (555e9d5)
- snapshot area (#3715) (5957a04)
- ui: fix missing context menu items (#3758) (421d009)
- ui: ribbon others tab flickering resolved (#3745) (bc8bfb6)
- docs: can not paste content when have both text range and rect range (#3720) (3cfcf7e)
- docs: insert image after table (#3719) (942dc4e)
- docs: selection offset is wrong when refresh (#3724) (0babbab)
- formula: fix some formula bugs (#3722) (559825a)
- sheets-ui: set focus editing mode when dbclick & error resize when change sub sheet (#3725) (84ac33f)
- add remove sheet intercept (#3622) (1f7fedb)
- after modifying the value, the filter hidden state needs to be r… (#3601) (dc963b0)
- array formula border deps (#3654) (8d9b1aa)
- conditional-formatting: ranking error (#3589) (f0252ca)
- core: fix plugin holder of univer type not set (#3702) (851b1ce)
- dispose and createUnit cause viewport height collapse (#3598) (36b676f)
- docs: arrow in table when table across two pages (#3692) (9e98122)
- docs: copy table in univer (#3625) (8fb395f)
- docs: editing drawing is not working (#3718) (b253b32)
- docs: no need to add cursor when select multi text ranges (#3691) (f2aab59)
- docs: optimization of text selection (#3660) (a2f2215)
- docs: wrong header footer icon (#3689) (0cfeece)
- fix error display not shown (433da50)
- fix permission init should build cache (#3651) (6dac0d0)
- formula show editor selection when using filter (#3621) (1149cff)
- formula: add r_tree for dependency and fix bug (#3647) (f5140c0)
- formula: array formula spill error (#3673) (e8ffd23)
- merged cell bg not fully ender (#3671) (5bbbec3)
- sheets-hyper-link: hyper-link operator issues (#3628) (e27bf5e)
- sheets-ui: editor state not correctly reset when active (#3668) (16a08bf)
- sheets-ui: error quit edit when set-range-values was called (#3697) (0c29785)
- sheets-ui: remove useless mark dirty on data-validation & thread-comment (#3639) (6b48993)
- sheets: correct subUnitId usage in SetStyleCommand (#3586) (b03711d)
- ui: resolve issue preventing custom context menus from displaying (#3688) (b3a3cbc)
- underline was hidden by background in next line (#3638) (71229b3)
- zen: fix zen editor cannot be opened (#3699) (405a715)
Features
- facade: add
setOptions
on f-data-validation-builder (#3773) (4008c86) - drawing: add optional property to control rotate handle of drawing element (#3750) (71ffde4)
- facade: change data-validation facade api into sync (#3736) (cbae4c9)
- record & replay commands with multi-mode (#3734) (047c9f2)
- add replay-only mode to actionRecordPlugin (#3695) (a3cb5c4)
- facade: add lifecycle and cellChange event api (#3626) (5fad25f)
- formula: regexextract/regexmatch/regexreplace (#3282) (7ce334f)
- sheets-ui: add
formulaBar
option (#3632) (d0a9f24) - support for rtl and farsi i18n (#3558) (b13168d)