This commit is contained in:
Andrey Savihin 2019-07-05 15:16:23 +03:00
commit eb0d155ecf
3 changed files with 68 additions and 52 deletions

View File

@ -3,7 +3,6 @@ import { storiesOf } from '@storybook/react';
import { withKnobs, boolean, text,select} from '@storybook/addon-knobs/react'; import { withKnobs, boolean, text,select} from '@storybook/addon-knobs/react';
import withReadme from 'storybook-readme/with-readme'; import withReadme from 'storybook-readme/with-readme';
import Readme from './README.md'; import Readme from './README.md';
import styled from '@emotion/styled';
import { TreeMenu, TreeNode } from 'asc-web-components'; import { TreeMenu, TreeNode } from 'asc-web-components';
import { Icons } from 'asc-web-components'; import { Icons } from 'asc-web-components';
import { action } from '@storybook/addon-actions'; import { action } from '@storybook/addon-actions';
@ -34,7 +33,7 @@ const TreeMenuStory = props => {
const onDragEnter = (info) => { const onDragEnter = (info) => {
setExpandedKeys(info.expandedKeys); setExpandedKeys(info.expandedKeys);
} };
const onDrop = (info) => { const onDrop = (info) => {
info.event.persist(); info.event.persist();
@ -43,8 +42,8 @@ const TreeMenuStory = props => {
const dropPos = info.node.props.pos.split('-'); const dropPos = info.node.props.pos.split('-');
const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]); const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
const loop = (data, key, callback) => { const loop = (treeData, key, callback) => {
data.forEach((item, index, arr) => { treeData.forEach((item, index, arr) => {
if (item.key === key) { if (item.key === key) {
callback(item, index, arr); callback(item, index, arr);
return; return;
@ -54,16 +53,17 @@ const TreeMenuStory = props => {
} }
}); });
}; };
const data = [...gData];
const treeData = [...gData];
let dragObj; let dragObj;
loop(data, dragKey, (item, index, arr) => { loop(treeData, dragKey, (item, index, arr) => {
arr.splice(index, 1); arr.splice(index, 1);
dragObj = item; dragObj = item;
}); });
if (!info.dropToGap) { if (!info.dropToGap) {
loop(data, dropKey, (item) => { loop(treeData, dropKey, (item) => {
item.children = item.children || []; item.children = item.children || [];
item.children.push(dragObj); item.children.push(dragObj);
}); });
@ -72,14 +72,14 @@ const TreeMenuStory = props => {
info.node.props.expanded && info.node.props.expanded &&
dropPosition === 1 dropPosition === 1
) { ) {
loop(data, dropKey, (item) => { loop(treeData, dropKey, (item) => {
item.children = item.children || []; item.children = item.children || [];
item.children.unshift(dragObj); item.children.unshift(dragObj);
}); });
} else { } else {
let ar; let ar;
let i; let i;
loop(data, dropKey, (item, index, arr) => { loop(treeData, dropKey, (item, index, arr) => {
ar = arr; ar = arr;
i = index; i = index;
}); });
@ -89,17 +89,17 @@ const TreeMenuStory = props => {
ar.splice(i + 1, 0, dragObj); ar.splice(i + 1, 0, dragObj);
} }
} }
setGData(data); setGData(treeData);
}; };
const onExpand = (expandedKeys) => { const onExpand = (expandedKeys) => {
setExpandedKeys(expandedKeys); setExpandedKeys(expandedKeys);
setAutoExpandParent(false); setAutoExpandParent(false);
} }
const loop = data => { const getTreeNodes = tree => {
return data.map((item) => { return tree.map((item) => {
if (item.children && item.children.length) { if (item.children && item.children.length) {
return <TreeNode title={text('title', 'Title')} key={item.key} icon={React.createElement(Icons[select('icon', iconNames, 'CatalogFolderIcon')], {size: "scale", isfill:true, color: "dimgray"})} >{loop(item.children)}</TreeNode>; return <TreeNode title={text('title', 'Title')} key={item.key} icon={React.createElement(Icons[select('icon', iconNames, 'CatalogFolderIcon')], {size: "scale", isfill:true, color: "dimgray"})} >{getTreeNodes(item.children)}</TreeNode>;
} }
return <TreeNode key={item.key} title={text('title', 'Title')} icon={React.createElement(Icons[select('icon', iconNames, 'CatalogFolderIcon')], {size: "scale", isfill:true, color: "dimgray"})} ></TreeNode>; return <TreeNode key={item.key} title={text('title', 'Title')} icon={React.createElement(Icons[select('icon', iconNames, 'CatalogFolderIcon')], {size: "scale", isfill:true, color: "dimgray"})} ></TreeNode>;
}); });
@ -147,7 +147,7 @@ const TreeMenuStory = props => {
onRightClick={action("rightClick")} onRightClick={action("rightClick")}
> >
{loop(gData)} {getTreeNodes(gData)}
</TreeMenu> </TreeMenu>
</div> </div>
); );

View File

@ -27,15 +27,21 @@ const StyledInput = styled(Input).attrs((props) => ({
box-shadow: none; box-shadow: none;
box-sizing: border-box; box-sizing: border-box;
border: solid 1px; border: solid 1px;
border-color: ${props => (props.hasError && '#c30') || (props.hasWarning && '#f1ca92') || '#c7c7c7'}; border-color: ${props => (props.hasError && '#c30') || (props.hasWarning && '#f1ca92') || (props.isDisabled && '#ECEEF1')|| '#D0D5DA'};
-moz-border-radius: 3px; -moz-border-radius: 3px;
-webkit-border-radius: 3px; -webkit-border-radius: 3px;
background-color: ${props => props.isDisabled ? '#efefef' : '#fff'}; background-color: ${props => props.isDisabled ? '#F8F9F9' : '#fff'};
color: ${props => props.isDisabled ? '#666562' : '#434341'}; color: ${props => props.isDisabled ? '#D0D5DA' : '#333333'};
display: flex; display: flex;
font-family: 'Open Sans', sans-serif; font-family: 'Open Sans', sans-serif;
line-height: ${props =>
(props.size === 'base' && '20px') ||
(props.size === 'middle' && '20px') ||
(props.size === 'big' && '20px') ||
(props.size === 'huge' && '20px')
};
font-size: ${props => font-size: ${props =>
(props.size === 'base' && '12px') || (props.size === 'base' && '13px') ||
(props.size === 'middle' && '14px') || (props.size === 'middle' && '14px') ||
(props.size === 'big' && '16px') || (props.size === 'big' && '16px') ||
(props.size === 'huge' && '18px') (props.size === 'huge' && '18px')
@ -44,7 +50,7 @@ const StyledInput = styled(Input).attrs((props) => ({
outline: none; outline: none;
overflow: hidden; overflow: hidden;
padding: ${props => padding: ${props =>
(props.size === 'base' && '4px 8px') || (props.size === 'base' && '5px 7px') ||
(props.size === 'middle' && '8px 12px') || (props.size === 'middle' && '8px 12px') ||
(props.size === 'big' && '8px 16px') || (props.size === 'big' && '8px 16px') ||
(props.size === 'huge' && '8px 20px') (props.size === 'huge' && '8px 20px')
@ -52,32 +58,39 @@ const StyledInput = styled(Input).attrs((props) => ({
transition: all 0.2s ease 0s; transition: all 0.2s ease 0s;
width: ${props => width: ${props =>
(props.scale && '100%') || (props.scale && '100%') ||
(props.size === 'base' && '135px') || (props.size === 'base' && '173px') ||
(props.size === 'middle' && '300px') || (props.size === 'middle' && '300px') ||
(props.size === 'big' && '350px') || (props.size === 'big' && '350px') ||
(props.size === 'huge' && '500px') (props.size === 'huge' && '500px')
}; };
::-webkit-input-placeholder { ::-webkit-input-placeholder {
color: #b2b2b2; color: ${props => props.isDisabled ? '#D0D5DA' : '#A3A9AE'};
font-family: 'Open Sans',sans-serif font-family: 'Open Sans',sans-serif
} }
:-moz-placeholder { :-moz-placeholder {
color: #b2b2b2; color: ${props => props.isDisabled ? '#D0D5DA' : '#A3A9AE'};
font-family: 'Open Sans',sans-serif font-family: 'Open Sans',sans-serif
} }
::-moz-placeholder { ::-moz-placeholder {
color: #b2b2b2; color: ${props => props.isDisabled ? '#D0D5DA' : '#A3A9AE'};
font-family: 'Open Sans',sans-serif font-family: 'Open Sans',sans-serif
} }
:-ms-input-placeholder { :-ms-input-placeholder {
color: #b2b2b2; color: ${props => props.isDisabled ? '#D0D5DA' : '#A3A9AE'};
font-family: 'Open Sans',sans-serif font-family: 'Open Sans',sans-serif
} }
:hover{
border-color: ${props => props.isDisabled ? '#ECEEF1' : '#A3A9AE'};
}
:focus{
border-color: #2DA7DB;
}
`; `;
const TextInput = props => <StyledInput {...props} /> const TextInput = props => <StyledInput {...props} />

View File

@ -195,6 +195,9 @@ const TreeNodeMenu = styled(TreeNode)`
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
span.rc-tree-title:first-child{
max-width: 100%;
}
.rc-tree-node-selected { .rc-tree-node-selected {
background: #DFE2E3; background: #DFE2E3;
mix-blend-mode: normal; mix-blend-mode: normal;