fantasia-ui 0.6.7 → 0.6.8

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.
@@ -4346,8 +4346,16 @@
4346
4346
  border-radius: 4px;
4347
4347
  transition: all 0.2s ease;
4348
4348
  }
4349
+ .f-input__prefix {
4350
+ display: flex;
4351
+ align-items: center;
4352
+ padding-left: 12px;
4353
+ color: #94a3b8;
4354
+ font-size: 16px;
4355
+ }
4349
4356
  .f-input__inner {
4350
4357
  flex: 1;
4358
+ min-width: 0;
4351
4359
  padding: 10px 12px;
4352
4360
  background: transparent;
4353
4361
  border: none;
@@ -4358,6 +4366,9 @@
4358
4366
  .f-input__inner::placeholder {
4359
4367
  color: #94a3b8;
4360
4368
  }
4369
+ .f-input__prefix + .f-input__inner {
4370
+ padding-left: 8px;
4371
+ }
4361
4372
  .f-input__suffix {
4362
4373
  display: flex;
4363
4374
  align-items: center;
@@ -4372,6 +4383,27 @@
4372
4383
  .f-input__suffix .icon-btn:hover {
4373
4384
  color: #64748b;
4374
4385
  }
4386
+ .f-input__password {
4387
+ display: none;
4388
+ }
4389
+ .f-input:hover .f-input__password, .f-input.is-focus .f-input__password {
4390
+ display: inline-flex;
4391
+ }
4392
+ .f-input.is-round {
4393
+ border-radius: 999px;
4394
+ }
4395
+ .f-input.is-round .f-input__inner {
4396
+ padding-left: 16px;
4397
+ }
4398
+ .f-input.is-round .f-input__prefix {
4399
+ padding-left: 16px;
4400
+ }
4401
+ .f-input.is-round .f-input__prefix + .f-input__inner {
4402
+ padding-left: 8px;
4403
+ }
4404
+ .f-input.is-round .f-input__suffix {
4405
+ padding-right: 12px;
4406
+ }
4375
4407
  .f-input:hover {
4376
4408
  border-color: #ec4899;
4377
4409
  }
@@ -7946,7 +7978,7 @@ to {
7946
7978
  .fade-enter-from[data-v-3057ceb9],
7947
7979
  .fade-leave-to[data-v-3057ceb9] {
7948
7980
  opacity: 0;
7949
- }.f-input[data-v-e5e139ea] {
7981
+ }.f-input[data-v-1316bd23] {
7950
7982
  position: relative;
7951
7983
  width: 100%;
7952
7984
  display: flex;
@@ -7956,8 +7988,16 @@ to {
7956
7988
  border-radius: 4px;
7957
7989
  transition: all 0.2s ease;
7958
7990
  }
7959
- .f-input__inner[data-v-e5e139ea] {
7991
+ .f-input__prefix[data-v-1316bd23] {
7992
+ display: flex;
7993
+ align-items: center;
7994
+ padding-left: 12px;
7995
+ color: #94a3b8;
7996
+ font-size: 16px;
7997
+ }
7998
+ .f-input__inner[data-v-1316bd23] {
7960
7999
  flex: 1;
8000
+ min-width: 0;
7961
8001
  padding: 10px 12px;
7962
8002
  background: transparent;
7963
8003
  border: none;
@@ -7965,36 +8005,60 @@ to {
7965
8005
  color: #1e293b;
7966
8006
  outline: none;
7967
8007
  }
7968
- .f-input__inner[data-v-e5e139ea]::placeholder {
8008
+ .f-input__inner[data-v-1316bd23]::placeholder {
7969
8009
  color: #94a3b8;
7970
8010
  }
7971
- .f-input__suffix[data-v-e5e139ea] {
8011
+ .f-input__prefix + .f-input__inner[data-v-1316bd23] {
8012
+ padding-left: 8px;
8013
+ }
8014
+ .f-input__suffix[data-v-1316bd23] {
7972
8015
  display: flex;
7973
8016
  align-items: center;
7974
8017
  padding-right: 8px;
7975
8018
  gap: 4px;
7976
8019
  color: #94a3b8;
7977
8020
  }
7978
- .f-input__suffix .icon-btn[data-v-e5e139ea] {
8021
+ .f-input__suffix .icon-btn[data-v-1316bd23] {
7979
8022
  cursor: pointer;
7980
8023
  transition: color 0.2s;
7981
8024
  }
7982
- .f-input__suffix .icon-btn[data-v-e5e139ea]:hover {
8025
+ .f-input__suffix .icon-btn[data-v-1316bd23]:hover {
7983
8026
  color: #64748b;
7984
8027
  }
7985
- .f-input[data-v-e5e139ea]:hover {
8028
+ .f-input__password[data-v-1316bd23] {
8029
+ display: none;
8030
+ }
8031
+ .f-input:hover .f-input__password[data-v-1316bd23], .f-input.is-focus .f-input__password[data-v-1316bd23] {
8032
+ display: inline-flex;
8033
+ }
8034
+ .f-input.is-round[data-v-1316bd23] {
8035
+ border-radius: 999px;
8036
+ }
8037
+ .f-input.is-round .f-input__inner[data-v-1316bd23] {
8038
+ padding-left: 16px;
8039
+ }
8040
+ .f-input.is-round .f-input__prefix[data-v-1316bd23] {
8041
+ padding-left: 16px;
8042
+ }
8043
+ .f-input.is-round .f-input__prefix + .f-input__inner[data-v-1316bd23] {
8044
+ padding-left: 8px;
8045
+ }
8046
+ .f-input.is-round .f-input__suffix[data-v-1316bd23] {
8047
+ padding-right: 12px;
8048
+ }
8049
+ .f-input[data-v-1316bd23]:hover {
7986
8050
  border-color: #ec4899;
7987
8051
  }
7988
- .f-input.is-focus[data-v-e5e139ea] {
8052
+ .f-input.is-focus[data-v-1316bd23] {
7989
8053
  background: #fff;
7990
8054
  border-color: #ec4899;
7991
8055
  box-shadow: 0 0 0 2px rgba(236, 72, 153, 0.2274509804);
7992
8056
  }
7993
- .f-input.is-error[data-v-e5e139ea] {
8057
+ .f-input.is-error[data-v-1316bd23] {
7994
8058
  border-color: #f43f5e;
7995
8059
  background: #fff1f2;
7996
8060
  }
7997
- .f-input.is-error[data-v-e5e139ea]:focus-within {
8061
+ .f-input.is-error[data-v-1316bd23]:focus-within {
7998
8062
  box-shadow: 0 0 0 2px rgba(244, 63, 94, 0.1647058824);
7999
8063
  }.f-textarea[data-v-177d85dc] {
8000
8064
  position: relative;
@@ -13345,37 +13409,37 @@ to {
13345
13409
  .f-color-picker-fade-leave-to[data-v-2cc1dd01] {
13346
13410
  opacity: 0;
13347
13411
  transform: translateY(-4px);
13348
- }[data-v-4df701ef]:root {
13412
+ }[data-v-a6ea44eb]:root {
13349
13413
  --f-empty-image-color: #52525b;
13350
13414
  --f-empty-description-color: #71717a;
13351
13415
  }
13352
- :root.light[data-v-4df701ef] {
13416
+ :root.light[data-v-a6ea44eb] {
13353
13417
  --f-empty-image-color: #d4d4d8;
13354
13418
  --f-empty-description-color: #a1a1aa;
13355
13419
  }
13356
- .f-empty[data-v-4df701ef] {
13420
+ .f-empty[data-v-a6ea44eb] {
13357
13421
  display: flex;
13358
13422
  flex-direction: column;
13359
13423
  align-items: center;
13360
13424
  justify-content: center;
13361
13425
  padding: 32px 0;
13362
13426
  }
13363
- .f-empty__image[data-v-4df701ef] {
13427
+ .f-empty__image[data-v-a6ea44eb] {
13364
13428
  color: var(--f-empty-image-color);
13365
13429
  }
13366
- .f-empty__image-default[data-v-4df701ef], .f-empty__image-img[data-v-4df701ef] {
13430
+ .f-empty__image-default[data-v-a6ea44eb], .f-empty__image-img[data-v-a6ea44eb] {
13367
13431
  width: 100%;
13368
13432
  height: 100%;
13369
13433
  object-fit: contain;
13370
13434
  }
13371
- .f-empty__description[data-v-4df701ef] {
13435
+ .f-empty__description[data-v-a6ea44eb] {
13372
13436
  margin-top: 12px;
13373
13437
  font-size: 13px;
13374
13438
  line-height: 1.5;
13375
13439
  color: var(--f-empty-description-color);
13376
13440
  text-align: center;
13377
13441
  }
13378
- .f-empty__extra[data-v-4df701ef] {
13442
+ .f-empty__extra[data-v-a6ea44eb] {
13379
13443
  margin-top: 16px;
13380
13444
  }[data-v-ac11d4e9]:root {
13381
13445
  --f-slider-track-color: #333338;
@@ -37,8 +37,8 @@ var __async = (__this, __arguments, generator) => {
37
37
  step((generator = generator.apply(__this, __arguments)).next());
38
38
  });
39
39
  };
40
- import { defineComponent, computed, createElementBlock, openBlock, normalizeStyle, unref, renderSlot, normalizeClass, createCommentVNode, Fragment, renderList, createElementVNode, toDisplayString, ref, watch, createVNode, withDirectives, Transition, withCtx, vShow, mergeModels, useModel, inject, createBlock, resolveDynamicComponent, nextTick, onMounted, withModifiers, onBeforeUnmount, onUnmounted, Teleport, createTextVNode, withKeys, isRef, vModelText, TransitionGroup, useSlots, Comment as Comment$1, Text, provide, readonly, reactive, toRefs, createStaticVNode, h, render } from "vue";
41
- import { CloseCircleOutline, EyeOutline, EyeOffOutline, StarOutline, StarHalf, Star, CloseCircle, Close, ChevronDownOutline, CalendarOutline, ChevronBackOutline, ChevronForwardOutline, EllipsisHorizontal, Person, InformationCircleOutline, WarningOutline, AlertCircleOutline, CheckmarkCircleOutline, CloudUpload, CheckmarkCircle, AlertCircle, DocumentOutline, Reload, RemoveOutline, AddOutline, ChevronUpOutline, InformationCircle, RefreshOutline, PauseOutline, PlayOutline, CloseOutline, Warning } from "@vicons/ionicons5";
40
+ import { defineComponent, computed, createElementBlock, openBlock, normalizeStyle, unref, renderSlot, normalizeClass, createCommentVNode, Fragment, renderList, createElementVNode, toDisplayString, ref, watch, createVNode, withDirectives, Transition, withCtx, vShow, mergeModels, useModel, useSlots, inject, createBlock, resolveDynamicComponent, withModifiers, nextTick, onMounted, onBeforeUnmount, onUnmounted, Teleport, createTextVNode, withKeys, isRef, vModelText, TransitionGroup, Comment as Comment$1, Text, provide, readonly, reactive, toRefs, h, render } from "vue";
41
+ import { CloseCircleOutline, EyeOutline, EyeOffOutline, StarOutline, StarHalf, Star, CloseCircle, Close, ChevronDownOutline, CalendarOutline, ChevronBackOutline, ChevronForwardOutline, EllipsisHorizontal, Person, InformationCircleOutline, WarningOutline, AlertCircleOutline, CheckmarkCircleOutline, CloudUpload, CheckmarkCircle, AlertCircle, DocumentOutline, Reload, FileTrayOutline, RemoveOutline, AddOutline, ChevronUpOutline, InformationCircle, RefreshOutline, PauseOutline, PlayOutline, CloseOutline, Warning } from "@vicons/ionicons5";
42
42
  import { useEventListener } from "@vueuse/core";
43
43
  const _sfc_main$Y = /* @__PURE__ */ defineComponent({
44
44
  __name: "FIcon",
@@ -116,7 +116,7 @@ const _hoisted_2$D = {
116
116
  key: 0,
117
117
  class: "f-image__placeholder"
118
118
  };
119
- const _hoisted_3$x = {
119
+ const _hoisted_3$y = {
120
120
  key: 0,
121
121
  class: "f-image__error"
122
122
  };
@@ -149,7 +149,7 @@ const _sfc_main$W = /* @__PURE__ */ defineComponent({
149
149
  }),
150
150
  createVNode(Transition, { name: "fade" }, {
151
151
  default: withCtx(() => [
152
- unref(status) === "error" ? (openBlock(), createElementBlock("div", _hoisted_3$x, [
152
+ unref(status) === "error" ? (openBlock(), createElementBlock("div", _hoisted_3$y, [
153
153
  renderSlot(_ctx.$slots, "error", {}, () => [
154
154
  createVNode(FIcon, { size: "48px" }, {
155
155
  default: withCtx(() => [
@@ -177,15 +177,21 @@ const _sfc_main$W = /* @__PURE__ */ defineComponent({
177
177
  }
178
178
  });
179
179
  const FImage = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__scopeId", "data-v-3057ceb9"]]);
180
- const _hoisted_1$I = ["type", "value", "placeholder"];
181
- const _hoisted_2$C = { class: "f-input__suffix" };
180
+ const _hoisted_1$I = {
181
+ key: 0,
182
+ class: "f-input__prefix"
183
+ };
184
+ const _hoisted_2$C = ["type", "value", "placeholder"];
185
+ const _hoisted_3$x = { class: "f-input__suffix" };
182
186
  const _sfc_main$V = /* @__PURE__ */ defineComponent({
183
187
  __name: "FInput",
184
188
  props: /* @__PURE__ */ mergeModels({
185
189
  type: {},
186
190
  placeholder: {},
187
191
  clearable: { type: Boolean },
188
- showPassword: { type: Boolean }
192
+ showPassword: { type: Boolean },
193
+ round: { type: Boolean },
194
+ prefixIcon: { type: [Object, Function] }
189
195
  }, {
190
196
  "modelValue": { default: "" },
191
197
  "modelModifiers": {}
@@ -194,6 +200,7 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
194
200
  setup(__props) {
195
201
  const modelValue = useModel(__props, "modelValue");
196
202
  const props = __props;
203
+ const slots = useSlots();
197
204
  const formItemContext = inject("FFormItemContext", null);
198
205
  const isPasswordVisible = ref(false);
199
206
  const isFocused = ref(false);
@@ -207,16 +214,15 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
207
214
  }
208
215
  return props.type || "text";
209
216
  });
210
- const showClearIcon = computed(() => {
211
- return props.clearable && modelValue.value && !props.showPassword;
212
- });
217
+ const hasPrefix = computed(() => !!props.prefixIcon || !!slots.prefix);
218
+ const showClearIcon = computed(() => props.clearable && !!modelValue.value);
213
219
  const showPasswordIcon = computed(() => {
214
- return props.showPassword && props.type === "password" && modelValue.value;
220
+ return props.showPassword && props.type === "password" && !!modelValue.value;
215
221
  });
216
222
  const onInput = (e) => {
217
223
  modelValue.value = e.target.value;
218
224
  };
219
- const onBlur = (e) => {
225
+ const onBlur = () => {
220
226
  isFocused.value = false;
221
227
  formItemContext == null ? void 0 : formItemContext.validate();
222
228
  };
@@ -233,9 +239,20 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
233
239
  return openBlock(), createElementBlock("div", {
234
240
  class: normalizeClass(["f-input", {
235
241
  "is-focus": unref(isFocused),
236
- "is-error": unref(hasError)
242
+ "is-error": unref(hasError),
243
+ "is-round": _ctx.round
237
244
  }])
238
245
  }, [
246
+ unref(hasPrefix) ? (openBlock(), createElementBlock("div", _hoisted_1$I, [
247
+ renderSlot(_ctx.$slots, "prefix", {}, () => [
248
+ createVNode(FIcon, null, {
249
+ default: withCtx(() => [
250
+ (openBlock(), createBlock(resolveDynamicComponent(_ctx.prefixIcon)))
251
+ ]),
252
+ _: 1
253
+ })
254
+ ], true)
255
+ ])) : createCommentVNode("", true),
239
256
  createElementVNode("input", {
240
257
  type: unref(inputType),
241
258
  value: modelValue.value,
@@ -244,12 +261,14 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
244
261
  onBlur,
245
262
  onFocus,
246
263
  class: "f-input__inner"
247
- }, null, 40, _hoisted_1$I),
248
- createElementVNode("div", _hoisted_2$C, [
264
+ }, null, 40, _hoisted_2$C),
265
+ createElementVNode("div", _hoisted_3$x, [
249
266
  unref(showClearIcon) ? (openBlock(), createBlock(FIcon, {
250
267
  key: 0,
251
- onClick: clearValue,
252
- class: "icon-btn"
268
+ class: "icon-btn",
269
+ onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {
270
+ }, ["prevent"])),
271
+ onClick: clearValue
253
272
  }, {
254
273
  default: withCtx(() => [
255
274
  (openBlock(), createBlock(resolveDynamicComponent(unref(CloseCircleOutline))))
@@ -258,8 +277,10 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
258
277
  })) : createCommentVNode("", true),
259
278
  unref(showPasswordIcon) ? (openBlock(), createBlock(FIcon, {
260
279
  key: 1,
261
- onClick: togglePassword,
262
- class: "icon-btn"
280
+ class: "icon-btn f-input__password",
281
+ onMousedown: _cache[1] || (_cache[1] = withModifiers(() => {
282
+ }, ["prevent"])),
283
+ onClick: togglePassword
263
284
  }, {
264
285
  default: withCtx(() => [
265
286
  (openBlock(), createBlock(resolveDynamicComponent(unref(isPasswordVisible) ? unref(EyeOutline) : unref(EyeOffOutline))))
@@ -267,12 +288,12 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
267
288
  _: 1
268
289
  })) : createCommentVNode("", true)
269
290
  ]),
270
- _cache[0] || (_cache[0] = createElementVNode("div", { class: "f-input__focus-bg" }, null, -1))
291
+ _cache[2] || (_cache[2] = createElementVNode("div", { class: "f-input__focus-bg" }, null, -1))
271
292
  ], 2);
272
293
  };
273
294
  }
274
295
  });
275
- const FInput = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["__scopeId", "data-v-e5e139ea"]]);
296
+ const FInput = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["__scopeId", "data-v-1316bd23"]]);
276
297
  const _hoisted_1$H = ["value", "placeholder", "disabled", "maxlength"];
277
298
  const _hoisted_2$B = {
278
299
  key: 1,
@@ -1060,7 +1081,7 @@ const _hoisted_3$u = {
1060
1081
  class: "f-select__label is-placeholder"
1061
1082
  };
1062
1083
  const _hoisted_4$j = ["placeholder"];
1063
- const _hoisted_5$g = { class: "f-select__suffix" };
1084
+ const _hoisted_5$f = { class: "f-select__suffix" };
1064
1085
  const _hoisted_6$e = ["data-placement"];
1065
1086
  const _hoisted_7$9 = { class: "f-select-dropdown__content" };
1066
1087
  const _hoisted_8$8 = ["onClick"];
@@ -1369,7 +1390,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
1369
1390
  ], true)
1370
1391
  ], 2))
1371
1392
  ], 64)),
1372
- createElementVNode("div", _hoisted_5$g, [
1393
+ createElementVNode("div", _hoisted_5$f, [
1373
1394
  unref(showClear) ? (openBlock(), createBlock(FIcon, {
1374
1395
  key: 0,
1375
1396
  class: "f-select__clear",
@@ -1496,7 +1517,7 @@ const _hoisted_1$B = { class: "f-date-picker__inner" };
1496
1517
  const _hoisted_2$w = ["value", "placeholder", "disabled"];
1497
1518
  const _hoisted_3$t = { class: "f-date-picker-panel" };
1498
1519
  const _hoisted_4$i = { class: "f-date-picker-panel__header" };
1499
- const _hoisted_5$f = { class: "f-date-picker-panel__body" };
1520
+ const _hoisted_5$e = { class: "f-date-picker-panel__body" };
1500
1521
  const _hoisted_6$d = { key: 0 };
1501
1522
  const _hoisted_7$8 = { class: "week-header" };
1502
1523
  const _hoisted_8$7 = { class: "calendar-grid" };
@@ -1738,7 +1759,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
1738
1759
  })
1739
1760
  ])
1740
1761
  ]),
1741
- createElementVNode("div", _hoisted_5$f, [
1762
+ createElementVNode("div", _hoisted_5$e, [
1742
1763
  unref(panelMode) === "date" ? (openBlock(), createElementBlock("div", _hoisted_6$d, [
1743
1764
  createElementVNode("div", _hoisted_7$8, [
1744
1765
  (openBlock(), createElementBlock(Fragment, null, renderList(weekDays, (day) => {
@@ -1836,7 +1857,7 @@ const _hoisted_3$s = {
1836
1857
  class: "f-pagination__size"
1837
1858
  };
1838
1859
  const _hoisted_4$h = ["value"];
1839
- const _hoisted_5$e = ["value"];
1860
+ const _hoisted_5$d = ["value"];
1840
1861
  const _hoisted_6$c = {
1841
1862
  key: 3,
1842
1863
  class: "f-pagination__list"
@@ -1913,7 +1934,7 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
1913
1934
  return openBlock(), createElementBlock("option", {
1914
1935
  key: s,
1915
1936
  value: s
1916
- }, toDisplayString(s) + " 条/页", 9, _hoisted_5$e);
1937
+ }, toDisplayString(s) + " 条/页", 9, _hoisted_5$d);
1917
1938
  }), 128))
1918
1939
  ], 40, _hoisted_4$h)
1919
1940
  ])) : item === "prev" ? (openBlock(), createElementBlock("button", {
@@ -1993,7 +2014,7 @@ const _hoisted_4$g = {
1993
2014
  key: 2,
1994
2015
  class: "f-card__body"
1995
2016
  };
1996
- const _hoisted_5$d = {
2017
+ const _hoisted_5$c = {
1997
2018
  key: 3,
1998
2019
  class: "f-card__footer"
1999
2020
  };
@@ -2042,7 +2063,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
2042
2063
  _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$g, [
2043
2064
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
2044
2065
  ])) : createCommentVNode("", true),
2045
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_5$d, [
2066
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_5$c, [
2046
2067
  renderSlot(_ctx.$slots, "footer", {}, void 0, true)
2047
2068
  ])) : createCommentVNode("", true)
2048
2069
  ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
@@ -3336,7 +3357,7 @@ const _hoisted_4$d = {
3336
3357
  key: 0,
3337
3358
  class: "f-tree-select__expand"
3338
3359
  };
3339
- const _hoisted_5$c = { class: "f-tree-select__text" };
3360
+ const _hoisted_5$b = { class: "f-tree-select__text" };
3340
3361
  const _sfc_main$p = /* @__PURE__ */ defineComponent({
3341
3362
  __name: "FTreeSelect",
3342
3363
  props: /* @__PURE__ */ mergeModels({
@@ -3429,7 +3450,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
3429
3450
  onClick: ($event) => node.children && node.children.length ? toggleExpand(node.key) : handleSelect(node)
3430
3451
  }, [
3431
3452
  node.children && node.children.length ? (openBlock(), createElementBlock("span", _hoisted_4$d, toDisplayString(unref(expandedKeys).includes(node.key) ? "-" : "+"), 1)) : createCommentVNode("", true),
3432
- createElementVNode("span", _hoisted_5$c, toDisplayString(node.label), 1)
3453
+ createElementVNode("span", _hoisted_5$b, toDisplayString(node.label), 1)
3433
3454
  ], 14, _hoisted_3$k);
3434
3455
  }), 128))
3435
3456
  ])) : createCommentVNode("", true)
@@ -3442,7 +3463,7 @@ const _hoisted_1$k = { class: "f-transfer__panel" };
3442
3463
  const _hoisted_2$j = { class: "f-transfer__header" };
3443
3464
  const _hoisted_3$j = { class: "f-transfer__list" };
3444
3465
  const _hoisted_4$c = ["onClick"];
3445
- const _hoisted_5$b = { class: "f-transfer__actions" };
3466
+ const _hoisted_5$a = { class: "f-transfer__actions" };
3446
3467
  const _hoisted_6$a = ["disabled"];
3447
3468
  const _hoisted_7$5 = ["disabled"];
3448
3469
  const _hoisted_8$4 = { class: "f-transfer__panel" };
@@ -3517,7 +3538,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
3517
3538
  }), 128))
3518
3539
  ])
3519
3540
  ]),
3520
- createElementVNode("div", _hoisted_5$b, [
3541
+ createElementVNode("div", _hoisted_5$a, [
3521
3542
  createElementVNode("button", {
3522
3543
  type: "button",
3523
3544
  class: "f-transfer__btn",
@@ -3594,7 +3615,7 @@ const _hoisted_1$i = { class: "f-editor__toolbar" };
3594
3615
  const _hoisted_2$h = { class: "f-editor__status" };
3595
3616
  const _hoisted_3$h = { class: "f-editor__lines" };
3596
3617
  const _hoisted_4$b = { class: "f-editor__code-wrapper" };
3597
- const _hoisted_5$a = ["innerHTML"];
3618
+ const _hoisted_5$9 = ["innerHTML"];
3598
3619
  const _hoisted_6$9 = ["rows", "readonly", "placeholder"];
3599
3620
  const LINE_HEIGHT_PX = 17.6;
3600
3621
  const PADDING_TOP_PX = 12;
@@ -3824,7 +3845,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
3824
3845
  key: line.lineNo,
3825
3846
  class: "f-editor__line",
3826
3847
  innerHTML: line.html + "\n"
3827
- }, null, 8, _hoisted_5$a);
3848
+ }, null, 8, _hoisted_5$9);
3828
3849
  }), 128))
3829
3850
  ], 512),
3830
3851
  withDirectives(createElementVNode("textarea", {
@@ -3862,7 +3883,7 @@ const _hoisted_4$a = {
3862
3883
  key: 0,
3863
3884
  class: "f-table__th f-table__th--index"
3864
3885
  };
3865
- const _hoisted_5$9 = { class: "f-table__th-inner" };
3886
+ const _hoisted_5$8 = { class: "f-table__th-inner" };
3866
3887
  const _hoisted_6$8 = {
3867
3888
  key: 0,
3868
3889
  class: "f-table__spacer"
@@ -4014,7 +4035,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
4014
4035
  class: normalizeClass(["f-table__th", col.thClass])
4015
4036
  }, [
4016
4037
  renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [
4017
- createElementVNode("div", _hoisted_5$9, [
4038
+ createElementVNode("div", _hoisted_5$8, [
4018
4039
  createElementVNode("span", null, toDisplayString(col.label), 1)
4019
4040
  ])
4020
4041
  ], true)
@@ -4101,7 +4122,7 @@ const _hoisted_1$g = { class: "f-upload" };
4101
4122
  const _hoisted_2$f = ["accept", "multiple"];
4102
4123
  const _hoisted_3$f = { class: "f-upload__zone" };
4103
4124
  const _hoisted_4$9 = { class: "f-upload__hint" };
4104
- const _hoisted_5$8 = {
4125
+ const _hoisted_5$7 = {
4105
4126
  key: 0,
4106
4127
  class: "f-upload__list"
4107
4128
  };
@@ -4249,7 +4270,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
4249
4270
  ])
4250
4271
  ], true)
4251
4272
  ], 34),
4252
- fileList.value.length ? (openBlock(), createElementBlock("div", _hoisted_5$8, [
4273
+ fileList.value.length ? (openBlock(), createElementBlock("div", _hoisted_5$7, [
4253
4274
  (openBlock(true), createElementBlock(Fragment, null, renderList(fileList.value, (item) => {
4254
4275
  return openBlock(), createElementBlock("div", {
4255
4276
  key: item.uid,
@@ -4494,7 +4515,7 @@ const _hoisted_2$c = {
4494
4515
  };
4495
4516
  const _hoisted_3$c = { class: "f-color-picker__sliders" };
4496
4517
  const _hoisted_4$8 = { class: "f-color-picker__slider-group" };
4497
- const _hoisted_5$7 = ["value"];
4518
+ const _hoisted_5$6 = ["value"];
4498
4519
  const _hoisted_6$6 = {
4499
4520
  key: 0,
4500
4521
  class: "f-color-picker__predefine"
@@ -4791,7 +4812,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
4791
4812
  value: toColorString(),
4792
4813
  onChange: handleInputChange,
4793
4814
  onKeydown: _cache[0] || (_cache[0] = withKeys(($event) => $event.target.blur(), ["enter"]))
4794
- }, null, 40, _hoisted_5$7),
4815
+ }, null, 40, _hoisted_5$6),
4795
4816
  _ctx.predefine.length ? (openBlock(), createElementBlock("div", _hoisted_6$6, [
4796
4817
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.predefine, (color) => {
4797
4818
  return openBlock(), createElementBlock("span", {
@@ -4813,22 +4834,18 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
4813
4834
  const FColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-2cc1dd01"]]);
4814
4835
  const _hoisted_1$c = { class: "f-empty" };
4815
4836
  const _hoisted_2$b = ["src"];
4816
- const _hoisted_3$b = {
4817
- key: 1,
4818
- viewBox: "0 0 160 160",
4819
- class: "f-empty__image-default"
4820
- };
4821
- const _hoisted_4$7 = { class: "f-empty__description" };
4822
- const _hoisted_5$6 = {
4837
+ const _hoisted_3$b = { class: "f-empty__description" };
4838
+ const _hoisted_4$7 = {
4823
4839
  key: 0,
4824
4840
  class: "f-empty__extra"
4825
4841
  };
4826
4842
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
4827
4843
  __name: "FEmpty",
4828
4844
  props: {
4829
- description: { default: "鏆傛棤鏁版嵁" },
4845
+ description: { default: "暂无数据" },
4830
4846
  image: { default: "" },
4831
- imageSize: { default: 120 }
4847
+ imageSize: { default: 120 },
4848
+ icon: {}
4832
4849
  },
4833
4850
  setup(__props) {
4834
4851
  return (_ctx, _cache) => {
@@ -4843,24 +4860,30 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
4843
4860
  src: _ctx.image,
4844
4861
  class: "f-empty__image-img",
4845
4862
  alt: ""
4846
- }, null, 8, _hoisted_2$b)) : (openBlock(), createElementBlock("svg", _hoisted_3$b, _cache[0] || (_cache[0] = [
4847
- createStaticVNode('<ellipse cx="80" cy="132" rx="46" ry="8" fill="currentColor" opacity="0.08" data-v-4df701ef></ellipse><path d="M40 60 L120 60 L128 128 L32 128 Z" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round" opacity="0.35" data-v-4df701ef></path><path d="M40 60 L58 32 L102 32 L120 60" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round" opacity="0.35" data-v-4df701ef></path><line x1="32" y1="88" x2="128" y2="88" stroke="currentColor" stroke-width="3" opacity="0.35" data-v-4df701ef></line><path d="M64 88 Q80 106 96 88" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" opacity="0.5" data-v-4df701ef></path>', 5)
4848
- ])))
4863
+ }, null, 8, _hoisted_2$b)) : (openBlock(), createBlock(FIcon, {
4864
+ key: 1,
4865
+ class: "f-empty__image-default"
4866
+ }, {
4867
+ default: withCtx(() => [
4868
+ (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon ? _ctx.icon : unref(FileTrayOutline))))
4869
+ ]),
4870
+ _: 1
4871
+ }))
4849
4872
  ], true)
4850
4873
  ], 4),
4851
- createElementVNode("div", _hoisted_4$7, [
4874
+ createElementVNode("div", _hoisted_3$b, [
4852
4875
  renderSlot(_ctx.$slots, "description", {}, () => [
4853
4876
  createTextVNode(toDisplayString(_ctx.description), 1)
4854
4877
  ], true)
4855
4878
  ]),
4856
- _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_5$6, [
4879
+ _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$7, [
4857
4880
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
4858
4881
  ])) : createCommentVNode("", true)
4859
4882
  ]);
4860
4883
  };
4861
4884
  }
4862
4885
  });
4863
- const FEmpty = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-4df701ef"]]);
4886
+ const FEmpty = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-a6ea44eb"]]);
4864
4887
  const _hoisted_1$b = { class: "f-slider__mark-label" };
4865
4888
  const _hoisted_2$a = ["aria-valuemin", "aria-valuemax", "aria-valuenow", "onMousedown", "onKeydown", "onMouseenter"];
4866
4889
  const _hoisted_3$a = {
@@ -117,7 +117,7 @@ var __async = (__this, __arguments, generator) => {
117
117
  key: 0,
118
118
  class: "f-image__placeholder"
119
119
  };
120
- const _hoisted_3$x = {
120
+ const _hoisted_3$y = {
121
121
  key: 0,
122
122
  class: "f-image__error"
123
123
  };
@@ -150,7 +150,7 @@ var __async = (__this, __arguments, generator) => {
150
150
  }),
151
151
  vue.createVNode(vue.Transition, { name: "fade" }, {
152
152
  default: vue.withCtx(() => [
153
- vue.unref(status) === "error" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$x, [
153
+ vue.unref(status) === "error" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$y, [
154
154
  vue.renderSlot(_ctx.$slots, "error", {}, () => [
155
155
  vue.createVNode(FIcon, { size: "48px" }, {
156
156
  default: vue.withCtx(() => [
@@ -178,15 +178,21 @@ var __async = (__this, __arguments, generator) => {
178
178
  }
179
179
  });
180
180
  const FImage = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["__scopeId", "data-v-3057ceb9"]]);
181
- const _hoisted_1$I = ["type", "value", "placeholder"];
182
- const _hoisted_2$C = { class: "f-input__suffix" };
181
+ const _hoisted_1$I = {
182
+ key: 0,
183
+ class: "f-input__prefix"
184
+ };
185
+ const _hoisted_2$C = ["type", "value", "placeholder"];
186
+ const _hoisted_3$x = { class: "f-input__suffix" };
183
187
  const _sfc_main$V = /* @__PURE__ */ vue.defineComponent({
184
188
  __name: "FInput",
185
189
  props: /* @__PURE__ */ vue.mergeModels({
186
190
  type: {},
187
191
  placeholder: {},
188
192
  clearable: { type: Boolean },
189
- showPassword: { type: Boolean }
193
+ showPassword: { type: Boolean },
194
+ round: { type: Boolean },
195
+ prefixIcon: { type: [Object, Function] }
190
196
  }, {
191
197
  "modelValue": { default: "" },
192
198
  "modelModifiers": {}
@@ -195,6 +201,7 @@ var __async = (__this, __arguments, generator) => {
195
201
  setup(__props) {
196
202
  const modelValue = vue.useModel(__props, "modelValue");
197
203
  const props = __props;
204
+ const slots = vue.useSlots();
198
205
  const formItemContext = vue.inject("FFormItemContext", null);
199
206
  const isPasswordVisible = vue.ref(false);
200
207
  const isFocused = vue.ref(false);
@@ -208,16 +215,15 @@ var __async = (__this, __arguments, generator) => {
208
215
  }
209
216
  return props.type || "text";
210
217
  });
211
- const showClearIcon = vue.computed(() => {
212
- return props.clearable && modelValue.value && !props.showPassword;
213
- });
218
+ const hasPrefix = vue.computed(() => !!props.prefixIcon || !!slots.prefix);
219
+ const showClearIcon = vue.computed(() => props.clearable && !!modelValue.value);
214
220
  const showPasswordIcon = vue.computed(() => {
215
- return props.showPassword && props.type === "password" && modelValue.value;
221
+ return props.showPassword && props.type === "password" && !!modelValue.value;
216
222
  });
217
223
  const onInput = (e) => {
218
224
  modelValue.value = e.target.value;
219
225
  };
220
- const onBlur = (e) => {
226
+ const onBlur = () => {
221
227
  isFocused.value = false;
222
228
  formItemContext == null ? void 0 : formItemContext.validate();
223
229
  };
@@ -234,9 +240,20 @@ var __async = (__this, __arguments, generator) => {
234
240
  return vue.openBlock(), vue.createElementBlock("div", {
235
241
  class: vue.normalizeClass(["f-input", {
236
242
  "is-focus": vue.unref(isFocused),
237
- "is-error": vue.unref(hasError)
243
+ "is-error": vue.unref(hasError),
244
+ "is-round": _ctx.round
238
245
  }])
239
246
  }, [
247
+ vue.unref(hasPrefix) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$I, [
248
+ vue.renderSlot(_ctx.$slots, "prefix", {}, () => [
249
+ vue.createVNode(FIcon, null, {
250
+ default: vue.withCtx(() => [
251
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.prefixIcon)))
252
+ ]),
253
+ _: 1
254
+ })
255
+ ], true)
256
+ ])) : vue.createCommentVNode("", true),
240
257
  vue.createElementVNode("input", {
241
258
  type: vue.unref(inputType),
242
259
  value: modelValue.value,
@@ -245,12 +262,14 @@ var __async = (__this, __arguments, generator) => {
245
262
  onBlur,
246
263
  onFocus,
247
264
  class: "f-input__inner"
248
- }, null, 40, _hoisted_1$I),
249
- vue.createElementVNode("div", _hoisted_2$C, [
265
+ }, null, 40, _hoisted_2$C),
266
+ vue.createElementVNode("div", _hoisted_3$x, [
250
267
  vue.unref(showClearIcon) ? (vue.openBlock(), vue.createBlock(FIcon, {
251
268
  key: 0,
252
- onClick: clearValue,
253
- class: "icon-btn"
269
+ class: "icon-btn",
270
+ onMousedown: _cache[0] || (_cache[0] = vue.withModifiers(() => {
271
+ }, ["prevent"])),
272
+ onClick: clearValue
254
273
  }, {
255
274
  default: vue.withCtx(() => [
256
275
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(ionicons5.CloseCircleOutline))))
@@ -259,8 +278,10 @@ var __async = (__this, __arguments, generator) => {
259
278
  })) : vue.createCommentVNode("", true),
260
279
  vue.unref(showPasswordIcon) ? (vue.openBlock(), vue.createBlock(FIcon, {
261
280
  key: 1,
262
- onClick: togglePassword,
263
- class: "icon-btn"
281
+ class: "icon-btn f-input__password",
282
+ onMousedown: _cache[1] || (_cache[1] = vue.withModifiers(() => {
283
+ }, ["prevent"])),
284
+ onClick: togglePassword
264
285
  }, {
265
286
  default: vue.withCtx(() => [
266
287
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(isPasswordVisible) ? vue.unref(ionicons5.EyeOutline) : vue.unref(ionicons5.EyeOffOutline))))
@@ -268,12 +289,12 @@ var __async = (__this, __arguments, generator) => {
268
289
  _: 1
269
290
  })) : vue.createCommentVNode("", true)
270
291
  ]),
271
- _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "f-input__focus-bg" }, null, -1))
292
+ _cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "f-input__focus-bg" }, null, -1))
272
293
  ], 2);
273
294
  };
274
295
  }
275
296
  });
276
- const FInput = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["__scopeId", "data-v-e5e139ea"]]);
297
+ const FInput = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["__scopeId", "data-v-1316bd23"]]);
277
298
  const _hoisted_1$H = ["value", "placeholder", "disabled", "maxlength"];
278
299
  const _hoisted_2$B = {
279
300
  key: 1,
@@ -1061,7 +1082,7 @@ var __async = (__this, __arguments, generator) => {
1061
1082
  class: "f-select__label is-placeholder"
1062
1083
  };
1063
1084
  const _hoisted_4$j = ["placeholder"];
1064
- const _hoisted_5$g = { class: "f-select__suffix" };
1085
+ const _hoisted_5$f = { class: "f-select__suffix" };
1065
1086
  const _hoisted_6$e = ["data-placement"];
1066
1087
  const _hoisted_7$9 = { class: "f-select-dropdown__content" };
1067
1088
  const _hoisted_8$8 = ["onClick"];
@@ -1370,7 +1391,7 @@ var __async = (__this, __arguments, generator) => {
1370
1391
  ], true)
1371
1392
  ], 2))
1372
1393
  ], 64)),
1373
- vue.createElementVNode("div", _hoisted_5$g, [
1394
+ vue.createElementVNode("div", _hoisted_5$f, [
1374
1395
  vue.unref(showClear) ? (vue.openBlock(), vue.createBlock(FIcon, {
1375
1396
  key: 0,
1376
1397
  class: "f-select__clear",
@@ -1497,7 +1518,7 @@ var __async = (__this, __arguments, generator) => {
1497
1518
  const _hoisted_2$w = ["value", "placeholder", "disabled"];
1498
1519
  const _hoisted_3$t = { class: "f-date-picker-panel" };
1499
1520
  const _hoisted_4$i = { class: "f-date-picker-panel__header" };
1500
- const _hoisted_5$f = { class: "f-date-picker-panel__body" };
1521
+ const _hoisted_5$e = { class: "f-date-picker-panel__body" };
1501
1522
  const _hoisted_6$d = { key: 0 };
1502
1523
  const _hoisted_7$8 = { class: "week-header" };
1503
1524
  const _hoisted_8$7 = { class: "calendar-grid" };
@@ -1739,7 +1760,7 @@ var __async = (__this, __arguments, generator) => {
1739
1760
  })
1740
1761
  ])
1741
1762
  ]),
1742
- vue.createElementVNode("div", _hoisted_5$f, [
1763
+ vue.createElementVNode("div", _hoisted_5$e, [
1743
1764
  vue.unref(panelMode) === "date" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$d, [
1744
1765
  vue.createElementVNode("div", _hoisted_7$8, [
1745
1766
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(weekDays, (day) => {
@@ -1837,7 +1858,7 @@ var __async = (__this, __arguments, generator) => {
1837
1858
  class: "f-pagination__size"
1838
1859
  };
1839
1860
  const _hoisted_4$h = ["value"];
1840
- const _hoisted_5$e = ["value"];
1861
+ const _hoisted_5$d = ["value"];
1841
1862
  const _hoisted_6$c = {
1842
1863
  key: 3,
1843
1864
  class: "f-pagination__list"
@@ -1914,7 +1935,7 @@ var __async = (__this, __arguments, generator) => {
1914
1935
  return vue.openBlock(), vue.createElementBlock("option", {
1915
1936
  key: s,
1916
1937
  value: s
1917
- }, vue.toDisplayString(s) + " 条/页", 9, _hoisted_5$e);
1938
+ }, vue.toDisplayString(s) + " 条/页", 9, _hoisted_5$d);
1918
1939
  }), 128))
1919
1940
  ], 40, _hoisted_4$h)
1920
1941
  ])) : item === "prev" ? (vue.openBlock(), vue.createElementBlock("button", {
@@ -1994,7 +2015,7 @@ var __async = (__this, __arguments, generator) => {
1994
2015
  key: 2,
1995
2016
  class: "f-card__body"
1996
2017
  };
1997
- const _hoisted_5$d = {
2018
+ const _hoisted_5$c = {
1998
2019
  key: 3,
1999
2020
  class: "f-card__footer"
2000
2021
  };
@@ -2043,7 +2064,7 @@ var __async = (__this, __arguments, generator) => {
2043
2064
  _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$g, [
2044
2065
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2045
2066
  ])) : vue.createCommentVNode("", true),
2046
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$d, [
2067
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$c, [
2047
2068
  vue.renderSlot(_ctx.$slots, "footer", {}, void 0, true)
2048
2069
  ])) : vue.createCommentVNode("", true)
2049
2070
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
@@ -3337,7 +3358,7 @@ var __async = (__this, __arguments, generator) => {
3337
3358
  key: 0,
3338
3359
  class: "f-tree-select__expand"
3339
3360
  };
3340
- const _hoisted_5$c = { class: "f-tree-select__text" };
3361
+ const _hoisted_5$b = { class: "f-tree-select__text" };
3341
3362
  const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
3342
3363
  __name: "FTreeSelect",
3343
3364
  props: /* @__PURE__ */ vue.mergeModels({
@@ -3430,7 +3451,7 @@ var __async = (__this, __arguments, generator) => {
3430
3451
  onClick: ($event) => node.children && node.children.length ? toggleExpand(node.key) : handleSelect(node)
3431
3452
  }, [
3432
3453
  node.children && node.children.length ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$d, vue.toDisplayString(vue.unref(expandedKeys).includes(node.key) ? "-" : "+"), 1)) : vue.createCommentVNode("", true),
3433
- vue.createElementVNode("span", _hoisted_5$c, vue.toDisplayString(node.label), 1)
3454
+ vue.createElementVNode("span", _hoisted_5$b, vue.toDisplayString(node.label), 1)
3434
3455
  ], 14, _hoisted_3$k);
3435
3456
  }), 128))
3436
3457
  ])) : vue.createCommentVNode("", true)
@@ -3443,7 +3464,7 @@ var __async = (__this, __arguments, generator) => {
3443
3464
  const _hoisted_2$j = { class: "f-transfer__header" };
3444
3465
  const _hoisted_3$j = { class: "f-transfer__list" };
3445
3466
  const _hoisted_4$c = ["onClick"];
3446
- const _hoisted_5$b = { class: "f-transfer__actions" };
3467
+ const _hoisted_5$a = { class: "f-transfer__actions" };
3447
3468
  const _hoisted_6$a = ["disabled"];
3448
3469
  const _hoisted_7$5 = ["disabled"];
3449
3470
  const _hoisted_8$4 = { class: "f-transfer__panel" };
@@ -3518,7 +3539,7 @@ var __async = (__this, __arguments, generator) => {
3518
3539
  }), 128))
3519
3540
  ])
3520
3541
  ]),
