Commit graph

11397 commits

Author SHA1 Message Date
Abe Jellinek
7c7d8c1433
Implement Select Items dialog redesign (#4406) 2024-07-26 02:55:43 -04:00
Abe Jellinek
1463b58b5b Preferences: Make _syncToPrefOnModify work like _syncFromPref 2024-07-25 12:57:43 -04:00
Abe Jellinek
dbc8b9bfed Select Items dialog: Double-click to accept
Closes #4428
2024-07-25 10:13:21 -04:00
Dan Stillman
8076c97900 Merge new English strings 2024-07-25 03:00:09 -04:00
Abe Jellinek
9a43e8f057 Related box: Filter out missing items
Fixes #4427
2024-07-24 16:58:31 -04:00
Martynas Bagdonas
10adea71fc Add "Citation" string for note editor 2024-07-24 17:36:28 +03:00
Abe Jellinek
0944f3bdc6 Item pane header: Show default context menu for attachment titles
Closes #4415
2024-07-22 12:45:18 -04:00
Martynas Bagdonas
c2575d2a14 Gray out "Import Annotations…" in reader window when no annotations
Fixes #4416
2024-07-22 14:42:14 +03:00
abaevbog
c5c613c82c
vpat 80: focus first field in search window/dialog (#4402)
Instead of focusing the first condition, which ends up placing
focus in the middle of the new window or modal. It is best
to focus the first node, which is the general convention,
per https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/, and
what many screen reader users expect. When we focus a field in
the middle of the window/dialog, it makes it seem for some users
that this is the first node, which will make them miss all the
fields above it.

Also, linked search name input to its label in searchDialog.xhtml.
2024-07-21 06:02:50 -04:00
Dan Stillman
846279da01 Use include.js in customElements.js 2024-07-21 06:01:43 -04:00
Dan Stillman
8a075dce9e Fix error generating header in updates window 2024-07-21 06:01:26 -04:00
Dan Stillman
1d0cdf4df0 Fix "Check for Updates" button in startup error dialog 2024-07-21 05:59:25 -04:00
Dan Stillman
3b1cb2b9c2 Avoid error if item is modified before collections pane is loaded
E.g., during Extra field migration at startup
2024-07-21 05:57:17 -04:00
Dan Stillman
9446f7f583 Fix Collection [n] not yet loaded startup error
Can happen during Extra field migration at startup due to
Item::getCollections() change in 2d3375e9f6 that requires collections
to be loaded

https://forums.zotero.org/discussion/115993/collection-not-yet-loaded-error-on-startup
https://forums.zotero.org/discussion/116137/zotero-cannot-be-used-after-updating-to-the-latest-version
2024-07-21 05:57:04 -04:00
Dan Stillman
7e01a7d0ec Merge new English strings and fix some backslash errors 2024-07-20 02:35:03 -04:00
Martynas Bagdonas
d16ea8fe15
Enable type change between highlight and underline (#4411) 2024-07-20 02:27:11 -04:00
Martynas Bagdonas
532ae729c0 Implement highlight ↔ underline annotation conversion (delete, recreate)
#3744
2024-07-19 14:31:46 +03:00
Martynas Bagdonas
10fecce381 Add missing File → Import Annotations option to reader window
Fixes #3864
2024-07-19 12:20:22 +03:00
Dan Stillman
691d26886f Update locales from Transifex 2024-07-19 04:27:15 -04:00
windingwind
b04f2c8ccb
Fix context notes pane not load (#4289)
fix: #4284
introduce a new notifier type "load", "tab", a follow up fix to #4174

---------

Co-authored-by: Bogdan Abaev <bogdan@zotero.org>
2024-07-19 02:41:45 -04:00
abaevbog
53fed83e05
do not save edits on Escape in reader tags popup (#4399)
<panel> takes over Escape handling by just closing the popup via
what looks like a capturing listener on document, since Escape
keydown events never even reach the popup itself. When the popup
is just closed like that, tagsBox is blurred so all unwanted edits get saved.

To properly handle Escape, attach our own capturing listener that will
reset all edits before the popup is closed.

Fixes: #4398
2024-07-19 02:34:28 -04:00
Abe Jellinek
38391f356c
Restore autoscroll support in reader (#4405)
- Mozilla's ActorManagerParent was only being imported when devtools
  were initialized (either by opening the Error Console or by connecting
  via remote debugging). Import it in our ActorManager so Mozilla
  actors, including AutoScroll, are always registered.
   - This may have other effects! I'm assuming most of us test with
     the error console visible, though, so we would've had Mozilla
     actors, while users running without devtools wouldn't have. We
     definitely want those actors. (Most of them, at least.)
- Don't override autoscroller styles with our panel customizations.
2024-07-19 01:57:45 -04:00
abaevbog
e6b5ba60dd
fix tab not scrolling into view (#4404)
After react 18 update, the tab node may not yet be rendered
by tabBar.jsx when we try to scroll it into view in Zotero_Tabs.select.

- To make sure scrolling happens when rendering is done, move scroll-related
logic into a useEffect of tabBar.jxs. It also makes sure that we'll scroll to
a selected tab if it is moved via context menu to the very beginning or the end.

- Added a small scroll-padding to tabs container to make sure the border
does not get cutoff after the tab is scrolled into view instead of
JS code accounting for the border.

- Fixed a glitch where the pinned library tab would not get selected
on shift-tab from opened tabs menu.

Fixes: #4382
2024-07-18 02:19:07 -04:00
abaevbog
40fd5efe05
vpat 48: announce selection for default virtualized table (#4391)
* vpat 48: announce selection for default virt table

For simpler virtualized tables
(e.g. style manager in Zotero_Preferences.Cite), the table
does not get re-rendered when selection changes, so
aria-activedescendant does not get updated in render().

- a single function to update aria-activedescendant of the table
- call it in _updateTree of the tree selection because _onSelection
is not called the very first time a table is rendered. In that case, after
restart, collectionTree would have a selected row but no aria-activedescendant
- remove this.forceUpdate() from selection handlers of itemTree and
collectionTree because judging by the coment it's main purpose was to set
aria-activedescendant through render()
- set aria-activedescendant in _onSelection handler
of virtualized table. 
- construct and set aria-label for rows build via
makeRowRenderer of VirtualizedTable so that is is
announced when the row is selected.
2024-07-17 10:34:16 +03:00
Martynas Bagdonas
a46f1bcbbb Fix reader popups being covered by contextPane in Stacked View mode
Fixes #3542
2024-07-16 15:12:26 +03:00
Bogdan Abaev
ed1f3853b4 fix shift-Enter tagsbox inconsistent glitches (#4231)
- remove earlier shift-Enter behavior that makes tag's
input multiline.
- shift-Enter will function just as Enter by saving the
tag and allowing focus to return to reader or itemTree.
- except after pasting multiple tags which will still turn
the tags input into a multiline field. Then, shift-enter
will add a new line, just as with any other multiline
editable-text.
2024-07-16 02:36:10 -04:00
Bogdan Abaev
16a5b5b6bc add aria-label to tag edit fields (#4231) 2024-07-16 02:36:02 -04:00
Bogdan Abaev
a73035c848 vpat 66-68: fix focus within tagsBox popup (#4231)
- focus will always enter the tagsBox popup opened from the reader
- escape from within the popup with tagsBox will close the popup (vpat
  67)
- one should not be able to collapse the tagsBox. Added `collapsible`
  getter and setters to the collapsible panel to prevent the section
  from changing its open status. This may be also used in other cases,
  such as to prevent itemBox from being collapsed in duplicates mode.
- patched a glitch where tab from the last empty tab input would loose
  focus.
- changed the `menupopup` for `panel` to display the `tagsbox` because
  `menupopup` has implicit `role="menu"` which is not meant to contain
  inputs, so voiceover completely looses cursor when inputs are focused
  inside of the popup. Also, tweaked spacing a bit to avoid the
  focus-ring getting cutoff.

Addresses: #4222
Fixes: #4230
Fixes: #4226
Addresses: #4388
2024-07-16 02:35:53 -04:00
Tom Najdek
f227aeb6e0
File renaming: suppress duplicate suffixes #3317 (#4389) 2024-07-16 01:59:07 -04:00
abaevbog
25d0cf66bd
save itemPane title/abstract fields on blur (#4390)
As opposed to 'change' event.

Because if the field is editted and another window is focused
while the cursor is in the field, the change event will be
swallowed and when the field finally looses focus, it will not
be saved.

This may address the reported issue of edits not being saved in
title and abstract fields.

Addresses: #4388
2024-07-16 01:35:35 -04:00
Martynas Bagdonas
abad33116b Add reader text selection popup annotation mode toggle pref
Fixes #3352
2024-07-15 15:43:53 +03:00
abaevbog
26f7c707ba
display emojis from color-less tag in itemTreeRow (#3330)
- display the first continuous span of emojis in the primary cell of
the itemTree for non-colored tags.
- the emojis appear after the colored tags' circles (if any)
- to keep things consistent with itemTree, sort tags in the tagsBox in
the following order: colored tags first sorted by their position,
emoji tags after sorted alphabetically, followed by remaining tags sorted
alphabetically.
2024-07-15 00:28:01 -04:00
Abe Jellinek
833ecca364
Set automatic titles in more or less all cases (#4369)
By moving the setAutoAttachmentTitle() calls to importFromFile() /
_addToDB().

Also:

- Chop off file extension when setting the parent's title based on the
  filename in Create Parent Item -> Manual Entry.
- Fix Manual Entry not renaming the attachment correctly by awaiting
  createEmptyParent().
2024-07-14 23:37:24 -04:00
abaevbog
ac1cb29c69
refresh library tab's icon cache on update (#4387)
When tabs' state is updated, refresh library tab's icon.
Do not skip it if the icon already exists (as for reader tabs).
Otherwise, when selected row from collectionTree changes,
the icons in the library tab will not update.

Fixes: #4385
2024-07-13 15:46:33 -04:00
Abe Jellinek
174bde7451
Find Available PDF: Use translator-provided title (#4377) 2024-07-12 00:58:38 -04:00
abaevbog
c0f6671542
fixes to saved search dialog layout (#4378)
- remove padding between the <dialog> and the window edges
- explicit width for all zoterosearch fields because otherwise
a menulist with a long content (e.g. longer collection name) name
can push the + and - buttons outside of the window

Fixes: #4374
2024-07-12 00:55:49 -04:00
abaevbog
0ea3d232f0
quickFormat rtl layout fixes (#4372)
- properly determine between which two bubbles a click landed
- set input direction
- delete the bubble on the left of the cursor
- in rtl, use selectionStart as the expected end of the input
and selectionEnd as the start. It fixes the issue of the
cursor getting stuck at the end of the input, as well as
fixes the Home/End not working from the right end.
- fix spacing issues for item descriptions in both layouts

Fixes: #4371
2024-07-11 05:39:24 -04:00
Tom Najdek
260709969e Improve RTF Scan UI
* Multiple accessiblity fixes
* Increase font size
* Nicer layout of the welcome screen
* Fix description in the welcome screen
* Add stripes to the table in citations matching screen
* Change icons for accept and resolve manually buttons
2024-07-11 01:46:16 -04:00
Bogdan Abaev
80b5486991 fix some buttons not opening on space/Enter (#4243)
E.g., field-version button in itembox merge mode
2024-07-11 01:44:15 -04:00
Bogdan Abaev
8f9d5e190e fix itembox field-version button remaining visible (#4243)
Even after the merge mode is no longer active.
Fixes: #4240
2024-07-11 01:44:15 -04:00
Dan Stillman
d90f655513 Update locales from Transifex 2024-07-10 02:15:35 -04:00
Abe Jellinek
9ea56705a0 Don't change title when renaming from parent metadata (#4363) 2024-07-10 01:51:39 -04:00
Abe Jellinek
327206f931 Rename subsequent attachments after their file base names (#4363) 2024-07-10 01:51:33 -04:00
Abe Jellinek
13496afeb3
Use SelectedItemText color on SelectedItem backgrounds (#4350) 2024-07-10 01:20:47 -04:00
Bogdan Abaev
fd93af8305 ReactDOM.unmountComponentAtNode => root.unmount() (#4338)
unmountComponentAtNode is deprecated, so save or
pass the root as a prop and call root.unmount when
the component is destroyed
2024-07-10 01:04:31 -04:00
Bogdan Abaev
37991e220e use Icons.getCSSIcon instead of getDOMElement (#4338)
- getDOMElement relied on React.renderToStaticMarkup,
which is react 18 was moved to a different file than the
one exposed with react-dom-server. To not add another
file just for that one function, replace getDOMElement
with getCSSIcon.
- getDOMElement was mainly used for a few remaining
png icons that were not replaced with svg. For those
few icons, just record which background-url should be
set when the module loads and add it in getCSSIcon if
applicable. Alternatively, background-image setting
could be moved into a stylesheet?
- a few hardcoded twisty svgs in icons.jsx are not used anywhere
(they would be fetched via IconTwisty), so those are
removed
2024-07-10 01:04:28 -04:00
Bogdan Abaev
af4bbd2c4d ReactDOM.render -> React.createRoot().render (#4338)
- await for promise that is resolved in ref attribute
of root.render() as an alternative for removed callback
from ReactDOM.render
- await-ing for promise every time when ref needs to be
used after render (e.g. tag selector container), otherwise
ref will be undefined
- additional window.sizeToContent calls to properly size
dialogs with react-rendered content (e.g. create parent),
otherwise the window can cut off some of the content.
2024-07-10 01:04:24 -04:00
Abe Jellinek
6eea3704a9 Zotero.ItemFields.isAutocompleteField: Cache, use Set 2024-07-10 00:48:53 -04:00
Abe Jellinek
a334d9fdd8 Item box: Use startsWith, not includes, for field name checks 2024-07-10 00:48:53 -04:00
Abe Jellinek
c05d43fa8e Item box: Enable autocomplete on long fields 2024-07-10 00:48:53 -04:00