PluginProbe
The Innovative Form Builder – IvyForms / 0.6
The Innovative Form Builder – IvyForms v0.6
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / frontend / src / views / _components / message / ivyMessage.ts

ivyMessage.ts in The Innovative Form Builder – IvyForms 0.6, at frontend/src/views/_components/message/ivyMessage.ts

78 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { ElMessage } from 'element-plus'
2 import 'element-plus/es/components/message/style/css'
3 import { h } from 'vue'
4 import IvyIcon from '@/views/_components/icon/IvyIcon.vue'
5
6 const IvyMessage = (options) => {
7 const messageColors = {
8 success: 'var(--map-status-success-fill-0)',
9 warning: 'var(--map-status-warning-fill-0)',
10 error: 'var(--map-status-error-fill-0)',
11 info: 'var(--map-base-purple-fill-0)',
12 default: 'var(--map-base-dusk-fill-4)',
13 }
14
15 const messageTextColors = {
16 success: 'var(--primitive-white)',
17 warning: 'var(--primitive-white)',
18 error: 'var(--primitive-white)',
19 info: 'var(--primitive-white)',
20 default: 'var(--map-base-dusk-fill--4)',
21 }
22
23 const iconNames = {
24 success: 'check-circle',
25 warning: 'danger',
26 error: 'danger',
27 info: 'danger',
28 default: 'sticker',
29 }
30
31 // Default auto-close durations per type (ms)
32 // Shorten success to ~1.5s to allow immediate interactions after save
33 const defaultDurations = {
34 success: 1000,
35 info: 2000,
36 warning: 2000,
37 error: 3000,
38 default: 1000,
39 } as const
40
41 const type = options?.type || 'default'
42
43 const mergedOptions = {
44 ...options,
45 class: 'ivyforms-message regular-14 ivyforms-pr-8',
46 offset: 48,
47 duration: options?.duration ?? defaultDurations[type] ?? defaultDurations.default,
48 icon: h(IvyIcon, {
49 name: iconNames[type] || 'sticker',
50 size: 's',
51 outerSize: '24px',
52 type: 'fill-duo',
53 color: 'var(--map-base-dusk-fill--4)',
54 }),
55 style: {
56 backgroundColor: messageColors[type] || messageColors.default,
57 borderColor: messageColors[type] || messageColors.default,
58 },
59 }
60
61 ElMessage(mergedOptions)
62
63 const style = document.createElement('style')
64 style.textContent = `
65 .ivyforms-message.el-message .el-message__content {
66 color: ${messageTextColors[type]};
67 }
68 .ivyforms-message .el-message__icon .ivyforms-icon svg {
69 width: 24px;
70 height: 24px;
71 fill: ${messageTextColors[type]};
72 }
73 `
74 document.head.appendChild(style)
75 }
76
77 export default IvyMessage
78