Skip to content
This repository has been archived by the owner on May 24, 2024. It is now read-only.

Commit

Permalink
[terra-slide-panel-manager] Allow consuming teams ability to define h…
Browse files Browse the repository at this point in the history
…eading levels (#1621)

* Added level prop to slide-panel-manager, updated Jest snapshots, added example using level

Co-authored-by: Adnan, Saad <[email protected]>
Co-authored-by: Andrew Tran <[email protected]>

* Added Andrew to contributors, updated changelog

* Revert doc example, made default heading level 2

* Updated jest snapshots for default heading level 2

* Update slide-panel-manager changelog

* Update example to include header level select

* Update dev doc examples with level prop

* Retrigger danger

* dangerfile fix

---------

Co-authored-by: Parkeenvincha,Art <[email protected]>
Co-authored-by: Adnan, Saad <[email protected]>
Co-authored-by: Andrew Tran <[email protected]>
Co-authored-by: Andrew Tran <[email protected]>
  • Loading branch information
5 people authored Apr 3, 2023
1 parent 9075a61 commit 8b5abca
Show file tree
Hide file tree
Showing 10 changed files with 221 additions and 19 deletions.
2 changes: 2 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Cerner Corporation
- Michael Day [@mumkymikey]
- Gage Phillips [@gagerdude]
- Art Parkeenvincha [@artpark]
- Andrew Tran [@trandrew1023]

[@tbiethman]: https://github.com/tbiethman
[@mjhenkes]: https://github.com/mjhenkes
Expand Down Expand Up @@ -91,3 +92,4 @@ Cerner Corporation
[@mumkymikey]: https://github.com/mumkymikey
[@gagerdude]: https://github.com/gagerdude
[@artpark]: https://github.com/artpark
[@trandrew1023]: https://github.com/trandrew1023
2 changes: 1 addition & 1 deletion dangerfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { danger, fail } from 'danger';
const CHANGELOG_PATTERN = /^packages\/terra-([a-z-0-9])*\/CHANGELOG\.md/i;

const changedFiles = danger.git.created_files.concat(danger.git.modified_files);
const allowedFilepaths = ['package.json', 'src', 'translations', 'terra-framework-docs'];
const allowedFilepaths = ['package.json', 'CHANGELOG.md', 'src', 'translations', 'terra-framework-docs'];

const changedChangelogs = new Set();
const changedPackages = new Set();
Expand Down
3 changes: 2 additions & 1 deletion packages/terra-framework-docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
## 1.17.0 - (March 29, 2023)

* Changed
* Added test for `terra-slide-panel`.
* Updated docs for `terra-slide-group`.
* Added
* Added package-lock.json
* Added test for `terra-slide-panel`.
* Added test for `terra-slide-panel-manager`.

## 1.16.0 - (March 1, 2023)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,9 @@
background-color: #add8e6;
padding: 1rem;
}

