Commit graph

231 commits

Author SHA1 Message Date
alistair3149 daef66f141
fix(core): 🐛 use mw.requestIdleCallback for polyfill
Safari does not support rIC yet and MW has a polyfill for that.
2024-11-17 01:12:02 -05:00
alistair3149 34c9ae5fd4
fix(speculationRules): 🐛 stricter selector to pages to prerender 2024-11-13 19:24:45 -05:00
alistair3149 368ceb659a
feat(speculationRules): add basic implementation of Speculation Rules API
This is a basic implementation of Speculation Rules API that will prerender
any page under article path when the user hovers on the link for over 200ms.
2024-11-13 18:46:02 -05:00
alistair3149 4e09e3e3e3
refactor(serviceWorker): ♻️ early exit if wiki is not in root 2024-11-13 17:59:31 -05:00
alistair3149 0c3786c754
perf(share): ️ prerender the HTML for the share button
Instead of doing it in JS, just render it altogther in the HTML
2024-11-12 22:36:59 -05:00
alistair3149 57942075cc
feat(PWA): fallback to clipboard share if Web Share API is not supported 2024-11-12 22:26:03 -05:00
alistair3149 9556478443
perf(core): ️ defer background main scripts with requestIdleCallback 2024-11-12 18:48:03 -05:00
alistair3149 98e6c2d7f1
fix(stickyHeader): 🐛 VE should use the same methods to handle sticky header state 2024-11-09 18:22:52 -05:00
alistair3149 d4d6345050
perf(stickyHeader): ️ only recalc stickyHeader height when width changes 2024-11-08 21:24:56 -05:00
alistair3149 252e98b085
perf(stickyHeader): ️ improve responsiveness for sticky header 2024-11-08 04:58:11 -05:00
alistair3149 82d413f8ff
refactor(core): ♻️ remove IntersectionObserver fallback
Following Vector deprecation
2024-11-07 21:12:50 -05:00
alistair3149 8819757913
fix(stickyHeader): 🐛 do not reset stickyHeader when page title is visible
There is no need to trigger sticky header when page title is visible.
2024-11-07 21:10:39 -05:00
alistair3149 a74d17e130
perf(stickyHeader): ️ improve scroll performance 2024-11-07 20:53:21 -05:00
alistair3149 94936732ec
refactor(core): ♻️ clean up scroll direction observer 2024-11-07 20:33:56 -05:00
alistair3149 30fca942a7
perf(core): ️ move sticky header handling to observers 2024-11-07 19:12:48 -05:00
alistair3149 3b8022c3c1
refactor(core): ♻️ set up scroll direction observer in setupObservers
This is needed for centralizing the observers.
2024-11-07 19:12:48 -05:00
alistair3149 241ef66893
perf(core): ️ move window.resize to resizeObserver 2024-11-07 19:12:48 -05:00
alistair3149 07179d50b1
perf(core): ️ defer non-essential init scripts 2024-11-03 10:39:10 -05:00
alistair3149 e79ae5939c
perf(core): ️ put sticky header elements in DOM instead of creating them on init 2024-11-03 00:44:23 -04:00
alistair3149 ec097f2e42
perf(core): ️ only fire scroll direction function when direction changes 2024-11-02 02:24:54 -04:00
alistair3149 25fbc14908
style(core): 🎨 rename intersectionObserver references to observer
We will be using it for more than intersectionObserver.
2024-11-02 02:00:21 -04:00
alistair3149 50a75c550c
perf(core): ️ do not use throttle for scroll direction observer
Just requestAnimationFrame should be enough. The previous throttle implemenation
makes the sticky header feel less responsive
2024-11-02 01:59:17 -04:00
PenguinEncounter 0248af9425
fix(core): 🐛 fix section collapsing not functioning on Firefox (#965) 2024-10-25 14:06:52 -04:00
alistair3149 fe514e94ce
feat(search): use trash icon instead of clear icon for clear input text button 2024-10-19 01:34:28 -04:00
alistair3149 10d3c17f18
perf(core): ️ disable all CSS transition during window resize 2024-10-19 00:13:13 -04:00
alistair3149 cf1e55dc55
feat(keyhint): remove hyphens between keys 2024-10-17 02:46:21 -04:00
alistair3149 20f484d9a3
feat(core): simplify section implementation and update support for new headings 2024-10-16 16:17:32 -04:00
alistair3149 10a28ac476
feat(menu): add accesskey hint to menu items 2024-10-03 18:57:09 -04:00
alistair3149 3804574ccb
fix(VisualEditor): 🐛 unstick page header in VE 2024-09-23 17:53:00 -04:00
alistair3149 1b7025ef85
feat(toc): expand the current active section 2024-09-10 22:07:22 -04:00
alistair3149 ca1f31d789
refactor(core): ♻️ remove redundant intersection observers 2024-09-10 18:38:11 -04:00
alistair3149 8640d4ef30
feat(toc): switch to ToC implementation based on Vector 2022
This will serve as the groundwork of merging the intersection observers
and collapsible toc in the future.
2024-09-10 18:28:12 -04:00
alistair3149 764f7593c3
fix(overflow): 🐛 fix undefined wrapper 2024-07-20 19:32:22 -04:00
alistair3149 c9d98e477a
feat(stickyHeader): add CSS var --height-sticky-header to offset sticky elements
--height-sticky-header will always return the current height of sticky header.
It can be used to offset sticky elements so that it adjusts to the sticky header.
2024-07-19 17:08:03 -04:00
alistair3149 c3855ff8b9
fix(stickyHeader): use cached value for placeholder height if possible
Related: #854
2024-07-12 03:47:25 -04:00
alistair3149 a4593d7dd3
fix(dropdown): 🐛 use both touchstart and mousedown event listener for click outside event
On iOS devices, click event listeners don't work when the target does not have cursor: pointer.
This should resolve the issue for iOS browsers.

Related: #895
2024-07-08 15:54:15 -04:00
alistair3149 7f9f975b9e
fix(stickyHeader): 🐛 only add sticky class on resize when it is applicable 2024-07-08 14:01:13 -04:00
alistair3149 a7a763b57f
fix(stickyHeader): 🐛 use more accurate calculation for placeholder 2024-07-07 18:17:50 -04:00
alistair3149 e5336c4610
fix(stickyHeader): 🐛 add a placeholder element to page header to avoid layout shift when stickied
Closes: #854
2024-07-07 17:58:02 -04:00
alistair3149 e9fd488cee
fix(share): 🐛 incorrect debounce parameter assignment 2024-07-07 17:40:37 -04:00
alistair3149 fdc6eaee20
feat(Echo): upgrade Echo buttons for consistency
This is similiar to how it is handled in Vector.
We are forcing the Echo button to render in the same way as it was initially.
This took me so many hours sigh.
2024-07-05 20:37:52 -04:00
alistair3149 317296e7b0
fix(dropdown): 🐛 merge conflicting dismiss event handlers
Focus loss and click outside are basically using the same function.
Merging them should avoid them conflicting with each other.

Related: #895
2024-07-04 16:00:46 -04:00
alistair3149 f2ff92e1ac
feat(toc): drop checkbox hack usage in ToC in favor of dropdown (#894)
Now that ToC is also using the new dropdown system, we can remove all references to the old checkbox hack now.

Fixes: #855
2024-07-03 17:44:52 -04:00
alistair3149 516ef3a1cb
feat(dropdown): revamp dropdown menu handling
Putting the dropdown content in the details elemenet have been inconsistent.
Transition are not working correctly and different browsers are not handling it well.
Furthermore, the previous implementation does not allow an always visible state of dropdown content.

Fixes: #882
2024-07-03 16:07:19 -04:00
alistair3149 7ec0ae5b8e
refactor(stickyHeader): ♻️ create sticky sentinel in JS instead
It is only used for sticky header which requires JS, we should just create it in JS
2024-07-02 19:20:17 -04:00
alistair3149 5715a29dae
feat(stickyHeader): reduce direction observer throttle 2024-07-01 13:19:59 -04:00
alistair3149 aaee215cf6
refactor(stickyHeader): ♻️ move sticky header script into a separate module 2024-07-01 13:19:31 -04:00
alistair3149 1edc40e70c
feat(share): only share URL
The text handling across OS is inconsistent, and it is more desirable to just share the link and get the description through the embed.
2024-06-28 19:25:57 -04:00
alistair3149 327aca0b2c
feat(pageActions): add share button to page actions for article pages 2024-06-28 18:42:04 -04:00
alistair3149 7fb35f90f5
fix(overflow): 🐛 prevent overflow button from triggering form action button
When the overflow button is within a `<form>` element, it can sometimes
trigger the form action (e.g. In the realtime preview of WikiEditor).
2024-06-24 14:39:33 -04:00