diff --git a/packages/react-core/src/layouts/Split/Split.tsx b/packages/react-core/src/layouts/Split/Split.tsx index ca645725629..2b28600f54e 100644 --- a/packages/react-core/src/layouts/Split/Split.tsx +++ b/packages/react-core/src/layouts/Split/Split.tsx @@ -5,13 +5,13 @@ import { css } from '@patternfly/react-styles'; export interface SplitProps extends React.HTMLProps { /** Adds space between children. */ hasGutter?: boolean; - /** Allows children to wrap */ + /** Allows children to wrap. */ isWrappable?: boolean; - /** content rendered inside the Split layout */ + /** content rendered inside the split layout. */ children?: React.ReactNode; - /** additional classes added to the Split layout */ + /** Additional classes added to the split layout. */ className?: string; - /** Sets the base component to render. defaults to div */ + /** Sets the base component to render. Defaults to div. */ component?: React.ReactNode; } diff --git a/packages/react-core/src/layouts/Split/SplitItem.tsx b/packages/react-core/src/layouts/Split/SplitItem.tsx index e3e45123fb3..bbdb5e30d26 100644 --- a/packages/react-core/src/layouts/Split/SplitItem.tsx +++ b/packages/react-core/src/layouts/Split/SplitItem.tsx @@ -3,22 +3,28 @@ import styles from '@patternfly/react-styles/css/layouts/Split/split'; import { css } from '@patternfly/react-styles'; export interface SplitItemProps extends React.HTMLProps { - /** Flag indicating if this Split Layout item should fill the available horizontal space. */ + /** Flag indicating if this split layout item should fill the available horizontal space. */ isFilled?: boolean; - /** content rendered inside the Split Layout Item */ + /** Content rendered inside the split layout item. */ children?: React.ReactNode; - /** additional classes added to the Split Layout Item */ + /** Additional classes added to the split layout item. */ className?: string; + /** Sets the base component to render. Defaults to div. */ + component?: React.ReactNode; } export const SplitItem: React.FunctionComponent = ({ isFilled = false, className = '', children = null, + component = 'div', ...props -}: SplitItemProps) => ( -
- {children} -
-); +}: SplitItemProps) => { + const Component = component as any; + return ( + + {children} + + ); +}; SplitItem.displayName = 'SplitItem'; diff --git a/packages/react-core/src/layouts/Split/__tests__/Split.test.tsx b/packages/react-core/src/layouts/Split/__tests__/Split.test.tsx index 5bed6e00e6d..f3bb76c48b1 100644 --- a/packages/react-core/src/layouts/Split/__tests__/Split.test.tsx +++ b/packages/react-core/src/layouts/Split/__tests__/Split.test.tsx @@ -51,3 +51,21 @@ test('Wrappable', () => { ); expect(asFragment()).toMatchSnapshot(); }); + +test('component on Split', () => { + const { asFragment } = render( + + Basic content + + ); + expect(asFragment()).toMatchSnapshot(); +}); + +test('component on SplitItem', () => { + const { asFragment } = render( + + Basic content + + ); + expect(asFragment()).toMatchSnapshot(); +}); diff --git a/packages/react-core/src/layouts/Split/__tests__/__snapshots__/Split.test.tsx.snap b/packages/react-core/src/layouts/Split/__tests__/__snapshots__/Split.test.tsx.snap index 8dc13306f07..ad9ab815e0a 100644 --- a/packages/react-core/src/layouts/Split/__tests__/__snapshots__/Split.test.tsx.snap +++ b/packages/react-core/src/layouts/Split/__tests__/__snapshots__/Split.test.tsx.snap @@ -93,6 +93,34 @@ exports[`Wrappable 1`] = ` `; +exports[`component on Split 1`] = ` + + +
+ Basic content +
+
+
+`; + +exports[`component on SplitItem 1`] = ` + +
+ + Basic content + +
+
+`; + exports[`isFilled 1`] = `
{ /** Adds space between children. */ hasGutter?: boolean; - /** content rendered inside the Stack layout */ + /** Content rendered inside the stack layout. */ children?: React.ReactNode; - /** additional classes added to the Stack layout */ + /** Additional classes added to the stack layout. */ className?: string; - /** Sets the base component to render. defaults to div */ + /** Sets the base component to render. Defaults to div. */ component?: React.ReactNode; } diff --git a/packages/react-core/src/layouts/Stack/StackItem.tsx b/packages/react-core/src/layouts/Stack/StackItem.tsx index f98c047f1e3..3df743e65c3 100644 --- a/packages/react-core/src/layouts/Stack/StackItem.tsx +++ b/packages/react-core/src/layouts/Stack/StackItem.tsx @@ -3,22 +3,28 @@ import styles from '@patternfly/react-styles/css/layouts/Stack/stack'; import { css } from '@patternfly/react-styles'; export interface StackItemProps extends React.HTMLProps { - /** Flag indicating if this Stack Layout item should fill the available vertical space. */ + /** Flag indicating if this stack layout item should fill the available vertical space. */ isFilled?: boolean; - /** additional classes added to the Stack Layout Item */ + /** Additional classes added to the stack layout item. */ children?: React.ReactNode; - /** content rendered inside the Stack Layout Item */ + /** Content rendered inside the stack layout item. */ className?: string; + /** Sets the base component to render. Defaults to div. */ + component?: React.ReactNode; } export const StackItem: React.FunctionComponent = ({ isFilled = false, className = '', children = null, + component = 'div', ...props -}: StackItemProps) => ( -
- {children} -
-); +}: StackItemProps) => { + const Component = component as any; + return ( + + {children} + + ); +}; StackItem.displayName = 'StackItem'; diff --git a/packages/react-core/src/layouts/Stack/__tests__/Stack.test.tsx b/packages/react-core/src/layouts/Stack/__tests__/Stack.test.tsx index 6969f24bfb7..185248f03f1 100644 --- a/packages/react-core/src/layouts/Stack/__tests__/Stack.test.tsx +++ b/packages/react-core/src/layouts/Stack/__tests__/Stack.test.tsx @@ -3,7 +3,7 @@ import { render } from '@testing-library/react'; import { Stack } from '../Stack'; import { StackItem } from '../StackItem'; -test('isMain set to true', () => { +test('isFilled set to true', () => { const { asFragment } = render( Filled content @@ -12,7 +12,7 @@ test('isMain set to true', () => { expect(asFragment()).toMatchSnapshot(); }); -test('isMain defaults to false', () => { +test('isFilled defaults to false', () => { const { asFragment } = render( Basic content @@ -29,3 +29,21 @@ test('gutter', () => { ); expect(asFragment()).toMatchSnapshot(); }); + +test('component on Stack', () => { + const { asFragment } = render( + + Basic content + + ); + expect(asFragment()).toMatchSnapshot(); +}); + +test('component on StackItem', () => { + const { asFragment } = render( + + Basic content + + ); + expect(asFragment()).toMatchSnapshot(); +}); diff --git a/packages/react-core/src/layouts/Stack/__tests__/__snapshots__/Stack.test.tsx.snap b/packages/react-core/src/layouts/Stack/__tests__/__snapshots__/Stack.test.tsx.snap index 5a4f1f25441..a67c635af07 100644 --- a/packages/react-core/src/layouts/Stack/__tests__/__snapshots__/Stack.test.tsx.snap +++ b/packages/react-core/src/layouts/Stack/__tests__/__snapshots__/Stack.test.tsx.snap @@ -1,5 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`component on Stack 1`] = ` + + +
+ Basic content +
+
+
+`; + +exports[`component on StackItem 1`] = ` + +
+ + Basic content + +
+
+`; + exports[`gutter 1`] = `
`; -exports[`isMain defaults to false 1`] = ` +exports[`isFilled defaults to false 1`] = `
`; -exports[`isMain set to true 1`] = ` +exports[`isFilled set to true 1`] = `