From 9bebc870ecf831f4ae920a1b3acd0a3b21fb59d9 Mon Sep 17 00:00:00 2001 From: Jon Jackson Date: Mon, 26 Nov 2018 13:18:12 -0500 Subject: [PATCH] fix(Dropdown): Apply `pf-m-plain` modifier to dropdown toggle element instead of wrapper --- .../src/components/Dropdown/Dropdown.js | 11 ++--- .../components/Dropdown/DropdownToggle.d.ts | 1 + .../src/components/Dropdown/DropdownToggle.js | 3 ++ .../src/components/Dropdown/KebabToggle.js | 5 +- .../src/components/Dropdown/Toggle.js | 7 ++- .../__snapshots__/Dropdown.test.js.snap | 47 +++++++++++++++++-- .../__snapshots__/DropdownToggle.test.js.snap | 6 +++ .../__snapshots__/Toggle.test.js.snap | 4 ++ 8 files changed, 72 insertions(+), 12 deletions(-) diff --git a/packages/patternfly-4/react-core/src/components/Dropdown/Dropdown.js b/packages/patternfly-4/react-core/src/components/Dropdown/Dropdown.js index dfa02b059a1..305af7d43cb 100644 --- a/packages/patternfly-4/react-core/src/components/Dropdown/Dropdown.js +++ b/packages/patternfly-4/react-core/src/components/Dropdown/Dropdown.js @@ -50,15 +50,15 @@ const defaultProps = { class Dropdown extends React.Component { render() { const { - className, children, + className, + direction, dropdownItems, isOpen, - toggle, - direction, - onSelect, isPlain, + onSelect, position, + toggle, ...props } = this.props; const id = toggle.props.id || `pf-toggle-id-${currentId++}`; @@ -76,7 +76,6 @@ class Dropdown extends React.Component { {...props} className={css( styles.dropdown, - isPlain && styles.modifiers.plain, direction === DropdownDirection.up && styles.modifiers.top, isOpen && styles.modifiers.expanded, className @@ -85,7 +84,7 @@ class Dropdown extends React.Component { this.parentRef = ref; }} > - {Children.map(toggle, oneToggle => cloneElement(oneToggle, { parentRef: this.parentRef, isOpen, id }))} + {Children.map(toggle, oneToggle => cloneElement(oneToggle, { parentRef: this.parentRef, isOpen, id, isPlain }))} {isOpen && ( { isFocused?: boolean; isHovered?: boolean; isActive?: boolean; + isPlain?: boolean; iconComponent?: ReactType; } diff --git a/packages/patternfly-4/react-core/src/components/Dropdown/DropdownToggle.js b/packages/patternfly-4/react-core/src/components/Dropdown/DropdownToggle.js index af2fac76e01..d6c7cc4e9d2 100644 --- a/packages/patternfly-4/react-core/src/components/Dropdown/DropdownToggle.js +++ b/packages/patternfly-4/react-core/src/components/Dropdown/DropdownToggle.js @@ -31,6 +31,8 @@ DropdownToggle.propTypes = { isHovered: PropTypes.bool, /** Forces active state */ isActive: PropTypes.bool, + /** Display the toggle with no border or background */ + isPlain: PropTypes.bool, /** The icon to display for the toggle. Defaults to CaretDownIcon. Set to null to not show an icon. */ iconComponent: PropTypes.func }; @@ -43,6 +45,7 @@ DropdownToggle.defaultProps = { isFocused: false, isHovered: false, isActive: false, + isPlain: false, onToggle: Function.prototype, iconComponent: CaretDownIcon }; diff --git a/packages/patternfly-4/react-core/src/components/Dropdown/KebabToggle.js b/packages/patternfly-4/react-core/src/components/Dropdown/KebabToggle.js index 127fb90e355..4b78f79c56d 100644 --- a/packages/patternfly-4/react-core/src/components/Dropdown/KebabToggle.js +++ b/packages/patternfly-4/react-core/src/components/Dropdown/KebabToggle.js @@ -31,7 +31,9 @@ Kebab.propTypes = { /** Forces hover state */ isHovered: PropTypes.bool, /** Forces active state */ - isActive: PropTypes.bool + isActive: PropTypes.bool, + /** Display the toggle with no border or background */ + isPlain: PropTypes.bool }; Kebab.defaultProps = { id: '', @@ -43,6 +45,7 @@ Kebab.defaultProps = { isFocused: false, isHovered: false, isActive: false, + isPlain: false, onToggle: Function.prototype }; diff --git a/packages/patternfly-4/react-core/src/components/Dropdown/Toggle.js b/packages/patternfly-4/react-core/src/components/Dropdown/Toggle.js index 7408a7d19a3..d1fa261c48f 100644 --- a/packages/patternfly-4/react-core/src/components/Dropdown/Toggle.js +++ b/packages/patternfly-4/react-core/src/components/Dropdown/Toggle.js @@ -22,7 +22,9 @@ const propTypes = { /** Forces hover state */ isHovered: PropTypes.bool, /** Forces active state */ - isActive: PropTypes.bool + isActive: PropTypes.bool, + /** Display the toggle with no border or background */ + isPlain: PropTypes.bool }; const defaultProps = { @@ -33,6 +35,7 @@ const defaultProps = { isFocused: false, isHovered: false, isActive: false, + isPlain: false, onToggle: Function.prototype }; @@ -70,6 +73,7 @@ class DropdownToggle extends Component { isFocused, isActive, isHovered, + isPlain, onToggle, parentRef, id, @@ -87,6 +91,7 @@ class DropdownToggle extends Component { isFocused && styles.modifiers.focus, isHovered && styles.modifiers.hover, isActive && styles.modifiers.active, + isPlain && styles.modifiers.plain, className )} onClick={_event => onToggle && onToggle(!isOpen)} diff --git a/packages/patternfly-4/react-core/src/components/Dropdown/__snapshots__/Dropdown.test.js.snap b/packages/patternfly-4/react-core/src/components/Dropdown/__snapshots__/Dropdown.test.js.snap index 341fbbca8f1..b13625fef0a 100644 --- a/packages/patternfly-4/react-core/src/components/Dropdown/__snapshots__/Dropdown.test.js.snap +++ b/packages/patternfly-4/react-core/src/components/Dropdown/__snapshots__/Dropdown.test.js.snap @@ -49,6 +49,7 @@ exports[`KebabToggle basic 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} /> @@ -65,6 +66,7 @@ exports[`KebabToggle basic 1`] = ` isFocused={false} isHovered={false} isOpen={true} + isPlain={false} key=".0" onToggle={[Function]} parentRef={null} @@ -77,6 +79,7 @@ exports[`KebabToggle basic 1`] = ` isFocused={false} isHovered={false} isOpen={true} + isPlain={false} onToggle={[Function]} parentRef={null} > @@ -237,6 +240,7 @@ exports[`KebabToggle dropup + right aligned 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} /> @@ -253,6 +257,7 @@ exports[`KebabToggle dropup + right aligned 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} key=".0" onToggle={[Function]} parentRef={null} @@ -265,6 +270,7 @@ exports[`KebabToggle dropup + right aligned 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} > @@ -408,6 +414,7 @@ exports[`KebabToggle dropup 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} /> @@ -424,6 +431,7 @@ exports[`KebabToggle dropup 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} key=".0" onToggle={[Function]} parentRef={null} @@ -436,6 +444,7 @@ exports[`KebabToggle dropup 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} > @@ -607,6 +616,7 @@ exports[`KebabToggle expanded 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} /> @@ -623,6 +633,7 @@ exports[`KebabToggle expanded 1`] = ` isFocused={false} isHovered={false} isOpen={true} + isPlain={false} key=".0" onToggle={[Function]} parentRef={null} @@ -635,6 +646,7 @@ exports[`KebabToggle expanded 1`] = ` isFocused={false} isHovered={false} isOpen={true} + isPlain={false} onToggle={[Function]} parentRef={null} > @@ -838,7 +850,7 @@ exports[`KebabToggle expanded 1`] = ` `; exports[`KebabToggle plain 1`] = ` -.pf-c-dropdown__toggle { +.pf-c-dropdown__toggle.pf-m-plain { display: flex; position: relative; align-items: center; @@ -851,7 +863,7 @@ exports[`KebabToggle plain 1`] = ` line-height: 1.5; background-color: transparent; } -.pf-c-dropdown.pf-m-plain { +.pf-c-dropdown { display: inline-block; position: relative; max-width: 100%; @@ -938,13 +950,14 @@ exports[`KebabToggle plain 1`] = ` isFocused={false} isHovered={false} isOpen={false} + isPlain={false} onToggle={[Function]} parentRef={null} /> } >