ソースを参照

Merge branch 'v2' of https://github.com/jdf2e/nutui into v2

Frans 7 年 前
コミット
5092a526b6

+ 1 - 1
build/webpack.doc.base.conf.js

@@ -4,7 +4,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
 const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 const merge = require('webpack-merge');
 
-const mdtohtml = require('../scripts/md-to-other');
+const mdtohtml = require('../scripts/mdToVue');
 const isDev = process.env.NODE_ENV === 'development';
 
 module.exports = merge(webpackBaseConf, {

+ 6 - 1
scripts/md-to-other.js

@@ -1,7 +1,7 @@
 const fs = require('fs');
 var path = require('path');
 let marked = require('marked');
-
+let version =require("../src/config.json") ;
 if (!marked) {
     console.log('you need npm i marked -D!');
 }
@@ -76,6 +76,7 @@ let jsroot = `<script>export default {
 //插入
 function insert(sorce) {
     var insert = sorce.indexOf('</h1>');
+    
     if (insert > -1) {
         return sorce.substring(0, insert) + '<i class="qrcode"><a :href="demourl"><span>请使用手机扫码体验</span><img :src="codeurl" alt=""></a></i>' + sorce.substring(insert, sorce.length);
     } else {
@@ -86,6 +87,10 @@ function insert(sorce) {
 ///创建一个空文件
 function createdFile(output, sorce,ishasCode) {
     var pathSrc = output;
+    if(sorce.indexOf('latest')>0){
+        console.log(version.version,'版本号')
+        sorce = sorce.replace('latest',version.version)
+    }
     if(!ishasCode){       
         var res = insert(sorce);
     }   else{

+ 54 - 0
src/packages/noticebar/__test__/noticebar.spec.js

@@ -0,0 +1,54 @@
+import { shallowMount } from '@vue/test-utils'
+import NoticeBar from '../noticebar.vue'
+import Vue from 'vue';
+
+describe('noticebar.vue',() => {
+    const wrapper = shallowMount(NoticeBar, {
+        propsData:{
+            text:"华为畅享9新品即将上市,活动期间0元预约可参与抽奖,赢HUAWEI WATCH等好礼,更多产品信息请持续关注!"
+        }
+    });
+
+    it('默认用法',() => {
+        wrapper.setData({
+            type:'simple'
+        });
+
+        return Vue.nextTick().then(function() {
+            expect(wrapper.findAll('li').at(1).classes('selected')).toBe(true);
+        })
+    });
+
+    // it('多选-style1',() => {
+    //     wrapper.setProps({
+    //         type:'multiple',
+    //         mulstyle:'style1'
+    //     });
+
+    //     return Vue.nextTick().then(function() {
+    //         expect(wrapper.find('.menu-multiple-style1').isVisible()).toBe(true);
+    //     })
+    // })
+
+    // it('多选-style2',() => {
+    //     wrapper.setProps({
+    //         type:'multiple',
+    //         mulstyle:'style2'
+    //     });
+
+    //     return Vue.nextTick().then(function() {
+    //         expect(wrapper.find('.menu-multiple-style2').isVisible()).toBe(true);
+    //     })
+    // })
+
+    // it('多选-style3',() => {
+    //     wrapper.setProps({
+    //         type:'multiple',
+    //         mulstyle:'style3'
+    //     });
+
+    //     return Vue.nextTick().then(function() {
+    //         expect(wrapper.find('.menu-multiple-style3').isVisible()).toBe(true);
+    //     })
+    // })
+});

ファイルの差分が大きいため隠しています
+ 0 - 1
src/packages/noticebar/demo.vue


+ 1 - 1
src/packages/noticebar/doc.md

@@ -41,7 +41,7 @@
 |----- | ----- | ----- | ----- 
 | text | 提示的信息 | String | 空
 | mode | 是否启用关闭模式 | Boolean | false
-| leftIcon | 是否禁用 | String | 空
+| leftIcon | close为没有左边icon,其他为自定义的图片链接,没有为默认图片 | String | 空
 | color | 是否禁用 | String | 空
 | background | 是否禁用 | String | 空
 | delay | 是否禁用 | [String,Number] | 1

ファイルの差分が大きいため隠しています
+ 1 - 0
src/packages/noticebar/noticebar.scss


+ 8 - 1
src/packages/noticebar/noticebar.vue

@@ -6,7 +6,7 @@
     :style="barStyle"
     @click="$emit('click')"
   >
-    <div v-if="leftIcon" class="left-icon" :style="{'background-image':`url(${iconBg})`}">
+    <div  class="left-icon" v-if="iconShow" :style="{'background-image':`url(${iconBg})`}">
     </div>
     <div ref="wrap" class="wrap">
       <div
@@ -71,6 +71,13 @@ export default {
     };
   },
   computed: {
+    iconShow(){
+      if(this.leftIcon=='close'){
+        return false;
+      }else{
+        return true;
+      }
+    },
     barStyle() {
       return {
         color: this.color,

+ 26 - 14
src/packages/tab/__test__/tab.spec.js

@@ -5,17 +5,26 @@ import Vue from 'vue';
 
 describe('Tab.vue', () => {
     const wrapper = mount(Tab);
+    
     it('页签类型为based', () => {
         wrapper.setProps({ type: 'based' });
         return Vue.nextTick().then(function () {
             expect(wrapper.contains('.based')).toBe(true);
         })
     });
-    
+
     it('当前tab的位置', () => {
         wrapper.setProps({ positionNav: 'left' });
         return Vue.nextTick().then(function () {
-            expect(wrapper.contains('.nut-tab')).toBe(true);
+            expect(wrapper.contains('.nut-tab-title-leftnav')).toBe(true);
+            
+        })
+    });
+
+    it('是否显示内容区域', () => {
+        wrapper.setProps({ contentShow: true });
+        return Vue.nextTick().then(function () {
+            expect(wrapper.contains('.nut-tab-item')).toBe(true);
             
         })
     });
@@ -24,7 +33,7 @@ describe('Tab.vue', () => {
         wrapper.setData({ tabTitleList: [
             {
               tabTitle: "衣物",
-              disable: false,
+              disable: true,
               iconUrl:
                 "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
               content: "<p>衣物内容</p>"
@@ -48,19 +57,22 @@ describe('Tab.vue', () => {
               content: "<p>电影票内容</p>"
             }
           ] });
-             setTimeout(()=>{
-                return Vue.nextTick().then(function () {
-                        expect(wrapper.findAll('.nut-title-nav-leftnav').at(0).is('.nut-tab-disable')).toBe(true)
-                })
-            },10) 
+          return Vue.nextTick().then(function () {
+              expect(wrapper.findAll('.nut-title-nav-leftnav').at(0).is('.nut-tab-disable')).toBe(true)
+          }) 
+    });
+    it('是否显示关闭按钮', () => {
+        wrapper.setProps({ closable: true });
+        return Vue.nextTick().then(function () {
+            expect(wrapper.contains('.close-btn')).toBe(true);
+            
+        })
     });
     it('当前默认选中的tab', () => {
-        wrapper.setProps({ defIndex: 0 });
-        setTimeout(()=>{
-            return Vue.nextTick().then(function () {
-                    expect(wrapper.findAll('.nut-title-nav-list').at(1).is('.nut-tab-active')).toBe(true)
-            })
-        },20)
+        wrapper.setProps({ positionNav: 'top' });
+        return Vue.nextTick().then(function () {
+            expect(wrapper.findAll('.nut-title-nav-list').at(0).is('.nut-tab-active')).toBe(true)
+        })
     });
     it('tab标签标题', () => {
       return Vue.nextTick().then(function () {