{"version":3,"file":"crud.mjs","sources":["../../../../../../../packages/components/crud/src/crud.ts"],"sourcesContent":["import {\r\n  buildProps,\r\n  definePropType,\r\n  isArray,\r\n  isFunction,\r\n  isNumber,\r\n  isObject,\r\n  isString,\r\n} from '@m-eleplus-crud/utils'\r\nimport { useSizeProp } from '@m-eleplus-crud/hooks'\r\nimport { ColumnType, ICommonColumn } from '../../common'\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type { FormItemRule } from 'element-plus'\r\nimport type { ITableCommonColumn, ITableCommonOption } from '../../table'\r\nimport type { ISearchCommonColumn, ISearchCommonOption } from '../../search'\r\nimport type { IFormCommonColumn, IFormCommonOption } from '../../form'\r\n\r\n// crud不需要继承form的column属性\r\ntype WithoutFormColumn = Omit<\r\n  IFormCommonColumn,\r\n  'order' | 'value' | 'placeholder' | 'rules' | 'span' | 'labelWidth'\r\n>\r\n// crud不需要继承search的column属性\r\ntype WithoutSearchColumn = Omit<\r\n  ISearchCommonColumn,\r\n  'order' | 'value' | 'placeholder' | 'rules' | 'span' | 'labelWidth'\r\n>\r\n\r\nexport interface ICrudCommonColumn\r\n  extends ICommonColumn,\r\n  ITableCommonColumn,\r\n  // IFormCommonColumn,\r\n  // ISearchCommonColumn,\r\n  WithoutFormColumn,\r\n  WithoutSearchColumn {\r\n  /**\r\n   * @description 搜索排序\r\n   */\r\n  searchOrder?: number\r\n  /**\r\n   * @description 表单排序\r\n   */\r\n  formOrder?: number\r\n  /**\r\n   * @description 是否开启搜索\r\n   */\r\n  search?: boolean\r\n  /**\r\n   * @description 搜索默认值\r\n   */\r\n  searchValue?: any\r\n  /**\r\n   * @description 表单默认值\r\n   */\r\n  formValue?: any\r\n  /**\r\n   * @description 搜索占位文本\r\n   */\r\n  searchPlaceholder?: string\r\n  /**\r\n   * @description 表单占位文本\r\n   */\r\n  formPlaceholder?: string\r\n  /**\r\n   * @description 搜索下拉组件等可清除\r\n   */\r\n  searchClearable?: boolean\r\n  /**\r\n   * @description 表单下拉组件等可清除\r\n   */\r\n  formClearable?: boolean\r\n  /**\r\n   * @description 搜索标签宽度\r\n   */\r\n  searchLabelWidth?: string\r\n  /**\r\n   * @description 表单标签宽度\r\n   */\r\n  formLabelWidth?: string\r\n  /**\r\n   * @description 搜索校验规则\r\n   */\r\n  searchRules?: FormItemRule[]\r\n  /**\r\n   * @description 表单校验规则\r\n   */\r\n  formRules?: FormItemRule[]\r\n  /**\r\n   * @description 列表是否显示\r\n   */\r\n  hide?: boolean\r\n  /**\r\n   * @description 新增对话框是否显示\r\n   */\r\n  addHide?: boolean\r\n  /**\r\n   * @description 查看对话框是否显示\r\n   */\r\n  viewHide?: boolean\r\n  /**\r\n   * @description 编辑对话框是否显示\r\n   */\r\n  editHide?: boolean\r\n  /**\r\n   * @description 搜索项框栅列\r\n   */\r\n  searchSpan?: number\r\n  /**\r\n   * @description 新增项框栅列\r\n   */\r\n  addSpan?: number\r\n  /**\r\n   * @description 编辑项框栅列\r\n   */\r\n  editSpan?: number\r\n  /**\r\n   * @description 查看项框栅列\r\n   */\r\n  viewSpan?: number\r\n  /**\r\n   * @description 表单项框栅列\r\n   */\r\n  formSpan?: number\r\n  /**\r\n   * @description 新增表单禁用\r\n   */\r\n  addDisabled?: boolean\r\n  /**\r\n   * @description 编辑表单禁用\r\n   */\r\n  editDisabled?: boolean\r\n}\r\n\r\nexport interface ICrudColumn extends ICrudCommonColumn {\r\n  type?: ColumnType | 'index' | 'single' | 'selection'\r\n  /**\r\n   * @description 仅对 type=selection 的列有效，类型为 Function，Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\r\n   * @param row 行数据\r\n   * @param index 索引\r\n   * @returns \r\n   */\r\n  selectable?: (row: any, index: number) => boolean,\r\n  /**\r\n   * @description 对应列是否可以排序， 如果设置为 'custom'，则代表用户希望远程排序，需要监听 Table 的 sort-change 事件\r\n   */\r\n  sortable?: boolean | string\r\n}\r\n\r\n/**\r\n * @description crud配置\r\n */\r\nexport interface ICrudOption\r\n  extends ITableCommonOption,\r\n  IFormCommonOption,\r\n  ISearchCommonOption {\r\n  /**\r\n   * @description 新增按钮是否需要\r\n   */\r\n  addBtn?: boolean\r\n  /**\r\n   * @description 编辑按钮是否需要\r\n   */\r\n  editBtn?: boolean\r\n  /**\r\n   * @description 删除按钮是否需要\r\n   */\r\n  delBtn?: boolean\r\n  /**\r\n   * @description 新增按钮文字\r\n   */\r\n  addBtnText?: string\r\n  /**\r\n   * @description 新增按钮图标\r\n   */\r\n  addBtnIcon?: string\r\n  /**\r\n   * @description 搜索label宽度\r\n   */\r\n  searchLabelWidth?: string\r\n  /**\r\n   * @description 表单label宽度\r\n   */\r\n  formLabelWidth?: string\r\n  /**\r\n   * @description 新增弹窗标题\r\n   */\r\n  addDialogTitle?: string\r\n  /**\r\n   * @description 编辑弹窗标题\r\n   */\r\n  editDialogTitle?: string\r\n  /**\r\n   * @description 查看弹窗标题\r\n   */\r\n  viewDialogTitle?: string\r\n  /**\r\n   * @description 弹窗宽度\r\n   */\r\n  dialogWidth?: string\r\n  /**\r\n   * @description 表格高度\r\n   */\r\n  height?: string\r\n  /**\r\n   * @description 表格最大高度\r\n   */\r\n  maxHeight?: string\r\n  /**\r\n   * @description 表格高度调节(px)\r\n   */\r\n  calcHeight?: number\r\n  /**\r\n   * @description crud列配置\r\n   */\r\n  column: ICrudColumn[]\r\n}\r\n\r\nexport const crudProps = buildProps({\r\n  /**\r\n   * @description 组件尺寸大小\r\n   */\r\n  size: useSizeProp,\r\n  /**\r\n   * @description 加载状态\r\n   */\r\n  loading: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  /**\r\n   * @description 表格数据\r\n   */\r\n  data: {\r\n    type: Array,\r\n    required: true,\r\n  },\r\n  /**\r\n   * @description 搜索参数\r\n   */\r\n  search: {\r\n    type: Object,\r\n    default: () => ({}),\r\n  },\r\n  /**\r\n   * @description 数据总数\r\n   */\r\n  total: {\r\n    type: Number,\r\n    default: 0,\r\n  },\r\n  /**\r\n   * @description 表单绑定的值\r\n   */\r\n  modelValue: {\r\n    type: Object,\r\n    required: true,\r\n  },\r\n  /**\r\n   * @description 权限配置\r\n   */\r\n  permission: {\r\n    type: Object,\r\n    default: () => ({\r\n      // 新增按钮权限\r\n      addBtn: true,\r\n      // 编辑按钮权限\r\n      editBtn: true,\r\n      // 删除按钮权限\r\n      delBtn: true,\r\n    }),\r\n  },\r\n  /**\r\n   * @description 选择的数据\r\n   */\r\n  select: {\r\n    type: Array,\r\n    default: () => [],\r\n  },\r\n  /**\r\n   * @description 表单提交前\r\n   */\r\n  beforeEnter: {\r\n    type: Function,\r\n  },\r\n  /**\r\n   * @description crud配置项\r\n   */\r\n  option: {\r\n    type: definePropType<ICrudOption>(Object),\r\n    required: false,\r\n  },\r\n} as const)\r\nexport type CrudProps = ExtractPropTypes<typeof crudProps>\r\n\r\nexport const crudEmits = {\r\n  /**\r\n   * @description 更新选择数据\r\n   * @param arr 选择的数据\r\n   * @returns\r\n   */\r\n  'update:select': (arr: any[]) => isArray(arr),\r\n  /**\r\n   * @description 更新表单数据\r\n   * @param value  表单数据\r\n   * @returns\r\n   */\r\n  'update:modelValue': (value: any) => isObject(value),\r\n  /**\r\n   * 表格自定义排序模式下排序变化触发\r\n   * @param data \r\n   * @returns \r\n   */\r\n  sortChange: (data: {column: any, prop: string, order: any }) => true,\r\n  /**\r\n   * 查询事件触发\r\n   * @param form 查询表单数据\r\n   * @returns\r\n   */\r\n  search: (form: any) => isObject(form),\r\n  /**\r\n   * 重置事件触发\r\n   * @returns\r\n   */\r\n  reset: () => true,\r\n  /**\r\n   * 新增\r\n   * @param form 表单数据\r\n   * @param done 完成\r\n   * @param loading 加载\r\n   * @returns\r\n   */\r\n  rowSave: (form: any, done: () => void, loading: () => void) =>\r\n    isObject(form) && isFunction(done) && isFunction(loading),\r\n  /**\r\n   * 编辑\r\n   * @param form 表单数据\r\n   * @param done 完成\r\n   * @param loading 加载\r\n   * @returns\r\n   */\r\n  rowEdit: (form: any, done: () => void, loading: () => void) =>\r\n    isObject(form) && isFunction(done) && isFunction(loading),\r\n\r\n  /**\r\n   * 取消\r\n   * @param form 表单数据\r\n   * @param index 索引\r\n   * @param type 类型\r\n   * @returns\r\n   */\r\n  rowCancel: (form: any, index: number, type: 'add' | 'edit' | 'view') =>\r\n    isObject(form) && isNumber(index) && isString(type),\r\n\r\n  /**\r\n   * 删除\r\n   * @param row 行数据\r\n   * @param index 索引\r\n   * @returns\r\n   */\r\n  rowDel: (row: any, index: number) => isObject(row) && isNumber(index),\r\n}\r\nexport type CrudEmits = typeof crudEmits\r\n"],"names":[],"mappings":";;;;;AAyNO,MAAM,YAAY,UAAW,CAAA;AAAA,EAIlC,IAAM,EAAA,WAAA;AAAA,EAIN,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,OAAO;AAAA,MAEd,MAAQ,EAAA,IAAA;AAAA,MAER,OAAS,EAAA,IAAA;AAAA,MAET,MAAQ,EAAA,IAAA;AAAA,KACV,CAAA;AAAA,GACF;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,QAAA;AAAA,GACR;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAA4B,MAAM,CAAA;AAAA,IACxC,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAU,EAAA;AAGH,MAAM,SAAY,GAAA;AAAA,EAMvB,eAAiB,EAAA,CAAC,GAAe,KAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,EAM5C,mBAAqB,EAAA,CAAC,KAAe,KAAA,QAAA,CAAS,KAAK,CAAA;AAAA,EAMnD,UAAA,EAAY,CAAC,IAAmD,KAAA,IAAA;AAAA,EAMhE,MAAQ,EAAA,CAAC,IAAc,KAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EAKpC,OAAO,MAAM,IAAA;AAAA,EAQb,OAAS,EAAA,CAAC,IAAW,EAAA,IAAA,EAAkB,OACrC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,UAAW,CAAA,IAAI,CAAK,IAAA,UAAA,CAAW,OAAO,CAAA;AAAA,EAQ1D,OAAS,EAAA,CAAC,IAAW,EAAA,IAAA,EAAkB,OACrC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,UAAW,CAAA,IAAI,CAAK,IAAA,UAAA,CAAW,OAAO,CAAA;AAAA,EAS1D,SAAW,EAAA,CAAC,IAAW,EAAA,KAAA,EAAe,IACpC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,QAAS,CAAA,KAAK,CAAK,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EAQpD,MAAA,EAAQ,CAAC,GAAU,EAAA,KAAA,KAAkB,SAAS,GAAG,CAAA,IAAK,SAAS,KAAK,CAAA;AACtE;;;;"}