94 lines
2.4 KiB
TypeScript
94 lines
2.4 KiB
TypeScript
export { };
|
|
import CookieNotice from "@ldc-web/cookie-notice";
|
|
import type VueTagsInput from "@sipec/vue3-tags-input";
|
|
import { AxiosStatic } from "axios";
|
|
import { type recaptcha } from "./modules/recaptcha";
|
|
|
|
// * Enum
|
|
interface EnumInterface {
|
|
label: string;
|
|
value: number | string;
|
|
}
|
|
|
|
// * Laravel Paginator
|
|
|
|
interface PaginatorLink {
|
|
url: null | string;
|
|
label: string;
|
|
active: boolean;
|
|
}
|
|
|
|
interface Paginator {
|
|
current_page: number;
|
|
first_page_url: string;
|
|
from: number;
|
|
last_page: number;
|
|
last_page_url: string;
|
|
links: Array<PaginatorLink>;
|
|
next_page_url: string | null;
|
|
path: string;
|
|
per_page: number;
|
|
prev_page_url: string | null;
|
|
to: number;
|
|
total: number;
|
|
}
|
|
|
|
// * Recursive List<string>
|
|
type StringList = Record<PropertyKey, string>;
|
|
interface NestedStringListInterface
|
|
extends Record<PropertyKey, NestedStringListInterface | StringList> {}
|
|
|
|
// * Recursive List<number>
|
|
type NumberList = Record<PropertyKey, number>;
|
|
interface NestedNumberListInterface
|
|
extends Record<PropertyKey, NestedNumberListInterface | NumberList> {}
|
|
|
|
// * Recursive List<Model>
|
|
type Model = Record<
|
|
string,
|
|
| string
|
|
| boolean
|
|
| number
|
|
| object
|
|
| NestedStringList
|
|
| NestedNumberList
|
|
| NestedModelInterface
|
|
| ModelListInterface
|
|
>;
|
|
interface NestedModelInterface extends Model {}
|
|
|
|
type NestedStringList = NestedStringListInterface | StringList | string;
|
|
type NestedNumberList = NestedNumberListInterface | NumberList | number;
|
|
|
|
type ModelList = Array<Model>;
|
|
interface ModelListInterface extends ModelList {}
|
|
|
|
declare global {
|
|
type CustomTag = LaravelModel & VueTagsInput.ITag;
|
|
type LaravelModel = Model;
|
|
type LaravelModelList = ModelList;
|
|
type LaravelPaginator = Paginator;
|
|
type LaravelPaginatorLink = PaginatorLink;
|
|
|
|
type Enum = EnumInterface;
|
|
|
|
interface Window {
|
|
axios: AxiosStatic;
|
|
Swal: Function;
|
|
vueDebug: boolean | undefined;
|
|
CookieNotice: typeof CookieNotice;
|
|
__CN_Recaptcha: Function;
|
|
__CN_Recaptcha_Reset: Function;
|
|
__CN_Recaptcha_Loaded: Function;
|
|
Recaptcha: recaptcha;
|
|
__SYSTEM: {
|
|
_asset: string;
|
|
_locale: string;
|
|
_routes: Record<string, string>;
|
|
_translations: {
|
|
json: NestedStringList;
|
|
php: NestedStringList;
|
|
};
|
|
};
|
|
}
|
|
}
|