3521
- vue.createElementVNode("div", _hoisted_5$b, [
3542
+ vue.createElementVNode("div", _hoisted_5$a, [
3522
3543
  vue.createElementVNode("button", {
3523
3544
  type: "button",
3524
3545
  class: "f-transfer__btn",
@@ -3595,7 +3616,7 @@ var __async = (__this, __arguments, generator) => {
3595
3616
  const _hoisted_2$h = { class: "f-editor__status" };
3596
3617
  const _hoisted_3$h = { class: "f-editor__lines" };
3597
3618
  const _hoisted_4$b = { class: "f-editor__code-wrapper" };
3598
- const _hoisted_5$a = ["innerHTML"];
3619
+ const _hoisted_5$9 = ["innerHTML"];
3599
3620
  const _hoisted_6$9 = ["rows", "readonly", "placeholder"];
3600
3621
  const LINE_HEIGHT_PX = 17.6;
3601
3622
  const PADDING_TOP_PX = 12;
@@ -3825,7 +3846,7 @@ var __async = (__this, __arguments, generator) => {
3825
3846
  key: line.lineNo,
3826
3847
  class: "f-editor__line",
3827
3848
  innerHTML: line.html + "\n"
3828
- }, null, 8, _hoisted_5$a);
3849
+ }, null, 8, _hoisted_5$9);
3829
3850
  }), 128))
