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 🙏

© 2026 – Pkg Stats / Ryan Hefner

admall-ui

v0.1.95

Published

阿呆猫UI框架

Downloads

6

Readme

颜色变量

admall-ui中使用了一下颜色变量, 请在项目中提前设置

$main-color: #ff7e12; // 主色
$main-color2: #3d7fff; // 辅助色

$border-color: #dadada; // 边框主色
$border-color2: #f0f2f5; // 边框辅助色

$font-color: #333; // 文字主色
$font-color2: #666; // 文字辅助色
$font-color3: #999; // 文字辅助色

$primary-color: #ff7e12; // 主色
$success-color: #38bd0e; // 成功
$warning-color: #ffa217; // 警告
$error-color: #ff2200; // 错误
$tips-color: #909399; // 提示

$link-color: #3d7fff;

Alert

该组件引入后可以通过自定义方法显示一个弹出确认框, 返回 Promise 对象

this.$alert(options)             默认显示不带图标的弹窗
this.$alert.success(options)     带有成功图标的弹窗
this.$alert.error(options)       带有错误图标的弹窗
this.$alert.warning(options)     带有警告图标的弹窗
this.$alert.tips(options)        带有提示图标的弹窗

options

{
  title:'', // 弹窗标题,
  content:'',//弹窗内容,
  confirmText:''// 确认按钮文字
  cancelText:''// 取消按钮文字
}

案例:

async function alert() {
  try {
    await this.$alert({
      title: '删除提示',
      content: '确定要删除该文件吗',
      confirmText: '确定删除',
      cancelText: '我再想想',
    });
    console.log('confirm');
  } catch (e) {
    console.log('cancel');
  }
}

Avatar

头像展示组件

| props | 类型 | 描述 | | ----- | ------ | -------------------------------------------------- | | src | String | 头像路径,如果路径对应的资源加载失败,会显示默认头像 | | size | String | 头像尺寸 |

Button

按钮, 支持防抖功能

| props | 类型 | 描述 | | ----------- | --------------- | --------------------------------------------------------------------------------------------------------- | | wait | [String,Number] | 设置防抖功能, 如果添加了这个属性, 默认防抖间隔为 1000 毫秒, 可以使用wait=200的格式重新设置防抖间隔 | | w,width | [String,Number] | 按钮宽度 | | prefix-icon | String | 前置 icon | | primary | Boolean | 主色调按钮 | | error | Boolean | 错误样式按钮 | | warning | Boolean | 警告样式按钮 | | success | Boolean | 成功样式按钮 | | border | Boolean | 线框型按钮 | | disabled | Boolean | 禁用按钮钮 | | auto | Boolean | 默认情况下,按钮宽度为父级元素的 100%, 设置autotrue的时候, 按钮元素会添加width:auto属性 |

| slots | 作用 | | ------- | ---- | | default | 内容 |

<adm-button>普通按钮</adm-button> <adm-button wait>防抖按钮</adm-button>

Card

卡片组件

| props | 类型 | 描述 | | ----- | ------ | ------------------------------------------ | | title | String | 卡片标题, 如果设置为空字符串, 会隐藏标题栏 |

| slots | 作用 | | -------- | ---------- | | default | 内容 | | subtitle | 副标题部分 |

Checkbox

复选框组件

| props | 类型 | 描述 | | -------- | ---------------- | --------------------------------------------------------- | | v-model | [Boolean, Array] | 必须是布尔值或者数组 | | label | [String,Number] | 如果 v-model 是数组,label 将作为判断是否被选中的条件,必传 | | disabled | Boolean | 是否禁用组件 | | readonly | readonly | 限制组件只读 |

DatetimePicker

日历组件,暂时仅支持年月日

