Page MenuHomePhabricator

Add Process Dialog to Codex
Closed, DeclinedPublic

Description

Background/Goal

ProcessDialog needs to be added in Codex in order to cover some real use cases:

1. Edit and publish your changes in MediaWiki
Captura de Pantalla 2022-08-18 a las 10.17.50.png (1×2 px, 555 KB)
Captura de Pantalla 2022-08-18 a las 10.18.00.png (1×2 px, 1 MB)
Captura de Pantalla 2022-08-18 a las 10.18.13.png (1×2 px, 1 MB)
Captura de Pantalla 2022-08-18 a las 10.27.07.png (1×2 px, 1 MB)
Step 1Step 2 (visual editor)Step 2 (Wikitext)Step 3: Publishing changes (loading)
2. "Add a link" onboarding

T329037: Refactor the "Add a link" on-boarding dialog to Vue
T332767: OnboardingDialog: Add OnboardingDialog component pattern to Codex

Design spec

Design spec will be added here

Anatomy

Process Dialog will be built with the Dialog component created in T284838 and it could include:

  • An optional header that can contain:
    • Title
    • Close button (optional)
    • Back button
    • Loading
  • Dialog body (with content that may vary)
    • It may be scrollable
    • Dividers could be used to separate the header, body and footer.
  • An optional footer that can contain up to 3 buttons (one of these buttons will be primary)
  • It becomes fullscreen on mobile

Captura de Pantalla 2022-08-18 a las 11.01.08.png (936×2 px, 940 KB)

Style

The initial component will present the same styles from the Dialog component:

  • Size: the dialog width can vary according to the need of each case and the body content within the dialog.
  • Dialog frame will have a box-shadow to emphasize its placement over other content
  • Below the frame, a background blur effect will be created over the rest of the UI with a semi-transparent white background-color
  • Action buttons can either be horizontal and aligned to the end of the dialog, or stacked and 100% width

Interaction

The Process Dialog will follow the same interactions specified in the Dialog component:

  • The dialog can be closed via the close button, a "safe" action, the esc button, or clicking on the background below the frame
    • Transitions should be applied to the Dialog on open and close
  • Focus will be placed on the first focusable element in the Dialog when it's opened, then back to the previous location when it's closed
  • Users can tab through focusable elements of the Dialog in a loop
  • Body content will have overflow-y hidden via scroll when the max-height is exceeded
  • Content behind the open dialog cannot scroll

Considerations

  • Optionally include any other information important to clarifying the scope, other related tasks that should be created, etc.

Documentation

  • Structure: For now, the Dialog will have its own top-level page on the docs site
  • Content:
    • A configurable demo where the controls live inside the Dialog so that changes can be seen immediately
    • A basic example
    • An example of a component with different content (eg. body + selects) placed inside a dialog
    • An example with a lot of content to demonstrate the scroll behavior
    • Header:
      • An example with close button
      • An example with back button
      • An example with loading
    • Footer:
      • An example with footer
      • An example without footer (since the footer is optional)
      • An example with 2 or 3 buttons
      • An example with stacked action buttons

Acceptance criteria

This task will pass from the designer to the developer once the Figma spec is created.

  • A Figma spec sheet is created for the component that includes the scope defined here. A link to the Figma spec sheet's version has been added to this task's description.
  • The component is implemented in Codex.

Event Timeline

bmartinezcalvo updated the task description. (Show Details)
bmartinezcalvo updated the task description. (Show Details)

Looks exciting! Is there a reason this is absent from Codex/Planned Components?

Declining this task since a ProcessDialog can be solved using a Dialog component. @AnneT recently included this Multi-step Dialog example to show how to create it using a Dialog.