mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-27 08:51:59 +01:00
Replace Fomantic's hard-forked jQuery modal with native `<dialog>` elements, advancing https://github.com/go-gitea/gitea/issues/29849. The UI is visually unchanged. Dialogs open with `show()` over an `inert` page, so tooltips, popups and toasts mounted on `<body>` stay usable above them, unlike with `showModal()` (https://github.com/whatwg/html/issues/9936). - Remove the Fomantic modal and dimmer, add `showModal` and `hideModal` - Declare modals as `<dialog class="modal-dialog">`, shown inside a `.modal-backdrop`, instead of `ui modal` with its unused size classes - Remove two modals that could never be opened - Block the page while a modal is open, close the topmost one on Escape and restore focus to its opener - Allow stacked modals, use a confirm modal instead of `window.confirm` for deleting content history - Hide popups and toasts when a modal opens or closes - Keep the release notes modal open when generating notes fails Fixes: https://github.com/go-gitea/gitea/issues/39643 Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
import {initAriaDropdownPatch} from './fomantic/dropdown.ts';
|
|
import {initFomanticTransition} from './fomantic/transition.ts';
|
|
import {svg} from '../svg.ts';
|
|
|
|
export const fomanticMobileScreen = window.matchMedia('only screen and (max-width: 767.98px)');
|
|
|
|
export function initGiteaFomantic() {
|
|
// our extensions
|
|
$.fn.fomanticExt = {};
|
|
// By default, use "exact match" for full text search
|
|
$.fn.dropdown.settings.fullTextSearch = 'exact';
|
|
// Do not use "cursor: pointer" for dropdown labels
|
|
$.fn.dropdown.settings.className.label += ' tw-cursor-default';
|
|
// Always use Gitea's SVG icons
|
|
$.fn.dropdown.settings.templates.label = function(_value: any, text: string, preserveHTML: boolean, className: Record<string, string>) {
|
|
const escape = $.fn.dropdown.settings.templates.escape;
|
|
return escape(text, preserveHTML) + svg('octicon-x', 16, `${className.delete} icon`);
|
|
};
|
|
|
|
initFomanticTransition();
|
|
|
|
// Use the patches to improve accessibility, these patches are designed to be as independent as possible, make it easy to modify or remove in the future.
|
|
initAriaDropdownPatch();
|
|
}
|