| props | 类型 | 描述 | | ----------- | ---------------- | ---------------- | | v-model | [Boolean, Array] | 绑定值 | | placeholder | String | 提示语 | | clearable | Boolean | 是否显示清空按钮 | | year | Boolean | 年份选择器 | | month | Boolean | 年月选择器 | | date | Boolean | 年月日选择器 | | width,w | String | 组件宽度 | | Picker Options | Object | 组件宽度 | Picker Options说明

| props | 类型 | 描述 | | ----------- | ---------------- | ---------------- | | disabledDate| Function | 设置禁用状态,参数为当前日期,要求返回 Boolean |

| event | 作用 | | ------- | ---------- | | @change | 值改变事件 |

Dialog

弹出框组件

| props | 类型 | 描述 | | ------------ | ------- | -------------- | | visible.sync | Boolean | 是否显示弹出框 | | title | String | 标题 |

| slot | 作用 | | ------- | ---------------- | | header | 自定义头部内容 | | default | 自定义弹出框内容 |

| methods | 作用 | | -------- | -------------- | | vm.close | 弹出框关闭事件 |

Field

表单字段组件,支持 v-model

| props | 类型 | 描述 | | ---------- | ---------------- | ------------------------------------ | | required | Boolean | 是否显示星号 | | inline | Boolean | 默认 false, label 与表单内容水平布局 | | vertical | Boolean | 默认 false, label 与表单内容垂直布局 | | label | String | 字段名称 | | labelWidth | [String, Number] | 字段名称占用的宽度, 数字或者百分比 | | left | Boolean | 默认属性, label 内的文字靠左对齐 | | center | Boolean | label 内的文字居中对齐 | | right | Boolean | label 内的文字靠右对齐 | | top | Boolean | label 内的文字靠顶部对齐 | | msg | String | 字段提示内容 | | err | String | 字段错误警告内容 |

| slots | 作用 | | ------- | ---- | | default | 内容 |

Input

输入框组件

| props | 类型 | 描述 | | ----------- | --------------- | ------------------------------------------------------------------------------------------------------------------ | | format | String | 限制输入框类型, 4表示仅允许 4 位整数,4.2表示仅允 许 4 位整数和 2 位小数, .3表示整数不限制,小数限制 3 位 | | prefix-icon | String | 前置 icon | | left | Boolean | 文本内容左对齐 | | center | Boolean | 文本内容居中对齐 | | right | Boolean | 文本内容右对齐 | | label | String | 输入框内左侧提示语 | | right | Boolean | 文本内容右对齐 | | readonly | Boolean | 只读输入框 | | disabled | Boolean | 被禁用输入框 | | clearable | Boolean | 显示清空按钮 | | mini | Boolean | 小型输入框,高度 22px | | w,width | [String,Number] | 数字类型字符串或数字,定义输入框宽度 | | data | Array[String] | 如果提供了这个属性,且属性值 length 大于 0, 会在获取焦点的时候,打开被备选框 |

| event | 描述 | | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | @input | - | | @enter | 回车事件 | | @change | 输入框的值发生改变事件, fn(v,isSelectedOption=false), v: 当前值, isSelectedOption:当点击备选值得时候,该参数值为 true, 主要是为了避免change事件恶性循环, 使用者可以根据这个参数来判断是否执行真正的change事件 |

<!-- 只能输入4位整数 -->
<adm-input format="4" />

<!-- 只能输入4位整数和2位小数 -->
<adm-input format="4.2" />

<!-- 限制2位小数 -->
<adm-input format=".2" />

插槽

| event | 描述 | | ------- | ------------------------------------------------- | | default | 默认插槽, 会显示在真实输入框右侧,一般用来显示单位 |

<adm-input label="年龄" format="4.2">岁</adm-input>

Link

| props | 类型 | 描述 | | ----------- | --------------- | --------------------------------------------------------------------------------------------------------- | | wait | [String,Number] | 设置防抖功能, 如果添加了这个属性, 默认防抖间隔为 1000 毫秒, 可以使用wait=200的格式重新设置防抖间隔 | | prefix-icon | String | 前置 icon | | primary | Boolean | 主色调文本 | | error | Boolean | 错误样式文本 | | warning | Boolean | 警告样式文本 | | success | Boolean | 成功样式文本 |

