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

ivu-extends

v0.1.0

Published

基于 view-design 扩展的组件库

Downloads

6

Readme

ivu-extends

基于 view-designv4.7.0) 扩展的组件库,平时开发造的一些轮子,包括组件的二次封装,Vue 指令和动态主题切换。

安装

npm install ivu-extends -S

使用

import IvuExtends from 'ivu-extends'

Vue.use(IvuExtends)

// 或者
import { FormLabelSuffix, InputNumberUnit } from 'ivu-extends'

Vue.component(FormLabelSuffix.name, FormLabelSuffix)
Vue.component(InputNumberUnit.name, InputNumberUnit)
/* 或写为
 * Vue.use(FormLabelSuffix)
 * Vue.use(InputNumberUnit)
 */

组件

FormLabelSuffix

对原属性 label-colon 进行扩展,可定制 label 后缀。

使用场景:统一为项目中的表单标签都添加中文冒号 后缀。

<FormLabelSuffix :label-width="160" label-colon=":">
  <FormItem label="姓名"><Input></Input></FormItem>
  <FormItem label="年龄"><Input></Input></FormItem>
</FormLabelSuffix>

如果不想更换 Form 组件名(Form => FormLabelSuffix),可以全局/局部替换 ivu-form。

// 在 main.js 中全局替换
Vue.component('Form', FormLabelSuffix)

// 在 Form 使用处,局部替换
import FormLabelSuffix from 'ivu-extends'

export default {
  components: { Form: FormLabelSuffix }
  /* ... */
}

替换后使用,保持原代码不变,只需要添加 label-colon 属性。

<Form :label-width="160" label-colon=":">
  <FormItem label="姓名"><Input></Input></FormItem>
  <FormItem label="年龄"><Input></Input></FormItem>
</Form>

InputNumberUnit

带单位的数字输入框,在 InputNumber 的基础上进行扩展,新增了两个属性:unitunit-placement,一个插槽:unit

使用场景:原生 InputNumber 添加单位后,单位算作输入框内容的一部分,导致还能选中删除,不优雅。

使用

<InputNumberUnit
  :max="100"
  :min="-10"
  size="small"
  unit="$"
  unit-placement="start"
  v-model="value"
/>

使用插槽

<InputNumberUnit :max="100" :min="0" :step="1" unit-placement="end" size="large" v-model="value">
  <span slot="unit" style="color: red; font-weight: bold">%</span>
</InputNumberUnit>

props

| 属性 | 说明 | | :------------: | :-------------------------------------------------------------------------------------------: | | unit | 单位,String 类型 | | unit-placement | 单位的位置,String 类型,可选值:start(在数字前) 或者 end(在数字后),默认为 start |

slot

| 名称 | 说明 | | :--: | :------------: | | unit | 自定义单位格式 |

SelectUnion

联动选择输入框,在 Select 的基础上进行扩展,新增了一个属性:group

使用场景:多个输入框之间需要联动,已选中项不可再选。

使用

<SelectUnion v-for="(item, key) in list" :key="key" v-model="value" :group="item.group">
  <option value="a">A</option>
  <option value="b">B</option>
  <option value="c">C</option>
</SelectUnion>

props

| 属性 | 说明 | | :---: | :------------------------------------------------------------------------------: | | group | 分组名,String 类型,相同组名的 SelectUnion 之间有联动效果,默认为 'default' |

TableColumnKeyChain

在 Table 的基础上进行扩展,可链式传入 columns 中的 key

使用场景:要展示数据项中下层的属性,同时还需要生效 tooltip

使用

<TableColumnKeyChain :columns="columns" :data="tableData" border></TableColumnKeyChain>
export default {
  data() {
    return {
      columns: [
        {
          title: 'name',
          key: 'name'
        },
        {
          title: 'age',
          key: 'age'
        },
        {
          title: 'addressName',
          key: 'address.name', // 可以这样写
          tooltip: true // tooltip 也会生效
        },
        {
          title: 'date',
          key: 'date',
          tooltip: true
        }
      ],
      tableData: [
        {
          name: 'John Brown',
          age: 18,
          address: {
            name: 'New York No. 1 Lake Park'
          },
          date: '2016-10-03'
        }
      ]
    }
  }
}

