-
Notifications
You must be signed in to change notification settings - Fork 6
Switch Specification
- Overview
- User Stories
- Functionality
- Test Scenarios
- Accessibility
- Assumptions and Limitations
- References
Team Name: Design and Web Development (DnD)
Developer: Silvia Ivanova
Designer: Stefan Ivanov
- Simeon Simeonov | Date:
- Product Owner: Radoslav Mirchev | Date:
- Radoslav Karaivanov | Date:
Version | Users | Date | Notes |
---|---|---|---|
1 | Silvia Ivanova | Date 16 July 2021 | Update specification |
The <igc-switch>
component is used to provide a capability for making a binary choice of a single settings option.
It is providing API for the most common use cases when it comes to a binary choice for a certain condition. Switch takes on common visual properties of the radio button.
- The switch component should have a toggle visual representation.
- The switch component should have a clickable button.
- The switch component should be identifiable via a property, like name.
- The switch component should represent a unit of information, like value.
- The switch component should provide a way to be disabled.
- The switch component should have the ability to add a corresponding label (before or after).
- The switch component should be interacted via mouse and/or keyboard.
- The switch component should be accessible.
- The switch component should emit an event when it gains focus.
- The switch component should emit an event when it loses focus.
- The switch component should emit an event when its checked status changes.
- The switch component should be able to report validation errors in the context of web forms.
Developer stories:
- Story 1: As a developer, I want to be able to provide a way to display a binary choice - true or false.
- Story 2: As a developer, I want to be able to name the switch, so that I can easily identify it when used with other selection controls of the same type.
- Story 3: As a developer, I want to be able to set the value of the switch, so that I can associate a piece of information with it.
- Story 4: As a developer, I want to be able to specify the default state of the switch - checked or unchecked.
- Story 5: As a developer, I want to be able to disable the switch, so that the user cannot change its state.
- Story 6: As a developer, I want to be able to place content between the opening and closing brackets of the switch component, so that it can be used as a corresponding label.
- Story 7: As a developer, I want to be able to position the label of the switch either before or after the control, so that it better suits the design.
- Story 8: As a developer, I want to be able to programmatically click the switch, so that I can interact with it via means other than a computer mouse.
- Story 9: As a developer, I want to be able to programmatically focus the switch, so that I can manually trigger the focus event.
- Story 10: As a developer, I want to be able to programmatically blur the switch, so that I can manually trigger the blur event.
- Story 11: As a developer, I want to be able to listen to blur, focus, and change events, so that I can better manage the state of the switch component.
- Story 12: As a developer, I want to be able to check the validity of the switch, so that I can handle form errors and/or warnings.
- Story 13: As a developer, I want to be able to set a custom validation message, so that the users can easily identify and fix form errors and/or warnings.
- Story 14: As a developer, I want to be able to customize the appearance of the switch component, so that it better fits the design language of my application.
<igc-switch checked="true" disabled="true" labelPosition="before">
Checked Switch
</igc-switch>
End-user stories:
- Story 1: As an end-user, I want to be shown a visual representation of certain state changes.
- Story 2: As an end-user, I want to be able to identify if a switch is disabled or not.
3.1. End-User Experience
The switch component should display a toggle changing the state of a single settings option. It comes with 3 different states (checked, unchecked, and disabled) and a corresponding label.
3.2. Developer Experience
checked
: Determines the initial state of the switch to checked="true".
disabled
: Determines whether the switch is enabled or disabled.
3.5. API
You should be able to configure the igc-switch
by setting properties on it.
Name | Description | Type | Default value | Reflected |
---|---|---|---|---|
checked |
Determines the initial state of the switch | boolean | false | false |
disabled |
Determines the accessibility state of the switch | boolean | false | false |
Name | Description |
---|---|
(default) |
Name | Description |
---|---|
base | The base wrapper of the switch. |
Automation
- Scenario 1:
-
Roles
: - role="checkbox". https://www.w3.org/TR/wai-aria-1.1/#checkbox
-
Attributes
: - aria-checked="checked". https://www.w3.org/TR/wai-aria-1.1/#aria-checked
- aria-labelledby="labelId". https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby