diff --git a/packages/ui-vue/components/message-box/index.ts b/packages/ui-vue/components/message-box/index.ts index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..96558eda6e17f8b6c1312c36d7c146b1ad37f35b 100644 --- a/packages/ui-vue/components/message-box/index.ts +++ b/packages/ui-vue/components/message-box/index.ts @@ -0,0 +1,12 @@ +import type { App } from 'vue'; +import FMessageBox from './src/message-box.component'; + +export * from './src/message-box.props'; + +export { FMessageBox }; + +export default { + install(app: App): void { + app.component(FMessageBox.name, FMessageBox); + } +}; diff --git a/packages/ui-vue/components/message-box/src/message-box.component.tsx b/packages/ui-vue/components/message-box/src/message-box.component.tsx index 3ab0fe7a6548dd4d47599716bce7e2d0a81b9a1e..c8676f4cd30e0d6aadcf9c2f6dce809d7b671f62 100644 --- a/packages/ui-vue/components/message-box/src/message-box.component.tsx +++ b/packages/ui-vue/components/message-box/src/message-box.component.tsx @@ -14,10 +14,10 @@ export default defineComponent({ props: messageBoxProps, emits: [], setup(props: MessageBoxProps, context: SetupContext) { - const messageType = ref(''); - const messageIcon = ref(''); - const messageTitle = ref(''); - const messageDetail = ref(''); + const messageType = ref(props.type); + const messageIcon = ref('f-icon-info'); + const messageTitle = ref(props.title); + const messageDetail = ref(props.detail); const exception = ref({} as ExceptionInfo); const happend = ref(''); const promptInputType = ref(''); @@ -25,12 +25,12 @@ export default defineComponent({ const promptMaxLength = ref(140); const promptInputPlaceholder = ref(''); const messageText = ref(''); - const enableWordCount = ref(true); + const enableWordCount = ref(false); const wordsTotalTips = ref(''); const wordsTotal = ref(0); const buttons = ref([]); - const okButtonText = ref(''); - const cancelButtonText = ref(''); + const okButtonText = ref(props.okButtonText); + const cancelButtonText = ref(props.cancelButtonText); const showFontSize = ref(true); const showCancelButton = ref(true); const showOkButton = ref(true); @@ -51,7 +51,7 @@ export default defineComponent({ const messageBoxIconClass = computed(() => { const classObject = { 'f-icon': true } as Record; - const iconClass = messageIcon.value; + const iconClass = `f-icon-${messageType.value}`; classObject[iconClass] = true; return classObject; }); @@ -65,7 +65,7 @@ export default defineComponent({ }); const shouldShowMessageDetail = computed(() => { - return messageDetail.value && !exception.value; + return messageDetail.value && !exception.value.message; }); const isExceptionMessage = computed(() => { @@ -187,7 +187,7 @@ export default defineComponent({ const fontHuge = ''; const shouldShowButtons = computed(() => { - return buttons.value && buttons.value.length; + return !!(buttons.value && buttons.value.length); }); const shouldShowCopyButton = computed(() => { @@ -198,14 +198,197 @@ export default defineComponent({ } - return () => { + function renderPropmt() { + return ( + <> + { + promptInputType.value === 'textarea' && +
+ +
+ } + { + promptInputType.value !== 'textarea' && +
+ +
+ } + + ); + } + + function renderCommonMessageDetail() { + return (

); + } + + function renderErrorMessageDetail() { + return ( +
+ {shouldShowExceptionDate.value &&
{exceptionDateMessage.value}
} + {shouldShowExceptionMessage.value && +
+ {exceptionMessageDetail.value}: +
+ } + { + shouldShowExpandHandle.value && + + { + expandExceptionMessage.value && + + {expandText.value} + + } + { + !expandExceptionMessage.value && + + {collapseText.value} + + } + + } +
+ ); + } + + function getMessageDetailRender(messageType: string) { + if (messageType === 'exception') { + return renderErrorMessageDetail; + } + return renderCommonMessageDetail; + } + + const renderMessageDetail = getMessageDetailRender(messageType.value); + + function renderContent() { + return ( + <> + + + + ); + } + + function renderDefaultButtons() { return ( <> + { + shouldShowCancelButton.value && + + } + { + shouldShowOkButton.value && + + } + + ); + } + + function renderCustomButtons() { + return ( + <> + { + buttons.value.map((button) => { + return ( + + ); + }) + } + + ); + } + + function getButtonRender() { + if (shouldShowButtons.value) { + return renderCustomButtons; + } + return renderDefaultButtons; + } + + const renderButtons = getButtonRender(); + + function renderFooter() { + return ( + <> + + + ); + } + + function render() { + return ( + <> +
+ { + messageType.value === 'prompt' ? renderPropmt() : renderContent() + } +
+ { + shouldShowWordCount.value && + + {wordsTotal.value + ' / ' + promptMaxLength.value} + + } + {renderFooter()} + { + exception.value && +
+ {messageDetail.value}: {exception.value?.message} +
+ } +
+
+ + ); + }; + + return () => { + return ( +
{ messageType.value !== 'prompt' &&