an-quasar-utils
Version:
`npm i an-quasar-utils` or `yarn add an-quasar-utils`
541 lines (540 loc) • 18.6 kB
TypeScript
import { QTableColumn, QTableSlots } from 'quasar';
import AnModalForm from './AnModalForm.vue';
import { AxiosInstance } from 'axios';
type Paginated<T = any> = {
count: number;
lastPage: number;
next: string | null;
previous: string | null;
results: T[];
};
type Filter = {
[key: string]: any;
};
type FilterModalSlots = InstanceType<typeof AnModalForm>['$slots'];
export type AnServerDataTableSlots = Omit<QTableSlots, 'pagination'> & {
[K in keyof FilterModalSlots as K extends "content" ? string : `filter-modal-${K}`]: FilterModalSlots[K];
} & {
"title"?(_: {}): any;
"search-input"?(_: {
loading: boolean;
value: string;
search: (val: string) => void;
}): any;
"filter-btn"?(_: {
label: string;
color: string;
click: () => void;
}): any;
"pagination"?(_: {
value: number;
change: (val: number) => void;
}): any;
"page-size"?(_: {
value: number;
change: (val: number) => void;
}): any;
};
export type FilterModalData = {
fields: {
type: 'boolean-checkbox' | 'checkboxs' | 'radios' | 'text' | 'select' | 'select-multiple' | 'number' | 'date' | 'time' | 'date-time';
label: string;
urlParam: string;
defaultValue?: any;
choices?: {
label: string;
value: string | number | any;
}[];
}[];
props?: InstanceType<typeof AnModalForm>['$props'];
};
declare function __VLS_template(): {
slots: Readonly<Omit<QTableSlots, "pagination"> & {
readonly [x: string]: ((_: {}) => any) | undefined;
readonly [x: `filter-modal-${string}`]: import("vue").Slot<any> | undefined;
"filter-modal-close-icon-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
}) => any) | undefined;
"filter-modal-cancel-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
label: string;
}) => any) | undefined;
"filter-modal-ok-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
label: string;
disable: boolean;
loading: boolean;
}) => any) | undefined;
} & {
title?(_: {}): any;
"search-input"?(_: {
loading: boolean;
value: string;
search: (val: string) => void;
}): any;
"filter-btn"?(_: {
label: string;
color: string;
click: () => void;
}): any;
pagination?(_: {
value: number;
change: (val: number) => void;
}): any;
"page-size"?(_: {
value: number;
change: (val: number) => void;
}): any;
}> & Omit<QTableSlots, "pagination"> & {
readonly [x: string]: ((_: {}) => any) | undefined;
readonly [x: `filter-modal-${string}`]: import("vue").Slot<any> | undefined;
"filter-modal-close-icon-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
}) => any) | undefined;
"filter-modal-cancel-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
label: string;
}) => any) | undefined;
"filter-modal-ok-btn"?: ((_: {
color: import("quasar").NamedColor | undefined;
label: string;
disable: boolean;
loading: boolean;
}) => any) | undefined;
} & {
title?(_: {}): any;
"search-input"?(_: {
loading: boolean;
value: string;
search: (val: string) => void;
}): any;
"filter-btn"?(_: {
label: string;
color: string;
click: () => void;
}): any;
pagination?(_: {
value: number;
change: (val: number) => void;
}): any;
"page-size"?(_: {
value: number;
change: (val: number) => void;
}): any;
};
refs: {
filterModal: ({
$: import("vue").ComponentInternalInstance;
$data: {};
$props: Partial<{
okLabel: string;
cancelLabel: string;
title: string;
btnsColor: import("quasar").NamedColor | undefined;
isLoading: boolean;
formIsLoading: boolean;
}> & Omit<{
readonly okLabel: string;
readonly cancelLabel: string;
readonly title: string;
readonly btnsColor: import("quasar").NamedColor | undefined;
readonly isLoading: boolean;
readonly formIsLoading: boolean;
readonly modalCardProps?: ({
class?: string;
style?: string;
} & {
dark?: boolean | null | undefined;
square?: boolean | undefined;
flat?: boolean | undefined;
bordered?: boolean | undefined;
tag?: string | undefined;
}) | undefined;
readonly onHide?: (() => any) | undefined;
readonly onSubmit?: ((evt: Event | SubmitEvent) => any) | undefined;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly<import("vue").ExtractPropTypes<{
isLoading: {
type: BooleanConstructor;
default: boolean;
};
formIsLoading: {
type: BooleanConstructor;
default: boolean;
};
okLabel: {
type: StringConstructor;
default: string;
};
cancelLabel: {
type: StringConstructor;
default: string;
};
title: {
type: StringConstructor;
default: string;
};
btnsColor: {
type: () => import("quasar").QBtnProps["color"];
default: import("quasar").QBtnProps["color"];
};
modalCardProps: {
type: () => ({
class?: string;
style?: string;
} & InstanceType<typeof import("quasar").QCard>["$props"]);
required: false;
};
}>> & Readonly<{
onHide?: (() => any) | undefined;
onSubmit?: ((evt: Event | SubmitEvent) => any) | undefined;
}>, "okLabel" | "cancelLabel" | "title" | "btnsColor" | "isLoading" | "formIsLoading">;
$attrs: {
[x: string]: unknown;
};
$refs: {
[x: string]: unknown;
};
$slots: Readonly<{
[name: string]: import("vue").Slot<any> | undefined;
}>;
$root: import("vue").ComponentPublicInstance | null;
$parent: import("vue").ComponentPublicInstance | null;
$host: Element | null;
$emit: ((event: "hide") => void) & ((event: "submit", evt: Event | SubmitEvent) => void);
$el: any;
$options: import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
isLoading: {
type: BooleanConstructor;
default: boolean;
};
formIsLoading: {
type: BooleanConstructor;
default: boolean;
};
okLabel: {
type: StringConstructor;
default: string;
};
cancelLabel: {
type: StringConstructor;
default: string;
};
title: {
type: StringConstructor;
default: string;
};
btnsColor: {
type: () => import("quasar").QBtnProps["color"];
default: import("quasar").QBtnProps["color"];
};
modalCardProps: {
type: () => ({
class?: string;
style?: string;
} & InstanceType<typeof import("quasar").QCard>["$props"]);
required: false;
};
}>> & Readonly<{
onHide?: (() => any) | undefined;
onSubmit?: ((evt: Event | SubmitEvent) => any) | undefined;
}>, {
show: () => void;
hide: () => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
hide: () => any;
submit: (evt: Event | SubmitEvent) => any;
}, string, {
okLabel: string;
cancelLabel: string;
title: string;
btnsColor: import("quasar").NamedColor | undefined;
isLoading: boolean;
formIsLoading: boolean;
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
beforeCreate?: (() => void) | (() => void)[];
created?: (() => void) | (() => void)[];
beforeMount?: (() => void) | (() => void)[];
mounted?: (() => void) | (() => void)[];
beforeUpdate?: (() => void) | (() => void)[];
updated?: (() => void) | (() => void)[];
activated?: (() => void) | (() => void)[];
deactivated?: (() => void) | (() => void)[];
beforeDestroy?: (() => void) | (() => void)[];
beforeUnmount?: (() => void) | (() => void)[];
destroyed?: (() => void) | (() => void)[];
unmounted?: (() => void) | (() => void)[];
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
};
$forceUpdate: () => void;
$nextTick: typeof import("vue").nextTick;
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
} & Readonly<{
okLabel: string;
cancelLabel: string;
title: string;
btnsColor: import("quasar").NamedColor | undefined;
isLoading: boolean;
formIsLoading: boolean;
}> & Omit<Readonly<import("vue").ExtractPropTypes<{
isLoading: {
type: BooleanConstructor;
default: boolean;
};
formIsLoading: {
type: BooleanConstructor;
default: boolean;
};
okLabel: {
type: StringConstructor;
default: string;
};
cancelLabel: {
type: StringConstructor;
default: string;
};
title: {
type: StringConstructor;
default: string;
};
btnsColor: {
type: () => import("quasar").QBtnProps["color"];
default: import("quasar").QBtnProps["color"];
};
modalCardProps: {
type: () => ({
class?: string;
style?: string;
} & InstanceType<typeof import("quasar").QCard>["$props"]);
required: false;
};
}>> & Readonly<{
onHide?: (() => any) | undefined;
onSubmit?: ((evt: Event | SubmitEvent) => any) | undefined;
}>, "hide" | "show" | ("okLabel" | "cancelLabel" | "title" | "btnsColor" | "isLoading" | "formIsLoading")> & import("vue").ShallowUnwrapRef<{
show: () => void;
hide: () => void;
}> & {} & import("vue").ComponentCustomProperties & {} & {
$slots: {
"close-icon-btn"?(_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
}): any;
content?(_: {}): any;
"cancel-btn"?(_: {
color: import("quasar").NamedColor | undefined;
disable: boolean;
label: string;
}): any;
"ok-btn"?(_: {
color: import("quasar").NamedColor | undefined;
label: string;
disable: boolean;
loading: boolean;
}): any;
};
}) | null;
};
attrs: Partial<{}>;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
columns: {
type: () => QTableColumn[];
required: true;
};
link: {
type: StringConstructor;
required: true;
};
linkParams: {
type: () => {
[key: string]: string | number;
};
default: {};
};
title: {
type: StringConstructor;
default: string;
};
loading: {
type: BooleanConstructor;
default: boolean;
};
hidePagination: {
type: BooleanConstructor;
default: boolean;
};
flat: {
type: BooleanConstructor;
default: boolean;
};
square: {
type: BooleanConstructor;
default: boolean;
};
hasSearch: {
type: BooleanConstructor;
default: boolean;
};
hasFilter: {
type: BooleanConstructor;
default: boolean;
};
showPageSizeSelect: {
type: BooleanConstructor;
default: boolean;
};
enableRowClick: {
type: BooleanConstructor;
default: boolean;
};
filterModalData: {
type: () => FilterModalData;
default: FilterModalData;
};
axiosInterceptor: {
type: () => AxiosInstance;
required: false;
};
paginationResponseKeys: {
type: () => { [K in keyof Paginated]: string; };
default: { [K in keyof Paginated]: string; };
};
orderingKey: {
type: StringConstructor;
default: string;
};
pageSizes: {
type: () => number[];
default: number[];
};
searchUrlParam: {
type: StringConstructor;
default: string;
};
}>, {
filter: (dataFilter: Filter) => Promise<void>;
fetchData: () => Promise<void>;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
openFilter: () => any;
rowClick: (row: any, index: number) => any;
getDataSuccessfuly: (data: any) => any;
getDataError: (error: any) => any;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
columns: {
type: () => QTableColumn[];
required: true;
};
link: {
type: StringConstructor;
required: true;
};
linkParams: {
type: () => {
[key: string]: string | number;
};
default: {};
};
title: {
type: StringConstructor;
default: string;
};
loading: {
type: BooleanConstructor;
default: boolean;
};
hidePagination: {
type: BooleanConstructor;
default: boolean;
};
flat: {
type: BooleanConstructor;
default: boolean;
};
square: {
type: BooleanConstructor;
default: boolean;
};
hasSearch: {
type: BooleanConstructor;
default: boolean;
};
hasFilter: {
type: BooleanConstructor;
default: boolean;
};
showPageSizeSelect: {
type: BooleanConstructor;
default: boolean;
};
enableRowClick: {
type: BooleanConstructor;
default: boolean;
};
filterModalData: {
type: () => FilterModalData;
default: FilterModalData;
};
axiosInterceptor: {
type: () => AxiosInstance;
required: false;
};
paginationResponseKeys: {
type: () => { [K in keyof Paginated]: string; };
default: { [K in keyof Paginated]: string; };
};
orderingKey: {
type: StringConstructor;
default: string;
};
pageSizes: {
type: () => number[];
default: number[];
};
searchUrlParam: {
type: StringConstructor;
default: string;
};
}>> & Readonly<{
onOpenFilter?: (() => any) | undefined;
onRowClick?: ((row: any, index: number) => any) | undefined;
onGetDataSuccessfuly?: ((data: any) => any) | undefined;
onGetDataError?: ((error: any) => any) | undefined;
}>, {
title: string;
square: boolean;
flat: boolean;
loading: boolean;
linkParams: {
[key: string]: string | number;
};
hidePagination: boolean;
hasSearch: boolean;
hasFilter: boolean;
showPageSizeSelect: boolean;
enableRowClick: boolean;
filterModalData: FilterModalData;
paginationResponseKeys: {
count: string;
lastPage: string;
next: string;
previous: string;
results: string;
};
orderingKey: string;
pageSizes: number[];
searchUrlParam: string;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
new (): {
$slots: S;
};
};