From de4417ba98d3af60850d93ab3bbc20d3df23526e Mon Sep 17 00:00:00 2001 From: Viktor Zdorovtsev Date: Thu, 11 Jul 2024 17:57:29 +0700 Subject: [PATCH 1/5] feat(Divider): render content inside --- src/components/Divider/Divider.scss | 32 ++++++++++++++++++ src/components/Divider/Divider.tsx | 11 +++++-- .../Divider/__stories__/Divider.stories.tsx | 33 +++++++++++++++++++ .../Divider/__tests__/Divider.test.tsx | 22 +++++++++++++ 4 files changed, 95 insertions(+), 3 deletions(-) diff --git a/src/components/Divider/Divider.scss b/src/components/Divider/Divider.scss index 4139723fe8..a462c452fb 100644 --- a/src/components/Divider/Divider.scss +++ b/src/components/Divider/Divider.scss @@ -12,4 +12,36 @@ $block: '.#{variables.$ns}divider'; border-block-start: 1px solid var(--g-divider-color, var(--g-color-line-generic)); } } + + &:not(:empty) { + border: none; + display: flex; + align-items: center; + + &::before, + &::after { + content: ''; + height: 1px; + flex-grow: 1; + background: var(--g-divider-color, var(--g-color-line-generic)); + } + + &::before { + margin-inline-end: 8px; + } + + &::after { + margin-inline-start: 8px; + } + } + + &_align { + &_start::before { + display: none; + } + + &_end::after { + display: none; + } + } } diff --git a/src/components/Divider/Divider.tsx b/src/components/Divider/Divider.tsx index 8ac333c182..bfade0711f 100644 --- a/src/components/Divider/Divider.tsx +++ b/src/components/Divider/Divider.tsx @@ -6,24 +6,29 @@ import {block} from '../utils/cn'; import './Divider.scss'; export type DividerOrientation = 'vertical' | 'horizontal'; +export type DividerAlign = 'start' | 'center' | 'end'; export interface DividerProps extends DOMProps, QAProps { orientation?: DividerOrientation; + align?: DividerAlign; + children?: React.ReactNode; } const b = block('divider'); export const Divider = React.forwardRef(function Divider(props, ref) { - const {orientation = 'horizontal', className, style, qa} = props; + const {orientation = 'horizontal', className, style, qa, children, align = 'start'} = props; return (
+ > + {children} +
); }); diff --git a/src/components/Divider/__stories__/Divider.stories.tsx b/src/components/Divider/__stories__/Divider.stories.tsx index 16e89a446b..db23afeb4a 100644 --- a/src/components/Divider/__stories__/Divider.stories.tsx +++ b/src/components/Divider/__stories__/Divider.stories.tsx @@ -1,12 +1,15 @@ import React from 'react'; +import {Check as CheckIcon} from '@gravity-ui/icons'; import type {Meta, StoryObj} from '@storybook/react'; import {Showcase} from '../../../demo/Showcase'; import {Card} from '../../Card'; +import {Icon} from '../../Icon'; import {ListItem} from '../../List'; import {Flex} from '../../layout'; import {Divider} from '../Divider'; +import type {DividerProps} from '../Divider'; const meta: Meta = { title: 'Components/Utils/Divider', @@ -57,6 +60,7 @@ export const Horizontal: Story = { style: disabledControl, qa: disabledControl, className: disabledControl, + align: disabledControl, }, render: (args) => { return ( @@ -93,6 +97,7 @@ export const Vertical: Story = { style: disabledControl, qa: disabledControl, className: disabledControl, + align: disabledControl, }, render: (args) => ( @@ -124,6 +129,9 @@ export const Custom: Story = { className: 'custom-divider', style: {borderWidth: '2px'}, }, + argTypes: { + align: disabledControl, + }, render: (args) => (