Edit existing issue inline
Resources
PM @victorwu | UX @dimitrieh | FE @iamphill
Problem
- Currently, editing an existing issue's description forces you to go to another page. This takes you out of context, and is jarring experience. Practically, you can't quickly refer to existing comments in the issue, or any other metadata on the sidebar.
Design
note: The creation screen for an issue stays exactly the same, this issue only affects how an existing issue is being edited
- Remove these fields from the edit form (which is now inline):
- Assignee
- Milestone
- Labels
- Weight
- Due date
- Uses existing edit button to summon inline editing controls, including:
- Title edit field
- Description edit field
- Confidentiality toggle
- Move to different project
- Delete issue
- If you click cancel, it cancels the edit mode, and goes back to normal.
- No change to the functionality if you are overwriting something right when someone else is doing it. Same warning message.
- As you are editing, if you remove all the text from the title field, the placeholder
Title
appears. - As you are editing, if you remove all the text from the description field, the placeholder
Description
appears. - Save button is faded out (so you cannot click it) if the title field is empty.
- If you change the checkbox of the confidentiality status, and if you click the Save button, then the entire page does refresh. (We are not doing inline updates in this case, because of changes here: https://gitlab.com/gitlab-org/gitlab-ce/issues/29741. And we will make that inline update in a future issue.)
- If you use the move project field and click Save, it follows the regular flow (closes the issue in the background and opens a new issue in the new project and you are navigated to it).
- If the changes in edit mode are only to the title and/or the description, when you click save, it saves immediately on the FE so that the user sees it right away, and asynchronously updates the backend. (If there's a failure on the backend, ignore it for now, for this issue.)
- If you click Delete (and you have permissions to see it in the first place), it follows the same existing delete flow).
- While in edit mode, you can interact with the issue as normal. This includes making changes to the sidebar and adding new comments in the comments thread, or editing them. For any of those actions that do not refresh the page, you should remain in edit mode for the fields we have here. If you any of those actions do refresh the page, then you might lose the changes you are making (more below).
Stretch goals
- When you start editing in edit mode, and then hit cancel, the changes are still saved in the browser, as long as you remain on the page. So when you click edit again later (without refreshing the page), the changes are still there and you can continue to make the changes.
- Currently, when you update an issue, and start typing the title and description, and then close the window before hitting save, the changes are cached in your browser. So that if you come back to the issue in another tab, the changes are already there. This functionality ideally should be maintained. It is a stretch goal. If it turns out to be too much work to put this issue at risk, it should not be worked on. It should be worked on last.
Out of scope
- The merge request description fields and other fields are out of scope of this issue.
- This is just for editing an existing issue. When you create a new issue, everything, all the fields, remain the same. That page is not changed at all.