Skip to content

feat(components): [select/select-v2] add end-reached event#23806

Merged
btea merged 22 commits into
element-plus:devfrom
ALypovskyi:feat/select-end-reached-emit
Apr 17, 2026
Merged

feat(components): [select/select-v2] add end-reached event#23806
btea merged 22 commits into
element-plus:devfrom
ALypovskyi:feat/select-end-reached-emit

Conversation

@ALypovskyi
Copy link
Copy Markdown
Contributor

@ALypovskyi ALypovskyi commented Mar 14, 2026

Please make sure these boxes are checked before submitting your PR, thank you!

  • Make sure you follow contributing guide English | (中文 | Español | Français).
  • Make sure you are merging your commits to dev branch.
  • Add some descriptions and refer to relative issues for your PR.

Description

This PR forwards the internal dropdown scrollbar end-reached event from el-select.

Select already exposes popup-scroll, but it did not expose the scrollbar boundary event. With this change, consumers can listen for:

<el-select @end-reached="handleEndReached" />

and receive the same direction payload as Scrollbar:

'top' | 'bottom' | 'left' | 'right'

This is useful for infinite loading when Select options are fetched from a paginated API

Summary by CodeRabbit

  • New Features

    • Added an end-reached event (direction: 'top' | 'bottom' | 'left' | 'right') to Select, Select V2, and virtual-list to signal when scrolling reaches an edge.
  • Documentation

    • Updated Select and Select V2 docs to document the new end-reached event.
  • Tests

    • Added tests verifying end-reached firing across dropdown, wheel, native scroll, and scrollbar track interactions.

@pull-request-triage
Copy link
Copy Markdown

👋 @ALypovskyi, seems like this is your first time contribution to element-plus.
Please make sure that you have read our guidelines and code of conduct before making a contribution.

@pull-request-triage pull-request-triage Bot added 1st contribution Their very first contribution Needs Review labels Mar 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 14, 2026

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 14, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new public end-reached event ('top'|'bottom'|'left'|'right') across virtual-list and select (v1 and v2) components; wires emission from scrollbar → list → select, exposes handlers in useSelect hooks, updates docs, and adds tests covering multiple edge-scroll scenarios.

Changes

Cohort / File(s) Summary
Documentation
docs/en-US/component/select.md, docs/en-US/component/select-v2.md
Appended end-reached event rows to Select and Select-V2 API Events tables with signature (direction: 'top' | 'bottom' | 'left' | 'right') => void.
Select (v1)
packages/components/select/src/select.vue, packages/components/select/src/select.ts, packages/components/select/src/useSelect.ts, packages/components/select/__tests__/select.test.ts
Declared end-reached in component emits and selectEmits; added endReached(direction) in useSelect and exposed it; added unit test simulating dropdown scroll asserting 'bottom' emission.
Select-V2
packages/components/select-v2/src/select.vue, packages/components/select-v2/src/select-dropdown.tsx, packages/components/select-v2/src/defaults.ts, packages/components/select-v2/src/useSelect.ts, packages/components/select-v2/__tests__/select.test.ts
Added end-reached to selectV2Emits/defaults and component emits; wired event forwarding from dropdown/list via setup emit; exposed onEndReached in useSelect; added tests asserting emission on bottom reach.
Virtual List Core
packages/components/virtual-list/src/defaults.ts, packages/components/virtual-list/src/types.ts, packages/components/virtual-list/src/builders/build-list.ts
Introduced END_REACHED_EVT ('end-reached') and ScrollDirection type; added edge-aware state, normalized maxOffset logic, centralized updateScrollOffset that emits end-reached when edges are crossed; updated emits and edge tracking.
Virtual List Tests
packages/components/virtual-list/__tests__/dynamic-size-list.test.ts, packages/components/virtual-list/__tests__/fixed-size-list.test.ts
Added multiple tests covering end-reached emission for wheel/native/track interactions, RTL horizontal cases, and re-firing when list total increases; added test utilities imports (makeScroll, rAF).

Sequence Diagram(s)

sequenceDiagram
  participant Scrollbar
  participant List
  participant Select
  participant Consumer

  rect rgba(200,230,255,0.5)
  Scrollbar->>List: detect scroll / detect edge
  end
  rect rgba(200,255,200,0.5)
  List->>List: emit END_REACHED_EVT(direction)
  end
  rect rgba(255,230,200,0.5)
  List->>Select: forward 'end-reached'(direction)
  Select->>Consumer: component emits 'end-reached'(direction)
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • btea
  • rzzf
  • Dsaquel

Poem

🐰 I hopped along the scrollbar's seam,

I nudged the edge and met a beam,
"Top or bottom, left or right," I cheer,
A tiny ping that users hear,
Hooray — the end is near, hooray, a gleam!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The PR description is complete and follows the template requirements with all checkboxes marked and a clear feature description.
Title check ✅ Passed The title clearly and accurately summarizes the main change: adding an end-reached event to select and select-v2 components. It is concise, specific, and directly reflects the changeset's primary objective.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
docs/en-US/component/select.md (1)

321-321: Consider adding a version marker to end-reached in the events table.

