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

monose-component-vue

v0.0.28

Published

<h2 align="center">Vue3 ElementPlus 二次封装组件库</h2>

Downloads

132

Readme

快速开始

  1. 安装
npm install monose-component-vue
  1. 引入样式
import 'monose-component-vue/dist/style.css';
  1. 手动引入组件
<template>
  <MSearchForm :list="searchList" v-model:data="searchData" />
</template>

<script setup lang="ts">
import { IForm, MSearchForm } from 'monose-component-vue';
import { ref } from 'vue';

const searchList: IForm[] = [
  {
    label: '输入框',
    prop: 'text',
    type: 'input',
    option: { style: { width: '170px' } },
  },
];
const searchData = ref({ text: '123456' });
</script>
  1. 自动引入组件

目前已支持使用 unplugin-vue-components/vite 自动引入组件

import { MonoseVueResolver } from 'monose-component-vue/provider';
import VueComponents from 'unplugin-vue-components/vite';

export default defineConfig({
  plugins: [
    VueComponents({
      resolvers: [MonoseVueResolver],
    }),
  ],
});

组件

目录

MTable

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------ | | column | 必填,表头的列表,数组每一项包含每一列的表头和这一列的配置 | ITableColumn[] | - | | action | 可选, 表格每一行末尾的操作列的按钮 | ITableAction[] | - | | menu | 可在表格组件右上角添加一些图标按钮,拓展功能 | ITableMenu[] | - | | v-model:data | 表格组件绑定的数据 | Record<string, any>[] | - | | loading | 控制表格组件是否处于loading加载动画状态(分页区和菜单区不受影响) | boolean | false | | fitHeight | 开启后,表格可根据外层盒子自适应高度 | boolean | false | | showIndex | 开启后,左侧会添加序号列 | boolean | false | | showSelection | 开启后,左侧会添加多选框列 | boolean | false | | showFilter | 开启后,菜单区域会增加配置按钮,可调节列的展示和顺序 | boolean | false | | total | 可选,传入此参数后,表格下方会出现分页组件,同时用于配置数据的总条数 | number | - | | v-model:pageSize | 每页显示条目个数 | number | - | | v-model:currentPage | 当前页数 | number | - | | config | 所有 ElementPlus 中位于 ElTable 中的属性均可添加到此位置 | Partial<TableProps<any>> | - | | columuConfig | 所有 ElementPlus 中位于 ElTableColumn 中的属性均可添加到此位置会添加到所有的 column 标签上,例如:配置所有列内容居中时会很方便。 | Partial<TableColumnCtx<any>> | - | | pageConfig | 所有 ElementPlus 中位于 ElPagination 中的属性均可添加到此位置 | Partial<PaginationProps> | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ----------- | ------------------------------------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------- | | menuClick | 配置了属性 menu 后,点击菜单栏按钮时触发的事件 | (method: string) => void | method: 点击菜单按钮的标识,在属性 menu - prop 中配置 | | actionClick | 配置了属性 action 后,点击了表格每行右侧操作按钮时触发 | (method: string, data: any) => void | method: 点击按钮的标识,在属性 action - prop 中配置 data: 点击的按钮所在行的数据 | | pageChange | 配置了属性 total 后,分页组件发生改变时都会触发 | (pageInfo: IPageInfo) => void | pageInfo: 分页相关信息,包含了当前页数、每页大小 |

插槽

| 插槽名 | 说明 | 类型 | | --------------- | ------------------------ | ----------- | | [prop] + Header | 自定义表头的内容 | {data: any} | | [prop] | 自定义列的内容 | {data: any} | | actionHeader | 自定义操作列表头的内容 | {data: any} | | empty | 当数据为空时自定义的内容 | - |

说明: [prop] 为 属性 column - prop 配置的值

MForm

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------ | --------------------------------------------------------------------------------------------------------------------- | --------------------- | ------ | | list | 用于配置表单组件中的各个元素,例如输入框、选择框等表单控件 | IForm[] | - | | v-model:data | 表单中数据的绑定值,是一个对象,key 为属性 list 中配置的 prop,value 为数据值 | Record<string, any> | - | | rules | 表单校验规则 | FormRules | - | | column | 用于控制表单在页面中分为几列 | number | 1 | | config | 所有 ElementPlus 中位于 ElForm 中的属性均可添加到此位置 | Partial<FormProp> | - | | isEdit | 控制表单组件的编辑和展示的两种状态,false时,直接展示绑定的值,且可通过属性 list - option - textRender 进行自定义显示 | boolean | true | | theme | 表单主题,不同的样式 | enum | - |

