From d6b5e15d2860477140e704d123926d58c21e6ffe Mon Sep 17 00:00:00 2001 From: Sagi Date: Mon, 7 Nov 2022 14:15:34 +0800 Subject: [PATCH] feature(message-box): support prompt dialog --- .../message-box/src/message-box.component.tsx | 65 +++++++------------ .../message-box/src/message-box.service.tsx | 15 ++++- packages/ui-vue/demos/message-box/prompt.vue | 11 ++++ packages/ui-vue/src/app.vue | 2 + 4 files changed, 51 insertions(+), 42 deletions(-) create mode 100644 packages/ui-vue/demos/message-box/prompt.vue 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 3d5542b2a0c..a77adc1dd4b 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 @@ -15,7 +15,6 @@ export default defineComponent({ emits: ['close'], setup(props: MessageBoxProps, context: SetupContext) { 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); @@ -27,7 +26,7 @@ export default defineComponent({ const messageText = ref(''); const enableWordCount = ref(false); const wordsTotalTips = ref(''); - const wordsTotal = ref(0); + const wordsTotal = ref(messageDetail.value.length); const buttons = ref([]); const okButtonText = ref(props.okButtonText); const cancelButtonText = ref(props.cancelButtonText); @@ -49,6 +48,14 @@ export default defineComponent({ return classObject; }); + const messageBoxContainerStyle = computed(() => { + const styleObject = {} as Record; + if (messageType.value === 'prompt') { + styleObject.padding = '0.5rem 0.5rem 1rem 1.5rem'; + } + return styleObject; + }); + const messageBoxIconClass = computed(() => { const classObject = { 'f-icon': true } as Record; const iconClass = `f-icon-${messageType.value}`; @@ -145,8 +152,11 @@ export default defineComponent({ return styleObject; }); - function onTextChange($event: Event) { - + function onTextChange($event: InputEvent) { + if ($event.currentTarget) { + const textVaue = (($event.currentTarget as any).value || '') as string; + wordsTotal.value = textVaue.length; + } } const shouldShowWordCount = computed(() => { @@ -386,7 +396,7 @@ export default defineComponent({
{ messageType.value !== 'prompt' && -
+
@@ -425,51 +435,26 @@ export default defineComponent({ } { messageType.value === 'prompt' && -
- { - promptInputType.value === 'textarea' && + <> +
-
- } - { - promptInputType.value !== 'textarea' && -
- + onInput={onTextChange}>{safeMessageDetail.value}
- } -
- } - { - shouldShowWordCount.value && - - {wordsTotal.value + ' / ' + promptMaxLength.value} - +
+ + {wordsTotal.value + ' / ' + promptMaxLength.value} + + } { shouldShowOkCancelButtons.value &&