.form-select {
margin-left: 1rem;
max-width: 300px;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable max-classes-per-file */
/* Slide Panel Manager example with panel behavior as "overlay" */
import React from 'react';
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames/bind';
import ActionHeader from 'terra-action-header';
Expand All @@ -9,6 +9,7 @@ import ContentContainer from 'terra-content-container';
import {
availableDisclosureHeights, availableDisclosureWidths, DisclosureManagerHeaderAdapter, DisclosureManagerContext,
} from 'terra-disclosure-manager';
import NativeSelect from 'terra-form-select/lib/native-select/NativeSelect';

import SlidePanelManager from 'terra-slide-panel-manager';
import styles from './SlidePanelManager.module.scss';
Expand Down Expand Up @@ -274,12 +275,34 @@ class ContentComponent extends React.Component {

ContentComponent.contextType = DisclosureManagerContext;

const SlidePanelManagerExample = () => (
<div className={cx('example-wrapper')}>
<SlidePanelManager>
<ContentComponent />
</SlidePanelManager>
</div>
);
const SlidePanelManagerExample = () => {
const [level, setLevel] = useState(0);

return (
<div className={cx('example-wrapper')}>
<SlidePanelManager level={level === 0 ? undefined : level}>
<ContentComponent />
<br />
<div id="headingLevel" className={cx('form-select')}>Select panel heading level:</div>
<NativeSelect
ariaLabel="Panel heading level"
className={cx('form-select')}
isFilterStyle
onChange={(event) => setLevel(Number(event.currentTarget.value))}
options={[
{ value: '0', display: 'Default' },
{ value: 1, display: '1' },
{ value: 2, display: '2' },
{ value: 3, display: '3' },
{ value: 4, display: '4' },
{ value: 5, display: '5' },
{ value: 6, display: '6' },
]}
value={level}
/>
</SlidePanelManager>
</div>
);
};

export default SlidePanelManagerExample;
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable max-classes-per-file */
/* Slide Panel Manager example with panel behavior as "squish" */
import React from 'react';
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames/bind';
import ActionHeader from 'terra-action-header';
Expand All @@ -9,6 +9,7 @@ import ContentContainer from 'terra-content-container';
import {
availableDisclosureHeights, availableDisclosureWidths, DisclosureManagerHeaderAdapter, DisclosureManagerContext,
} from 'terra-disclosure-manager';
import NativeSelect from 'terra-form-select/lib/native-select/NativeSelect';

import SlidePanelManager from 'terra-slide-panel-manager';
import styles from './SlidePanelManager.module.scss';
Expand Down Expand Up @@ -274,12 +275,34 @@ class ContentComponent extends React.Component {

ContentComponent.contextType = DisclosureManagerContext;

const SlidePanelManagerExample = () => (
<div className={cx('example-wrapper')}>
<SlidePanelManager>
<ContentComponent />
</SlidePanelManager>
</div>
);
const SlidePanelManagerExample = () => {
const [level, setLevel] = useState(0);

return (
<div className={cx('example-wrapper')}>
<SlidePanelManager level={level === 0 ? undefined : level}>
<ContentComponent />
<br />
<div id="headingLevel" className={cx('form-select')}>Select panel heading level:</div>
<NativeSelect
ariaLabel="Panel heading level"
className={cx('form-select')}
isFilterStyle
onChange={(event) => setLevel(Number(event.currentTarget.value))}
options={[
{ value: '0', display: 'Default' },
{ value: 1, display: '1' },
{ value: 2, display: '2' },
{ value: 3, display: '3' },
{ value: 4, display: '4' },
{ value: 5, display: '5' },
{ value: 6, display: '6' },
]}
value={level}
/>
</SlidePanelManager>
</div>
);
};

export default SlidePanelManagerExample;
3 changes: 3 additions & 0 deletions packages/terra-slide-panel-manager/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

## Unreleased

* Added
* Added `level` prop as a passthrough for the underlying `terra-action-header`

## 5.65.0 - (March 29, 2023)

* Changed
Expand Down
9 changes: 8 additions & 1 deletion packages/terra-slide-panel-manager/src/SlidePanelManager.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ const propTypes = {
* disclosure capabilities through the DisclosureManger's context API.
*/
children: PropTypes.node,
/**
* Sets the heading level of the disclosed panel. One of `1`, `2`, `3`, `4`, `5`, `6`. This helps screen readers to announce appropriate heading levels.
* Changing 'level' will not visually change the style of the content.
*/
level: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),
/**
* The desired panel behavior. Either 'squish' or 'overlay'.
*/
Expand All @@ -31,6 +36,7 @@ const propTypes = {
};

const defaultProps = {
level: 2,
panelBehavior: 'overlay',
};

Expand Down Expand Up @@ -62,7 +68,7 @@ class SlidePanelManager extends React.Component {

renderSlidePanel(manager) {
const {
children, disclosureAccessory, withDisclosureContainer, ...customProps
children, level, disclosureAccessory, withDisclosureContainer, ...customProps
} = this.props;

let isFullscreen;
Expand Down Expand Up @@ -100,6 +106,7 @@ class SlidePanelManager extends React.Component {
<ActionHeader
title={headerDataForPresentedComponent.title}
onClose={manager.closeDisclosure}
level={level}
onBack={manager.disclosureComponentKeys.length > 1 ? manager.dismissPresentedComponent : undefined}
>
{headerDataForPresentedComponent.collapsibleMenuView}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ describe('SlidePanelManager', () => {
expect(result).toMatchSnapshot();
});

it('should render a SlidePanelManager with level three header element and title', () => {
const slidePanelManager = (
<SlidePanelManager id="my-slide-panel-manager" className="test" level={3}>
<TestContainer />
</SlidePanelManager>
);
const wrapper = mount(slidePanelManager);
expect(wrapper).toMatchSnapshot();
});

it('should disclose content in SlidePanel', () => {
const slidePanelManager = (
<SlidePanelManager>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ exports[`SlidePanelManager should disclose content in Modal wrapped by disclose

exports[`SlidePanelManager should disclose content in SlidePanel 1`] = `
<SlidePanelManager
level={2}
panelBehavior="overlay"
>
<withDisclosureManager(DisclosureManager)
Expand Down Expand Up @@ -296,10 +297,135 @@ exports[`SlidePanelManager should disclose content in SlidePanel 1`] = `
</SlidePanelManager>
`;

exports[`SlidePanelManager should render a SlidePanelManager with level three header element and title 1`] = `
<SlidePanelManager
className="test"
id="my-slide-panel-manager"
level={3}
panelBehavior="overlay"
>
<withDisclosureManager(DisclosureManager)
render={[Function]}
supportedDisclosureTypes={
Array [
"panel",
]
}
>
<DisclosureManager
render={[Function]}
supportedDisclosureTypes={
Array [
"panel",
]
}
>
<SlidePanel
className="test"
fill={true}
id="my-slide-panel-manager"
isOpen={false}
mainContent={
<Context.Provider
value={
DisclosureManagerDelegateInstance {
"disclose": [Function],
}
}
>
<withDisclosureManager(Component) />
</Context.Provider>
}
panelBehavior="overlay"
panelContent={
<ContentContainer
fill={true}
header={<React.Fragment />}
>
<SlideGroup
isAnimated={true}
items={Array []}
/>
</ContentContainer>
}
panelPosition="end"
panelSize="small"
>
<div
className="slide-panel fill test"
data-slide-panel-panel-behavior="overlay"
data-slide-panel-panel-position="end"
data-slide-panel-panel-size="small"
id="my-slide-panel-manager"
>
<div
className="main"
key="main"
onClick={[Function]}
onKeyUp={[Function]}
tabIndex="-1"
>
<withDisclosureManager(Component)>
<Component
disclosureManager={
DisclosureManagerDelegateInstance {
"disclose": [Function],
}
}
>
<div>
Hello World
</div>
</Component>
</withDisclosureManager(Component)>
</div>
<div
aria-hidden="true"
className="panel"
key="panel"
tabIndex="-1"
>
<ContentContainer
fill={true}
header={<React.Fragment />}
>
<div
className="content-container-fill"
>
<div
className="header"
/>
<div
className="main"
>
<Scroll
className="normalizer"
>
<div
className="scroll normalizer"
>
<SlideGroup
isAnimated={true}
items={Array []}
/>
</div>
</Scroll>
</div>
</div>
</ContentContainer>
</div>
</div>
</SlidePanel>
</DisclosureManager>
</withDisclosureManager(DisclosureManager)>
</SlidePanelManager>
`;

exports[`SlidePanelManager should render the SlidePanelManager with custom props 1`] = `
<SlidePanelManager
className="test"
id="my-slide-panel-manager"
level={2}
panelBehavior="overlay"
>
<withDisclosureManager(DisclosureManager)
Expand Down Expand Up @@ -421,6 +547,7 @@ exports[`SlidePanelManager should render the SlidePanelManager with custom props

exports[`SlidePanelManager should render the SlidePanelManager with defaults 1`] = `
<SlidePanelManager
level={2}
panelBehavior="overlay"
>
<withDisclosureManager(DisclosureManager)
Expand Down Expand Up @@ -539,6 +666,7 @@ exports[`SlidePanelManager should render the SlidePanelManager with defaults 1`]

exports[`SlidePanelManager should render the SlidePanelManager with squish override 1`] = `
<SlidePanelManager
level={2}
panelBehavior="squish"
>
<withDisclosureManager(DisclosureManager)
Expand Down

0 comments on commit 8b5abca

Please sign in to comment.