For consistency with other newly introduced API rows, adding an upcoming release marker (for example ^(x.y.z)) improves feature discoverability.

Based on learnings: Documentation version markers in Markdown files under the docs directory may be updated during release preparation, even if the target version has not yet been released.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/en-US/component/select.md` at line 321, The events table row for the
'end-reached' event is missing the release/version marker used elsewhere; update
the table entry for the 'end-reached' event (the row with the signature
^[Function]`(direction: 'top' | 'bottom' | 'left' | 'right') => void`) to
include the upcoming-release marker in the same format as other new API rows
(e.g., add `^(x.y.z)` next to the event name) so it matches the existing
versioning convention for newly introduced features.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/components/select/__tests__/select.test.ts`:
- Line 4488: The forEach callback currently uses an expression body that returns
a value (cleanup.forEach((fn) => fn())), which trips the Biome lint rule; change
it to a non-returning block-style callback or a simple loop so no value is
returned—e.g. replace cleanup.forEach((fn) => fn()) with cleanup.forEach((fn) =>
{ fn(); }) or with for (const fn of cleanup) { fn(); } to eliminate the returned
value from the callback.

---

Nitpick comments:
In `@docs/en-US/component/select.md`:
- Line 321: The events table row for the 'end-reached' event is missing the
release/version marker used elsewhere; update the table entry for the
'end-reached' event (the row with the signature ^[Function]`(direction: 'top' |
'bottom' | 'left' | 'right') => void`) to include the upcoming-release marker in
the same format as other new API rows (e.g., add `^(x.y.z)` next to the event
name) so it matches the existing versioning convention for newly introduced
features.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 815626f1-4937-4f8c-9026-95d5c33d4f5c

📥 Commits

Reviewing files that changed from the base of the PR and between 0478f5f and 3679ab2.

📒 Files selected for processing (5)
  • docs/en-US/component/select.md
  • packages/components/select/__tests__/select.test.ts
  • packages/components/select/src/select.ts
  • packages/components/select/src/select.vue
  • packages/components/select/src/useSelect.ts

Comment thread packages/components/select/__tests__/select.test.ts Outdated
@btea btea changed the title feat(components): [select] Add end-reached event forwarding feat(components): [select] add end-reached event forwarding Mar 15, 2026
Comment thread docs/en-US/component/select.md Outdated
@ALypovskyi ALypovskyi force-pushed the feat/select-end-reached-emit branch from 1ff8b6a to 78b8adc Compare March 15, 2026 13:48
@ALypovskyi ALypovskyi changed the title feat(components): [select] add end-reached event forwarding feat(components): [select, select-v2] add end-reached event forwarding Mar 15, 2026
@ALypovskyi ALypovskyi requested a review from btea March 15, 2026 13:49
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
packages/components/select-v2/src/defaults.ts (1)

379-379: Align end-reached validator with scrollbar contract in SelectV2.

Line 379 uses !!direction, accepting any truthy value. SelectV2's select-dropdown.tsx already correctly uses scrollbarEmits['end-reached'], which validates against ['left', 'right', 'top', 'bottom']. Reusing the shared validator maintains consistency across the component and ensures runtime validation matches the actual event contract.

♻️ Proposed fix
+import { scrollbarEmits } from '@element-plus/components/scrollbar'
 import type { EmitFn } from '@element-plus/utils/vue/typescript'
 import type { ScrollbarDirection } from '@element-plus/components/scrollbar'
@@
-  'end-reached': (direction: ScrollbarDirection) => !!direction,
+  'end-reached': scrollbarEmits['end-reached'],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/components/select-v2/src/defaults.ts` at line 379, The 'end-reached'
validator in defaults.ts currently uses a loose !!direction check; replace it to
reuse the scrollbar contract validator used elsewhere so it only accepts
'left'|'right'|'top'|'bottom'. Locate the 'end-reached' entry in the defaults.ts
exports and change its validator to reference the same validator used by
select-dropdown.tsx (scrollbarEmits['end-reached'] or the shared validator
function/constant) so runtime validation matches the scrollbar contract.
packages/components/virtual-list/src/builders/build-list.ts (1)

247-274: Keep states.scrollOffset clamped to maxOffset in one place.

updateScrollOffset currently only applies a lower bound (>= 0). Normalizing before writing state keeps scroll state invariant and avoids transient out-of-range values.

♻️ Proposed refinement
       const updateScrollOffset = (
         offset: number,
         {
           isScrolling,
           updateRequested,
         }: {
           isScrolling: boolean
           updateRequested: boolean
         }
       ) => {
         const currentState = unref(states)
-        const nextOffset = Math.max(offset, 0)
+        const nextOffset = normalizeOffset(offset)

         if (nextOffset === currentState.scrollOffset) {
           return
         }

         const scrollDir = getScrollDir(currentState.scrollOffset, nextOffset)

         states.value = {
           ...currentState,
           isScrolling,
           scrollDir,
           scrollOffset: nextOffset,
           updateRequested,
         }
-        emitEndReached(scrollDir, normalizeOffset(nextOffset))
+        emitEndReached(scrollDir, nextOffset)

         nextTick(resetIsScrolling)
       }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/components/virtual-list/src/builders/build-list.ts` around lines 247
