Commit graph

9963 commits

Author SHA1 Message Date
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
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
Abe Jellinek
38764efb5a editable-text: Allow autocomplete with wrapping 2024-07-10 00:48:53 -04:00
Abe Jellinek
3e6cc03e2e Add autocomplete-textarea CE
Exactly the same as the Mozilla autocomplete-input CE, with a different
base class. Seems to work perfectly fine.
2024-07-10 00:48:53 -04:00
Abe Jellinek
043c6e1795 RTL: Use direction-aware arrow key handling 2024-07-10 00:43:59 -04:00
Abe Jellinek
ea2d4417e1 RTL: Add direction-aware arrow key utilities
We need these all over the place.
2024-07-10 00:43:59 -04:00
abaevbog
32b92c0205
Cache tabs' icons in data field (#4367)
So that after reload, we can display the correct icon sooner

Fixes: #4342
2024-07-10 00:31:54 -04:00
Dan Stillman
da1599ca34 Show popup for Rename File from Parent Metadata
Closes #3230
2024-07-09 04:44:36 -04:00
Abe Jellinek
af1a4941ce
Set automatic title on first child attachment of each type (#4237) 2024-07-09 04:11:39 -04:00
windingwind
e4f75c36e1
Fix scaffold window UI (#4339)
fix: #4258
2024-07-09 04:02:52 -04:00
Abe Jellinek
f79a59f56a
Move various item pane strings to Fluent (#4329)
And:

- Accept Fluent l10nId/l10nArgs in ItemMessagePane#render()
- Reuse existing <description> tag to eliminate l10n flickering
2024-07-09 04:00:19 -04:00
abaevbog
2d3375e9f6
Revised logic of trashed collections in item cache (#4358)
- revert change from 2401a34031
that only loads un-trashed collections in _loadCollections.
If an item only belongs to deleted collections, item._loaded.collections = true
from _loadCollections will never run, so an exception
will be thrown in item.toJSON() when syncing happens.
Instead, to address the problem of item.getCollections()
having stale data #4307, add 'includeTrashed' parameter to
item.getCollections() based on which item._collections
will be filtered. Fixes: #4346
- revert earlier, no more necessary, changes from a532cfb475
to not alter item._collections cache when collections are being trashed or restored.
Collection is removed from item._collections only when it is permanently
erased.
- removed unnecessary test checking for consistent item._collections
value before and after reload, since item._collections is no longer
modified
- fix encountered bug where a trashed child collection is not
unloaded if a parent collection is erased without being trashed first.
- tweaked Zotero.Search sql construction to count items
that only belong to trashed collections into 'unfiled'. Fixes: #4347

---------

Co-authored-by: Dan Stillman
2024-07-09 03:34:12 -04:00
Abe Jellinek
58c445b616 Preferences: Extract #prefs-search queries 2024-07-08 16:40:26 -04:00
Abe Jellinek
c2b51c7dfe Preferences: Separate load and show, fix navigation race condition
Now we give the caller control over whether the pane should still be
shown after it loads. We're fine with showing in all cases when handling
a search, but we don't want to show when handling a navigation select
if the user already selected something else while the pane was still
loading.

Fixes #4357
2024-07-08 16:38:58 -04:00
Abe Jellinek
a80c4c46bd Make OpenURL resolver base URL field LTR in all locales
Fixes #4354
2024-07-08 16:10:52 -04:00
windingwind
d2f5d1f47b Fix item pane do not update after closing/reopening
fix: #4344
Fix eslint error in itemPane.js
2024-07-08 19:20:31 +08:00
Tom Najdek
2b5e116717
Fix RTF Scan never marks citations as unmapped (#4328) 2024-07-06 06:31:33 -04:00
Tom Najdek
21203501a9 Don't fade right edge of a tab if text doesn't overflow. Fix #4330 2024-07-06 06:18:31 -04:00
Tom Najdek
73bc0cbb94 Optimization: Reduce number of renders in tab bar
By extracting Tab into a separate, memoized component, caching handlers
and tweaking how icons and other props are passed, we're able to only
re-render tabs that actually changed, rather than re-rendering the
entire tab bar all the time. This should be especially noticeable when
dragging tabs around but will reduce CPU cycles used in general.
2024-07-06 06:18:31 -04:00
Dan Stillman
d9790b707a Fix style list breakage if style name contains HTML special characters
https://forums.zotero.org/discussion/115761/z7-beta-document-settings-do-not-show-full-list-of-styles
2024-07-06 04:13:53 -04:00
Martynas Bagdonas
eeece86b4e Add missing access keys for View and Go menus 2024-07-05 09:01:15 +03:00
Martynas Bagdonas
95b27f6f85 Fix double menu separator in reader window View menu 2024-07-05 08:31:53 +03:00
abaevbog
2401a34031
Fix updating of deleted collections in Libraries & Collections (#4324)
- listen to 'collection' notifier events and re-render
the section if a relevant collection is moved to trash or
modified. That way, a deleted collection will be removed,
a restored collection will be added back, and renaming a
collection will update the name.
- fixed a bug where a restored collection would not
be added into item._collections cache. Fixed false-positive
test for it.
- do not add deleted collections into items. _collections cache in
Zotero.Items._loadCollections. Otherwise, deleted collections will
appear in librariesCollectionsBox after the app is restarted.
2024-07-04 22:07:37 -04:00
Dan Stillman
680a175a32 Fix "-" button in Manage Lookup Engines
Which has maybe always been disabled/broken?

(Though it's possible you should only be able to disable custom engines,
not bundled ones)
2024-07-04 05:29:39 -04:00
Abe Jellinek
2849913d1b FullText: Remove unused function 2024-07-03 14:51:06 -04:00
Abe Jellinek
ee0df08cfb Locate menu: await l10n translation
Should reduce jank when opening the item context menu and sidenav
Locate menu, especially on Windows (where the flash of blank menuitems
lasted an especially long time for some reason).
2024-07-03 11:33:08 -04:00
Abe Jellinek
595eeeff6d TranslationParent: Don't throw on removeHandler() if none added 2024-07-03 10:45:41 -04:00
Abe Jellinek
3e6cfaf9ac RemoteTranslate: Use ZOTERO_CONFIG 2024-07-03 10:29:06 -04:00
Abe Jellinek
4619949678 Fix RemoteTranslate null ref error when translation fails 2024-07-03 10:18:49 -04:00
windingwind
54721652b3
Fix colorpicker styling on Windows (#4326) 2024-07-03 03:26:20 -04:00
abaevbog
668c84fed5
always open duplicatesPane itembox (#4323)
Since the header of the collapsible section is not visible,
there is no way to expand the itemBox if it was collapsed
before dulicate items are selected. With this, itembox
is always opened when a new set of duplicate items is selected.

Fixes: #4318
2024-07-03 01:58:04 -04:00
Abe Jellinek
f6a0ea6282
Use span in hiddenDOMWindow to measure text width (#4316) 2024-07-03 01:41:15 -04:00
abaevbog
63615f1f09
vpat 15: more detailed labels for itemPane (#4050)
- added dynamic tooltip whose label is set only when it appears.
It allows us to have a visible tooltip without screen readers
announcing it
- fetch the pane name string and pass it as an argument to
fluent to set the appropriate label on expand/collapse buttons
- tooltiptext is set dynamically on expand/collapse buttons to
avoid having screen readers read both the label and the tooltip text
that are almost identical
2024-07-03 01:27:35 -04:00
Abe Jellinek
5f47a3d41d
Translation: Treat EPUBs as primary attachments (#4321) 2024-07-03 01:18:23 -04:00
Abe Jellinek
222125c1a2 Add menu type classes to separators
Fixes #4317
2024-07-02 13:43:00 -04:00
Abe Jellinek
92bb6b3403 Remove duplicate ID 2024-07-02 01:02:54 -04:00
Abe Jellinek
d96938f6cd Attachments box: Build Add menu locally instead of cloning
Avoids having to refactor various ZP methods to be aware of the current
tab.
2024-07-02 01:02:54 -04:00
Tom Najdek
390b65f2ab
Fix Import Wizard navigates to the incorrect page. Fix #4300
"Continue" button is now disabled until all checks are completed.
2024-07-01 12:55:23 +02:00
Dan Stillman
ecd6c66750 Additional logging when changing linked attachment base directory 2024-07-01 03:56:29 -04:00
Dan Stillman
d73a6f8a11 Fix PathUtils.joinRelatve() error when changing LABD on Windows
We store relative paths with forward slashes, but PathUtils requires
platform-specific slashes, so it was failing with
NS_ERROR_FILE_UNRECOGNIZED_PATH.

https://forums.zotero.org/discussion/115552/zotero-7-path-problem
2024-07-01 03:56:10 -04:00
Abe Jellinek
3df1a9b812 Code style fixes 2024-07-01 03:32:14 -04:00
Abe Jellinek
d8eae4cd3b Enable Undo Retrieve Metadata when translator added note (#4267)
Closes #2977
2024-07-01 03:31:45 -04:00
abaevbog
a054831a3a
Prevent focus from being lost in itemBox (#4287)
- always render options and link buttons - just do
not display them if their respective field is empty.
That allows us to easily handle focus after refresh
because otherwise, the node may does not exist.
If we try to restore focus to such hidden component,
simulate a "tab" from it to focus the next possible node.
This fixes the issue of focus being lost on tab after all
content of editable-text is cleared.
- add tabindex=0 to itemType menulist, otherwise it was
not perceived as a candidate to return focus to.
- somewhat special treatment for restoring focus to
creator rows. If the desired node is not found, we'll
try to focus the respective node in the last creator row.
It prevents focus from being lost on tab after clearing
the very last creator.

Fixes: #4241
2024-07-01 03:01:33 -04:00
abaevbog
7dc68209a5
fix to unwanted empty creator row in itemBox (#4275)
this._addCreatorRow needs to be properly initialized to
false (as opposed to being undefined) because 'false'
is the value we check against to decide if an empty
row should be added and focused after rendering.

Fixes: #4268
2024-07-01 02:24:01 -04:00