Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(kit): improve caret management for InputNumber on step action #10405

Merged
merged 1 commit into from
Feb 20, 2025

Conversation

nsbarsukov
Copy link
Member

Previous behavior

Case 1. Unstable caret position

turbulent-caret.mov

Case 2. Caret is always placed to the end on step button / keyboard arrow

caret-shift.mov

@nsbarsukov nsbarsukov self-assigned this Feb 18, 2025
@nsbarsukov nsbarsukov requested a review from a team as a code owner February 18, 2025 12:43
@nsbarsukov nsbarsukov requested review from MarsiBarsi, waterplea, vladimirpotekhin and mdlufy and removed request for a team February 18, 2025 12:43
Copy link

lumberjack-bot bot commented Feb 18, 2025

Pull request was closed ✔️

All saved screenshots (for current PR) were deleted 🗑️

Copy link
Contributor

Visit the preview URL for this PR (updated for commit 14c5dfb):

https://taiga-previews-demo--pr10405-input-number-caret-on-ste-91vzioyh.web.app

(expires Wed, 19 Feb 2025 12:47:54 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 73dddc3c665194f3e11f18c16aeb71af4c289c37

Copy link

codecov bot commented Feb 18, 2025

Codecov Report

Attention: Patch coverage is 0% with 11 lines in your changes missing coverage. Please review.

Project coverage is 66.00%. Comparing base (03c47b3) to head (14c5dfb).
Report is 5 commits behind head on main.

Files with missing lines Patch % Lines
.../components/input-number/input-number.component.ts 0.00% 5 Missing and 1 partial ⚠️
projects/cdk/utils/dom/value-binding.ts 0.00% 5 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #10405      +/-   ##
==========================================
- Coverage   66.04%   66.00%   -0.04%     
==========================================
  Files        1248     1248              
  Lines       16351    16360       +9     
  Branches     2336     2378      +42     
==========================================
  Hits        10799    10799              
+ Misses       5393     5294      -99     
- Partials      159      267     +108     
Flag Coverage Δ
summary 66.00% <0.00%> (-0.04%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

bundlemon bot commented Feb 18, 2025

BundleMon

Files updated (1)
Status Path Size Limits
demo/browser/main.(hash).js
310.5KB (+81B +0.03%) +10%
Unchanged files (4)
Status Path Size Limits
demo/browser/vendor.(hash).js
260.29KB +10%
demo/browser/runtime.(hash).js
47.03KB +10%
demo/browser/styles.(hash).css
21KB +10%
demo/browser/polyfills.(hash).js
11.18KB +10%

Total files change +81B +0.01%

Groups updated (1)
Status Path Size Limits
demo/browser/*..js
8.01MB (+81B 0%) -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copy link
Contributor

Playwright test results

failed  6 failed
passed  2087 passed
flaky  2 flaky
skipped  83 skipped

Details

report  Open report ↗︎
stats  2178 tests across 73 suites
duration  45 minutes, 35 seconds
commit  14c5dfb

Failed tests

chromium › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Keeps caret position on step › via button
chromium › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Keeps caret position on step › via keyboard arrow
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Keeps caret position on step › via button
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Keeps caret position on step › via keyboard arrow
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Empty unfocused textfield => Click + => Textfield is focused & Caret is placed before postfix
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [step] prop › caret position on step action › Focused textfield with postfix only => Press ArrowDown => Caret is placed before postfix

Flaky tests

chromium › tests/core/textarea/textarea.pw.spec.ts › Textarea › line break text
webkit › tests/kit/tabs/tabs.pw.spec.ts › Tabs › API › clamp active activeItemIndex=-1

Skipped tests

webkit › tests/addon-commerce/input-card-group.pw.spec.ts › InputCardGroup › Examples › input card grouped with validation
webkit › tests/addon-commerce/input-card-group.pw.spec.ts › InputCardGroup › Examples › input card grouped with saved cards
webkit › tests/addon-commerce/input-card-group.pw.spec.ts › InputCardGroup › Examples › expired field should be clickable after reset of prefilled value
webkit › tests/addon-doc/navigation.pw.spec.ts › Navigation › anchor links navigation works › scroll to "tui-doc-example"
webkit › tests/addon-doc/navigation.pw.spec.ts › Navigation › anchor links navigation works › scroll to "tui-doc-code"
webkit › tests/addon-doc/navigation.pw.spec.ts › Navigation › anchor links navigation works › scroll after click on link with anchor
webkit › tests/addon-doc/navigation.pw.spec.ts › Navigation › getting started / [light mode]
webkit › tests/addon-doc/navigation.pw.spec.ts › Navigation › getting started / [dark mode]
webkit › tests/core/data-list/data-list.pw.spec.ts › DataList › Submenu
webkit › tests/core/data-list/data-list.pw.spec.ts › DataList › Form control
webkit › tests/core/data-list/data-list.pw.spec.ts › DataList › Complex
webkit › tests/core/data-list/data-list.pw.spec.ts › DataList › Options with long text
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Dialog with confirmation works › Prompt
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Dialog with confirmation works › Pristine form does not show confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Dialog with confirmation works › Dirty form shows confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Dialog with confirmation works › Form is reset to pristine
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › A dialog and a nested dialog are open correctly
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Mobile dialog works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Dialog with directive works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Show simple
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 320x480 › Show simple + custom button
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Dialog with confirmation works › Prompt
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Dialog with confirmation works › Pristine form does not show confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Dialog with confirmation works › Dirty form shows confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Dialog with confirmation works › Form is reset to pristine
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › A dialog and a nested dialog are open correctly
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Mobile dialog works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Dialog with directive works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Show simple
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 720x900 › Show simple + custom button
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Dialog with confirmation works › Prompt
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Dialog with confirmation works › Pristine form does not show confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Dialog with confirmation works › Dirty form shows confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Dialog with confirmation works › Form is reset to pristine
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › A dialog and a nested dialog are open correctly
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Mobile dialog works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Dialog with directive works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Show simple
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1024x900 › Show simple + custom button
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Dialog with confirmation works › Prompt
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Dialog with confirmation works › Pristine form does not show confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Dialog with confirmation works › Dirty form shows confirmation
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Dialog with confirmation works › Form is reset to pristine
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › A dialog and a nested dialog are open correctly
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Mobile dialog works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Dialog with directive works
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Show simple
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › 1620x1024 › Show simple + custom button
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › Prompt - 320x480
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › Prompt - 720x900
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › Prompt - 1024x900
webkit › tests/core/dialogs/dialogs.pw.spec.ts › Dialogs › Prompt - 1620x1024
webkit › tests/core/surface/surface.pw.spec.ts › Surface › Layers
webkit › tests/kit/carousel/carousel.pw.spec.ts › Carousel › should show next item after drag
webkit › tests/kit/dropdown-hover/dropdown-hover.pw.spec.ts › DropdownHover › Examples › With DropdownMobile › Closes dropdown on click on overlay
webkit › tests/kit/dropdown-hover/dropdown-hover.pw.spec.ts › DropdownHover › Examples › With DropdownMobile › Opens mobile version of dropdown on the 2nd time click
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [prefix] & [postfix] props › [prefix]="$" & [postfix]="" › textfield does not contain any digit (only suffixes) => clear inputNumber.textfield value on blur
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [prefix] & [postfix] props › [prefix]="" & [postfix]="kg" › textfield does not contain any digit (only suffixes) => clear inputNumber.textfield value on blur
webkit › tests/kit/input-number/input-number.pw.spec.ts › InputNumber › API › [prefix] & [postfix] props › [prefix]="$" & [postfix]="kg" › textfield does not contain any digit (only suffixes) => clear inputNumber.textfield value on blur
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › change selected range on click › click on the beginning of the track changes only nearest (left) slider
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › change selected range on click › click on the end of the track changes only nearest (right) slider
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › change selected range on click › click between two thumbs triggers only nearest thumb
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › basic range (from 0 to 1000 with 250 steps). Initial value [0, 250] › pressing of Arrow Right increases by one step (after focus on right slider)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › basic range (from 0 to 1000 with 250 steps). Initial value [0, 250] › pressing of Arrow Right increases by one step (after focus on left slider)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › basic range (from 0 to 1000 with 250 steps). Initial value [0, 250] › pressing of Arrow Left decreases by one step (after setting right thumb active via click)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › basic range (from 0 to 1000 with 250 steps). Initial value [0, 250] › cannot set left thumb more than right thumb (by Arrow Right)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › basic range (from 0 to 1000 with 250 steps). Initial value [0, 250] › cannot set right thumb less than left thumb (by ArrowLeft)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › range with keySteps (from 0 to 1M) with 8 steps. Initial value [0, 100_000] › ArrowUp increases value of the focused slider
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › range with keySteps (from 0 to 1M) with 8 steps. Initial value [0, 100_000] › ArrowDown decreases value of the focused slider
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › range with keySteps (from 0 to 1M) with 8 steps. Initial value [0, 100_000] › cannot set position of the LEFT slider MORE THAN position of the RIGHT slider (by ArrowUp)
webkit › tests/kit/range/range.pw.spec.ts › TuiRange › examples page › keyboard interactions › range with keySteps (from 0 to 1M) with 8 steps. Initial value [0, 100_000] › cannot set position of the RIGHT slider LESS THAN position of the LEFT slider (by ArrowDown)
webkit › tests/kit/slider/slider.pw.spec.ts › Slider › programmatically change value › ngModel › decrease value by 1 step
webkit › tests/kit/slider/slider.pw.spec.ts › Slider › programmatically change value › ngModel › increase value by 1 step
webkit › tests/kit/slider/slider.pw.spec.ts › Slider › programmatically change value › ngModel › increase value by 2 steps
webkit › tests/kit/tabs/tabs.pw.spec.ts › Tabs › Examples › complex › no extra margin after the last tab
webkit › tests/kit/tabs/tabs.pw.spec.ts › Tabs › Examples › complex › shows only a single dropdown for the nested item (with [tuiDropdown]) inside more section
webkit › tests/layout/navigation.pw.spec.ts › Navigation › Show settings in aside
webkit › tests/layout/navigation.pw.spec.ts › Navigation › Show hint in aside
webkit › tests/layout/navigation.pw.spec.ts › Navigation › A12y
webkit › tests/legacy/input-time/input-time.pw.spec.ts › InputTime › API › items are passed › the dropdown is visible when the input is focused
webkit › tests/legacy/input-time/input-time.pw.spec.ts › InputTime › API › items are passed › the dropdown is configured for s size
webkit › tests/legacy/input-time/input-time.pw.spec.ts › InputTime › API › items are passed › the dropdown is configured for m size
webkit › tests/legacy/input-time/input-time.pw.spec.ts › InputTime › API › items are passed › the dropdown is configured for l size

@nsbarsukov nsbarsukov merged commit 0422514 into main Feb 20, 2025
39 checks passed
@nsbarsukov nsbarsukov deleted the input-number-caret-on-step branch February 20, 2025 08:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

4 participants