3830
3851
  ], 512),
3831
3852
  vue.withDirectives(vue.createElementVNode("textarea", {
@@ -3863,7 +3884,7 @@ var __async = (__this, __arguments, generator) => {
3863
3884
  key: 0,
3864
3885
  class: "f-table__th f-table__th--index"
3865
3886
  };
3866
- const _hoisted_5$9 = { class: "f-table__th-inner" };
3887
+ const _hoisted_5$8 = { class: "f-table__th-inner" };
3867
3888
  const _hoisted_6$8 = {
3868
3889
  key: 0,
3869
3890
  class: "f-table__spacer"
@@ -4015,7 +4036,7 @@ var __async = (__this, __arguments, generator) => {
4015
4036
  class: vue.normalizeClass(["f-table__th", col.thClass])
4016
4037
  }, [
4017
4038
  vue.renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [
4018
- vue.createElementVNode("div", _hoisted_5$9, [
4039
+ vue.createElementVNode("div", _hoisted_5$8, [
4019
4040
  vue.createElementVNode("span", null, vue.toDisplayString(col.label), 1)
4020
4041
  ])
4021
4042
  ], true)
@@ -4102,7 +4123,7 @@ var __async = (__this, __arguments, generator) => {
4102
4123
  const _hoisted_2$f = ["accept", "multiple"];
4103
4124
  const _hoisted_3$f = { class: "f-upload__zone" };
4104
4125
  const _hoisted_4$9 = { class: "f-upload__hint" };
4105
- const _hoisted_5$8 = {
4126
+ const _hoisted_5$7 = {
4106
4127
  key: 0,
4107
4128
  class: "f-upload__list"
4108
4129
  };
@@ -4250,7 +4271,7 @@ var __async = (__this, __arguments, generator) => {
4250
4271
  ])
4251
4272
  ], true)
4252
4273
  ], 34),
4253
- fileList.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$8, [
4274
+ fileList.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$7, [
4254
4275
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(fileList.value, (item) => {
4255
4276
  return vue.openBlock(), vue.createElementBlock("div", {
4256
4277
  key: item.uid,
@@ -4495,7 +4516,7 @@ var __async = (__this, __arguments, generator) => {
4495
4516
  };
4496
4517
  const _hoisted_3$c = { class: "f-color-picker__sliders" };
4497
4518
  const _hoisted_4$8 = { class: "f-color-picker__slider-group" };
4498
- const _hoisted_5$7 = ["value"];
4519
+ const _hoisted_5$6 = ["value"];
4499
4520
  const _hoisted_6$6 = {
4500
4521
  key: 0,
4501
4522
  class: "f-color-picker__predefine"
@@ -4792,7 +4813,7 @@ var __async = (__this, __arguments, generator) => {
4792
4813
  value: toColorString(),
4793
4814
  onChange: handleInputChange,
4794
4815
  onKeydown: _cache[0] || (_cache[0] = vue.withKeys(($event) => $event.target.blur(), ["enter"]))
4795
- }, null, 40, _hoisted_5$7),
4816
+ }, null, 40, _hoisted_5$6),
4796
4817
  _ctx.predefine.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$6, [
4797
4818
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.predefine, (color) => {
4798
4819
  return vue.openBlock(), vue.createElementBlock("span", {
@@ -4814,22 +4835,18 @@ var __async = (__this, __arguments, generator) => {
4814
4835
  const FColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-2cc1dd01"]]);
4815
4836
  const _hoisted_1$c = { class: "f-empty" };
4816
4837
  const _hoisted_2$b = ["src"];
4817
- const _hoisted_3$b = {
4818
- key: 1,
4819
- viewBox: "0 0 160 160",
4820
- class: "f-empty__image-default"
4821
- };
4822
- const _hoisted_4$7 = { class: "f-empty__description" };
4823
- const _hoisted_5$6 = {
4838
+ const _hoisted_3$b = { class: "f-empty__description" };
4839
+ const _hoisted_4$7 = {
4824
4840
  key: 0,
4825
4841
  class: "f-empty__extra"
4826
4842
  };
4827
4843
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
4828
4844
  __name: "FEmpty",
4829
4845
  props: {
4830
- description: { default: "鏆傛棤鏁版嵁" },
4846
+ description: { default: "暂无数据" },
4831
4847
  image: { default: "" },
4832
- imageSize: { default: 120 }
4848
+ imageSize: { default: 120 },
4849
+ icon: {}
4833
4850
  },
4834
4851
  setup(__props) {
4835
4852
  return (_ctx, _cache) => {
@@ -4844,24 +4861,30 @@ var __async = (__this, __arguments, generator) => {
4844
4861
  src: _ctx.image,
4845
4862
  class: "f-empty__image-img",
4846
4863
  alt: ""
4847
- }, null, 8, _hoisted_2$b)) : (vue.openBlock(), vue.createElementBlock("svg", _hoisted_3$b, _cache[0] || (_cache[0] = [
4848
- vue.createStaticVNode('<ellipse cx="80" cy="132" rx="46" ry="8" fill="currentColor" opacity="0.08" data-v-4df701ef></ellipse><path d="M40 60 L120 60 L128 128 L32 128 Z" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round" opacity="0.35" data-v-4df701ef></path><path d="M40 60 L58 32 L102 32 L120 60" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round" opacity="0.35" data-v-4df701ef></path><line x1="32" y1="88" x2="128" y2="88" stroke="currentColor" stroke-width="3" opacity="0.35" data-v-4df701ef></line><path d="M64 88 Q80 106 96 88" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" opacity="0.5" data-v-4df701ef></path>', 5)
4849
- ])))
4864
+ }, null, 8, _hoisted_2$b)) : (vue.openBlock(), vue.createBlock(FIcon, {
4865
+ key: 1,
4866
+ class: "f-empty__image-default"
4867
+ }, {
4868
+ default: vue.withCtx(() => [
4869
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon ? _ctx.icon : vue.unref(ionicons5.FileTrayOutline))))
4870
+ ]),
4871
+ _: 1
4872
+ }))
4850
4873
  ], true)
4851
4874
  ], 4),
4852
- vue.createElementVNode("div", _hoisted_4$7, [
4875
+ vue.createElementVNode("div", _hoisted_3$b, [
4853
4876
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
4854
4877
  vue.createTextVNode(vue.toDisplayString(_ctx.description), 1)
4855
4878
  ], true)
4856
4879
  ]),
4857
- _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$6, [
4880
+ _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$7, [
4858
4881
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
4859
4882
  ])) : vue.createCommentVNode("", true)
4860
4883
  ]);
