* pass config to the conversionConfig.import method
- Now `convertStringToBlockData` method passes target tool config the import method
- Fixed types in convesion config file (somehow imprort could return function that returns string, but import should return method that would return ToolData) this caused just type error that never been reached because types were actually ignored
- Added test that checks, that import method actualy gets passed config
* update changelog
* eslint fix
* updated test description
* jsdoc improved
* typos in changelog
* Fixed display of convert menu for blocks without export rule
According to the workflow script from the documentation:
https://editorjs.io/tools-api/#conversionconfig
* Update CHANGELOG.md
* some improvements and tests
---------
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Update `tunes` data when new `tunes` data is provided
AFAIK, when you update block using `editor.blocks.update` method, only `data` attribute is merged and updated. I believe `tunes` data should be updated if provided.
* commit
* edit parameter type, move test
* restore package-lock and yarn lock
* update in api docs
* make data optional
* edit changelog
---------
Co-authored-by: Thomas <zawlintun@robust.best>
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Fix import in types/events/block/index.ts
Fix wrong placement of the keyword type in the import lines of the types/events/block/index.ts introduced in PR-2491 and released in V2.29.0 preventing compilation.
* Update CHANGELOG.md
* Update CHANGELOG.md
* Update CHANGELOG.md
---------
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* fix caret loosing after caret
* Refactor convert method to return Promise in Blocks API
* changelog upd
* Fix missing semicolon in blocks.cy.ts and BlockTunes.cy.ts
* add test for inline toolbar conversion
* Fix missing semicolon in InlineToolbar.cy.ts
* add test for toolbox shortcut
* api caret.setToBlock now can accept block api or index or id
* eslint fix
* Refactor test descriptions in caret.cy.ts
* rm tsconfig change
* lint
* lint
* Update CHANGELOG.md
* Move popover types to separate file
* tmp
* open top
* Fix bug with keyboard navigation
* Fix bug with scroll
* Fix mobile
* Add popover header class
* Display nested items on mobile
* Refactor history
* Fix positioning on desktop
* Fix tests
* Fix child popover indent left
* Fix ts errors in popover files
* Move files
* Rename cn to bem
* Clarify comments and rename method
* Refactor popover css classes
* Rename cls to css
* Split popover desktop and mobile classes
* Add ability to open popover to the left if not enough space to open to the right
* Add nested popover test
* Add popover test for mobile screens
* Fix tests
* Add union type for both popovers
* Add global window resize event
* Multiple fixes
* Move nodes initialization to constructor
* Rename handleShowingNestedItems to showNestedItems
* Replace WindowResize with EditorMobileLayoutToggled
* New doze of fixes
* Review fixes
* Fixes
* Fixes
* Make each nested popover decide itself if it should open top
* Update changelog
* Update changelog
* Update changelog
* add custom Chai assertion "be.calledWithBatchedEvents" for testing onchange
* chore(api): blocks.update(id, data) method improved
- `blocks.update(id, data)` now can accept partial data object — it will update only passed properties, others will remain the same.
- `blocks.update(id, data)` now will trigger onChange with only `block-change` event.
- `blocks.update(id, data)` will return a promise with BlockAPI object of changed block.
* fix tests
* Update blocks.cy.ts
* feat(conversion): allow to convert block using shortcut
* display shortcuts in conversion toolbar
* tests for the blocks.convert
* tests for the toolbox shortcuts
* Update CHANGELOG.md
* Update toolbox.cy.ts
* rm unused imports
* firefox test fixed
* test errors via to.throw
* deps: upgrade typescript to v5, upgrade ts-loader to support newest TS
* Fix (??) type of `pasteConfig`
TypeScript 4.9 found something is wrong with this code, but it's unclear (to me) which line is wrong. This PR is a guess, do with it what you will.
In paste.ts there's a check to see if `pasteConfig === false`:
https://github.com/codex-team/editor.js/blob/next/src/components/modules/paste.ts#L287
However, this getter never returns false because if the LHS of the `||` is `false`, `{ }` is returned instead.
It seems like this meant to be `??` instead so that if `this.constructable[InternalBlockToolSettings.PasteConfig]` was `undefined` (missing), then `{}` would be returned instead. But maybe you meant `false` here - I don't know.
* feat: create alias for PasteConfig, fix lint
* fix: problems with types
* test: add case for disabling preventing default behavior of paste event handler, add cases for pasteConfig getter in BlockTool wrapper
* chore: upgrade CHANGELOG.md
* fix: interface naming convention
* chore: apply CHANGELOG.md suggestion
* refactor: create custom Editor instance inside test case
* fix: remove editor instance destroy after PR feedback
---------
Co-authored-by: Ryan Cavanaugh <RyanCavanaugh@users.noreply.github.com>
* Make label an alias for title in tunes item
* Cleanup
* Update version and changelog
* Update changelog
* Move resolveAlias to utils
* Add fallback for popover item title
* Lint
* Lint
* Add fallback icon and title to popover
* Update version
* Lint
* Fix changelog
* Fallback to empty string
This reverts commit ae9d643557.
* Fix changelog again
* Cleanup
* Add deprecated
* Add toggle group support
* Update version and changelog
* Fix
* Simplify
* Update test/cypress/tests/utils/popover.spec.ts
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* refactor: added id to the insert method to allow user pass and existing id to the method
When working with multiple editor at the same and need to link all blocks to each editor and keeping the same ids in all.
* moved the position of the block_id params to the end to aaviod breaking cha
* doc: updated the documentation on insert method params
* refactor : formatted the code to add/remove space
* refactor: moved the position of the `id` and its description to the respective position
* refactor: rollback to previous commit
* added back the removed default value
* fix error, remove garbage
* test added, changelog added
Co-authored-by: Umang G. Patel <23169768+robonetphy@users.noreply.github.com>
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Default tunes to popover
* Add the rest of default tunes
* Add popover
* Cleanup
* Rename custom content
* Cleanup
* Add ability to open block settings upwards
* Fix tests
* Cleanup default tunes
* Rename and cleanup
* Add ability to display rendered custom tunes
* cleanup
* Rename
* Add flag to close tunes popover
* Cleanup
* i18n
* Cleanup
* Fix build and tests
* Fix for iframe
* Add comments
* Display active item, move closeOnActivate to popover
* Add confirmation support to popover
* Handle boolean value in confirmation param
* Clarify flippable logic in popover
* Comments
* Pass editor element as a param of popover constructor
* Fix readability
* Tests
* Fix flipper for confirmation element
* Update confirmation config structure
* Rename onClick to onActivate
* Fix tests and build
* Make confirmation props optional
* Simplify processing tunes
* Renamings
* Fix text block tunes
* Docs
* Update event type
* Move enabling confirmation state to separate method
* move popover types
* Unhardcode color
* Support toggling
* Add support of disabled items
* Fix tab in empty block leading to selecting second item in popover
* Remove margins for styles api settings button class
* Fix arrow navigation between blocks after opening block tunes
* Cleaup in default tunes code
* Fix chaining confirmations
* Colors
* Types
* Change the way flippable elements of popover custom area are set
* Remove borders around popover icons
* Fix untabbable inline toolbar
* Fix locked scroll after closing tunes popover on mobile
* Cleanup
* Set max popover width
* Make popover icon's border outside
* Fix tab issue
* Fix focus/hover issue
* Reformat
* Cleanup
* Fix opening block tunes via keyboard
* Add disableSpecialHoverAndFocusBehavior
* Add deprecated comment
* Cleanup
* Fix popover active state
* Fix checklist deletion with confirmation
* Fix checklist deletion 2
* Fix popover focus
* Fix popover items being impossible to flip after searching
* Fix popover item highlighting issue
* Update flipper.spec.ts
* Fixes after review
* Add Tunes Api tests
* Fix multiple popover entries configured by one tune
* Add tool's renderSettings() tests
* Add popover confirmation state test
* Fix popover width on mobile
* Add popover tests
* Add changelog and update version
* Update changelog
* Fix block tunes being unable to open after tune activation
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* the popover component, vertical toolbox
* toolbox position improved
* popover width improved
* always show the plus button
* search field added
* search input in popover
* trying to create mobile toolbox
* FIx mobile popover fixed positioning
* Add mobile popover overlay
* Hide mobile popover on scroll
* Tmp
* feat(toolbox): popover adapted for mobile devices (#2004)
* FIx mobile popover fixed positioning
* Add mobile popover overlay
* Hide mobile popover on scroll
* Alter toolbox buttons hover
* Fix closing popover on overlay click
* Tests fix
* Fix onchange test
* restore focus after toolbox closing by ESC
* don't move toolbar by block-hover on mobile
Resolves#1972
* popover mobile styles improved
* Cleanup
* Remove scroll event listener
* Lock scroll on mobile
* don't show shortcuts in mobile popover
* Change data attr name
* Remove unused styles
* Remove unused listeners
* disable hover on mobile popover
* Scroll fix
* Lint
* Revert "Scroll fix"
This reverts commit 82deae543e.
* Return back background color for active state of toolbox buttons
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Vertical toolbox fixes (#2017)
* Replace visibility property with display for hiding popover
* Disable arrow right and left keys for popover
* Revert "Replace visibility property with display for hiding popover"
This reverts commit af521cf6f2.
* Hide popover via setting max-height to 0 to fix animation in safari
* Remove redundant condition
* Extend element interface to avoid ts errors
* Do not subscribe to block hovered if mobile
* Add unsubscribing from overlay click event
* Rename isMobile to isMobileScreen
* Cleanup
* fix: popover opening direction (#2022)
* Change popover opening direction based on available space below it
* Update check
* Use cacheable decorator
* Update src/components/flipper.ts
Co-authored-by: George Berezhnoy <gohabereg@users.noreply.github.com>
* Fixes
* Fix test
* Clear search on popover hide
* Fix popover width
* Fix for tests
* Update todos
* Linter fixes
* rm todo about beforeInsert
because I have no idea what does it mean
* i18n for search labels done
* rm methods for hiding/showing of +
* some code style update
* Update CHANGELOG.md
* make the list items a little bit compact
* fix z-index issue caused by block-appearing animation
also, improve popover padding for two reasons:
- make the popover more consistent with the Table tool popover (in future, it can be done with the same api method)
- make popover looks better
* Some progress
Use overriden config
tmp
* Cleanup
* Proceed cleanup
* Update tool-settings.d.ts
* Get rid of isToolboxItemActive
* Get rid of key
* Filter out duplicates in conversion menu
* Rename hash to id
* Change function for generating hash
* Cleanup
* Further cleanup
* [Feature] Multiple toolbox items: using of data overrides instead of config overrides (#2064)
* Use data instead of config
* check if active toolbox entry exists
* comparison improved
* eslint fix
* rename toolbox types, simplify hasTools method
* add empty line
* wrong line
* add multiple toobox note to the doc
* Update toolbox configs merge logic
* Add a test case
* Add toolbox ui tests
* Update tests
* upd doc
* Update header
* Update changelog and package.json
* Update changelog
* Update jsdoc
* Remove unused dependency
* Make BlockTool's toolbox getter always return an array
* Fix for unconfigured toolbox
* Revert "Fix for unconfigured toolbox"
This reverts commit dff1df2304.
* Change return type
* Merge data overrides with actual block data when inserting a block
* Revert "Merge data overrides with actual block data when inserting a block"
This reverts commit eb0a59cc64.
* Merge tool's data with data overrides
* Move merging block data with data overrides to insertNewBlock
* Update changelog
* Rename getDefaultBlockData to composeBlockData
* Create block data on condition
* Update types/api/blocks.d.ts
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
* Update src/components/modules/api/blocks.ts
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
Co-authored-by: George Berezhnoy <gohabereg@users.noreply.github.com>
* chore(block-tune-toggler): toggler moved to the left (draft)
* toolbox ui updated
* fixd caret jumpling, improved some styles
* toolbar moving by block-hover
- UI module triggers 'block-hovered' event
- Toolbar uses 'block-hovered' for appearing
- `currentBlock` setter added to the BlockManager
- (reactangle-selection): the throttling added to the mousemove and scroll handlers
- `getBlockIndex` method added to the Api
- (api-blocks): toolbar moving logic removed from `blocks.move()` and `blocks.swap()` methods. Instead, MoveUp and MoveDown tunes uses Toolbar API
* the dark-theme to the example-dev.html
* positioning improved
* fix(rectangle-selection): first click after RS does not clears selection state
* toolbox position fixed
* the toolbox module became a standalone class
- Toolbox became a standalone class from the editor module. It can be accessed only via the owner (the Toolbar module)
- (api.blocks) the insert() method now has the `replace` param. Also, it returns inserted Block API now.
* new(api.listeners): `on()` now returns the listener id. The new `offById()` method added
* fix bug with Tab pressing on hovered but not focused block
* mobile version improved
* upd example dev
* small updaets
* add nested-list
* linting
* (api.toolbar): `toggleBlockSettings` now fires toggling event with the same state
* EventDispatcher used instead of callbacks for the Toolbox
* UIApi added
* fix ci
* git submodules removed from the ci flow
* add paragraph submodule to the ci flow
* Update CHANGELOG.md
* Update package.json
* use ubuntu-latest for chrome ci
The new `dispatchChange()` method allows to manually trigger the 'onChange' callback. Useful when Tool made a state mutation that is invisible for editor core.
* feat: Add unique ids for each block
* fix: Improve code based on code review
* feat(block ids): Use nanoid library for block id generation
* Remove unused files
* Add tests
* Fix lint & test
* fix: Remove unnecessary id generation, use nanoid(10) to shorten the id, add changelog and some documentation
Also improved some documentation along the lines and fixed linting
* Update copy-paste.spec.ts
* fix id generation, add api method
* Update blocks.spec.ts
* update tests
Co-authored-by: cobb <kebincheng@yeah.net>
Co-authored-by: George Berezhnoy <gohabereg@users.noreply.github.com>
Co-authored-by: Georgy Berezhnoy <gohabereg@gmail.com>
Co-authored-by: Peter Savchenko <specc.dev@gmail.com>