mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-06 00:18:51 +08:00
153 lines
3.9 KiB
TypeScript
153 lines
3.9 KiB
TypeScript
import type {
|
||
ComponentRenderProxy,
|
||
VNode,
|
||
ComponentPublicInstance,
|
||
FunctionalComponent,
|
||
PropType as VuePropType
|
||
} from "vue";
|
||
import type { ECharts } from "echarts";
|
||
import { type ResponsiveStorage } from "./index";
|
||
import type { TableColumns } from "@pureadmin/table";
|
||
|
||
// GlobalComponents for Volar
|
||
declare module "vue" {
|
||
export interface GlobalComponents {
|
||
IconifyIconOffline: typeof import("../src/components/ReIcon")["IconifyIconOffline"];
|
||
IconifyIconOnline: typeof import("../src/components/ReIcon")["IconifyIconOnline"];
|
||
FontIcon: typeof import("../src/components/ReIcon")["FontIcon"];
|
||
Auth: typeof import("../src/components/ReAuth")["Auth"];
|
||
}
|
||
}
|
||
|
||
declare global {
|
||
const __APP_INFO__: {
|
||
pkg: {
|
||
name: string;
|
||
version: string;
|
||
dependencies: Recordable<string>;
|
||
devDependencies: Recordable<string>;
|
||
};
|
||
lastBuildTime: string;
|
||
};
|
||
interface Window {
|
||
// Global vue app instance
|
||
__APP__: App<Element>;
|
||
webkitCancelAnimationFrame: (handle: number) => void;
|
||
mozCancelAnimationFrame: (handle: number) => void;
|
||
oCancelAnimationFrame: (handle: number) => void;
|
||
msCancelAnimationFrame: (handle: number) => void;
|
||
webkitRequestAnimationFrame: (callback: FrameRequestCallback) => number;
|
||
mozRequestAnimationFrame: (callback: FrameRequestCallback) => number;
|
||
oRequestAnimationFrame: (callback: FrameRequestCallback) => number;
|
||
msRequestAnimationFrame: (callback: FrameRequestCallback) => number;
|
||
}
|
||
|
||
// vue
|
||
type PropType<T> = VuePropType<T>;
|
||
|
||
type Writable<T> = {
|
||
-readonly [P in keyof T]: T[P];
|
||
};
|
||
|
||
type Nullable<T> = T | null;
|
||
type NonNullable<T> = T extends null | undefined ? never : T;
|
||
type Recordable<T = any> = Record<string, T>;
|
||
type ReadonlyRecordable<T = any> = {
|
||
readonly [key: string]: T;
|
||
};
|
||
type Indexable<T = any> = {
|
||
[key: string]: T;
|
||
};
|
||
type DeepPartial<T> = {
|
||
[P in keyof T]?: DeepPartial<T[P]>;
|
||
};
|
||
type TimeoutHandle = ReturnType<typeof setTimeout>;
|
||
type IntervalHandle = ReturnType<typeof setInterval>;
|
||
|
||
interface ChangeEvent extends Event {
|
||
target: HTMLInputElement;
|
||
}
|
||
|
||
interface WheelEvent {
|
||
path?: EventTarget[];
|
||
}
|
||
interface ImportMetaEnv extends ViteEnv {
|
||
__: unknown;
|
||
}
|
||
|
||
type ViteCompression =
|
||
| "none"
|
||
| "gzip"
|
||
| "brotli"
|
||
| "both"
|
||
| "gzip-clear"
|
||
| "brotli-clear"
|
||
| "both-clear";
|
||
|
||
declare interface ViteEnv {
|
||
VITE_PORT: number;
|
||
VITE_PUBLIC_PATH: string;
|
||
VITE_ROUTER_HISTORY: string;
|
||
VITE_CDN: boolean;
|
||
VITE_COMPRESSION: ViteCompression;
|
||
}
|
||
|
||
declare interface ServerConfigs {
|
||
Version?: string;
|
||
Title?: string;
|
||
FixedHeader?: boolean;
|
||
HiddenSideBar?: boolean;
|
||
MultiTagsCache?: boolean;
|
||
KeepAlive?: boolean;
|
||
Locale?: string;
|
||
Layout?: string;
|
||
Theme?: string;
|
||
DarkMode?: boolean;
|
||
Grey?: boolean;
|
||
Weak?: boolean;
|
||
HideTabs?: boolean;
|
||
SidebarStatus?: boolean;
|
||
EpThemeColor?: string;
|
||
ShowLogo?: boolean;
|
||
ShowModel?: string;
|
||
MenuArrowIconNoTransition?: boolean;
|
||
MapConfigure?: {
|
||
amapKey?: string;
|
||
options: {
|
||
resizeEnable?: boolean;
|
||
center?: number[];
|
||
zoom?: number;
|
||
};
|
||
};
|
||
}
|
||
|
||
declare interface GlobalPropertiesApi {
|
||
$echarts: ECharts;
|
||
$storage: ResponsiveStorage;
|
||
$config: ServerConfigs;
|
||
}
|
||
|
||
// 继承 @pureadmin/table 的 TableColumns,方便全局直接调用
|
||
declare interface TableColumnList extends Array<TableColumns> {}
|
||
|
||
function parseInt(s: string | number, radix?: number): number;
|
||
|
||
function parseFloat(string: string | number): number;
|
||
|
||
namespace JSX {
|
||
// tslint:disable no-empty-interface
|
||
type Element = VNode;
|
||
// tslint:disable no-empty-interface
|
||
type ElementClass = ComponentRenderProxy;
|
||
interface ElementAttributesProperty {
|
||
$props: any;
|
||
}
|
||
interface IntrinsicElements {
|
||
[elem: string]: any;
|
||
}
|
||
interface IntrinsicAttributes {
|
||
[elem: string]: any;
|
||
}
|
||
}
|
||
}
|