FIX : Unable to Create Files or Folders Through the File Actions Modal #3343
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3329
PROBLEM:
The problem that was occurring was when clicking on Add button in Sidebar -> and then TOUCH CLICKING "Add new file"/ "Add new folder" USING TOUCHPAD . The modal for creating new file or folder was not popping up.
When interacting with a button, events fire in this order:
onMouseDown → onMouseUp → onClick → onBlur
When we Click using mouse :- It directly triggers Onclick
When we use Touch: it triggers
onTouchStartandonTouchEnd, which then polyfill toonClick.But When we TOUCH CLICK USING MOUSEPAD: it triggers
onMouseDown.The default behavior of
onMouseDownis to shift focus as soon as possible.It doesn't wait for
onClickto occur.Therefore directly executing
onBlur.And hence not opening the modal.
SOLUTION:
The most appropriate solution to this problem i found was:-
onMouseDown={(e) => e.preventDefault()}Basically, this removes the default focus shifting behavior of
onMouseDown.And, 'waits' for
onClickto execute.After which,
onBluris executed.Therefore, it now adds a file or folder when Touch Clicking using touchpad.
Solution executed in file:-
In p5.js-web-editor\client\modules\IDE\components\Sidebar.jsx
I have verified that this pull request:
npm run lint)npm run test)developbranch.Fixes #123