事件

无自定义事件,可直接在标签添加 ElForm 上的事件

插槽

| 插槽名 | 说明 | 类型 | | ------ | ------------------------ | ----------- | | [prop] | 自定义该 FormItem 的内容 | {data: any} |

说明: [prop] 为 属性 list - prop 配置的值,且仅在 list - type 配置的值为 slot 时生效

MSearchForm

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------ | ------------------------------------------------------------------------------------- | --------------------------------- | ------ | | list | 用于配置表单组件中的各个元素,例如输入框、选择框等表单控件。 | IForm[] | - | | v-model:data | 表单中数据的绑定值,是一个对象,key 为属性 list 中配置的 prop,value 为数据值。 | Record<string, any> | - | | rules | 表单校验规则。 | FormRules | - | | action | 用于控制组件右侧中的功能按钮。 | ISearchAction[] | - | | config | 所有 ElementPlus 中位于 ElForm 中的属性均可添加到此位置 | Partial<FormProp> | - | | showSearch | 是否显示搜索按钮;true 时,点击按钮才会触发搜索操作;false 时,修改表单自动触发搜索。 | boolean | false | | showReset | 是否显示重置按钮。 | boolean | false |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ----------- | ------------------------------------------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | | search | 搜索组件触发的搜索操作时的事件 | (data: any, prop?: string) => void | data: 搜索组件绑定的值,同属性中的data;prop: 当前触发搜索操作的表单控件(仅属性 showSearch 为 false 时可用) | | actionClick | 点击了搜索组件右侧操作按钮(由属性 action 配置)时触发 | (method: string, params?: any[]) => void | method: 点击按钮的标识,在属性 action - prop 中配置 params: 其他参数,例如按钮为上传、下拉按钮时,所携带的参数 |

插槽

| 插槽名 | 说明 | 类型 | | ------ | ------------------------ | ----------- | | [prop] | 自定义该 FormItem 的内容 | {data: any} |

说明: [prop] 为 属性 list - prop 配置的值,且仅在 list - type 配置的值为 slot 时生效

MFormCollection

可以像使用 MForm 组件那样使用单个表单控件

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------ | ------------------------------------------------------ | --------------- | ------ | | item | 用于配置表单组件的元素,例如输入框、选择框等表单控件。 | IForm | - | | v-model:data | 表单中数据的绑定值 | any | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | -------------- | ------------------------------------------------------- | ---------- | -------- | | change | 发生变化时触发 | () => void | 无参数 | | changeDebounce | 发生变化时触发,且具有防抖功能,例如 input 时会比较有用 | () => void | 无参数 |

MSelectWithAll

在多选框的左侧添加了全选的选择框,可用于由全选需求的表单(MForm、MSearchForm 已经支持,可配置 list 属性中的 type 为 'selectWithAll' 即可使用)

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------ | ------------------------ | ------------------------------- | ------ | | v-model:data | 多选框中数据的绑定值 | any[] | - | | selectOption | 用于配置选择框的选项列表 | ISelectOption | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ------ | -------------------- | -------------------- | ----------------------- | | change | 选择框状态变化时触发 | (value: any) => void | value: 已选择的数据的值 |

MIcon

结合了 iconfont,使用时和 @element-plus/icons-vue 中的组件特性一致,即:也可以通过 ElIcon 标签包裹,用于修改图标的大小、颜色等

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------ | -------------------------------------- | ------ | ------ | | icon | 引入的 iconfont 中的 symbol 模式的标识 | string | - |

MIconPicker

图标选择器,可像ElInput一样作为表单使用,支持展示 iconfont 的所有图标,并进行选择。

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------ | ---------------------------------------------------------- | -------------------------------------------------------------------------- | ------ | | v-model:icon | 当前选择的图标的标识 | string | - | | iconList | 图标列表,可使用 iconfont 项目中 iconfont.json文件中的数据 | {css_prefix_text: string; glyphs: { font_class: string; icon_id: any }[];} | - |

MPagination

