-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
[$500] Web -Split bill- Square appears over checkmark when deselect participant and than use keyboard arrow #32400
Comments
Job added to Upwork: https://www.upwork.com/jobs/~017a562fd6464d4101 |
Triggered auto assignment to @dylanexpensify ( |
Bug0 Triage Checklist (Main S/O)
|
Triggered auto assignment to Contributor-plus team member for initial proposal review - @eVoloshchak ( |
ProposalPlease re-state the problem that we are trying to solve in this issue.Square appears over checkmark when deselect participant and press arrow key What is the root cause of that problem?A What changes do you think we should make in order to solve the problem?Set App/src/components/SelectCircle.tsx Line 21 in 1682be4
However, the circle border is still focusable: ![]() In case we want to completely forbid focusing by key on What alternative solutions did you explore? (Optional)NA |
ProposalPlease re-state the problem that we are trying to solve in this issue.The check(circle) icon of money request confirmation list outline is squared instead of circle. What is the root cause of that problem?The money request confirmation list currently uses OptionsSelector which renders OptionRow as the item. In OptionRow, we render the check(circle) with a Pressable and SelectCircle component. App/src/components/OptionRow.js Lines 268 to 275 in 1682be4
![]() App/src/components/SelectCircle.tsx Lines 21 to 28 in 1682be4
What changes do you think we should make in order to solve the problem?First, we need to set the SelectCircle margin-left to 0,
and move it to the pressable. Next, apply the same border-radius + 1 (padding) style of App/src/components/Checkbox.tsx Line 91 in 1682be4
and also add padding 1 so the blue outline is visible (similar to Checkbox where we add 2 padding).
if we don't add the padding, the blue outline won't show because it's covered by the outline of SelectCircle |
ProposalPlease re-state the problem that we are trying to solve in this issue.The square appears over checkmark when deselecting participant not only uses keyboard arrow but also clicks on checkbox directly What is the root cause of that problem?The root cause is that it's impacted from global style Line 60 in 1682be4
What changes do you think we should make in order to solve the problem?We shouldn't fix it inside SelectCircle component only because the issue is happening with all Pressable -> GenericPressable components We should add new 1 more global style for [data-tag="pressable"]:focus-visible with box-shadow: none in the web/index.html. This is to make all "pressable" component correct. What alternative solutions did you explore? (Optional)We can fix by adding new style for Pressable component |
📣 @tanmai-kms! 📣
|
Contributor details |
✅ Contributor details stored successfully. Thank you for contributing to Expensify! |
ProposalPlease re-state the problem that we are trying to solve in this issue.Web -Split bill- Square appears over checkmark when deselect participant and than use keyboard arrow What is the root cause of that problem?By default, we have config focus-visible to set box-shadow when lose focus What changes do you think we should make in order to solve the problem?For this case <PressableWithFeedback
onPress={() => props.onSelectedStatePressed(props.option)}
disabled={isDisabled}
role={CONST.ACCESSIBILITY_ROLE.CHECKBOX}
accessibilityLabel={CONST.ACCESSIBILITY_ROLE.CHECKBOX}
+ style={styles.noSelect}
+ tabIndex={-1}
>
<SelectCircle isChecked={props.isSelected} />
</PressableWithFeedback> What alternative solutions did you explore? (Optional) |
@eVoloshchak to review proposals! |
ProposalPlease re-state the problem that we are trying to solve in this issue.Web -Split bill- Focus from browser appears over checkmark and over the row when deselect participant or select roo, than use keyboard arrow up/down What is the root cause of that problem?The issue is bigger than just a focus style applied to a selected HTML element. 004.mp4If we follow this flow: Even if we execute the previous proposals, changing focus style on index html to to What changes do you think we should make in order to solve the problem?Once we click on a App/src/components/OptionRow.js Lines 164 to 166 in 10727a7
We can apply it on onPress
<PressableWithFeedback
ref={(el) => (pressableRef.current = el)}
onPress={(e) => {
// ....
pressableRef.current.blur();
}} We need also to apply the same blur method to the checkbox and this solve boath issues. App/src/components/OptionRow.js Lines 268 to 269 in 10727a7
change to: <PressableWithFeedback
ref={pressableRowRef}
onPress={() => {
props.onSelectedStatePressed(props.option);
pressableRowRef.current.blur();
}} Result (video) 005.mp4 |
📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸 |
@eVoloshchak to review proposals! |
Bump @eVoloshchak |
The issue turned out to be more complex, we have 3 distinct problems with the participants list
Screen.Recording.2023-12-13.at.23.14.39.movA proposal to resolve all of the issues above would be ideal, we'd fix the whole keyboard navigation flow on this page |
Keyboard navigation should be out of the scope of this issue. The issue here is simply about the focus outline of the circle. There is an issue here that is trying to fix the inconsistent keyboard navigation (looking at the PR, they will prioritize the row that has the browser focus).
You can only select by pressing Space when the element is focused. This is the native behavior of the web. Currently, we only have a custom enter listener. Having a new custom space key listener would be a new feature. |
@eVoloshchak @dylanexpensify this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks! |
PR is ready cc: @shubham1206agra |
@shubham1206agra the PR submitted still have the issue I mentioned. I think my proposal is better, it remove the issue.
Also about keyboard keyboard (tab/shift+tab), pls check here https://expensify.slack.com/archives/C01GTK53T8Q/p1668604822482759 we are not supporting this type of navigation I guess |
@bernhardoj @shubham1206agra what's holding up our merge? |
@dylanexpensify I am OOO right now. Will review the PR tomorrow. |
Sorry but your changes will fall under keyboard navigation changes, which is not allowed. The proposal by @bernhardoj will fix the visual inconsistencies, and will also fix the area of pressable action of checkbox.
About support, I have asked the same internally https://expensify.slack.com/archives/C02NK2DQWUX/p1706050548700389?thread_ts=1705396204.297479&cid=C02NK2DQWUX |
@shubham1206agra thank you for your reply. Please test the PR when you have time, if you do this:
then the wrong option will be actioned (selected/deselected) not the one highlighted. |
Highlighted by what? |
@bernhardoj @shubham1206agra can we get an update please |
PR is merged already, and is deployed to prod too. |
@shubham1206agra as I mentioned before, the issue is not fixed, the silution implemented I think it's just a workaround. Please check the video demonstrationg the issue after the PR. 20240209_105351.mp4Currently just the focus style is changed from square to round. But when you navigate and try to select an element from the list, the action happen the the previous element where the focus is not where the new element selected @dylanexpensify As you see from the video and the screenshot below, when I navigate to (2) and I click on space or enter on the keyboard, the item that should be selected/deselected is (2) not (1) as happening now. |
@dragnoir I understand what you are saying, but I am saying that this issue requires changes to keyboard navigation structure. So, the issue is out of scope of the current issue. You may want to open another issue for this issue for a detailed discussion for this. |
@shubham1206agra we already support this type of navigation in other component like search, LHN, .... also keeping the focus actif on an item, for the user, means the ability to interact with it with keyboard or with other navigation tools. I think just changing the style to round and don't care about what element is trully focused it very bad UX and not a fix for such an app. |
@shubham1206agra mind confirming where we're at |
@dylanexpensify The PR was deployed a week ago. So we can get ready for payment. |
For #32400 (comment), we need to open another issue to start the discussion about Keyboard Nav. |
Got it - will do today! |
@dylanexpensify Can you start payment here? |
Yes! Payment summary:
Please request/apply! |
@dylanexpensify You need to send us an offer. |
I know - in the works! |
Offers sent! |
done! |
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: 1.4.7-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:
Expected Result:
There should be no visual errors while scrolling through members list
Actual Result:
White square appears over checkmark when deselect participant and than use keyboard arrow
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Screenshots/Videos
Add any screenshot/video evidence
Bug6298629_1701521884927.Recording__1447.mp4
View all open jobs on GitHub
Upwork Automation - Do Not Edit
The text was updated successfully, but these errors were encountered: