1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-24 07:42:40 +01:00
phorge-phorge/src/applications/maniphest
epriestley 68b1dee139 Replace the "Choose Subtype" radio buttons dialog with a simpler "big stuff you click" sort of UI
Summary:
Ref T13222. Fixes T12588. See PHI683. In several cases, we present the user with a choice between multiple major options: Alamnac service types, Drydock blueprint types, Repository VCS types, Herald rule types, etc.

Today, we generally do this with radio buttons and a "Submit" button. This isn't terrible, but often it means users have to click twice (once on the radio; once on submit) when a single click would be sufficient. The radio click target can also be small.

In other cases, we have a container with a link and we'd like to link the entire container: notifications, the `/drydock/` console, etc. We'd like to just link the entire container, but this causes some problems:

  - It's not legal to link block eleements like `<a><div> ... </div></a>` and some browsers actually get upset about it.
  - We can `<a><span> ... </span></a>` instead, then turn the `<span>` into a block element with CSS -- and this sometimes works, but also has some drawbacks:
    - It's not great to do that for screenreaders, since the readable text in the link isn't necessarily very meaningful.
    - We can't have any other links inside the element (e.g., details or documentation).
  - We can `<form><button> ... </button></form>` instead, but this has its own set of problems:
    - You can't right-click to interact with a button in the same way you can with a link.
    - Also not great for screenreaders.

Instead, try adding a `linked-container` behavior which just means "when users click this element, pretend they clicked the first link inside it".

This gives us natural HTML (real, legal HTML with actual `<a>` tags) and good screenreader behavior, but allows the effective link target to be visually larger than just the link.

If no issues crop up with this, I'd plan to eventually use this technique in more places (Repositories, Herald, Almanac, Drydock, Notifications menu, etc).

Test Plan:
{F6053035}

  - Left-clicked and command-left-clicked the new JS fanciness, got sensible behaviors.

Reviewers: amckinley

Reviewed By: amckinley

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T13222, T12588

Differential Revision: https://secure.phabricator.com/D19855
2018-12-10 14:59:18 -08:00
..
__tests__ Use keywords instead of ints to update task priority in ManiphestEditEngine 2017-06-14 14:43:03 -07:00
application Allow the "Create Subtask" workflow to prompt for a subtype selection, and prepare for customizable options 2018-12-10 14:44:26 -08:00
bulk Remove the Maniphest-specific bulk job type 2018-01-19 12:44:16 -08:00
capability Remove deprecated Maniphest "Can Edit <Specific Property>" capabilities 2018-08-16 10:51:06 -07:00
command Use keywords instead of ints to update task priority in ManiphestEditEngine 2017-06-14 14:43:03 -07:00
conduit Freeze "maniphest.gettasktransactions" and make status/priority transactions more consistent 2017-11-22 11:13:53 -08:00
config Allow "maniphest.subtypes" to configure which options are presented by "Create Subtask" 2018-12-10 14:58:28 -08:00
constants Convert Maniphest custom config to new config types 2017-06-27 12:35:29 -07:00
controller Replace the "Choose Subtype" radio buttons dialog with a simpler "big stuff you click" sort of UI 2018-12-10 14:59:18 -08:00
edge Allow duplicates and merged-in tasks to be queried with edge.search 2017-10-13 13:12:50 -07:00
editor Fix a transaction editor "continue;" inside "switch()" for PHP 7.3 2018-12-05 11:25:53 -08:00
engineextension Add more mail stamps: tasks, subscribers, projects, spaces 2018-02-06 04:05:46 -08:00
field Fix errors found by PHPStan 2017-02-17 10:10:15 +00:00
herald Add "you can only enter one value" UI limits to Herald "set status" and "set priority" actions 2018-01-26 13:22:26 -08:00
httpparametertype Make "Create Subtask" work properly in EditEngine 2015-12-08 14:29:58 -08:00
lipsum Use keywords instead of ints to update task priority in ManiphestEditEngine 2017-06-14 14:43:03 -07:00
mail Have Maniphest use create transactions when using email 2017-07-25 13:36:50 -07:00
phid Mark PhabricatorPHIDType::getPHIDTypeApplicationClass() as abstract 2015-11-03 06:47:12 +11:00
policyrule Allow PolicyRules to serve as "Object Policies" 2015-06-13 15:44:38 -07:00
query Replace the informal "array" subtype map with a more formal "SubtypeMap" object 2018-12-09 16:37:35 -08:00
relationship Update Maniphest for modular transactions 2017-05-15 10:29:06 -07:00
remarkup Rename PhutilRemarkupRule subclasses 2014-08-05 00:55:43 +10:00
search Reduce the amount of boilerplate that implementing FerretInterface requires 2017-09-07 13:23:31 -07:00
storage Replace the informal "array" subtype map with a more formal "SubtypeMap" object 2018-12-09 16:37:35 -08:00
typeahead Replace the informal "array" subtype map with a more formal "SubtypeMap" object 2018-12-09 16:37:35 -08:00
view Replace the informal "array" subtype map with a more formal "SubtypeMap" object 2018-12-09 16:37:35 -08:00
xaction Enrich "priority" transactions in Maniphest for "transaction.search" 2018-08-24 10:05:05 -07:00