* allow a tag to be renamed and update all notes that use that tag
• repurpose RenameFolderModal.styl to RenameModal so it is more generic
* call handleConfirmButtonClick directly instead of sending through a confirm method
* better name for method to confirm the rename
* use close prop instead of a new method
* use callback ref instead of legacy string refs
* bind the handleChange in the constructor to allow for direct function assignment
* update the tag in the URL upon change
* use the eventEmitter to update the tags in the SnippetNoteDetail header via the TagSelect component
* respect themes when modal is opened
* show error message when trying to rename to an existing tag
* lint fix, const over let
* add missing letter
* fix routing and add merge warning dialog
* fix space-before-parens lint error
* change theming
* add check if tag changed
Co-authored-by: Khaliq Gant <khaliqgant@gmail.com>
Using console in production is generally undesirable due to
performance loss and security concerns. Errors were changed
to console.error and console.logs were removed.
No meaning to show the tag that has empty List
The tag which is only used in the note(s) in the Trash, tags.size becomes zero. In order to support this case, filtering tagList is needed
Using `&` to separate tags in path (like
`/tags/currently&selected&tags`) may interfer with tags including `&`
character (like `black&white`). Since ` ` is replaced with `_` when
adding tag to notes, it's ideal separator because it's guaranteed that
tags are not including this character.
When a tag is selected, the tag list narrows to show only the related
ones: all tags associated to the currently visible notes. Clicking on
the plus sign near another tag narrows the list again to the tags of
notes associated with the firstly AND secondly selected tag. To show
every tags again, press the tag icon on the top-left corner of
Boostnote.
Before:

After:

NOTE: Tags are joined with `&` character (`#` not works) in
`location.pathname` thus it will make the tags with this character
unavailable. Any suggestion to pass multiple values via pathname?