import { App } from 'vue'; import { setConfig } from './config'; import { PluginOptions, TMagicMessage, TMagicMessageBox } from './types'; export * from './types'; export * from './config'; /* eslint-disable @typescript-eslint/no-unused-vars */ export { default as TMagicAutocomplete } from './Autocomplete.vue'; export { default as TMagicBadge } from './Badge.vue'; export { default as TMagicButton } from './Button.vue'; export { default as TMagicCard } from './Card.vue'; export { default as TMagicCascader } from './Cascader.vue'; export { default as TMagicCheckbox } from './Checkbox.vue'; export { default as TMagicCheckboxGroup } from './CheckboxGroup.vue'; export { default as TMagicCol } from './Col.vue'; export { default as TMagicCollapse } from './Collapse.vue'; export { default as TMagicCollapseItem } from './CollapseItem.vue'; export { default as TMagicColorPicker } from './ColorPicker.vue'; export { default as TMagicDatePicker } from './DatePicker.vue'; export { default as TMagicDialog } from './Dialog.vue'; export { default as TMagicDivider } from './Divider.vue'; export { default as TMagicDrawer } from './Drawer.vue'; export { default as TMagicDropdown } from './Dropdown.vue'; export { default as TMagicDropdownItem } from './DropdownItem.vue'; export { default as TMagicDropdownMenu } from './DropdownMenu.vue'; export { default as TMagicForm } from './Form.vue'; export { default as TMagicFormItem } from './FormItem.vue'; export { default as TMagicIcon } from './Icon.vue'; export { default as TMagicInput } from './Input.vue'; export { default as TMagicInputNumber } from './InputNumber.vue'; export { default as TMagicOption } from './Option.vue'; export { default as TMagicOptionGroup } from './OptionGroup.vue'; export { default as TMagicPagination } from './Pagination.vue'; export { default as TMagicPopover } from './Popover.vue'; export { default as TMagicRadio } from './Radio.vue'; export { default as TMagicRadioButton } from './RadioButton.vue'; export { default as TMagicRadioGroup } from './RadioGroup.vue'; export { default as TMagicRow } from './Row.vue'; export { default as TMagicScrollbar } from './Scrollbar.vue'; export { default as TMagicSelect } from './Select.vue'; export { default as TMagicStep } from './Step.vue'; export { default as TMagicSteps } from './Steps.vue'; export { default as TMagicSwitch } from './Switch.vue'; export { default as TMagicTable } from './Table.vue'; export { default as TMagicTableColumn } from './TableColumn.vue'; export { default as TMagicTabPane } from './TabPane.vue'; export { default as TMagicTabs } from './Tabs.vue'; export { default as TMagicTag } from './Tag.vue'; export { default as TMagicTimePicker } from './TimePicker.vue'; export { default as TMagicTooltip } from './Tooltip.vue'; export { default as TMagicTree } from './Tree.vue'; export { default as TMagicUpload } from './Upload.vue'; export const tMagicMessage = { error: (msg: string) => { console.error(msg); }, success: (msg: string) => { console.log(msg); }, warning: (msg: string) => { console.warn(msg); }, info: (msg: string) => { console.info(msg); }, closeAll: (msg: string) => {}, } as unknown as TMagicMessage; export const tMagicMessageBox = { alert: (msg: string) => { console.log(msg); }, confirm: (msg: string) => { console.log(msg); }, close: (msg: string) => { console.log(msg); }, } as unknown as TMagicMessageBox; export default { install(app: App, options: PluginOptions) { if (options.message) { tMagicMessage.error = options.message?.error; tMagicMessage.success = options.message?.success; tMagicMessage.warning = options.message?.warning; tMagicMessage.info = options.message?.info; tMagicMessage.closeAll = options.message?.closeAll; } if (options.messageBox) { tMagicMessageBox.alert = options.messageBox?.alert; tMagicMessageBox.confirm = options.messageBox?.confirm; tMagicMessageBox.prompt = options.messageBox?.prompt; tMagicMessageBox.close = options.messageBox?.close; } if (options.loading) { app.directive('loading', options.loading); } app.config.globalProperties.$MAGIC_DESIGN = options; setConfig(options); }, };