npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ugly-ui

v1.1.8

Published

基于 Vue 的UI

Downloads

77

Readme

背景介绍

ugly 据 Google 翻译,此词意为 #@$%$%$#%$#,emmmmmmmm...,很符合这个ui。

项目介绍

总得写点什么吧

API

button

<template>
  <ugly-button>buttin</ugly-button>
</template>

Button Attributes

参数 |说明 |类型 |可选值 |默认值 ----------|-------------|---------|--------------------------------------------------|-------- type |类型 |String |primary / success / warning / danger / info / text|— size |尺寸 |String |medium / small / mini |— round |是否圆角按钮 |Boolean |— |false disabled |是否禁用状态 |Boolean |— |false nativeType|原生 type 属性 |String |button / submit / reset |button

checkbox

<template>
  <ugly-checkbox v-model="checkbox">checkbox</ugly-checkbox>
  <ugly-checkbox @input="getValue" true-label="1" false-label="2">true-label & false-label</ugly-checkbox>
</template>
<script>
export default {
  data () {
    return {
      checkbox: true
    }
  },
  methods: {
    getValue (value) {
      // value输出1或2
    }
  }
}
</script>

Checkbox Attributes

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- value / v-model|绑定值 |string / number / boolean |— |— true-label |选中时的值 |String / number |— |— false-label |没有选中时的值 |Boolean / number |— |false disabled |是否禁用状态 |Boolean |— |false name |原生 name 属性 |String |— |— checked |当前是否勾选 |Boolean |— |false

radio

<template>
  <ugly-radio v-model="radio" label="2">radio</ugly-radio>
</template>
<script>
export default {
  data () {
    return {
      radio: '1'
    }
  }
}
</script>

Radio Attributes

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- value / v-model|绑定值 |string / number / boolean |— |— disabled |是否禁用状态 |Boolean |— |false name |原生 name 属性 |String |— |—

input

<template>
  <ugly-input v-model="input1" placeholder="请输入内容" size="medium" :maxlength="5" borders radius clearable></ugly-input>
  <ugly-input v-model="textarea1" type="textarea" placeholder="请输入内容"></ugly-input>
</template>
<script>
export default {
  data () {
    return {
      input1: '这是input框',
      textarea1: '这是textarea框'
    }
  }
}
</script>

Input Attributes

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- type |类型 |string |text\textarea |text value / v-model|绑定值 |string / number |— |— disabled |是否禁用状态 |Boolean |— |false name |原生 name 属性 |String |— |— maxlength |最大输入长度 |number |— |— placeholder |输入框占位符 |string |— |— clearable |是否可清空 |boolean |— |false size |text的尺寸 |string |medium / small / mini |— readonly |是否只读 |boolean |— |false form |原生属性 |string |— |false

input-number

<template>
  <ugly-input-number v-model="input_number" :min="1" :max="10" :precision="2" :step="0.1">input-number</ugly-input-number>
</template>
<script>
export default {
  data () {
    return {
      input_number: '1'
    }
  }
}
</script>

Input-number Attributes

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- value / v-model|绑定值 |number |— |— disabled |是否禁用状态 |Boolean |— |false name |原生 name 属性 |String |— |— placeholder |输入框占位符 |string |— |— min |允许的最小值 |number | |-infinity max |允许的最大值 |number | |infinity precision |数值精度 |number | |— step |计数器步长 |number | |1 size |text的尺寸 |string |medium / small / mini |— controls |是否使用控制按钮|boolean | |true controls-position|控制按钮位置 |string |right |true radius |是否圆角 |boolean | |—

select

<template>
  <ugly-select v-model="value" @change="selectChange" @optChange="optionChange" :datas="options" placeholder="请选择"></ugly-select>
