asai-vue-host-form 0.2.13 → 0.2.15
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 +214 -0
- package/dist/{AsaiForm-DZVbpIN-.mjs → AsaiForm-BAbhq1KW.mjs} +1 -1
- package/dist/{AsaiInput-DahcJZqh.mjs → AsaiInput-D4BZoHDc.mjs} +1 -3
- package/dist/AsaiSelectCl-Cl6N0v40.mjs +41 -0
- package/dist/AsfInput-By00xBFI.mjs +101 -0
- package/dist/{AsfSelect-D80NFcz5.mjs → AsfSelect-E9c8eZQ4.mjs} +34 -33
- package/dist/asai-vue-host-form.css +1 -1
- package/dist/asai-vue-host-form.es.js +1 -1
- package/dist/asai-vue-host-form.umd.js +1 -1
- package/package.json +1 -1
- package/readme +527 -0
- package/dist/AsaiSelectCl-DY_5Y--8.mjs +0 -38
- package/dist/AsfInput-DGz-Z4Wy.mjs +0 -58
package/README.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# asai-vue-host-form — 动态表单渲染插件
|
|
2
|
+
|
|
3
|
+
## 概述
|
|
4
|
+
|
|
5
|
+
`asai-vue-host-form` 是一个**动态表单渲染引擎**,支持根据 JSON 配置动态生成表单。它提供输入控件、标签、展示、JSON 编辑、图片上传裁剪等丰富功能,适用于低代码/动态数据编辑场景。
|
|
6
|
+
|
|
7
|
+
## 功能
|
|
8
|
+
|
|
9
|
+
- 📝 **动态表单渲染**:根据配置数据递归生成表单
|
|
10
|
+
- 🏷️ **标签系统**:带语言/国际化支持的标签展示
|
|
11
|
+
- 📋 **列表编辑**:支持数组/列表形式的数据编辑
|
|
12
|
+
- 👁️ **只读展示**:仅展示模式(AsaiFormShow)
|
|
13
|
+
- ✏️ **输入控件**:文本、数字、多行文本等
|
|
14
|
+
- 🖼️ **图片上传裁剪**:支持图片裁剪后上传
|
|
15
|
+
- 📄 **JSON 编辑器**:JSON 格式文本编辑
|
|
16
|
+
- 🔒 **规则控制**:字段可见性/可编辑性规则
|
|
17
|
+
- 🚫 **编辑/添加权限控制**:独立控制编辑和添加模式
|
|
18
|
+
|
|
19
|
+
## 文件结构
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
asai-vue-host-form/
|
|
23
|
+
├── src/
|
|
24
|
+
│ └── components/
|
|
25
|
+
│ ├── index.ts # 插件安装入口
|
|
26
|
+
│ └── asui/
|
|
27
|
+
│ └── form/
|
|
28
|
+
│ ├── AsaiFormLi.vue # 列表表单渲染
|
|
29
|
+
│ ├── AsaiFormLabel.vue # 表单标签组件
|
|
30
|
+
│ ├── AsaiFormLabelArea.vue # 标签区域组件
|
|
31
|
+
│ ├── AsaiFormShow.vue # 只读表单展示
|
|
32
|
+
│ ├── AsaiTextarea.vue # 多行文本输入
|
|
33
|
+
│ ├── AsaiTextJson.vue # JSON 文本编辑
|
|
34
|
+
│ ├── AsaiUploadImgCut.vue # 图片上传裁剪
|
|
35
|
+
│ └── AsaiUploadImgCutPop.vue # 图片裁剪弹窗
|
|
36
|
+
└── README.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 使用说明
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<AsaiFormLi
|
|
43
|
+
:ujt="ujt"
|
|
44
|
+
:asaidata="formConfig"
|
|
45
|
+
:formdata="formData"
|
|
46
|
+
:opt="{ isedit: true }"
|
|
47
|
+
/>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## 核心组件
|
|
51
|
+
|
|
52
|
+
### AsaiFormLi — 表单列表渲染器
|
|
53
|
+
|
|
54
|
+
表单的核心递归组件,遍历 `formdata` 对象,根据 `asaidata.rule` 的配置决定每个字段的渲染方式。
|
|
55
|
+
|
|
56
|
+
#### Props
|
|
57
|
+
|
|
58
|
+
| 参数 | 类型 | 说明 |
|
|
59
|
+
|------|------|------|
|
|
60
|
+
| `ujt` | `Object` | 全局上下文 |
|
|
61
|
+
| `asaidata` | `Object` | 表单配置 |
|
|
62
|
+
| `formdata` | `Object` | 表单数据(双向绑定) |
|
|
63
|
+
| `opt.isedit` | `boolean` | 是否为编辑模式 |
|
|
64
|
+
|
|
65
|
+
#### 渲染逻辑
|
|
66
|
+
|
|
67
|
+
1. 如果字段规则中 `noedit`/`noadd` == 2 → 显示为只读展示(AsaiFormShow)
|
|
68
|
+
2. 如果字段规则为空 → 正常渲染
|
|
69
|
+
- 有自定义组件 → 使用自定义组件
|
|
70
|
+
- 值为对象 → 递归渲染(AsaiFormObject)
|
|
71
|
+
- 值为基本类型 → 使用 AsaiInput
|
|
72
|
+
3. 如果字段 `noadd`/`noedit` == 1 → 隐藏该字段
|
|
73
|
+
|
|
74
|
+
### AsaiFormLabel — 表单标签
|
|
75
|
+
|
|
76
|
+
根据配置显示字段名称标签,支持:
|
|
77
|
+
- 国际化键值(`asaidata.lang[formkey]`)
|
|
78
|
+
- 必须字段标记(`rule[key].require`)
|
|
79
|
+
- 类型指示图标(数组/数字)
|
|
80
|
+
|
|
81
|
+
### AsaiFormShow — 只读展示
|
|
82
|
+
|
|
83
|
+
以只读方式显示字段值,支持:
|
|
84
|
+
- 字符串类型加引号显示(JSON 风格)
|
|
85
|
+
- 数字类型直显
|
|
86
|
+
- 自定义输入属性通过 `rule[key].opt` 传递
|
|
87
|
+
|
|
88
|
+
### AsaiUploadImgCut — 图片上传裁剪
|
|
89
|
+
|
|
90
|
+
提供完整的图片裁切功能:
|
|
91
|
+
- 拖拽移动裁剪框
|
|
92
|
+
- 四角拖拽调整大小
|
|
93
|
+
- 适应/超出图片边界控制
|
|
94
|
+
- 裁剪后自动缩放(如果设置了 `rule[key].data` 的尺寸限制)
|
|
95
|
+
- 下载裁剪结果和确认上传
|
|
96
|
+
|
|
97
|
+
### AsaiUploadImgCutPop — 图片裁剪弹窗
|
|
98
|
+
|
|
99
|
+
将 `AsaiUploadImgCut` 封装在 `PopBox` 弹窗中,通过 `$global.pop['popupload' + formkey]` 控制显示。
|
|
100
|
+
|
|
101
|
+
### AsaiTextarea — 多行文本输入
|
|
102
|
+
|
|
103
|
+
多行文本输入组件,用于长文本编辑。
|
|
104
|
+
|
|
105
|
+
### AsaiTextJson — JSON 文本编辑
|
|
106
|
+
|
|
107
|
+
专门用于编辑 JSON 格式文本的组件。
|
|
108
|
+
|
|
109
|
+
## 配置参数
|
|
110
|
+
|
|
111
|
+
### asaidata 表单配置结构
|
|
112
|
+
|
|
113
|
+
| 参数 | 类型 | 说明 |
|
|
114
|
+
|------|------|------|
|
|
115
|
+
| `rule` | `Object` | 字段规则配置 |
|
|
116
|
+
| `rule[key].noedit` | `0\|1\|2` | 编辑模式控制(0=可编辑, 1=隐藏, 2=只读) |
|
|
117
|
+
| `rule[key].noadd` | `0\|1\|2` | 添加模式控制(同上) |
|
|
118
|
+
| `rule[key].require` | `boolean` | 是否必填 |
|
|
119
|
+
| `rule[key].type` | `string` | 输入类型(text/number 等) |
|
|
120
|
+
| `rule[key].max` | `number` | 最大值 |
|
|
121
|
+
| `rule[key].min` | `number` | 最小值 |
|
|
122
|
+
| `rule[key].opt` | `Object` | 额外选项(传递给输入组件) |
|
|
123
|
+
| `rule[key].data` | `Object` | 裁剪图片最大尺寸限制 |
|
|
124
|
+
| `lang` | `Object` | 字段标签文字(国际化) |
|
|
125
|
+
| `lang[key]` | `string` | 各字段的显示标签 |
|
|
126
|
+
| `eq` | `number` | 显示格式(>2 显示引号,>0 显示冒号) |
|
|
127
|
+
| `ic` | `number` | 图标样式控制(>1 显示字段图标) |
|
|
128
|
+
| `notit` | `boolean` | 是否隐藏标题 |
|
|
129
|
+
| `cmComp(key)` | `function` | 返回自定义组件(按需) |
|
|
130
|
+
|
|
131
|
+
### 规则值说明
|
|
132
|
+
|
|
133
|
+
| 值 | 说明 |
|
|
134
|
+
|----|------|
|
|
135
|
+
| `0` 或 `undefined` | 正常显示和编辑 |
|
|
136
|
+
| `1` | 隐藏该字段 |
|
|
137
|
+
| `2` | 显示为只读(不可编辑) |
|
|
138
|
+
|
|
139
|
+
## 技术细节
|
|
140
|
+
|
|
141
|
+
- 递归渲染:对象类型字段自动递归渲染子表单
|
|
142
|
+
- 自定义组件:通过 `cmComp(key)` 钩子支持自定义字段组件
|
|
143
|
+
- 与 `asai-vue-host-popbox` 集成:图片裁剪使用弹窗展示
|
|
144
|
+
- 响应式绑定:`formdata` 直接绑定,修改即时生效
|
|
145
|
+
|
|
146
|
+
## 代码优化分析
|
|
147
|
+
|
|
148
|
+
### 已做优化
|
|
149
|
+
- ✅ 递归渲染:对象类型字段自动递归渲染子表单
|
|
150
|
+
- ✅ 自定义组件钩子:`cmComp(key)` 支持按字段注入自定义组件
|
|
151
|
+
- ✅ 只读/编辑/隐藏三种模式通过配置控制,灵活度高
|
|
152
|
+
- ✅ 图片裁剪支持拖拽移动、四角缩放
|
|
153
|
+
|
|
154
|
+
### 可优化点
|
|
155
|
+
|
|
156
|
+
#### 1. 图片裁剪 Canvas 缩放计算
|
|
157
|
+
```typescript
|
|
158
|
+
const canvasWidth = Math.min(cropParams.value.width * scaleX, img.naturalWidth);
|
|
159
|
+
```
|
|
160
|
+
**问题**:裁剪后输出的图片质量仅使用 `0.9`,且格式固定为 PNG。对于大图裁剪,PNG 体积会非常大。
|
|
161
|
+
|
|
162
|
+
**建议**:支持 JPEG 格式和可配置的质量参数:
|
|
163
|
+
```typescript
|
|
164
|
+
const format = props.params.format || 'image/jpeg';
|
|
165
|
+
const quality = props.params.quality || 0.92;
|
|
166
|
+
croppedImage.value = canvas.toDataURL(format, quality);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
#### 2. 裁剪尺寸限制的二次缩放
|
|
170
|
+
```typescript
|
|
171
|
+
if (maxSize.width < canvasWidth || maxSize.height < canvasHeight) {
|
|
172
|
+
// 再次绘制到更小的 canvas
|
|
173
|
+
const ctx1: any = canvas1.getContext('2d');
|
|
174
|
+
ctx1.drawImage(cutmg, 0, 0, cutSize.width, cutSize.height);
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
**问题**:先用原始尺寸裁剪,再缩放到目标尺寸,**做了两次 Canvas 绘制**。可以直接在第一次 `drawImage` 时就指定目标尺寸。
|
|
178
|
+
|
|
179
|
+
#### 3. 表单规则中的 `noedit`/`noadd` 魔数
|
|
180
|
+
```typescript
|
|
181
|
+
if (props.asaidata.rule?.[key]?.[props.opt?.isedit ? 'noedit' : 'noadd'] == 2)
|
|
182
|
+
```
|
|
183
|
+
**问题**:数字 0/1/2 的含义没有文档说明,新人需要阅读源码才能理解。建议改为枚举:
|
|
184
|
+
```typescript
|
|
185
|
+
enum FieldMode {
|
|
186
|
+
Visible = 0, // 正常显示编辑
|
|
187
|
+
Hidden = 1, // 隐藏
|
|
188
|
+
Readonly = 2, // 只读
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### 4. AsaiFormLi 中的条件渲染链过长
|
|
193
|
+
模板中有 `v-for` 嵌套多级 `v-if/v-else-if/v-else`,可读性差。建议提取为独立组件:
|
|
194
|
+
- `AsaiFormFieldRenderer` — 单字段渲染
|
|
195
|
+
- `AsaiFormObjectRenderer` — 对象类型递归渲染
|
|
196
|
+
|
|
197
|
+
#### 5. 缺少表单校验能力
|
|
198
|
+
当前表单系统支持 `require` 标记,但缺少:
|
|
199
|
+
- 自定义校验规则(正则、函数)
|
|
200
|
+
- 校验失败的错误消息显示
|
|
201
|
+
- 整体表单校验通过/失败的状态
|
|
202
|
+
|
|
203
|
+
建议注入校验框架,参考 VeeValidate 或自实现。
|
|
204
|
+
|
|
205
|
+
#### 6. 上传裁剪缺少文件类型/大小限制
|
|
206
|
+
当前 `AsaiUploadImgCut` 直接接收 base64Data,没有对上传文件的类型、大小进行校验。建议在组件内增加文件选择校验。
|
|
207
|
+
|
|
208
|
+
#### 7. AsaiFormLabelArea 使用 `<label>` 包裹所有内容
|
|
209
|
+
```vue
|
|
210
|
+
<label v-else :class="...">
|
|
211
|
+
<slot></slot>
|
|
212
|
+
</label>
|
|
213
|
+
```
|
|
214
|
+
**问题**:如果 slot 内容包含可交互元素(input/select),点击 label 会触发关联 input 的 focus,可能产生意外的表单行为。
|
|
@@ -8,7 +8,7 @@ const A = { class: "as-form-area" }, f = /* @__PURE__ */ p({
|
|
|
8
8
|
},
|
|
9
9
|
setup(e) {
|
|
10
10
|
const a = e, { $fn: s } = a.ujt, { get: r, clear: m } = s.createComponentLoader({
|
|
11
|
-
files: /* @__PURE__ */ Object.assign({ "./AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./AsaiInput.vue": () => import("./AsaiInput-
|
|
11
|
+
files: /* @__PURE__ */ Object.assign({ "./AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./AsaiRichEditor.vue": () => import("./AsaiRichEditor-DDOCr12f.mjs"), "./AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./AsaiUpBinary.vue": () => import("./AsaiUpBinary-DFmYr2_2.mjs"), "./AsaiUpload.vue": () => import("./AsaiUpload-D4kzZ5_G.mjs"), "./AsaiUploadImg.vue": () => import("./AsaiUploadImg-D8mMVNdc.mjs"), "./AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-B3Y2hppn.mjs"), "./AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs") }),
|
|
12
12
|
// 扫描当前目录下所有.vue文件
|
|
13
13
|
eager: !1,
|
|
14
14
|
// 异步加载(按需加载)
|
|
@@ -8,9 +8,7 @@ const V = /* @__PURE__ */ s({
|
|
|
8
8
|
formkey: {}
|
|
9
9
|
},
|
|
10
10
|
setup(a) {
|
|
11
|
-
const t = a, { $fn: e } = t.ujt, l = c(() => e.As.toArr(t.asaidata?.lang?.[t.formkey + "data"]) || e.As.toArr(
|
|
12
|
-
t.asaidata?.rule?.[t.formkey]?.[t.formkey + "data"]
|
|
13
|
-
) || e.As.toArr(e.lg(t.asaidata?.rule?.[t.formkey]?.data)) || []);
|
|
11
|
+
const t = a, { $fn: e } = t.ujt, l = c(() => e.As.toArr(t.asaidata?.lang?.[t.formkey + "data"]) || e.As.toArr(t.asaidata?.rule?.[t.formkey]?.[t.formkey + "data"]) || e.As.toArr(e.lg(t.asaidata?.rule?.[t.formkey]?.data)) || []);
|
|
14
12
|
return (j, o) => {
|
|
15
13
|
const y = f("AsfCheck"), i = f("AsfInput"), k = f("AsaiFormLabel");
|
|
16
14
|
return d(), r(k, {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { defineComponent as n, computed as i, resolveComponent as m, createBlock as u, openBlock as c, withCtx as k, createVNode as y } from "vue";
|
|
2
|
+
const j = /* @__PURE__ */ n({
|
|
3
|
+
__name: "AsaiSelectCl",
|
|
4
|
+
props: {
|
|
5
|
+
ujt: {},
|
|
6
|
+
asaidata: {},
|
|
7
|
+
formdata: {},
|
|
8
|
+
formkey: {}
|
|
9
|
+
},
|
|
10
|
+
setup(e) {
|
|
11
|
+
const a = e, { $fn: r } = a.ujt, f = i(() => {
|
|
12
|
+
let o;
|
|
13
|
+
return a.asaidata?.rule?.[a.formkey]?.[a.formkey + "data"]?.nodeMap?.size > 0 ? o = [...a.asaidata.rule[a.formkey][a.formkey + "data"].nodeMap].map((t) => [t[1].id, t[1].nm, a.asaidata.rule[a.formkey][a.formkey + "data"].depthMap.get(t[0])]).filter((t) => t && t[0] !== "asai") : o = (r.As.toArr(a.asaidata?.lang?.[a.formkey + "data"]) || r.As.toArr(r.lg(a.asaidata?.rule?.[a.formkey]?.data)) || []).filter((t) => t && t[0] !== "asai"), (!a.formdata[a.formkey] || a.formdata[a.formkey] === "asai") && (a.formdata[a.formkey] = o?.[0]?.[0] || "asai"), o;
|
|
14
|
+
});
|
|
15
|
+
return (o, t) => {
|
|
16
|
+
const d = m("AsfSelect"), l = m("AsaiFormLabel");
|
|
17
|
+
return c(), u(l, {
|
|
18
|
+
ujt: e.ujt,
|
|
19
|
+
asaidata: e.asaidata,
|
|
20
|
+
formdata: e.formdata,
|
|
21
|
+
formkey: e.formkey
|
|
22
|
+
}, {
|
|
23
|
+
default: k(() => [
|
|
24
|
+
y(d, {
|
|
25
|
+
ujt: e.ujt,
|
|
26
|
+
opt: {
|
|
27
|
+
...a.asaidata.rule?.[e.formkey]?.opt || {},
|
|
28
|
+
selectdata: f.value
|
|
29
|
+
},
|
|
30
|
+
modelValue: a.formdata[e.formkey],
|
|
31
|
+
"onUpdate:modelValue": t[0] || (t[0] = (s) => a.formdata[e.formkey] = s)
|
|
32
|
+
}, null, 8, ["ujt", "opt", "modelValue"])
|
|
33
|
+
]),
|
|
34
|
+
_: 1
|
|
35
|
+
}, 8, ["ujt", "asaidata", "formdata", "formkey"]);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
export {
|
|
40
|
+
j as default
|
|
41
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { defineComponent as g, useCssVars as b, computed as h, ref as A, onMounted as C, createElementBlock as d, openBlock as u, withDirectives as m, createCommentVNode as F, normalizeStyle as y, isRef as i, vModelDynamic as s, unref as c, toDisplayString as I } from "vue";
|
|
2
|
+
import { _ as U } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
3
|
+
const j = { class: "asf-input asf-form" }, D = ["type", "placeholder", "value"], w = ["type", "max", "min", "readonly", "placeholder"], B = ["type", "maxlength", "readonly", "placeholder"], M = ["step", "type", "readonly", "placeholder"], N = ["type", "readonly", "placeholder"], S = {
|
|
4
|
+
key: 5,
|
|
5
|
+
class: "unit"
|
|
6
|
+
}, z = /* @__PURE__ */ g({
|
|
7
|
+
__name: "AsfInput",
|
|
8
|
+
props: {
|
|
9
|
+
ujt: {},
|
|
10
|
+
opt: {},
|
|
11
|
+
modelValue: {}
|
|
12
|
+
},
|
|
13
|
+
emits: ["update:modelValue"],
|
|
14
|
+
setup(e, { emit: v }) {
|
|
15
|
+
b((a) => ({
|
|
16
|
+
v40a0921e: x.value
|
|
17
|
+
}));
|
|
18
|
+
const l = e, k = v;
|
|
19
|
+
let t = h({
|
|
20
|
+
get() {
|
|
21
|
+
return l.modelValue;
|
|
22
|
+
},
|
|
23
|
+
set(a) {
|
|
24
|
+
l.opt?.onChange && typeof l.opt.onChange == "function" && l.opt.onChange(a, l.modelValue), k("update:modelValue", a);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const x = h(() => l?.opt?.height || "var(--sa3)"), p = h(() => l?.opt?.type || (l?.opt?.max ? "number" : "text")), r = A(null);
|
|
28
|
+
function V(a, n) {
|
|
29
|
+
if (a && n && typeof n == "object")
|
|
30
|
+
for (const [o, f] of Object.entries(n))
|
|
31
|
+
typeof f == "boolean" ? f ? a.setAttribute(o, "") : a.removeAttribute(o) : a.setAttribute(o, f);
|
|
32
|
+
}
|
|
33
|
+
return C(() => {
|
|
34
|
+
V(r.value, l.opt?.attr);
|
|
35
|
+
}), (a, n) => (u(), d("div", j, [
|
|
36
|
+
e.opt?.noedit ? (u(), d("input", {
|
|
37
|
+
key: 0,
|
|
38
|
+
ref_key: "domForm",
|
|
39
|
+
ref: r,
|
|
40
|
+
class: "input",
|
|
41
|
+
style: y(l.opt?.style || {}),
|
|
42
|
+
type: p.value,
|
|
43
|
+
readonly: !0,
|
|
44
|
+
placeholder: e.opt?.placeholder || "",
|
|
45
|
+
value: e.modelValue
|
|
46
|
+
}, null, 12, D)) : e.opt?.max ? m((u(), d("input", {
|
|
47
|
+
key: 1,
|
|
48
|
+
ref_key: "domForm",
|
|
49
|
+
ref: r,
|
|
50
|
+
style: y(l.opt?.style || {}),
|
|
51
|
+
type: p.value,
|
|
52
|
+
max: e.opt?.max,
|
|
53
|
+
min: e.opt?.min,
|
|
54
|
+
readonly: !!e.opt?.readonly,
|
|
55
|
+
placeholder: e.opt?.placeholder || "",
|
|
56
|
+
"onUpdate:modelValue": n[0] || (n[0] = (o) => i(t) ? t.value = o : t = o)
|
|
57
|
+
}, null, 12, w)), [
|
|
58
|
+
[s, c(t)]
|
|
59
|
+
]) : e.opt?.maxlength ? m((u(), d("input", {
|
|
60
|
+
key: 2,
|
|
61
|
+
ref_key: "domForm",
|
|
62
|
+
ref: r,
|
|
63
|
+
style: y(l.opt?.style || {}),
|
|
64
|
+
type: p.value,
|
|
65
|
+
maxlength: e.opt?.maxlength,
|
|
66
|
+
readonly: !!e.opt?.readonly,
|
|
67
|
+
placeholder: e.opt?.placeholder || "",
|
|
68
|
+
"onUpdate:modelValue": n[1] || (n[1] = (o) => i(t) ? t.value = o : t = o)
|
|
69
|
+
}, null, 12, B)), [
|
|
70
|
+
[s, c(t)]
|
|
71
|
+
]) : e.opt?.step ? m((u(), d("input", {
|
|
72
|
+
key: 3,
|
|
73
|
+
ref_key: "domForm",
|
|
74
|
+
ref: r,
|
|
75
|
+
style: y(l.opt?.style || {}),
|
|
76
|
+
step: e.opt?.step,
|
|
77
|
+
type: p.value,
|
|
78
|
+
readonly: !!e.opt?.readonly,
|
|
79
|
+
placeholder: e.opt?.placeholder || "",
|
|
80
|
+
"onUpdate:modelValue": n[2] || (n[2] = (o) => i(t) ? t.value = o : t = o)
|
|
81
|
+
}, null, 12, M)), [
|
|
82
|
+
[s, c(t)]
|
|
83
|
+
]) : m((u(), d("input", {
|
|
84
|
+
key: 4,
|
|
85
|
+
ref_key: "domForm",
|
|
86
|
+
ref: r,
|
|
87
|
+
style: y(l.opt?.style || {}),
|
|
88
|
+
type: p.value,
|
|
89
|
+
readonly: !!e.opt?.readonly,
|
|
90
|
+
placeholder: e.opt?.placeholder || "",
|
|
91
|
+
"onUpdate:modelValue": n[3] || (n[3] = (o) => i(t) ? t.value = o : t = o)
|
|
92
|
+
}, null, 12, N)), [
|
|
93
|
+
[s, c(t)]
|
|
94
|
+
]),
|
|
95
|
+
e.opt?.unit ? (u(), d("div", S, I(e.opt?.unit), 1)) : F("", !0)
|
|
96
|
+
]));
|
|
97
|
+
}
|
|
98
|
+
}), O = /* @__PURE__ */ U(z, [["__scopeId", "data-v-45c548dd"]]);
|
|
99
|
+
export {
|
|
100
|
+
O as default
|
|
101
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { defineComponent as I, useCssVars as
|
|
2
|
-
import { _ as
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as I, useCssVars as M, computed as m, reactive as $, createElementBlock as o, openBlock as u, createElementVNode as f, createCommentVNode as z, normalizeStyle as v, toDisplayString as r, unref as h, withModifiers as D, normalizeClass as _, Fragment as b, renderList as E, createTextVNode as F } from "vue";
|
|
2
|
+
import { _ as P } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
3
|
+
const L = { class: "asf-select" }, O = { class: "asf-select-main" }, R = { class: "asf-select-cur-val" }, H = { class: "asf-select-list-area" }, T = {
|
|
4
4
|
key: 0,
|
|
5
5
|
class: "asf-select-list"
|
|
6
|
-
},
|
|
6
|
+
}, Y = { class: "asf-select-empty" }, q = ["data-val"], G = ["data-val"], J = {
|
|
7
7
|
key: 0,
|
|
8
8
|
class: "unit"
|
|
9
|
-
},
|
|
9
|
+
}, K = /* @__PURE__ */ I({
|
|
10
10
|
__name: "AsfSelect",
|
|
11
11
|
props: {
|
|
12
12
|
ujt: {},
|
|
@@ -14,11 +14,11 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
14
14
|
modelValue: {}
|
|
15
15
|
},
|
|
16
16
|
emits: ["update:modelValue"],
|
|
17
|
-
setup(
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
setup(y, { emit: V }) {
|
|
18
|
+
M((t) => ({
|
|
19
|
+
v34a6911f: C.value
|
|
20
20
|
}));
|
|
21
|
-
const s =
|
|
21
|
+
const s = y, { $global: d } = s.ujt, k = V;
|
|
22
22
|
let n = m({
|
|
23
23
|
get() {
|
|
24
24
|
return s.modelValue || s.opt?.valuedefault;
|
|
@@ -27,7 +27,7 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
27
27
|
s.opt?.onChange && typeof s.opt.onChange == "function" && s.opt.onChange(t, s.modelValue), k("update:modelValue", t);
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
const a =
|
|
30
|
+
const a = $({
|
|
31
31
|
inputinit: "",
|
|
32
32
|
input: "",
|
|
33
33
|
up: !1,
|
|
@@ -35,7 +35,7 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
35
35
|
}), C = m(() => s?.opt?.height || "var(--sa3)"), l = m(() => {
|
|
36
36
|
const t = s.opt?.selectdata;
|
|
37
37
|
return t ? t.nodeMap?.size > 0 ? [...t.nodeMap].map((e) => [e[1].id, e[1].nm, t.depthMap.get(e[0])]) : Array.isArray(t) ? t.map((e, i) => Array.isArray(e) && e.length >= 2 ? [e[0], e[1], e[2]] : typeof e == "object" && e !== null ? "value" in e && "label" in e ? [e.value, e.label, e.depth] : Object.values(e) : [i, String(e)]) : typeof t == "object" ? Object.entries(t) : [] : [];
|
|
38
|
-
}),
|
|
38
|
+
}), g = m(() => {
|
|
39
39
|
const t = [];
|
|
40
40
|
if (s.opt?.input && a.input) {
|
|
41
41
|
let e;
|
|
@@ -55,13 +55,13 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
55
55
|
else {
|
|
56
56
|
const e = t.target, i = t.target.closest(".asfselectarea");
|
|
57
57
|
if (i) {
|
|
58
|
-
const { y:
|
|
58
|
+
const { y: w } = e?.getBoundingClientRect() || {
|
|
59
59
|
y: 0
|
|
60
|
-
}, { y:
|
|
60
|
+
}, { y: A, height: B } = i?.getBoundingClientRect() || {
|
|
61
61
|
y: 0,
|
|
62
62
|
height: 0
|
|
63
63
|
};
|
|
64
|
-
let c =
|
|
64
|
+
let c = w - A, p = B - c;
|
|
65
65
|
c > p ? (a.up = !0, c = (c / Number(d?.scale || 1)).toFixed(3), c < parseInt(a.stylelist["max-height"]) && (a.stylelist["max-height"] = c + "px")) : (a.up = !1, p = (p / Number(d?.scale || 1)).toFixed(3), p < parseInt(a.stylelist["max-height"]) && (a.stylelist["max-height"] = p + "px"));
|
|
66
66
|
} else t.clientY > 299 ? a.up = !0 : a.up = !1;
|
|
67
67
|
}
|
|
@@ -75,9 +75,9 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
75
75
|
function j(t) {
|
|
76
76
|
s.opt?.input && t.target && (t.target.textContent !== a.input || a.inputinit !== a.input) && (t.target.textContent = l.value?.find((e) => e[0] == n.value)?.[1]);
|
|
77
77
|
}
|
|
78
|
-
return (t, e) => (
|
|
79
|
-
f("div",
|
|
80
|
-
s.opt?.input ? (
|
|
78
|
+
return (t, e) => (u(), o("div", L, [
|
|
79
|
+
f("div", O, [
|
|
80
|
+
s.opt?.input ? (u(), o("div", {
|
|
81
81
|
key: 0,
|
|
82
82
|
class: "asf-select-cur asf-select-cur-input",
|
|
83
83
|
contenteditable: "true",
|
|
@@ -86,47 +86,48 @@ const P = { class: "asf-select" }, L = { class: "asf-select-main" }, O = { class
|
|
|
86
86
|
tabindex: "0",
|
|
87
87
|
style: v(s.opt?.style || {}),
|
|
88
88
|
onPointerdown: x
|
|
89
|
-
}, r(a.inputinit), 37)) : (
|
|
89
|
+
}, r(a.inputinit), 37)) : (u(), o("div", {
|
|
90
90
|
key: 1,
|
|
91
91
|
class: "asf-select-cur asf-form",
|
|
92
92
|
tabindex: "0",
|
|
93
93
|
style: v(s.opt?.style || {}),
|
|
94
94
|
onPointerdown: x
|
|
95
95
|
}, [
|
|
96
|
-
f("div",
|
|
96
|
+
f("div", R, r(l.value?.find((i) => i[0] == h(n))?.[1] || h(d).lang.asai.select || ""), 1),
|
|
97
97
|
e[0] || (e[0] = f("div", { class: "asf-select-cur-ic" }, null, -1))
|
|
98
98
|
], 36)),
|
|
99
|
-
f("div",
|
|
100
|
-
|
|
99
|
+
f("div", H, [
|
|
100
|
+
g.value?.length ? (u(), o("div", {
|
|
101
101
|
key: 1,
|
|
102
102
|
class: _(`asf-select-list${a.up ? " asf-select-up" : ""}`),
|
|
103
103
|
style: v({
|
|
104
104
|
...a.stylelist,
|
|
105
105
|
...s.opt?.stylelist || {}
|
|
106
106
|
}),
|
|
107
|
-
onPointerdown: S
|
|
107
|
+
onPointerdown: D(S, ["stop"])
|
|
108
108
|
}, [
|
|
109
|
-
(
|
|
110
|
-
class: _(`asf-select-li${
|
|
109
|
+
(u(!0), o(b, null, E(g.value, (i) => (u(), o("div", {
|
|
110
|
+
class: _(`asf-select-li${h(n) == i[0] ? "-active" : ""}`),
|
|
111
111
|
"data-val": i[0],
|
|
112
112
|
key: "sel" + i[0]
|
|
113
113
|
}, [
|
|
114
|
-
i[2] ? (
|
|
114
|
+
i[2] > 1 ? (u(), o("div", {
|
|
115
115
|
key: 0,
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
"data-val": i[0],
|
|
117
|
+
style: v(`padding-left: ${(i[2] - 1) * 10}px`)
|
|
118
|
+
}, r(i[1]), 13, G)) : (u(), o(b, { key: 1 }, [
|
|
118
119
|
F(r(i[1]), 1)
|
|
119
120
|
], 64))
|
|
120
|
-
], 10,
|
|
121
|
-
], 38)) : (
|
|
122
|
-
f("div",
|
|
121
|
+
], 10, q))), 128))
|
|
122
|
+
], 38)) : (u(), o("div", T, [
|
|
123
|
+
f("div", Y, r(h(d).lang.asai.empty), 1)
|
|
123
124
|
]))
|
|
124
125
|
])
|
|
125
126
|
]),
|
|
126
|
-
|
|
127
|
+
y.opt?.unit ? (u(), o("div", J, r(y.opt?.unit), 1)) : z("", !0)
|
|
127
128
|
]));
|
|
128
129
|
}
|
|
129
|
-
}),
|
|
130
|
+
}), W = /* @__PURE__ */ P(K, [["__scopeId", "data-v-a4701728"]]);
|
|
130
131
|
export {
|
|
131
|
-
|
|
132
|
+
W as default
|
|
132
133
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.as-form-area{display:flex;flex-wrap:wrap;width:100%}.as-form-area .label,.as-form-area label{display:flex;width:100%;padding:5px 0}.as-form-area .w1{width:10%}.as-form-area .w2{width:20%}.as-form-area .w3{width:30%}.as-form-area .w4{width:40%}.as-form-area .w5{width:50%}.as-form-area .w6{width:60%}.as-form-area .w7{width:70%}.as-form-area .w8{width:80%}.as-form-area .w9{width:90%}@media (max-width: 800px){.as-form-area .w1,.as-form-area .w2,.as-form-area .w3,.as-form-area .w4,.as-form-area .w5,.as-form-area .w6,.as-form-area .w7,.as-form-area .w8,.as-form-area .w9{width:100%}}.as-li{display:block;padding-left:12px}.as-label-ico-close,.as-label-ico-open,.as-label-ico-arr,.as-label-ico-num,.as-label-ico{display:inline-flex;justify-content:space-around;padding-right:3px}.as-label-ico:before{content:"🔸 ";color:var(--cu4)}.as-label-ico-num:before{content:"🔹 ";color:var(--cu4)}.as-label-ico-arr:before{content:"▸ ";color:var(--cz8)}.as-label-ico-arr-num:before{content:"▸ ";color:var(--cv8)}.as-label-ico-close:before{content:"📂 ";color:var(--cu4);cursor:pointer}.as-label-ico-open:before{content:"🗂️ ";color:var(--cv4);cursor:pointer}.as-label-require:after{content:"*";color:var(--cz8)}.as-form-row{display:block;width:100%}.as-form-row>span:first-child{background-color:var(--cr2);display:block;cursor:pointer}.as-form-obj .as-form-obj,.as-form-obj label{padding-left:12px;width:calc(100% - 12px)}.as-richtext-area[data-v-01c836b2]{display:flex;flex-direction:column;overflow:hidden}.as-richtext-toolbar[data-v-01c836b2]{height:auto;display:flex;flex-wrap:wrap;align-items:center}:is(.as-richtext-toolbar>select,.as-richtext-toolbar>button,.as-richtext-toolbar>input)[data-v-01c836b2]{outline:0;border:0;width:38px;height:38px;overflow:hidden;display:inline-flex;justify-content:center;align-items:center;font-size:var(--sa1);background-color:var(--cu2);cursor:pointer}:is(.as-richtext-toolbar>select,.as-richtext-toolbar>button,.as-richtext-toolbar>input)[data-v-01c836b2]:hover{background-color:var(--cu4)}.as-richtext-toolbar>select[data-v-01c836b2]{width:68px}.as-richtext-content[data-v-01c836b2]{flex-grow:1;overflow:hidden;display:flex}.as-richtext-content>div[data-v-01c836b2],.as-richtext-content>textarea[data-v-01c836b2]{margin:0;padding:0;outline:0;border:0;resize:none;height:100%;overflow:auto}.as-upload-image[data-v-535f25e7]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-535f25e7],.as-upload-image div[data-v-535f25e7]{display:inline-flex;justify-content:center;align-items:center;max-width:100%;max-height:100%}.as-upload-image .as-upload-tit[data-v-535f25e7]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-upload-image[data-v-a305b28a]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-a305b28a],.as-upload-image div[data-v-a305b28a]{display:inline-flex;justify-content:center;align-items:center;max-width:80px;max-height:80px}.as-upload-image .as-upload-tit[data-v-a305b28a]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-upload-image[data-v-0bfdd149]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-0bfdd149],.as-upload-image div[data-v-0bfdd149]{display:inline-flex;justify-content:center;align-items:center;max-width:80px;max-height:80px}.as-upload-image .as-upload-tit[data-v-0bfdd149]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-img-area[data-v-24cc1149]{height:100%;display:flex;flex-direction:column;align-items:center;-webkit-user-select:none;user-select:none;background-image:linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%),linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%);background-size:20px 20px;background-position:0 0,10px 10px}.as-img-preview[data-v-24cc1149]{flex-grow:1;display:flex;justify-content:center;align-items:center}.as-img-preview img[data-v-24cc1149]{max-width:100%;max-height:100%}.as-img-cut-area[data-v-24cc1149]{flex-grow:1;display:flex;justify-content:center;align-items:center;overflow:hidden}.as-img-cut[data-v-24cc1149]{flex-grow:1;position:relative;margin:16px}.as-img-cut img[data-v-24cc1149]{display:block;max-width:100%;max-height:100%;object-fit:contain}.as-img-crop-box[data-v-24cc1149]{position:absolute;top:0;left:0;border:2px solid #fff;cursor:move}.as-img-crop-handle[data-v-24cc1149]{position:absolute;width:12px;height:12px;background:#fff;border:2px solid #409eff;border-radius:50%}.top-left[data-v-24cc1149]{left:-6px;top:-6px;cursor:nwse-resize}.top-right[data-v-24cc1149]{right:-6px;top:-6px;cursor:nesw-resize}.bottom-left[data-v-24cc1149]{left:-6px;bottom:-6px;cursor:nesw-resize}.bottom-right[data-v-24cc1149]{right:-6px;bottom:-6px;cursor:nwse-resize}.as-img-btns[data-v-24cc1149]{height:auto;padding:5px 12px;display:flex;justify-content:center}.as-img-btns button[data-v-24cc1149]{height:38px;padding:0 20px;margin:0 8px;background-color:var(--cv6);color:var(--cv0);border-radius:4px;cursor:pointer}.asf-check[data-v-819ba6db],.asf-check-ck[data-v-819ba6db]{-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;justify-content:flex-start;align-items:center;border:1px solid var(--cs5);background-color:var(--cr5);color:var(--cu8);width:auto;height:var(--v46073f5c);font-size:var(--sa1);margin:0;padding:3px;border-radius:var(--v46073f5c)}.asf-check[data-v-819ba6db]:hover,.asf-check-ck[data-v-819ba6db]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-check-ico[data-v-819ba6db],.asf-check-ico-ck[data-v-819ba6db]{width:var(--v46073f5c);height:var(--v46073f5c);border-radius:100%;background-color:var(--cu6)}.asf-check-txt[data-v-819ba6db],.asf-check-txt-ck[data-v-819ba6db]{flex-grow:1;text-align:center;padding-right:20px;padding-left:10px}.asf-check-ck[data-v-819ba6db]{background-color:var(--ct2);color:var(--ct1);flex-direction:row-reverse}.asf-check-ico-ck[data-v-819ba6db]{background-color:var(--ct1)}.asf-check-txt-ck[data-v-819ba6db]{padding-left:20px;padding-right:10px}.asf-input[data-v-bfabd0c8]{border:1px solid var(--cs5);border-radius:var(--v7f3f3e8d);display:flex;justify-content:center;align-items:center;width:calc(100% - 12px);margin:0 5px}.asf-input[data-v-bfabd0c8]:hover,.asf-input[data-v-bfabd0c8]:has(input:focus){border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-input input[data-v-bfabd0c8],.asf-input .input[data-v-bfabd0c8]{display:inline-flex;justify-content:flex-start;align-items:center;color:var(--cu8);flex:1;width:calc(100% - 20px);height:var(--v7f3f3e8d);border:0;outline:0;margin:0;font-size:var(--sa1);padding:3px 10px}.asf-input .input[data-v-bfabd0c8]{opacity:.6;cursor:not-allowed}.asf-input .unit[data-v-bfabd0c8]{font-size:var(--sa1);width:auto;padding:0 10px 0 0}.asf-inputsn[data-v-67ddc34d]{display:flex;gap:10px;justify-content:center}.asf-inputsn input[data-v-67ddc34d]{width:40px;height:50px;text-align:center;font-size:20px;border:2px solid var(--cs5);border-radius:8px;outline:none;transition:border-color .3s}.asf-inputsn input[data-v-67ddc34d]:hover,.asf-inputsn input[data-v-67ddc34d]:focus{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-select[data-v-a2407c37]{display:flex;width:100%;color:var(--cu8)}.asf-select-main[data-v-a2407c37]{display:flex;flex-direction:column;flex:1;width:calc(100% - 20px)}.asf-select-cur[data-v-a2407c37]{cursor:pointer;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--cs5);padding:3px 0 3px 10px;margin:0 5px;width:calc(100% - 22px);height:var(--v00d3fb44);border-radius:var(--v00d3fb44)}.asf-select-cur-input[data-v-a2407c37],.asf-select-cur-val[data-v-a2407c37]{word-break:keep-all;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.asf-select-list-area[data-v-a2407c37],.asf-select-cur-val[data-v-a2407c37],.asf-select-cur-ic[data-v-a2407c37]{-webkit-user-select:none;user-select:none}.asf-select-cur-ic[data-v-a2407c37]{display:flex;justify-content:center;align-items:center;padding:0 10px}.asf-select-cur-ic[data-v-a2407c37]:before{font-size:smaller;color:var(--cs5);content:"∨";transition:all .5s ease-in-out}.asf-select-list-area[data-v-a2407c37]{display:none;position:relative;width:100%;height:0}.asf-select-list[data-v-a2407c37]{position:absolute;top:2px;left:0;z-index:90;width:calc(100% - 2px);overflow:auto;border:1px solid var(--cs5);background-color:var(--cr0);border-radius:var(--v00d3fb44);cursor:pointer;box-shadow:var(--shadow)}.asf-select-up[data-v-a2407c37]{top:auto;bottom:calc(var(--v00d3fb44) + 10px)!important}.asf-select-empty[data-v-a2407c37]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.asf-select-li[data-v-a2407c37],.asf-select-li-active[data-v-a2407c37]{padding:3px 15px;border-bottom:1px solid var(--cs5)}.asf-select-li[data-v-a2407c37]:hover{background-color:var(--cr5)}.asf-select-li-active[data-v-a2407c37]{background-color:var(--ct2);color:var(--ct1)}.asf-select-cur[data-v-a2407c37]:focus,.asf-select-cur[data-v-a2407c37]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-select-cur:focus+.asf-select-list-area[data-v-a2407c37]{display:block}.asf-select-cur:focus .asf-select-cur-ic[data-v-a2407c37]:before{transform:rotate(180deg)}.unit[data-v-a2407c37]{font-size:var(--sa1);width:auto;padding:0 8px}.asf-textarea[data-v-d23aed07]{display:flex;width:100%}.asf-textarea>textarea[data-v-d23aed07]{cursor:pointer;display:block;border:1px solid var(--cs5);width:calc(100% - 22px);min-height:var(--f697bf2e);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:var(--f697bf2e)}.asf-textarea>textarea[data-v-d23aed07]:focus,.asf-textarea>textarea[data-v-d23aed07]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-tick[data-v-a981dd49],.asf-tick-disabled[data-v-a981dd49],.asf-tick-ck[data-v-a981dd49]{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--cs5);height:var(--v1081b8c6);width:var(--v1081b8c6);margin:0;padding:3px;border-radius:var(--v1081b8c6)}.asf-tick[data-v-a981dd49]{background-color:var(--cr0)}.asf-tick[data-v-a981dd49]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-tick-disabled[data-v-a981dd49]{background-color:var(--cs1)}.asf-tick-ck[data-v-a981dd49]{background-color:var(--ct2);color:var(--ct1)}.asf-tick-ck[data-v-a981dd49]:after{content:"✓";font-weight:700}.asf-upload-area[data-v-1784793e]{display:flex;width:100%}.asf-upload[data-v-1784793e]{display:flex;justify-content:center;align-items:center;border:1px solid var(--cs5);color:var(--cu8);width:calc(100% - 22px);min-height:var(--v21e55886);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:var(--v21e55886)}.asf-upload-area[data-v-d8731f1e]{display:flex;width:100%}.asf-upload[data-v-d8731f1e]{display:flex;justify-content:center;align-items:center;border:1px solid var(--cs5);color:var(--cu8);width:calc(100% - 22px);min-height:var(--v7e0dcac0);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:10px}
|
|
1
|
+
@charset "UTF-8";.as-form-area{display:flex;flex-wrap:wrap;width:100%}.as-form-area .label,.as-form-area label{display:flex;width:100%;padding:5px 0}.as-form-area .w1{width:10%}.as-form-area .w2{width:20%}.as-form-area .w3{width:30%}.as-form-area .w4{width:40%}.as-form-area .w5{width:50%}.as-form-area .w6{width:60%}.as-form-area .w7{width:70%}.as-form-area .w8{width:80%}.as-form-area .w9{width:90%}@media (max-width: 800px){.as-form-area .w1,.as-form-area .w2,.as-form-area .w3,.as-form-area .w4,.as-form-area .w5,.as-form-area .w6,.as-form-area .w7,.as-form-area .w8,.as-form-area .w9{width:100%}}.as-li{display:block;padding-left:12px}.as-label-ico-close,.as-label-ico-open,.as-label-ico-arr,.as-label-ico-num,.as-label-ico{display:inline-flex;justify-content:space-around;padding-right:3px}.as-label-ico:before{content:"🔸 ";color:var(--cu4)}.as-label-ico-num:before{content:"🔹 ";color:var(--cu4)}.as-label-ico-arr:before{content:"▸ ";color:var(--cz8)}.as-label-ico-arr-num:before{content:"▸ ";color:var(--cv8)}.as-label-ico-close:before{content:"📂 ";color:var(--cu4);cursor:pointer}.as-label-ico-open:before{content:"🗂️ ";color:var(--cv4);cursor:pointer}.as-label-require:after{content:"*";color:var(--cz8)}.as-form-row{display:block;width:100%}.as-form-row>span:first-child{background-color:var(--cr2);display:block;cursor:pointer}.as-form-obj .as-form-obj,.as-form-obj label{padding-left:12px;width:calc(100% - 12px)}.as-richtext-area[data-v-01c836b2]{display:flex;flex-direction:column;overflow:hidden}.as-richtext-toolbar[data-v-01c836b2]{height:auto;display:flex;flex-wrap:wrap;align-items:center}:is(.as-richtext-toolbar>select,.as-richtext-toolbar>button,.as-richtext-toolbar>input)[data-v-01c836b2]{outline:0;border:0;width:38px;height:38px;overflow:hidden;display:inline-flex;justify-content:center;align-items:center;font-size:var(--sa1);background-color:var(--cu2);cursor:pointer}:is(.as-richtext-toolbar>select,.as-richtext-toolbar>button,.as-richtext-toolbar>input)[data-v-01c836b2]:hover{background-color:var(--cu4)}.as-richtext-toolbar>select[data-v-01c836b2]{width:68px}.as-richtext-content[data-v-01c836b2]{flex-grow:1;overflow:hidden;display:flex}.as-richtext-content>div[data-v-01c836b2],.as-richtext-content>textarea[data-v-01c836b2]{margin:0;padding:0;outline:0;border:0;resize:none;height:100%;overflow:auto}.as-upload-image[data-v-535f25e7]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-535f25e7],.as-upload-image div[data-v-535f25e7]{display:inline-flex;justify-content:center;align-items:center;max-width:100%;max-height:100%}.as-upload-image .as-upload-tit[data-v-535f25e7]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-upload-image[data-v-a305b28a]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-a305b28a],.as-upload-image div[data-v-a305b28a]{display:inline-flex;justify-content:center;align-items:center;max-width:80px;max-height:80px}.as-upload-image .as-upload-tit[data-v-a305b28a]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-upload-image[data-v-0bfdd149]{width:88px;height:88px;border:1px solid #ccc;display:inline-flex;justify-content:center;align-items:center;font-size:58px;color:#ccc;cursor:pointer;border-radius:4px}.as-upload-image img[data-v-0bfdd149],.as-upload-image div[data-v-0bfdd149]{display:inline-flex;justify-content:center;align-items:center;max-width:80px;max-height:80px}.as-upload-image .as-upload-tit[data-v-0bfdd149]{font-size:var(--sa1);color:#666;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.as-img-area[data-v-24cc1149]{height:100%;display:flex;flex-direction:column;align-items:center;-webkit-user-select:none;user-select:none;background-image:linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%),linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%);background-size:20px 20px;background-position:0 0,10px 10px}.as-img-preview[data-v-24cc1149]{flex-grow:1;display:flex;justify-content:center;align-items:center}.as-img-preview img[data-v-24cc1149]{max-width:100%;max-height:100%}.as-img-cut-area[data-v-24cc1149]{flex-grow:1;display:flex;justify-content:center;align-items:center;overflow:hidden}.as-img-cut[data-v-24cc1149]{flex-grow:1;position:relative;margin:16px}.as-img-cut img[data-v-24cc1149]{display:block;max-width:100%;max-height:100%;object-fit:contain}.as-img-crop-box[data-v-24cc1149]{position:absolute;top:0;left:0;border:2px solid #fff;cursor:move}.as-img-crop-handle[data-v-24cc1149]{position:absolute;width:12px;height:12px;background:#fff;border:2px solid #409eff;border-radius:50%}.top-left[data-v-24cc1149]{left:-6px;top:-6px;cursor:nwse-resize}.top-right[data-v-24cc1149]{right:-6px;top:-6px;cursor:nesw-resize}.bottom-left[data-v-24cc1149]{left:-6px;bottom:-6px;cursor:nesw-resize}.bottom-right[data-v-24cc1149]{right:-6px;bottom:-6px;cursor:nwse-resize}.as-img-btns[data-v-24cc1149]{height:auto;padding:5px 12px;display:flex;justify-content:center}.as-img-btns button[data-v-24cc1149]{height:38px;padding:0 20px;margin:0 8px;background-color:var(--cv6);color:var(--cv0);border-radius:4px;cursor:pointer}.asf-check[data-v-819ba6db],.asf-check-ck[data-v-819ba6db]{-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;justify-content:flex-start;align-items:center;border:1px solid var(--cs5);background-color:var(--cr5);color:var(--cu8);width:auto;height:var(--v46073f5c);font-size:var(--sa1);margin:0;padding:3px;border-radius:var(--v46073f5c)}.asf-check[data-v-819ba6db]:hover,.asf-check-ck[data-v-819ba6db]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-check-ico[data-v-819ba6db],.asf-check-ico-ck[data-v-819ba6db]{width:var(--v46073f5c);height:var(--v46073f5c);border-radius:100%;background-color:var(--cu6)}.asf-check-txt[data-v-819ba6db],.asf-check-txt-ck[data-v-819ba6db]{flex-grow:1;text-align:center;padding-right:20px;padding-left:10px}.asf-check-ck[data-v-819ba6db]{background-color:var(--ct2);color:var(--ct1);flex-direction:row-reverse}.asf-check-ico-ck[data-v-819ba6db]{background-color:var(--ct1)}.asf-check-txt-ck[data-v-819ba6db]{padding-left:20px;padding-right:10px}.asf-input[data-v-45c548dd]{border:1px solid var(--cs5);border-radius:var(--v40a0921e);display:flex;justify-content:center;align-items:center;width:calc(100% - 12px);margin:0 5px}.asf-input[data-v-45c548dd]:hover,.asf-input[data-v-45c548dd]:has(input:focus){border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-input input[data-v-45c548dd],.asf-input .input[data-v-45c548dd]{display:inline-flex;justify-content:flex-start;align-items:center;color:var(--cu8);flex:1;width:calc(100% - 20px);height:var(--v40a0921e);border:0;outline:0;margin:0;font-size:var(--sa1);padding:3px 10px}.asf-input .input[data-v-45c548dd]{opacity:.6;cursor:not-allowed}.asf-input .unit[data-v-45c548dd]{font-size:var(--sa1);width:auto;padding:0 10px 0 0}.asf-inputsn[data-v-67ddc34d]{display:flex;gap:10px;justify-content:center}.asf-inputsn input[data-v-67ddc34d]{width:40px;height:50px;text-align:center;font-size:20px;border:2px solid var(--cs5);border-radius:8px;outline:none;transition:border-color .3s}.asf-inputsn input[data-v-67ddc34d]:hover,.asf-inputsn input[data-v-67ddc34d]:focus{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-select[data-v-a4701728]{display:flex;width:100%;color:var(--cu8)}.asf-select-main[data-v-a4701728]{display:flex;flex-direction:column;flex:1;width:calc(100% - 20px)}.asf-select-cur[data-v-a4701728]{cursor:pointer;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--cs5);padding:3px 0 3px 10px;margin:0 5px;width:calc(100% - 22px);height:var(--v34a6911f);border-radius:var(--v34a6911f)}.asf-select-cur-input[data-v-a4701728],.asf-select-cur-val[data-v-a4701728]{word-break:keep-all;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.asf-select-list-area[data-v-a4701728],.asf-select-cur-val[data-v-a4701728],.asf-select-cur-ic[data-v-a4701728]{-webkit-user-select:none;user-select:none}.asf-select-cur-ic[data-v-a4701728]{display:flex;justify-content:center;align-items:center;padding:0 10px}.asf-select-cur-ic[data-v-a4701728]:before{font-size:smaller;color:var(--cs5);content:"∨";transition:all .5s ease-in-out}.asf-select-list-area[data-v-a4701728]{display:none;position:relative;width:100%;height:0}.asf-select-list[data-v-a4701728]{position:absolute;top:2px;left:0;z-index:90;width:calc(100% - 2px);overflow:auto;border:1px solid var(--cs5);background-color:var(--cr0);border-radius:var(--v34a6911f);cursor:pointer;box-shadow:var(--shadow)}.asf-select-up[data-v-a4701728]{top:auto;bottom:calc(var(--v34a6911f) + 10px)!important}.asf-select-empty[data-v-a4701728]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.asf-select-li[data-v-a4701728],.asf-select-li-active[data-v-a4701728]{padding:3px 15px;border-bottom:1px solid var(--cs5)}.asf-select-li[data-v-a4701728]:hover{background-color:var(--cr5)}.asf-select-li-active[data-v-a4701728]{background-color:var(--ct2);color:var(--ct1)}.asf-select-cur[data-v-a4701728]:focus,.asf-select-cur[data-v-a4701728]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-select-cur:focus+.asf-select-list-area[data-v-a4701728]{display:block}.asf-select-cur:focus .asf-select-cur-ic[data-v-a4701728]:before{transform:rotate(180deg)}.unit[data-v-a4701728]{font-size:var(--sa1);width:auto;padding:0 8px}.asf-textarea[data-v-d23aed07]{display:flex;width:100%}.asf-textarea>textarea[data-v-d23aed07]{cursor:pointer;display:block;border:1px solid var(--cs5);width:calc(100% - 22px);min-height:var(--f697bf2e);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:var(--f697bf2e)}.asf-textarea>textarea[data-v-d23aed07]:focus,.asf-textarea>textarea[data-v-d23aed07]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-tick[data-v-a981dd49],.asf-tick-disabled[data-v-a981dd49],.asf-tick-ck[data-v-a981dd49]{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--cs5);height:var(--v1081b8c6);width:var(--v1081b8c6);margin:0;padding:3px;border-radius:var(--v1081b8c6)}.asf-tick[data-v-a981dd49]{background-color:var(--cr0)}.asf-tick[data-v-a981dd49]:hover{border-color:var(--ct3);box-shadow:0 0 5px var(--ct3)}.asf-tick-disabled[data-v-a981dd49]{background-color:var(--cs1)}.asf-tick-ck[data-v-a981dd49]{background-color:var(--ct2);color:var(--ct1)}.asf-tick-ck[data-v-a981dd49]:after{content:"✓";font-weight:700}.asf-upload-area[data-v-1784793e]{display:flex;width:100%}.asf-upload[data-v-1784793e]{display:flex;justify-content:center;align-items:center;border:1px solid var(--cs5);color:var(--cu8);width:calc(100% - 22px);min-height:var(--v21e55886);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:var(--v21e55886)}.asf-upload-area[data-v-d8731f1e]{display:flex;width:100%}.asf-upload[data-v-d8731f1e]{display:flex;justify-content:center;align-items:center;border:1px solid var(--cs5);color:var(--cu8);width:calc(100% - 22px);min-height:var(--v7e0dcac0);margin:0;font-size:var(--sa1);padding:3px 10px;border-radius:10px}
|
|
@@ -4,7 +4,7 @@ const o = {
|
|
|
4
4
|
loadfn: i.loadfn,
|
|
5
5
|
app: a,
|
|
6
6
|
eager: !1,
|
|
7
|
-
files: /* @__PURE__ */ Object.assign({ "./asui/form/AsaiForm.vue": () => import("./AsaiForm-
|
|
7
|
+
files: /* @__PURE__ */ Object.assign({ "./asui/form/AsaiForm.vue": () => import("./AsaiForm-BAbhq1KW.mjs"), "./asui/form/AsaiFormLabel.vue": () => import("./AsaiFormLabel-BAXvUybW.mjs"), "./asui/form/AsaiFormLabelArea.vue": () => import("./AsaiFormLabelArea-CmjCZFfF.mjs"), "./asui/form/AsaiFormLi.vue": () => import("./AsaiFormLi-B-Po6qaB.mjs"), "./asui/form/AsaiFormObject.vue": () => import("./AsaiFormObject-B8WHlNwq.mjs"), "./asui/form/AsaiFormShow.vue": () => import("./AsaiFormShow-Da4NJXK7.mjs"), "./asui/form/AsaiInput.vue": () => import("./AsaiInput-D4BZoHDc.mjs"), "./asui/form/AsaiRichEditor.vue": () => import("./AsaiRichEditor-DDOCr12f.mjs"), "./asui/form/AsaiSelect.vue": () => import("./AsaiSelect-B4KZbNRO.mjs"), "./asui/form/AsaiSelectCl.vue": () => import("./AsaiSelectCl-Cl6N0v40.mjs"), "./asui/form/AsaiSelectLv.vue": () => import("./AsaiSelectLv-DNjfTp67.mjs"), "./asui/form/AsaiTextJson.vue": () => import("./AsaiTextJson-Dr7yX0_I.mjs"), "./asui/form/AsaiTextarea.vue": () => import("./AsaiTextarea-O38xA-tq.mjs"), "./asui/form/AsaiUpBinary.vue": () => import("./AsaiUpBinary-DFmYr2_2.mjs"), "./asui/form/AsaiUpload.vue": () => import("./AsaiUpload-D4kzZ5_G.mjs"), "./asui/form/AsaiUploadImg.vue": () => import("./AsaiUploadImg-D8mMVNdc.mjs"), "./asui/form/AsaiUploadImgCut.vue": () => import("./AsaiUploadImgCut-B3Y2hppn.mjs"), "./asui/form/AsaiUploadImgCutPop.vue": () => import("./AsaiUploadImgCutPop-0gVLGw9m.mjs"), "./asui/formbase/AsfCheck.vue": () => import("./AsfCheck-BcCEmH1r.mjs"), "./asui/formbase/AsfInput.vue": () => import("./AsfInput-By00xBFI.mjs"), "./asui/formbase/AsfInputSn.vue": () => import("./AsfInputSn-BszCoVn-.mjs"), "./asui/formbase/AsfSelect.vue": () => import("./AsfSelect-E9c8eZQ4.mjs"), "./asui/formbase/AsfTextarea.vue": () => import("./AsfTextarea-BAGk31uV.mjs"), "./asui/formbase/AsfTick.vue": () => import("./AsfTick-29dNfK_T.mjs"), "./asui/formbase/AsfUploadFile.vue": () => import("./AsfUploadFile-DNpyDdOv.mjs"), "./asui/formbase/AsfUploadText.vue": () => import("./AsfUploadText-BLOaIAVI.mjs") })
|
|
8
8
|
});
|
|
9
9
|
}
|
|
10
10
|
};
|