diff --git a/packages/react-ui-validations/src/ReactUiDetection.ts b/packages/react-ui-validations/src/ReactUiDetection.ts index 41a8300d778..f4d60307689 100644 --- a/packages/react-ui-validations/src/ReactUiDetection.ts +++ b/packages/react-ui-validations/src/ReactUiDetection.ts @@ -19,4 +19,8 @@ export class ReactUiDetection { public static isTokenInput(childrenArray: any): boolean { return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'TokenInput'; } + + public static isSwitcher(childrenArray: any): boolean { + return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'Switcher'; + } } diff --git a/packages/react-ui-validations/src/ValidationTooltip.tsx b/packages/react-ui-validations/src/ValidationTooltip.tsx index cc3944a31f0..376513ebc1f 100644 --- a/packages/react-ui-validations/src/ValidationTooltip.tsx +++ b/packages/react-ui-validations/src/ValidationTooltip.tsx @@ -27,7 +27,11 @@ export class ValidationTooltip extends React.Component { public render() { const onlyChild = React.Children.only(this.props.children); const child = onlyChild && onlyChild.props ? onlyChild.props.children : null; - if (ReactUiDetection.isRadioGroup(child) || ReactUiDetection.isTokenInput(child)) { + if ( + ReactUiDetection.isRadioGroup(child) || + ReactUiDetection.isTokenInput(child) || + ReactUiDetection.isSwitcher(child) + ) { return ( ); + +interface SwitcherStoryState { + value: string; +} + +class SwitcherStory extends React.Component<{}, SwitcherStoryState> { + public state: SwitcherStoryState = { + value: '', + }; + + private container: ValidationContainer | null = null; + + public validateValue(): Nullable { + const { value } = this.state; + if (!value) { + return { message: 'Поле обязательно', type: 'submit' }; + } + return null; + } + + public render() { + return ( +
+ + + this.setState({ value })} + /> + +
+ +
+
+
+ ); + } + + private refContainer = (el: ValidationContainer | null) => (this.container = el); +} diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome.png new file mode 100644 index 00000000000..999a5eaacea --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc8e4002116c20c974810576c732c8cc48ff268518632c92cfa9d8996df5e303 +size 142664 diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome8px.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome8px.png new file mode 100644 index 00000000000..d6c4a9864c4 --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/chrome8px.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0d5f16a4cd78d1d8dee84e531fd9dcda46693c047895d22ac35c961e775738f +size 147626 diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox.png new file mode 100644 index 00000000000..05d3a35dd57 --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d94ec128e6357816546844be2cb422d72640037352e52fa95685516b5b221247 +size 49064 diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox8px.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox8px.png new file mode 100644 index 00000000000..4afbf49c147 --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/firefox8px.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9f3cb271da7e315e3eb40e0c192756593b7a6cac95b00488c2d873a707710a +size 50254 diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie11.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie11.png new file mode 100644 index 00000000000..26cae56adf3 --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie11.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7fa5375d843d2bcf4e6ef5bcff8eaef5a613e3512f509a0e140ef36b895e8be +size 89495 diff --git a/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie118px.png b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie118px.png new file mode 100644 index 00000000000..4d3b66e8bc2 --- /dev/null +++ b/packages/react-ui/.creevey/images/SidePage/Left SidePage With Right SidePage/ie118px.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f03d8c6fe31f9ae00a94b19c71f414de80a39ccdfb46604b6a11bdd2c5994f8 +size 90101 diff --git a/packages/react-ui/components/SidePage/SidePage.tsx b/packages/react-ui/components/SidePage/SidePage.tsx index e6d6a0c713e..51af64a969d 100644 --- a/packages/react-ui/components/SidePage/SidePage.tsx +++ b/packages/react-ui/components/SidePage/SidePage.tsx @@ -266,7 +266,7 @@ export class SidePage extends React.Component { } private handleStackChange = (stack: ReadonlyArray) => { - const sidePages = stack.filter(x => x instanceof SidePage); + const sidePages = stack.filter(x => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft); const currentSidePagePosition = sidePages.indexOf(this); const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1; diff --git a/packages/react-ui/components/SidePage/__stories__/SidePage.stories.tsx b/packages/react-ui/components/SidePage/__stories__/SidePage.stories.tsx index 90ac1392afb..91871c8c778 100644 --- a/packages/react-ui/components/SidePage/__stories__/SidePage.stories.tsx +++ b/packages/react-ui/components/SidePage/__stories__/SidePage.stories.tsx @@ -320,6 +320,47 @@ class SidePageWithLeftPosition extends React.Component<{ } } +class LeftSidePageWithRightSidePage extends React.Component<{ + disableAnimations?: boolean; +}> { + public render() { + return ( + <> + + test + + + {textSample} + {textSample} + + + + + + + + + + + test + + + {textSample} + {textSample} + + + + + + + + + + + ); + } +} + class SimpleSidePage extends React.Component<{}, {}> { public render() { return ( @@ -615,6 +656,12 @@ SidePageWithLeftPositionStory.story = { parameters: { creevey: { captureElement: null } }, }; +export const LeftSidePageWithRightSidePageStory = () => ; +LeftSidePageWithRightSidePageStory.story = { + name: 'Left SidePage With Right SidePage', + parameters: { creevey: { captureElement: null } }, +}; + export const Simple: CSFStory = () => ; Simple.story = { parameters: {