4861
4884
  };
4862
4885
  }
4863
4886
  });
4864
- const FEmpty = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-4df701ef"]]);
4887
+ const FEmpty = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-a6ea44eb"]]);
4865
4888
  const _hoisted_1$b = { class: "f-slider__mark-label" };
4866
4889
  const _hoisted_2$a = ["aria-valuemin", "aria-valuemax", "aria-valuenow", "onMousedown", "onKeydown", "onMouseenter"];
4867
4890
  const _hoisted_3$a = {
@@ -12,11 +12,11 @@ type __VLS_Slots = {} & {
12
12
  default?: (props: typeof __VLS_4) => any;
13
13
  };
14
14
  declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
- "update:modelValue": (value: string | number | (string | number)[]) => any;
16
15
  add: () => any;
16
+ "update:modelValue": (value: string | number | (string | number)[]) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
- "onUpdate:modelValue"?: (value: string | number | (string | number)[]) => any;
19
18
  onAdd?: () => any;
19
+ "onUpdate:modelValue"?: (value: string | number | (string | number)[]) => any;
20
20
  }>, {
21
21
  accordion: boolean;
22
22
  showAddButton: boolean;
@@ -1,11 +1,11 @@
1
1
  import type { FEmptyProps } from '../../types';
2
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
2
+ declare var __VLS_1: {}, __VLS_10: {}, __VLS_12: {};
3
3
  type __VLS_Slots = {} & {
4
4
  image?: (props: typeof __VLS_1) => any;
5
5
  } & {
6
- description?: (props: typeof __VLS_3) => any;
6
+ description?: (props: typeof __VLS_10) => any;
7
7
  } & {
8
- default?: (props: typeof __VLS_5) => any;
8
+ default?: (props: typeof __VLS_12) => any;
9
9
  };
10
10
  declare const __VLS_component: import("vue").DefineComponent<FEmptyProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FEmptyProps> & Readonly<{}>, {
11
11
  image: string;
@@ -3,9 +3,19 @@ type __VLS_Props = FInputProps;
3
3
  type __VLS_PublicProps = __VLS_Props & {
4
4
  modelValue?: string;
5
5
  };
6
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
+ declare var __VLS_1: {};
7
+ type __VLS_Slots = {} & {
8
+ prefix?: (props: typeof __VLS_1) => any;
9
+ };
10
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
11
  "update:modelValue": (value: string) => any;
8
12
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
9
13
  "onUpdate:modelValue"?: (value: string) => any;
10
14
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
15
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
11
16
  export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -26,14 +26,14 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
26
26
  } & {
27
27
  select: (key: SelectKey, option: FDropdownOption) => any;
28
28
  clear: () => any;
29
- change: (value: SelectKey | SelectKey[], option: FDropdownOption | FDropdownOption[]) => any;
30
29
  add: (option: FDropdownOption) => any;
30
+ change: (value: SelectKey | SelectKey[], option: FDropdownOption | FDropdownOption[]) => any;
31
31
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
32
32
  onSelect?: (key: SelectKey, option: FDropdownOption) => any;
33
- "onUpdate:modelValue"?: (value: SelectKey | SelectKey[]) => any;
34
33
  onClear?: () => any;
35
- onChange?: (value: SelectKey | SelectKey[], option: FDropdownOption | FDropdownOption[]) => any;
36
34
  onAdd?: (option: FDropdownOption) => any;
35
+ "onUpdate:modelValue"?: (value: SelectKey | SelectKey[]) => any;
36
+ onChange?: (value: SelectKey | SelectKey[], option: FDropdownOption | FDropdownOption[]) => any;
37
37
  }>, {
38
38
  disabled: boolean;
39
39
  size: "small" | "medium" | "large";
@@ -4,11 +4,11 @@ type __VLS_PublicProps = __VLS_Props & {
4
4
  modelValue?: string;
5
5
  };
6
6
  declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
- "update:modelValue": (value: string) => any;
8
7
  clear: () => any;
8
+ "update:modelValue": (value: string) => any;
9
9
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
- "onUpdate:modelValue"?: (value: string) => any;
11
10
  onClear?: () => any;
11
+ "onUpdate:modelValue"?: (value: string) => any;
12
12
  }>, {
13
13
  disabled: boolean;
14
14
  clearable: boolean;
@@ -1,3 +1,4 @@
1
+ import type { Component } from "vue";
1
2
  interface FEmptyProps {
2
3
  /** 描述文案 */
3
4
  description?: string;
@@ -5,5 +6,7 @@ interface FEmptyProps {
5
6
  image?: string;
6
7
  /** 图片尺寸,单位 px */
7
8
  imageSize?: number;
9
+ /** 图表 */
10
+ icon?: Component;
8
11
  }
9
12
  export type { FEmptyProps };
@@ -1,3 +1,4 @@
1
+ import type { Component } from "vue";
1
2
  interface FInputProps {
2
3
  /** 输入框类型 */
3
4
  type?: string;
@@ -7,5 +8,7 @@ interface FInputProps {
7
8
  clearable?: boolean;
8
9
  /** 是否显示密码切换按钮 */
9
10
  showPassword?: boolean;
11
+ round?: boolean;
12
+ prefixIcon?: Component;
10
13
  }
11
14
  export type { FInputProps };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fantasia-ui",
3
3
  "private": false,
4
- "version": "0.6.7",
4
+ "version": "0.6.8",
5
5
  "type": "module",
6
6
  "main": "dist/fantasia-ui.umd.js",
7
7
  "module": "dist/fantasia-ui.es.js",