TooltipText

在 Tooltip 的基础上进行扩展,文本内容超出当前容器宽度时,自动开启 Tooltip 。

使用

如果内容是纯文本,则默认将整个文本内容作为 Tooltip 的 content 内容。

<TooltipText>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</TooltipText>

如果内容非纯文本,用一个根容器包裹整个内容,同时需要单独指定 content

<TooltipText content="bbb">
  <div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<span>bbbbbbb</span>aaaaaaaa</div>
</TooltipText>

指令

modify-opacity

ColorPicker 的优化指令,当 opacity0 ,在颜色面板上选取颜色时,将不透明度置为 1

使用

<ColorPicker v-model="color" alpha v-modify-opacity />

resize

监听 DOM 尺寸变化。

使用场景:echarts 图表的 DOM 容器尺寸发生变化时,需要执行 echarts.resize() 重新调整图表尺寸。

使用

<div v-resize:200.immediate="handleResize"></div>

配置

| 属性 | 说明 | | :-------: | :---------------------------------------------------------------------------------------------------------------: | | arg | 传入一个数字,代表节流时间,默认为 500 | | modifiers | 仅支持 immediate,表示是否立即触发,默认为 false | | value | 触发时的回调方法,参数为 DOMRectReadOnly 类型 |

scroll-to

将当前元素或子元素的滚动条移动到底部或顶部。

使用场景:列表项过多出现滚动条,新增一项时,将列表的滚动条滚动到底部,确保新增的一项可见。

使用

<div
  v-scroll-to="{
    top: `handleShift`,
    bottom: `handlePush`,
    selector: ''
  }"
></div>

配置

| 属性 | 说明 | | :------: | :---------------------------------------------------------------------------------------------------------: | | value | 配置项信息,Object 类型,有三个可选属性 { top: string, bottom: string, selector: string } | | top | 滚动到顶部的回调方法名,String 类型,只支持同步方法,当前方法执行后,在下一轮事件循环中将滚动条滚动到顶部 | | bottom | 滚动到底部的回调方法名,String 类型,只支持同步方法,当前方法执行后,在下一轮事件循环中将滚动条滚动到底部 | | selector | 选择器,String 类型,如果想滚动的容器不是当前元素,而是它的子元素,可以提供一个子元素的选择器 |

set-title-attr

将当前元素或子元素设置原生 title 属性。

使用场景:下拉列表的选项中,有些文字过长,开启文字省略后,还需要能展示全部文字。

使用

<select v-model="model" style="width: 200px">
  <option v-for="item in list" :value="item.value" :key="item.value" v-set-title-attr="item.label">
    {{ item.label }}
  </option>
</select>

配置

| 属性 | 说明 | | :---: | :---------------------: | | value | 在 title 中展示的文字 |

主题切换

只支持 v4.7.0 版本,如果使用其他版本,可以参照 给 ViewDesign 加个主题换肤 💖 生成对应的主题 CSS 文件。

首先需要在 main.js 中更换引入的 CSS 文件。

- import 'view-design/dist/styles/iview.css'
+ import 'ivu-extends/dist/styles/iview.css'

引入 genThemeColor 方法:

import { genThemeColor } from 'ivu-extends'

使用:

genThemeColor(color)

其中 color 为十六进制颜色值,例如 #ff0000#0f0 都是合法的颜色值。方法执行后,当前项目中使用到的 view-design 组件,主题色都会发生变化。

如果完整引入了 ivu-extends,那么 Vue.prototype 上会有一个全局方法 $genThemeColor,使用方式为 this.$genThemeColor(color)