hisonvue 1.0.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/LICENSE +21 -0
- package/README.md +248 -0
- package/dist/HAccordion-CPtgQUK0.js +1 -0
- package/dist/HAccordion-ll-4cIAw.mjs +262 -0
- package/dist/HBaggie-D6omQoFh.js +1 -0
- package/dist/HBaggie-D_7mEiuV.mjs +283 -0
- package/dist/HBanner-DmcMOFqS.mjs +420 -0
- package/dist/HBanner-Io4SdGGs.js +1 -0
- package/dist/HButton-DAVuDmOQ.js +1 -0
- package/dist/HButton-DAriO81x.mjs +256 -0
- package/dist/HCalendar-DKwGatUk.js +2 -0
- package/dist/HCalendar-w18iIB90.mjs +3387 -0
- package/dist/HCaption-6CbSqRA7.js +1 -0
- package/dist/HCaption-DwsXHDNK.mjs +275 -0
- package/dist/HChart-C86JXUyW.js +1 -0
- package/dist/HChart-CcArHFr0.mjs +179 -0
- package/dist/HDrawer-DG1O42iF.mjs +439 -0
- package/dist/HDrawer-U5VC_okK.js +1 -0
- package/dist/HDropdown-Bs7AfefJ.mjs +393 -0
- package/dist/HDropdown-D4RAGmjE.js +1 -0
- package/dist/HFileset-BGuP9O4l.mjs +578 -0
- package/dist/HFileset-CuPR6Hwf.js +2 -0
- package/dist/HGap-BPAdnOQz.js +1 -0
- package/dist/HGap-DzGrfWVt.mjs +233 -0
- package/dist/HGrid-BiIhVCv_.mjs +345 -0
- package/dist/HGrid-C3EV_pgM.js +1 -0
- package/dist/HImagebox-D_DKeCrO.mjs +654 -0
- package/dist/HImagebox-t_UdFjQO.js +2 -0
- package/dist/HInput-BEyJqYkD.mjs +1103 -0
- package/dist/HInput-DMGLY473.js +1 -0
- package/dist/HInputGroup-D37WTYoI.mjs +281 -0
- package/dist/HInputGroup-Dcfr23sZ.js +1 -0
- package/dist/HLabel-B2FOqSiS.mjs +369 -0
- package/dist/HLabel-Dm48mSwn.js +1 -0
- package/dist/HLayout-BbCEm_aO.mjs +196 -0
- package/dist/HLayout-C1e4BZ_K.js +1 -0
- package/dist/HList-CAeYb-hz.mjs +419 -0
- package/dist/HList-eNXmMf27.js +1 -0
- package/dist/HModal-BDBEEpKm.mjs +778 -0
- package/dist/HModal-GODLq3wH.js +1 -0
- package/dist/HNote-CWnUjt3_.mjs +934 -0
- package/dist/HNote-D_Xwu9oL.js +1 -0
- package/dist/HPagination-Db_L9wv-.js +1 -0
- package/dist/HPagination-e5e2a5GS.mjs +496 -0
- package/dist/HParagraph-BRuSeOMU.js +1 -0
- package/dist/HParagraph-DYuB-qjY.mjs +463 -0
- package/dist/HPopup-Brp1FVpm.mjs +431 -0
- package/dist/HPopup-ChkoI3xm.js +1 -0
- package/dist/HSpinner-DDtU9PL_.js +1 -0
- package/dist/HSpinner-DOq2k5kT.mjs +281 -0
- package/dist/HTable-DGFnzD4u.js +1 -0
- package/dist/HTable-GCDP5O_J.mjs +620 -0
- package/dist/_plugin-vue_export-helper-BHFhmbuH.js +1 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.mjs +9 -0
- package/dist/ar.es-CKau4tBl.js +5 -0
- package/dist/ar.es-XxSuE68c.mjs +57 -0
- package/dist/bg.es-BJ7fu6yy.mjs +57 -0
- package/dist/bg.es-Melqx1M5.js +5 -0
- package/dist/bn.es-CYlBkxc5.mjs +57 -0
- package/dist/bn.es-ClbAZ4WP.js +5 -0
- package/dist/bs.es-KjOcbE96.js +5 -0
- package/dist/bs.es-yMnaKmdi.mjs +57 -0
- package/dist/ca.es-BaGTENcW.js +5 -0
- package/dist/ca.es-DIhlxmQc.mjs +67 -0
- package/dist/cs.es-BN8oxRXQ.mjs +57 -0
- package/dist/cs.es-ChOlHqBr.js +5 -0
- package/dist/da.es-DJB5lAli.mjs +57 -0
- package/dist/da.es-DOFXbf8-.js +5 -0
- package/dist/de.es-DwE82Kaw.js +5 -0
- package/dist/de.es-glb8GeJh.mjs +57 -0
- package/dist/drag-and-drop.es-4ttM1tRs.js +5 -0
- package/dist/drag-and-drop.es-Ckzp6XEn.mjs +183 -0
- package/dist/el.es-CNrCgzYI.js +5 -0
- package/dist/el.es-_bBZf22h.mjs +76 -0
- package/dist/en.es-CV9nmQGr.mjs +57 -0
- package/dist/en.es-CgL601qd.js +5 -0
- package/dist/es.es-CZjcWK54.mjs +57 -0
- package/dist/es.es-IdFGKY7Q.js +5 -0
- package/dist/et.es-BygWmV3P.js +5 -0
- package/dist/et.es-CjvQAzNF.mjs +57 -0
- package/dist/fa.es-DW_0SmsT.js +5 -0
- package/dist/fa.es-DykeFwDA.mjs +57 -0
- package/dist/fi.es-Bl7Pp7AO.mjs +57 -0
- package/dist/fi.es-pgfJlZ8i.js +5 -0
- package/dist/fr.es-CNKVhFfO.mjs +57 -0
- package/dist/fr.es-OENguFuM.js +5 -0
- package/dist/he.es-bixEnAeH.js +5 -0
- package/dist/he.es-nF4GFhjH.mjs +57 -0
- package/dist/hisonvue.cjs.js +1 -0
- package/dist/hisonvue.css +1 -0
- package/dist/hisonvue.d.ts +19934 -0
- package/dist/hisonvue.es.js +114 -0
- package/dist/hr.es-CkRAP94O.js +5 -0
- package/dist/hr.es-QFfz660j.mjs +57 -0
- package/dist/hu.es-Ck2rE01V.mjs +57 -0
- package/dist/hu.es-DG6HeiQJ.js +5 -0
- package/dist/id.es-D4tPi6wP.js +5 -0
- package/dist/id.es-Je7FEUJ5.mjs +57 -0
- package/dist/index-BmKMHsSZ.js +153 -0
- package/dist/index-DUh7pai4.mjs +19976 -0
- package/dist/is.es-CDFqLYCV.js +5 -0
- package/dist/is.es-bzprHvXI.mjs +57 -0
- package/dist/it.es-BHgrw_C6.js +5 -0
- package/dist/it.es-CJtfqmNS.mjs +57 -0
- package/dist/ja.es-BaiGjqZ6.mjs +57 -0
- package/dist/ja.es-D-lxWwyb.js +5 -0
- package/dist/ka.es-CnnB6q4A.js +5 -0
- package/dist/ka.es-x9QJo_dl.mjs +57 -0
- package/dist/ko.es-6c447eTS.mjs +57 -0
- package/dist/ko.es-b18aaB3V.js +5 -0
- package/dist/lt.es-2twYdvmJ.mjs +57 -0
- package/dist/lt.es-BY9UQ6wZ.js +5 -0
- package/dist/mn.es-BLQRG1uu.mjs +57 -0
- package/dist/mn.es-YFS7gSdf.js +5 -0
- package/dist/nl.es-BEx-4hnj.js +5 -0
- package/dist/nl.es-bB1qWR_S.mjs +57 -0
- package/dist/no.es-BQnRWlWR.js +5 -0
- package/dist/no.es-CWDVXpTf.mjs +57 -0
- package/dist/pl.es-CKCsZ_02.js +5 -0
- package/dist/pl.es-Dzct23w9.mjs +57 -0
- package/dist/pt-br.es-BeBuiitI.mjs +57 -0
- package/dist/pt-br.es-oH7qh6Fd.js +5 -0
- package/dist/pt-pt.es-BeBuiitI.mjs +57 -0
- package/dist/pt-pt.es-DLk5I0ej.js +5 -0
- package/dist/ro.es-DfMVJ30M.mjs +57 -0
- package/dist/ro.es-DgTen1Dh.js +5 -0
- package/dist/ru.es-Bv9UvrBe.mjs +67 -0
- package/dist/ru.es-jGIQfREl.js +5 -0
- package/dist/scrollManager-BGnq4wyt.mjs +14 -0
- package/dist/scrollManager-CEEWQwoK.js +1 -0
- package/dist/setButtonCssEvent-B9WTs2X7.js +1 -0
- package/dist/setButtonCssEvent-dBs1GcAh.mjs +70 -0
- package/dist/sk.es-CUOTpLuL.mjs +57 -0
- package/dist/sk.es-D2bhVb26.js +5 -0
- package/dist/sl.es-DeIGgZbR.mjs +57 -0
- package/dist/sl.es-TV8Uraa1.js +5 -0
- package/dist/sq.es-CQJJrZHv.mjs +67 -0
- package/dist/sq.es-Cc65zxbr.js +5 -0
- package/dist/sr.es-CKS0AkiW.mjs +57 -0
- package/dist/sr.es-D5VNA_GW.js +5 -0
- package/dist/sv.es-ChHQRrAe.mjs +57 -0
- package/dist/sv.es-dBeK_DZs.js +5 -0
- package/dist/tr.es-B3v90gVv.mjs +57 -0
- package/dist/tr.es-BUz4S13G.js +5 -0
- package/dist/uk.es-B8uaeLcK.js +5 -0
- package/dist/uk.es-CiR4NnbN.mjs +67 -0
- package/dist/vi.es-2OFMtbQI.js +5 -0
- package/dist/vi.es-DFDi5l7p.mjs +67 -0
- package/dist/zh-cn.es-9cbEAuAi.mjs +67 -0
- package/dist/zh-cn.es-fDHCbCIg.js +5 -0
- package/dist/zh-hk.es-COzeh5F8.js +5 -0
- package/dist/zh-hk.es-z0tio4jE.mjs +67 -0
- package/nuxt/module.mjs +39 -0
- package/nuxt/plugin.mjs +21 -0
- package/package.json +53 -0
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
import { defineComponent as Me, ref as i, computed as N, onMounted as ze, onBeforeUnmount as Ne, watch as o, nextTick as _, resolveComponent as xe, createElementBlock as F, openBlock as T, normalizeClass as x, createElementVNode as O, normalizeStyle as $e, createCommentVNode as de, withModifiers as W, toDisplayString as X, Fragment as re, renderList as Ae, renderSlot as ee, createVNode as ke, withCtx as Be } from "vue";
|
|
2
|
+
import { E as Ee, y as D, g as Le, l as y, u as Oe, j as ve, t as le, h as S, e as je, a as Re, b as fe, r as He, c as Ve, d as Pe } from "./index-DUh7pai4.mjs";
|
|
3
|
+
import { _ as Ue } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
4
|
+
const Je = {
|
|
5
|
+
/**
|
|
6
|
+
* Unique identifier for the file set.
|
|
7
|
+
* - Access methods via `hison.component.getFileset(id)`
|
|
8
|
+
* - ⚠️ Duplicate `id` will throw at mount time
|
|
9
|
+
*/
|
|
10
|
+
id: { type: String, required: !1 },
|
|
11
|
+
/**
|
|
12
|
+
* Custom class for the root (string / array / object supported).
|
|
13
|
+
* - Works with responsive classes like `hison-col-*`, `hison-size-*`, etc.
|
|
14
|
+
*/
|
|
15
|
+
class: {
|
|
16
|
+
type: [String, Array, Object],
|
|
17
|
+
required: !1
|
|
18
|
+
},
|
|
19
|
+
/**
|
|
20
|
+
* Inline style for the root (string | object | array of objects).
|
|
21
|
+
*/
|
|
22
|
+
style: {
|
|
23
|
+
type: [String, Object, Array],
|
|
24
|
+
required: !1
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Visibility of the component.
|
|
28
|
+
* - Boolean only. Use `:visible="false"`
|
|
29
|
+
*/
|
|
30
|
+
visible: { type: Boolean, default: !0 },
|
|
31
|
+
/**
|
|
32
|
+
* Edit mode of the component.
|
|
33
|
+
* - 'editable' | 'readonly' | 'disable'
|
|
34
|
+
*/
|
|
35
|
+
editMode: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: D.editable,
|
|
38
|
+
validator: (l) => Ee.includes(l)
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* v-model: list of attached files.
|
|
42
|
+
*/
|
|
43
|
+
modelValue: {
|
|
44
|
+
type: Array,
|
|
45
|
+
default: () => []
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Attachment group id for backend linkage.
|
|
49
|
+
*/
|
|
50
|
+
attId: { type: String, default: "" },
|
|
51
|
+
/**
|
|
52
|
+
* Text for the "Add" button. (Use `#add-button` slot to fully customize.)
|
|
53
|
+
*/
|
|
54
|
+
addButtonText: { type: String, default: "Add" },
|
|
55
|
+
/**
|
|
56
|
+
* Text for the "Remove" button. (Use `#remove-button` slot to fully customize.)
|
|
57
|
+
*/
|
|
58
|
+
removeButtonText: { type: String, default: "x" },
|
|
59
|
+
/**
|
|
60
|
+
* Placeholder text when list is empty.
|
|
61
|
+
*/
|
|
62
|
+
placeholder: { type: String, default: "There are no files." },
|
|
63
|
+
/**
|
|
64
|
+
* Enable drag-and-drop file upload.
|
|
65
|
+
*/
|
|
66
|
+
enableDrop: { type: Boolean, default: !0 },
|
|
67
|
+
/**
|
|
68
|
+
* Custom download handler. Overrides default behavior when provided.
|
|
69
|
+
*/
|
|
70
|
+
downloadHandler: {
|
|
71
|
+
type: Function,
|
|
72
|
+
default: void 0
|
|
73
|
+
},
|
|
74
|
+
/**
|
|
75
|
+
* Wrap files into multiple columns (UI option).
|
|
76
|
+
*/
|
|
77
|
+
multiCols: { type: Boolean, default: !1 },
|
|
78
|
+
/**
|
|
79
|
+
* Allow multiple file selection.
|
|
80
|
+
*/
|
|
81
|
+
multiple: { type: Boolean, default: !0 },
|
|
82
|
+
/**
|
|
83
|
+
* Allowed file types (string or string[]).
|
|
84
|
+
* - Accepts MIME types ('image/png') or extensions ('.jpg').
|
|
85
|
+
* - Comma-separated string will be split internally.
|
|
86
|
+
* - Takes precedence over `disallowedTypes`.
|
|
87
|
+
*/
|
|
88
|
+
allowedTypes: {
|
|
89
|
+
type: [String, Array],
|
|
90
|
+
default: void 0,
|
|
91
|
+
validator: (l) => l === void 0 || typeof l == "string" || Array.isArray(l) && l.every((a) => typeof a == "string")
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* Disallowed file types (string or string[]).
|
|
95
|
+
* - MIME types or extensions. Comma-separated string supported.
|
|
96
|
+
* - Ignored if `allowedTypes` is set.
|
|
97
|
+
*/
|
|
98
|
+
disallowedTypes: {
|
|
99
|
+
type: [String, Array],
|
|
100
|
+
default: void 0,
|
|
101
|
+
validator: (l) => l === void 0 || typeof l == "string" || Array.isArray(l) && l.every((a) => typeof a == "string")
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Max file size per file (bytes). Infinity = no limit.
|
|
105
|
+
*/
|
|
106
|
+
maxFileSize: {
|
|
107
|
+
type: Number,
|
|
108
|
+
default: 1 / 0,
|
|
109
|
+
validator: (l) => Number.isFinite(l) && l >= 0 || l === 1 / 0
|
|
110
|
+
},
|
|
111
|
+
/**
|
|
112
|
+
* Max total size of all files (bytes). Infinity = no limit.
|
|
113
|
+
*/
|
|
114
|
+
maxTotalFileSize: {
|
|
115
|
+
type: Number,
|
|
116
|
+
default: 1 / 0,
|
|
117
|
+
validator: (l) => Number.isFinite(l) && l >= 0 || l === 1 / 0
|
|
118
|
+
},
|
|
119
|
+
/**
|
|
120
|
+
* Max number of files (0 = unlimited).
|
|
121
|
+
*/
|
|
122
|
+
maxFileCount: {
|
|
123
|
+
type: Number,
|
|
124
|
+
default: 0,
|
|
125
|
+
validator: (l) => Number.isInteger(l) && l >= 0
|
|
126
|
+
},
|
|
127
|
+
/**
|
|
128
|
+
* Callback when file type is disallowed.
|
|
129
|
+
* (file, allowedTypes[]|null, disallowedTypes[]|null) => void
|
|
130
|
+
*/
|
|
131
|
+
onDisallowedType: {
|
|
132
|
+
type: Function,
|
|
133
|
+
default: void 0
|
|
134
|
+
},
|
|
135
|
+
/**
|
|
136
|
+
* Callback when a file exceeds `maxFileSize`.
|
|
137
|
+
* (file, size, max) => void
|
|
138
|
+
*/
|
|
139
|
+
onMaxFileSizeExceeded: {
|
|
140
|
+
type: Function,
|
|
141
|
+
default: void 0
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Callback when total size exceeds `maxTotalFileSize`.
|
|
145
|
+
* (file, total, max) => void
|
|
146
|
+
*/
|
|
147
|
+
onMaxTotalSizeExceeded: {
|
|
148
|
+
type: Function,
|
|
149
|
+
default: void 0
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Controls keyboard focus order of the element.
|
|
153
|
+
* - `0` enables natural tab navigation, positive numbers set custom order.
|
|
154
|
+
* - `null` or `''` removes tabindex (not focusable).
|
|
155
|
+
*/
|
|
156
|
+
tabIndex: {
|
|
157
|
+
type: [Number, String],
|
|
158
|
+
default: null,
|
|
159
|
+
validator: (l) => l === null || l === "" || !isNaN(+l) && isFinite(+l)
|
|
160
|
+
}
|
|
161
|
+
}, qe = Me({
|
|
162
|
+
name: "HFileset",
|
|
163
|
+
props: Je,
|
|
164
|
+
emits: [
|
|
165
|
+
"mounted",
|
|
166
|
+
"responsive-change",
|
|
167
|
+
"update:modelValue",
|
|
168
|
+
"add",
|
|
169
|
+
"remove",
|
|
170
|
+
"focus",
|
|
171
|
+
"blur",
|
|
172
|
+
"download",
|
|
173
|
+
"change"
|
|
174
|
+
],
|
|
175
|
+
setup(l, { emit: a }) {
|
|
176
|
+
const $ = i(null), n = i([...l.modelValue]), m = i(null), v = l.id ? l.id : Le(), j = `hbutton:${v}`, s = i(l.visible), d = i(l.editMode), R = N(() => d.value === D.disable), ce = N(() => d.value === D.readonly), ye = N(() => d.value !== D.editable ? `hison-fileset-${d.value}` : ""), me = N(() => s.value ? "" : "hison-display-none"), K = i(l.attId || ""), H = i(l.addButtonText || ""), V = i(l.removeButtonText || ""), P = i(l.placeholder ?? ""), Y = i(!1), A = i(l.enableDrop), U = i(typeof l.downloadHandler == "function" ? l.downloadHandler : void 0), J = i(l.multiCols ?? !1), w = i(l.multiple ?? !1), Q = i(!1), be = N(() => {
|
|
177
|
+
if (b.value.length === 0) return "";
|
|
178
|
+
const e = new Set(C.value.map((u) => u.toLowerCase())), t = b.value.filter((u) => !e.has(u.toLowerCase()));
|
|
179
|
+
return t.length > 0 ? t.join(",") : void 0;
|
|
180
|
+
}), b = i(Array.isArray(l.allowedTypes) ? l.allowedTypes : l.allowedTypes ? l.allowedTypes.split(",") : []), C = i(Array.isArray(l.disallowedTypes) ? l.disallowedTypes : l.disallowedTypes ? l.disallowedTypes.split(",") : []), g = i(l.maxFileSize ?? y.getMaxFilesetSize()), I = i(l.maxTotalFileSize ?? y.getMaxFilesetTotalSize()), k = i(l.maxFileCount), p = i(typeof l.onDisallowedType == "function" ? l.onDisallowedType : void 0), B = i(typeof l.onMaxFileSizeExceeded == "function" ? l.onMaxFileSizeExceeded : void 0), E = i(typeof l.onMaxTotalSizeExceeded == "function" ? l.onMaxTotalSizeExceeded : void 0), q = i(
|
|
181
|
+
l.tabIndex !== null && l.tabIndex !== "" ? Number(l.tabIndex) : null
|
|
182
|
+
), te = Oe(), L = i([]), Z = () => {
|
|
183
|
+
L.value = je(le(l.class) || "", te.value), Re(L.value, "col") === -1 && L.value.push("hison-col-12"), fe(L.value, "size", S.componentStyle.size), fe(L.value, "color", "primary");
|
|
184
|
+
}, ge = N(() => {
|
|
185
|
+
const e = [];
|
|
186
|
+
return e.push(...ve(le(l.class) || "", "size")), e.push(...ve(le(l.class) || "", "color")), e;
|
|
187
|
+
}), pe = () => {
|
|
188
|
+
var e;
|
|
189
|
+
(e = $.value) == null || e.click();
|
|
190
|
+
}, he = (e) => {
|
|
191
|
+
var r, M, f;
|
|
192
|
+
const t = e.type, u = "." + ((r = e.name.split(".").pop()) == null ? void 0 : r.toLowerCase());
|
|
193
|
+
return b.value.length > 0 && !b.value.some((z) => z === t || z === u) ? (console.warn(`File type not in allowedTypes: ${t} / ${u}`), (M = p.value) == null || M.call(p, e, b.value, null), !1) : C.value.length > 0 && C.value.some((z) => z === t || z === u) ? (console.warn(`File type is in disallowedTypes: ${t} / ${u}`), (f = p.value) == null || f.call(p, e, null, C.value), !1) : !0;
|
|
194
|
+
}, we = (e) => {
|
|
195
|
+
var t;
|
|
196
|
+
return typeof g.value == "number" && Number.isFinite(g.value) && e.size > g.value ? (console.warn(`File too large: ${e.name}
|
|
197
|
+
Max size: ${g.value} Byte`), (t = B.value) == null || t.call(B, e, e.size, g.value), !1) : !0;
|
|
198
|
+
}, ae = (e) => {
|
|
199
|
+
var M;
|
|
200
|
+
let t = e.filter(
|
|
201
|
+
(f) => we(f) && he(f)
|
|
202
|
+
);
|
|
203
|
+
!w.value && t.length > 1 && (t = [t[0]]);
|
|
204
|
+
let u = !1;
|
|
205
|
+
const r = [];
|
|
206
|
+
for (const f of t) {
|
|
207
|
+
let G = n.value.filter((c) => !c.isDeleted), z = G.length;
|
|
208
|
+
const se = G.reduce((c, h) => c + (h.fileSize ?? 0), 0) + f.size;
|
|
209
|
+
if (I.value > 0 && se > I.value) {
|
|
210
|
+
(M = E.value) == null || M.call(E, f, se, I.value), console.warn("Total file size exceeds limit.");
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
if (!w.value) {
|
|
214
|
+
for (const c of G)
|
|
215
|
+
if (c.isNew) {
|
|
216
|
+
const h = n.value.indexOf(c);
|
|
217
|
+
h !== -1 && n.value.splice(h, 1);
|
|
218
|
+
} else
|
|
219
|
+
c.isDeleted = !0;
|
|
220
|
+
u = !0;
|
|
221
|
+
}
|
|
222
|
+
if (w.value && k.value > 0 && z >= k.value) {
|
|
223
|
+
const c = n.value.findIndex((h) => !h.isDeleted);
|
|
224
|
+
if (c !== -1) {
|
|
225
|
+
const h = n.value[c];
|
|
226
|
+
h.isNew ? n.value.splice(c, 1) : h.isDeleted = !0, u = !0;
|
|
227
|
+
} else {
|
|
228
|
+
console.warn("No replaceable file found for maxFileCount overflow.");
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const ue = {
|
|
233
|
+
fileName: f.name,
|
|
234
|
+
fileSize: f.size,
|
|
235
|
+
extension: f.name.split(".").pop(),
|
|
236
|
+
file: f,
|
|
237
|
+
isNew: !0
|
|
238
|
+
};
|
|
239
|
+
n.value.push(ue), u = !0, r.push(ue);
|
|
240
|
+
}
|
|
241
|
+
u && (Q.value = !0, a("update:modelValue", [...n.value]), r.length && a("add", y.utils.deepCopyObject(r), m.value), a("change", y.utils.deepCopyObject(n.value), m.value));
|
|
242
|
+
}, Ce = (e) => {
|
|
243
|
+
if (d.value !== D.editable) return;
|
|
244
|
+
const t = n.value[e];
|
|
245
|
+
t.fileId ? t.isDeleted = !0 : n.value.splice(e, 1), Q.value = !0, a("update:modelValue", [...n.value]), a("remove", y.utils.deepCopyObject(t), e, m.value), a("change", y.utils.deepCopyObject(n.value), m.value);
|
|
246
|
+
}, Fe = (e) => {
|
|
247
|
+
if (d.value !== D.editable) return;
|
|
248
|
+
const t = e.target.files;
|
|
249
|
+
!t || t.length === 0 || (ae(Array.from(t)), _(() => {
|
|
250
|
+
$.value && ($.value.value = "");
|
|
251
|
+
}));
|
|
252
|
+
}, Te = N(() => n.value.filter((e) => !e.isDeleted)), Se = (e) => {
|
|
253
|
+
if (a("download", y.utils.deepCopyObject(e), m.value), U.value) {
|
|
254
|
+
U.value(e);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
let t = "", u = e.fileName || "download";
|
|
258
|
+
if (e.file) {
|
|
259
|
+
const M = new Blob([e.file], { type: e.file.type });
|
|
260
|
+
t = URL.createObjectURL(M);
|
|
261
|
+
} else if (e.filePath)
|
|
262
|
+
t = e.filePath;
|
|
263
|
+
else {
|
|
264
|
+
console.warn("Download failed: no filePath or file object.");
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
const r = document.createElement("a");
|
|
268
|
+
r.href = t, r.download = u, r.click(), e.file && URL.revokeObjectURL(t);
|
|
269
|
+
}, De = (e) => {
|
|
270
|
+
!A.value || d.value !== D.editable || (Y.value = !0);
|
|
271
|
+
}, Ie = (e) => {
|
|
272
|
+
var t;
|
|
273
|
+
Y.value = !1, !(!A.value || d.value !== D.editable) && (t = e.dataTransfer) != null && t.files && ae(Array.from(e.dataTransfer.files));
|
|
274
|
+
}, ie = (e) => {
|
|
275
|
+
if (!e || !e.getIsDataModel || !e.getIsDataModel() || e.getRowCount() === 0) return;
|
|
276
|
+
const t = e.getRows();
|
|
277
|
+
n.value = [...t];
|
|
278
|
+
}, ne = () => {
|
|
279
|
+
S.component.filesetList[v] && S.component.filesetList[v].isHisonvueComponent && console.warn(`[Hisonvue] The fileset ID is at risk of being duplicated. ${v}`), He(j, () => {
|
|
280
|
+
oe(), _(ne);
|
|
281
|
+
}), $.value && (Z(), m.value = {
|
|
282
|
+
isHisonvueComponent: !0,
|
|
283
|
+
getId: () => v,
|
|
284
|
+
getType: () => "fileset",
|
|
285
|
+
isVisible: () => s.value,
|
|
286
|
+
setVisible: (e) => {
|
|
287
|
+
s.value = e;
|
|
288
|
+
},
|
|
289
|
+
getEditMode: () => d.value,
|
|
290
|
+
setEditMode: (e) => {
|
|
291
|
+
var t;
|
|
292
|
+
d.value = e, (t = S.component.buttonList[`hison_fileset_add_button_${v}`]) == null || t.setDisable(R.value);
|
|
293
|
+
},
|
|
294
|
+
getValue: () => y.utils.deepCopyObject(n.value),
|
|
295
|
+
setValue: (e) => {
|
|
296
|
+
n.value = y.utils.deepCopyObject([...e]);
|
|
297
|
+
},
|
|
298
|
+
getDataModel: () => n.value.length > 0 ? new y.data.DataModel(n.value) : null,
|
|
299
|
+
setDataModel: (e) => {
|
|
300
|
+
ie(e);
|
|
301
|
+
},
|
|
302
|
+
load: (e) => {
|
|
303
|
+
e && e.getIsDataModel && e.getIsDataModel() ? ie(e) : n.value = y.utils.deepCopyObject([...e]);
|
|
304
|
+
},
|
|
305
|
+
getAttId: () => K.value,
|
|
306
|
+
setAttId: (e) => {
|
|
307
|
+
K.value = e;
|
|
308
|
+
},
|
|
309
|
+
getAddButtonText: () => H.value,
|
|
310
|
+
setAddButtonText: (e) => {
|
|
311
|
+
H.value = e;
|
|
312
|
+
},
|
|
313
|
+
getRemoveButtonText: () => V.value,
|
|
314
|
+
setRemoveButtonText: (e) => {
|
|
315
|
+
V.value = e;
|
|
316
|
+
},
|
|
317
|
+
isEnableDrop: () => A.value,
|
|
318
|
+
setEnableDrop: (e) => {
|
|
319
|
+
A.value = e;
|
|
320
|
+
},
|
|
321
|
+
setDownloadHandler: (e) => {
|
|
322
|
+
U.value = e;
|
|
323
|
+
},
|
|
324
|
+
isMultiCols: () => J.value,
|
|
325
|
+
setMultiCols: (e) => {
|
|
326
|
+
J.value = e;
|
|
327
|
+
},
|
|
328
|
+
isMultiple: () => w.value,
|
|
329
|
+
setMultiple: (e) => {
|
|
330
|
+
w.value = e;
|
|
331
|
+
},
|
|
332
|
+
getPlaceholder: () => P.value,
|
|
333
|
+
setPlaceholder: (e) => {
|
|
334
|
+
P.value = e;
|
|
335
|
+
},
|
|
336
|
+
getAllowedTypes: () => b.value,
|
|
337
|
+
setAllowedTypes: (e) => {
|
|
338
|
+
b.value = e;
|
|
339
|
+
},
|
|
340
|
+
getDisallowedTypes: () => C.value,
|
|
341
|
+
setDisallowedTypes: (e) => {
|
|
342
|
+
C.value = e;
|
|
343
|
+
},
|
|
344
|
+
getMaxFileSize: () => g.value,
|
|
345
|
+
setMaxFileSize: (e) => {
|
|
346
|
+
g.value = e;
|
|
347
|
+
},
|
|
348
|
+
getMaxTotalFileSize: () => I.value,
|
|
349
|
+
setMaxTotalFileSize: (e) => {
|
|
350
|
+
I.value = e;
|
|
351
|
+
},
|
|
352
|
+
getMaxFileCount: () => k.value,
|
|
353
|
+
setMaxFileCount: (e) => {
|
|
354
|
+
k.value = e;
|
|
355
|
+
},
|
|
356
|
+
setOnDisallowedType: (e) => {
|
|
357
|
+
p.value = e;
|
|
358
|
+
},
|
|
359
|
+
setOnMaxFileSizeExceeded: (e) => {
|
|
360
|
+
B.value = e;
|
|
361
|
+
},
|
|
362
|
+
setOnMaxTotalSizeExceeded: (e) => {
|
|
363
|
+
E.value = e;
|
|
364
|
+
},
|
|
365
|
+
isModified: () => Q.value,
|
|
366
|
+
setModified: (e) => {
|
|
367
|
+
Q.value = e;
|
|
368
|
+
},
|
|
369
|
+
getTabIndex: () => q.value,
|
|
370
|
+
setTabIndex: (e) => {
|
|
371
|
+
q.value = e != null ? Number(e) : null;
|
|
372
|
+
},
|
|
373
|
+
focus: () => {
|
|
374
|
+
var e;
|
|
375
|
+
(e = S.component.buttonList[`hison_fileset_add_button_${v}`]) == null || e.focus();
|
|
376
|
+
},
|
|
377
|
+
reload: () => Ve(j)
|
|
378
|
+
}, S.component.filesetList[v] = m.value, a("mounted", m.value));
|
|
379
|
+
}, oe = () => {
|
|
380
|
+
Pe(j), delete S.component.filesetList[v];
|
|
381
|
+
};
|
|
382
|
+
return ze(ne), Ne(oe), o(
|
|
383
|
+
() => l.modelValue,
|
|
384
|
+
(e) => {
|
|
385
|
+
JSON.stringify(e) !== JSON.stringify(n.value) && (n.value = [...e]);
|
|
386
|
+
},
|
|
387
|
+
{ deep: !0 }
|
|
388
|
+
), o(te, (e) => {
|
|
389
|
+
Z(), a("responsive-change", e);
|
|
390
|
+
}), o(() => l.visible, (e) => {
|
|
391
|
+
const t = !!e;
|
|
392
|
+
t !== s.value && (s.value = t);
|
|
393
|
+
}), o(() => l.editMode, (e) => {
|
|
394
|
+
e && e !== d.value && (d.value = e, _(() => {
|
|
395
|
+
var t;
|
|
396
|
+
return (t = S.component.buttonList[`hison_fileset_add_button_${v}`]) == null ? void 0 : t.setDisable(R.value);
|
|
397
|
+
}));
|
|
398
|
+
}), o(() => l.attId, (e) => {
|
|
399
|
+
const t = e ?? "";
|
|
400
|
+
t !== K.value && (K.value = t);
|
|
401
|
+
}), o(() => l.addButtonText, (e) => {
|
|
402
|
+
const t = e ?? "";
|
|
403
|
+
t !== H.value && (H.value = t);
|
|
404
|
+
}), o(() => l.removeButtonText, (e) => {
|
|
405
|
+
const t = e ?? "";
|
|
406
|
+
t !== V.value && (V.value = t);
|
|
407
|
+
}), o(() => l.placeholder, (e) => {
|
|
408
|
+
const t = e ?? "";
|
|
409
|
+
t !== P.value && (P.value = t);
|
|
410
|
+
}), o(() => l.enableDrop, (e) => {
|
|
411
|
+
const t = !!e;
|
|
412
|
+
t !== A.value && (A.value = t);
|
|
413
|
+
}), o(() => l.downloadHandler, (e) => {
|
|
414
|
+
const t = typeof e == "function" ? e : void 0;
|
|
415
|
+
t !== U.value && (U.value = t);
|
|
416
|
+
}), o(() => l.multiCols, (e) => {
|
|
417
|
+
const t = !!e;
|
|
418
|
+
t !== J.value && (J.value = t);
|
|
419
|
+
}), o(() => l.multiple, (e) => {
|
|
420
|
+
const t = !!e;
|
|
421
|
+
t !== w.value && (w.value = t);
|
|
422
|
+
}), o(() => l.allowedTypes, (e) => {
|
|
423
|
+
const u = (Array.isArray(e) ? e : typeof e == "string" ? e.split(",") : []).map((r) => String(r).trim()).filter(Boolean);
|
|
424
|
+
JSON.stringify(u) !== JSON.stringify(b.value) && (b.value = u);
|
|
425
|
+
}), o(() => l.disallowedTypes, (e) => {
|
|
426
|
+
const u = (Array.isArray(e) ? e : typeof e == "string" ? e.split(",") : []).map((r) => String(r).trim()).filter(Boolean);
|
|
427
|
+
JSON.stringify(u) !== JSON.stringify(C.value) && (C.value = u);
|
|
428
|
+
}), o(() => l.maxFileSize, (e) => {
|
|
429
|
+
const t = e === 1 / 0 ? 1 / 0 : Number(e);
|
|
430
|
+
(Number.isFinite(t) || t === 1 / 0) && t !== g.value && (g.value = t);
|
|
431
|
+
}), o(() => l.maxTotalFileSize, (e) => {
|
|
432
|
+
const t = e === 1 / 0 ? 1 / 0 : Number(e);
|
|
433
|
+
(Number.isFinite(t) || t === 1 / 0) && t !== I.value && (I.value = t);
|
|
434
|
+
}), o(() => l.maxFileCount, (e) => {
|
|
435
|
+
const t = Number(e);
|
|
436
|
+
Number.isInteger(t) && t >= 0 && t !== k.value && (k.value = t);
|
|
437
|
+
}), o(() => l.onDisallowedType, (e) => {
|
|
438
|
+
const t = typeof e == "function" ? e : void 0;
|
|
439
|
+
t !== p.value && (p.value = t);
|
|
440
|
+
}), o(() => l.onMaxFileSizeExceeded, (e) => {
|
|
441
|
+
const t = typeof e == "function" ? e : void 0;
|
|
442
|
+
t !== B.value && (B.value = t);
|
|
443
|
+
}), o(() => l.onMaxTotalSizeExceeded, (e) => {
|
|
444
|
+
const t = typeof e == "function" ? e : void 0;
|
|
445
|
+
t !== E.value && (E.value = t);
|
|
446
|
+
}), o(() => l.tabIndex, (e) => {
|
|
447
|
+
const t = e === null || e === "" ? null : Number(e);
|
|
448
|
+
t !== q.value && (q.value = t);
|
|
449
|
+
}), o(() => l.class, () => {
|
|
450
|
+
Z();
|
|
451
|
+
}), {
|
|
452
|
+
fileInputRef: $,
|
|
453
|
+
id: v,
|
|
454
|
+
props: l,
|
|
455
|
+
visibleFiles: Te,
|
|
456
|
+
filesetMethods: m,
|
|
457
|
+
responsiveClassList: L,
|
|
458
|
+
buttonClassList: ge,
|
|
459
|
+
visibleClass: me,
|
|
460
|
+
editModeClass: ye,
|
|
461
|
+
disable: R,
|
|
462
|
+
readonly: ce,
|
|
463
|
+
addButtonText: H,
|
|
464
|
+
removeButtonText: V,
|
|
465
|
+
placeholder: P,
|
|
466
|
+
isDragging: Y,
|
|
467
|
+
multiCols: J,
|
|
468
|
+
multiple: w,
|
|
469
|
+
accept: be,
|
|
470
|
+
tabIndex: q,
|
|
471
|
+
openFileDialog: pe,
|
|
472
|
+
removeFile: Ce,
|
|
473
|
+
onFileChange: Fe,
|
|
474
|
+
downloadFile: Se,
|
|
475
|
+
handleDragEnter: De,
|
|
476
|
+
handleDrop: Ie
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
}), Ge = {
|
|
480
|
+
key: 0,
|
|
481
|
+
class: "file-placeholder"
|
|
482
|
+
}, Ke = ["onClick"], Qe = ["disabled", "onClick"], We = { class: "hison-fileset-remove-text" }, Xe = {
|
|
483
|
+
key: 0,
|
|
484
|
+
class: "add-btn-container"
|
|
485
|
+
}, Ye = {
|
|
486
|
+
key: 1,
|
|
487
|
+
class: "hison-fileset-add-text"
|
|
488
|
+
}, Ze = ["id", "accept", "multiple"];
|
|
489
|
+
function _e(l, a, $, n, m, v) {
|
|
490
|
+
const j = xe("HButton");
|
|
491
|
+
return T(), F("div", {
|
|
492
|
+
class: x([
|
|
493
|
+
"hison-wrapper",
|
|
494
|
+
...l.responsiveClassList,
|
|
495
|
+
l.visibleClass
|
|
496
|
+
])
|
|
497
|
+
}, [
|
|
498
|
+
O("div", {
|
|
499
|
+
class: x([
|
|
500
|
+
"hison-fileset",
|
|
501
|
+
l.editModeClass
|
|
502
|
+
]),
|
|
503
|
+
style: $e(l.props.style)
|
|
504
|
+
}, [
|
|
505
|
+
O("div", {
|
|
506
|
+
class: x(["file-list-wrapper", { "drag-over": l.isDragging }]),
|
|
507
|
+
onDragover: a[0] || (a[0] = W(() => {
|
|
508
|
+
}, ["prevent"])),
|
|
509
|
+
onDragenter: a[1] || (a[1] = W((...s) => l.handleDragEnter && l.handleDragEnter(...s), ["prevent"])),
|
|
510
|
+
onDragleave: a[2] || (a[2] = W((s) => l.isDragging = !1, ["prevent"])),
|
|
511
|
+
onDrop: a[3] || (a[3] = W((...s) => l.handleDrop && l.handleDrop(...s), ["prevent"]))
|
|
512
|
+
}, [
|
|
513
|
+
O("div", {
|
|
514
|
+
class: x(["file-list", { "multi-cols": l.multiCols }])
|
|
515
|
+
}, [
|
|
516
|
+
l.visibleFiles.length === 0 && l.placeholder ? (T(), F("div", Ge, X(l.placeholder), 1)) : (T(!0), F(re, { key: 1 }, Ae(l.visibleFiles, (s, d) => (T(), F("div", {
|
|
517
|
+
key: d,
|
|
518
|
+
class: "file-item"
|
|
519
|
+
}, [
|
|
520
|
+
ee(l.$slots, "file-icon", { file: s }),
|
|
521
|
+
O("span", {
|
|
522
|
+
class: x(["file-name", { clickable: s.file || s.filePath }]),
|
|
523
|
+
onClick: (R) => l.downloadFile(s)
|
|
524
|
+
}, X(s.fileName), 11, Ke),
|
|
525
|
+
l.readonly ? de("", !0) : (T(), F(re, { key: 0 }, [
|
|
526
|
+
l.$slots["remove-button"] ? ee(l.$slots, "remove-button", {
|
|
527
|
+
key: 0,
|
|
528
|
+
file: s,
|
|
529
|
+
index: d,
|
|
530
|
+
remove: () => l.removeFile(d),
|
|
531
|
+
disable: l.disable
|
|
532
|
+
}) : (T(), F("button", {
|
|
533
|
+
key: 1,
|
|
534
|
+
class: x(["delete-btn", { "hison-disable": l.disable }]),
|
|
535
|
+
disabled: l.disable,
|
|
536
|
+
onClick: (R) => l.removeFile(d)
|
|
537
|
+
}, [
|
|
538
|
+
O("span", We, X(l.removeButtonText), 1)
|
|
539
|
+
], 10, Qe))
|
|
540
|
+
], 64))
|
|
541
|
+
]))), 128))
|
|
542
|
+
], 2)
|
|
543
|
+
], 34),
|
|
544
|
+
l.readonly ? de("", !0) : (T(), F("div", Xe, [
|
|
545
|
+
ke(j, {
|
|
546
|
+
onClick: l.openFileDialog,
|
|
547
|
+
onFocus: a[4] || (a[4] = (s) => l.$emit("focus", l.filesetMethods)),
|
|
548
|
+
onBlur: a[5] || (a[5] = (s) => l.$emit("blur", l.filesetMethods)),
|
|
549
|
+
id: `hison_fileset_add_button_${l.id}`,
|
|
550
|
+
disable: l.disable,
|
|
551
|
+
class: x([...l.buttonClassList]),
|
|
552
|
+
tabindex: l.tabIndex ?? void 0
|
|
553
|
+
}, {
|
|
554
|
+
default: Be(() => [
|
|
555
|
+
l.$slots["add-button"] ? ee(l.$slots, "add-button", {
|
|
556
|
+
key: 0,
|
|
557
|
+
add: l.openFileDialog
|
|
558
|
+
}) : (T(), F("span", Ye, X(l.addButtonText), 1))
|
|
559
|
+
]),
|
|
560
|
+
_: 3
|
|
561
|
+
}, 8, ["onClick", "id", "disable", "class", "tabindex"])
|
|
562
|
+
])),
|
|
563
|
+
O("input", {
|
|
564
|
+
id: `hison_fileset_${l.id}`,
|
|
565
|
+
ref: "fileInputRef",
|
|
566
|
+
type: "file",
|
|
567
|
+
accept: l.accept || void 0,
|
|
568
|
+
multiple: l.multiple,
|
|
569
|
+
hidden: "",
|
|
570
|
+
onChange: a[6] || (a[6] = (...s) => l.onFileChange && l.onFileChange(...s))
|
|
571
|
+
}, null, 40, Ze)
|
|
572
|
+
], 6)
|
|
573
|
+
], 2);
|
|
574
|
+
}
|
|
575
|
+
const il = /* @__PURE__ */ Ue(qe, [["render", _e]]);
|
|
576
|
+
export {
|
|
577
|
+
il as default
|
|
578
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),i=require("./index-BmKMHsSZ.js"),re=require("./_plugin-vue_export-helper-BHFhmbuH.js"),ce={id:{type:String,required:!1},class:{type:[String,Array,Object],required:!1},style:{type:[String,Object,Array],required:!1},visible:{type:Boolean,default:!0},editMode:{type:String,default:i.EditMode.editable,validator:t=>i.EDIT_MODE_VALUES.includes(t)},modelValue:{type:Array,default:()=>[]},attId:{type:String,default:""},addButtonText:{type:String,default:"Add"},removeButtonText:{type:String,default:"x"},placeholder:{type:String,default:"There are no files."},enableDrop:{type:Boolean,default:!0},downloadHandler:{type:Function,default:void 0},multiCols:{type:Boolean,default:!1},multiple:{type:Boolean,default:!0},allowedTypes:{type:[String,Array],default:void 0,validator:t=>t===void 0||typeof t=="string"||Array.isArray(t)&&t.every(o=>typeof o=="string")},disallowedTypes:{type:[String,Array],default:void 0,validator:t=>t===void 0||typeof t=="string"||Array.isArray(t)&&t.every(o=>typeof o=="string")},maxFileSize:{type:Number,default:1/0,validator:t=>Number.isFinite(t)&&t>=0||t===1/0},maxTotalFileSize:{type:Number,default:1/0,validator:t=>Number.isFinite(t)&&t>=0||t===1/0},maxFileCount:{type:Number,default:0,validator:t=>Number.isInteger(t)&&t>=0},onDisallowedType:{type:Function,default:void 0},onMaxFileSizeExceeded:{type:Function,default:void 0},onMaxTotalSizeExceeded:{type:Function,default:void 0},tabIndex:{type:[Number,String],default:null,validator:t=>t===null||t===""||!isNaN(+t)&&isFinite(+t)}},fe=l.defineComponent({name:"HFileset",props:ce,emits:["mounted","responsive-change","update:modelValue","add","remove","focus","blur","download","change"],setup(t,{emit:o}){const F=l.ref(null),n=l.ref([...t.modelValue]),m=l.ref(null),c=t.id?t.id:i.getUUID(),N=`hbutton:${c}`,s=l.ref(t.visible),d=l.ref(t.editMode),B=l.computed(()=>d.value===i.EditMode.disable),X=l.computed(()=>d.value===i.EditMode.readonly),Y=l.computed(()=>d.value!==i.EditMode.editable?`hison-fileset-${d.value}`:""),Z=l.computed(()=>s.value?"":"hison-display-none"),j=l.ref(t.attId||""),E=l.ref(t.addButtonText||""),x=l.ref(t.removeButtonText||""),A=l.ref(t.placeholder??""),R=l.ref(!1),M=l.ref(t.enableDrop),$=l.ref(typeof t.downloadHandler=="function"?t.downloadHandler:void 0),O=l.ref(t.multiCols??!1),h=l.ref(t.multiple??!1),H=l.ref(!1),_=l.computed(()=>{if(y.value.length===0)return"";const e=new Set(w.value.map(u=>u.toLowerCase())),a=y.value.filter(u=>!e.has(u.toLowerCase()));return a.length>0?a.join(","):void 0}),y=l.ref(Array.isArray(t.allowedTypes)?t.allowedTypes:t.allowedTypes?t.allowedTypes.split(","):[]),w=l.ref(Array.isArray(t.disallowedTypes)?t.disallowedTypes:t.disallowedTypes?t.disallowedTypes.split(","):[]),b=l.ref(t.maxFileSize??i.hison.getMaxFilesetSize()),C=l.ref(t.maxTotalFileSize??i.hison.getMaxFilesetTotalSize()),D=l.ref(t.maxFileCount),g=l.ref(typeof t.onDisallowedType=="function"?t.onDisallowedType:void 0),z=l.ref(typeof t.onMaxFileSizeExceeded=="function"?t.onMaxFileSizeExceeded:void 0),k=l.ref(typeof t.onMaxTotalSizeExceeded=="function"?t.onMaxTotalSizeExceeded:void 0),L=l.ref(t.tabIndex!==null&&t.tabIndex!==""?Number(t.tabIndex):null),U=i.useDevice(),I=l.ref([]),P=()=>{I.value=i.extractResponsiveClasses(i.toClassString(t.class)||"",U.value),i.getIndexSpecificClassNameFromClassList(I.value,"col")===-1&&I.value.push("hison-col-12"),i.addComponentNameToClass(I.value,"size",i.hisonCloser.componentStyle.size),i.addComponentNameToClass(I.value,"color","primary")},ee=l.computed(()=>{const e=[];return e.push(...i.extractPrefixedClasses(i.toClassString(t.class)||"","size")),e.push(...i.extractPrefixedClasses(i.toClassString(t.class)||"","color")),e}),te=()=>{var e;(e=F.value)==null||e.click()},le=e=>{var r,S,f;const a=e.type,u="."+((r=e.name.split(".").pop())==null?void 0:r.toLowerCase());return y.value.length>0&&!y.value.some(T=>T===a||T===u)?(console.warn(`File type not in allowedTypes: ${a} / ${u}`),(S=g.value)==null||S.call(g,e,y.value,null),!1):w.value.length>0&&w.value.some(T=>T===a||T===u)?(console.warn(`File type is in disallowedTypes: ${a} / ${u}`),(f=g.value)==null||f.call(g,e,null,w.value),!1):!0},ae=e=>{var a;return typeof b.value=="number"&&Number.isFinite(b.value)&&e.size>b.value?(console.warn(`File too large: ${e.name}
|
|
2
|
+
Max size: ${b.value} Byte`),(a=z.value)==null||a.call(z,e,e.size,b.value),!1):!0},q=e=>{var S;let a=e.filter(f=>ae(f)&&le(f));!h.value&&a.length>1&&(a=[a[0]]);let u=!1;const r=[];for(const f of a){let V=n.value.filter(v=>!v.isDeleted),T=V.length;const Q=V.reduce((v,p)=>v+(p.fileSize??0),0)+f.size;if(C.value>0&&Q>C.value){(S=k.value)==null||S.call(k,f,Q,C.value),console.warn("Total file size exceeds limit.");break}if(!h.value){for(const v of V)if(v.isNew){const p=n.value.indexOf(v);p!==-1&&n.value.splice(p,1)}else v.isDeleted=!0;u=!0}if(h.value&&D.value>0&&T>=D.value){const v=n.value.findIndex(p=>!p.isDeleted);if(v!==-1){const p=n.value[v];p.isNew?n.value.splice(v,1):p.isDeleted=!0,u=!0}else{console.warn("No replaceable file found for maxFileCount overflow.");break}}const W={fileName:f.name,fileSize:f.size,extension:f.name.split(".").pop(),file:f,isNew:!0};n.value.push(W),u=!0,r.push(W)}u&&(H.value=!0,o("update:modelValue",[...n.value]),r.length&&o("add",i.hison.utils.deepCopyObject(r),m.value),o("change",i.hison.utils.deepCopyObject(n.value),m.value))},ie=e=>{if(d.value!==i.EditMode.editable)return;const a=n.value[e];a.fileId?a.isDeleted=!0:n.value.splice(e,1),H.value=!0,o("update:modelValue",[...n.value]),o("remove",i.hison.utils.deepCopyObject(a),e,m.value),o("change",i.hison.utils.deepCopyObject(n.value),m.value)},oe=e=>{if(d.value!==i.EditMode.editable)return;const a=e.target.files;!a||a.length===0||(q(Array.from(a)),l.nextTick(()=>{F.value&&(F.value.value="")}))},ne=l.computed(()=>n.value.filter(e=>!e.isDeleted)),se=e=>{if(o("download",i.hison.utils.deepCopyObject(e),m.value),$.value){$.value(e);return}let a="",u=e.fileName||"download";if(e.file){const S=new Blob([e.file],{type:e.file.type});a=URL.createObjectURL(S)}else if(e.filePath)a=e.filePath;else{console.warn("Download failed: no filePath or file object.");return}const r=document.createElement("a");r.href=a,r.download=u,r.click(),e.file&&URL.revokeObjectURL(a)},ue=e=>{!M.value||d.value!==i.EditMode.editable||(R.value=!0)},de=e=>{var a;R.value=!1,!(!M.value||d.value!==i.EditMode.editable)&&(a=e.dataTransfer)!=null&&a.files&&q(Array.from(e.dataTransfer.files))},J=e=>{if(!e||!e.getIsDataModel||!e.getIsDataModel()||e.getRowCount()===0)return;const a=e.getRows();n.value=[...a]},G=()=>{i.hisonCloser.component.filesetList[c]&&i.hisonCloser.component.filesetList[c].isHisonvueComponent&&console.warn(`[Hisonvue] The fileset ID is at risk of being duplicated. ${c}`),i.registerReloadable(N,()=>{K(),l.nextTick(G)}),F.value&&(P(),m.value={isHisonvueComponent:!0,getId:()=>c,getType:()=>"fileset",isVisible:()=>s.value,setVisible:e=>{s.value=e},getEditMode:()=>d.value,setEditMode:e=>{var a;d.value=e,(a=i.hisonCloser.component.buttonList[`hison_fileset_add_button_${c}`])==null||a.setDisable(B.value)},getValue:()=>i.hison.utils.deepCopyObject(n.value),setValue:e=>{n.value=i.hison.utils.deepCopyObject([...e])},getDataModel:()=>n.value.length>0?new i.hison.data.DataModel(n.value):null,setDataModel:e=>{J(e)},load:e=>{e&&e.getIsDataModel&&e.getIsDataModel()?J(e):n.value=i.hison.utils.deepCopyObject([...e])},getAttId:()=>j.value,setAttId:e=>{j.value=e},getAddButtonText:()=>E.value,setAddButtonText:e=>{E.value=e},getRemoveButtonText:()=>x.value,setRemoveButtonText:e=>{x.value=e},isEnableDrop:()=>M.value,setEnableDrop:e=>{M.value=e},setDownloadHandler:e=>{$.value=e},isMultiCols:()=>O.value,setMultiCols:e=>{O.value=e},isMultiple:()=>h.value,setMultiple:e=>{h.value=e},getPlaceholder:()=>A.value,setPlaceholder:e=>{A.value=e},getAllowedTypes:()=>y.value,setAllowedTypes:e=>{y.value=e},getDisallowedTypes:()=>w.value,setDisallowedTypes:e=>{w.value=e},getMaxFileSize:()=>b.value,setMaxFileSize:e=>{b.value=e},getMaxTotalFileSize:()=>C.value,setMaxTotalFileSize:e=>{C.value=e},getMaxFileCount:()=>D.value,setMaxFileCount:e=>{D.value=e},setOnDisallowedType:e=>{g.value=e},setOnMaxFileSizeExceeded:e=>{z.value=e},setOnMaxTotalSizeExceeded:e=>{k.value=e},isModified:()=>H.value,setModified:e=>{H.value=e},getTabIndex:()=>L.value,setTabIndex:e=>{L.value=e!=null?Number(e):null},focus:()=>{var e;(e=i.hisonCloser.component.buttonList[`hison_fileset_add_button_${c}`])==null||e.focus()},reload:()=>i.reloadHisonComponent(N)},i.hisonCloser.component.filesetList[c]=m.value,o("mounted",m.value))},K=()=>{i.unregisterReloadable(N),delete i.hisonCloser.component.filesetList[c]};return l.onMounted(G),l.onBeforeUnmount(K),l.watch(()=>t.modelValue,e=>{JSON.stringify(e)!==JSON.stringify(n.value)&&(n.value=[...e])},{deep:!0}),l.watch(U,e=>{P(),o("responsive-change",e)}),l.watch(()=>t.visible,e=>{const a=!!e;a!==s.value&&(s.value=a)}),l.watch(()=>t.editMode,e=>{e&&e!==d.value&&(d.value=e,l.nextTick(()=>{var a;return(a=i.hisonCloser.component.buttonList[`hison_fileset_add_button_${c}`])==null?void 0:a.setDisable(B.value)}))}),l.watch(()=>t.attId,e=>{const a=e??"";a!==j.value&&(j.value=a)}),l.watch(()=>t.addButtonText,e=>{const a=e??"";a!==E.value&&(E.value=a)}),l.watch(()=>t.removeButtonText,e=>{const a=e??"";a!==x.value&&(x.value=a)}),l.watch(()=>t.placeholder,e=>{const a=e??"";a!==A.value&&(A.value=a)}),l.watch(()=>t.enableDrop,e=>{const a=!!e;a!==M.value&&(M.value=a)}),l.watch(()=>t.downloadHandler,e=>{const a=typeof e=="function"?e:void 0;a!==$.value&&($.value=a)}),l.watch(()=>t.multiCols,e=>{const a=!!e;a!==O.value&&(O.value=a)}),l.watch(()=>t.multiple,e=>{const a=!!e;a!==h.value&&(h.value=a)}),l.watch(()=>t.allowedTypes,e=>{const u=(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(r=>String(r).trim()).filter(Boolean);JSON.stringify(u)!==JSON.stringify(y.value)&&(y.value=u)}),l.watch(()=>t.disallowedTypes,e=>{const u=(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(r=>String(r).trim()).filter(Boolean);JSON.stringify(u)!==JSON.stringify(w.value)&&(w.value=u)}),l.watch(()=>t.maxFileSize,e=>{const a=e===1/0?1/0:Number(e);(Number.isFinite(a)||a===1/0)&&a!==b.value&&(b.value=a)}),l.watch(()=>t.maxTotalFileSize,e=>{const a=e===1/0?1/0:Number(e);(Number.isFinite(a)||a===1/0)&&a!==C.value&&(C.value=a)}),l.watch(()=>t.maxFileCount,e=>{const a=Number(e);Number.isInteger(a)&&a>=0&&a!==D.value&&(D.value=a)}),l.watch(()=>t.onDisallowedType,e=>{const a=typeof e=="function"?e:void 0;a!==g.value&&(g.value=a)}),l.watch(()=>t.onMaxFileSizeExceeded,e=>{const a=typeof e=="function"?e:void 0;a!==z.value&&(z.value=a)}),l.watch(()=>t.onMaxTotalSizeExceeded,e=>{const a=typeof e=="function"?e:void 0;a!==k.value&&(k.value=a)}),l.watch(()=>t.tabIndex,e=>{const a=e===null||e===""?null:Number(e);a!==L.value&&(L.value=a)}),l.watch(()=>t.class,()=>{P()}),{fileInputRef:F,id:c,props:t,visibleFiles:ne,filesetMethods:m,responsiveClassList:I,buttonClassList:ee,visibleClass:Z,editModeClass:Y,disable:B,readonly:X,addButtonText:E,removeButtonText:x,placeholder:A,isDragging:R,multiCols:O,multiple:h,accept:_,tabIndex:L,openFileDialog:te,removeFile:ie,onFileChange:oe,downloadFile:se,handleDragEnter:ue,handleDrop:de}}}),ve={key:0,class:"file-placeholder"},me=["onClick"],ye=["disabled","onClick"],be={class:"hison-fileset-remove-text"},ge={key:0,class:"add-btn-container"},pe={key:1,class:"hison-fileset-add-text"},he=["id","accept","multiple"];function we(t,o,F,n,m,c){const N=l.resolveComponent("HButton");return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["hison-wrapper",...t.responsiveClassList,t.visibleClass])},[l.createElementVNode("div",{class:l.normalizeClass(["hison-fileset",t.editModeClass]),style:l.normalizeStyle(t.props.style)},[l.createElementVNode("div",{class:l.normalizeClass(["file-list-wrapper",{"drag-over":t.isDragging}]),onDragover:o[0]||(o[0]=l.withModifiers(()=>{},["prevent"])),onDragenter:o[1]||(o[1]=l.withModifiers((...s)=>t.handleDragEnter&&t.handleDragEnter(...s),["prevent"])),onDragleave:o[2]||(o[2]=l.withModifiers(s=>t.isDragging=!1,["prevent"])),onDrop:o[3]||(o[3]=l.withModifiers((...s)=>t.handleDrop&&t.handleDrop(...s),["prevent"]))},[l.createElementVNode("div",{class:l.normalizeClass(["file-list",{"multi-cols":t.multiCols}])},[t.visibleFiles.length===0&&t.placeholder?(l.openBlock(),l.createElementBlock("div",ve,l.toDisplayString(t.placeholder),1)):(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:1},l.renderList(t.visibleFiles,(s,d)=>(l.openBlock(),l.createElementBlock("div",{key:d,class:"file-item"},[l.renderSlot(t.$slots,"file-icon",{file:s}),l.createElementVNode("span",{class:l.normalizeClass(["file-name",{clickable:s.file||s.filePath}]),onClick:B=>t.downloadFile(s)},l.toDisplayString(s.fileName),11,me),t.readonly?l.createCommentVNode("",!0):(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[t.$slots["remove-button"]?l.renderSlot(t.$slots,"remove-button",{key:0,file:s,index:d,remove:()=>t.removeFile(d),disable:t.disable}):(l.openBlock(),l.createElementBlock("button",{key:1,class:l.normalizeClass(["delete-btn",{"hison-disable":t.disable}]),disabled:t.disable,onClick:B=>t.removeFile(d)},[l.createElementVNode("span",be,l.toDisplayString(t.removeButtonText),1)],10,ye))],64))]))),128))],2)],34),t.readonly?l.createCommentVNode("",!0):(l.openBlock(),l.createElementBlock("div",ge,[l.createVNode(N,{onClick:t.openFileDialog,onFocus:o[4]||(o[4]=s=>t.$emit("focus",t.filesetMethods)),onBlur:o[5]||(o[5]=s=>t.$emit("blur",t.filesetMethods)),id:`hison_fileset_add_button_${t.id}`,disable:t.disable,class:l.normalizeClass([...t.buttonClassList]),tabindex:t.tabIndex??void 0},{default:l.withCtx(()=>[t.$slots["add-button"]?l.renderSlot(t.$slots,"add-button",{key:0,add:t.openFileDialog}):(l.openBlock(),l.createElementBlock("span",pe,l.toDisplayString(t.addButtonText),1))]),_:3},8,["onClick","id","disable","class","tabindex"])])),l.createElementVNode("input",{id:`hison_fileset_${t.id}`,ref:"fileInputRef",type:"file",accept:t.accept||void 0,multiple:t.multiple,hidden:"",onChange:o[6]||(o[6]=(...s)=>t.onFileChange&&t.onFileChange(...s))},null,40,he)],6)],2)}const Ce=re._export_sfc(fe,[["render",we]]);exports.default=Ce;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),n=require("./index-BmKMHsSZ.js"),A=require("./_plugin-vue_export-helper-BHFhmbuH.js"),R={id:{type:String,required:!1},class:{type:[String,Array,Object],required:!1},style:{type:[String,Object,Array],required:!1},visible:{type:Boolean,default:!0},border:{type:Boolean,default:!1},backgroundType:{type:String,default:n.BackgroundType.empty,validator:l=>n.BACKGROUND_TYPE_VALUES.includes(l)},line:{type:String,default:"none",validator:l=>n.H_GAP_RULE_VALUES.includes(l)},lineStyle:{type:String,default:"solid",validator:l=>n.H_GAP_LINE_STYLE_VALUES.includes(l)},lineWidth:{type:[Number,String],default:1},lineColor:{type:String,default:""}},V=t.defineComponent({name:"HGap",props:R,inheritAttrs:!1,emits:["mounted","responsive-change"],setup(l,{emit:y}){const h=t.ref(null),g=t.ref(null),a=l.id?l.id:n.getUUID(),f=`hgap:${a}`,C=n.useDevice(),u=t.ref(l.visible),c=t.ref(l.border??!1),d=t.ref(l.backgroundType??n.BackgroundType.empty),v=t.ref(l.line),i=t.ref(l.lineStyle||"solid"),r=t.ref(l.lineWidth??1),p=t.ref(l.lineColor||""),b=t.computed(()=>{var w,$;const e=String(p.value||"").trim(),o=n.getHexCodeFromColorText(e);if(o)return o;if(e)return e;const k=n.getSpecificClassValueFromClassList(s.value,"color"),B=k?n.getHexCodeFromColorText(k):null;return B||(($=(w=n.hisonCloser)==null?void 0:w.componentStyle)==null?void 0:$.mutedColor)||"#999999"}),S=t.computed(()=>{const e=r.value;return typeof e=="number"?`${e}px`:String(e||"1px")}),z=t.computed(()=>({borderTop:`${S.value} ${i.value} ${b.value}`})),E=t.computed(()=>({borderLeft:`${S.value} ${i.value} ${b.value}`})),H=t.computed(()=>u.value?"":"hison-display-none"),N=t.computed(()=>c.value?"hison-border":""),_=t.computed(()=>{switch(d.value){case n.BackgroundType.empty:return"hison-bg-empty";case n.BackgroundType.transparent:return"hison-bg-transparent";default:return"hison-bg-filled"}}),s=t.ref([]),m=()=>{s.value=n.extractResponsiveClasses(n.toClassString(l.class)||"",C.value),n.addComponentNameToClass(s.value,"size",n.hisonCloser.componentStyle.size),n.addComponentNameToClass(s.value,"color","primary"),n.getIndexSpecificClassNameFromClassList(s.value,"col")===-1&&s.value.push("hison-col-12")},L=()=>{n.hisonCloser.component.gapList[a]&&n.hisonCloser.component.gapList[a].isHisonvueComponent&&console.warn(`[Hisonvue] The gap ID is at risk of being duplicated. ${a}`),n.registerReloadable(f,()=>{T(),t.nextTick(L)}),m(),g.value={isHisonvueComponent:!0,getId:()=>a,getType:()=>"gap",isVisible:()=>u.value,setVisible:e=>{u.value=e},isBorder:()=>c.value,setBorder:e=>{c.value=e},getBackgroundType:()=>d.value,setBackgroundType:e=>{d.value=e},getLine:()=>v.value,setLine:e=>{v.value=e},getLineStyle:()=>i.value,setLineStyle:e=>{i.value=e},getLineWidth:()=>r.value,setLineWidth:e=>{r.value=e},getLineColor:()=>p.value,setLineColor:e=>{p.value=e??""},reload:()=>n.reloadHisonComponent(f)},n.hisonCloser.component.gapList[a]=g.value,y("mounted",g.value)},T=()=>{n.unregisterReloadable(f),delete n.hisonCloser.component.gapList[a]};return t.onMounted(L),t.onBeforeUnmount(T),t.watch(C,e=>{m(),y("responsive-change",e)}),t.watch(()=>l.visible,e=>{const o=!!e;o!==u.value&&(u.value=o)}),t.watch(()=>l.border,e=>{const o=!!e;o!==c.value&&(c.value=o)}),t.watch(()=>l.backgroundType,e=>{e&&e!==d.value&&(d.value=e)}),t.watch(()=>l.line,e=>{(e==="none"||e==="horizontal"||e==="vertical")&&e!==v.value&&(v.value=e)}),t.watch(()=>l.lineStyle,e=>{["solid","dashed","dotted","double","groove","ridge","inset","outset"].includes(e)&&e!==i.value&&(i.value=e)}),t.watch(()=>l.lineWidth,e=>{const o=typeof e=="number"&&Number.isFinite(e)&&e>=0||typeof e=="string"?e:r.value;o!==r.value&&(r.value=o)}),t.watch(()=>l.lineColor,e=>{const o=(e??"").toString();o!==p.value&&(p.value=o)}),t.watch(()=>l.class,()=>{m()}),{gapRef:h,props:l,line:v,visibleClass:H,borderClass:N,backgroundTypeClass:_,responsiveClassList:s,horizontalStyle:z,verticalStyle:E}}});function U(l,y,h,g,a,f){return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["hison-wrapper",...l.responsiveClassList,l.visibleClass])},[t.createElementVNode("div",{ref:"gapRef",class:t.normalizeClass(["hison-gap",l.borderClass,l.backgroundTypeClass]),style:t.normalizeStyle(l.props.style)},[l.line==="horizontal"?(t.openBlock(),t.createElementBlock("div",{key:0,class:"hison-gap-line-horizontal",style:t.normalizeStyle(l.horizontalStyle)},null,4)):l.line==="vertical"?(t.openBlock(),t.createElementBlock("div",{key:1,class:"hison-gap-line-vertical",style:t.normalizeStyle(l.verticalStyle)},null,4)):t.createCommentVNode("",!0)],6)],2)}const x=A._export_sfc(V,[["render",U]]);exports.default=x;
|