mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-04-27 01:56:22 +00:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
|
import $ from 'jquery';
|
||
|
|
||
|
class Dimmer {
|
||
|
dimmerEl: HTMLDivElement;
|
||
|
active: boolean;
|
||
|
|
||
|
constructor() {
|
||
|
this.dimmerEl = document.querySelector('body > div.ui.dimmer') as HTMLDivElement;
|
||
|
if (!this.dimmerEl) {
|
||
|
this.dimmerEl = document.createElement('div');
|
||
|
this.dimmerEl.classList.add('ui', 'dimmer', 'transition');
|
||
|
document.body.append(this.dimmerEl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
|
dimmer(functionName: string, ...args: any[]) {
|
||
|
if (functionName === 'add content') {
|
||
|
this.dimmerEl.append(args[0][0]);
|
||
|
} else if (functionName === 'get dimmer') {
|
||
|
return $(this.dimmerEl);
|
||
|
} else if (functionName === 'show') {
|
||
|
this.dimmerEl.classList.add('active');
|
||
|
this.dimmerEl.classList.remove('hidden');
|
||
|
this.active = true;
|
||
|
} else if (functionName === 'hide') {
|
||
|
this.dimmerEl.classList.remove('active');
|
||
|
this.dimmerEl.classList.add('hidden');
|
||
|
this.active = false;
|
||
|
} else if (functionName === 'is active') {
|
||
|
return this.active;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// JQuery compatibility functions.
|
||
|
get(_index: number): HTMLElement {
|
||
|
return document.body;
|
||
|
}
|
||
|
removeClass() {}
|
||
|
hasClass() {}
|
||
|
}
|
||
|
|
||
|
export function initDimmer() {
|
||
|
$.fn.dimmer = (arg: string | object) => {
|
||
|
if (typeof arg === 'object') return new Dimmer();
|
||
|
};
|
||
|
}
|