some work on the license manager
This commit is contained in:
@@ -8,7 +8,7 @@ import { toast } from 'vue-sonner'
|
||||
// Attributes, classes
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
// #region Clöasses
|
||||
// #region Classes
|
||||
|
||||
export function cn(...inputs: ClassValue[]) {
|
||||
return twMerge(clsx(inputs));
|
||||
@@ -202,6 +202,18 @@ export function randomDate(): Date {
|
||||
return date
|
||||
}
|
||||
|
||||
export function addDays(date: Date | string, days: number) {
|
||||
const newDate = new Date(date);
|
||||
newDate.setDate(newDate.getDate() + days);
|
||||
return newDate;
|
||||
}
|
||||
|
||||
export function addYears(date: Date | string, years: number) {
|
||||
const newDate = new Date(date);
|
||||
newDate.setFullYear(newDate.getFullYear() + years);
|
||||
return newDate;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -228,11 +240,9 @@ Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming
|
||||
// Keyboard shortcuts
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
// Füge diese Typdefinitionen am Anfang der Datei hinzu
|
||||
type HotkeyCallback = (params?: any) => void;
|
||||
type HotkeyEnabledCallback = () => boolean;
|
||||
|
||||
// Füge diese Variablen am Anfang der Datei hinzu
|
||||
const registeredHotkeys = new Map<string, {
|
||||
callback: HotkeyCallback;
|
||||
params: any;
|
||||
@@ -296,6 +306,15 @@ export function hotkey(
|
||||
.map(key => normalizeKeyName(key))
|
||||
.join('+')
|
||||
|
||||
// Warnung, wenn der registrierte Shortcut bekanntlich nicht zuverlässig
|
||||
// vom Browser/OS unterdrückt werden kann.
|
||||
if (UNPREVENTABLE_SHORTCUTS.has(normalizedCombination)) {
|
||||
console.warn(
|
||||
`Registriere Shortcut "${keyCombination}" (normalized: "${normalizedCombination}"). ` +
|
||||
'Achtung: Das Standardverhalten dieses Shortcuts kann vom Browser/OS nicht zuverlässig verhindert werden.'
|
||||
)
|
||||
}
|
||||
|
||||
// Speichern der Hotkey-Informationen
|
||||
registeredHotkeys.set(normalizedCombination, {
|
||||
callback,
|
||||
@@ -337,7 +356,11 @@ function normalizeKeyName(key: string): string {
|
||||
'arrowup': 'uparrow',
|
||||
'arrowdown': 'downarrow',
|
||||
'return': 'enter',
|
||||
'esc': 'escape'
|
||||
'esc': 'escape',
|
||||
'opt': 'alt',
|
||||
'option': 'alt',
|
||||
'spacebar': 'space',
|
||||
'space': 'space'
|
||||
};
|
||||
|
||||
// Konvertiere den Tastennamen in Kleinbuchstaben
|
||||
@@ -347,6 +370,29 @@ function normalizeKeyName(key: string): string {
|
||||
return keyMap[lowerKey] || lowerKey
|
||||
}
|
||||
|
||||
// Liste bekannter Shortcuts, deren Standardverhalten unter vielen Browsern/OS
|
||||
// nicht zuverlässig durch `preventDefault()` unterdrückt werden kann.
|
||||
// Diese Liste ist nicht vollständig — sie dient nur zur Warnung beim Registrieren.
|
||||
const UNPREVENTABLE_SHORTCUTS = new Set([
|
||||
'cmd+tab',
|
||||
'ctrl+tab',
|
||||
'cmd+n',
|
||||
'ctrl+n',
|
||||
'cmd+space',
|
||||
'ctrl+space',
|
||||
'alt+tab',
|
||||
'ctrl+alt+delete',
|
||||
'f12',
|
||||
'cmd+q',
|
||||
'ctrl+q',
|
||||
'cmd+w',
|
||||
'ctrl+w',
|
||||
'ctrl+shift+i',
|
||||
'cmd+opt+i',
|
||||
'ctrl+shift+j',
|
||||
'cmd+opt+j'
|
||||
]);
|
||||
|
||||
function handleKeyboardEvent(event: KeyboardEvent) {
|
||||
// Überprüfen, ob das Event-Element ein Eingabefeld, Textarea oder ähnliches ist
|
||||
const target = event.target as HTMLElement;
|
||||
@@ -354,8 +400,9 @@ function handleKeyboardEvent(event: KeyboardEvent) {
|
||||
target.tagName === 'TEXTAREA' ||
|
||||
target.tagName === 'SELECT' ||
|
||||
target.isContentEditable) {
|
||||
|
||||
// Wenn das Event-Element ein Eingabefeld ist, den Shortcut nicht auslösen
|
||||
return;
|
||||
return
|
||||
}
|
||||
|
||||
// Erstellen einer normalisierten Tastaturkombination
|
||||
@@ -390,7 +437,7 @@ function handleKeyboardEvent(event: KeyboardEvent) {
|
||||
// Verhindern der Standardaktion, falls gewünscht
|
||||
event.preventDefault()
|
||||
event.stopPropagation()
|
||||
return 0
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user