mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-24 20:36:40 +07:00
#23 changed promoted button appearance
This commit is contained in:
parent
82aeb7f147
commit
32aaa3f794
7 changed files with 86 additions and 83 deletions
|
@ -1,7 +1,8 @@
|
||||||
import React, { FC, useCallback, useEffect, useRef } from 'react';
|
import React, { FC, useCallback } from 'react';
|
||||||
import { IEditorComponentProps } from '~/redux/node/types';
|
import { IEditorComponentProps } from '~/redux/node/types';
|
||||||
import { usePopper } from 'react-popper';
|
|
||||||
import { Button } from '~/components/input/Button';
|
import { Button } from '~/components/input/Button';
|
||||||
|
import { Icon } from '~/components/input/Icon';
|
||||||
|
import styles from './styles.module.scss';
|
||||||
|
|
||||||
interface IProps extends IEditorComponentProps {}
|
interface IProps extends IEditorComponentProps {}
|
||||||
|
|
||||||
|
@ -17,9 +18,8 @@ const EditorPublicSwitch: FC<IProps> = ({ data, setData }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
color={data.is_promoted ? 'primary' : 'secondary'}
|
color={data.is_promoted ? 'primary' : 'lab'}
|
||||||
type="button"
|
type="button"
|
||||||
iconLeft={data.is_promoted ? 'waves' : 'lab'}
|
|
||||||
size="giant"
|
size="giant"
|
||||||
label={
|
label={
|
||||||
data.is_promoted
|
data.is_promoted
|
||||||
|
@ -27,8 +27,17 @@ const EditorPublicSwitch: FC<IProps> = ({ data, setData }) => {
|
||||||
: 'Видно только сотрудникам в лаборатории'
|
: 'Видно только сотрудникам в лаборатории'
|
||||||
}
|
}
|
||||||
onClick={onChange}
|
onClick={onChange}
|
||||||
|
className={styles.button}
|
||||||
round
|
round
|
||||||
/>
|
>
|
||||||
|
{data.is_promoted ? (
|
||||||
|
<Icon icon="waves" size={24} />
|
||||||
|
) : (
|
||||||
|
<div className={styles.lab_wrapper}>
|
||||||
|
<Icon icon="lab" size={24} />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Button>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,63 +1,63 @@
|
||||||
@import "src/styles/variables";
|
@import "src/styles/variables";
|
||||||
|
|
||||||
.wrap {
|
@keyframes move_1 {
|
||||||
@include outer_shadow();
|
0% {
|
||||||
@include editor_round_button();
|
transform: scale(0) translate(0, 0);
|
||||||
|
opacity: 0;
|
||||||
transition: all 0.5s;
|
|
||||||
fill: $content_bg;
|
|
||||||
background-color: $olive;
|
|
||||||
|
|
||||||
&.promoted {
|
|
||||||
background-color: lighten($content_bg, 4%);
|
|
||||||
fill: $red;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
50% {
|
||||||
opacity: 1;
|
transform: scale(1) translate(5px, -5px);
|
||||||
|
|
||||||
.tooltip {
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
100% {
|
||||||
width: 100%;
|
transform: scale(1.2) translate(-5px, -10px);
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
z-index: 1;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tooltip {
|
@keyframes move_2 {
|
||||||
border-radius: 2px;
|
0% {
|
||||||
background: darken($content_bg, 6%);
|
transform: scale(0) translate(0, 0);
|
||||||
padding: $gap;
|
|
||||||
position: absolute;
|
|
||||||
font: $font_12_semibold;
|
|
||||||
bottom: 100%;
|
|
||||||
right: 0;
|
|
||||||
transform: translate(0, -$gap);
|
|
||||||
text-align: center;
|
|
||||||
touch-action: none;
|
|
||||||
pointer-events: none;
|
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
width: 100px;
|
}
|
||||||
user-select: none;
|
|
||||||
transition: all 0.1s;
|
50% {
|
||||||
|
transform: scale(1) translate(-5px, -5px);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: scale(1.6) translate(5px, -10px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.lab_wrapper {
|
||||||
|
position: relative;
|
||||||
|
bottom: -2px;
|
||||||
|
|
||||||
|
.button:hover & {
|
||||||
|
&:before,&:after {
|
||||||
|
content: ' ';
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
left: 10px;
|
||||||
|
width: 2px;
|
||||||
|
height: 2px;
|
||||||
|
box-shadow: white 0 0 0 2px;
|
||||||
|
border-radius: 4px;
|
||||||
|
animation: move_1 0.5s infinite linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
animation: move_2 0.5s -0.25s infinite linear;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ type IButtonProps = DetailedHTMLProps<
|
||||||
HTMLButtonElement
|
HTMLButtonElement
|
||||||
> & {
|
> & {
|
||||||
size?: 'mini' | 'normal' | 'big' | 'giant' | 'micro' | 'small';
|
size?: 'mini' | 'normal' | 'big' | 'giant' | 'micro' | 'small';
|
||||||
color?: 'primary' | 'secondary' | 'outline' | 'link' | 'gray';
|
color?: 'primary' | 'secondary' | 'outline' | 'link' | 'gray' | 'lab';
|
||||||
iconLeft?: IIcon;
|
iconLeft?: IIcon;
|
||||||
iconRight?: IIcon;
|
iconRight?: IIcon;
|
||||||
title?: string;
|
title?: string;
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
filter: grayscale(0);
|
filter: grayscale(0);
|
||||||
|
|
||||||
transition: opacity 0.25s, filter 0.25s, box-shadow 0.25s;
|
transition: opacity 0.25s, filter 0.25s, box-shadow 0.25s, background-color 0.5s;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
|
|
||||||
@include outer_shadow();
|
@include outer_shadow();
|
||||||
|
@ -77,12 +77,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:global(.red) {
|
|
||||||
fill: $red;
|
|
||||||
stroke: $red;
|
|
||||||
color: $red;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:global(.stretchy) {
|
&:global(.stretchy) {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
@ -123,14 +117,6 @@
|
||||||
padding-right: $gap;
|
padding-right: $gap;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.primary {
|
|
||||||
background: $red_gradient;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.secondary {
|
|
||||||
background: $green_gradient;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.outline {
|
&.outline {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
box-shadow: inset transparentize(white, 0.8) 0 0 0 2px;
|
box-shadow: inset transparentize(white, 0.8) 0 0 0 2px;
|
||||||
|
@ -231,3 +217,15 @@
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.primary {
|
||||||
|
background: $red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.secondary {
|
||||||
|
background: $wisegreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lab {
|
||||||
|
background: $blue;
|
||||||
|
}
|
||||||
|
|
|
@ -95,11 +95,7 @@ const EditorDialogUnconnected: FC<IProps> = ({
|
||||||
maxLength={256}
|
maxLength={256}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Button
|
<Button title="Сохранить" iconRight="check" color={data.is_promoted ? 'primary' : 'lab'} />
|
||||||
title="Сохранить"
|
|
||||||
iconRight="check"
|
|
||||||
color={data.is_promoted ? 'primary' : 'secondary'}
|
|
||||||
/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Padder>
|
</Padder>
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
$red: #ff3344;
|
$red: #ff3344;
|
||||||
$yellow: #ffd60f;
|
$yellow: #ffd60f;
|
||||||
$dark_blue: #3c75ff;
|
$dark_blue: #3c75ff;
|
||||||
$blue: #3ca1ff;
|
$blue: #582cd0;
|
||||||
$green: #00d2b9;
|
$green: #00d2b9;
|
||||||
//$green: #00503c;
|
//$green: #00503c;
|
||||||
$olive: #8bc12a;
|
$olive: #8bc12a;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue