Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions cypress/component/Modal.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@ describe('Modal', () => {
});

it('should trap focus inside the modal element', () => {
cy.realPress('Tab');
cy.focused().should('contain', 'Acknowledge');
cy.realPress('Tab');
cy.focused().should('contain', 'Cancel');
cy.realPress('Tab');
cy.focused().should('contain', 'Acknowledge');
cy.realPress('Tab');
cy.findByRole('dialog', {name: 'MIT License'})
.findByRole('button', {name: 'Close'})
.should('have.focus');
Expand Down Expand Up @@ -617,11 +617,11 @@ context(`given the [Components/Popups/Modal, Custom focus] story is rendered`, (
});

it('should trap focus inside the modal element', () => {
cy.realPress('Tab');
cy.focused().should('contain', 'Acknowledge');
cy.realPress('Tab');
cy.focused().should('contain', 'Cancel');
cy.realPress('Tab');
cy.focused().should('contain', 'Acknowledge');
cy.realPress('Tab');
cy.focused().should('have.attr', 'aria-label', 'Close');
cy.realPress('Tab');
cy.findByLabelText('Initials').should('have.focus');
Expand Down
2 changes: 1 addition & 1 deletion cypress/component/Popup.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ describe('Popup', () => {
// useFocusRedirect hides on Tab only from the last focusable in the popup (Close, Delete, Cancel)
context('when the "Cancel" button has focus and the tab key is pressed', () => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Low: The focus redirect Cypress description/comment is now stale: it says the Cancel button has focus and lists order as Close, Delete, Cancel, but the test focuses Delete after the PR’s reordered DOM. That weakens the accessibility spec around focus order.

beforeEach(() => {
cy.findByRole('button', {name: 'Cancel'}).focus().realPress('Tab');
cy.findByRole('button', {name: 'Delete'}).focus().realPress('Tab');
});

it('should hide the popup', () => {
Expand Down
6 changes: 6 additions & 0 deletions modules/react/dialog/lib/Dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,12 @@ export const Dialog = createContainer()({
* {@link usePopupCloseButton}.
*/
CloseButton: Popup.CloseButton,
/**
* A `Dialog.ButtonGroup` component styled with {@link popupButtonGroupStencil}. It is used to
* group buttons within a dialog and can place buttons at the start, center, or end of the
* container.
*/
ButtonGroup: Popup.ButtonGroup,
},
})(({children}: DialogProps) => {
return <>{children}</>;
Expand Down
48 changes: 12 additions & 36 deletions modules/react/dialog/stories/FallbackTesting.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -74,16 +68,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -98,16 +86,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -122,16 +104,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand Down
8 changes: 3 additions & 5 deletions modules/react/dialog/stories/examples/Basic.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,12 @@ export const Basic = () => {
<FormField.Input as={TextInput} onChange={handleChange} value={value} />
</FormField>
</Dialog.Body>
<Flex
cs={{padding: system.padding.xxs, marginBlockStart: system.gap.xs, gap: system.gap.md}}
>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
<Dialog.CloseButton as={PrimaryButton} onClick={handleEmail}>
Submit
</Dialog.CloseButton>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {PrimaryButton} from '@workday/canvas-kit-react/button';
import {Dialog} from '@workday/canvas-kit-react/dialog';
import {Flex, Grid} from '@workday/canvas-kit-react/layout';
import {Grid} from '@workday/canvas-kit-react/layout';
import {calc, createStyles} from '@workday/canvas-kit-styling';
import {base, system} from '@workday/canvas-tokens-web';

Expand Down Expand Up @@ -50,16 +50,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -74,16 +68,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -98,16 +86,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand All @@ -122,16 +104,10 @@ export const DialogWithFallbackPlacements = () => {
This is dialog heading
</Dialog.Heading>
<Dialog.Body>This is dialog body.</Dialog.Body>
<Flex
cs={{
gap: system.gap.sm,
padding: system.padding.xs,
marginBlockStart: system.gap.sm,
}}
>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
<Dialog.CloseButton as={PrimaryButton}>Submit</Dialog.CloseButton>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand Down
12 changes: 3 additions & 9 deletions modules/react/dialog/stories/examples/Focus.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,12 @@ export const Focus = () => {
<FormField.Input as={TextInput} onChange={handleChange} value={value} />
</FormField>
</Dialog.Body>
<Flex
cs={{
padding: system.padding.xxs,
marginBlockStart: system.gap.xs,
gap: system.gap.md,
}}
>
<Dialog.ButtonGroup>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
<Dialog.CloseButton as={PrimaryButton} onClick={handleEmail}>
Submit
</Dialog.CloseButton>
<Dialog.CloseButton>Cancel</Dialog.CloseButton>
</Flex>
</Dialog.ButtonGroup>
</Dialog.Card>
</Dialog.Popper>
</Dialog>
Expand Down
6 changes: 6 additions & 0 deletions modules/react/modal/lib/Modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,12 @@ export const Modal = createContainer()({
* full body overflow is desired.
*/
OverflowOverlay: ModalOverflowOverlay,
/**
* A `Modal.ButtonGroup` component styled with {@link popupButtonGroupStencil}. It is used to
* group buttons within a modal and can place buttons at the start, center, or end of the
* container.
*/
ButtonGroup: Popup.ButtonGroup,
Comment thread
josh-bagwell marked this conversation as resolved.
},
})<ExtractProps<typeof Dialog, never>>(elemProps => {
return <>{elemProps.children}</>;
Expand Down
9 changes: 4 additions & 5 deletions modules/react/modal/stories/examples/Basic.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {PrimaryButton} from '@workday/canvas-kit-react/button';
import {Box, Flex} from '@workday/canvas-kit-react/layout';
import {Box} from '@workday/canvas-kit-react/layout';
import {Modal} from '@workday/canvas-kit-react/modal';
import {system} from '@workday/canvas-tokens-web';

export const Basic = () => {
const handleAcknowledge = () => {
Expand All @@ -25,12 +24,12 @@ export const Basic = () => {
software and associated documentation files (the "Software").
</Box>
</Modal.Body>
<Flex cs={{gap: system.gap.md, paddingBlock: system.padding.xs}}>
<Modal.ButtonGroup>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
<Modal.CloseButton as={PrimaryButton} onClick={handleAcknowledge}>
Acknowledge
</Modal.CloseButton>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
</Flex>
</Modal.ButtonGroup>
</Modal.Card>
</Modal.Overlay>
</Modal>
Expand Down
6 changes: 3 additions & 3 deletions modules/react/modal/stories/examples/BodyOverflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@ export const BodyOverflow = () => {
ut aliquam purus sit.
</p>
</Modal.Body>
<Flex cs={{gap: system.gap.md, paddingBlock: system.padding.xs}}>
<Modal.ButtonGroup>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
<Modal.CloseButton as={PrimaryButton} onClick={handleAcknowledge}>
Acknowledge
</Modal.CloseButton>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
</Flex>
</Modal.ButtonGroup>
</Modal.Card>
</Modal.Overlay>
</Modal>
Expand Down
8 changes: 4 additions & 4 deletions modules/react/modal/stories/examples/CustomFocus.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React from 'react';
import {PrimaryButton} from '@workday/canvas-kit-react/button';
import {useUniqueId} from '@workday/canvas-kit-react/common';
import {FormField} from '@workday/canvas-kit-react/form-field';
import {Box, Flex} from '@workday/canvas-kit-react/layout';
import {Box} from '@workday/canvas-kit-react/layout';
import {Modal, useModalModel} from '@workday/canvas-kit-react/modal';
import {TextInput} from '@workday/canvas-kit-react/text-input';
import {system} from '@workday/canvas-tokens-web';
Expand Down Expand Up @@ -41,12 +41,12 @@ export const CustomFocus = () => {
/>
</FormField>
</Modal.Body>
<Flex cs={{gap: system.gap.md, paddingBlock: system.padding.xs}}>
<Modal.ButtonGroup>
<Modal.CloseButton>Cancel</Modal.CloseButton>
<Modal.CloseButton as={PrimaryButton} onClick={handleAcknowledge}>
Acknowledge
</Modal.CloseButton>
<Modal.CloseButton>Cancel</Modal.CloseButton>
</Flex>
</Modal.ButtonGroup>
</Modal.Card>
</Modal.Overlay>
</Modal>
Expand Down
12 changes: 2 additions & 10 deletions modules/react/modal/stories/examples/FormModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,13 @@ import React from 'react';

import {PrimaryButton} from '@workday/canvas-kit-react/button';
import {FormField} from '@workday/canvas-kit-react/form-field';
import {Flex} from '@workday/canvas-kit-react/layout';
import {Modal, useModalModel} from '@workday/canvas-kit-react/modal';
import {Select} from '@workday/canvas-kit-react/select';
import {TextInput} from '@workday/canvas-kit-react/text-input';
import {createStyles} from '@workday/canvas-kit-styling';
import {plusIcon} from '@workday/canvas-system-icons-web';
import {system} from '@workday/canvas-tokens-web';

const FAVORITE_COLOR_OPTIONS = ['Blue', 'Yellow'];

const flexStyles = createStyles({
gap: system.gap.md,
padding: system.padding.xs,
});

export const FormModal = () => {
const model = useModalModel();

Expand Down Expand Up @@ -66,10 +58,10 @@ export const FormModal = () => {
</FormField.Field>
</FormField>
</Modal.Body>
<Flex cs={flexStyles}>
<Modal.ButtonGroup>
<Modal.CloseButton>Cancel</Modal.CloseButton>
<PrimaryButton type="submit">Submit</PrimaryButton>
</Flex>
</Modal.ButtonGroup>
</Modal.Card>
</Modal.Overlay>
</Modal>
Expand Down
6 changes: 3 additions & 3 deletions modules/react/modal/stories/examples/FullOverflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@ export const FullOverflow = () => {
ut aliquam purus sit.
</p>
</Modal.Body>
<Flex cs={{gap: system.gap.md, paddingBlock: system.padding.xs}}>
<Modal.ButtonGroup>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
<Modal.CloseButton as={PrimaryButton} onClick={handleAcknowledge}>
Acknowledge
</Modal.CloseButton>
<Modal.CloseButton onClick={handleCancel}>Cancel</Modal.CloseButton>
</Flex>
</Modal.ButtonGroup>
</Modal.Card>
</Modal.OverflowOverlay>
</Modal>
Expand Down
Loading
Loading