无特殊功能,固定了分页组件的格式

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------------------- | --------------------------------------------------------------- | ------------------------- | ------ | | total | 用于配置数据的总条数 | number | - | | v-model:pageSize | 每页显示条目个数 | number | - | | v-model:currentPage | 当前页数 | number | - | | config | 所有 ElementPlus 中位于 ElPagination 中的属性均可添加到此位置 | Partial<PaginationProps> | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ---------- | ----------------------------------------------- | ----------------------------- | ------------------------------------------------ | | pageChange | 配置了属性 total 后,分页组件发生改变时都会触发 | (pageInfo: IPageInfo) => void | pageInfo: 分页相关信息,包含了当前页数、每页大小 |

MDialog

封装了带有取消、确定按钮的弹窗

属性

| 属性名 | 说明 | 类型 | 默认值 | | -------------- | ----------------------------------------------------------- | --------------------- | ------ | | v-model:isShow | 控制弹窗的显示和隐藏 | boolean | - | | hideAction | 隐藏 确定和取消按钮 | boolean | false | | config | 所有 ElementPlus 中位于 ElDialog 中的属性均可添加到此位置 | Partial<DialogProps> | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ------ | ------------------ | ---------- | -------- | | cancel | 点击取消按钮时触发 | () => void | - | | submit | 点击确定按钮时触发 | () => void | - |

插槽

| 插槽名 | 说明 | 类型 | | ------ | ------------------------------------------------------ | ---- | | header | 对话框标题的内容;会替换标题部分,但不会移除关闭按钮。 | - | | footer | Dialog 按钮操作区的内容 | - |

说明: [prop] 为 属性 list - prop 配置的值,且仅在 list - type 配置的值为 slot 时生效

MDrawer

封装了带有取消、确定按钮的抽屉

属性

| 属性名 | 说明 | 类型 | 默认值 | | -------------- | ----------------------------------------------------------- | --------------------- | ------ | | v-model:isShow | 控制抽屉的显示和隐藏 | boolean | - | | hideAction | 隐藏 确定和取消按钮 | boolean | false | | config | 所有 ElementPlus 中位于 ElDrawer 中的属性均可添加到此位置 | Partial<DrawerProps> | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ------ | ------------------ | ---------- | -------- | | cancel | 点击取消按钮时触发 | () => void | - | | submit | 点击确定按钮时触发 | () => void | - |

插槽

| 插槽名 | 说明 | 类型 | | ------ | ------------------------------------------------------ | ---- | | header | 对话框标题的内容;会替换标题部分,但不会移除关闭按钮。 | - | | footer | Drawer 按钮操作区的内容 | - |

MDivider

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------ | ------------------------------------------- | -------------- | ------ | | type | 分割线的方向 | 'row' | 'col' | 'row' | | margin | 分割线的边距,值与 css 中的 margin 属性相同 | string | - |

MDescriptions

配置式使用 ElDescriptions 组件

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------ | ----------------------------------------------------------------- | --------------------------------- | ------ | | list | 列表 | IDescriptions[] | - | | data | 数据 | boolean | - | | column | 分多少列 | number | 3 | | config | 所有 ElementPlus 中位于 ElDescriptions 中的属性均可添加到此位置 | Record<string, any> | - |

事件

| 名称 | 说明 | 类型 | 参数说明 | | ------ | ------------------ | ---------- | -------- | | data | 点击取消按钮时触发 | () => void | - | | submit | 点击确定按钮时触发 | () => void | - |

插槽

| 插槽名 | 说明 | 类型 | | ----------------- | ----------------- | ----------- | | [prop] + '-label' | 自定义label的内容 | {data: any} | | [prop] | 自定义value的内容 | {data: any} |

说明: [prop] 为 属性 list - prop 配置的值

MCard

无特殊功能,封装了固定样式的卡片

属性

| 属性名 | 说明 | 类型 | 默认值 | | ------ | --------------------------------------------------------- | ------------------- | ------ | | config | 所有 ElementPlus 中位于 ElCard 中的属性均可添加到此位置 | Partial<CardProps> | - |

插槽

| 插槽名 | 说明 | 类型 | | ------ | -------------------- | ---- | | header | 自定义卡片标题的内容 | - |

MCardBox

用于放置 MCard 等其他元素的盒子,可自动在所有内部盒子之间添加10px的边距

属性

