UNPKG

tree-table-vue-extend

Version:

A table (with tree-grid) component for Vue.js 2.0 and add some features based on team's own need. (Its style extends iView)

278 lines (231 loc) 4.74 kB
@import "./font/font-awesome.min.css"; // text @prefixCls: zk-table; @css-prefix: ivu-; // color @black: #1F2D3D; @white: #ffffff; @border: #e9eaec; @hoverRow: #ebf7ff; @backgroundRow: #f8f8f9; @primary-color: #2d8cf0; @border-color-base: #dcdee2; // outside // Z-index @zindex-spin: 8; @zindex-spin-fullscreen : 2010; .@{prefixCls} { position: relative; width: 100%; box-sizing: border-box; background-color: @white; border: 1px solid @border; font-size: 12px; line-height: 26px; color: @black; } .@{prefixCls}__header-wrapper, .@{prefixCls}__footer-wrapper { overflow: hidden; } .@{prefixCls}__body-wrapper { overflow: auto; } .@{prefixCls}__header, .@{prefixCls}__body, .@{prefixCls}__footer { width: 100%; table-layout: fixed; border-collapse: collapse; border-spacing: 0; } .@{prefixCls}__header-row { height: 40px; box-sizing: border-box; background-color: @backgroundRow; border-bottom: 1px solid @border; } .@{prefixCls}__footer-row { height: 40px; box-sizing: border-box; background-color: @white; border-top: 1px solid @border; } .@{prefixCls}__body-row { height: 48px; box-sizing: border-box; &:not(:first-of-type) { border-top: 1px solid @border; } } .@{prefixCls}__header-cell, .@{prefixCls}__body-cell, .@{prefixCls}__footer-cell { box-sizing: border-box; text-align: left; vertical-align: middle; word-break: break-all; overflow: hidden; } .@{prefixCls}__header-cell { font-weight: bold; } .@{prefixCls}__cell-inner { padding: 6px 12px; } .@{prefixCls}--firstProp-header-inner { padding-left: 32px; } .@{prefixCls}--empty-row { height: 80px; } .@{prefixCls}--empty-content { text-align: center; } .@{prefixCls}--center-cell { text-align: center; } .@{prefixCls}--right-cell { text-align: right; } .@{prefixCls}--stripe-row { background-color: @backgroundRow; } .@{prefixCls}--row-hover { background-color: @hoverRow; } .@{prefixCls}--border-cell { &:not(:last-of-type) { border-right: 1px solid @border; } } .@{prefixCls}--tree-icon { margin-right: 6px; cursor: pointer; } .@{prefixCls}--expand-inner { text-align: center; cursor: pointer; transition: transform .2s ease-in-out; } .@{prefixCls}--expanded-inner { transform: rotate(90deg); } .@{prefixCls}--expand-content { padding: 20px; } // Size .size(@width; @height) { width: @width; height: @height; } .square(@size) { .size(@size; @size); } // 排序 .zk-table__sort { display: inline-block; width: 14px; height: 16px; margin-left: 5px; vertical-align: middle; overflow: hidden; cursor: pointer; position: relative; i { display: block; overflow: hidden; color: #c5c8ce; transition: color .2s ease-in-out; font-size: 16px; } .fa-fix-up { height: 8px; line-height: 15px; } .fa-fix-down { height: 8px; line-height: 2px; } .fa-color-balck { color: black; } .fa-sort-enabled { color: black; } } // Spin 样式 @spin-prefix-cls: ~"@{css-prefix}spin"; @spin-dot-size-small: 12px; @spin-dot-size: 20px; @spin-dot-size-large: 32px; .@{spin-prefix-cls} { color: @primary-color; vertical-align: middle; text-align: center; &-dot { position: relative; display: block; border-radius: 50%; background-color: @primary-color; .square(@spin-dot-size); animation: ani-spin-bounce 1s 0s ease-in-out infinite; } &-large &-dot { .square(@spin-dot-size-large); } &-small &-dot { .square(@spin-dot-size-small); } &-fix { position: absolute; top: 0; left: 0; z-index: @zindex-spin; .square(100%); background-color: rgba(255,255,255,.9); } &-fullscreen{ z-index: @zindex-spin-fullscreen; &-wrapper{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; } } &-fix &-main { position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } &-fix &-dot { display: inline-block; } &-text, &-show-text &-dot { display: none; } &-show-text &-text { display: block; } } // use in Table loading, Table right border is not included in .ivu-table-wrapper, so fix it .@{prefixCls}__body-wrapper{ > .@{spin-prefix-cls}-fix{ border: 1px solid @border-color-base; border-top: 0; border-left: 0; } } @keyframes ani-spin-bounce { 0% { transform: scale(0); } 100% { transform: scale(1); opacity: 0; } }