@zl-ui-kit/components 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,13 +18,13 @@ ZL UI 业务组件库 —— Element Plus 体系,`Zl` 前缀,56 个业务组
18
18
  - [2.2 启动 playground(组件示例与联调)](#22-启动-playground组件示例与联调)
19
19
  - [2.3 主题快速接入(宿主项目)](#23-主题快速接入宿主项目)
20
20
  - [2.4 示例页面索引](#24-示例页面索引)
21
- - [3. 组件总览(58 个业务组件)](#3-组件总览58-个业务组件)
21
+ - [3. 组件总览(59 个业务组件)](#3-组件总览59-个业务组件)
22
22
  - [3.1 通用展示组件](#31-通用展示组件)
23
23
  - [3.2 数据型组件](#32-数据型组件)
24
24
  - [3.3 表单与交互组件](#33-表单与交互组件)
25
25
  - [3.4 布局与权限](#34-布局与权限)
26
26
  - [3.5 文件与编辑](#35-文件与编辑)
27
- - [3.6 国际化基础设施(独立于 58 个业务组件)](#36-国际化基础设施独立于-58-个业务组件)
27
+ - [3.6 国际化基础设施(独立于 59 个业务组件)](#36-国际化基础设施独立于-59-个业务组件)
28
28
  - [3.7 内部子组件(不对外导出,随父组件使用)](#37-内部子组件不对外导出随父组件使用)
29
29
  - [4. 图标组件 `ZlIcon`](#4-图标组件-zlicon)
30
30
  - [4.1 必须先注册图标集(否则一个图标都不显示)](#41-必须先注册图标集否则一个图标都不显示)
@@ -313,11 +313,11 @@ import { ZlI18nProvider } from '@zl-ui-kit/components'
313
313
 
314
314
  #### 1.2.3 组件注册的三种方式(以及 EP 的坑)
315
315
 
316
- | 方式 | 写法 | 适用 |
317
- | ----------- | --------------------------------------------------------------------- | ---------------------------------------------- |
318
- | 全量插件 | `app.use(ZlUI)` | 业务项目首选,主入口 52 个组件全注册,一次搞定 |
319
- | 按名注册 | `app.component('ZlTable', ZlTable)` | 只要几个组件,控制产物 |
320
- | 直接 import | `<script setup>` 里 `import { ZlTable } from '@zl-ui-kit/components'` | 单文件用一次,无需全局 |
316
+ | 方式 | 写法 | 适用 |
317
+ | ----------- | --------------------------------------------------------------------- | ---------------------------------------- |
318
+ | 全量插件 | `app.use(ZlUI)` | 业务项目首选,主入口组件全注册,一次搞定 |
319
+ | 按名注册 | `app.component('ZlTable', ZlTable)` | 只要几个组件,控制产物 |
320
+ | 直接 import | `<script setup>` 里 `import { ZlTable } from '@zl-ui-kit/components'` | 单文件用一次,无需全局 |
321
321
 
322
322
  > ⚠️ **不管用哪种,Element Plus 的组件都必须能被「按名」解析到。**
323
323
  > `@zl-ui-kit/components` 发布的是**编译后的 render 函数**,内部用 `resolveComponent('el-select')` 之类按名取组件,**不是模板**。所以 `unplugin-vue-components` 的 ElementPlusResolver **改不到它**(那个插件只处理源码里的模板标签)。
@@ -459,15 +459,15 @@ defineTheme({
459
459
 
460
460
  ---
461
461
 
462
- ## 3. 组件总览(58 个业务组件)
462
+ ## 3. 组件总览(59 个业务组件)
463
463
 
464
- > 口径:主入口 `@zl-ui-kit/components` 导出 **54 个**组件,另有 **5 个**重型组件走子路径入口(`/chart`、`/editor`、`/file-preview`),合计 **59 个对外组件**(§14 逐条覆盖这 59 个);其中 `ZlI18nProvider` 是国际化基础设施,故**业务组件为 58 个**(playground 的 `/gallery` 逐个渲染的就是这 58 个)。组件目录共 51 个(一个目录可产出多个导出符号,如 `ZlTag` 目录同时产出 `ZlTag` / `ZlCornerTag`)。§3.1~§3.5 按功能分组列出业务组件,其中混列了 4 个**不对外导出**的内部子组件(`ZlHorizontalLayout` / `ZlVerticalLayout` / `ZlAppMenuItem` / `ZlFileFetchError`,见 §3.7),去掉这 4 个后正好 58 个。
464
+ > 口径:主入口 `@zl-ui-kit/components` 导出 **55 个**组件,另有 **5 个**重型组件走子路径入口(`/chart`、`/editor`、`/file-preview`),合计 **60 个对外组件**(§14 逐条覆盖这 60 个);其中 `ZlI18nProvider` 是国际化基础设施,故**业务组件为 59 个**(playground 的 `/gallery` 逐个渲染的就是这 59 个)。组件目录共 52 个(一个目录可产出多个导出符号,如 `ZlTag` 目录同时产出 `ZlTag` / `ZlCornerTag`)。§3.1~§3.5 按功能分组列出业务组件,其中混列了 4 个**不对外导出**的内部子组件(`ZlHorizontalLayout` / `ZlVerticalLayout` / `ZlAppMenuItem` / `ZlFileFetchError`,见 §3.7),去掉这 4 个后正好 59 个。
465
465
 
466
466
  > **要查精确的 props / 事件 / 插槽 / 暴露方法 / schema 类型?** 直接看 **[§14 组件 API 参考](#14-组件-api-参考自动生成)**——逐个组件给出 `import`、可直接照抄的 **用法示例**(props 怎么写)与 **插槽用法**(`<template #name>` 怎么写),再用表格列出 TS 类型表达式、默认值、是否必填,**且每个 prop / 每个插槽都带一列「示例」**(能直接粘到标签上的写法),以及 `TableColumn` / `FormItem` / `SearchItem` / `ActionItem` 等 schema 类型的字段表。本章及 §4~§9 讲的是**场景化用法**,§14 是**逐字段的契约 + 可粘贴代码**。
467
467
 
468
468
  ### 3.1 通用展示组件
469
469
 
470
- `ZlIcon` · `ZlTitle` · `ZlTag` · `ZlCornerTag` · `ZlText` · `ZlCopy` · `ZlAutoTooltip` · `ZlEmpty` · `ZlDictTag` · `ZlDescription` · `ZlSection` · `ZlCard` · `ZlAvatar` · `ZlAvatarGroup` · `ZlAppSlogan` · `ZlIconLabel` · `ZlIconHover`
470
+ `ZlIcon` · `ZlTitle` · `ZlBreadcrumb` · `ZlTag` · `ZlCornerTag` · `ZlText` · `ZlCopy` · `ZlAutoTooltip` · `ZlEmpty` · `ZlDictTag` · `ZlDescription` · `ZlSection` · `ZlCard` · `ZlAvatar` · `ZlAvatarGroup` · `ZlAppSlogan` · `ZlIconLabel` · `ZlIconHover`
471
471
 
472
472
  ### 3.2 数据型组件
473
473
 
@@ -487,7 +487,7 @@ defineTheme({
487
487
 
488
488
  > 页签/微前端类组件(`ZlMicroPage`/`ZlAppTabs`/`ZlPageTabs`/`ZlDevMenu`)与配套 composables(`usePageTabs` 等)均已移除,`0.5.0` 起组件库不含任何微前端能力。
489
489
 
490
- ### 3.6 国际化基础设施(独立于 58 个业务组件)
490
+ ### 3.6 国际化基础设施(独立于 59 个业务组件)
491
491
 
492
492
  `ZlI18nProvider` —— 国际化根容器,将 Element Plus 语言包经 `<el-config-provider>` 挂载到 Element Plus(详见第 13 章)。
493
493
 
@@ -1218,6 +1218,24 @@ useDictProvider({ source: { resourceType: [...] } })
1218
1218
 
1219
1219
  `request` 接收 `FormData` 返回 `{ url }`;`maxSize` 单位 MB。
1220
1220
 
1221
+ **透传边界**:组件用自带 `httpRequest` 取代了 `el-upload` 的默认 XHR,所以 `action` / `headers` / `method` / `data` / `name` / `with-credentials` 传了也不生效(认证头请在 `request` 里随请求一起提交);`disabled` / `drag` / `directory` / `multiple` / `show-file-list` / `auto-upload` / `list-type` / `before-remove` 与 `@success` / `@error` / `@change` 等事件可直接透传。`before-upload` 与内置校验(`accept` / `maxSize` / `verifySpace`)**组合执行**:先跑你传的钩子,返回 `false` 或 reject 即中止。
1222
+
1223
+ **手动上传**:`:auto-upload="false"` 后由 `submit()` 触发(暴露方法见 §14)。
1224
+
1225
+ ```vue
1226
+ <ZlUpload ref="uploadRef" v-model="files" :request="uploadFile" :auto-upload="false">
1227
+ <template #file="{ file }">
1228
+ <span>{{ file.name }}</span>
1229
+ </template>
1230
+ <template #tip>仅支持 PDF,单个不超过 10MB</template>
1231
+ </ZlUpload>
1232
+
1233
+ <el-button @click="uploadRef?.submit()">开始上传</el-button>
1234
+ ```
1235
+
1236
+ - `#file` 传入后完全接管列表项渲染(作用域 `{ file, index }`);不传时用内置卡片,此时 `list-type` 只改外层列表形态(`picture-card` 要原生长相需自行写 `#file`)。
1237
+ - `#tip` 传入后不再渲染 `tip` / `accept` / `limit` / `maxSize` 自动拼出的内置提示。
1238
+
1221
1239
  #### ⑦ `ZlTree` —— `useRequest` 绑定 `data`
1222
1240
 
1223
1241
  ```ts
@@ -4026,6 +4044,7 @@ const { i18n } = useLocale({ messages })
4026
4044
  | [`ZlAutoTooltip`](#zlautotooltip) | 主入口 | 0 | 0 | 1 | 0 |
4027
4045
  | [`ZlAvatar`](#zlavatar) | 主入口 | 3 | 0 | 0 | 0 |
4028
4046
  | [`ZlAvatarGroup`](#zlavatargroup) | 主入口 | 3 | 0 | 0 | 0 |
4047
+ | [`ZlBreadcrumb`](#zlbreadcrumb) | 主入口 | 2 | 0 | 1 | 0 |
4029
4048
  | [`ZlCard`](#zlcard) | 主入口 | 3 | 0 | 8 | 0 |
4030
4049
  | [`ZlCardPage`](#zlcardpage) | 主入口 | 7 | 1 | 3 | 3 |
4031
4050
  | [`ZlCheckAll`](#zlcheckall) | 主入口 | 2 | 1 | 0 | 0 |
@@ -4070,7 +4089,7 @@ const { i18n } = useLocale({ messages })
4070
4089
  | [`ZlTag`](#zltag) | 主入口 | 15 | 4 | 1 | 0 |
4071
4090
  | [`ZlText`](#zltext) | 主入口 | 1 | 0 | 1 | 0 |
4072
4091
  | [`ZlTitle`](#zltitle) | 主入口 | 5 | 0 | 3 | 0 |
4073
- | [`ZlUpload`](#zlupload) | 主入口 | 13 | 1 | 1 | 0 |
4092
+ | [`ZlUpload`](#zlupload) | 主入口 | 21 | 1 | 3 | 5 |
4074
4093
  | [`ZlTree`](#zltree) | 主入口 | 10 | 2 | 5 | 23 |
4075
4094
  | [`ZlTreeSelect`](#zltreeselect) | 主入口 | 10 | 1 | 0 | 0 |
4076
4095
  | [`ZlChart`](#zlchart) | 子入口 chart | 2 | 0 | 0 | 1 |
@@ -4443,6 +4462,63 @@ import { ZlAvatarGroup } from '@zl-ui-kit/components'
4443
4462
  | `props` | `{ imageUrl?: string; label?: string }` | `() => ({ imageUrl: 'imageUrl', label: 'label' })` | 否 | `:props="{}"` | 字段映射(imageUrl/label 的取值键) |
4444
4463
  | `size` | `string` | — | 否 | `size="24px"` | 每个头像的尺寸(CSS 长度) |
4445
4464
 
4465
+ #### `ZlBreadcrumb`
4466
+
4467
+ <sub>入口 `@zl-ui-kit/components` · 源码 `packages/components/src/components/ZlBreadcrumb/index.vue`</sub>
4468
+
4469
+ **简介**:面包屑:`items` schema 驱动,最后一项自动作为当前页(不跳转、加粗高亮); 条目可带 `to` 走路由或 `click` 走回调,其余属性透传给 `el-breadcrumb-item`。
4470
+
4471
+ **接口概览**:2 props · 1 插槽
4472
+
4473
+ **用法示例**
4474
+
4475
+ ```vue
4476
+ <script setup lang="ts">
4477
+ import { ZlBreadcrumb } from '@zl-ui-kit/components'
4478
+ </script>
4479
+
4480
+ <template>
4481
+ <ZlBreadcrumb :items="items" />
4482
+ </template>
4483
+ ```
4484
+
4485
+ > 示例中的 `items` 是数组 / 对象 / 函数等非字面量入参,由调用方提供数据;其余属性写法可直接照搬。
4486
+
4487
+ **插槽用法**
4488
+
4489
+ ```vue
4490
+ <template>
4491
+ <ZlBreadcrumb>
4492
+ <template #item>…</template>
4493
+ </ZlBreadcrumb>
4494
+ </template>
4495
+ ```
4496
+
4497
+ **props**
4498
+
4499
+ | 属性 | 类型 | 默认值 | 必填 | 示例 | 说明 |
4500
+ | ----------- | --------------------------------------------- | ---------- | ---- | ---------------- | ------------------------------------------------------ |
4501
+ | `items` | `BreadcrumbItem[]`<br>— 条目字段见下「items」 | `() => []` | 否 | `:items="items"` | 面包屑条目,最后一项视为当前页 |
4502
+ | `separator` | `string` | `'/'` | 否 | `separator=","` | 分隔符文本;也可用 `separator-icon` 传图标(图标优先) |
4503
+
4504
+ **`items` 条目字段(`BreadcrumbItem`)**
4505
+
4506
+ | 字段 | 类型 | 必填 | 说明 |
4507
+ | --------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
4508
+ | `label` | `string` | 是 | 显示文本 |
4509
+ | `to` | `string \| Record<string, any>` | 否 | 路由目标(同 `el-breadcrumb-item` 的 to);最后一项忽略 |
4510
+ | `replace` | `boolean` | 否 | 点击后替换当前历史记录(同 `el-breadcrumb-item` 的 replace) |
4511
+ | `click` | `(item: BreadcrumbItem, index: number) => void` | 否 | 无 `to` 时的点击回调;最后一项不触发 |
4512
+ | `key` | `string \| number` | 否 | `v-for` 的 key,缺省用索引 |
4513
+
4514
+ > 把未声明的入参与事件(`useAttrs()`)透传给 `el-breadcrumb`,未列出的属性会继续下传
4515
+
4516
+ **插槽(slots)**
4517
+
4518
+ | 插槽 | 作用域参数 | 示例 | 说明 |
4519
+ | ------ | ---------------------------- | ------------------------------ | ------------------------------------------------ |
4520
+ | `item` | `item` / `index` / `is-last` | `<template #item>…</template>` | 条目内容自定义,作用域含 { item, index, isLast } |
4521
+
4446
4522
  #### `ZlCard`
4447
4523
 
4448
4524
  <sub>入口 `@zl-ui-kit/components` · 源码 `packages/components/src/components/ZlCard/index.vue`</sub>
@@ -6800,7 +6876,7 @@ import { ZlTitle } from '@zl-ui-kit/components'
6800
6876
 
6801
6877
  <sub>入口 `@zl-ui-kit/components` · 源码 `packages/components/src/components/ZlUpload/index.vue`</sub>
6802
6878
 
6803
- **接口概览**:13 props · 1 事件 · 1 插槽
6879
+ **接口概览**:21 props · 1 事件 · 3 插槽 · 5 暴露
6804
6880
 
6805
6881
  **用法示例**
6806
6882
 
@@ -6822,27 +6898,39 @@ import { ZlUpload } from '@zl-ui-kit/components'
6822
6898
  <template>
6823
6899
  <ZlUpload>
6824
6900
  <template #default>…</template>
6901
+ <template #file="scope">…</template>
6902
+ <template #tip>…</template>
6825
6903
  </ZlUpload>
6826
6904
  </template>
6827
6905
  ```
6828
6906
 
6829
6907
  **props**
6830
6908
 
6831
- | 属性 | 类型 | 默认值 | 必填 | 示例 | 说明 |
6832
- | ----------------------- | --------------------------------------------------------------- | ----------- | ---- | ----------------------------------------- | ----------------------------------------- |
6833
- | `request` | `(form: FormData, config: Record<string, any>) => Promise<any>` | — | 否 | `:request="async () => {}"` | 自定义上传函数(form, config)→ Promise |
6834
- | `modelValue` | `string \| any[]` | `''` | 否 | `v-model="value"` | 已上传文件路径或文件列表 |
6835
- | `accept` | `string` | — | 否 | `accept=".png,.jpg,.pdf"` | 允许上传的文件格式 |
6836
- | `maxSize` | `number` | — | 否 | `:max-size="1"` | 单文件大小上限(MB) |
6837
- | `limit` | `number` | — | 否 | `:limit="1"` | 最多允许上传的文件数量 |
6838
- | `tip` | `string` | — | 否 | `tip="支持批量上传,单个文件不超过 10MB"` | 上传区域下方的自定义提示 |
6839
- | `separator` | `string` | `';'` | 否 | `separator=","` | 多路径分隔符(modelValue 为字符串时) |
6840
- | `responseUrlKey` | `string` | `'meta'` | 否 | `response-url-key="url"` | 响应中文件地址的取值键 |
6841
- | `downloadButtonVisible` | `boolean` | `undefined` | 否 | `download-button-visible` | 是否展示「下载」按钮(默认 true) |
6842
- | `tipVisible` | `boolean` | `undefined` | 否 | `tip-visible` | 是否展示提示文案(默认 true) |
6843
- | `showDownloadButton` | `boolean` | `undefined` | 否 | `show-download-button` | 已废弃,请用 `downloadButtonVisible` 代替 |
6844
- | `showTip` | `boolean` | `undefined` | 否 | `show-tip` | 已废弃,请用 `tipVisible` 代替 |
6845
- | `verifySpace` | `boolean` | `false` | 否 | `verify-space` | 校验文件名不得含空格 |
6909
+ | 属性 | 类型 | 默认值 | 必填 | 示例 | 说明 |
6910
+ | ----------------------- | --------------------------------------------------------------- | ----------- | ---- | ----------------------------------------- | ------------------------------------------------------------------------ |
6911
+ | `request` | `(form: FormData, config: Record<string, any>) => Promise<any>` | — | 否 | `:request="async () => {}"` | 自定义上传函数(form, config)→ Promise |
6912
+ | `modelValue` | `string \| any[]` | `''` | 否 | `v-model="value"` | 已上传文件路径或文件列表 |
6913
+ | `accept` | `string` | — | 否 | `accept=".png,.jpg,.pdf"` | 允许上传的文件格式 |
6914
+ | `maxSize` | `number` | — | 否 | `:max-size="1"` | 单文件大小上限(MB) |
6915
+ | `limit` | `number` | — | 否 | `:limit="1"` | 最多允许上传的文件数量 |
6916
+ | `tip` | `string` | — | 否 | `tip="支持批量上传,单个文件不超过 10MB"` | 上传区域下方的自定义提示 |
6917
+ | `separator` | `string` | `';'` | 否 | `separator=","` | 多路径分隔符(modelValue 为字符串时) |
6918
+ | `responseUrlKey` | `string` | `'meta'` | 否 | `response-url-key="url"` | 响应中文件地址的取值键 |
6919
+ | `downloadButtonVisible` | `boolean` | `undefined` | 否 | `download-button-visible` | 是否展示「下载」按钮(默认 true) |
6920
+ | `tipVisible` | `boolean` | `undefined` | 否 | `tip-visible` | 是否展示提示文案(默认 true) |
6921
+ | `showDownloadButton` | `boolean` | `undefined` | 否 | `show-download-button` | 已废弃,请用 `downloadButtonVisible` 代替 |
6922
+ | `showTip` | `boolean` | `undefined` | 否 | `show-tip` | 已废弃,请用 `tipVisible` 代替 |
6923
+ | `verifySpace` | `boolean` | `false` | 否 | `verify-space` | 校验文件名不得含空格 |
6924
+ | `listType` | `'text' \| 'picture' \| 'picture-card'` | `'picture'` | 否 | `list-type="text"` | 文件列表展示形态,透传 `el-upload` 的 list-type(默认 picture) |
6925
+ | `disabled` | `boolean` | `undefined` | 否 | `disabled` | 是否禁用上传;未设置时沿用 `el-form` 的 disabled |
6926
+ | `drag` | `boolean` | `undefined` | 否 | `drag` | 是否启用拖拽上传(配合默认插槽自定义上传区) |
6927
+ | `directory` | `boolean` | `undefined` | 否 | `directory` | 是否支持选择文件夹 |
6928
+ | `multiple` | `boolean` | `undefined` | 否 | `multiple` | 是否允许多选文件;未设置时按 limit 推导(limit 未设置或大于 1 时多选) |
6929
+ | `showFileList` | `boolean` | `true` | 否 | `:show-file-list="false"` | 是否展示文件列表(默认 true) |
6930
+ | `autoUpload` | `boolean` | `true` | 否 | `:auto-upload="false"` | 是否选择文件后立即上传(默认 true);设为 false 后用 `submit()` 手动提交 |
6931
+ | `beforeRemove` | `(file: UploadFile, fileList: UploadFile[]) => any` | — | 否 | `:before-remove="() => {}"` | 移除文件前的钩子,返回 false 或 reject 时中止移除 |
6932
+
6933
+ > 暴露对象是 `Proxy`:下表为显式实现的能力,**未列出的键会运行时下钻到内部实例**(不建议依赖,请用上表的实例 getter 取原生对象)
6846
6934
 
6847
6935
  **事件(emits)**
6848
6936
 
@@ -6852,9 +6940,21 @@ import { ZlUpload } from '@zl-ui-kit/components'
6852
6940
 
6853
6941
  **插槽(slots)**
6854
6942
 
6855
- | 插槽 | 作用域参数 | 示例 | 说明 |
6856
- | --------- | ---------- | --------------------------------- | -------------------- |
6857
- | `default` | — | `<template #default>…</template>` | 自定义上传触发器内容 |
6943
+ | 插槽 | 作用域参数 | 示例 | 说明 |
6944
+ | --------- | --------------------- | -------------------------------------- | ------------------------------------------------------------------ |
6945
+ | `default` | — | `<template #default>…</template>` | 自定义上传触发器内容 |
6946
+ | `file` | `v-bind="scope"` 展开 | `<template #file="scope">…</template>` | 自定义文件项渲染(传入后完全接管列表项,作用域含 { file, index }) |
6947
+ | `tip` | — | `<template #tip>…</template>` | 自定义提示内容(传入后不再渲染内置提示文案) |
6948
+
6949
+ **暴露(defineExpose)**
6950
+
6951
+ | 名称 | 说明 |
6952
+ | -------------- | -------------------------------------------------------- |
6953
+ | `abort` | 取消(中止)正在进行的上传请求 |
6954
+ | `submit` | 手动提交文件列表,配合 `auto-upload=false` 使用 |
6955
+ | `clearFiles` | 清空文件列表;可传状态数组只清指定状态(如 `['ready']`) |
6956
+ | `handleStart` | 手动把文件加入上传列表(等价于用户选择文件) |
6957
+ | `handleRemove` | 手动从列表移除某个文件 |
6858
6958
 
6859
6959
  #### `ZlTree`
6860
6960
 
@@ -7213,6 +7313,20 @@ import { ZlFileViewer } from '@zl-ui-kit/components/file-preview'
7213
7313
  | `visible` | `boolean \| ((...args: any[]) => boolean)` | 否 | 显隐控制:布尔值直接判定;函数接收 `visibleArgs`(末尾追加 action 自身)后判定。 与权限取交集:两者都通过才展示。 |
7214
7314
  | `handler` | `(...args: any[]) => void` | 否 | 点击处理(接收 actionArgs) |
7215
7315
 
7316
+ #### `BreadcrumbItem`
7317
+
7318
+ <sub>源码 `packages/components/src/components/ZlBreadcrumb/types.ts`</sub>
7319
+
7320
+ 面包屑条目:除 `label` / `click` / `key` 外的字段原样透传给 `el-breadcrumb-item`
7321
+
7322
+ | 字段 | 类型 | 必填 | 说明 |
7323
+ | --------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
7324
+ | `label` | `string` | 是 | 显示文本 |
7325
+ | `to` | `string \| Record<string, any>` | 否 | 路由目标(同 `el-breadcrumb-item` 的 to);最后一项忽略 |
7326
+ | `replace` | `boolean` | 否 | 点击后替换当前历史记录(同 `el-breadcrumb-item` 的 replace) |
7327
+ | `click` | `(item: BreadcrumbItem, index: number) => void` | 否 | 无 `to` 时的点击回调;最后一项不触发 |
7328
+ | `key` | `string \| number` | 否 | `v-for` 的 key,缺省用索引 |
7329
+
7216
7330
  #### `IComponent`
7217
7331
 
7218
7332
  <sub>源码 `packages/components/src/components/ZlDynamicComponent/types.ts`</sub>
@@ -7383,6 +7497,7 @@ ZlMenu 菜单项配置
7383
7497
  | `el-tree` | `ZlTree` | 勾选多选 / 字段映射 / 暴露方法见 §7 › ZlTree |
7384
7498
  | `el-upload` | `ZlUpload` | |
7385
7499
  | `el-tag` | `ZlTag` | |
7500
+ | `el-breadcrumb` | `ZlBreadcrumb` | schema 驱动(`items`),末项自动作为当前页;条目用 `to` 走路由或 `click` 走回调,其余透传 |
7386
7501
  | `el-tabs` | `ZlTabs` | 页签内容默认懒挂载,差异见 §15.5 |
7387
7502
  | `el-radio`(标签式) | `ZlRadioTag` | 仅此形态封装 |
7388
7503
  | `el-checkbox`(标签式) | `ZlCheckboxTag` | 仅此形态封装 |
@@ -7472,19 +7587,21 @@ ZlMenu 菜单项配置
7472
7587
 
7473
7588
  #### 与 Element Plus 不等价 / 需注意事项
7474
7589
 
7475
- | 组件 | 差异 | 迁移注意 |
7476
- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
7477
- | `ZlDrawer` | `width` 映射到内部 `size`(默认 `600`);`destroy-on-close` **默认 `true`**(EP 默认 `false`);自带底部取消 / 确定按钮区(`footerVisible=false` 可整体收起,`ZlDialog` 同) | 抽屉内容**关闭即销毁**,内部状态不保留;需保留状态时显式传 `:destroy-on-close="false"` |
7478
- | `ZlForm` | `validate()` / `validateField()` 与 `el-form` **完全同语义**(成功 `resolve(true)`、失败 `reject(invalidFields)`、支持 callback);暴露 `el-form` 的 8 项能力 + `elForm` | **仅 ≥ 0.10.0**:0.9.0 及更早成功时返回 `undefined`(签名为 `Promise<void>`),`const ok = await formRef.validate()` 判为 falsy;需 `el-form` 未暴露的方法时用 `formRef.elForm` |
7479
- | `ZlTable` | 列插槽按 `prop` 名命名,作用域含 `{ row, column, $index }`;暴露 `el-table` 的 15 个公开方法 + `elTable` getter | `tableRef.toggleRowSelection(row)` 等均有类型提示;其余方法走 `tableRef.elTable` |
7480
- | `ZlSwitch` | 主名 `checked-value` / `unchecked-value`,同时**兼容 EP 的 `active-value` / `inactive-value` 别名**(同传时主名优先);`@change` 参数是**业务值**而非内部布尔 | 直搬 `:active-value="'1'"` 可用;从 `el-switch` 迁移时注意 `@change` 入参含义已变 |
7481
- | `ZlTabs` | schema 驱动:`tab.key`→`name`、`tab.title`→`label`;页签内容**默认懒挂载**(`lazy` / `lazyLoad` 默认 `true`);内容写在以 key 命名的插槽里;`border` **默认 `false`**(不显示导航下分隔线,与 EP 默认显示相反) | 需挂载时就初始化的页签要显式 `lazyLoad: false`;需要导航分隔线时显式传 `border`;`type` / `tab-click` 等透传 `el-tabs` |
7482
- | `ZlIcon` | 单色图标:尺寸走 `size`(作用在 `font-size`),颜色走 `color` / `currentColor`;`spin` / `rotate` 等仅 `zl:` 前缀(iconify)分支生效 | 图标名未注册或拼错时**不报错、不告警、只渲染空白**;迁移前用 `@zl-ui-kit/icons` 核名(见 §4.1) |
7483
- | `ZlTree` | 勾选多选 / 字段映射 / 暴露方法的完整说明见 §7 › ZlTree | 从 `el-tree` 直搬时先核对 `node-key` 与字段映射 |
7484
- | `ZlEditor` / `ZlSqlEditor` | 暴露对象是 `Proxy`:§14 列的是显式能力,未列出的 monaco 原生 API 靠运行时下钻(旧行为,**不算契约**);`ZlSqlEditor.validate()` 不通过时 **`throw diagnostics`** | 需要原生能力时用 `editorRef.value.monacoEditor`(SQL 编辑器用 `.zlEditor`);`format()` 内部会先校验 |
7485
- | `ZlAppLayout` | 只声明 `layout`(`horizontal` / `vertical`);插槽由同目录形态子组件定义(`footer` 仅 vertical,`logo` / `menu` 在 vertical 下带 `{ collapsed }`) | 菜单数据传给 `#menu` 里的 `ZlAppMenu`,**不要写 `:menus="…"` 给 `ZlAppLayout`**(未声明的 prop 会落到 DOM) |
7486
- | `ZlDictTag` | 字典项的 `type` 从 **0.10.1** 起参与上色(`color ?? type`,`info` → `gray`);更早版本只读 `color`,传 `type` 一律默认配色 | 升级后原来“无色”的标签会变有色(预期修正,属视觉变更,需回归);直传 `:dict` 会覆盖全局同名 `dictKey` 缓存 |
7487
- | 普通单选 / 复选框 | **有意不封装**:库内只有标签式的 `ZlRadioTag` / `ZlCheckboxTag` 与自带半选的 `ZlCheckAll` | `el-radio` / `el-checkbox` / `el-radio-group` / `el-checkbox-group` **继续用 `el-*`**,不要找 Zl 对应物;表头全选 / 半选场景可直接用 `ZlCheckAll` |
7590
+ | 组件 | 差异 | 迁移注意 |
7591
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
7592
+ | `ZlDrawer` | `width` 映射到内部 `size`(默认 `600`);`destroy-on-close` **默认 `true`**(EP 默认 `false`);自带底部取消 / 确定按钮区(`footerVisible=false` 可整体收起,`ZlDialog` 同) | 抽屉内容**关闭即销毁**,内部状态不保留;需保留状态时显式传 `:destroy-on-close="false"` |
7593
+ | `ZlForm` | `validate()` / `validateField()` 与 `el-form` **完全同语义**(成功 `resolve(true)`、失败 `reject(invalidFields)`、支持 callback);暴露 `el-form` 的 8 项能力 + `elForm` | **仅 ≥ 0.10.0**:0.9.0 及更早成功时返回 `undefined`(签名为 `Promise<void>`),`const ok = await formRef.validate()` 判为 falsy;需 `el-form` 未暴露的方法时用 `formRef.elForm` |
7594
+ | `ZlTable` | 列插槽按 `prop` 名命名,作用域含 `{ row, column, $index }`;暴露 `el-table` 的 15 个公开方法 + `elTable` getter | `tableRef.toggleRowSelection(row)` 等均有类型提示;其余方法走 `tableRef.elTable` |
7595
+ | `ZlSwitch` | 主名 `checked-value` / `unchecked-value`,同时**兼容 EP 的 `active-value` / `inactive-value` 别名**(同传时主名优先);`@change` 参数是**业务值**而非内部布尔 | 直搬 `:active-value="'1'"` 可用;从 `el-switch` 迁移时注意 `@change` 入参含义已变 |
7596
+ | `ZlTabs` | schema 驱动:`tab.key`→`name`、`tab.title`→`label`;页签内容**默认懒挂载**(`lazy` / `lazyLoad` 默认 `true`);内容写在以 key 命名的插槽里;`border` **默认 `false`**(不显示导航下分隔线,与 EP 默认显示相反) | 需挂载时就初始化的页签要显式 `lazyLoad: false`;需要导航分隔线时显式传 `border`;`type` / `tab-click` 等透传 `el-tabs` |
7597
+ | `ZlBreadcrumb` | `items` schema 驱动:末项自动置为当前页(即使带 `to` 也不跳转、不触发 `click`);`separator` / `separator-icon` 与 `el-breadcrumb` 同义,其余属性与事件透传 | 需要末项可点击时把它放到倒数第二项,或用 `#item` 自行渲染 |
7598
+ | `ZlIcon` | 单色图标:尺寸走 `size`(作用在 `font-size`),颜色走 `color` / `currentColor`;`spin` / `rotate` 等仅 `zl:` 前缀(iconify)分支生效 | 图标名未注册或拼错时**不报错、不告警、只渲染空白**;迁移前用 `@zl-ui-kit/icons` 核名(见 §4.1) |
7599
+ | `ZlTree` | 勾选多选 / 字段映射 / 暴露方法的完整说明见 §7 › ZlTree | 从 `el-tree` 直搬时先核对 `node-key` 与字段映射 |
7600
+ | `ZlUpload` | 自带 `httpRequest` 取代 EP 默认 XHR:`action` / `headers` / `method` / `data` / `name` / `with-credentials` **不生效**;`#file` / `#tip` 转发给调用方(**仅 ≥ 0.21.0**,更早版本这两个插槽不转发);`before-upload` 与内置校验组合(**仅 ≥ 0.21.0**,更早版本会整段覆盖调用方钩子);暴露 `submit` / `clearFiles` / `abort` / `handleStart` / `handleRemove`(更早版本无 expose) | 认证头写进 `request` 的请求头;`auto-upload=false` 时必须自己调 `submit()`;传 `#file` 后不再套用内置卡片样式 |
7601
+ | `ZlEditor` / `ZlSqlEditor` | 暴露对象是 `Proxy`:§14 列的是显式能力,未列出的 monaco 原生 API 靠运行时下钻(旧行为,**不算契约**);`ZlSqlEditor.validate()` 不通过时 **`throw diagnostics`** | 需要原生能力时用 `editorRef.value.monacoEditor`(SQL 编辑器用 `.zlEditor`);`format()` 内部会先校验 |
7602
+ | `ZlAppLayout` | 只声明 `layout`(`horizontal` / `vertical`);插槽由同目录形态子组件定义(`footer` 仅 vertical,`logo` / `menu` 在 vertical 下带 `{ collapsed }`) | 菜单数据传给 `#menu` 里的 `ZlAppMenu`,**不要写 `:menus="…"` 给 `ZlAppLayout`**(未声明的 prop 会落到 DOM) |
7603
+ | `ZlDictTag` | 字典项的 `type` 从 **0.10.1** 起参与上色(`color ?? type`,`info` → `gray`);更早版本只读 `color`,传 `type` 一律默认配色 | 升级后原来“无色”的标签会变有色(预期修正,属视觉变更,需回归);直传 `:dict` 会覆盖全局同名 `dictKey` 缓存 |
7604
+ | 普通单选 / 复选框 | **有意不封装**:库内只有标签式的 `ZlRadioTag` / `ZlCheckboxTag` 与自带半选的 `ZlCheckAll` | `el-radio` / `el-checkbox` / `el-radio-group` / `el-checkbox-group` **继续用 `el-*`**,不要找 Zl 对应物;表头全选 / 半选场景可直接用 `ZlCheckAll` |
7488
7605
 
7489
7606
  > 发现**文档与实现不一致**(包括本节未覆盖的组件):先以源码与 playground 实跑为准,并在宿主侧登记;
7490
7607
  > 属组件缺陷的回到本仓库修复(优先把契约补齐到与 EP 等价),属文档错误的直接修正本文件与 §14。修复方向以“**不破坏已有写法**”为序。
@@ -1,5 +1,5 @@
1
1
  import o from "./AppMenu.vue.mjs";
2
- import './AppMenu.css';/* empty css */
2
+ import '../ZlMenu/index.css';/* empty css */
3
3
  export {
4
4
  o as default
5
5
  };
@@ -0,0 +1 @@
1
+ .zl-breadcrumb{font-size:12px;line-height:20px}.zl-breadcrumb .el-breadcrumb__inner{color:var(--zl-text-2, #5b6577);font-weight:400}.zl-breadcrumb .el-breadcrumb__inner.is-link:hover,.zl-breadcrumb__text.is-clickable:hover{color:var(--zl-primary-6, var(--el-color-primary))}.zl-breadcrumb .el-breadcrumb__item.is-current .el-breadcrumb__inner{color:var(--zl-text-1, #242e43);font-weight:600;cursor:default}.zl-breadcrumb .el-breadcrumb__item.is-current .el-breadcrumb__inner:hover{color:var(--zl-text-1, #242e43)}.zl-breadcrumb__text.is-clickable{cursor:pointer}.zl-breadcrumb .el-breadcrumb__separator{margin:0 6px;color:var(--zl-text-3, #8a94a6)}
@@ -0,0 +1,32 @@
1
+ import { BreadcrumbItem } from './types';
2
+ type __VLS_Props = {
3
+ /** 面包屑条目,最后一项视为当前页 */
4
+ items?: BreadcrumbItem[];
5
+ /** 分隔符文本;也可用 `separator-icon` 传图标(图标优先) */
6
+ separator?: string;
7
+ };
8
+ declare function __VLS_template(): {
9
+ attrs: Partial<{}>;
10
+ slots: {
11
+ item?(_: {
12
+ item: BreadcrumbItem;
13
+ index: number;
14
+ isLast: boolean;
15
+ }): any;
16
+ };
17
+ refs: {};
18
+ rootEl: any;
19
+ };
20
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
21
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
22
+ separator: string;
23
+ items: BreadcrumbItem[];
24
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
25
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
26
+ export default _default;
27
+ type __VLS_WithTemplateSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
32
+ //# sourceMappingURL=index.vue.d.ts.map
@@ -0,0 +1,58 @@
1
+ import { defineComponent as k, useAttrs as C, resolveComponent as o, openBlock as c, createBlock as n, mergeProps as u, unref as h, withCtx as i, createElementBlock as g, Fragment as y, renderList as B, renderSlot as v, createElementVNode as z, normalizeClass as A, toDisplayString as L } from "vue";
2
+ const E = ["onClick"], w = /* @__PURE__ */ k({
3
+ name: "ZlBreadcrumb",
4
+ inheritAttrs: !1,
5
+ __name: "index",
6
+ props: {
7
+ items: { default: () => [] },
8
+ separator: { default: "/" }
9
+ },
10
+ setup(a) {
11
+ const m = a, b = C();
12
+ function l(e) {
13
+ return e === m.items.length - 1;
14
+ }
15
+ function d(e) {
16
+ const t = { ...e };
17
+ return delete t.label, delete t.click, delete t.key, t;
18
+ }
19
+ function f(e, t) {
20
+ l(t) || e.click?.(e, t);
21
+ }
22
+ return (e, t) => {
23
+ const p = o("el-breadcrumb-item"), _ = o("el-breadcrumb");
24
+ return c(), n(_, u(h(b), {
25
+ separator: a.separator,
26
+ class: "zl-breadcrumb"
27
+ }), {
28
+ default: i(() => [
29
+ (c(!0), g(y, null, B(a.items, (r, s) => (c(), n(p, u({
30
+ key: r.key ?? s
31
+ }, { ref_for: !0 }, d(r), {
32
+ to: l(s) ? void 0 : r.to,
33
+ class: { "is-current": l(s) }
34
+ }), {
35
+ default: i(() => [
36
+ v(e.$slots, "item", {
37
+ item: r,
38
+ index: s,
39
+ isLast: l(s)
40
+ }, () => [
41
+ z("span", {
42
+ class: A(["zl-breadcrumb__text", { "is-clickable": !l(s) && !!r.click }]),
43
+ onClick: (S) => f(r, s)
44
+ }, L(r.label), 11, E)
45
+ ])
46
+ ]),
47
+ _: 2
48
+ }, 1040, ["to", "class"]))), 128))
49
+ ]),
50
+ _: 3
51
+ }, 16, ["separator"]);
52
+ };
53
+ }
54
+ });
55
+ export {
56
+ w as default
57
+ };
58
+ //# sourceMappingURL=index.vue.mjs.map
@@ -0,0 +1,6 @@
1
+ import o from "./index.vue.mjs";
2
+ import './index.css';/* empty css */
3
+ export {
4
+ o as default
5
+ };
6
+ //# sourceMappingURL=index3.vue.mjs.map
@@ -0,0 +1,16 @@
1
+ /** 面包屑条目:除 `label` / `click` / `key` 外的字段原样透传给 `el-breadcrumb-item` */
2
+ export interface BreadcrumbItem {
3
+ /** 显示文本 */
4
+ label: string;
5
+ /** 路由目标(同 `el-breadcrumb-item` 的 to);最后一项忽略 */
6
+ to?: string | Record<string, any>;
7
+ /** 点击后替换当前历史记录(同 `el-breadcrumb-item` 的 replace) */
8
+ replace?: boolean;
9
+ /** 无 `to` 时的点击回调;最后一项不触发 */
10
+ click?: (item: BreadcrumbItem, index: number) => void;
11
+ /** `v-for` 的 key,缺省用索引 */
12
+ key?: string | number;
13
+ /** 其余属性透传给 `el-breadcrumb-item`(如 `separator` / `separator-icon`) */
14
+ [key: string]: any;
15
+ }
16
+ //# sourceMappingURL=types.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import o from "./index.vue.mjs";
2
- import '../ZlAppMenu/AppMenu.css';/* empty css */
2
+ import './index.css';/* empty css */
3
3
  export {
4
4
  o as default
5
5
  };
@@ -1 +1 @@
1
- .zl-upload[data-v-37051671]{width:100%}.zl-upload__trigger[data-v-37051671]{width:80px;height:80px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--zl-border-3, var(--el-border-color));border-radius:6px;cursor:pointer}.zl-upload__trigger[data-v-37051671]:hover{border-color:var(--zl-primary-6, var(--el-color-primary))}.zl-upload__item[data-v-37051671]{display:flex;align-items:center;gap:8px;padding:4px 8px;width:100%}.zl-upload__item[data-v-37051671]:hover{background:var(--zl-fill-1, var(--el-fill-color-light))}.zl-upload__item-thumbnail[data-v-37051671]{height:32px;width:32px;object-fit:cover;cursor:pointer}.zl-upload__item-name[data-v-37051671]{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zl-upload__item-op[data-v-37051671]{color:var(--zl-text-2)}.zl-upload__tip[data-v-37051671]{font-size:12px;color:var(--zl-text-3);line-height:18px;white-space:pre-wrap;word-break:break-all}
1
+ .zl-upload[data-v-72c6aae5]{width:100%}.zl-upload__trigger[data-v-72c6aae5]{width:80px;height:80px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--zl-border-3, var(--el-border-color));border-radius:6px;cursor:pointer}.zl-upload__trigger[data-v-72c6aae5]:hover{border-color:var(--zl-primary-6, var(--el-color-primary))}.zl-upload__item[data-v-72c6aae5]{display:flex;align-items:center;gap:8px;padding:4px 8px;width:100%}.zl-upload__item[data-v-72c6aae5]:hover{background:var(--zl-fill-1, var(--el-fill-color-light))}.zl-upload__item-thumbnail[data-v-72c6aae5]{height:32px;width:32px;object-fit:cover;cursor:pointer}.zl-upload__item-name[data-v-72c6aae5]{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zl-upload__item-op[data-v-72c6aae5]{color:var(--zl-text-2)}.zl-upload__tip[data-v-72c6aae5]{font-size:12px;color:var(--zl-text-3);line-height:18px;white-space:pre-wrap;word-break:break-all}
@@ -1,3 +1,4 @@
1
+ import { UploadFile, UploadRawFile } from 'element-plus';
1
2
  type __VLS_Props = {
2
3
  /** 自定义上传函数(form, config)→ Promise */
3
4
  request?: (form: FormData, config: Record<string, any>) => Promise<any>;
@@ -24,6 +25,22 @@ type __VLS_Props = {
24
25
  showTip?: boolean;
25
26
  /** 校验文件名不得含空格 */
26
27
  verifySpace?: boolean;
28
+ /** 文件列表展示形态,透传 `el-upload` 的 list-type(默认 picture) */
29
+ listType?: 'text' | 'picture' | 'picture-card';
30
+ /** 是否禁用上传;未设置时沿用 `el-form` 的 disabled */
31
+ disabled?: boolean;
32
+ /** 是否启用拖拽上传(配合默认插槽自定义上传区) */
33
+ drag?: boolean;
34
+ /** 是否支持选择文件夹 */
35
+ directory?: boolean;
36
+ /** 是否允许多选文件;未设置时按 limit 推导(limit 未设置或大于 1 时多选) */
37
+ multiple?: boolean;
38
+ /** 是否展示文件列表(默认 true) */
39
+ showFileList?: boolean;
40
+ /** 是否选择文件后立即上传(默认 true);设为 false 后用 `submit()` 手动提交 */
41
+ autoUpload?: boolean;
42
+ /** 移除文件前的钩子,返回 false 或 reject 时中止移除 */
43
+ beforeRemove?: (file: UploadFile, fileList: UploadFile[]) => any;
27
44
  };
28
45
  type __VLS_PublicProps = {
29
46
  modelValue?: any;
@@ -32,17 +49,35 @@ declare function __VLS_template(): {
32
49
  attrs: Partial<{}>;
33
50
  slots: {
34
51
  default?(_: {}): any;
52
+ file?(_: any): any;
53
+ tip?(_: {}): any;
54
+ };
55
+ refs: {
56
+ uploadRef: unknown;
35
57
  };
36
- refs: {};
37
58
  rootEl: any;
38
59
  };
39
60
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
40
- declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
61
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {
62
+ /** 取消(中止)正在进行的上传请求 */
63
+ abort: () => void | undefined;
64
+ /** 手动提交文件列表,配合 `auto-upload=false` 使用 */
65
+ submit: () => void | undefined;
66
+ /** 清空文件列表;可传状态数组只清指定状态(如 `['ready']`) */
67
+ clearFiles: (status?: ("ready" | "uploading" | "success" | "fail")[]) => void | undefined;
68
+ /** 手动把文件加入上传列表(等价于用户选择文件) */
69
+ handleStart: (file: UploadRawFile) => void | undefined;
70
+ /** 手动从列表移除某个文件 */
71
+ handleRemove: (file: UploadFile | UploadRawFile) => void | undefined;
72
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
41
73
  "update:modelValue": (value: any) => any;
42
74
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
43
75
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
44
76
  }>, {
45
77
  separator: string;
78
+ drag: boolean;
79
+ multiple: boolean;
80
+ disabled: boolean;
46
81
  modelValue: any;
47
82
  responseUrlKey: string;
48
83
  downloadButtonVisible: boolean;
@@ -50,7 +85,13 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
50
85
  showDownloadButton: boolean;
51
86
  showTip: boolean;
52
87
  verifySpace: boolean;
53
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
88
+ listType: "text" | "picture" | "picture-card";
89
+ directory: boolean;
90
+ showFileList: boolean;
91
+ autoUpload: boolean;
92
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
93
+ uploadRef: unknown;
94
+ }, any>;
54
95
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
55
96
  export default _default;
56
97
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -1,7 +1,7 @@
1
1
  import o from "./index2.vue.mjs";
2
2
  import './index.css';/* empty css */
3
- import t from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-37051671"]]);
3
+ import a from "../../_virtual/_plugin-vue_export-helper.mjs";
4
+ const m = /* @__PURE__ */ a(o, [["__scopeId", "data-v-72c6aae5"]]);
5
5
  export {
6
6
  m as default
7
7
  };