Instead of showing a huge dialog that then just shows three
links with huge icons and no further description, we just use
a submenu, that immediately shows the export options as menu items.
Updates the form visuals based on new mockups: the Project copy form now
only includes required (built-in and custom) fields, along with the
"Subproject of" field.
In detail:
* Introduces `Projects::CopyFormComponent`.
* Adds `Projects::CopyForm` with basic specs.
* Adds `ProjectsController#copy_form` action, permissions and route
mappings.
* Updates copy project feature specs to reflect form changes.
The former depended 100% on the latter anyways and there
was no clear separation of concerns between the two. For
example ComponentStream had methods to close a dialog.
Thus it made sense to merge the two.
This allows us to combine the methods offered by the
component stream with a dialog. E.g. it's possible to
render a dialog, while at the same time updating a component
on the page using the same response.
Since there can/should only be one dialog opened usually,
I decided to keep the respond_with_dialog as the only way to
generate a dialog this way, because it enforces that there can
only be one dialog per response. Alternatively we could have added
a dialog-specific method to ComponentStream, theoretically allowing
multiple dialogs per response.
A consequence of this change is that using OpTurbo::DialogStreamHelper
now also requires OpTurbo::ComponentStream, though usually both were used
at the same time anyways.
Updates the form visuals according to new wireframes: the Project create
form now only includes required (built-in and custom) fields, along with
the "Subproject of" field.
In detail:
* Introduces `Projects::NewComponent` and `TemplateSelectComponent`.
* Adds, extends necessary Primer forms with basic specs.
* Adds `ProjectsController#create` action, routes and permissions.
* Adds `highlight-when-value-selected` Stimulus controller.
* Updates project feature specs for new form, including rewriting some
expectations that were reliant on `data-qa-name` attribute that Primer
form components do not render by default.
* Removes now obsolete Project Status administation feature spec.