| slots | 作用 | | ------- | ---- | | default | 内容 |

Message

该组件引入后可以通过自定义方法显示一个消息提示窗, 有三种类型, 例子

this.$message(msg text)             默认是成功弹窗
this.$message.success(msg text)     成功弹窗
this.$message.error(msg text)       错误弹窗
this.$message.warning(msg text)     警告弹窗
this.$message.tips(msg text)        提示弹窗

Notify

该组件引入后可以通过自定义方法显示一个通知提示框, 通知框没有数量限制, 但是在超出当前屏幕可是高度时, 会自动缓存起来, 随着关闭通知框的操作再依次展示

this.$notify(options)             默认是成功弹窗
this.$notify.success(options)     成功弹窗
this.$notify.error(options)       错误弹窗
this.$notify.warning(options)     警告弹窗
this.$notify.tips(options)        提示弹窗

options

{
  title:'', // 通知标题,
  content:'',//通知内容,
  buttonText:''// 按钮文字
  buttonCallback:''// 按钮事件, 按钮文字和按钮事件同时存在时, 才会显示按钮
  meta:{}// 其他数据, 这里的数据会当做参数传递给buttonCallback事件
}

案例:

this.$notify({
  title: '通知',
  content: '您的剩余时间已不多, 请及时充值',
  buttonText: '我知道了',
  buttonCallback: (data) => {
    console.log(data); // data内容与meta相同
  },
  meta: {
    name: 'zhangsan',
  },
});

Pager

页码组件

| props | 类型 | 描述 | | -------- | ------ | ------------ | | pageSize | Number | 每页展示数量 | | pageNo | Number | 当前页码 | | total | Number | 总数量 | | pageSizes| [Number] | 每页显示个数选择器 | | jumper | Boolean| 是否显示前往*页组件 |

| event | 描述 | | ------------- | ------------ | | pageNoChanged | 页码改变事件 | | pageSizeChanged | pageSize 改变时会触发 |

Radio

复选框组件

| props | 类型 | 描述 | | -------- | --------------- | ---------------------------------------------------- | | v-model | [String,Number] | | | label | [String,Number] | 当 label 严格等于 v-model 的值时, 单选框处于选中状态 | | disabled | Boolean | 是否禁用组件 | | readonly | readonly | 限制组件只读 |

Scene

场景组件, 该组件主要目的是为了减少 CSS 工作量, 和快速部署 flex/栅格化布局, 组件不支持的 CSS 属性,请在 CSS 中另行设置

| props | 类型 | 描述 | | ------ | ----------------- | -------------------------------------- | | flex | Boolean | 设置 flex 布局 | | column | Boolean | flex 垂直布局 | | wrap | Boolean | flex 内允许换行 | | grow | [Boolean, String] | 允许元素本身自动增长 | | shrink | Boolean | 允许元素本身在控件不够的情况下缩小尺寸 | | fixed | Boolean | 不允许元素本身增长或者被挤压 | | fill | Boolean | 设置所有的子元素自动按比例扩展尺寸 | | left | Boolean | flex 时设置子元素水平左对齐 | | right | Boolean | flex 时设置子元素水平右对齐 | | center | Boolean | flex 时设置子元素水平居中对齐 | | top | Boolean | flex 时设置子元素垂直左对齐 | | bottom | Boolean | flex 时设置子元素垂直左对齐 | | middle | Boolean | flex 时设置子元素垂直左对齐 | | width | [String, Number] | 设置元素宽度 | | w | [String, Number] | 设置元素宽度 | | p | [String, Number] | 设置元素 padding 值 | | pl | [String, Number] | 设置元素 padding-left 值 | | pr | [String, Number] | 设置元素 padding-right 值 | | pt | [String, Number] | 设置元素 padding-top 值 | | pb | [String, Number] | 设置元素 padding-bottom 值 |