</template>
<script>
export default {
  data () {
    return {
      options:[
        [
          {value: '2019',label: '2019年'}, {value: '2020',label: '2020年'}
        ],
        [
          {value: '1',label: '1月'},{value: '2',label: '2月'},{value: '3',label: '3月'},{value: '4',label: '4月'},{value: '5',label: '5月'},{value: '6',label: '6月'},{value: '7',label: '7月'},{value: '8',label: '8月'},{value: '9',label: '9月'},{value: '10',label: '10月'},{value: '11',label: '11月'},{value: '12',label: '12月'}
        ],
        [
          {value: '1',label: '1日'},{value: '2',label: '2日'}{value: '3',label: '3日'}{value: '4',label: '4日'}{value: '5',label: '5日'}{value: '6',label: '6日'}{value: '7',label: '7日'}{value: '7',label: '7日'}{value: '8',label: '8日'}{value: '9',label: '9日'}{value: '10',label: '10日'}{value: '11',label: '11日'}{value: '12',label: '12日'}{value: '13',label: '13日'}{value: '14',label: '14日'}{value: '15',label: '15日'}{value: '16',label: '16日'}{value: '17',label: '17日'}{value: '18',label: '19日'}{value: '20',label: '20日'}{value: '21',label: '21日'}{value: '22',label: '22日'}{value: '23',label: '23日'}{value: '24',label: '24日'}{value: '25',label: '25日'}{value: '26',label: '26日'}{value: '27',label: '27日'}{value: '28',label: '28日'}{value: '29',label: '29日'}{value: '30',label: '30日'}{value: '31',label: '31日'}
        ]
      ],
      value: ''
    }
  },
  method: {
    // 年月日联动
    optionChange (type, curIndex, preIndex) {
      let options = this.options
      const days = (y, m) => {
        return new Date(y, m, 0).getDate()
      }
      switch (type) {
        case 1:
          let dayArray1 = []
          const y1 = options[0][curIndex].value
          const m1 = 1
          for (let i = 1; i <= days(y1, m1); i++) {
            dayArray1.push({value: +i, label: i + '日'})
          }
          options[2] = dayArray1
          this.$set(options, 2, dayArray1)
          break
        case 2:
          let dayArray2 = []
          const y2 = options[0][preIndex].value
          const m2 = options[1][curIndex].value
          for (let i = 1; i <= days(y2, m2); i++) {
            dayArray2.push({value: +i, label: i + '日'})
          }
          options[2] = dayArray2
          this.$set(options, 2, dayArray2)
          break
        default: break
      }
      this.options = options
    }
  }
}
</script>

select Attributes

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- value / v-model|绑定值 |string/number |— |— disabled |是否禁用状态 |Boolean |— |false placeholder |输入框占位符 |string |— |— datas |下拉选项 |Array=[Array=[{value: 'string',label: 'label'}],Array,Array]|right|—

message

<template>
  <div>
    <div @click="alertMessage">打开message</div>
    <div @click="closeMessage">关闭message</div>
  </div>
</template>
<script>
export default {
  methods: {
    alertMessage () {
      this.$message({message:'这是message', duration: 5000})
    },
    closeMessage () {
      this.$message.close()
    }
  }
}
</script>

Message options

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- message |信息 |String |— |— duration |显示时间 |number |— |3000

loading

<template>
  <div>
    <div @click="alertLoading">打开Loading</div>
    <div @click="closeLoading">关闭Loading</div>
  </div>
</template>
<script>
export default {
  methods: {
    alertLoading () {
      this.$loading({duration: 5000})
    },
    closeLoading () {
      this.$loading.close()
    }
  }
}
</script>

Loading options

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- duration |显示时间 |number |— |3000

scroll

<template>
  <div class="scroll-exp1">
    <ugly-scroll
      id="thescrollplace2"
      ref="thescrollplace2"
      @pullDownHandle="pullDownHandle2"
      @pullUpHandle="pullUpHandle2"
      :pull-down="true"
      :pull-up="true">
        <ul class="ugly-scroll-ul-y">
          <li v-for="(list, index) in lists2" :key="index">{{list}}</li>
        </ul>
      </div>
      <!-- 重写下拉过程提示 -->
      <template slot="pullDowningText">
        <span>下拉中提示语</span>
      </template>
      <!-- 重写下拉结束提示 -->
      <template slot="pullDownedText">
        <span>下拉结束示语</span>
      </template>
      <!-- 重写上拉过程提示 -->
      <template slot="pullUpingText">
        <span>上拉中提示</span>
      </template>
      <!-- 重写上拉结束提示 -->
      <template slot="pullUpedText">
        <span>上拉结束提示</span>
      </template>
    </ugly-scroll>
  </div>