- 274, The updateScrollOffset function writes an unclamped nextOffset into
states.value causing transient out-of-range scrollOffset; ensure you
clamp/normalize before setting state by computing normalizedOffset =
normalizeOffset(Math.max(offset, 0)) (or use existing maxOffset logic) and use
normalizedOffset for all comparisons and for scrollOffset in the states.value
assignment, and update the call to emitEndReached to pass
normalizeOffset(normalizedOffset) or the already-normalized value so
states.scrollOffset is always kept within bounds in one place; reference
updateScrollOffset, states, normalizeOffset, and emitEndReached when making the
change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/components/virtual-list/src/builders/build-list.ts`:
- Around line 233-241: The horizontal end-reached emission currently hardcodes
'right' for forward and 'left' for backward which is reversed in RTL; update the
emit calls to respect RTL by using _isHorizontal.value ? (_isRTL.value ? 'left'
: 'right') : 'bottom' (or analogously for start: _isHorizontal.value ?
(_isRTL.value ? 'right' : 'left') : 'top') when emitting END_REACHED_EVT so
forward/backward map correctly in RTL, apply the same change to the other
similar block (the section around lines 305-317), and add a regression test in
the virtual-list tests asserting the END_REACHED_EVT payload for horizontal RTL:
forward should emit 'left' and backward should emit 'right'.

In `@packages/components/virtual-list/src/types.ts`:
- Around line 226-227: GridExposes.states currently types xAxisScrollDir and
yAxisScrollDir as Direction while GridStates defines them as ScrollDirection;
update the GridExposes.states type so both xAxisScrollDir and yAxisScrollDir use
the ScrollDirection type (replace/align the existing Direction annotation) to
ensure the public API matches GridStates; look for the GridExposes.states
declaration and the GridStates.xAxisScrollDir / GridStates.yAxisScrollDir
symbols to make the change and run type checks.

---

Nitpick comments:
In `@packages/components/select-v2/src/defaults.ts`:
- Line 379: The 'end-reached' validator in defaults.ts currently uses a loose
!!direction check; replace it to reuse the scrollbar contract validator used
elsewhere so it only accepts 'left'|'right'|'top'|'bottom'. Locate the
'end-reached' entry in the defaults.ts exports and change its validator to
reference the same validator used by select-dropdown.tsx
(scrollbarEmits['end-reached'] or the shared validator function/constant) so
runtime validation matches the scrollbar contract.

In `@packages/components/virtual-list/src/builders/build-list.ts`:
- Around line 247-274: The updateScrollOffset function writes an unclamped
nextOffset into states.value causing transient out-of-range scrollOffset; ensure
you clamp/normalize before setting state by computing normalizedOffset =
normalizeOffset(Math.max(offset, 0)) (or use existing maxOffset logic) and use
normalizedOffset for all comparisons and for scrollOffset in the states.value
assignment, and update the call to emitEndReached to pass
normalizeOffset(normalizedOffset) or the already-normalized value so
states.scrollOffset is always kept within bounds in one place; reference
updateScrollOffset, states, normalizeOffset, and emitEndReached when making the
change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3a370f12-97a2-4e1a-a391-dabab1ea0a06

📥 Commits

Reviewing files that changed from the base of the PR and between 1ff8b6a and 78b8adc.

📒 Files selected for processing (16)
  • docs/en-US/component/select-v2.md
  • docs/en-US/component/select.md
  • packages/components/select-v2/__tests__/select.test.ts
  • packages/components/select-v2/src/defaults.ts
  • packages/components/select-v2/src/select-dropdown.tsx
  • packages/components/select-v2/src/select.vue
  • packages/components/select-v2/src/useSelect.ts
  • packages/components/select/__tests__/select.test.ts
  • packages/components/select/src/select.ts
  • packages/components/select/src/select.vue
  • packages/components/select/src/useSelect.ts
  • packages/components/virtual-list/__tests__/dynamic-size-list.test.ts
  • packages/components/virtual-list/__tests__/fixed-size-list.test.ts
  • packages/components/virtual-list/src/builders/build-list.ts
  • packages/components/virtual-list/src/defaults.ts
  • packages/components/virtual-list/src/types.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • packages/components/select/tests/select.test.ts
  • packages/components/select/src/select.ts

Comment thread packages/components/virtual-list/src/builders/build-list.ts Outdated
Comment thread packages/components/virtual-list/src/types.ts
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
packages/components/virtual-list/__tests__/fixed-size-list.test.ts (2)

184-205: Use a more specific scrollbar selector for stability.

The current .el-virtual-scrollbar target is broad. Narrowing the target and asserting existence will make this test less fragile.

Suggested selector refinement
-    const track = wrapper.find('.el-virtual-scrollbar').element
+    const track = wrapper.find('.el-virtual-scrollbar__bar.is-vertical')
+    expect(track.exists()).toBe(true)
     const event = new MouseEvent('mousedown', {
       bubbles: true,
       cancelable: true,
       clientY: 100,
     })
-    track.dispatchEvent(event)
+    track.element.dispatchEvent(event)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/components/virtual-list/__tests__/fixed-size-list.test.ts` around
lines 184 - 205, The test "should emit end-reached when clicking scrollbar track
to bottom" uses a broad selector '.el-virtual-scrollbar' which makes it fragile;
update the selector to a more specific scrollbar track element (e.g., the actual
track class used by the component such as '.el-virtual-scrollbar__track' or the
inner track element) when calling wrapper.find, assert the found element exists
(e.g., expect(found.exists()).toBe(true) or similar) before dispatching the
MouseEvent, and then dispatch the event on that specific track element and keep
the existing expectation that onEndReached was called with 'bottom'.