Select

下拉框组件,支持多级下拉框

| props | 类型 | 描述 | | ------------ | --------------- | ------------------------------------------------------------------------------------------------------------------ | | data | Array | 数据来源 | | labelNode | String | 默认值name, 这个字段属性的值会显示在列表中 | | keyNode | String | 默认值id , 这个字段功能等同于 vue 的 key 属性, 不能有重复的 key 值 如果你的数据内没有id属性,需要自行定义 | | valueNode | String | 默认值id, 这个字段决定了组件的返回值 | | childrenNode | String | 默认值children, 多级联动时,这个字段决定了子级数据的来源 | | placeholder | String | 同 input 的 placeholder 属性 | | clearable | Boolean | 设置显示清空按钮 | | disabled | Boolean | 设置禁用按钮钮 | | w,width | [String,Number] | 数字类型字符串或数字,定义输入框宽度 | | range | [String,Number] | 限制用户选择层次, 比如该值为 3, 用户只点击前两层会无效 |

| event | 描述 | | ------- | ------------------------------------------------------ | | @change | 下拉框值改变事件, 返回两个参数(selectValue,selectItem) |

| methods | 描述 | | --------------- | ---------------------- | | vm.getFullValue | 获取用户选择的具体内容 |

selectValue

selectValue 表示用户当前选中项中对应value-node的属性值

selectItem

selectItem 表示用户当前选中项中所有的属性值

SmsCode

验证码组件, 全局通用

| props | 类型 | 描述 | | ------ | -------- | -------------------------------------------------- | | range | Number | 倒计时周期, 默认 60 秒 | | mobile | String | 手机号码, 必传, 如果号码格式错误, 会导致按钮被禁用 | | api | Function | 要调用的接口函数 |

| event | 描述 | | -------- | ---------------- | | @success | 接口调用成功事件 | | @error | 接口调用失败事件 |

// 注意, 这里的函数不需要处理axios的错误, 错误会抛出给smscode组件
export default {
  async getSmsCode() {
    await this.$axios.$post('/admall-user/api/login/smscode-register', {
      phone: this.smsLogin.account,
    });
  }
},

Space

占位符组件, 在不想写padding或者margin时,最为又用

| props | 类型 | 描述 | | -------- | --------------- | ------------------ | | w/width | [String,Number] | 数字, 定义组件宽度 | | h/height | [String,Number] | 数字,定义组件高度 |

Steps

步骤条 | props | 类型 | 描述 | | --------- | ----------------| ------------------------ | | data | Array | 步骤条数据来源 | | active | [String,Number] | 当前激活步骤 | | background| String | 步骤条背景颜色,默认'#fff' |

Table

表格组件

| props | 类型 | 描述 | | ------- | ----- | ------ | | data | Array | 数据源 | | columns | Array | 列数据 |

columns 属性

| props | 类型 | 描述 | | ----- | ------ | --------------------------------------------------- | | label | String | 列头文字 | | prop | String | 列 key, 自动从每行数据中获取该 key 对应的字段值展示 | | width | String | 设置列宽度, 该宽度设置后,列宽会固定 |

slot

插槽分为两种, 一种是列头的插槽, 一种是单元格插槽,

单元格插槽:

<template #prop="{row, index}">
  <!-- row 单行数据 -->
  <!-- index  行索引 -->
  <!-- data  全部数据 -->
</template>

列头插槽:

<template #prop_th="{row, index}">
  <!-- col 列信息 -->
  <!-- index 列索引 -->
  <!-- data  全部数据 -->
</template>

Tabs

tab 切换组件

| props | 类型 | 描述 | | ----------- | ---------------- | ------------------------------------------------------- | | data | Array | 标签数据来源[{name:'',label:''}] | | border | Boolean | 显示下方下划线 | | background | Boolean | 显示背景色和边框 | | background | Boolean | 显示背景色和边框 | | labelWidth | [String, Number] | 自定义标签宽度 | | defaultName | String | 默认显示的标签页,必须是 data 中某一条数据的 name 属性值 |

