| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- <template>
- <div class="main-menu lt-nv">
- <ol class="nav-l-1">
- <dt>指南</dt>
- <dd :class="curName=='intr' ?'l-1 curs':'l-1'">
- <a href="#/doc">介绍</a>
- </dd>
- <dd :class="curName=='fastStart' ?'l-1 curs':'l-1'">
- <a href="#/start">快速上手</a>
- </dd>
- <dd :class="curName=='theme' ?'l-1 curs':'l-1'">
- <a href="#/theme">主题定制</a>
- </dd>
- <dd :class="curName== 'international' ?'l-1 curs':'l-1'">
- <a href="#/international">国际化</a>
- </dd>
- <dd :class="curName=='update' ?'l-1 curs':'l-1'">
- <a href="https://github.com/jdf2e/nutui/releases" target="_blank">更新日志</a>
- </dd>
- </ol>
- <ol>
- <dt>组件</dt>
- <dd
- class="l-1"
- @click="selectNav(nameObj.name)"
- :class="cur.indexOf(nameObj.name)>-1&&'cur'"
- v-for="(nameObj,index) in sortedPackages"
- :key="index"
- >
- <div class="l-c-i">
- <span>{{nameObj.name}}</span>
- <i class="pt"></i>
- </div>
- <ul class="l-2" v-if="cur.indexOf(nameObj.name)>-1">
- <template v-for="cpt in nameObj.ary">
- <li
- v-on:click.stop="listCheck(cpt)"
- :class="curName==cpt.name ?'curs':''"
- :key="cpt.name" v-if="cpt.showDemo"
- >
- <router-link :to="{name:cpt.name}">
- {{cpt.name}}
- <span>{{cpt.chnName}}</span>
- </router-link>
- </li>
- </template>
- </ul>
- </dd>
- </ol>
- </div>
- </template>
- <script>
- import { sorts,packages } from "../../src/config.json";
- export default {
- name: "index",
- data() {
- return {
- path: "",
- packages: {},
- sortedPackages: [],
- cur: [],
- curName: ""
- };
- },
- watch: {
- packages() {
- const compare = (obj1, obj2) => {
- const val1 = obj1.name;
- const val2 = obj2.name;
- if (val1 < val2) {
- return -1;
- } else if (val1 > val2) {
- return 1;
- } else {
- return 0;
- }
- };
- let that = this;
- let tempAry = [];
- let temp = {};
- let sorts = this.sorts;
- let sortArys = [...this.packages].sort(compare);
- sortArys.map(item => {
- let name = sorts[item.sort];
- if (!temp[name]) {
- temp[name] = [];
- }
- temp[name].push(item);
- });
- for (let key in temp) {
- tempAry.push({
- name: key,
- ary: temp[key]
- });
- }
- let routeName = this.$route.name
- this.sortedPackages = tempAry;
- tempAry.map(list=>{
- let showParentNode = false;
- list.ary.map(ary=>{
- if(ary.name==routeName){
- showParentNode=true;
- }
- })
- if(showParentNode){
- that.cur.push(list.name)
- }
- })
- },
- $route: "fetchData"
- },
- methods: {
- fetchData(obj) {
- let that = this;
- this.curName = obj.name;
- let sortedPackages = this.sortedPackages;
-
- this.selectNav( obj.name)
- },
- listCheck(obj) {
- // this.curName = obj.name;
- },
- selectNav(val) {
- let nowCur = this.cur;
- let index = nowCur.indexOf(val);
- if (index > -1) {
- nowCur.splice(index, 1);
- } else {
- nowCur.push(val);
- }
- this.cur = nowCur;
- }
- },
- created() {
- let nameRt = this.$route.name;
- let packgs = packages;
-
- this.cur = sorts
- this.curName = nameRt;
- this.packages = packgs;
- this.sorts = sorts;
- }
- };
- </script>
- <style lang="scss" scoped>
- .fade-enter-active,
- .fade-leave-active {
- transition: all 1s;
- }
- .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
- opacity: 0;
- height: 0;
- }
- ul,ol {
- margin: 0;
- list-style: none;
- padding: 0;
- }
- dt{
- font-size:16px;
- font-weight: 500;
- text-indent:35px;
- color:#5b657b;
- margin:10px 0;
- }
- dd{
- margin:0;
- &>a{
- display:block;
- height:100%;
- cursor: pointer;
- }
- }
- .lt-nv {
- font-size: 14px;
- width: 295px;
- border-right: 1px solid #d8d8d8;
- a,
- span {
- text-decoration: none;
- color: #666666;
- }
- .curs {
- border-right: 4px solid #5396ff;
- color: #5396ff;
- background: rgba(83, 150, 255, 0.14);
- a,
- span {
- color: #5396ff;
- }
- }
- .pt {
- width: 0;
- height: 0;
- vertical-align: middle;
- border-width: 5px 5px 0;
- border-style: solid;
- border-color: #333 transparent transparent;
- transform: rotate(-90deg);
- }
- .l-1 {
- line-height: 40px;
- a {
- padding: 0 0 0 35px;
- }
- }
- .l-c {
- a {
- padding: 0 0 0 35px;
- }
- }
- .l-c-i {
- position: relative;
- span {
- padding: 0 0 0 35px;
- }
- .pt {
- float: right;
- margin: 20px 20px 0 0;
- }
- }
- .l-2 {
- overflow: hidden;
- a {
- font-size: 14px;
- padding: 0 0 0 50px;
- span {
- font-size: 12px;
- padding: 0 0 0 8px;
- }
- }
- }
- .cur {
- .pt {
- transition: all 0.5s;
- transform: rotate(0deg);
- }
- }
- .l-2 {
- a {
- display: inline-block;
- box-sizing: border-box;
- width: 100%;
- border-right: 1px solid #fff;
- }
- li:hover {
- transition: all 0.5;
- background: rgba(83, 150, 255, 0.14);
- border-right: 4px solid #5396ff;
- color: #5396ff;
- a,
- span {
- color: #5396ff;
- }
- }
- }
- .nav-l-1{
- dd:hover{
- transition: all 0.5;
- background: rgba(83, 150, 255, 0.14);
- border-right: 4px solid #5396ff;
- a,
- span {
- color: #5396ff;
- }
- }
- }
-
-
- }
- </style>
|