diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md
index 23158b9f3d97a..e982742326b2d 100644
--- a/CHANGELOG.en-US.md
+++ b/CHANGELOG.en-US.md
@@ -1,5 +1,28 @@
## Changelog
+### 2.6.2
+
+_2024-03-22_
+
+#### Features
+
+- Components [breadcrumb] aria-label uses locale (#16089 by @btea)
+
+#### Bug fixes
+
+- Components [anchor] `type` default value typo (#16102 by @cullyfung)
+- Components [tree] remove duplicate type declaration (#16106 by @inside5545)
+- Components [cascader] form nested causing clear icon invalid (#16068 by @btea)
+- Components [anchor,tour] the `type` type typo (#16119 by @warmthsea)
+- Components [select] stop the click event propagation of `header/footer` slot (#16151 by @warmthsea)
+- Components [tree] the value of append can be zero (#16130 by @btea)
+- Components [select & select-v2] click toggleMenu add prevent (#16149 by @kooriookami)
+- Theme-chalk replace `gulp-clean-css` with `cssnano` (#16056 by @zhixiaotong)
+- Components [tag] remove duplicate style (#16174 by @btea)
+- Hooks SSR hydration error caused by z-index (#16175 by @tolking)
+- Components [cascader-panel] get the reactive proxy of `node` to trigger side effects (#16198 by @makedopamine)
+- Style(components): [anchor] marker transition expression incorrect (#16100 by @zeyongTsai)
+
### 2.6.1
_2024-03-08_
diff --git a/docs/.vitepress/vitepress/components/globals/overview.vue b/docs/.vitepress/vitepress/components/globals/overview.vue
index 2aa2f6db7078c..0a0c112930210 100644
--- a/docs/.vitepress/vitepress/components/globals/overview.vue
+++ b/docs/.vitepress/vitepress/components/globals/overview.vue
@@ -84,9 +84,14 @@ const filteredSidebars = computed(() =>
.slice(1)
.map((group) => ({
...group,
- children: group.children.filter((item) =>
- item.text.toLowerCase().includes(query.value.trim().toLowerCase())
- ),
+ children: group.children.filter((item) => {
+ const value = query.value.trim().toLowerCase()
+ return (
+ group.text.toLowerCase().includes(value) ||
+ item.text.toLowerCase().includes(value) ||
+ item.promotion?.includes(value)
+ )
+ }),
}))
.filter((group) => group.children.length)
)
@@ -133,7 +138,7 @@ const getIcon = (link: string) => {
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 16px;
- ::v-deep(.el-card) {
+ :deep(.el-card) {
cursor: pointer;
.el-card__header {
diff --git a/docs/en-US/component/anchor.md b/docs/en-US/component/anchor.md
index 99d8580dc8f99..4753a2571ce5f 100644
--- a/docs/en-US/component/anchor.md
+++ b/docs/en-US/component/anchor.md
@@ -84,7 +84,7 @@ anchor/affix
| bound | the offset of the element starting to trigger the anchor. | `number` | 15 |
| duration | set the scroll duration of the container, in milliseconds. | `number` | 300 |
| marker | whether to show the marker. | ^[boolean] | true |
-| type | set Anchor type. | ^[enum]`'defalut' \| 'underline'` | `default` |
+| type | set Anchor type. | ^[enum]`'default' \| 'underline'` | `default` |
| direction | Set Anchor direction. | ^[enum]`'vertical' \| 'horizontal'` | `vertical` |
### Anchor Events
diff --git a/docs/en-US/component/checkbox.md b/docs/en-US/component/checkbox.md
index 58f70b8aa9ce8..4b1215830b8df 100644
--- a/docs/en-US/component/checkbox.md
+++ b/docs/en-US/component/checkbox.md
@@ -132,7 +132,7 @@ checkbox/with-border
| max | maximum number of checkbox checked | ^[number] | — |
| label | label for screen reader | ^[string] | — |
| text-color | font color when button is active | ^[string] | #ffffff |
-| fill | border and background color when button is active | ^[string] | #409EFF |
+| fill | border and background color when button is active | ^[string] | #409eff |
| tag | element tag of the checkbox group | ^[string] | div |
| validate-event | whether to trigger form validation | ^[boolean] | true |
diff --git a/docs/en-US/component/drawer.md b/docs/en-US/component/drawer.md
index 42a753a7facec..f492f398a889a 100644
--- a/docs/en-US/component/drawer.md
+++ b/docs/en-US/component/drawer.md
@@ -98,7 +98,7 @@ Drawer provides an API called `destroyOnClose`, which is a flag variable that in
| custom-class ^(deprecated) | Extra class names for Drawer | ^[string] | — |
| destroy-on-close | Indicates whether children should be destroyed after Drawer closed | ^[boolean] | false |
| modal | Should show shadowing layer | ^[boolean] | true |
-| direction | Drawer's opening direction | ^[enum]`'rtl' \| 'ltr' \| 'ttb' \| 'btt' \| 'rtl'` | rtl |
+| direction | Drawer's opening direction | ^[enum]`'rtl' \| 'ltr' \| 'ttb' \| 'btt'` | rtl |
| show-close | Should show close button at the top right of Drawer | ^[boolean] | true |
| size | Drawer's size, if Drawer is horizontal mode, it effects the width property, otherwise it effects the height property, when size is `number` type, it describes the size by unit of pixels; when size is `string` type, it should be used with `x%` notation, other wise it will be interpreted to pixel unit | ^[number] / ^[string] | 30% |
| title | Drawer's title, can also be set by named slot, detailed descriptions can be found in the slot form | ^[string] | — |
diff --git a/docs/en-US/component/icon.md b/docs/en-US/component/icon.md
index f91658b8a34d8..5d593b6f2f077 100644
--- a/docs/en-US/component/icon.md
+++ b/docs/en-US/component/icon.md
@@ -129,7 +129,7 @@ import { Edit, Share, Delete, Search, Loading } from '@element-plus/icons-vue'
-
+
@@ -156,7 +156,7 @@ import { Edit, Share, Delete, Search, Loading } from '@element-plus/icons-vue'
-
+
diff --git a/docs/en-US/component/menu.md b/docs/en-US/component/menu.md
index 9de2418180d08..863565dd13c2e 100644
--- a/docs/en-US/component/menu.md
+++ b/docs/en-US/component/menu.md
@@ -72,7 +72,7 @@ menu/popper-offset
| popper-offset ^(2.4.4) | offset of the popper (effective for all submenus) | number | — | 6 |
| background-color | background color of Menu (hex format) (deprecated, use `--bg-color` instead) | string | — | #ffffff |
| text-color | text color of Menu (hex format) (deprecated, use `--text-color` instead) | string | — | #303133 |
-| active-text-color | text color of currently active menu item (hex format) (deprecated, use `--active-color` instead) | string | — | #409EFF |
+| active-text-color | text color of currently active menu item (hex format) (deprecated, use `--active-color` instead) | string | — | #409eff |
| default-active | index of active menu on page load | string | — | — |
| default-openeds | array that contains indexes of currently active sub-menus | Array | — | — |
| unique-opened | whether only one sub-menu can be active | boolean | — | false |
diff --git a/docs/en-US/component/message-box.md b/docs/en-US/component/message-box.md
index a0b8030fa1ef2..0bf0ef810a799 100644
--- a/docs/en-US/component/message-box.md
+++ b/docs/en-US/component/message-box.md
@@ -187,7 +187,7 @@ The corresponding methods are: `ElMessageBox`, `ElMessageBox.alert`, `ElMessageB
| input-type | type of input | ^[string] | text |
| input-value | initial value of input | ^[string] | null |
| input-pattern | regexp for the input | ^[regexp] | null |
-| input-validator | 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) => boolea \| string` | null |
+| input-validator | 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` | null |
| input-error-message | 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 |
diff --git a/docs/en-US/component/radio.md b/docs/en-US/component/radio.md
index 9f06934c8ad2f..e556533f161fe 100644
--- a/docs/en-US/component/radio.md
+++ b/docs/en-US/component/radio.md
@@ -99,7 +99,7 @@ radio/with-borders
| size | the size of radio buttons or bordered radios | ^[string] | default |
| disabled | whether the nesting radios are disabled | ^[boolean] | false |
| text-color | font color when button is active | ^[string] | #ffffff |
-| fill | border and background color when button is active | ^[string] | #409EFF |
+| fill | border and background color when button is active | ^[string] | #409eff |
| validate-event | whether to trigger form validation | ^[boolean] | true |
| label ^(a11y) | same as `aria-label` in RadioGroup | ^[string] | — |
| name | native `name` attribute | ^[string] | — |
diff --git a/docs/en-US/component/rate.md b/docs/en-US/component/rate.md
index 94eda0338b4d1..3b55423442246 100644
--- a/docs/en-US/component/rate.md
+++ b/docs/en-US/component/rate.md
@@ -96,9 +96,9 @@ Use `css/scss` language to change the global or local color. We set some global
| allow-half | whether picking half start is allowed | ^[boolean] | false |
| low-threshold | threshold value between low and medium level. The value itself will be included in low level | ^[number] | 2 |
| high-threshold | threshold value between medium and high level. The value itself will be included in high level | ^[number] | 4 |
-| colors | colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color | ^[object]`string[] \| Record` | ['#F7BA2A', '#F7BA2A', '#F7BA2A'] |
-| void-color | color of unselected icons | ^[string] | #C6D1DE |
-| disabled-void-color | color of unselected read-only icons | ^[string] | #EFF2F7 |
+| colors | colors for icons. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding color | ^[object]`string[] \| Record` | ['#f7ba2a', '#f7ba2a', '#f7ba2a'] |
+| void-color | color of unselected icons | ^[string] | #c6d1de |
+| disabled-void-color | color of unselected read-only icons | ^[string] | #eff2f7 |
| icons | icon components. If array, it should have 3 elements, each of which corresponds with a score level, else if object, the key should be threshold value between two levels, and the value should be corresponding icon component | ^[object]`string[] \| Component[] \| Record` | [StarFilled, StarFilled, StarFilled] |
| void-icon | component of unselected icons | ^[string] / ^[Component] | Star |
| disabled-void-icon | component of unselected read-only icons | ^[string] / ^[Component] | StarFilled |
diff --git a/docs/en-US/component/select-v2.md b/docs/en-US/component/select-v2.md
index f345533c32e46..ccd13b7d07f17 100644
--- a/docs/en-US/component/select-v2.md
+++ b/docs/en-US/component/select-v2.md
@@ -239,7 +239,7 @@ select-v2/custom-loading
| remote-method | function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true | ^[Function]`(keyword: string) => void` | — |
| validate-event | whether to trigger form validation | ^[boolean] | true |
| placement | position of dropdown | ^[enum]`'top' \| 'top-start' \| 'top-end' \| 'bottom' \| 'bottom-start' \| 'bottom-end' \| 'left' \| 'left-start' \| 'left-end' \| 'right' \| 'right-start' \| 'right-end'` | bottom-start |
-| fallback-placements ^(2.5.6) | list of possible positions for dropdown [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[arrary]`Placement[]` | ['bottom-start', 'top-start', 'right', 'left'] |
+| fallback-placements ^(2.5.6) | list of possible positions for dropdown [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[array]`Placement[]` | ['bottom-start', 'top-start', 'right', 'left'] |
| collapse-tags-tooltip ^(2.3.0) | whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true | ^[boolean] | false |
| max-collapse-tags ^(2.3.0) | The max tags number to be shown. To use this, `collapse-tags` must be true | ^[number] | 1 |
| tag-type ^(2.5.0) | tag type | ^[enum]`'' \| 'success' \| 'info' \| 'warning' \| 'danger'` | info |
diff --git a/docs/en-US/component/select.md b/docs/en-US/component/select.md
index ec9e5f8046531..7297bbc6c5604 100644
--- a/docs/en-US/component/select.md
+++ b/docs/en-US/component/select.md
@@ -201,7 +201,7 @@ select/custom-loading
| tag-type | tag type | ^[enum]`'' \| 'success' \| 'info' \| 'warning' \| 'danger'` | info |
| validate-event | whether to trigger form validation | ^[boolean] | true |
| placement ^(2.2.17) | position of dropdown | ^[enum]`'top' \| 'top-start' \| 'top-end' \| 'bottom' \| 'bottom-start' \| 'bottom-end' \| 'left' \| 'left-start' \| 'left-end' \| 'right' \| 'right-start' \| 'right-end'` | bottom-start |
-| fallback-placements ^(2.5.6) | list of possible positions for dropdown [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[arrary]`Placement[]` | ['bottom-start', 'top-start', 'right', 'left'] |
+| fallback-placements ^(2.5.6) | list of possible positions for dropdown [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[array]`Placement[]` | ['bottom-start', 'top-start', 'right', 'left'] |
| max-collapse-tags ^(2.3.0) | the max tags number to be shown. To use this, `collapse-tags` must be true | ^[number] | 1 |
| popper-options | [popper.js](https://popper.js.org/docs/v2/) parameters | ^[object]refer to [popper.js](https://popper.js.org/docs/v2/) doc | {} |
| aria-label ^(a11y) | same as `aria-label` in native input | ^[string] | — |
diff --git a/docs/en-US/component/tooltip.md b/docs/en-US/component/tooltip.md
index b1edabebfb9ae..0a1f6b1b2aefc 100644
--- a/docs/en-US/component/tooltip.md
+++ b/docs/en-US/component/tooltip.md
@@ -157,7 +157,7 @@ tooltip/animations
| content | display content, can be overridden by `slot#content` | ^[string] | '' |
| raw-content | whether `content` is treated as HTML string | ^[boolean] | false |
| placement | position of Tooltip | ^[enum]`'top' \| 'top-start' \| 'top-end' \| 'bottom' \| 'bottom-start' \| 'bottom-end' \| 'left' \| 'left-start' \| 'left-end' \| 'right' \| 'right-start' \| 'right-end'` | bottom |
-| fallback-placements | list of possible positions for Tooltip [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[arrary]`Placement[]` | — |
+| fallback-placements | list of possible positions for Tooltip [popper.js](https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) | ^[array]`Placement[]` | — |
| visible / v-model:visible | visibility of Tooltip | ^[boolean] | — |
| disabled | whether Tooltip is disabled | ^[boolean] | — |
| offset | offset of the Tooltip | ^[number] | 12 |
diff --git a/docs/en-US/component/tree-v2.md b/docs/en-US/component/tree-v2.md
index e29b302b1e0c3..3d133c82b4174 100644
--- a/docs/en-US/component/tree-v2.md
+++ b/docs/en-US/component/tree-v2.md
@@ -61,7 +61,7 @@ tree-v2/custom-node
Tree nodes can be filtered
-:::demo Invoke the `filter` method of the Tree instance to filter tree nodes. Its parameter is the filtering keyword. Note that for it to work, `filter-node-method` is required, and its value is the filtering method.
+:::demo Invoke the `filter` method of the Tree instance to filter tree nodes. Its parameter is the filtering keyword. Note that for it to work, `filter-method` is required, and its value is the filtering method.
tree-v2/filter
diff --git a/docs/en-US/guide/ssr.md b/docs/en-US/guide/ssr.md
index 06e76529c7da8..afdebabf8fa74 100644
--- a/docs/en-US/guide/ssr.md
+++ b/docs/en-US/guide/ssr.md
@@ -31,6 +31,20 @@ app.provide(ID_INJECTION_KEY, {
})
```
+## Provide ZIndex
+
+When you using SSR for development, you may encounter hydration errors caused by `z-index`. In this case, we recommend injecting an initial value to avoid such errors.
+
+```ts
+// src/main.js (irrelevant code omitted)
+import { createApp } from 'vue'
+import { ZINDEX_INJECTION_KEY } from 'element-plus'
+import App from './App.vue'
+
+const app = createApp(App)
+app.provide(ZINDEX_INJECTION_KEY, { current: 0 })
+```
+
## Teleports
[Teleport](https://vuejs.org/guide/scaling-up/ssr.html#teleports) is used internally by multiple components in Element Plus (eg. ElDialog, ElDrawer, ElTooltip, ElDropdown, ElSelect, ElDatePicker ...), so special handling is required during SSR.
@@ -79,7 +93,7 @@ There may be some [SSR problems with teleport](https://github.com/vuejs/core/iss
1. The `teleported` attribute in all components based on ElTooltip should be consistent, it is recommended to use the default value.
2. The `append-to-body` attribute value of ElDialog and ElDrawer should be consistent, it is recommended to enable the `append-to-body`.
-3. When the ElSubMenu component has a multi-layer popup, It is recommended to enable the `popper-append-to-body`
+3. When the ElSubMenu component has a multi-layer popup, It is recommended to enable the `teleported`
:::
diff --git a/docs/examples/anchor/scroll.vue b/docs/examples/anchor/scroll.vue
index cc003749500f9..8cb7b88aa1d61 100644
--- a/docs/examples/anchor/scroll.vue
+++ b/docs/examples/anchor/scroll.vue
@@ -52,7 +52,7 @@
diff --git a/global.d.ts b/global.d.ts
index f09f9ab63eb91..1a9429ffcaae3 100644
--- a/global.d.ts
+++ b/global.d.ts
@@ -6,6 +6,8 @@ declare module '@vue/runtime-core' {
ElAside: typeof import('element-plus')['ElAside']
ElAutocomplete: typeof import('element-plus')['ElAutocomplete']
ElAvatar: typeof import('element-plus')['ElAvatar']
+ ElAnchor: typeof import('element-plus')['ElAnchor']
+ ElAnchorLink: typeof import('element-plus')['ElAnchorLink']
ElBacktop: typeof import('element-plus')['ElBacktop']
ElBadge: typeof import('element-plus')['ElBadge']
ElBreadcrumb: typeof import('element-plus')['ElBreadcrumb']
diff --git a/packages/components/anchor/src/anchor.ts b/packages/components/anchor/src/anchor.ts
index fba9540e25a8d..eb4900086798a 100644
--- a/packages/components/anchor/src/anchor.ts
+++ b/packages/components/anchor/src/anchor.ts
@@ -50,8 +50,8 @@ export const anchorProps = buildProps({
* @description Set Anchor type
*/
type: {
- type: definePropType<'defalut' | 'underline'>(String),
- default: 'defalut',
+ type: definePropType<'default' | 'underline'>(String),
+ default: 'default',
},
/**
* @description Set Anchor direction
diff --git a/packages/components/breadcrumb/src/breadcrumb.vue b/packages/components/breadcrumb/src/breadcrumb.vue
index e49b505c57df4..ce4e0ec6fc198 100644
--- a/packages/components/breadcrumb/src/breadcrumb.vue
+++ b/packages/components/breadcrumb/src/breadcrumb.vue
@@ -2,7 +2,7 @@
@@ -11,7 +11,7 @@