0.0.33 • Published 5 months ago

monose-component-vue v0.0.33

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

快速开始

  1. 安装
npm install monose-component-vue
  1. 引入样式
import 'monose-component-vue/dist/monose-component-vue.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加载动画状态(分页区和菜单区不受影响)booleanfalse
fitHeight开启后,表格可根据外层盒子自适应高度booleanfalse
showIndex开启后,左侧会添加序号列booleanfalse
showSelection开启后,左侧会添加多选框列booleanfalse
showFilter开启后,菜单区域会增加配置按钮,可调节列的展示和顺序booleanfalse
total可选,传入此参数后,表格下方会出现分页组件,同时用于配置数据的总条数number-
v-model:pageSize每页显示条目个数number-
v-model:currentPage当前页数number-
config所有 ElementPlus 中位于 ElTable 中的属性均可添加到此位置Partial\<TableProps\>-
columuConfig所有 ElementPlus 中位于 ElTableColumn 中的属性均可添加到此位置会添加到所有的 column 标签上,例如:配置所有列内容居中时会很方便。Partial\<TableColumnCtx\>-
pageConfig所有 ElementPlus 中位于 ElPagination 中的属性均可添加到此位置Partial\-

事件

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

插槽

插槽名说明类型
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用于控制表单在页面中分为几列number1
config所有 ElementPlus 中位于 ElForm 中的属性均可添加到此位置Partial\-
isEdit控制表单组件的编辑和展示的两种状态,false时,直接展示绑定的值,且可通过属性 list - option - textRender 进行自定义显示booleantrue
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\-
showSearch是否显示搜索按钮;true 时,点击按钮才会触发搜索操作;false 时,修改表单自动触发搜索。booleanfalse
showReset是否显示重置按钮。booleanfalse

事件

名称说明类型参数说明
search搜索组件触发的搜索操作时的事件(data: any, prop?: string) => voiddata: 搜索组件绑定的值,同属性中的data;prop: 当前触发搜索操作的表单控件(仅属性 showSearch 为 false 时可用)
actionClick点击了搜索组件右侧操作按钮(由属性 action 配置)时触发(method: string, params?: any[]) => voidmethod: 点击按钮的标识,在属性 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) => voidvalue: 已选择的数据的值

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\-

事件

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

MDialog

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

属性

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

事件

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

插槽

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

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

MDrawer

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

属性

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

事件

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

插槽

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

MDivider

属性

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

MDescriptions

配置式使用 ElDescriptions 组件

属性

属性名说明类型默认值
list列表IDescriptions[]-
data数据boolean-
column分多少列number3
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\-

插槽

插槽名说明类型
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>>; // 选项的列表
}
0.0.30

7 months ago

0.0.31

6 months ago

0.0.32

5 months ago

0.0.33

5 months ago

0.0.27

8 months ago

0.0.28

7 months ago

0.0.29

7 months ago

0.0.20

1 year ago

0.0.21

1 year ago

0.0.22

1 year ago

0.0.23

1 year ago

0.0.24

12 months ago

0.0.25

11 months ago

0.0.18

1 year ago

0.0.19

1 year ago

0.0.26

11 months ago

0.0.17

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.10

1 year ago

0.0.11

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.5

1 year ago

0.0.6

1 year ago

0.0.3

1 year ago

0.0.4

1 year ago

0.0.2

2 years ago

0.0.1

2 years ago