index.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <script setup lang="ts">
  2. import { h } from "vue";
  3. import hot from "@/assets/svg/hot.svg?component";
  4. import { message, closeAllMessage } from "@/utils/message";
  5. import { useRenderIcon } from "@/components/ReIcon/src/hooks";
  6. import Check from "@iconify-icons/ep/check";
  7. defineOptions({
  8. name: "Message"
  9. });
  10. </script>
  11. <template>
  12. <el-card shadow="never">
  13. <template #header>
  14. <div class="card-header">
  15. <span class="font-medium"> Message提示 </span>
  16. </div>
  17. </template>
  18. <h4 class="mb-4">element-plus 的消息提示,点击弹出提示信息</h4>
  19. <el-space wrap>
  20. <el-button
  21. type="info"
  22. @click="message('Info类型消息', { customClass: 'el' })"
  23. >
  24. Info
  25. </el-button>
  26. <el-button
  27. type="success"
  28. @click="
  29. message('Success类型消息', { customClass: 'el', type: 'success' })
  30. "
  31. >
  32. Success
  33. </el-button>
  34. <el-button
  35. type="warning"
  36. @click="
  37. message('Warning类型消息', { customClass: 'el', type: 'warning' })
  38. "
  39. >
  40. Warning
  41. </el-button>
  42. <el-button
  43. type="danger"
  44. @click="message('Error类型消息', { customClass: 'el', type: 'error' })"
  45. >
  46. Error
  47. </el-button>
  48. <el-button
  49. @click="message('可关闭消息', { customClass: 'el', showClose: true })"
  50. >
  51. 可关闭
  52. </el-button>
  53. <el-button
  54. @click="
  55. message('分组消息合并', {
  56. customClass: 'el',
  57. type: 'success',
  58. grouping: true
  59. })
  60. "
  61. >
  62. 分组消息合并
  63. </el-button>
  64. <el-button
  65. @click="
  66. message('自定义消息图标', {
  67. customClass: 'el',
  68. icon: useRenderIcon(Check)
  69. })
  70. "
  71. >
  72. 自定义图标
  73. </el-button>
  74. <el-button
  75. @click="
  76. message('3秒后关闭', {
  77. customClass: 'el',
  78. duration: 3000,
  79. onClose: () =>
  80. message('消息已关闭', { customClass: 'el', type: 'success' })
  81. })
  82. "
  83. >
  84. 自定义延时关闭时间并设置关闭后其他操作
  85. </el-button>
  86. <el-button
  87. @click="
  88. message(
  89. h('p', null, [
  90. h('span', null, 'Message can be '),
  91. h('i', { style: 'color: teal' }, 'VNode')
  92. ]),
  93. { customClass: 'el' }
  94. )
  95. "
  96. >
  97. 自定义内容
  98. </el-button>
  99. <el-button
  100. @click="
  101. message('<strong>This is <i>HTML</i> string</strong>', {
  102. customClass: 'el',
  103. dangerouslyUseHTMLString: true
  104. })
  105. "
  106. >
  107. HTML 片段作为正文内容
  108. </el-button>
  109. </el-space>
  110. <el-divider />
  111. <h4 class="mb-4">
  112. 类似 Ant Design 风格的消息提示,点击弹出提示信息(基于 ElMessage
  113. 样式改版,不会影响 ElMessage
  114. 原本样式,使用和打包大小成本极低并适配暗黑模式)
  115. </h4>
  116. <el-space wrap>
  117. <el-button type="info" @click="message('Info类型消息')">Info</el-button>
  118. <el-button
  119. type="success"
  120. @click="message('Success类型消息', { type: 'success' })"
  121. >
  122. Success
  123. </el-button>
  124. <el-button
  125. type="warning"
  126. @click="message('Warning类型消息', { type: 'warning' })"
  127. >
  128. Warning
  129. </el-button>
  130. <el-button
  131. type="danger"
  132. @click="message('Error类型消息', { type: 'error' })"
  133. >
  134. Error
  135. </el-button>
  136. <el-button @click="message('可关闭消息', { showClose: true })">
  137. 可关闭
  138. </el-button>
  139. <el-button
  140. @click="message('分组消息合并', { type: 'success', grouping: true })"
  141. >
  142. 分组消息合并
  143. </el-button>
  144. <el-button
  145. @click="
  146. message('自定义消息图标', {
  147. icon: hot
  148. })
  149. "
  150. >
  151. 自定义图标
  152. </el-button>
  153. <el-button
  154. @click="
  155. message('3秒后关闭', {
  156. duration: 3000,
  157. onClose: () => message('消息已关闭', { type: 'success' })
  158. })
  159. "
  160. >
  161. 自定义延时关闭时间并设置关闭后其他操作
  162. </el-button>
  163. <el-button
  164. @click="
  165. message(
  166. h('p', null, [
  167. h('span', null, 'Message can be '),
  168. h('i', { style: 'color: teal' }, 'VNode')
  169. ])
  170. )
  171. "
  172. >
  173. 自定义内容
  174. </el-button>
  175. <el-button
  176. @click="
  177. message('<strong>This is <i>HTML</i> string</strong>', {
  178. dangerouslyUseHTMLString: true
  179. })
  180. "
  181. >
  182. HTML 片段作为正文内容
  183. </el-button>
  184. </el-space>
  185. <el-divider />
  186. <el-button @click="closeAllMessage"> 关闭所有消息提示 </el-button>
  187. </el-card>
  188. </template>