diff --git a/examples/routers/tree.vue b/examples/routers/tree.vue index 1cdd23ad..f024a31f 100644 --- a/examples/routers/tree.vue +++ b/examples/routers/tree.vue @@ -1,40 +1,68 @@ \ No newline at end of file diff --git a/src/components/tree2/tree.vue b/src/components/tree2/tree.vue new file mode 100644 index 00000000..e59f22ce --- /dev/null +++ b/src/components/tree2/tree.vue @@ -0,0 +1,113 @@ + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index fd9bdad4..495ec9a1 100644 --- a/src/index.js +++ b/src/index.js @@ -40,7 +40,7 @@ import Timeline from './components/timeline'; import TimePicker from './components/time-picker'; import Tooltip from './components/tooltip'; import Transfer from './components/transfer'; -import Tree from './components/tree'; +import Tree from './components/tree2'; import Upload from './components/upload'; import { Row, Col } from './components/grid'; import { Select, Option, OptionGroup } from './components/select'; diff --git a/src/styles/components/tree.less b/src/styles/components/tree.less index 7e767234..ee392aa5 100644 --- a/src/styles/components/tree.less +++ b/src/styles/components/tree.less @@ -1,139 +1,59 @@ @tree-prefix-cls: ~"@{css-prefix}tree"; .@{tree-prefix-cls} { - margin: 0; - padding: 5px; - font-size: @font-size-small; - li { - padding: 0; - margin: 8px 0; + ul{ list-style: none; - white-space: nowrap; - outline: 0; - a[draggable], - a[draggable="true"] { - user-select: none; - /* Required to make elements draggable in old WebKit */ - -khtml-user-drag: element; - -webkit-user-drag: element; + margin: 0; + padding: 5px; + font-size: @font-size-small; + li{ + list-style: none; + margin: 8px 0; + padding: 0; + white-space: nowrap; + outline: none; } - &.drag-over { - > a[draggable] { - background-color: @primary-color; - color: white; - opacity: 0.8; - } - } - &.drag-over-gap-top { - > a[draggable] { - border-top: 2px @primary-color solid; - } - } - &.drag-over-gap-bottom { - > a[draggable] { - border-bottom: 2px @primary-color solid; - } - } - &.filter-node { - > a { - color: @error-color!important; - font-weight: bold!important; - } - } - ul { + } + li{ + ul{ margin: 0; padding: 0 0 0 18px; } - a { - display: inline-block; - margin: 0; - padding: 0 4px; - border-radius: @btn-border-radius-small; - cursor: pointer; - text-decoration: none; - vertical-align: top; - color: @text-color; + } + &-title { + display: inline-block; + margin: 0; + padding: 0 4px; + border-radius: @btn-border-radius-small; + cursor: pointer; + vertical-align: top; + color: @text-color; + transition: all @transition-time @ease-in-out; + &:hover { + background-color: tint(@primary-color, 90%); + } + &-selected, &-selected:hover{ + background-color: tint(@primary-color, 80%); + } + } + &-arrow{ + cursor: pointer; + i{ transition: all @transition-time @ease-in-out; - &:hover { - background-color: tint(@primary-color, 90%); - } - &.@{tree-prefix-cls}-node-selected { - background-color: tint(@primary-color, 80%); + } + &-open{ + i { + transform: rotate(90deg); } } - .@{checkbox-prefix-cls}-wrapper{ - margin-right: 4px; - } - span { - &.@{tree-prefix-cls}-switcher, - &.@{tree-prefix-cls}-iconEle { - display: inline-block; - text-align: center; - width: 16px; - height: 16px; - line-height: 16px; - margin: 0; - vertical-align: middle; - border: 0 none; - cursor: pointer; - outline: none; - } - //&.@{tree-prefix-cls}-icon_loading { - // &:after { - // display: inline-block; - // //.iconfont-font("\e6a1"); - // animation: loadingCircle 1s infinite linear; - // color: @primary-color; - // } - //} - &.@{tree-prefix-cls}-switcher { - i{ - transition: all @transition-time @ease-in-out; - } - &.@{tree-prefix-cls}-switcher-noop { - //display: none; - cursor: auto; - i{ - display: none; - } - } - &.@{tree-prefix-cls}-roots_open, - &.@{tree-prefix-cls}-center_open, - &.@{tree-prefix-cls}-bottom_open, - &.@{tree-prefix-cls}-noline_open { - i { - transform: rotate(90deg); - } - } - &.@{tree-prefix-cls}-roots_close, - &.@{tree-prefix-cls}-center_close, - &.@{tree-prefix-cls}-bottom_close, - &.@{tree-prefix-cls}-noline_close { - - } + &-hidden{ + cursor: auto; + i{ + display: none; } } - } - &-child-tree { - display: none; - &-open { - display: block; + &-disabled{ + cursor: @cursor-disabled; } } - &-treenode-disabled { - >span, - >a, - >a span { - color: @input-disabled-bg; - cursor: not-allowed; - } - } - &-icon__open { - margin-right: 2px; - vertical-align: top; - } - &-icon__close { - margin-right: 2px; - vertical-align: top; - } } \ No newline at end of file diff --git a/src/styles/components/tree2.less b/src/styles/components/tree2.less new file mode 100644 index 00000000..7e767234 --- /dev/null +++ b/src/styles/components/tree2.less @@ -0,0 +1,139 @@ +@tree-prefix-cls: ~"@{css-prefix}tree"; + +.@{tree-prefix-cls} { + margin: 0; + padding: 5px; + font-size: @font-size-small; + li { + padding: 0; + margin: 8px 0; + list-style: none; + white-space: nowrap; + outline: 0; + a[draggable], + a[draggable="true"] { + user-select: none; + /* Required to make elements draggable in old WebKit */ + -khtml-user-drag: element; + -webkit-user-drag: element; + } + &.drag-over { + > a[draggable] { + background-color: @primary-color; + color: white; + opacity: 0.8; + } + } + &.drag-over-gap-top { + > a[draggable] { + border-top: 2px @primary-color solid; + } + } + &.drag-over-gap-bottom { + > a[draggable] { + border-bottom: 2px @primary-color solid; + } + } + &.filter-node { + > a { + color: @error-color!important; + font-weight: bold!important; + } + } + ul { + margin: 0; + padding: 0 0 0 18px; + } + a { + display: inline-block; + margin: 0; + padding: 0 4px; + border-radius: @btn-border-radius-small; + cursor: pointer; + text-decoration: none; + vertical-align: top; + color: @text-color; + transition: all @transition-time @ease-in-out; + &:hover { + background-color: tint(@primary-color, 90%); + } + &.@{tree-prefix-cls}-node-selected { + background-color: tint(@primary-color, 80%); + } + } + .@{checkbox-prefix-cls}-wrapper{ + margin-right: 4px; + } + span { + &.@{tree-prefix-cls}-switcher, + &.@{tree-prefix-cls}-iconEle { + display: inline-block; + text-align: center; + width: 16px; + height: 16px; + line-height: 16px; + margin: 0; + vertical-align: middle; + border: 0 none; + cursor: pointer; + outline: none; + } + //&.@{tree-prefix-cls}-icon_loading { + // &:after { + // display: inline-block; + // //.iconfont-font("\e6a1"); + // animation: loadingCircle 1s infinite linear; + // color: @primary-color; + // } + //} + &.@{tree-prefix-cls}-switcher { + i{ + transition: all @transition-time @ease-in-out; + } + &.@{tree-prefix-cls}-switcher-noop { + //display: none; + cursor: auto; + i{ + display: none; + } + } + &.@{tree-prefix-cls}-roots_open, + &.@{tree-prefix-cls}-center_open, + &.@{tree-prefix-cls}-bottom_open, + &.@{tree-prefix-cls}-noline_open { + i { + transform: rotate(90deg); + } + } + &.@{tree-prefix-cls}-roots_close, + &.@{tree-prefix-cls}-center_close, + &.@{tree-prefix-cls}-bottom_close, + &.@{tree-prefix-cls}-noline_close { + + } + } + } + } + &-child-tree { + display: none; + &-open { + display: block; + } + } + &-treenode-disabled { + >span, + >a, + >a span { + color: @input-disabled-bg; + cursor: not-allowed; + } + } + &-icon__open { + margin-right: 2px; + vertical-align: top; + } + &-icon__close { + margin-right: 2px; + vertical-align: top; + } +} \ No newline at end of file