Background
- Description: An element that is overlaid on the page in order to present necessary information or tasks. Dialogs facilitate communication between the system and the user. They perform best when used for urgent decisions or as a workflow within a bigger task. They can keep action in context. They aim to be disruptive since the user needs to interact with or close the dialog before moving on, and therefore should be used sparingly, only when necessary.
- History:
- OOUI supports a wide array of dialog types, layouts, and use cases. As noted in the comments of this task, dialogs are heavily used on the mobile site, and the new CdxDialog will likely be rendered using vue-router in the mobile skin once the component is available.
- The Design Systems Team has been discussing a "SimpleDialog" and a "ComplexDialog," but the latter has not been defined yet. The MVP component will be called Dialog, and if we do build more than one dialog component, we will use more descriptive names than "simple" and "complex" to differentiate them.
- Known use case(s):
- Critical part of the mobile site
- Existing Vue projects: used in MediaSearch (namespace filter) and SuggestedTags (publish confirmation)
- Comprehensive presentation of use cases
- Considerations:
- Development of the MVP will require developing a system for handling overlays in general, both to move the dialog markup to a different location in the DOM and to handle components with absolutely positioned parts, like Menus, when they're placed within a Dialog.
- Codex will provide the CdxDialog component with a system for showing/hiding it and cover moving it to the appropriate part of the DOM, but it will not handle any kind of state management system for showing or hiding a dialog that's in a different codebase. We are aiming for a "dumb" component that only knows when to show or hide itself.
User stories
- add at least one user story
Previous implementations
These artifacts are listed for historical context. The figma spec, linked below, is the source of truth for the new component.
- Design style guide: Dialogs
- OOUI: add the relevant OOUI widget name here, if applicable. See OOUI demos.
- MobileFrontend (pretty much every workflow, language overlay, source editor overlay base component is Overlay )
- Vue:
Codex implementation
Component task owners
- Designer: add the main designer's name
- Developer: add the main developer's name
Design spec
Stage 1: Minimum viable product (MVP)
MVP includes basic layout, default states, and most important functionality.
Acceptance criteria
- Determine what MVP includes for this component and document this in a subtask. Assign task to designer.
- Design MVP. Once complete, assign task to developer.
- Implement MVP
Stage 2: Additional states, features, and variants
This might include a disabled state, framed/frameless designs, transitions, supporting different use cases, etc., which will be captured in separate subtasks.
Acceptance criteria
- Document design and implementation of additional states and features in individual subtasks
- Complete each additional state/feature subtask
Stage 3: Refinement
This stage includes any final touches or bug fixes needed before the component can be deemed complete, which will be captured in separate subtasks.
Acceptance criteria
- Finalize docs: open and complete a subtask for any additional demos that need to be added or documentation that needs work
- Meet accessibility standards: open and complete a subtask for any necessary accessibility improvements
- Meet internationalization standards: open and complete a subtask to fix any i18n bugs
- Complete testing: open and complete a subtask for any additional unit or functional tests that are needed