| 属性名 | 说明 | 类型 | 默认值 | | --------- | -------------- | ----------------- | -------- | | direction | 盒子的排列方向 | 'row' | 'column' | 'column' |

数据结构

ITableColumn

// 继承了 `TableColumnProps`,可以直接使用 ElTableColumn 上的所有属性
interface ITableColumn extends TableColumnProps {
  label: string;
  prop: string;
  hideColumu?: boolean; // 是否隐藏此列
  childHead?: ITableColumn[]; // 可设置二级、三级、...、n级的表头
}

ITableAction

interface ITableAction {
  label: string; // 操作按钮的文字
  prop: string; // 操作按钮的标识,在 actionClick 事件中会用到
  type?: '' | 'default' | 'text' | 'success' | 'warning' | 'info' | 'primary' | 'danger'; // 操作按钮的颜色
  icon?: string | Component; // 操作按钮左侧图标,支持 图标组件 和 iconfont 字符串标识
  option?: Partial<ButtonProps> & { customDisabled?: (row: any) => any }; // 按钮的其他 ElButton 属性,且可以自定义禁用的逻辑
}

ITableMenu

interface ITableMenu {
  label: string; // 菜单按钮名称
  prop: string; // 菜单按钮标识,在 menuClick 事件中会用到
  icon: string | Component; // 菜单图标,支持 图标组件 和 iconfont 字符串标识
}

IForm

interface IForm extends Partial<FormItemProps> {
  label: string; // 该 formItem 展示的 label
  prop: string; // 该 formItem 的标识符,与 Form 绑定的 data 中的键名一致,同时也是 type 为 'slot' 时的插槽名称
  column?: number; // 控制该 formItem 要占据的空间,与 MForm 组件的 column 属性配合使用
  type: // 该 formItem 的表单类型
  | 'input'
    | 'select'
    | 'selectWithAll'
    | 'switch'
    | 'number'
    | 'cascader'
    | 'treeSelect'
    | 'datePicker'
    | 'timePicker'
    | 'timeSelect'
    | 'radioGroup'
    | 'rate'
    | 'slider'
    | 'checkbox'
    | 'checkboxGroup'
    | 'upload'
    | 'text'
    | 'slot';
  selectOption?: {
    // 当 type 为 select、 radioGroup 或 checkboxGroup 时,可配置该属性
    label?: string; // 自定义 label 的键名
    value?: string; // 自定义 value 的键名
    options: Array<{ label?: any; value?: any; disabled?: boolean } & Record<string, any>>; // 选项的列表
  };
  option?: Record<string, any>; // 此属性会根据 type 的值自动匹配相对应的组件属性;
  // 例如当 type 为 input 时,option 为所有可 ElInput 上添加的属性,详见 ElementPlus 文档;
  // 当 type 是 text 是, option 可配置 textRender 属性,用于自定义展示内容,textRender 属性值为一个方法,方法的参数为该项绑定的值;
  // 当 MForm 添加了属性 isEdit 为 false 时,无论 type 值是什么,均可以使用 textRender 自定义显示内容。
}

ISearchAction

type ISearchAction = ISearchActionButton | ISearchActionDropdown | ISearchActionUpload;
interface ISearchActionBase {
  label: string;
  prop: string;
  option?: Partial<ButtonProps>;
}
interface ISearchActionButton extends ISearchActionBase {
  type: 'button';
}
interface ISearchActionUpload extends ISearchActionBase {
  type: 'upload';
  uploadOption?: Partial<UploadProps>;
}
interface ISearchActionDropdown extends ISearchActionBase {
  type: 'dropdown';
  dropList: Array<{
    prop: string;
    label: string;
    icon?: string | Component;
    disabled?: boolean;
    divided?: boolean;
  }>;
}

IDescriptions

interface IDescriptions {
  label: string;
  prop: string;
  span?: number;
  width?: string | number;
  minWidth?: string | number;
  align?: 'left' | 'center' | 'right';
  labelAlign?: 'left' | 'center' | 'right';
  className?: string;
  labelClassName?: string;
}

ISelectOption

interface ISelectOption {
  // 当 type 为 select 和 radioGroup 时,可配置该属性
  label?: string; // 自定义 label 的键名
  value?: string; // 自定义 value 的键名
  options: Array<{ label?: any; value?: any; disabled?: boolean } & Record<string, any>>; // 选项的列表
}