aboutsummaryrefslogtreecommitdiff
path: root/p/scripts/main.js
diff options
context:
space:
mode:
authorGravatar maTh <1645099+math-GH@users.noreply.github.com> 2024-09-22 22:24:52 +0200
committerGravatar GitHub <noreply@github.com> 2024-09-22 22:24:52 +0200
commit24d10feebd0c9802b1082e88bf165902885591aa (patch)
tree02247117b1177536692c0a7a6e9a4b62f081f41e /p/scripts/main.js
parent20c1d06e6258b211fb208fc885ad4e2d6e4a4094 (diff)
Fix: (#6815) share menu shortcut (#6825)
* function show_share_menu(el) * scroll list if share button is not visible * refactor
Diffstat (limited to 'p/scripts/main.js')
-rw-r--r--p/scripts/main.js68
1 files changed, 40 insertions, 28 deletions
diff --git a/p/scripts/main.js b/p/scripts/main.js
index 1566b38cb..4fe9482d3 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -697,6 +697,37 @@ function user_filter(key) {
}
}
+function show_share_menu(el) {
+ const div = el.parentElement;
+ const dropdownMenu = div.querySelector('.dropdown-menu');
+
+ if (!dropdownMenu) {
+ const itemId = el.closest('.flux').id;
+ const templateId = 'share_article_template';
+ const id = itemId;
+ const flux_header_el = el.closest('.flux');
+ const title_el = flux_header_el.querySelector('.item.titleAuthorSummaryDate .item-element.title');
+ const websiteName = ' - ' + flux_header_el.querySelector('.flux_header').dataset.websiteName;
+ const articleAuthors = flux_header_el.querySelector('.flux_header').dataset.articleAuthors;
+ let articleAuthorsText = '';
+ if (articleAuthors.trim().length > 0) {
+ articleAuthorsText = ' (' + articleAuthors + ')';
+ }
+ const link = title_el.href;
+ const title = title_el.textContent;
+ const titleText = title;
+ const template = document.getElementById(templateId).innerHTML
+ .replace(/--entryId--/g, id)
+ .replace(/--link--/g, link)
+ .replace(/--titleText--/g, titleText)
+ .replace(/--websiteName--/g, websiteName)
+ .replace(/--articleAuthors--/g, articleAuthorsText);
+
+ div.insertAdjacentHTML('beforeend', template);
+ }
+ return true;
+}
+
function auto_share(key) {
const share = document.querySelector('.flux.current.active .dropdown-target[id^="dropdown-share"]');
if (!share) {
@@ -704,12 +735,18 @@ function auto_share(key) {
}
const shares = share.parentElement.querySelectorAll('.dropdown-menu .item [data-type]');
if (typeof key === 'undefined') {
+ show_share_menu(share);
+
// Display the share div
location.hash = share.id;
// Force scrolling to the share div
- const scrollTop = needsScroll(share.closest('.bottom'));
+ const scrollTop = needsScroll(share.closest('.horizontal-list'));
if (scrollTop !== 0) {
- document.scrollingElement.scrollTop = scrollTop;
+ if (share.closest('.horizontal-list.flux_header')) {
+ share.nextElementSibling.nextElementSibling.scrollIntoView({ behavior: "smooth", block: "start" });
+ } else {
+ share.nextElementSibling.nextElementSibling.scrollIntoView({ behavior: "smooth", block: "end" });
+ }
}
// Force the key value if there is only one action, so we can trigger it automatically
if (shares.length === 1) {
@@ -1100,32 +1137,7 @@ function init_stream(stream) {
el = ev.target.closest('.item.share a.dropdown-toggle');
if (el) {
- const itemId = el.closest('.flux').id;
- const templateId = 'share_article_template';
- const id = itemId;
- const flux_header_el = el.closest('.flux');
- const title_el = flux_header_el.querySelector('.item.titleAuthorSummaryDate .item-element.title');
- const websiteName = ' - ' + flux_header_el.querySelector('.flux_header').dataset.websiteName;
- const articleAuthors = flux_header_el.querySelector('.flux_header').dataset.articleAuthors;
- let articleAuthorsText = '';
- if (articleAuthors.trim().length > 0) {
- articleAuthorsText = ' (' + articleAuthors + ')';
- }
- const link = title_el.href;
- const title = title_el.textContent;
- const titleText = title;
- const div = el.parentElement;
- const dropdownMenu = div.querySelector('.dropdown-menu');
- const template = document.getElementById(templateId).innerHTML
- .replace(/--entryId--/g, id)
- .replace(/--link--/g, link)
- .replace(/--titleText--/g, titleText)
- .replace(/--websiteName--/g, websiteName)
- .replace(/--articleAuthors--/g, articleAuthorsText);
- if (!dropdownMenu) {
- div.insertAdjacentHTML('beforeend', template);
- }
- return true;
+ return show_share_menu(el);
}
el = ev.target.closest('.item.share > button[data-type="print"]');