@xleddyl/443-components-vue 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CATALOG.md +155 -153
- package/README.md +79 -2
- package/dist/chart/BarChart.vue.d.ts +2 -2
- package/dist/chart/ChartLegend.vue.d.ts +4 -4
- package/dist/chart/ChartPanel.vue.d.ts +2 -2
- package/dist/chart/ChartSummary.vue.d.ts +2 -2
- package/dist/chart/DoughnutChart.vue.d.ts +2 -2
- package/dist/chart/LineChart.vue.d.ts +2 -2
- package/dist/components/core/Button.vue.d.ts +2 -2
- package/dist/components/core/FieldMessage.vue.d.ts +2 -2
- package/dist/components/core/FormAlerts.vue.d.ts +2 -2
- package/dist/components/core/FormField.vue.d.ts +2 -2
- package/dist/components/core/Input.vue.d.ts +4 -4
- package/dist/components/core/Kbd.vue.d.ts +2 -2
- package/dist/components/core/Root.vue.d.ts +4 -4
- package/dist/components/core/Spinner.vue.d.ts +2 -2
- package/dist/components/core/Textarea.vue.d.ts +4 -4
- package/dist/components/core/VisuallyHidden.vue.d.ts +4 -4
- package/dist/components/data/Avatar.vue.d.ts +2 -2
- package/dist/components/data/AvatarGroup.vue.d.ts +2 -2
- package/dist/components/data/Badge.vue.d.ts +2 -2
- package/dist/components/data/DescriptionList.vue.d.ts +2 -2
- package/dist/components/data/FilterPill.vue.d.ts +2 -2
- package/dist/components/data/Pagination.vue +14 -8
- package/dist/components/data/Pagination.vue.d.ts +13 -10
- package/dist/components/data/SelectionBar.vue.d.ts +2 -2
- package/dist/components/data/Stat.vue.d.ts +4 -4
- package/dist/components/data/Tag.vue.d.ts +4 -4
- package/dist/components/data/Timeline.vue.d.ts +2 -2
- package/dist/components/data/Tree.vue.d.ts +4 -4
- package/dist/components/data/types.d.ts +1 -0
- package/dist/components/feedback/Alert.vue.d.ts +4 -4
- package/dist/components/feedback/EmptyState.vue.d.ts +2 -2
- package/dist/components/feedback/LoadingOverlay.vue.d.ts +2 -2
- package/dist/components/feedback/Meter.vue.d.ts +2 -2
- package/dist/components/feedback/Progress.vue.d.ts +2 -2
- package/dist/components/feedback/ProgressRing.vue.d.ts +2 -2
- package/dist/components/feedback/Skeleton.vue.d.ts +2 -2
- package/dist/components/forms/Calendar.vue.d.ts +4 -4
- package/dist/components/forms/ColorInput.vue.d.ts +4 -4
- package/dist/components/forms/DateInput.vue.d.ts +4 -4
- package/dist/components/forms/DatePicker.vue.d.ts +4 -4
- package/dist/components/forms/FileInput.vue.d.ts +4 -4
- package/dist/components/forms/InputAddon.vue.d.ts +2 -2
- package/dist/components/forms/InputGroup.vue.d.ts +2 -2
- package/dist/components/forms/NumberInput.vue.d.ts +4 -4
- package/dist/components/forms/PasswordInput.vue.d.ts +4 -4
- package/dist/components/forms/PinInput.vue.d.ts +4 -4
- package/dist/components/forms/Radio.vue.d.ts +2 -2
- package/dist/components/forms/Slider.vue.d.ts +4 -4
- package/dist/components/forms/Switch.vue.d.ts +4 -4
- package/dist/components/forms/TimeInput.vue.d.ts +4 -4
- package/dist/components/layout/Accordion.vue.d.ts +4 -4
- package/dist/components/layout/AppShell.vue.d.ts +4 -4
- package/dist/components/layout/Breadcrumbs.vue.d.ts +2 -2
- package/dist/components/layout/Card.vue.d.ts +4 -4
- package/dist/components/layout/CopyButton.vue.d.ts +4 -4
- package/dist/components/layout/Grid.vue.d.ts +2 -2
- package/dist/components/layout/NavLink.vue.d.ts +4 -4
- package/dist/components/layout/PageHeader.vue.d.ts +2 -2
- package/dist/components/layout/Separator.vue.d.ts +2 -2
- package/dist/components/layout/Sidebar.vue.d.ts +2 -2
- package/dist/components/layout/SidebarSection.vue.d.ts +2 -2
- package/dist/components/layout/Stack.vue.d.ts +4 -4
- package/dist/components/layout/Stepper.vue.d.ts +4 -4
- package/dist/components/layout/Tabs.vue.d.ts +4 -4
- package/dist/components/layout/ThemeSwitch.vue.d.ts +2 -2
- package/dist/components/layout/Toolbar.vue.d.ts +2 -2
- package/dist/components/overlays/CommandPalette.vue.d.ts +2 -2
- package/dist/components/overlays/ConfirmDialog.vue.d.ts +4 -4
- package/dist/components/overlays/ConfirmHost.vue.d.ts +4 -4
- package/dist/components/overlays/ContextMenu.vue.d.ts +4 -4
- package/dist/components/overlays/Drawer.vue.d.ts +4 -4
- package/dist/components/overlays/DropdownMenu.vue.d.ts +4 -4
- package/dist/components/overlays/HoverCard.vue.d.ts +4 -4
- package/dist/components/overlays/Modal.vue.d.ts +4 -4
- package/dist/components/overlays/Popover.vue.d.ts +4 -4
- package/dist/components/overlays/Toaster.vue.d.ts +2 -2
- package/dist/components/overlays/Tooltip.vue.d.ts +2 -2
- package/dist/components/templates/AccountMenu.vue.d.ts +4 -4
- package/dist/components/templates/AppearanceSettings.vue.d.ts +2 -2
- package/dist/components/templates/AuthLayout.vue.d.ts +2 -2
- package/dist/components/templates/Brand.vue.d.ts +4 -4
- package/dist/components/templates/DashboardLayout.vue +2 -0
- package/dist/components/templates/DashboardLayout.vue.d.ts +3 -2
- package/dist/components/templates/DashboardPage.vue.d.ts +2 -2
- package/dist/components/templates/DetailPage.vue.d.ts +4 -4
- package/dist/components/templates/EmptyPage.vue.d.ts +2 -2
- package/dist/components/templates/ErrorPage.vue.d.ts +2 -2
- package/dist/components/templates/ListPage.vue +7 -3
- package/dist/components/templates/ListPage.vue.d.ts +5 -5
- package/dist/components/templates/SaveBar.vue.d.ts +4 -4
- package/dist/components/templates/SettingsGroup.vue.d.ts +2 -2
- package/dist/components/templates/SettingsModal.vue.d.ts +4 -4
- package/dist/components/templates/SettingsPage.vue.d.ts +4 -4
- package/dist/components/templates/SettingsSection.vue.d.ts +4 -4
- package/dist/composables/core.d.ts +1 -0
- package/dist/composables/core.mjs +1 -0
- package/dist/composables/usePreferences.d.ts +17 -0
- package/dist/composables/usePreferences.mjs +50 -0
- package/dist/editor/RichTextEditor.vue.d.ts +4 -4
- package/dist/grid/DataGrid.vue +57 -13
- package/dist/grid/DataGrid.vue.d.ts +5 -4
- package/dist/grid/GridToolbar.vue.d.ts +4 -4
- package/dist/grid/cells/BadgeCell.vue.d.ts +2 -2
- package/dist/grid/cells/BooleanCell.vue.d.ts +2 -2
- package/dist/grid/cells/ButtonCell.vue.d.ts +2 -2
- package/dist/grid/cells/DateCell.vue.d.ts +2 -2
- package/dist/grid/cells/EmptyCell.vue.d.ts +2 -2
- package/dist/grid/cells/ImageCell.vue.d.ts +2 -2
- package/dist/grid/types.d.ts +5 -1
- package/dist/internal/core/LiveRegion.vue.d.ts +2 -2
- package/dist/internal/core/preferences.d.ts +34 -0
- package/dist/internal/core/preferences.mjs +184 -0
- package/dist/internal/core/preset.mjs +4 -1
- package/dist/internal/core/theme.mjs +4 -1
- package/dist/internal/layout/NavGroup.vue.d.ts +4 -4
- package/dist/internal/layout/persist.mjs +44 -9
- package/dist/internal/overlays/DialogFrame.vue.d.ts +4 -4
- package/dist/internal/overlays/MenuList.vue.d.ts +4 -4
- package/dist/internal/overlays/OverlayView.vue.d.ts +4 -4
- package/dist/locale/de.mjs +2 -1
- package/dist/locale/en.mjs +2 -1
- package/dist/locale/it.mjs +2 -1
- package/dist/locale/types.d.ts +1 -0
- package/dist/nuxt/runtime/layouts/auth.vue.d.ts +4 -4
- package/dist/nuxt/runtime/layouts/dashboard.vue.d.ts +4 -4
- package/dist/styles/forms/select.css +16 -2
- package/dist/styles/templates/settings-modal.css +9 -4
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
11
11
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
12
12
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
13
13
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
14
|
-
hidden?: "" | (boolean | "true" | "false") | "
|
|
14
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
15
15
|
id?: string | undefined | undefined;
|
|
16
16
|
inert?: (boolean | "true" | "false") | undefined;
|
|
17
17
|
lang?: string | undefined | undefined;
|
|
@@ -206,7 +206,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
206
206
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
207
207
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
208
208
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
209
|
-
hidden?: "" | (boolean | "true" | "false") | "
|
|
209
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
210
210
|
id?: string | undefined | undefined;
|
|
211
211
|
inert?: (boolean | "true" | "false") | undefined;
|
|
212
212
|
lang?: string | undefined | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { App, InjectionKey, Ref } from 'vue';
|
|
2
|
+
export type PreferenceListener = (key: string, value: unknown) => void;
|
|
3
|
+
export interface PreferenceStore {
|
|
4
|
+
get(key: string): unknown;
|
|
5
|
+
set(key: string, value: unknown): void;
|
|
6
|
+
subscribe?(listener: PreferenceListener): () => void;
|
|
7
|
+
clientOnly?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface Preferences {
|
|
10
|
+
readonly store: PreferenceStore;
|
|
11
|
+
readonly clientOnly: boolean;
|
|
12
|
+
get(key: string): unknown;
|
|
13
|
+
set(key: string, value: unknown): void;
|
|
14
|
+
remove(key: string): void;
|
|
15
|
+
install(app: App): void;
|
|
16
|
+
}
|
|
17
|
+
export declare const PREFERENCES_KEY: InjectionKey<Preferences>;
|
|
18
|
+
export declare const LOCAL_PREFERENCE_PREFIX = "k-pref:";
|
|
19
|
+
export declare function createLocalPreferenceStore(prefix?: string): PreferenceStore;
|
|
20
|
+
export interface RemotePreferenceStoreOptions {
|
|
21
|
+
initial?: Record<string, unknown> | null;
|
|
22
|
+
save: (patch: Record<string, unknown>) => unknown;
|
|
23
|
+
debounce?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface RemotePreferenceStore extends PreferenceStore {
|
|
26
|
+
snapshot(): Record<string, unknown>;
|
|
27
|
+
replace(snapshot: Record<string, unknown> | null | undefined): void;
|
|
28
|
+
flush(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export declare function createRemotePreferenceStore(options: RemotePreferenceStoreOptions): RemotePreferenceStore;
|
|
31
|
+
export declare function createPreferences(store?: PreferenceStore): Preferences;
|
|
32
|
+
export declare function resolvePreferences(): Preferences;
|
|
33
|
+
export declare function whenPreferencesReady(preferences: Preferences, callback: () => void): void;
|
|
34
|
+
export declare function bindPreference<T>(preferences: Preferences, key: string, target: Ref<T>, isValid: (value: unknown) => value is T, fallback: T): void;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { effectScope, getCurrentInstance, inject, onMounted, shallowReactive, watch } from "vue";
|
|
2
|
+
import { isClient } from "./env.mjs";
|
|
3
|
+
import { readStorage, removeStorage, writeStorage } from "./storage.mjs";
|
|
4
|
+
export const PREFERENCES_KEY = Symbol("k-preferences");
|
|
5
|
+
export const LOCAL_PREFERENCE_PREFIX = "k-pref:";
|
|
6
|
+
export function createLocalPreferenceStore(prefix = LOCAL_PREFERENCE_PREFIX) {
|
|
7
|
+
const cache = /* @__PURE__ */ new Map();
|
|
8
|
+
function parse(raw) {
|
|
9
|
+
if (raw === null) return void 0;
|
|
10
|
+
try {
|
|
11
|
+
return JSON.parse(raw);
|
|
12
|
+
} catch {
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
clientOnly: true,
|
|
18
|
+
get(key) {
|
|
19
|
+
if (!isClient()) return void 0;
|
|
20
|
+
if (!cache.has(key)) cache.set(key, parse(readStorage(prefix + key)));
|
|
21
|
+
return cache.get(key);
|
|
22
|
+
},
|
|
23
|
+
set(key, value) {
|
|
24
|
+
if (!isClient()) return;
|
|
25
|
+
cache.set(key, value);
|
|
26
|
+
if (value === void 0) removeStorage(prefix + key);
|
|
27
|
+
else writeStorage(prefix + key, JSON.stringify(value));
|
|
28
|
+
},
|
|
29
|
+
subscribe(listener) {
|
|
30
|
+
if (!isClient()) return () => {
|
|
31
|
+
};
|
|
32
|
+
const onStorage = (event) => {
|
|
33
|
+
if (event.storageArea !== localStorage) return;
|
|
34
|
+
if (event.key === null) {
|
|
35
|
+
for (const key2 of [...cache.keys()]) {
|
|
36
|
+
cache.delete(key2);
|
|
37
|
+
listener(key2, void 0);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!event.key.startsWith(prefix)) return;
|
|
42
|
+
const key = event.key.slice(prefix.length);
|
|
43
|
+
const value = parse(event.newValue);
|
|
44
|
+
cache.set(key, value);
|
|
45
|
+
listener(key, value);
|
|
46
|
+
};
|
|
47
|
+
window.addEventListener("storage", onStorage);
|
|
48
|
+
return () => window.removeEventListener("storage", onStorage);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function createRemotePreferenceStore(options) {
|
|
53
|
+
let values = { ...options.initial };
|
|
54
|
+
let pending = {};
|
|
55
|
+
let timer;
|
|
56
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
57
|
+
const delay = options.debounce ?? 0;
|
|
58
|
+
async function flush() {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
timer = void 0;
|
|
61
|
+
if (!Object.keys(pending).length) return;
|
|
62
|
+
const patch = pending;
|
|
63
|
+
pending = {};
|
|
64
|
+
try {
|
|
65
|
+
await options.save(patch);
|
|
66
|
+
} catch {
|
|
67
|
+
pending = { ...patch, ...pending };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (isClient()) {
|
|
71
|
+
const flushHidden = () => {
|
|
72
|
+
if (document.visibilityState === "hidden") void flush();
|
|
73
|
+
};
|
|
74
|
+
document.addEventListener("visibilitychange", flushHidden);
|
|
75
|
+
window.addEventListener("pagehide", () => void flush());
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
clientOnly: false,
|
|
79
|
+
get: (key) => values[key],
|
|
80
|
+
set(key, value) {
|
|
81
|
+
const next = { ...values };
|
|
82
|
+
if (value === void 0) delete next[key];
|
|
83
|
+
else next[key] = value;
|
|
84
|
+
values = next;
|
|
85
|
+
pending[key] = value === void 0 ? null : value;
|
|
86
|
+
if (!isClient()) return;
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
timer = setTimeout(() => void flush(), delay);
|
|
89
|
+
},
|
|
90
|
+
subscribe(listener) {
|
|
91
|
+
listeners.add(listener);
|
|
92
|
+
return () => listeners.delete(listener);
|
|
93
|
+
},
|
|
94
|
+
snapshot: () => ({ ...values }),
|
|
95
|
+
replace(snapshot) {
|
|
96
|
+
const previous = values;
|
|
97
|
+
values = { ...snapshot };
|
|
98
|
+
pending = {};
|
|
99
|
+
clearTimeout(timer);
|
|
100
|
+
for (const key of /* @__PURE__ */ new Set([...Object.keys(previous), ...Object.keys(values)]))
|
|
101
|
+
if (previous[key] !== values[key])
|
|
102
|
+
for (const listener of listeners) listener(key, values[key]);
|
|
103
|
+
},
|
|
104
|
+
flush
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function createPreferences(store = createLocalPreferenceStore()) {
|
|
108
|
+
const versions = shallowReactive({});
|
|
109
|
+
const bump = (key) => {
|
|
110
|
+
versions[key] = (versions[key] ?? 0) + 1;
|
|
111
|
+
};
|
|
112
|
+
store.subscribe?.((key) => bump(key));
|
|
113
|
+
const preferences = {
|
|
114
|
+
store,
|
|
115
|
+
clientOnly: Boolean(store.clientOnly),
|
|
116
|
+
get(key) {
|
|
117
|
+
void versions[key];
|
|
118
|
+
return store.get(key);
|
|
119
|
+
},
|
|
120
|
+
set(key, value) {
|
|
121
|
+
if (store.get(key) === value) return;
|
|
122
|
+
store.set(key, value);
|
|
123
|
+
bump(key);
|
|
124
|
+
},
|
|
125
|
+
remove(key) {
|
|
126
|
+
preferences.set(key, void 0);
|
|
127
|
+
},
|
|
128
|
+
install(app) {
|
|
129
|
+
app.provide(PREFERENCES_KEY, preferences);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
return preferences;
|
|
133
|
+
}
|
|
134
|
+
let localPreferences;
|
|
135
|
+
export function resolvePreferences() {
|
|
136
|
+
const injected = getCurrentInstance() ? inject(PREFERENCES_KEY, null) : null;
|
|
137
|
+
return injected ?? (localPreferences ??= createPreferences());
|
|
138
|
+
}
|
|
139
|
+
let hydrated = false;
|
|
140
|
+
export function whenPreferencesReady(preferences, callback) {
|
|
141
|
+
if (!preferences.clientOnly || hydrated) {
|
|
142
|
+
if (!preferences.clientOnly || isClient()) callback();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (getCurrentInstance())
|
|
146
|
+
onMounted(() => {
|
|
147
|
+
hydrated = true;
|
|
148
|
+
callback();
|
|
149
|
+
});
|
|
150
|
+
else if (isClient()) callback();
|
|
151
|
+
}
|
|
152
|
+
const bound = /* @__PURE__ */ new WeakMap();
|
|
153
|
+
export function bindPreference(preferences, key, target, isValid, fallback) {
|
|
154
|
+
const seen = bound.get(target) ?? /* @__PURE__ */ new WeakSet();
|
|
155
|
+
if (seen.has(preferences)) return;
|
|
156
|
+
seen.add(preferences);
|
|
157
|
+
bound.set(target, seen);
|
|
158
|
+
function apply() {
|
|
159
|
+
const stored = preferences.get(key);
|
|
160
|
+
if (isValid(stored)) {
|
|
161
|
+
if (stored !== target.value) target.value = stored;
|
|
162
|
+
} else if (stored === void 0 && isClient() && target.value !== fallback)
|
|
163
|
+
preferences.set(key, target.value);
|
|
164
|
+
}
|
|
165
|
+
if (!preferences.clientOnly) {
|
|
166
|
+
const stored = preferences.get(key);
|
|
167
|
+
if (isValid(stored) && stored !== target.value) target.value = stored;
|
|
168
|
+
}
|
|
169
|
+
whenPreferencesReady(preferences, () => {
|
|
170
|
+
apply();
|
|
171
|
+
if (!isClient()) return;
|
|
172
|
+
effectScope(true).run(() => {
|
|
173
|
+
watch(target, (value) => {
|
|
174
|
+
if (preferences.get(key) !== value) preferences.set(key, value);
|
|
175
|
+
});
|
|
176
|
+
watch(
|
|
177
|
+
() => preferences.get(key),
|
|
178
|
+
(value) => {
|
|
179
|
+
if (isValid(value) && value !== target.value) target.value = value;
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { getCurrentInstance, inject } from "vue";
|
|
2
2
|
import { PRESET_KEY } from "../keys.mjs";
|
|
3
3
|
import { isThemePreset, PRESET_STORAGE_KEY } from "./preset-data.mjs";
|
|
4
|
+
import { bindPreference, resolvePreferences } from "./preferences.mjs";
|
|
4
5
|
import { createStoredRef } from "./storage.mjs";
|
|
5
6
|
let localStore;
|
|
6
7
|
export function resolvePresetStore() {
|
|
7
8
|
const injected = getCurrentInstance() ? inject(PRESET_KEY, null) : null;
|
|
8
|
-
|
|
9
|
+
const store = injected ?? (localStore ??= createStoredRef(PRESET_STORAGE_KEY, isThemePreset, "default"));
|
|
10
|
+
bindPreference(resolvePreferences(), "preset", store, isThemePreset, "default");
|
|
11
|
+
return store;
|
|
9
12
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getCurrentInstance, inject, shallowRef } from "vue";
|
|
2
2
|
import { THEME_KEY } from "../keys.mjs";
|
|
3
3
|
import { DARK_SCHEME_QUERY, isClient } from "./env.mjs";
|
|
4
|
+
import { bindPreference, resolvePreferences } from "./preferences.mjs";
|
|
4
5
|
import { createStoredRef } from "./storage.mjs";
|
|
5
6
|
export const THEME_STORAGE_KEY = "k-theme";
|
|
6
7
|
export const THEME_ORDER = ["system", "light", "dark"];
|
|
@@ -10,7 +11,9 @@ export function isThemePreference(value) {
|
|
|
10
11
|
let localStore;
|
|
11
12
|
export function resolveThemeStore() {
|
|
12
13
|
const injected = getCurrentInstance() ? inject(THEME_KEY, null) : null;
|
|
13
|
-
|
|
14
|
+
const store = injected ?? (localStore ??= createStoredRef(THEME_STORAGE_KEY, isThemePreference, "system"));
|
|
15
|
+
bindPreference(resolvePreferences(), "theme", store, isThemePreference, "system");
|
|
16
|
+
return store;
|
|
14
17
|
}
|
|
15
18
|
export const systemDark = shallowRef(false);
|
|
16
19
|
let systemListening = false;
|
|
@@ -16,6 +16,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
16
16
|
results?: (string | number) | undefined;
|
|
17
17
|
placeholder?: string | undefined | undefined;
|
|
18
18
|
dir?: string | undefined | undefined;
|
|
19
|
+
contextmenu?: string | undefined | undefined;
|
|
20
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
19
21
|
class?: import("vue").ClassValue;
|
|
20
22
|
role?: string | undefined | undefined;
|
|
21
23
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -169,11 +171,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
169
171
|
ref_key?: string | undefined | undefined;
|
|
170
172
|
accesskey?: string | undefined | undefined;
|
|
171
173
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
172
|
-
contextmenu?: string | undefined | undefined;
|
|
173
174
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
174
175
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
175
176
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
176
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
177
177
|
inert?: (boolean | "true" | "false") | undefined;
|
|
178
178
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
179
179
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -215,6 +215,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
215
215
|
results?: (string | number) | undefined;
|
|
216
216
|
placeholder?: string | undefined | undefined;
|
|
217
217
|
dir?: string | undefined | undefined;
|
|
218
|
+
contextmenu?: string | undefined | undefined;
|
|
219
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
218
220
|
class?: import("vue").ClassValue;
|
|
219
221
|
role?: string | undefined | undefined;
|
|
220
222
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -368,11 +370,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
368
370
|
ref_key?: string | undefined | undefined;
|
|
369
371
|
accesskey?: string | undefined | undefined;
|
|
370
372
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
371
|
-
contextmenu?: string | undefined | undefined;
|
|
372
373
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
373
374
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
374
375
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
375
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
376
376
|
inert?: (boolean | "true" | "false") | undefined;
|
|
377
377
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
378
378
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -1,20 +1,55 @@
|
|
|
1
1
|
import { inject, onMounted, ref, watch } from "vue";
|
|
2
|
-
import {
|
|
2
|
+
import { resolvePreferences } from "../core/preferences.mjs";
|
|
3
|
+
import { readStorage, removeStorage } from "../core/storage.mjs";
|
|
3
4
|
export const STORAGE_KEY = Symbol("k-storage");
|
|
5
|
+
function isBoolean(value) {
|
|
6
|
+
return typeof value === "boolean";
|
|
7
|
+
}
|
|
8
|
+
function readLegacyBoolean(key) {
|
|
9
|
+
const stored = readStorage(key);
|
|
10
|
+
if (stored !== "true" && stored !== "false") return void 0;
|
|
11
|
+
removeStorage(key);
|
|
12
|
+
return stored === "true";
|
|
13
|
+
}
|
|
4
14
|
export function usePersistedBoolean(initial, key) {
|
|
5
15
|
const state = ref(initial);
|
|
6
16
|
if (!key) return state;
|
|
17
|
+
const preferences = resolvePreferences();
|
|
18
|
+
const name = `shell:${key}`;
|
|
7
19
|
const factory = inject(STORAGE_KEY, null);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
const cookie = factory ? factory(key) : null;
|
|
21
|
+
function writeCookie(value) {
|
|
22
|
+
if (cookie && cookie.value !== value) cookie.value = value;
|
|
23
|
+
}
|
|
24
|
+
if (cookie && isBoolean(cookie.value)) state.value = cookie.value;
|
|
25
|
+
if (!preferences.clientOnly) {
|
|
26
|
+
const stored = preferences.get(name);
|
|
27
|
+
if (isBoolean(stored)) {
|
|
28
|
+
state.value = stored;
|
|
29
|
+
writeCookie(stored);
|
|
30
|
+
}
|
|
13
31
|
}
|
|
14
32
|
onMounted(() => {
|
|
15
|
-
const stored =
|
|
16
|
-
if (stored
|
|
17
|
-
|
|
33
|
+
const stored = preferences.get(name);
|
|
34
|
+
if (isBoolean(stored)) state.value = stored;
|
|
35
|
+
else {
|
|
36
|
+
const legacy = cookie ? isBoolean(cookie.value) ? cookie.value : void 0 : readLegacyBoolean(key);
|
|
37
|
+
if (legacy !== void 0) {
|
|
38
|
+
state.value = legacy;
|
|
39
|
+
preferences.set(name, legacy);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
writeCookie(state.value);
|
|
43
|
+
watch(state, (value) => {
|
|
44
|
+
writeCookie(value);
|
|
45
|
+
if (preferences.get(name) !== value) preferences.set(name, value);
|
|
46
|
+
});
|
|
47
|
+
watch(
|
|
48
|
+
() => preferences.get(name),
|
|
49
|
+
(value) => {
|
|
50
|
+
if (isBoolean(value) && value !== state.value) state.value = value;
|
|
51
|
+
}
|
|
52
|
+
);
|
|
18
53
|
});
|
|
19
54
|
return state;
|
|
20
55
|
}
|
|
@@ -40,6 +40,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
40
40
|
results?: (string | number) | undefined;
|
|
41
41
|
placeholder?: string | undefined | undefined;
|
|
42
42
|
dir?: string | undefined | undefined;
|
|
43
|
+
contextmenu?: string | undefined | undefined;
|
|
44
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
43
45
|
class?: import("vue").ClassValue;
|
|
44
46
|
role?: string | undefined | undefined;
|
|
45
47
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -194,11 +196,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
194
196
|
ref_key?: string | undefined | undefined;
|
|
195
197
|
accesskey?: string | undefined | undefined;
|
|
196
198
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
197
|
-
contextmenu?: string | undefined | undefined;
|
|
198
199
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
199
200
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
200
201
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
201
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
202
202
|
inert?: (boolean | "true" | "false") | undefined;
|
|
203
203
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
204
204
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -253,6 +253,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
253
253
|
results?: (string | number) | undefined;
|
|
254
254
|
placeholder?: string | undefined | undefined;
|
|
255
255
|
dir?: string | undefined | undefined;
|
|
256
|
+
contextmenu?: string | undefined | undefined;
|
|
257
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
256
258
|
class?: import("vue").ClassValue;
|
|
257
259
|
role?: string | undefined | undefined;
|
|
258
260
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -407,11 +409,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
|
|
|
407
409
|
ref_key?: string | undefined | undefined;
|
|
408
410
|
accesskey?: string | undefined | undefined;
|
|
409
411
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
410
|
-
contextmenu?: string | undefined | undefined;
|
|
411
412
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
412
413
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
413
414
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
414
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
415
415
|
inert?: (boolean | "true" | "false") | undefined;
|
|
416
416
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
417
417
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -21,6 +21,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
21
21
|
results?: (string | number) | undefined;
|
|
22
22
|
placeholder?: string | undefined | undefined;
|
|
23
23
|
dir?: string | undefined | undefined;
|
|
24
|
+
contextmenu?: string | undefined | undefined;
|
|
25
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
24
26
|
class?: import("vue").ClassValue;
|
|
25
27
|
role?: string | undefined | undefined;
|
|
26
28
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -173,11 +175,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
173
175
|
ref_key?: string | undefined | undefined;
|
|
174
176
|
accesskey?: string | undefined | undefined;
|
|
175
177
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
176
|
-
contextmenu?: string | undefined | undefined;
|
|
177
178
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
178
179
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
179
180
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
180
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
181
181
|
inert?: (boolean | "true" | "false") | undefined;
|
|
182
182
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
183
183
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -233,6 +233,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
233
233
|
results?: (string | number) | undefined;
|
|
234
234
|
placeholder?: string | undefined | undefined;
|
|
235
235
|
dir?: string | undefined | undefined;
|
|
236
|
+
contextmenu?: string | undefined | undefined;
|
|
237
|
+
hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
236
238
|
class?: import("vue").ClassValue;
|
|
237
239
|
role?: string | undefined | undefined;
|
|
238
240
|
'aria-label'?: string | undefined | undefined;
|
|
@@ -385,11 +387,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
385
387
|
ref_key?: string | undefined | undefined;
|
|
386
388
|
accesskey?: string | undefined | undefined;
|
|
387
389
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
388
|
-
contextmenu?: string | undefined | undefined;
|
|
389
390
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
390
391
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
391
392
|
enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
392
|
-
hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
393
393
|
inert?: (boolean | "true" | "false") | undefined;
|
|
394
394
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
395
395
|
translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -13,6 +13,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
13
13
|
description?: string;
|
|
14
14
|
flush?: boolean;
|
|
15
15
|
dir?: string | undefined;
|
|
16
|
+
contextmenu?: string | undefined;
|
|
17
|
+
hidden?: (boolean | "true" | "false") | "" | "hidden" | "until-found" | undefined;
|
|
16
18
|
class?: import("vue").ClassValue;
|
|
17
19
|
role?: string | undefined;
|
|
18
20
|
'aria-label'?: string | undefined;
|
|
@@ -168,11 +170,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
168
170
|
ref_key?: string | undefined | undefined;
|
|
169
171
|
accesskey?: string | undefined;
|
|
170
172
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
171
|
-
contextmenu?: string | undefined;
|
|
172
173
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
173
174
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
174
175
|
enterKeyHint?: import("vue").HTMLAttributes["enterkeyhint"];
|
|
175
|
-
hidden?: (boolean | "true" | "false") | "" | "hidden" | "until-found" | undefined;
|
|
176
176
|
inert?: (boolean | "true" | "false") | undefined;
|
|
177
177
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
178
178
|
translate?: "yes" | "no" | undefined;
|
|
@@ -236,6 +236,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
236
236
|
description?: string;
|
|
237
237
|
flush?: boolean;
|
|
238
238
|
dir?: string | undefined;
|
|
239
|
+
contextmenu?: string | undefined;
|
|
240
|
+
hidden?: (boolean | "true" | "false") | "" | "hidden" | "until-found" | undefined;
|
|
239
241
|
class?: import("vue").ClassValue;
|
|
240
242
|
role?: string | undefined;
|
|
241
243
|
'aria-label'?: string | undefined;
|
|
@@ -391,11 +393,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
391
393
|
ref_key?: string | undefined | undefined;
|
|
392
394
|
accesskey?: string | undefined;
|
|
393
395
|
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
394
|
-
contextmenu?: string | undefined;
|
|
395
396
|
draggable?: (boolean | "true" | "false") | undefined;
|
|
396
397
|
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
397
398
|
enterKeyHint?: import("vue").HTMLAttributes["enterkeyhint"];
|
|
398
|
-
hidden?: (boolean | "true" | "false") | "" | "hidden" | "until-found" | undefined;
|
|
399
399
|
inert?: (boolean | "true" | "false") | undefined;
|
|
400
400
|
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
401
401
|
translate?: "yes" | "no" | undefined;
|
package/dist/locale/de.mjs
CHANGED
package/dist/locale/en.mjs
CHANGED
package/dist/locale/it.mjs
CHANGED
package/dist/locale/types.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
22
22
|
readonly placeholder?: string | undefined | undefined;
|
|
23
23
|
readonly bind?: Record<string, unknown> | undefined;
|
|
24
24
|
readonly dir?: string | undefined | undefined;
|
|
25
|
+
readonly contextmenu?: string | undefined | undefined;
|
|
26
|
+
readonly hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
25
27
|
readonly class?: import("vue").ClassValue;
|
|
26
28
|
readonly role?: string | undefined | undefined;
|
|
27
29
|
readonly 'aria-label'?: string | undefined | undefined;
|
|
@@ -180,11 +182,9 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
180
182
|
readonly ref_key?: string | undefined;
|
|
181
183
|
readonly accesskey?: string | undefined | undefined;
|
|
182
184
|
readonly contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
183
|
-
readonly contextmenu?: string | undefined | undefined;
|
|
184
185
|
readonly draggable?: (boolean | "true" | "false") | undefined;
|
|
185
186
|
readonly enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
186
187
|
readonly enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
187
|
-
readonly hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
188
188
|
readonly inert?: (boolean | "true" | "false") | undefined;
|
|
189
189
|
readonly spellcheck?: (boolean | "true" | "false") | undefined;
|
|
190
190
|
readonly translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -240,6 +240,8 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
240
240
|
readonly placeholder?: string | undefined | undefined;
|
|
241
241
|
readonly bind?: Record<string, unknown> | undefined;
|
|
242
242
|
readonly dir?: string | undefined | undefined;
|
|
243
|
+
readonly contextmenu?: string | undefined | undefined;
|
|
244
|
+
readonly hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
243
245
|
readonly class?: import("vue").ClassValue;
|
|
244
246
|
readonly role?: string | undefined | undefined;
|
|
245
247
|
readonly 'aria-label'?: string | undefined | undefined;
|
|
@@ -398,11 +400,9 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
398
400
|
readonly ref_key?: string | undefined;
|
|
399
401
|
readonly accesskey?: string | undefined | undefined;
|
|
400
402
|
readonly contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
401
|
-
readonly contextmenu?: string | undefined | undefined;
|
|
402
403
|
readonly draggable?: (boolean | "true" | "false") | undefined;
|
|
403
404
|
readonly enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
404
405
|
readonly enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
405
|
-
readonly hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
406
406
|
readonly inert?: (boolean | "true" | "false") | undefined;
|
|
407
407
|
readonly spellcheck?: (boolean | "true" | "false") | undefined;
|
|
408
408
|
readonly translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -22,6 +22,8 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
22
22
|
readonly placeholder?: string | undefined | undefined;
|
|
23
23
|
readonly bind?: Record<string, unknown> | undefined;
|
|
24
24
|
readonly dir?: string | undefined | undefined;
|
|
25
|
+
readonly contextmenu?: string | undefined | undefined;
|
|
26
|
+
readonly hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
25
27
|
readonly class?: import("vue").ClassValue;
|
|
26
28
|
readonly role?: string | undefined | undefined;
|
|
27
29
|
readonly 'aria-label'?: string | undefined | undefined;
|
|
@@ -180,11 +182,9 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
180
182
|
readonly ref_key?: string | undefined;
|
|
181
183
|
readonly accesskey?: string | undefined | undefined;
|
|
182
184
|
readonly contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
183
|
-
readonly contextmenu?: string | undefined | undefined;
|
|
184
185
|
readonly draggable?: (boolean | "true" | "false") | undefined;
|
|
185
186
|
readonly enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
186
187
|
readonly enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
187
|
-
readonly hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
188
188
|
readonly inert?: (boolean | "true" | "false") | undefined;
|
|
189
189
|
readonly spellcheck?: (boolean | "true" | "false") | undefined;
|
|
190
190
|
readonly translate?: "yes" | "no" | undefined | undefined;
|
|
@@ -240,6 +240,8 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
240
240
|
readonly placeholder?: string | undefined | undefined;
|
|
241
241
|
readonly bind?: Record<string, unknown> | undefined;
|
|
242
242
|
readonly dir?: string | undefined | undefined;
|
|
243
|
+
readonly contextmenu?: string | undefined | undefined;
|
|
244
|
+
readonly hidden?: "" | "hidden" | (boolean | "true" | "false") | "until-found" | undefined;
|
|
243
245
|
readonly class?: import("vue").ClassValue;
|
|
244
246
|
readonly role?: string | undefined | undefined;
|
|
245
247
|
readonly 'aria-label'?: string | undefined | undefined;
|
|
@@ -398,11 +400,9 @@ declare const __VLS_base: import("vue").DefineComponent<Partial<NonNullable<{
|
|
|
398
400
|
readonly ref_key?: string | undefined;
|
|
399
401
|
readonly accesskey?: string | undefined | undefined;
|
|
400
402
|
readonly contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
401
|
-
readonly contextmenu?: string | undefined | undefined;
|
|
402
403
|
readonly draggable?: (boolean | "true" | "false") | undefined;
|
|
403
404
|
readonly enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
404
405
|
readonly enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
|
|
405
|
-
readonly hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
|
|
406
406
|
readonly inert?: (boolean | "true" | "false") | undefined;
|
|
407
407
|
readonly spellcheck?: (boolean | "true" | "false") | undefined;
|
|
408
408
|
readonly translate?: "yes" | "no" | undefined | undefined;
|