* fix(components): [upload] unable to delete files in removeFile (#19437) * fix(components): [upload] unable to delete files in removeFile * fix(components): [upload] remove file when fileList does not use v-model * Update packages/components/upload/src/use-handlers.ts Co-authored-by: btea <2356281422@qq.com> --------- Co-authored-by: leiyu <leiyu@cmss.chinamobile.com> Co-authored-by: btea <2356281422@qq.com> * fix(components): [page-header] use `$slots` instead of `useSlots` (#19455) * fix(components): [page-header] use `$slots` instead of `useSlots` closed #19453 * test(components): [page-header] add classes slots rendering case * fix(components): [select] input width fills the remaining width (#19292) * fix(components): [select] input width fills the remaining width closed #17886 * fix: type * feat(components): [select, select-v2] add loading class to validateIcon (#19379) fix(components): [select, select-v2] add loading class to validateIcon * chore: update doc (#19479) * perf(components): [table] prioritize use rowKey to determine whether it is selected (#19451) * perf(components): [table] use rowKey to determine whether it is selected * chore: revert includes * perf: use includes replace isEqual * feat(components): [table] add allow-drag-last-column prop (#19374) * chore: Update changelog 2.9.2 (#19491) chore: update changelog 2.9.2 * chore: format dropdown docs (#19495) * fix(components): [description] `labelWidth` is invalid when no border (#19162) * fix(components): [description] `labelWidth` is invalid when no border * test: add test case * fix(hooks): [use-lockscreen] remove hiddenCls (#19429) * fix(hooks): [use-lockscreen] remove hiddenCls * fix(hooks): [useLockscreen] unit test * test(hooks): [useLockscreen] should not cleanup when not all unmounted * test(hooks): [useLockscreen] update test * test(hooks): [useLockscreen] update test * feat(components): [dialog/drawer] add custom sub classes (#19099) * feat(components): [dialog/drawer] add custom sub classes * docs(components): add custom classes for drawer/dialog slots * docs(components): [dialog/drawer] keep same description * test: add dialog/drawer sub classes * refactor: sync typo docs with props * chore: change release version * chore: rename * chore: fix doc --------- Co-authored-by: btea <2356281422@qq.com> * chore: upgrade puppeteer to 23.11.1 (#19500) * ci: update test-ssr.yml (#19521) * fix(components): [form] on post rules update reset field (#19129) * fix(components): [form] track rules on post update closed #19109 * fix(components): [form] ensure reset field state if no rules closed #19128 * test: add validate on rule change case * chore: on rules update reset field error * chore: fixup --------- Co-authored-by: btea <2356281422@qq.com> * fix(components): [tabs] set modelValue synchronously if beforeLeave is not set or is synchronous (#19387) * fix: [tabs] sync modelValue if beforeLeave is not set or is synchronous * feat: add unit test * feat(i18n): add Hindi language (#19483) * feat(i18n): add Hindi language * feat(i18n): update component and hindi translations * feat(i18n): update lint * docs: [collapse] change event parameter type error (#19539) * chore: fix handleChange type error * Update docs/examples/collapse/custom-icon.vue Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> --------- Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> * fix(components): [select] make sure the e-tag is not obstructed(#19529) (#19534) Co-authored-by: baiwusanyu-c <chenzhihui@chabaidao.com> * ci: run pkg.new when push (#19544) * docs: [button] add description (#19536) * ci: stop run pkg.new when push (#19545) * improvement(components): [text] add the title attribute (#19496) * improvement(components): [text] keep the inherited title attribute (#19551) * improvement(components): [text] keep the inherited title attribute * fix: content update recalculation * fix(components): [dialog] fix scroll bar not resetting to top on reopen (#19471) * fix(components): [dialog] Fix scroll bar not resetting to top on reopen closed #19420 * fix(components): update * fix(components): [dialog] update --------- Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> * test: [table] add show-overflow-tooltip trigger (#19556) * test: [table] add show-overflow-tooltip trigger * test: [table] add show-overflow-tooltip trigger * feat(i18n): add Norsk(no) language (#19523) * chore: update doc ui (#19586) * style(components): [dialog] no rounded when in fullscreen (#19583) * feat(component): [time-select] add include end time attribute (#19253) * feat: [time-select] init includeEndTime 🚧 * test: time-select includeEndTime 🚧 * refactor: renaming & cleanup * test(components): [time-select] add includeEndTime cases ✅ * docs(components): [time-select] add `includeEndTime` attribute * chore: change release version * chore: set `includeEndTime` default to false * docs: fix props typo * chore: remove useless assignment * chore: rename optionValue to currentTime * chore: update release version * Revert "ci: update test-ssr.yml" (#19610) Revert "ci: update test-ssr.yml (#19521)" This reverts commiteab540a3f7. * chore: Update changelog 2.9.3 (#19611) chore: update changelog 2.9.3 * chore: [time-picker] correct typo in `timePickerRangeTriggerProps` (#19487) * fix: correct typo in timePickerRangeTriggerProps * chore: deprecate misspelled export `timePickerRngeTriggerProps` --------- Co-authored-by: btea <2356281422@qq.com> * chore(docs): implement dynamic links for playground based on preview state (#19612) * docs: [calendar] add exposes (#19593) * docs: [calendar] add exposes * Apply suggestions from code review add translation characters Co-authored-by: btea <2356281422@qq.com> * docs: [calendar] format the exposes table --------- Co-authored-by: btea <2356281422@qq.com> * feat(components): [image-viewer] add showPreview method (#19466) * feat(components): [image-viewer] add showPreview method * docs(components): [image] update showPreview method version to 2.9.4 * chore: enable fileNesting config (#19615) * docs(components): [table-v2] add `indent-size` (#19621) docs(components): [table-v2] add `indent-size` Co-authored-by: gongbei <gongbei@wps.cn> * chore: [message-box] remove @ts-nocheck directive (#19277) * chore: [message-box] remove @ts-nocheck directive * fix: type * Update packages/components/message-box/src/index.vue Co-authored-by: qiang <qw13131wang@gmail.com> --------- Co-authored-by: qiang <qw13131wang@gmail.com> * feat(locale): add language Chinese Hongkong and Chinese Macau (#19608) * feat(components): [select] add popup-scroll event (#19589) * feat(components): [select] add popup-scroll event * Update docs/en-US/component/select.md Co-authored-by: btea <2356281422@qq.com> * chore: format --------- Co-authored-by: btea <2356281422@qq.com> Co-authored-by: warmthsea <2586244885@qq.com> * docs: add code file-title and icon (#19638) * docs: add code file-title and icon * chore: update deps * docs: add lang records (#19650) * chore: [tree] remove unused arg (#19255) * feat(i18n): add Telugu language (#19624) * feat(i18n): add Telugu language * chore(i18n): added missing keys in Telugu locale * chore: format telugu locale file. * chore(locale): fix lint in te.ts * docs: add lang records * feat(components): [image-viewer] add `progress` slot and `show-progress` props (#19465) * refactor(components): simplify computed properties in image-viewer * feat(components): [image-viewer] add progress number * test(components): remove console logs from image-viewer tests * feat(components): [image-viewer] update progress display and style * test(components): update progress selector in image-viewer tests * feat(components): [image-viewer] add slot support for progress display * docs(components): [image] add progress content description * docs(components): update docs * feat(components): [image] simplify progress slot binding * docs(components): update * Update packages/components/image-viewer/__tests__/image-viewer.test.tsx Co-authored-by: btea <2356281422@qq.com> * Update docs/en-US/component/image.md Co-authored-by: btea <2356281422@qq.com> * docs: update progress version in image documentation * Update packages/components/image-viewer/src/image-viewer.vue Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * feat: add showProgress props * docs: add demo * docs: update v * Update docs/en-US/component/image.md Co-authored-by: btea <2356281422@qq.com> --------- Co-authored-by: btea <2356281422@qq.com> Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * fix(components): [table-footer] update cols width on layout change (#19064) fix(components): [table-footer] update cols width on layout change closed #19054 Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * fix(ci): types & dark theme sync with pr (#19668) ci: set whole pr bundle * fix(ci): move all bundle to docs dist (#19671) * docs: format table-v2 & use actions/upload-artifact v4 (#19670) * docs: format table-v2 * chore: update actions/upload-artifact * chore: update * chore: update * feat(components): [image-viewer] add toolbar slot (#19497) * feat(components): [image-viewer] add toolbar slot * feat(docs): add docs * docs: update * docs: update * docs: update image viewer API types for clarity * docs: update custom toolbar version in image documentation to 2.9.4 * Update docs/examples/image/custom-toolbar.vue Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * style: remove dividers * revert: style * docs: format --------- Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * docs: [menu] `left-and-right` example style tag add scoped (#19654) Update left-and-right.vue 防止文档演示项目整页元素布局样式被修改 Co-authored-by: btea <2356281422@qq.com> * docs: [tree-v2] fix style error and remove annotation (#19681) * docs: [transfer] fix type error (#19682) * feat(components): [cascader] add `prefix` slot (#19631) * feat(components): [cascader] add prefix slot * docs(components): [cascader] add preview slot * Revert "docs(components): [cascader] add preview slot" This reverts commit1a40ca13ea. * docs(components): [cascader] revert for typo * fix(components): do not render prefix if prefix slot is not used * docs(components): [cascader] prefix version number added Co-authored-by: btea <2356281422@qq.com> * docs(components): [cascader] format docs --------- Co-authored-by: btea <2356281422@qq.com> * fix(components): [table] selection-change event emit incorrectly (#19618) * feat(components): [table] fix 'selection-change' event emit incorrectly * fix(components): [table] add test case * docs: [timeline] fix type error (#19688) * docs: [timeline] fix type error * Update docs/examples/timeline/custom-node.vue Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * Update docs/examples/timeline/custom-node.vue Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> --------- Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * docs: [dropdown] add `button-props` prop (#19694) docs: [dropdown] add `button-props` prop Co-authored-by: Bruce Lu <smallbone.lu@gmail.com> * docs: [tabs] fix type error (#19690) * docs: [switch] fix type error (#19704) * fix(components): [table] The index parameter of the selectable function is undefined (#19587) * fix(components): [table] first record can not be checked * fix(components): [table] last commit doesnt work for others index Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> * test(components): [table] add test cases * test(components): [table] modify the test case of the last submission --------- Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> Co-authored-by: btea <2356281422@qq.com> * fix(components): [autocomplete] prevent closing if focus is inside popper content (#19522) fix: [autocomplete] prevent closing if focus is inside popper content * docs: [layout] add a tip for layout column (#19669) docs: layout add tip * docs: [checkbox] fix intermediate example type error (#19713) docs: [checkbox] fix type error * docs: [input-number] fix type error (#19712) * docs: fix Exposes error (#19733) * feat(components): [table] add tooltip-formatter table & table-column prop (#19524) * feat(components): [table] add `tooltip-formatter` table-column prop closed #19507 * docs: add example * docs: demo remove tooltip formatter index * refactor(components): refactor code * docs: simpify tooltip demo * fix: fix warning error * feat(components): add table tooltip-formatter prop & merge slot * refactor: reuse variables * test: add tooltip-formatter test * docs: upgrade version * feat(components): [table] add `tooltip-formatter` table-column prop closed #19507 * docs: add example * docs: demo remove tooltip formatter index * refactor(components): refactor code * docs: simpify tooltip demo * fix: fix warning error * feat(components): add table tooltip-formatter prop & merge slot * refactor: reuse variables * test: add tooltip-formatter test * docs: upgrade version * refactor: change parameter to obj args * fix: property change to prop * fix: export `TableOverflowTooltipFormatterData` * refactor: `TableOverflowTooltipFormatterData` to `TableTooltipData` * fix: remove useless import * fix: refactor code --------- Co-authored-by: btea <2356281422@qq.com> * docs: search input default focus (#19724) * docs: search input default focus * fix(docs): ensure search input is focused after component mounts * revert: update * Update docs/.vitepress/vitepress/components/globals/overview.vue Co-authored-by: qiang <qw13131wang@gmail.com> * Update docs/.vitepress/vitepress/components/globals/overview.vue Co-authored-by: qiang <qw13131wang@gmail.com> * docs: update --------- Co-authored-by: qiang <qw13131wang@gmail.com> * fix(components): [input] refused to apply inline style because it violates csp (#19541) fix(components): [input] CSP support #15065 `element.setAttribute('style', 'css code')` violate Content Security Policy (CSP) using `element.style.setProperty()` instead * docs: [tooltip] fix type error (#19687) * docs: fix type error * docs: [tooltip] remove unnecessary width and height in mousemove handler * fix: update * fix: update * fix(components): [table-v2] make the fixed columns scroll like mainTable (#19104) fix(components): [table-v2] Make the fixed columns scroll like mainTable Make the fixed columns behave like the mainTable, where the rows containing fixedData stick in place, and the rest of the rows scroll. closed #19103 * fix(components): [cascader-panel] lazy return children can't get value (#19100) * fix(components): [cascader-panel] lazy return children can't get value fix #9157 closed #9157 * fix: update * fix(components): [table] fix the logic of `selection` column when `fixed` state changes dynamically (#19703) * fix(components): [table] selection column fixed left * fix(components): [table] optimize function * fix(components): [table] add dynamic columns test case * fix(components): [table] the toggleTreeExpansion failed to trigger load function (#18728) * feat(components): [table] fix lazy loading * Modify the function usage * chore: format `dropdown.md` (#19758) chore: format dropdown.md * feat(locale): export zhHk/zhMo (#19762) * docs: [calendar] add CalendarDateType Type Declarations (#19766) docs: [calendar] add Type Declarations * chore: update doc (#19770) * fix(components): [table-v2] reset `lastVisitedColumnIdx` if width change (#19757) fix(components): [table-v2] reset lastVisitedColumnIdx if width change * ci: fix corepack matching keyid error (#19783) * docs: [scrollbar] fix type error (#19697) * docs: [scrollbar] fix type error * refactor(docs): improve code structure and type annotations in examples * Update docs/examples/scrollbar/manual-scroll.vue Co-authored-by: btea <2356281422@qq.com> * fix(docs): replace lodash isNumber with typeof check * fix(docs): update --------- Co-authored-by: btea <2356281422@qq.com> * chore(components): [cascader-node] remove ts-nocheck and fix type error (#19776) * chore(components): [CascaderNode] remove ts-nocheck and fix type error * chore: format --------- Co-authored-by: warmthsea <2586244885@qq.com> * feat(locale): export Norsk(no) (#19747) feat(locale): export Norsk(no) Added Norwegian language reference Co-authored-by: btea <2356281422@qq.com> * feat(locale): export missing language (#19790) feat(locale): export missing locale * chore: Update changelog 2.9.4 (#19792) chore: update changelog 2.9.4 * docs: optimization API style (#19793) * docs: optimization API style * chore: Transfer * chore: update * fix: update * chore(components): [tree] remove ts-nocheck and fix type error (#19777) * chore(components): [tree] remove ts-nocheck and fix type error * refactor: refactor --------- Co-authored-by: btea <2356281422@qq.com> * chore: update doc (#19831) * fix(components): [message-box] init validator (#19832) * fix(components): [message-box] init validator * fix: update --------- Co-authored-by: xingyixiang <452282988@qq.com> * docs: [message-box] update options default value (#19833) * refactor(components): [menu] change to `script setup` writing and optimizing code (#19816) * refactor(components): [menu] refactor * Update packages/components/menu/src/menu-collapse-transition.vue * refactor(components): migrate ElMenuItem to Composition API * fix: update * chore: chore * refactor: refactor * revert: revert * refactor: refactor * revert: revert * fix: Expose * Update packages/components/menu/src/menu-item.vue Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> --------- Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> * refactor: [menu] add necessary braces (#19840) * fix(components): [tree-select] dynamic bind class invalid (#19803) * test: [tree-select] dynamic class case (#19859) * chore: change create issue use (#19865) * feat(components): [dropdown] add `persistent` prop (#19797) * feat(components): add persistent attribute * Update docs/en-US/component/dropdown.md Co-authored-by: btea <2356281422@qq.com> * fix: docs --------- Co-authored-by: btea <2356281422@qq.com> * fix(components): [table] compatible with window non-existence (#19837) ElTable's doLayout method is debounced and scheduled (relying on setTimeout) which causes problems in testing(Vitest). Sometimes the testing environment(jsdom) is destroyed before doLayout() executes which causes error due to requestAnimationFrame not existing. To mitigate this issue can check if the window exists which is a good indication that jsdom has not been thorn down yet. * feat(components): [menu] add `persistent` prop (#19874) feat(components): [menu] add persistent prop * refactor: [time-picker] optimize type declaration (#19875) chore: [time-picker] optimize type declaration * fix(components): [select] solve memory leak (#19709) fix(components): solve memory leak Watching the value of an attribute of an option can lead to a memory leak closed #19680 Co-authored-by: 张东 <A80784@internet.com> * chore: [tree] export types (#19846) * chore: [tree] export type and fix the type error of the docs * revert: revert * revert: revert * feat(components): [cascader] add suggestion slot (#19866) * feat(components): [cascader] add suggestion-item slot * docs: add version to suggestion item slot demo Co-authored-by: btea <2356281422@qq.com> * Update docs/en-US/component/cascader.md --------- Co-authored-by: btea <2356281422@qq.com> * fix(components): [steps] update border-color to support safari (#19726) * fix(components): [description] tsx rendering functional component error (#19879) * fix(components): [description] tsx render * fix: update * fix: update * test: add test case * fix(components): [cascader] prevent default behavior when pressing a key to toggle suggestion list (#19897) fix(components): [cascader] suggestion key-down scroll warn * feat(components): [message-box] support custom close icon in message-box (#18168) * fix(components): [message-box] vue warning when closeIcon is component (#19901) * docs: [button] update default value and description (#19903) * fix(components): [select] ensure scrollbar syncs when scrolling to selected option (#19636) * fix: ensure scrollbar syncs when scrolling to selected option * feat: update scrollbar when drop-down menu is displayed * fix(components): [tree-select] search solve memory leak (#19895) * fix(components): [tree-select] search solve memory leak * feat: update * fix: test * chore: update test * feat(components): [slider] add `persistent` prop (#19889) * feat(components): [Slider] add persistent prop * fix(components): [slider] update persistent prop * fix(components): [slider] rename persistent prop to tooltipPersistent * Update docs/en-US/component/slider.md Co-authored-by: btea <2356281422@qq.com> * chore: formatted * fix(components): [slider] update description for persistent prop --------- Co-authored-by: btea <2356281422@qq.com> * docs(components): [dropdown] update description and example (#19908) docs(components): [dropdown]update description and example * docs(components): [tree] change `customized-node` example (#19907) * test: other branch commit pr.new * ci: update --------- Co-authored-by: ly-yewu <leiyu_yewu@cmss.chinamobile.com> Co-authored-by: leiyu <leiyu@cmss.chinamobile.com> Co-authored-by: btea <2356281422@qq.com> Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> Co-authored-by: qiang <qw13131wang@gmail.com> Co-authored-by: Lo <l709937065@gmail.com> Co-authored-by: 0song <82012629+0song@users.noreply.github.com> Co-authored-by: Element <wallement@gmail.com> Co-authored-by: Liao-js <43257608+Liao-js@users.noreply.github.com> Co-authored-by: DDDDD12138 <43703884+DDDDD12138@users.noreply.github.com> Co-authored-by: steveWang13 <107922326+steveWang13@users.noreply.github.com> Co-authored-by: jiaxiang <zj.x9872@foxmail.com> Co-authored-by: 白雾三语 <32354856+baiwusanyu-c@users.noreply.github.com> Co-authored-by: baiwusanyu-c <chenzhihui@chabaidao.com> Co-authored-by: 晚风予星 <75473409+lxKylin@users.noreply.github.com> Co-authored-by: Meet you <wjp_github@163.com> Co-authored-by: xingyixiang <452282988@qq.com> Co-authored-by: changehu <814394170@qq.com> Co-authored-by: iamkun <kunhello@outlook.com> Co-authored-by: betavs <34408516+betavs@users.noreply.github.com> Co-authored-by: LAMMU <38106851+LAMMUpro@users.noreply.github.com> Co-authored-by: jiaxiang <zjx9987@gmail.com> Co-authored-by: baclona <853940223@qq.com> Co-authored-by: gongbei <gongbei@wps.cn> Co-authored-by: Mark J <markpro.code@gmail.com> Co-authored-by: Mouli Bheemaneti <57999522+moulibheemaneti@users.noreply.github.com> Co-authored-by: Jiankian <i@anline.cn> Co-authored-by: David Kitano <63226115+DavidKitano@users.noreply.github.com> Co-authored-by: Nick Wu <38874640+wNing50@users.noreply.github.com> Co-authored-by: smallbone <lue2048@163.com> Co-authored-by: Bruce Lu <smallbone.lu@gmail.com> Co-authored-by: 伊墨 <1905672206@qq.com> Co-authored-by: 知晓同丶 <zhixiaotong.me@qq.com> Co-authored-by: hanchao-c0ldwave <hanchao@cmss.chinamobile.com> Co-authored-by: coderchang <coderchang0105@gmail.com> Co-authored-by: pengpeng <30883395+webvs2@users.noreply.github.com> Co-authored-by: Delyan Haralanov <purepear@gmail.com> Co-authored-by: 锌小子 <2252647301@qq.com> Co-authored-by: 张东 <A80784@internet.com> Co-authored-by: DiamondYuan <541832074@qq.com> Co-authored-by: xion <65892539+xionkq@users.noreply.github.com> Co-authored-by: zhuft-moon <zhufengting_yewu@cmss.chinamobile.com> Co-authored-by: dengguangmiaoyyds <gujiao_yewu@cmss.chinamobile.com>
19 KiB
title, lang
| title | lang |
|---|---|
| Message | en-US |
Message Box
A set of modal boxes simulating system message box, mainly for alerting information, confirm operations and prompting messages.
:::tip
By design MessageBox provides simulations of system's alert, confirm and prompt,so it's content should be simple. For more complicated contents, please use Dialog.
:::
Alert
Alert interrupts user operation until the user confirms.
:::demo Open an alert by calling the ElMessageBox.alert method. It simulates the system's alert, and cannot be closed by pressing ESC or clicking outside the box. In this example, two parameters message and title are received. It is worth mentioning that when the box is closed, it returns a Promise object for further processing. If you are not sure if your target browsers support Promise, you should import a third party polyfill or use callbacks instead like this example.
message-box/alert
:::
Confirm
Confirm is used to ask users' confirmation.
:::demo Call ElMessageBox.confirm method to open a confirm, and it simulates the system's confirm. We can also highly customize Message Box by passing a third attribute options which is a literal object. The attribute type indicates the message type, and it's value can be success, error, info and warning. Note that the second attribute title must be a string, and if it is an object, it will be handled as the attribute options. Here we use Promise to handle further processing.
message-box/confirm
:::
Prompt
Prompt is used when user input is required.
:::demo Call ElMessageBox.prompt method to open a prompt, and it simulates the system's prompt. You can use inputPattern parameter to specify your own RegExp pattern. Use inputValidator to specify validation method, and it should return Boolean or String. Returning false or String means the validation has failed, and the string returned will be used as the inputErrorMessage. In addition, you can customize the placeholder of the input box with inputPlaceholder parameter.
message-box/prompt
:::
Use VNode
message can be VNode.
:::demo
message-box/use-vnode
:::
Customization
Can be customized to show various content.
:::demo The three methods mentioned above are repackagings of the ElMessageBox method. This example calls ElMessageBox method directly using the showCancelButton attribute, which is used to indicate if a cancel button is displayed. Besides we can use cancelButtonClass to add a custom style and cancelButtonText to customize the button text (the confirm button also has these fields, and a complete list of fields can be found at the end of this documentation). This example also uses the beforeClose attribute. It is a method and will be triggered when the MessageBox instance will be closed, and its execution will stop the instance from closing. It has three parameters: action, instance and done. Using it enables you to manipulate the instance before it closes, e.g. activating loading for confirm button; you can invoke the done method to close the MessageBox instance (if done is not called inside beforeClose, the instance will not be closed).
message-box/customization
:::
Use HTML String
message supports HTML string.
:::demo Set dangerouslyUseHTMLString to true and message will be treated as an HTML string.
message-box/use-html
:::
:::warning
Although message property supports HTML strings, dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS attacks. So when dangerouslyUseHTMLString is on, please make sure the content of message is trusted, and never assign message to user-provided content.
:::
Distinguishing cancel and close
In some cases, clicking the cancel button and close button may have different meanings.
:::demo By default, the parameters of Promise's reject callback and callback are 'cancel' when the user cancels (clicking the cancel button) and closes (clicking the close button or mask layer, pressing the ESC key) the MessageBox. If distinguishCancelAndClose is set to true, the parameters of the above two operations are 'cancel' and 'close' respectively.
message-box/distinguishable-close-cancel
:::
Centered content
Content of MessageBox can be centered.
:::demo Setting center to true will center the content.
message-box/centered-content
:::
Customized Icon
The icon can be customized to any Vue component or render function (JSX).
:::demo
message-box/customized-icon
:::
Draggable
MessageBox can be draggable.
:::demo Setting draggable to true allows user to drag MessageBox. Set overflow ^(2.5.4) to true can drag overflow the viewport.
message-box/draggable
:::
Global method
If Element Plus is fully imported, it will add the following global methods for app.config.globalProperties: $msgbox, $alert, $confirm and $prompt. So in a Vue instance you can call MessageBox like what we did in this page. The parameters are:
$msgbox(options)$alert(message, title, options)or$alert(message, options)$confirm(message, title, options)or$confirm(message, options)$prompt(message, title, options)or$prompt(message, options)
App context inheritance > 2.0.4
Now message box accepts a context as second (forth if you are using message box variants) parameter of the message constructor which allows you to inject current app's context to message which allows you to inherit all the properties of the app.
import { getCurrentInstance } from 'vue'
import { ElMessageBox } from 'element-plus'
// in your setup method
const { appContext } = getCurrentInstance()!
// You can pass it like:
ElMessageBox({}, appContext)
// or if you are using variants
ElMessageBox.alert('Hello world!', 'Title', {}, appContext)
Local import
If you prefer importing MessageBox on demand:
import { ElMessageBox } from 'element-plus'
The corresponding methods are: ElMessageBox, ElMessageBox.alert, ElMessageBox.confirm and ElMessageBox.prompt. The parameters are the same as above.
API
Options
| Name | Description | Type | Default |
|---|---|---|---|
| autofocus | auto focus when open MessageBox | ^[boolean] | true |
| title | title of the MessageBox | ^[string] | '' |
| message | content of the MessageBox | ^[string] / ^[VNode] / ^[Function]() => VNode ^(2.2.17) |
— |
| dangerouslyUseHTMLString | whether message is treated as HTML string |
^[boolean] | false |
| type | message type, used for icon display | ^[enum]'success' | 'info' | 'warning' | 'error' |
'' |
| icon | custom icon component, overrides type |
^[string] / ^[Component] | '' |
| closeIcon ^(2.9.5) | custom close icon component, default is Close | ^[string] / ^[Component] | '' |
| customClass | custom class name for MessageBox | ^[string] | '' |
| customStyle | custom inline style for MessageBox | ^[CSSProperties] | {} |
| modalClass | custom class names for mask | string | — |
| callback | MessageBox closing callback if you don't prefer Promise | ^[Function](value: string, action: Action) => any | (action: Action) => any |
null |
| showClose | whether to show close icon of MessageBox | ^[boolean] | true |
| beforeClose | callback before MessageBox closes, and it will prevent MessageBox from closing | ^[Function](action: Action, instance: MessageBoxState, done: () => void) => void |
null |
| distinguishCancelAndClose | whether to distinguish canceling and closing the MessageBox | ^[boolean] | false |
| lockScroll | whether to lock body scroll when MessageBox prompts | ^[boolean] | true |
| showCancelButton | whether to show a cancel button | ^[boolean] | false (true when called with confirm and prompt) |
| showConfirmButton | whether to show a confirm button | ^[boolean] | true |
| cancelButtonText | text content of cancel button | ^[string] | Cancel |
| confirmButtonText | text content of confirm button | ^[string] | OK |
| cancelButtonLoadingIcon ^(2.7.7) | loading icon content of cancel button | ^[string] / ^[Component] | Loading |
| confirmButtonLoadingIcon ^(2.7.7) | loading icon content of confirm button | ^[string] / ^[Component] | Loading |
| cancelButtonClass | custom class name of cancel button | ^[string] | '' |
| confirmButtonClass | custom class name of confirm button | ^[string] | '' |
| closeOnClickModal | whether MessageBox can be closed by clicking the mask | ^[boolean] | true (false when called with alert) |
| closeOnPressEscape | whether MessageBox can be closed by pressing the ESC | ^[boolean] | true (false when called with alert) |
| closeOnHashChange | whether to close MessageBox when hash changes | ^[boolean] | true |
| showInput | whether to show an input | ^[boolean] | false (true when called with prompt) |
| inputPlaceholder | placeholder of input | ^[string] | '' |
| inputType | type of input | ^[string] | text |
| inputValue | initial value of input | ^[string] | '' |
| inputPattern | regexp for the input | ^[regexp] | null |
| inputValidator | validation function for the input. Should returns a boolean or string. If a string is returned, it will be assigned to inputErrorMessage | ^[Function](value: string) => boolean | string/ undefined |
undefined |
| inputErrorMessage | error message when validation fails | ^[string] | Illegal input |
| center | whether to align the content in center | ^[boolean] | false |
| draggable | whether MessageBox is draggable | ^[boolean] | false |
| overflow ^(2.5.4) | draggable MessageBox can overflow the viewport | ^[boolean] | false |
| roundButton | whether to use round button | ^[boolean] | false |
| buttonSize | custom size of confirm and cancel buttons | ^[string]'small' | 'default' | 'large' |
default |
| appendTo ^(2.2.19) | set the root element for the message box | ^[string] / ^[HTMLElement] | — |