166-182: Tighten this assertion to catch duplicate emits.

Right now this passes even if end-reached fires multiple times with 'bottom'. Consider asserting call count here.

Suggested assertion hardening
     await makeScroll(windowRef, 'scrollTop', 2400)
     await nextTick()

+    expect(onEndReached).toHaveBeenCalledTimes(1)
     expect(onEndReached).toHaveBeenCalledWith('bottom')
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/components/virtual-list/__tests__/fixed-size-list.test.ts` around
lines 166 - 182, The test currently only checks that onEndReached was called
with 'bottom' but doesn't guard against duplicate emits; update the assertion in
the "should emit end-reached when native scrolling reaches bottom" test to also
assert the call count for the mock onEndReached (e.g.,
expect(onEndReached).toHaveBeenCalledTimes(1)) after the existing
expect(onEndReached).toHaveBeenCalledWith('bottom') so duplicate emits are
caught; locate the mock named onEndReached and the test body around
makeScroll/windowRef in fixed-size-list.test.ts to add this assertion.
packages/components/virtual-list/src/builders/build-list.ts (1)

259-261: Normalize offset in the centralized updater to enforce a single invariant.

At Line 260, nextOffset is only clamped at the lower bound. Using normalizeOffset(offset) here keeps states.scrollOffset bounded for all call paths (including exposed scrollTo) and avoids temporary out-of-range state.

♻️ Proposed tweak
-        const nextOffset = Math.max(offset, 0)
+        const nextOffset = normalizeOffset(offset)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/components/virtual-list/src/builders/build-list.ts` around lines 259
- 261, The centralized updater currently computes nextOffset with
Math.max(offset, 0) which only clamps the lower bound; update this to use
normalizeOffset(offset) so states.scrollOffset is always bounded for all call
paths (including scrollTo) and avoid transient out-of-range values; locate the
assignment to nextOffset in build-list.ts (near currentState = unref(states))
and replace the Math.max usage with normalizeOffset, ensuring normalizeOffset is
in scope/imported where used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/components/virtual-list/__tests__/fixed-size-list.test.ts`:
- Around line 184-205: The test "should emit end-reached when clicking scrollbar
track to bottom" uses a broad selector '.el-virtual-scrollbar' which makes it
fragile; update the selector to a more specific scrollbar track element (e.g.,
the actual track class used by the component such as
'.el-virtual-scrollbar__track' or the inner track element) when calling
wrapper.find, assert the found element exists (e.g.,
expect(found.exists()).toBe(true) or similar) before dispatching the MouseEvent,
and then dispatch the event on that specific track element and keep the existing
expectation that onEndReached was called with 'bottom'.
- Around line 166-182: The test currently only checks that onEndReached was
called with 'bottom' but doesn't guard against duplicate emits; update the
assertion in the "should emit end-reached when native scrolling reaches bottom"
test to also assert the call count for the mock onEndReached (e.g.,
expect(onEndReached).toHaveBeenCalledTimes(1)) after the existing
expect(onEndReached).toHaveBeenCalledWith('bottom') so duplicate emits are
caught; locate the mock named onEndReached and the test body around
makeScroll/windowRef in fixed-size-list.test.ts to add this assertion.

In `@packages/components/virtual-list/src/builders/build-list.ts`:
- Around line 259-261: The centralized updater currently computes nextOffset
with Math.max(offset, 0) which only clamps the lower bound; update this to use
normalizeOffset(offset) so states.scrollOffset is always bounded for all call
paths (including scrollTo) and avoid transient out-of-range values; locate the
assignment to nextOffset in build-list.ts (near currentState = unref(states))
and replace the Math.max usage with normalizeOffset, ensuring normalizeOffset is
in scope/imported where used.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 47032a3b-fa89-43b4-a2f4-1c3e93792e86

📥 Commits

Reviewing files that changed from the base of the PR and between 78b8adc and 4f5836e.

📒 Files selected for processing (3)
  • packages/components/virtual-list/__tests__/fixed-size-list.test.ts
  • packages/components/virtual-list/src/builders/build-list.ts
  • packages/components/virtual-list/src/types.ts

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/components/virtual-list/__tests__/fixed-size-list.test.ts`:
- Around line 186-208: The test is brittle because it dispatches a mousedown at
a hardcoded clientY without mocking DOM measurements; update the test to mock
the scrollbar element's getBoundingClientRect to return values that map clientY
to the bottom region, then trigger the mousedown and assert the actual scroll
offset changed to the expected maximum (use wrapper.vm.states.scrollOffset or
the component's maxOffset calculation) in addition to verifying
onEndReached('bottom'); reference the component handler clickTrackHandler and
ensure getBoundingClientRect is stubbed before dispatching the event so the
click reliably resolves to the bottom.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5b0c1d0a-c9b1-4e63-b2e3-7125830f293e

📥 Commits

Reviewing files that changed from the base of the PR and between 4f5836e and 3995f9b.

📒 Files selected for processing (2)
  • packages/components/virtual-list/__tests__/dynamic-size-list.test.ts
  • packages/components/virtual-list/__tests__/fixed-size-list.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/components/virtual-list/tests/dynamic-size-list.test.ts

Comment thread packages/components/virtual-list/__tests__/fixed-size-list.test.ts
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Mar 16, 2026

Open in StackBlitz

pnpm add https://pkg.pr.new/element-plus@23806
npm i https://pkg.pr.new/element-plus@23806
yarn add https://pkg.pr.new/[email protected]

commit: b9a5aca

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 16, 2026

🧪 Playground Preview: https://element-plus.run/?pr=23806
Please comment the example via this playground if needed.

@ALypovskyi ALypovskyi force-pushed the feat/select-end-reached-emit branch from 02f28fa to 7681860 Compare March 16, 2026 08:28
Comment thread packages/components/select-v2/src/defaults.ts Outdated
Comment thread packages/components/virtual-list/src/builders/build-list.ts Outdated
@ALypovskyi ALypovskyi force-pushed the feat/select-end-reached-emit branch from 7681860 to fc6de0e Compare March 17, 2026 08:32
@ALypovskyi ALypovskyi requested a review from micaiguai March 17, 2026 19:29
@micaiguai
Copy link
Copy Markdown
Contributor

LGTM👍. Waiting for reviewers more familiar with these components to review.

@ALypovskyi ALypovskyi force-pushed the feat/select-end-reached-emit branch 3 times, most recently from 9494f53 to a6f833c Compare March 22, 2026 09:26
Comment thread docs/en-US/component/select-v2.md Outdated
Comment thread docs/en-US/component/select.md Outdated
Comment thread packages/components/select-v2/src/select-dropdown.tsx
@ALypovskyi ALypovskyi force-pushed the feat/select-end-reached-emit branch from a6f833c to af26513 Compare March 28, 2026 08:26
@ALypovskyi ALypovskyi requested a review from btea April 1, 2026 16:52
Copy link
Copy Markdown
Member

@keeplearning66 keeplearning66 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@keeplearning66 keeplearning66 changed the title feat(components): [select, select-v2] add end-reached event forwarding feat(components): [select/select-v2] add end-reached event Apr 17, 2026
@btea btea merged commit a691bac into element-plus:dev Apr 17, 2026
17 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

@ALypovskyi Thanks for your contribution! ❤️

ZacharyBear pushed a commit to ZacharyBear/element-plus that referenced this pull request Apr 22, 2026
…-plus#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>
@element-bot element-bot mentioned this pull request May 8, 2026
3 tasks
btea added a commit that referenced this pull request May 8, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 18, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
github-actions Bot added a commit that referenced this pull request May 19, 2026
* fix(deps): update dependency @docsearch/css to v4 (#24000)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @docsearch/js to v4 (#24001)

* fix(deps): update dependency @docsearch/js to v4

* fix: update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm/action-setup action to v6 (#24027)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-router to v5 (#24028)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat(components): [date-picker] add `singlePanel` for range-picker (#19498)

* feat: add single panel for range picker

feat: enable single panel for all ranges

test: date-picker single panel

chore: add single-panel doc

chore: refine scss declaration

chore: typo & bump version

chore: fix lint

ci: test

* chore: update

* chore: tweak

* chore: format

* chore: update demo

---------

Co-authored-by: btea <[email protected]>

* docs(components): [datetime-picker] update `show-week-number` type (#24029)

docs: update `show-week-number` type

* fix(deps): update dependency typescript to v6 (#24026)

* fix(deps): update dependency typescript to v6

* fix: bump

* fix: update lock

* fix: rm

* fix: up

* fix: rm

* fix: up

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(components): remove console noises from failed form validation (#23663)

* refactor(components): remove console noises from failed form validation

* chore: update

---------

Co-authored-by: btea <[email protected]>

* refactor(components): [select/v2] remove the unnecessary `computed` (#24058)

refactor(components): [select/v2] replace computed with 3 expression

* fix(components): [message] missing content wrapper in VNode message (#23352)

fix(components): [message] Fix body style for vNode message

closed #23351

Co-authored-by: Roman Karavia <[email protected]>

* feat(components): [input-number] add `tabindex` prop (#23582)

* feat(components): [tree/tree-v2/tree-select] setChecked supports deep check (#23591)

* feat(components): [tree, tree-v2, tree-select] add ignoreCheckStrictly

Add a new parameter `ignoreCheckStrictly` to the `setChecked` method, which allows
recursively setting the checked state of child nodes even when `check-strictly` is enabled.

Closes #23511

* fix: setChecked

* fix: [tree] don't check parent node on checkStrictly

* test: stricter assertions

* docs: update description

* docs: sync

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: rzzf <[email protected]>

* feat(components): [input-otp] new component (#23634)

* feat(components): [input-otp] new component

* chore: cleanup

* feat: add ariaLabel a18n

* fix: paste numbers

* style: apply coderabbit suggest

* chore: fix typo

* style: fix empty size style

* fix: add length clamp

* fix: delete

* fix: update

* fix: change event

* fix: udpate

* test: update

* style: remove unsed var

* fix: delete index

* fix: deleted focus current input

* style: add error status

* fix: should update when length changes

* Update packages/components/input-otp/src/input-otp.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: validate change

* refactor: update input event payload

* refactor: using validate replace type

* docs: update

* docs: add overview icon

* docs: update icon

* fix: handleFocus is stuck in an infinite loop

* feat: add focus and blur event

* refactor: rename variant to type

* feat: expose inputRefs

* fix: input event paramater

* docs: update expose

* refactor: update events logic

* refactor: remove attrs

* fix: update

* fix: readonly

* refactor: rename validate to validator

* Update packages/locale/lang/zh-cn.ts

Co-authored-by: btea <[email protected]>

* chore: update locale

* feat: add separator prop and slot

* docs: fix typo

* feat: add `mask` prop

* fix: avoid rendering empty placeholders caused by empty slots or empty strings

* test: fix case

* docs: fix typo

* fix: unblock input when focus stays unchanged after delete

* refactor: apply suggestions

Co-authored-by: keeplearning66 <[email protected]>

* feat: support autofill and focus / blur methods

* chore: cleanup

* refactor: optimize code

* refactor: remove the length limitation and refactor inputRefs

* Update docs/examples/input-otp/sizes.vue

Co-authored-by: micaiguai <[email protected]>

* chore: revert useTemplateRef

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: btea <[email protected]>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>

* fix(style): [form-item] remove trailing inline margin (#23671)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity (#24064)

* fix(components): [virtual-list] `scrollbar-always-on` loses reactivity

* refactor: remove unused scrollbarAlwaysOn

* refactor: apply codex suggest

* revert: select-v2

* ci: upgrade minor action (#24034)

Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite to v8 (#24039)

* chore(deps): update dependency vite to v8

* fix: type error

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dependency vite-plugin-inspect to v11 (#24014)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14 (#23930)

* chore(deps): update dependency @vueuse/core to v14

* fix: type

* fix: type

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* refactor(types): import MaybeRef from vue instead of @vueuse/core (#24068)

chore: import `MayberRef` from vue

* chore(deps): update dependency unplugin-vue-components to v32 (#24038)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): revert update dependency vite-plugin-inspect to v11 (#24069)

Revert "chore(deps): update dependency vite-plugin-inspect to v11 (#24014)"

This reverts commit 957176d.

* chore: update the value of `moduleResolution` to `bundler` (#24070)

* chore(play): replace `esbuild` with `oxc` (#24071)

* fix(components): [input] prevent layout shift when toggling clear icon (#23661)

* fix(components): [input] prevent layout shift when toggling clear icon

* chore: deplace clear icon

* refactor(element-plus): remove `el-teleport` (#23219)

* fix(components): affix

change v-if to disabled prop

* refactor(components): [teleport] remove

* chore(element-plus): update peerDependencies vue version

* chore(element-plus): update pnpm-lock.yaml

* refactor(components): [teleport] remove

* feat(components): [input-number] add formatter and parser props (#23271)

* feat(components): [input-number] add `formatter` and `parser` props

* refactor: update

* Update docs/en-US/component/input-number.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: update

* docs: update version tag

* docs: apply coderabbit suggest

* docs: sync jsdoc

* docs: add desc

* docs: update

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: disable the leave transition of the version tag to prevent layout shifting (#24077)

* feat(components): [select/select-v2] add `end-reached` event (#23806)

* feat(components): [select] Add end-reached event forwarding

Forward the scrollbar end-reached event from Select so consumers
can react when the dropdown reaches a scroll boundary.

- Add the Select end-reached emit and wire it to the dropdown
  scrollbar
- Cover the new event with a Select unit test
- Document the event in the Select events table

* test(components): [select] Fix cleanup callbacks for lint compliance

* docs(components): [select] Add missing version tag

* feat(components): [select-v2] Implenent end-reached event support

Forward the virtual list end-reached event from SelectV2 so consumers can react when the dropdown
reaches a scroll boundary.

* fix(components): [virtual-list] correct rtl end-reached direction

Fix horizontal end-reached payloads in RTL mode so boundary events match the visual scroll
direction.

* refactor(types): [virtual-list] use scroll dir types

* test(components): [virtual-list] improve end-reached coverage

* test(components): [virtual-list] harden scrollbar track click test

Stub getBoundingClientRect on the track element so clickTrackHandler resolves the click position
from known values instead of relying on jsdom's default zeros. Derive clientY from the mocked rect
and assert the resulting scrollOffset equals maxOffset (2400).

* refactor(components): [select-v2] Reuse shared emit and scroll types

* docs(components): [select/v2] bump end-reached version badge to 2.13.7

* refactor(types): [select-v2] simplify virtual-list state typing

Explicitly type `scrollDir` so the rest of the list state can be inferred without the extra
`ListState` type

* fix(components): [virtual-list] precision tolerance in edge detection

Use the shared numeric tolerance helper when checking list edges so small browser precision
differences do not prevent start/end detection

* fix(components): [virtual-list] apply edge tolerance to wheel guards

Reuse the normalized edge-state check for `useWheel` start/end guards so offsets within the accepted
precision range are treated as already at the boundary

* fix(components): [virtual-list] prevent duplicate end-reached

Browsers round scrollTop to sub-pixel boundaries (e.g. 0.5px at DPR=2, 0.8px at DPR=1.25). When
onUpdated sets scrollTop programmatically, the browser may clamp it below our computed maxOffset.
The resulting native scroll event resets both edgeState and the useWheel guard, allowing the next
wheel event to emit end-reached a second time. Increase EDGE_TOLERANCE from the default 0.03 to 1 so
getEdgeState absorbs the rounding gap on all common device-pixel-ratios.

* Update docs/en-US/component/select-v2.md

Co-authored-by: btea <[email protected]>

* docs(components): [select] bump end-reached version badge to 2.14.0

* refactor(components): [virtual-list] use clamp for offset normalization

* refactor(components): [virtual-list] reuse computed edge state

* refactor(components): [virtual-list] convert edgeState to plain variable

---------

Co-authored-by: thinkasany <[email protected]>
Co-authored-by: btea <[email protected]>

* refactor(components): [menu-item] set index attribute to required (#20453)

* refactor(components): [menu] remove `ts-nocheck` and optimize code

* fix: ci

* fix: index is required

* revert: revert css

* fix: ci

* chore: revert

* chore:  remove unnecessary line in resize callback logic

* fix(components): type error

* chore: cleanup

* fix: enhance menu-item prop validation

* refactor(components): remove unused prop validation for 'index'

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency unplugin-icons to v23 (#24035)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] avoid border flicker while resizing (#24078)

* fix(components): [input] avoid border flicker while resizing

* fix: update

* fix: update

* fix: update

* chore: format

* fix: resolve #21836

* fix: resolve autosize

* fix: update

* improvement(components): [select] improve emits type (#24074)

* improvement(components): [select] improve emits type

* chore: update

* fix(components): [segmented] incorrect bg position after update options (#24101)

* fix(components): [segmented] incorrect bg position after update options

* fix: update

* test(components): [segmented] improve test case stability (#24110)

* feat(components): [autocomplete] add `popper-options` and `show-arrow` props (#24109)

* docs: keep breakpoints consistent (#24060)

* refactor(components): [cascader] replace `defineSlots` with `useSlots` (#24114)

* fix(dts): some type declarations in tree-v2 are missing (#24116)

fix: some type declarations in tree-v2 are missing

* feat(components): [cascader] support `virtual-scroll` & `fitInputWidth` & `height` & `item-size` (#23877)

* feat(components): [cascader-panel] support virtual scroll

* refactor: fix nitpick

* fix: suggestion-item slot width & add test

* refactor: extraction function

* refactor: fix empty style

* feat: add `fitInputWidth` prop

* fix: Nitpick

* fix: style issue & kebab-case

* fix: calc width & style issue

* fix: undo class

* refactor: simpify code

* fix: skip disabled nodes in virtual nav & add test

* refactor: adjust code

* refactor: adjust code

* Update docs/en-US/component/cascader.md

Co-authored-by: btea <[email protected]>

* Update cascader.md

* refactor: getActiveNodeIndex

* refactor: getSuggestionPanelEl

* refactor: handleSuggestionKeyDown

* chore: improve the template structure to preserve Git history

* refactor: cleanup

---------

Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: btea <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] prevent stale height callbacks (#24118)

* feat(components): [message-box] pass action-handlers to vnode (#23901)

Co-authored-by: rzzf <[email protected]>

* chore(deps): separate Renovate patch grouping by dependency (#24119)

* chore(deps): separate Renovate patch grouping by dependency

* Update .github/renovate.json5

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: btea <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(deps): update pnpm to v10.33.2 (#24122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update commitlint monorepo (#24123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript to ~6.0.3 (#24125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency globals to ^17.5.0 (#24133)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency components-helper to ^2.2.0 (#24127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency @types/lodash to ^4.17.24 (#24126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency eslint-plugin-prettier to ^5.5.5 (#24124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency prettier to ^3.8.3 (#24129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(deps): update dependency typescript-eslint to ^8.59.0 (#24130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [select] correctly display selected labels after `options` change (#24036)

* fix(components): [select] preserve selected label on remote search

* test(components): [select] preserve selected label on remote search

* fix(components): [select] use latest object label in getOption

* fix(components): [select] rebuild fallback option in getOption

* test(components): [select] fix remote label regression coverage

* Merge branch 'dev' into fix/select-remote-search-label

* chore(deps): update dependency puppeteer to ^24.42.0 (#24135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.7 (#24137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies (#24136)

* chore(deps): update all patch devdependencies

* chore(deps): update all patch devdependencies

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: update renovate.json5 to renovate.json (#24134)

* chore: update renovate.json5 to renovate.json

* fix: update

* fix(deps): update dependency markdown-it to ^14.1.1 (#24138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency tinyglobby to ^0.2.16 (#24139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0 (#24128)

* fix(deps): update dependency eslint-plugin-vue to ^10.9.0

* chore: add vue-eslint-parser dep

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: rzzf <[email protected]>

* fix(components): [table] parent-child selection mismatch in tree data (#23596)

* fix(components): [table] parent-child selection mismatch in tree data

* test: add test

* docs: add one more children to check indeterminate

* fix: add watch checkStrictly change

* fix: simpify code

* feat: add lazy support

* test: add lazy tree selection linkage test case

* perf: fix some potential issues

* chore: refactor implementation & tests

* chore: handle lazy selections on expand lazy row

* refactor: remove duplicated code

* refactor: simpify

* refactor: logic

* refactor: code

* fix: remove lazy children from selection when parent deleted

* perf: optimize tree selection cascade and cache rowIndexMap

* use spread operator

---------

Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: btea <[email protected]>

* chore(deps): update vitest to ^4.1.5 (#24142)

* chore: update ts configuration (#24141)

* chore(deps): update dependency @crowdin/cli to ^4.14.2 (#24143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency happy-dom to ^20.9.0 (#24144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore: restore Vitest update rules (#24145)

* chore: renovate use semanticCommitTypeAll(chore) (#24146)

* chore(deps): update dependency dayjs to ^1.11.20 (#24149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency sass-embedded to ^1.99.0 (#24150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update lodash monorepo to ^4.18.1 (#24151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [input] incorrect positioning of icon and count when resizing `textarea` (#24115)

* fix(components): [textarea] incorrect positioning of icon and count during resizing

* fix: update

* fix: use rAF

* fix: update

* fix: count pos incorrect

* fix: apply cr review

* revert: input.scss

* fix: update

* refactor: remove `isFirstObserve`

* chore: renovate rebase when conflicted (#24153)

* chore(deps): disable update dependencies (#24156)

* chore(deps): disable update dependencies

* chore: apply review

* chore(deps): `@floating-ui/dom` use catalog protocol (#24162)

* chore(deps): `@popperjs/core` use catalog ptotocol (#24163)

* chore(deps): `@popperjs/core` use catalog ptotocol

* chore: format

---------

Co-authored-by: rzzf <[email protected]>

* chore(deps): update dependency cz-git to ^1.13.0 (#24168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency czg to ^1.13.0 (#24169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* improvement(utils): add generics component support to setPropsDefaults (#24161)

* improvement(utils): add generics component support to setPropsDefaults

* chore: update lockfile

* refactor: improve type

* feat(components): style properties support Boolean values (#24165)

* feat(components): style properties support Boolean values

fix #24102

* chore: apply cr review

* chore: apply cr review

* Update packages/components/input/src/input.ts

* Update packages/components/popper/src/content.ts

* Update packages/components/table/src/table/defaults.ts

* fix(components): [dialog] incorrect boundary when resizing the window (#24172)

* fix(components): [dialog] incorrect boundary when resizing the window

fix #24166

* fix: update

* improvement(utils): object properties types (#24173)

* improvement(utils): object properties types

* chore: update

* chore: add comment

* chore(deps): update dependency lightningcss to ^1.32.0 (#24159)

* chore(deps): update dependency lightningcss to ^1.32.0

* ci: rerun

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update dawidd6/action-download-artifact action to v21 (#24176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vueuse/core to v14.3.0 (#24186)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency eslint to ^10.3.0 (#24187)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update all patch devdependencies to ^20.5.3 (#24185)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* chore(deps): update pnpm to v10.33.3 (#24192)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vue-component-type-helpers to ^3.2.8 (#24191)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>

* fix(components): [splitter] expand panel with initial zero size (#24200)

* fix(components): [splitter] expand panel with initial zero size

* fix: apply cr suggests

* fix(build): generate correct DTS for all non-entry files (#24179)

* chore: Update changelog 2.14.0 (#24204)

chore: update changelog 2.14.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: thinkasany <[email protected]>
Co-authored-by: Noblet Ouways <[email protected]>
Co-authored-by: Mason <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: Roman Karavia <[email protected]>
Co-authored-by: rzzf <[email protected]>
Co-authored-by: leihaohao <[email protected]>
Co-authored-by: Dsaquel <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: keeplearning66 <[email protected]>
Co-authored-by: micaiguai <[email protected]>
Co-authored-by: Artem Lypovyi <[email protected]>
Co-authored-by: jiaxiang <[email protected]>
Co-authored-by: 知晓同丶 <[email protected]>
Co-authored-by: zhixiaotong <[email protected]>
Co-authored-by: xingyixiang <[email protected]>
Co-authored-by: lostElk <[email protected]>
Co-authored-by: Element <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants