diff --git a/src/assets/reset-primevue.css b/src/assets/reset-primevue.css new file mode 100644 index 0000000..1aec4b2 --- /dev/null +++ b/src/assets/reset-primevue.css @@ -0,0 +1,6 @@ +.p-toast { + max-width: calc(100% - 50px); +} +.p-toast .p-toast-message-text { + margin-top: -0.2rem; +} diff --git a/src/components/primevue.vue b/src/components/primevue.vue index 65762e1..2c4e304 100644 --- a/src/components/primevue.vue +++ b/src/components/primevue.vue @@ -1,27 +1,27 @@ - + - - ToastService - + ToastService + DialogService diff --git a/src/utils/primevue.ts b/src/utils/primevue.ts new file mode 100644 index 0000000..5c5ecd0 --- /dev/null +++ b/src/utils/primevue.ts @@ -0,0 +1,47 @@ +/** + * 需要把 放在 App.vue 的 template 中 + */ + +// @ts-expect-error - Ignore missing types +import ToastEventBus from 'primevue/toasteventbus'; +import type { ToastServiceMethods } from 'primevue/toastservice'; + +// @ts-expect-error - Ignore missing types +import DynamicDialogEventBus from 'primevue/dynamicdialogeventbus'; +import type { DialogServiceMethods } from 'primevue/dialogservice'; + +import '../assets/reset-primevue.css'; + +// https://github.com/primefaces/primevue/blob/61929eae7526015af0362fc5889f2af7527403d1/packages/primevue/src/toastservice/ToastService.js +export const ToastService: ToastServiceMethods = { + add: (message) => { + ToastEventBus.emit('add', message); + }, + remove: (message) => { + ToastEventBus.emit('remove', message); + }, + removeGroup: (group) => { + ToastEventBus.emit('remove-group', group); + }, + removeAllGroups: () => { + ToastEventBus.emit('remove-all-groups'); + }, +}; + +// https://github.com/primefaces/primevue/blob/18367429f624285ff32d0ef775c1825a43a02fb1/packages/primevue/src/dialogservice/DialogService.js#L7 +export const DialogService: DialogServiceMethods = { + open: (content, options) => { + const instance = { + content: content && markRaw(content), + options: options || {}, + data: options && options.data, + close: (params: unknown) => { + DynamicDialogEventBus.emit('close', { instance, params }); + }, + }; + + DynamicDialogEventBus.emit('open', { instance }); + + return instance; + }, +};