Skip to content

Commit d2b2a11

Browse files
authored
feat(ui/typescript): align Quasar export type with implementation (quasarframework#8632)
Closes quasarframework#8552
1 parent 535c9dd commit d2b2a11

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

ui/build/build.types.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ function writeIndexDTS (apis) {
366366
const injectionDefs = injections[key]
367367
if (injectionDefs) {
368368
const injectionName = `${key.toUpperCase().replace('$', '')}VueGlobals`
369-
writeLine(contents, `import { ${injectionName} } from "./globals";`)
369+
writeLine(contents, `import { ${injectionName}, BaseQGlobals } from "./globals";`)
370370
writeLine(contents, `declare module "./globals" {`)
371371
writeLine(contents, `export interface ${injectionName} {`)
372372
for (const defKey in injectionDefs) {
@@ -395,7 +395,7 @@ function writeIndexDTS (apis) {
395395

396396
quasarTypeContents.forEach(line => write(contents, line))
397397

398-
writeLine(contents, `export const Quasar: PluginObject<Partial<QuasarPluginOptions>>`)
398+
writeLine(contents, `export const Quasar: PluginObject<Partial<QuasarPluginOptions>> & BaseQGlobals`)
399399
writeLine(contents, `export default Quasar`)
400400
writeLine(contents)
401401

ui/types/globals.d.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { QuasarIconSet } from "./extras/icon-set";
2-
import { HasCapacitor, HasCordova, HasElectron, HasSsr, HasBex } from './feature-flag'
2+
import {
3+
HasCapacitor,
4+
HasCordova,
5+
HasElectron,
6+
HasSsr,
7+
HasBex,
8+
} from "./feature-flag";
39
import { QuasarLanguage } from "./lang";
410

511
// We cannot reference directly Capacitor/Cordova/Electron types
@@ -20,14 +26,24 @@ export interface GlobalQuasarLanguage extends QuasarLanguage {
2026
getLocale(): string | undefined;
2127
}
2228

23-
export interface GlobalQuasarIconSet extends QuasarIconSet {
24-
set(iconSet: QuasarIconSet): void;
25-
}
29+
export interface GlobalQuasarIconSet
30+
extends QuasarIconSet,
31+
HasSsr<
32+
// QSsrContext interface depends on q/app, making it available into UI package adds complexity without any real benefit
33+
{ set(iconSet: QuasarIconSet, ssrContext: any): void },
34+
{ set(iconSet: QuasarIconSet): void }
35+
> {}
2636

2737
type GlobalQuasarIconMapFn = (
2838
iconName: string
2939
) => { icon: string } | { cls: string; content?: string } | void;
3040

41+
export interface BaseQGlobals {
42+
version: string;
43+
lang: GlobalQuasarLanguage;
44+
iconSet: GlobalQuasarIconSet;
45+
}
46+
3147
export interface QVueGlobals
3248
extends HasCapacitor<{ capacitor: any }>,
3349
HasBex<{ bex: GlobalsTypesHolder["bex"] }>,
@@ -36,8 +52,5 @@ export interface QVueGlobals
3652
HasSsr<
3753
{ iconMapFn?: GlobalQuasarIconMapFn },
3854
{ iconMapFn: GlobalQuasarIconMapFn }
39-
> {
40-
version: string;
41-
lang: GlobalQuasarLanguage;
42-
iconSet: GlobalQuasarIconSet;
43-
}
55+
>,
56+
BaseQGlobals {}

0 commit comments

Comments
 (0)