import { Plugin } from 'vue'; import { PrimeVueLocaleOptions } from 'primevue/config'; import { FieldWrapperLocaleConfig, FieldWrapperProps } from '../components/fieldwrapper/FieldWrapper.vue.d'; import { InputTextLocaleConfig, InputTextProps } from '../components/inputtext/InputText.vue.d'; import { TreeProps } from '../components/tree/Tree.vue.d'; import { DialogConfirmLocaleConfig } from '../components/dialogconfirm/DialogConfirm.vue.d'; import { CustomColumnLocaleConfig } from '../components/customcolumn/CustomColumn.vue.d'; import { ButtonSearchLocaleConfig } from '../components/buttonsearch/ButtonSearch.vue.d'; import { FilterContainerLocaleConfig } from '../components/filtercontainer/FilterContainer.vue.d'; import { MultiSelectLocaleConfig } from '../components/multiselect/MultiSelect.vue.d'; import { DropdownLocaleConfig, DropdownProps } from '../components/dropdown/Dropdown.vue.d'; import { InputCurrencyLocaleConfig } from '../components/inputcurrency/InputCurrency.vue.d'; import { TextareaLocaleConfig } from '../components/textarea/Textarea.vue.d'; import { InputrangeNumberLocaleConfig } from '../components/inputrangenumber/InputRangeNumber.vue.d'; import { DialogFormLocaleConfig } from '../components/dialogform/DialogForm.vue.d'; import { InputPhoneNumberLocaleConfig } from '../components/inputphonenumber/InputPhoneNumber.vue.d'; import { InputNumberLocaleConfig } from '../components/inputnumber/InputNumber.vue.d'; import { CalendarLocaleConfig, CalendarPresetOptions } from '../components/calendar/Calendar.vue.d'; import { OverlayPanelPassThroughOptions } from '../components/overlaypanel/OverlayPanel.vue.d'; import { InputURLProps } from '../components/inputurl/InputURL.vue.d'; import { InputEmailProps } from '../components/inputemail/InputEmail.vue.d'; import { ImageProps } from '../components/image/Image.vue.d'; import { MenuLocaleConfig } from '../components/menu/Menu.vue.d'; import { ButtonBulkActionLocaleConfig, ButtonBulkActionProps } from '../components/buttonbulkaction/ButtonBulkAction.vue.d'; import { AnimationDefaultConfig } from '../components/animation/Animation.vue.d'; import { LoadingPresetOptions } from '../components/loading/Loading.vue.d'; import { DataTableLocaleConfig, DataTableProps } from '../components/datatable/DataTable.vue.d'; import { BadgeComponentConfigs } from '../components/badge/Badge.vue.d'; import { UserNameComponentConfigs, UserNameLocaleConfig, UserNamePresetOptions } from '../components/username/UserName.vue.d'; import { ImageCompressorLocaleConfig } from '../components/imagecompressor/ImageCompressor.vue.d'; /** * A Record of component names with theirs props interface */ export interface ComponentDefaultPropsConfig { FieldWrapper?: FieldWrapperProps; InputText?: InputTextProps; InputURL?: InputURLProps; InputEmail?: InputEmailProps; Tree?: TreeProps; Image?: ImageProps; ButtonBulkAction?: Omit; Animation?: AnimationDefaultConfig; DataTable?: Partial; Badge?: Partial; UserName?: UserNameComponentConfigs; Dropdown?: DropdownProps; } interface ComponentLocaleConfig { FieldWrapper?: FieldWrapperLocaleConfig; InputText?: InputTextLocaleConfig; DialogConfirm?: DialogConfirmLocaleConfig; CustomColumn?: CustomColumnLocaleConfig; ButtonSearch?: ButtonSearchLocaleConfig; FilterContainer?: FilterContainerLocaleConfig; MultiSelect?: MultiSelectLocaleConfig; Dropdown?: DropdownLocaleConfig; InputCurrency?: InputCurrencyLocaleConfig; TextArea?: TextareaLocaleConfig; InputRangeNumber?: InputrangeNumberLocaleConfig; DialogForm?: DialogFormLocaleConfig; InputPhoneNumber?: InputPhoneNumberLocaleConfig; InputNumber?: InputNumberLocaleConfig; Calendar?: CalendarLocaleConfig; Menu?: MenuLocaleConfig; ButtonBulkAction?: ButtonBulkActionLocaleConfig; UserName?: UserNameLocaleConfig; DataTable?: DataTableLocaleConfig; ImageCompressor?: ImageCompressorLocaleConfig; } export interface LocaleConfig { global: Partial; components: ComponentLocaleConfig; } export interface ComponentPresetOptions { calendar: CalendarPresetOptions; overlaypanel: OverlayPanelPassThroughOptions; loading: LoadingPresetOptions; username: UserNamePresetOptions; [key: string]: any; } export type WangsVueComponentConfig = { defaultProps: ComponentName extends keyof ComponentDefaultPropsConfig ? ComponentDefaultPropsConfig[ComponentName] : undefined; locale: (ComponentName extends keyof ComponentLocaleConfig ? ComponentLocaleConfig[ComponentName] : undefined) & { global: LocaleConfig['global']; }; }; export interface WangsVueOptions { defaultProps: ComponentDefaultPropsConfig; locale: LocaleConfig; zIndex?: Record; filterMatchModeOptions?: Record; /** * @deprecated - partially replaced with {@link preset} */ pt?: ComponentPresetOptions; preset?: ComponentPresetOptions; ptOptions?: { mergeSections: boolean; mergeProps: boolean; }; /** * @deprecated - Will always be unstyled */ unstyled?: boolean; csp?: { nonce?: string; }; } export interface WangsVueInstance { config: WangsVueOptions; getComponentConfig(componentName: ComponentName): WangsVueComponentConfig; } export declare const defaultOptions: WangsVueOptions; export declare const useWangsVueConfig: (componentName?: T) => T extends keyof ComponentDefaultPropsConfig | keyof ComponentLocaleConfig ? WangsVueComponentConfig : WangsVueOptions; export declare const mergeWangsVueConfig: (baseConfig: WangsVueOptions, overrideConfig: Partial) => WangsVueOptions; /** * * @param predefinedOptions * @param mergeConfig Wether merge predefined config with defualt config @default true * @returns */ declare const createWangsVuePlugin: (predefinedOptions?: Partial, mergeConfig?: boolean) => Plugin>; export default createWangsVuePlugin; declare module 'vue' { interface ComponentCustomProperties { $wangsvue: WangsVueInstance; $preset: ComponentPresetOptions; } }