Unify plugin API classes
Add info box custom row API tests
Refactor itemBox.js create element
Wrap hooks in API for safe call
Add test for item tree api and hook error handling
Remove try/catch from #4816
Move plugin API definitions to xpcom/pluginAPI
If you unlinked your sync account and then relinked, the ZFS storage
controller would still have the old API key and file-sync requests would
fail. Since that was never supposed to be possible, it resulted in
"Group with libraryID 1 does not exist" errors during file syncing until
you restarted the app.
Move handling of tabs' renaming when an item is
modified from Reader into Zotero_Tabs, so that the titles of
unloaded tabs can get properly renamed.
Have the Reader and Zotero_Tabs share Zotero.Item#getTabTitle()
to handle title updates in both tabs and standalone reader windows.
Fixes: #4646
When items are selected, itemTree scrolls to them. Depending on the
arrangement of items, it will often default to scrolling to
the top-most item in the selection, which is not the focused row
in case of duplicates view. To scroll to focused row without
unnecessary scrolling or items visibly jumping to one row and then
another, added option to skip scrolling in itemTree.selectItems.
Only move focus out of the reader iframe on tab/shift-tab
if the reader instance is opened within a tab, meaning the
sync button and the contextPane exist. If the reader
is opened in a standalone window, do nothing.
Fixes: #4823
This seems to be a Firefox bug that exists even in Firefox 132.0a1 (2024-09-29).
Note that right-clicking to open the context menu on a contenteditable element also triggers an update to the Edit menu.
The fix updates all Edit menu options except Redo, which cannot be enabled due to ProseMirror modifying the contenteditable state after each change.
Partial fix for #3398
I think this was only in Everything for historical reasons -- in the
initial implementation of search modes, tags, notes, and (old)
annotations were all in Everything, but tags and notes were later moved
to All Fields & Tags. The old `annotation` condition wasn't moved, and
when I added `annotationComment` and `annotationText`, I just left them
in the same place. But if we match notes in All Fields & Tags, we should
match annotation comments, and if we're matching comments, we might as
well match annotation text as well.
https://forums.zotero.org/discussion/119123/note-annotations-zotero-search-and-zotero-pdf-viewer-search
Selecting custom data directory radio button in advanced
settings opens up a modal to select the directory. It is
not a typical behavior for radio button, so it conflicts
with 3.2.2 success criteria.
This is a rework of the data directory setting interface to be
similar to LABD. It does not have radio buttons and the
directory explorer pops up on button click.
- adds View > Columns and View > Sort By menu options
to all windows that contains an itemTree (Select Items dialog,
Advanced Search, classic Add Citation, Edit Bibliography
dialog).
- the menubar is global on macOS. On Windows/Linux it is
displayed and focused on Alt keypress
- added menu option to move a selected column left,
which we need as an alternative for drag-drop reordering
that would not require using a mouse
- made the wrapper of the dialog focusable and added aria-description
so that when the dialog opens it announces how to use the dialog
- added aria-labels to buttons, references list, and editor
- make sure that the references list always selects an item when
focused without clicking
- added a border to focused buttons from simple editor to make it visually
clear when they received focus
More specific labels for the button to turn selected item(s)
into standalone:
- "Convert to Standalone Sttachment(s)" when only attachments
are selected
- "Convert to Standalone Note(s)" when only notes are selected
- "Convert to Standalone" otherwise (e.g. if a note and an attachment
are selected together)
Fixes: #4766
Also:
* Remove unused element in select items window
* Move and rename zotero/ingester/selectitems to scaffold/select to
avoid confusion with selectItemsDialog
Filter out ASCII control characters in renderItemTitle, since
an error is thrown if those characters are present when
the innerHTML of a tab name in tab bar is set via
dangerouslySetInnerHTML.
Fixes: #4758
---------
Co-authored-by: Dan Stillman <dstillman@zotero.org>
- Added menuitems to move collections within the same
library and to copy collections
- "Move to" only displays collections within the
current library
- "Copy to" displays all libraries, if more than
one library exists. If there is only one library,
top-level collections from "My Library" are displayed.
- while copying within the same library, create copies
of all collections and add items into them, without
actually duplicating items
- while copying between different libraries, items
will be duplicated, the same way it is done when
collections are dragged and dropped in another library
Do not move focus from the tab onto the editor/input
during keyboard navigation to not change context per
https://www.w3.org/WAI/WCAG21/Understanding/on-input.
Focus will still shift if tab selection changed on mouse click.
Also:
- added focus ring to tabs. Additional mouseup handling
to prevent the focus ring from briefly appearing on click.
- on Escape from within the editor, focus the current
tab.
- on shift-tab from the beginning of the editor,
tab out of the editor to previous element.
- added "Change Parent Item…" context menu option to
itemTree as a non-drag-drop alternative to changing the
parent of attachments or notes
- context menu option appears only when all selected
items are notes or attachments
- upon activation, a dialog to select the new parent
will appear. Added a tweak to the dialog to disable
the "accept" button if a selected item is not top level
- minor edit to itemTree to set the multiselect property
based on a prop, since we do not want to have multiselect
enabled in this instance
- hide all virtual collections in selectItemsDialog via new
io.hideCollections parameter
- "Convert to Standalone Attachment" button in dialog if
child attachment is selected
And:
- Use eslint instead of teslint
- Remove debug logging, since we're running this constantly now
- Kill ESLint at the end, although it should exit on its own