</template>
<script>
export default {
  data () {
    return {
      lists2: [1,2,3,4,5,6,7,8]
    }
  },
  methods: {
    pullDownHandle2 () {
      const _this = this
      let lists2 = []
      const times = Math.round((Math.random() * 10))
      for (let i = 0; i <= times; i++) {
        lists2.push(Math.round((Math.random() * 10)))
      }
      setTimeout(() => {
        _this.lists2 = lists2
        _this.$refs.thescrollplace2.pullDownBoolean(false)
      }, 1000)
    },
    pullUpHandle2 () {
      const _this = this
      setTimeout(() => {
        _this.lists2.push(9)
        _this.$refs.thescrollplace2.pullUpBoolean(false)
      }, 1000)
    }
  }
}
</script>
<style>
.scroll-exp2{
  width: 100%;
  height: 400px;
  overflow: auto;
}
.ugly-scroll-ul-y li{
  height: 100px;
  border-bottom: 1px solid #fff;
  background-color: #efefef;
}
</style>

scroll options

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- id |父级id |string |— |必填 ref |滚动内容ref |string |— |必填 pull-down |是否显示下拉 |Boolean |— |false pull-up |是否显示上拉 |Boolean |— |false scroll-type |滚动方向 |String |X\Y |Y

scroll slot

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- pullDowningText |自定义下拉过程提示 |html |— |— pullDownedText |自定义下拉结束提示 |html |— |— pullUpingText |自定义上拉过程提示 |html |— |— pullUpedText |自定义上拉结束提示 |html |— |—

scroll Handle

参数 |说明 |类型 |参数 ---------------|-------------|--------------------------|-------------------------------------- pullDownHandle |下拉操作 |function |— pullUpHandle |下拉操作 |function |— pullDownBoolean |改变下拉状态 |function |Boolean pullUpBoolean |改变下拉状态 |function |Boolean

swiper

<template>
  <div>
    <ugly-swiper
      id="swiper1"
      attr-class="swiper1-height"
      ref="swiper1"
      @swiperHandle="swiperhandles"
      :loop="true"
      :auto-play="4000"
      scroll-type="X"
      :pagination="true">
      <template slot="swiperWrapper">
        <div class="ugly-swiper-wrapper">
          <div v-for="(slide, index) in slides1" :key="index" @click="swiperalert(index)" class="ugly-swiper-slide slides">{{slide}}</div>
        </div>
      </template>
    </ugly-swiper>
  </div>
</template>
<script>
export default {
  data () {
    return {
      slides1: [1,2,3,4,5]
    }
  },
  methods: {
    appendSlide () {
      this.slides.push(2,3,4)
      this.$refs.swiper1.updateWrapper()
    },
    slideToSlides1 (index) {
      this.$refs.swiper1.slideTo(index)
    }
  }
}
</script>
<style>
.swiper1-height{
  height: 200px;
}
</style>

scroll options

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- id |父级id |string |— |必填 ref |滚动内容ref |string |— |必填 attr-class |样式名 |Boolean |— | loop |是无限滚动 |Boolean |— |false auto-play |是否自动滚动 |Boolean, Number | |Y scroll-type |轮播方向 |string |X/Y |X pagination |是否显示分页器 |Boolean | |false

scroll slot

参数 |说明 |类型 |可选值 |默认值 ---------------|-------------|--------------------------|----------------------------|-------- swiperWrapper |轮播内容 |html |— |

scroll Handle

参数 |说明 |类型 |参数 ---------------|-------------|--------------------------|-------------------------------------- swiperHandle |动画结束是回调函数 |function |i-当前的index
updateWrapper |重置轮播函数 |function |-
slideTo |轮播到某索引函数 |function | i-索引