feat(GlTabs): add support for syncing active tab with query params
What does this MR do?
Related to #1377 (closed)
Adds a syncActiveTabWithQueryParams
prop to GlTabs
component. When this prop is set to true
a query string will be synced with the active tab. The name of this query string is based off of the optional queryParamName
prop that defaults to tab
. The value of the query string will be the index of the tab or, if set, the value of the query-param-value
attribute set on the tab.
Video
Screen_Recording_2021-05-19_at_11.31.21_AM
Testing locally
When running yarn storybook
, the components are rendered inside an <iframe>
, so the component can't change the browser's URL. Instead, you can navigate directly to the <iframe>
'd URL.
Follow the steps in the below screenshot:
Does this MR meet the acceptance criteria?
Conformity
-
Code review guidelines. -
GitLab UI's contributing guidlines. - [-] If it changes a Pajamas-compliant component's look & feel, the MR has been reviewed by a UX designer.
- [-] If it changes GitLab UI's documentation guidelines, the MR has been reviewed by a Technical Writer.
-
If the MR changes a component's API, integration MR(s) have been opened in the following projects to ensure that the @gitlab/ui
package can be upgraded quickly after the changes are released:-
GitLab: gitlab!61951 (merged) - Will need to update a few snapshot tests because of the new props but this should be easy
-
CustomersDot: https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/3271 - Snapshot test failing due to switching order of some HTML attributes on an
a
tag. This is probably due to a different version of Bootstrap Vue and should be an easy fix.
- Snapshot test failing due to switching order of some HTML attributes on an
-
Status Page: GlTabs
not used
-
-
Added the ~"component:*"
label(s) if applicable.
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] Security reports checked/validated by a reviewer from the AppSec team
Accessibility
If this MR adds or modifies a component, take a few moments to review the following:
-
All actions and functionality can be done with a keyboard. -
Links, buttons, and controls have a visible focus state. -
All content is presented in text or with a text equivalent. For example, alt text for SVG, or aria-label
for icons that have meaning or perform actions. -
Changes in a component’s state are announced by a screen reader. For example, changing aria-expanded="false"
toaria-expanded="true"
when an accordion is expanded. -
Color combinations have sufficient contrast.