* Remove extraneous comment (see 9361d2 and 5c18f8) * Flexible, multiple reaction types * Fix reaction counts * Re-use svg for active state for now * Update yml, update spec * Possible temp fix for failing tests * Colorize reaction icon svgs * Reaction engagement above post title * Index reactions engagements (for logged-out) * Maybe readinglist is special * Try using crayons' dropdown as a drawer? * readinglist isn't really public now * feat: update the styles for the reaction drawer * Grey background highlight, turn off border/shadow * Read our feature flag docs, saw this was recommended * Missed fifth emoji: party/tada * Fix JS test errors * Update test with tada * Suppress flashing engagements when no public reactions * Liberate jump-to-comments from unicorn replacement * 'Add reaction' on tooltip * Don't show reaction emoji on index unless it's been used * rubocop * Update heart+ total count when toggling * Do not include 'readinglist' in drawer/public counts * Fix semi-public readinglist so that icon is badged for current user * Tweak heart-plus svg * Style tweak: border on active reaction * Show reacted icon on drawer trigger for 1.5 sec * Tweak styles for engagements bar * Style tweaks for multiple engagements (#index) * Trying to get size working through crayons/inline_svg * Sparkle hearts * Restore unicorn * Make heart-plus-active work when user has an active reaction * Try 'hoverdown' a dropdown that activates with hover * Long touch? * Tap *outside* the drawer to close * Mobile reaction drawer is also supposed to be columns * More reaction count cleanup * Final emoticons maybe? * Fix reaction bug when feature disabled * Remove readinglist from public reaction counts * Update specs for new reaction categories * Shuffle makes specs flaky * Order does not matter * rubocop * Update to preserve readinglist analytics * Shuffle makes specs flaky * Fix flickering images, remove icon highlight for now * Don't update total for readinglist * reactions_by_user_id * Try renaming this observer function * Try unid ids for SVGs * Remove local test file * Simplistic test for the unique svg transform * Fix javascript for current SVG * Signifcant string literals in this case, rubocop * Use the right expected output Co-authored-by: Ridhwana <ridhwana.khan16@gmail.com>
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
// Watch @param element for a "long touch" (800ms) and dispatch a custom "longTouch" event,
|
|
// which you are presumably listening for elsewhere. Note that this also disables context menu
|
|
// for the element, as otherwise device will default to opening a context menu instead.
|
|
function watchForLongTouch(element) {
|
|
const longTouchEvent = new Event('longTouch');
|
|
const minDuration = 800;
|
|
let timer;
|
|
|
|
// In the event of a long touch, dispatch the "longTouch" event
|
|
const dispatcher = function () {
|
|
element.dispatchEvent(longTouchEvent);
|
|
};
|
|
|
|
// Observe "touchstart", if it's still going after a duration, dispatch "longTouch"
|
|
const onTouchStart = function (event) {
|
|
if (!timer) {
|
|
timer = setTimeout(dispatcher, minDuration);
|
|
}
|
|
};
|
|
|
|
// Observe "touchend", if they've stopped touching, it won't become a longTouch anytime soon
|
|
const onTouchEnd = function () {
|
|
if (timer) {
|
|
clearTimeout(timer);
|
|
timer = false;
|
|
}
|
|
};
|
|
|
|
if (element) {
|
|
// Disable contextmenu on device, otherwise they'll get a device OS menu instead of ours
|
|
element.oncontextmenu = function (event) {
|
|
event.preventDefault();
|
|
event.stopPropagation(); // not necessary in my case, could leave in case stopImmediateProp isn't available?
|
|
event.stopImmediatePropagation();
|
|
return false;
|
|
};
|
|
element.addEventListener('touchstart', onTouchStart);
|
|
element.addEventListener('touchend', onTouchEnd);
|
|
}
|
|
}
|