Commit graph

206 commits

Author SHA1 Message Date
alistair3149 27bca0fc66
feat: improve scrolling performance 2024-05-25 19:26:38 -04:00
alistair3149 ae6d207fb4
fix(core): 🐛 escape double quotes for toc selector 2024-05-25 06:57:02 -04:00
alistair3149 685901cce3
fix(core): 🐛 incorrect section selector 2024-05-21 23:15:53 -04:00
alistair3149 593c6406fb
refactor(core): ♻️ simplify section handling 2024-05-21 18:46:19 -04:00
alistair3149 a405d64616
refactor(core): ♻️ various performance and style improvements 2024-05-21 18:08:28 -04:00
alistair3149 1270d4edd1
refactor(core): ♻️ add error handling to lastModified.js 2024-05-21 15:00:03 -04:00
alistair3149 03da361b97
feat(components): rewrite template data partials into CitizenComponent components (#846)
- Refactor existing template data-related partials into CitizenComponent components
- Re-implement user menu header as UserInfo
- Add description text for anon and temp user in UserMenu
---------

Co-authored-by: github-actions <github-actions@users.noreply.github.com>
2024-05-15 01:24:43 -04:00
alistair3149 f2393a74b8
feat(core): use relative time for sidebar last mod
Closes: #700
2024-05-08 16:39:47 -04:00
alistair3149 9cd0cc45f3
fix(toc): 🐛 CSS escape ID
When the heading contains an amprehend, it will throw an exception.
2024-04-25 23:33:22 -04:00
alistair3149 241dc96cfe
feat(prefs): move page width to clientPrefs
Now all of the existing prefs are migrated to clientPrefs,
we can discard the code from the old system.
2024-04-25 17:41:22 -04:00
alistair3149 964a4a534d
feat(prefs): remove line-height customization for now
Will be re-implemented later
2024-04-25 17:22:27 -04:00
alistair3149 0d52046523
feat(prefs): migrate font size to client preferences 2024-04-25 17:06:09 -04:00
alistair3149 c2aa796b68
fix(core): 🐛 remove leftover console log 2024-04-25 16:19:17 -04:00
alistair3149 4aefd74429
fix(core): 🐛 incorrect delimiter in inline script
Commas are not encoded in localStorage
2024-04-25 15:59:07 -04:00
alistair3149 a741639085
feat(core): move theme preferences to clientPrefs
Since clientPrefs and other related features are not avaliable until MW 1.42,
many of them are backported as polyfill. Instead of using cookies, the polyfill
are using localStorage only like Citizen in the past.

There are many changes behind the scene, but the most important one being that
`skin-citizen-*` theme classes are now soft-deprecated, and replaced by the
standardized `skin-theme-clientpref-*` classes. There will be sufficient
time before the hard deprecation.

Related: #780
2024-04-24 20:23:54 -04:00
alistair3149 30ee7c1dd1
refactor(core): ♻️ use ResourceLoader to minify inline JS 2024-04-24 17:47:33 -04:00
alistair3149 d9675ebd60
fix(core): 🐛 round scrollLeft to integer
Fractional pixels from scrollLeft prevent Citizen from detecting overflow state properly.
2024-04-24 16:19:29 -04:00
alistair3149 cd21fd05f3
fix(core): 🐛 make ToC tracking work for non-content pages
Since MW 1.40, ToC has been enabled on all pages including non-content page.
By generating a list of elements to track through the ToC instead of targeting
specific classes, it should be more resilient and will work for non-content pages.
2024-04-20 01:32:37 -04:00
alistair3149 21ce85a320
fix(core): 🐛 remove loading indicator when page is unloaded
Closes: #811
2024-03-19 18:49:35 -04:00
github-actions 96171236d7 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2024-01-27 02:51:04 +00:00
alistair3149 22addebe77
refactor(search): ♻️ start cleaning up search suggestion functions 2024-01-26 21:50:21 -05:00
github-actions dc3ca54d43 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-12-13 22:10:24 +00:00
alistair3149 eee044d145
feat(core): use CSS variable for language-specific fonts 2023-12-13 17:09:57 -05:00
alistair3149 201a38f93f
fix(core): 🐛 hide loading indicator when user clicks back button on browser
Closes: #718
2023-10-26 17:41:21 -04:00
alistair3149 2f40541bc4
feat(core): prefix citizen section classes 2023-09-10 19:00:52 -04:00
alistair3149 325f22f0dd
fix(core): 🐛 fire input event when search query is cleared 2023-08-28 18:36:51 -07:00
alistair3149 29d0f4b1ff
fix(core): 🐛 incorrect value for aria-controls 2023-08-04 17:31:11 -04:00
alistair3149 e866edc3a5
fix(toc): 🐛 add null check for link 2023-07-30 19:44:34 -04:00
alistair3149 739fa8504c
fix(core): 🐛 enter key should not clear search input
Use span instead of button element. As button element will make
enter key triggering the clear button.
2023-07-16 16:48:14 -04:00
alistair3149 1aba52b870
fix(core): 🐛 inconsistent search focus behavior 2023-07-16 03:50:43 -04:00
alistair3149 aef94e31cb
fix(toc): 🐛 init observer only when there are headlines 2023-07-11 22:01:04 -04:00
alistair3149 0b65a05556
refactor(core): ♻️ break down main function in skin.js 2023-07-11 21:44:34 -04:00
alistair3149 6cddf85131
feat(search): add clear button to search box 2023-07-10 16:23:48 -04:00
沈澄心 2891d042cc
fix(core): skin preference support for Safari on iOS < 12.2 (#680)
* Update skins.citizen.preferences.js

* Update skins.citizen.preferences.js

* Update inline.js

* Update SkinHooks.php

* Update skins.citizen.preferences.less

* Update variables.less

* Update theme.less

* Update theme.less

* Update skins.citizen.preferences.js

* Update skins.citizen.preferences.js

* Update skins.citizen.preferences.js

* Update skin.js
2023-07-03 08:48:41 -04:00
H. C. Kruse a1139e7797
fix(Tables): Check if element.parentNode is null (#681)
Happened on the recent changes table. While the added line in TableNowrapClasses also fixes this, I've left it in as a safeguard.
2023-07-03 08:48:15 -04:00
沈澄心 89a9957cd4
refactor(core): avoid using ES2020+ methods (#669)
Replace ??, ?., and replaceChildren() for better compatibility; hide pref panel in unsupported browsers 

* Update mixins.less

* Update Sections.less

* Update TableOfContents.less

* Update interface-edit-section-links.less

* Update mixins.less

* Update Sections.less

* Update TableOfContents.less

* Update interface-edit-section-links.less

* Update sections.js

* Update tableOfContents.js

* Update mwRestApi.js

* Update mwRestApi.js

* Update skins.citizen.preferences.js

* Update mwActionApi.js

* Update typeahead.js
2023-06-21 14:30:45 -04:00
github-actions 14db25faac ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-06-20 18:30:08 +00:00
沈澄心 07d7a730b8
fix(core): prevent propagation of click event on .mw-editsection, .mw-editsection-like (#667)
* Update sections.js

* Update sections.js
2023-06-20 14:29:37 -04:00
Simon Stier a7b99d11f0
feat(core): add config var 'wgCitizenTableNowrapClasses' (#621)
* add config var 'wgCitizenTableNowrapClasses'
* refactor: load config via require
2023-05-18 13:53:58 -04:00
alistair3149 09ffed668d
fix(core): 🐛 ensure loading indicator is removed when script is loaded 2023-05-06 17:51:41 -04:00
alistair3149 cd93b3d679
feat(core): ignore cargo dynamic table for table wrapper 2023-05-02 01:09:54 -04:00
alistair3149 79daca474a
feat(core): ignore dataTable for table wrapper
It seems that dataTable collide with the wrapper for some reason.
Looking for help on this one if anyone knows.
2023-05-02 00:32:07 -04:00
alistair3149 661fbf0b8f
feat(core): do not wrap changelist tables 2023-05-01 23:34:18 -04:00
alistair3149 587cea1ee9
feat(core): check parent container for table nowrap class 2023-05-01 14:50:48 -04:00
alistair3149 3d14f9cf0b
feat(core): do not wrap nested tables 2023-05-01 14:45:08 -04:00
alistair3149 c10dd046c3
refactor(core): ♻️ minor variable name cleanup 2023-05-01 03:08:08 -04:00
github-actions 8d044aea95 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-05-01 06:38:27 +00:00
alistair3149 81affb88f1
feat(core): ignore infobox class for table wrapper 2023-05-01 02:37:32 -04:00
github-actions 8bd678a180 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-05-01 06:24:37 +00:00
alistair3149 d1d49e62d5
feat(core): inherit float classes to table wrapper
So that table would have the correct float style
2023-05-01 02:23:40 -04:00
github-actions ee90992a89 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-05-01 06:06:54 +00:00
alistair3149 b2eaf0a41a
feat(core): add HTML class to disable table wrapper
Adding the class `.citizen-table-nowrap` will stop Citizen from adding wrapper to the table
2023-05-01 02:05:58 -04:00
alistair3149 e45af9bbbe
feat(core): add scroll affordance to tables 2023-04-30 19:54:31 -04:00
alistair3149 ce9963467d
refactor(core): ♻️ load content scripts using wikipage.content hook 2023-04-30 18:01:53 -04:00
github-actions 1945988d6f ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2023-04-30 21:02:42 +00:00
alistair3149 8c888a7e1f
feat(core): make tables responsive without breaking table layout
Instead of a CSS solution used previously, switch to a JS solution to wrap tables.
This should ensure the table renders correctly and also scrollable.
This lays the groundwork for making table more user-friendly in the future.
2023-04-30 17:01:29 -04:00
alistair3149 90890de53f
feat(core): add config flag to disable preferences menu 2023-03-27 14:08:38 -04:00
alistair3149 015b1e1b9a
fix(core): 🐛 respect config flag for default theme
This should fix the issue where CitizenThemeDefault is not working
2023-03-20 12:21:46 -04:00
alistair3149 e06ed54c83
feat(search): support MW default search shortcut key
It is added as an alternative of the slash key shortcut.

Closes: #582
2023-02-15 16:08:39 -05:00
alistair3149 ee4a7eda4f
refactor(core): ♻️ rename mw-checkbox-hack class to citizen-menu-checkbox 2023-01-25 20:25:40 -05:00
alistair3149 ef955c28a0
feat(core): use MW core checkboxHack instead
We no longer need to emulate the same feature when it is in core
2023-01-25 19:40:52 -05:00
alistair3149 a7406d8e32
fix(core): 🐛 default to auto theme unless set 2023-01-20 20:18:58 -05:00
alistair3149 685a3ad1c4
refactor(core): ♻️ reduce the number of RL modules
It will improve the performance in module registration and also caching
2022-12-09 14:48:17 -05:00
alistair3149 48cb80aaa3
refactor(search): ♻️ make renderSuggestions more digestible 2022-12-03 13:42:01 -05:00
github-actions 568405cd5d ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2022-12-02 23:00:32 +00:00
alistair3149 391266c0a7
feat(core): allow the use of custom search suggestion module
defines the search suggestion ResourceLoader module
used by the skin. It deprecates the  config
2022-12-02 17:59:45 -05:00
github-actions 57d50ea5c5 ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2022-12-02 22:39:05 +00:00
alistair3149 1939850369
feat(core): allow multiple search components on the same page
This will allow the search suggestion to hook up to multiple search
boxes with `.citizen-search-box` as container. Do note that the default
Citizen suggestion is hardcoded for the primary search, so it only
works for the old core search suggestion module.

This is also a prereq for implementing the Codex search like the one
from Vector.
2022-12-02 17:35:23 -05:00
alistair3149 9652d4f8ed
refactor(core): ♻️ prepare for heading structure changes 2022-11-24 21:46:23 -05:00
alistair3149 f70d410779
feat(core): reduce scroll up header delay 2022-11-23 14:11:48 -05:00
alistair3149 6b13da3318
feat(core): hide navigation on scroll down 2022-11-21 17:46:09 -05:00
alistair3149 b5ddd26de7
perf(core): ️ only add beforeunload listener once 2022-11-21 17:46:04 -05:00
alistair3149 9c871764c3
style: 🎨 fix some eslint issues 2022-11-21 17:45:50 -05:00
alistair3149 31c43fa33b
refactor(core): ♻️ do not init observer when not needed
Do not init scroll observer if sentinel is set to display:none
2022-11-21 17:45:42 -05:00
github-actions 159bd8a7d2
ci: 👷 lint code to MediaWiki standards
Check commit and GitHub actions for more details
2022-11-21 17:42:28 -05:00
alistair3149 969cd787d6
feat(core): use different font weight in different themes
The same font weight do not provide the same contrast in different themes.
We should be able to change the scaling
2022-11-21 17:42:26 -05:00
alistair3149 ceaf3ed844
feat(core): tweak responsive layout 2022-11-21 17:42:22 -05:00
alistair3149 a1ce408e43
feat(core): re-implement responsive toc 2022-11-21 17:42:05 -05:00
alistair3149 3eaeaa15f7
refactor(core): ♻️ pre-work to allow Citizen to render ToC 2022-11-21 17:41:40 -05:00
alistair3149 4f651b41ca
feat(pwa): add basic support for service worker
This is super basic and experimental.
It will be expanded upon in the future, but for now it will satisfy the
requirement for PWA
2022-10-23 16:37:43 -04:00
alistair3149 e72d7c00a3
feat(core): add sticky body header 2022-09-29 22:33:06 -04:00
alistair3149 e53afa51dc
fix(core): config CitizenThemeDefault should set theme correctly
Previously the config did set the theme correctly but get overridden by the inline
script to auto, this will fix it.

Closes: #418
2022-06-29 15:29:44 -04:00
alistair3149 eba22354e5
fix(core): run script when DOM is ready
Sometimes the scripts start to run before DOM is fully ready. It causes things
like #475 where the checkbox is not in DOM yet but the script is already asking for it.
2022-06-04 17:44:03 -04:00
alistair3149 da619c793b
refactor(core): remove duplicated auto theme handling
Refactor auto theme handling into inline script since theme.js is basically duplicated code
at this point. Also add the event listener whenever auto theme is set.

Closes: #461
2022-05-20 17:33:10 -04:00
alistair3149 9d711d4ee2
refactor(core): use scroll-padding-top for top margin 2022-05-17 15:35:04 -04:00
alistair3149 1be7f5faaf refactor(core): rewrite ToC scrollspy based on Vector 2022-05-17 15:11:16 -04:00
alistair3149 c978bb1320
refactor(core): rename title hidden class 2022-05-13 00:30:46 -04:00
alistair3149 d59ca5c83a
refactor(core): move intersection observer into a module
* We will likely use it for other things in the future
* Based on Vector's implementation
* Also do not get toc element twice
2022-05-13 00:26:53 -04:00
alistair3149 23795e05e3
chore(ci): disable mediawiki/class-doc 2022-05-13 00:20:05 -04:00
alistair3149 13a2b710ea
refactor(core): remove duplicated check for ToC 2022-05-12 23:24:32 -04:00
alistair3149 194c73d5bb
style(core): use arrow function 2022-05-12 22:44:17 -04:00
alistair3149 86150d492d
refactor(core): clean up checkboxHack implementation
Mostly based on Vector 2022. Now we target checkbox hacks by the HTML classes
.mw-checkbox-hack-TYPE instead of defining each individually, which would
make it more scalable.
2022-05-12 22:37:28 -04:00
alistair3149 508c96ae9d
refactor(core): merge ToC script into core scripts 2022-05-12 17:18:39 -04:00
alistair3149 e0d5eb9657
feat(core): set toc-enabled through Mustache template
Since somewhere around MW 1.37, buildSkinFeatures() no longer have access to OutputPage.
That causes $out->isTOCenabled always return null, which makes ToC
broken for any wikis since 1.37. This should fix the issue for now.
More optimizations on the loading behavior will come soon.
2022-05-12 17:01:01 -04:00
github-actions a2577db3c8 ci: lint code to MediaWiki standards
Check commit and GitHub actions for more details
2022-05-12 01:41:40 +00:00
alistair3149 b73357cf7c
feat(core): update checkboxHack API 2022-05-11 21:32:36 -04:00
alistair3149 da26d4bc7f
refactor(core): add null check search button checkbox 2022-05-11 19:08:51 -04:00
alistair3149 cae7deb945
refactor(core): clean up header icon styles 2022-05-10 11:59:43 -04:00
alistair3149 6e35212007 refactor(core): clean up search box implementation
* Clean up DOM structure
* Clean up HTML classes
* Use relative units
* Remove unnessecary CSS
2022-05-10 10:52:36 -04:00
alistair3149 5ccfbcfdeb refactor(core): clean up drawer implementation
This is a part of the site header refactor
* Use relative units
* Add title to toggle button
* Remove unnessecary CSS
* Rewrite HTML classes
* Temporary remove drawer subsearch, it will be re-explored in a later patch
2022-05-10 10:52:36 -04:00