| event | 描述 | | ------ | ----------------------------------------------------------------------------------------------------------------------------------------- | | change | tab 切换事件, 如果监听了该事件, tab 不会自动切换, 主动权交给使用者 使用者可以通过修改defaultName的值,来触发组件真实显示的内容 |

插槽

Tab 组件的插槽与 data 中的name 属性相关

{
  dict: [
    {
      name: 'onway',
      label: '已发货',
    },
    {
      name: 'confirmed',
      label: '已收货',
    },
  ];
}
<adm-tabs>
  <template #onway="">
    <!-- ...tab1 -->
  </template>
  <template #confirmed="">
    <!-- ...tab2 -->
  </template>
</adm-tabs>

Textarea

文本域组件

| props | 类型 | 描述 | | ----------- | ------- | ---------------------------- | | v-model | String | 双向绑定 | | height,h | String | 文本域高度 | | msg | String | 文本域下方, 额外的提示语信息 | | placeholder | String | 文本域内的提示信息 | | disabled | Boolean | 禁用文本域 |

| event | 描述 | | ------- | -------- | | @input | - | | @enter | 回车事件 | | @change | - |

Upload

上传组件, 支持进度回调, 支持整体引入和单组件引入

使用组件前, 要在use方法中,传入 OSS 参数

整体引入:

import AdmallUi from 'admall-ui'
Vue.use(AdmallUi, {
  upload:{
    prefix:  // 上传路径前缀, 组件内实际生成的fileName为`${prefix}/${path}/20210915/hash.文件后缀`
    buckets:[
        {
          region:bucket所属区域,
          bucket: bucket名称
        }
    ],
    refreshToken: { //获取OSStoken的异步函数, 必须返回以下内容
         accessKeyId:'',
        accessKeySecret:'',
        stsToken:'',
    }
  }
})

| props | 类型 | 是否必传 | 描述 | | ---------- | ------- | -------- | -------------------------------------------------------- | | accept | String | | 允许上传的文件类型默认为'*', 比如:'.jpg,.png,.gif,.mp4' | | path | String | | prefix与日期中间的路径 | | bucket | String | | bucket 名称 | | multiple | Boolean | | 设置允许选择多个文件, 必须与 maxLength 配合使用 | | maxLength | Boolean | | 最大上传文件数量 | | progress | String | | 是否显示自带的上传进度 UI | | beforeUpload|Function| | (files, next) 第一个参数表示用户选择的所有文件, 自行处理后, 需要调用next函数,并传入新的files才能继续执行

| event | 描述 | | --------- | -------------------------------------------- | | @change | 上传进度回调 (fileList) | | @progress | 上传进度回调 (progress, checkpoit, fileList) | | @error | 上传错误回调, (reuslt,fileList) |

| method | 描述 | | --------- | -------------------------------------------- | | trigger | 模拟触发上传 |

result:

{
  code, //错误码  1001=超过文件最大数量, 1002=文件已存在, 1002=单个文件上传失败, 1004=单个文件超限, 1005=总文件超限, 1006 文件格式不符合要求
  msg, //错误文字信息
}

fileList:

  hash, //hash散列值, 当前上传组件中的唯一ID, 自定义UI组件时, 推荐使用该值去对比文件是否存在,或者更新文件信息,
  file, // 实际文件内容, File对象
  fileName, // 上传的真实路径
  progress,//  0-1, 仅表示上传进度, 不能用这个值表示上传是否成功
  success, // boolean,  上传是否成功, 当success为true的时候, 才能使用fileName获取文件
  error, // 表示该文件上传出现了错误
  remove, // fn, 从组件中删除该文件
  callback,//  fn, 进度回调函数, 该函数中触发了@progress事件, 不建议对此函数进行操作