Skip to content

Commit

Permalink
feat(ui/typescript): align Quasar export type with implementation (qu…
Browse files Browse the repository at this point in the history
  • Loading branch information
IlCallo committed Mar 16, 2021
1 parent 535c9dd commit d2b2a11
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 deletions.
4 changes: 2 additions & 2 deletions ui/build/build.types.js
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ function writeIndexDTS (apis) {
const injectionDefs = injections[key]
if (injectionDefs) {
const injectionName = `${key.toUpperCase().replace('$', '')}VueGlobals`
writeLine(contents, `import { ${injectionName} } from "./globals";`)
writeLine(contents, `import { ${injectionName}, BaseQGlobals } from "./globals";`)
writeLine(contents, `declare module "./globals" {`)
writeLine(contents, `export interface ${injectionName} {`)
for (const defKey in injectionDefs) {
Expand Down Expand Up @@ -395,7 +395,7 @@ function writeIndexDTS (apis) {

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

writeLine(contents, `export const Quasar: PluginObject<Partial<QuasarPluginOptions>>`)
writeLine(contents, `export const Quasar: PluginObject<Partial<QuasarPluginOptions>> & BaseQGlobals`)
writeLine(contents, `export default Quasar`)
writeLine(contents)

Expand Down
31 changes: 22 additions & 9 deletions ui/types/globals.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import { QuasarIconSet } from "./extras/icon-set";
import { HasCapacitor, HasCordova, HasElectron, HasSsr, HasBex } from './feature-flag'
import {
HasCapacitor,
HasCordova,
HasElectron,
HasSsr,
HasBex,
} from "./feature-flag";
import { QuasarLanguage } from "./lang";

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

export interface GlobalQuasarIconSet extends QuasarIconSet {
set(iconSet: QuasarIconSet): void;
}
export interface GlobalQuasarIconSet
extends QuasarIconSet,
HasSsr<
// QSsrContext interface depends on q/app, making it available into UI package adds complexity without any real benefit
{ set(iconSet: QuasarIconSet, ssrContext: any): void },
{ set(iconSet: QuasarIconSet): void }
> {}

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

export interface BaseQGlobals {
version: string;
lang: GlobalQuasarLanguage;
iconSet: GlobalQuasarIconSet;
}

export interface QVueGlobals
extends HasCapacitor<{ capacitor: any }>,
HasBex<{ bex: GlobalsTypesHolder["bex"] }>,
Expand All @@ -36,8 +52,5 @@ export interface QVueGlobals
HasSsr<
{ iconMapFn?: GlobalQuasarIconMapFn },
{ iconMapFn: GlobalQuasarIconMapFn }
> {
version: string;
lang: GlobalQuasarLanguage;
iconSet: GlobalQuasarIconSet;
}
>,
BaseQGlobals {}

0 comments on commit d2b2a11

Please sign in to comment.