fantasia-ui 0.2.39 → 0.2.43

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.
Files changed (116) hide show
  1. package/README.en.md +8 -356
  2. package/README.md +10 -358
  3. package/dist/fantasia-ui.css +534 -205
  4. package/dist/fantasia-ui.es.js +2945 -524
  5. package/dist/fantasia-ui.umd.js +2923 -502
  6. package/dist/types/{components → packages/components}/index.d.ts +4 -3
  7. package/dist/types/{components → packages/components}/modules/FButton.vue.d.ts +3 -3
  8. package/dist/types/packages/components/modules/FDialog.vue.d.ts +46 -0
  9. package/dist/types/{components → packages/components}/modules/FDropdown.vue.d.ts +5 -0
  10. package/dist/types/packages/components/modules/FInput.vue.d.ts +11 -0
  11. package/dist/types/{components → packages/components}/modules/FInputNumber.vue.d.ts +0 -1
  12. package/dist/types/{components/modules/FDialog.vue.d.ts → packages/components/modules/FMask.vue.d.ts} +2 -2
  13. package/dist/types/{components → packages/components}/modules/FSelect.vue.d.ts +3 -0
  14. package/dist/types/packages/composables/FDialog.d.ts +3 -0
  15. package/dist/types/{types → packages/types}/components/index.d.ts +3 -1
  16. package/dist/types/{types → packages/types}/components/modules/base.d.ts +1 -1
  17. package/dist/types/{types → packages/types}/components/modules/f-button.d.ts +3 -1
  18. package/dist/types/packages/types/components/modules/f-dialog.d.ts +69 -0
  19. package/dist/types/{types → packages/types}/components/modules/f-dropdown.d.ts +1 -0
  20. package/dist/types/{types → packages/types}/components/modules/f-input-number.d.ts +0 -1
  21. package/dist/types/{types → packages/types}/components/modules/f-input.d.ts +3 -5
  22. package/dist/types/{types/components/modules/f-dialog.d.ts → packages/types/components/modules/f-mask.d.ts} +2 -2
  23. package/dist/types/packages/types/components/modules/f-select.d.ts +7 -0
  24. package/package.json +1 -1
  25. package/dist/types/components/modules/FInput.vue.d.ts +0 -27
  26. package/dist/types/{assets → packages/assets}/index.d.ts +0 -0
  27. package/dist/types/{components → packages/components}/modules/FAffix.vue.d.ts +0 -0
  28. package/dist/types/{components → packages/components}/modules/FAlert.vue.d.ts +0 -0
  29. package/dist/types/{components → packages/components}/modules/FAvatar.vue.d.ts +0 -0
  30. package/dist/types/{components → packages/components}/modules/FBadge.vue.d.ts +0 -0
  31. package/dist/types/{components → packages/components}/modules/FBreadcrumb.vue.d.ts +0 -0
  32. package/dist/types/{components → packages/components}/modules/FButtonGroup.vue.d.ts +0 -0
  33. package/dist/types/{components → packages/components}/modules/FCard.vue.d.ts +0 -0
  34. package/dist/types/{components → packages/components}/modules/FCheckbox.vue.d.ts +0 -0
  35. package/dist/types/{components → packages/components}/modules/FCol.vue.d.ts +0 -0
  36. package/dist/types/{components → packages/components}/modules/FCollapse.vue.d.ts +0 -0
  37. package/dist/types/{components → packages/components}/modules/FCollapseItem.vue.d.ts +0 -0
  38. package/dist/types/{components → packages/components}/modules/FColorPicker.vue.d.ts +0 -0
  39. package/dist/types/{components → packages/components}/modules/FContainer.vue.d.ts +0 -0
  40. package/dist/types/{components → packages/components}/modules/FDivider.vue.d.ts +0 -0
  41. package/dist/types/{components → packages/components}/modules/FEditor.vue.d.ts +2 -2
  42. package/dist/types/{components → packages/components}/modules/FEmpty.vue.d.ts +0 -0
  43. package/dist/types/{components → packages/components}/modules/FForm.vue.d.ts +0 -0
  44. package/dist/types/{components → packages/components}/modules/FFormItem.vue.d.ts +0 -0
  45. package/dist/types/{components → packages/components}/modules/FIcon.vue.d.ts +0 -0
  46. package/dist/types/{components → packages/components}/modules/FImage.vue.d.ts +0 -0
  47. package/dist/types/{components → packages/components}/modules/FLink.vue.d.ts +0 -0
  48. package/dist/types/{components → packages/components}/modules/FLoading.vue.d.ts +0 -0
  49. package/dist/types/{components → packages/components}/modules/FMessage.vue.d.ts +0 -0
  50. package/dist/types/{components → packages/components}/modules/FNotification.vue.d.ts +0 -0
  51. package/dist/types/{components → packages/components}/modules/FPagination.vue.d.ts +0 -0
  52. package/dist/types/{components → packages/components}/modules/FProgress.vue.d.ts +0 -0
  53. package/dist/types/{components → packages/components}/modules/FRate.vue.d.ts +2 -2
  54. /package/dist/types/{components → packages/components}/modules/FResult.vue.d.ts +0 -0
  55. /package/dist/types/{components → packages/components}/modules/FRow.vue.d.ts +0 -0
  56. /package/dist/types/{components → packages/components}/modules/FScrollbar.vue.d.ts +0 -0
  57. /package/dist/types/{components → packages/components}/modules/FSlider.vue.d.ts +0 -0
  58. /package/dist/types/{components → packages/components}/modules/FSpace.vue.d.ts +0 -0
  59. /package/dist/types/{components → packages/components}/modules/FTable.vue.d.ts +0 -0
  60. /package/dist/types/{components → packages/components}/modules/FTabs.vue.d.ts +0 -0
  61. /package/dist/types/{components → packages/components}/modules/FTag.vue.d.ts +0 -0
  62. /package/dist/types/{components → packages/components}/modules/FText.vue.d.ts +0 -0
  63. /package/dist/types/{components → packages/components}/modules/FTooltip.vue.d.ts +0 -0
  64. /package/dist/types/{components → packages/components}/modules/FTypography.vue.d.ts +0 -0
  65. /package/dist/types/{components → packages/components}/modules/FUpload.vue.d.ts +0 -0
  66. /package/dist/types/{components/modules → packages/composables}/FMessage.d.ts +0 -0
  67. /package/dist/types/{components/modules → packages/composables}/FNotification.d.ts +0 -0
  68. /package/dist/types/{index.d.ts → packages/index.d.ts} +0 -0
  69. /package/dist/types/{types → packages/types}/components/modules/f-affix.d.ts +0 -0
  70. /package/dist/types/{types → packages/types}/components/modules/f-alert.d.ts +0 -0
  71. /package/dist/types/{types → packages/types}/components/modules/f-avatar.d.ts +0 -0
  72. /package/dist/types/{types → packages/types}/components/modules/f-badge.d.ts +0 -0
  73. /package/dist/types/{types → packages/types}/components/modules/f-breadcrumb.d.ts +0 -0
  74. /package/dist/types/{types → packages/types}/components/modules/f-button-group.d.ts +0 -0
  75. /package/dist/types/{types → packages/types}/components/modules/f-card.d.ts +0 -0
  76. /package/dist/types/{types → packages/types}/components/modules/f-checkbox.d.ts +0 -0
  77. /package/dist/types/{types → packages/types}/components/modules/f-col.d.ts +0 -0
  78. /package/dist/types/{types → packages/types}/components/modules/f-collapse-item.d.ts +0 -0
  79. /package/dist/types/{types → packages/types}/components/modules/f-collapse.d.ts +0 -0
  80. /package/dist/types/{types → packages/types}/components/modules/f-color-picker.d.ts +0 -0
  81. /package/dist/types/{types → packages/types}/components/modules/f-container.d.ts +0 -0
  82. /package/dist/types/{types → packages/types}/components/modules/f-divider.d.ts +0 -0
  83. /package/dist/types/{types → packages/types}/components/modules/f-editor.d.ts +0 -0
  84. /package/dist/types/{types → packages/types}/components/modules/f-empty.d.ts +0 -0
  85. /package/dist/types/{types → packages/types}/components/modules/f-form-item.d.ts +0 -0
  86. /package/dist/types/{types → packages/types}/components/modules/f-form.d.ts +0 -0
  87. /package/dist/types/{types → packages/types}/components/modules/f-icon.d.ts +0 -0
  88. /package/dist/types/{types → packages/types}/components/modules/f-image.d.ts +0 -0
  89. /package/dist/types/{types → packages/types}/components/modules/f-link.d.ts +0 -0
  90. /package/dist/types/{types → packages/types}/components/modules/f-loading.d.ts +0 -0
  91. /package/dist/types/{types → packages/types}/components/modules/f-menu.d.ts +0 -0
  92. /package/dist/types/{types → packages/types}/components/modules/f-message.d.ts +0 -0
  93. /package/dist/types/{types → packages/types}/components/modules/f-notification.d.ts +0 -0
  94. /package/dist/types/{types → packages/types}/components/modules/f-pagination.d.ts +0 -0
  95. /package/dist/types/{types → packages/types}/components/modules/f-progress.d.ts +0 -0
  96. /package/dist/types/{types → packages/types}/components/modules/f-rate.d.ts +0 -0
  97. /package/dist/types/{types → packages/types}/components/modules/f-result.d.ts +0 -0
  98. /package/dist/types/{types → packages/types}/components/modules/f-row.d.ts +0 -0
  99. /package/dist/types/{types → packages/types}/components/modules/f-scrollbar.d.ts +0 -0
  100. /package/dist/types/{types → packages/types}/components/modules/f-slider-captcha.d.ts +0 -0
  101. /package/dist/types/{types → packages/types}/components/modules/f-slider.d.ts +0 -0
  102. /package/dist/types/{types → packages/types}/components/modules/f-space.d.ts +0 -0
  103. /package/dist/types/{types → packages/types}/components/modules/f-table.d.ts +0 -0
  104. /package/dist/types/{types → packages/types}/components/modules/f-tabs.d.ts +0 -0
  105. /package/dist/types/{types → packages/types}/components/modules/f-tag.d.ts +0 -0
  106. /package/dist/types/{types → packages/types}/components/modules/f-tagsview.d.ts +0 -0
  107. /package/dist/types/{types → packages/types}/components/modules/f-text.d.ts +0 -0
  108. /package/dist/types/{types → packages/types}/components/modules/f-toolbar.d.ts +0 -0
  109. /package/dist/types/{types → packages/types}/components/modules/f-tooltip.d.ts +0 -0
  110. /package/dist/types/{types → packages/types}/components/modules/f-typography.d.ts +0 -0
  111. /package/dist/types/{types → packages/types}/components/modules/f-upload.d.ts +0 -0
  112. /package/dist/types/{types → packages/types}/index.d.ts +0 -0
  113. /package/dist/types/{types → packages/types}/models/index.d.ts +0 -0
  114. /package/dist/types/{utils → packages/utils}/general.d.ts +0 -0
  115. /package/dist/types/{utils → packages/utils}/index.d.ts +0 -0
  116. /package/dist/types/{utils → packages/utils}/validator.d.ts +0 -0
@@ -41,7 +41,7 @@ var __async = (__this, __arguments, generator) => {
41
41
  });
42
42
  };
43
43
 
44
- const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
44
+ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
45
45
  __name: "FIcon",
46
46
  props: {
47
47
  color: {},
@@ -65,24 +65,24 @@ var __async = (__this, __arguments, generator) => {
65
65
  };
66
66
  }
67
67
  });
68
- const _export_sfc = (sfc, props) => {
68
+ const _export_sfc$3 = (sfc, props) => {
69
69
  const target = sfc.__vccOpts || sfc;
70
70
  for (const [key, val] of props) {
71
71
  target[key] = val;
72
72
  }
73
73
  return target;
74
74
  };
75
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-baf7de0c"]]);
75
+ const FIcon$3 = /* @__PURE__ */ _export_sfc$3(_sfc_main$M, [["__scopeId", "data-v-baf7de0c"]]);
76
76
  const PictureError = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1780285609860'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='12961'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3cpath%20d='M894.4%20281.504a39.36%2039.36%200%200%200-27.104-11.808l-293.888-10.976-22.016%2046.88%2030.592%2087.2-55.2%2099.008%2022.4%2079.904%2056%2068.48%2081.024-70.496c7.808-6.88%2020.288-6.496%2027.104%201.216l103.904%20106.4c7.296%207.296%206.88%2019.2-0.928%2026.112a18.944%2018.944%200%200%201-13.76%204.896l-284.8-10.624-14.24%2038.72%2015.52%2034.592%20327.488%2011.808c21.504%200.8%2039.616-15.104%2040.096-35.52l18.208-439.296a34.368%2034.368%200%200%200-10.4-26.496zM684.096%20483.2c-32.32-1.184-57.28-26.88-56-57.088%201.28-30.592%2028.416-54.208%2060.288-52.992%2031.904%201.184%2057.312%2026.88%2056%2057.088-1.184%2030.208-28.384%2054.304-60.288%2052.992z%20m-211.104%20253.6l9.92-40.8-231.424%2015.104c-10.784%200.8-19.776-6.496-20.672-16.704a17.856%2017.856%200%200%201%204.672-13.504l171.52-186.272a18.048%2018.048%200%200%201%2014.208-6.112c5.184%200%2010.272%201.984%2014.176%205.696l57.28%2056.704-24.576-60.32%2044-104.288L472%20302.72l16.384-48.096-315.392%2020.8c-21.504%201.184-37.504%2018.784-36.192%2039.072l31.904%20439.424c0.384%209.792%205.184%2018.688%2013.408%2024.896%207.776%206.496%2017.696%209.792%2028%208.992l281.792-18.304-18.88-32.704z'%20p-id='12962'%3e%3c/path%3e%3c/svg%3e";
77
- const _hoisted_1$u = {
77
+ const _hoisted_1$x = {
78
78
  key: 0,
79
79
  class: "loop cubes"
80
80
  };
81
- const _hoisted_2$n = {
81
+ const _hoisted_2$r = {
82
82
  key: 2,
83
83
  class: "msg"
84
84
  };
85
- const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
85
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
86
86
  __name: "FLoading",
87
87
  props: {
88
88
  type: { default: "dots" },
@@ -95,7 +95,7 @@ var __async = (__this, __arguments, generator) => {
95
95
  return vue.openBlock(), vue.createElementBlock("div", {
96
96
  class: vue.normalizeClass(["flex-center-col size-full loading-container", { "global-mask": _ctx.mask }])
97
97
  }, [
98
- _ctx.type === "cubes" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
98
+ _ctx.type === "cubes" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [
99
99
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(6, (i) => {
100
100
  return vue.createElementVNode("div", {
101
101
  class: "item cubes",
@@ -106,23 +106,23 @@ var __async = (__this, __arguments, generator) => {
106
106
  key: 1,
107
107
  class: vue.normalizeClass(["loader", _ctx.type])
108
108
  }, null, 2)),
109
- props.text ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$n, vue.toDisplayString(props.text), 1)) : vue.createCommentVNode("", true)
109
+ props.text ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$r, vue.toDisplayString(props.text), 1)) : vue.createCommentVNode("", true)
110
110
  ], 2);
111
111
  };
112
112
  }
113
113
  });
114
- const FLoading = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-20f58a50"]]);
115
- const _hoisted_1$t = { class: "f-image" };
116
- const _hoisted_2$m = {
114
+ const FLoading = /* @__PURE__ */ _export_sfc$3(_sfc_main$I, [["__scopeId", "data-v-20f58a50"]]);
115
+ const _hoisted_1$w = { class: "f-image" };
116
+ const _hoisted_2$q = {
117
117
  key: 0,
118
118
  class: "f-image__placeholder"
119
119
  };
120
- const _hoisted_3$j = {
120
+ const _hoisted_3$m = {
121
121
  key: 0,
122
122
  class: "f-image__error"
123
123
  };
124
- const _hoisted_4$b = ["src", "loading"];
125
- const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
124
+ const _hoisted_4$f = ["src", "loading"];
125
+ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
126
126
  __name: "FImage",
127
127
  props: {
128
128
  src: {},
@@ -139,10 +139,10 @@ var __async = (__this, __arguments, generator) => {
139
139
  const onLoad = () => status.value = "loaded";
140
140
  const onError = () => status.value = "error";
141
141
  return (_ctx, _cache) => {
142
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
142
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
143
143
  vue.createVNode(vue.Transition, { name: "fade" }, {
144
144
  default: vue.withCtx(() => [
145
- vue.unref(status) === "loading" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, [
145
+ vue.unref(status) === "loading" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$q, [
146
146
  vue.createVNode(FLoading, { type: "classic first" })
147
147
  ])) : vue.createCommentVNode("", true)
148
148
  ]),
@@ -150,9 +150,9 @@ 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$j, [
153
+ vue.unref(status) === "error" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$m, [
154
154
  vue.renderSlot(_ctx.$slots, "error", {}, () => [
155
- vue.createVNode(FIcon, { size: "48px" }, {
155
+ vue.createVNode(FIcon$3, { size: "48px" }, {
156
156
  default: vue.withCtx(() => [
157
157
  vue.createVNode(vue.unref(PictureError))
158
158
  ]),
@@ -170,83 +170,116 @@ var __async = (__this, __arguments, generator) => {
170
170
  class: "f-image__img",
171
171
  onLoad,
172
172
  onError
173
- }, null, 44, _hoisted_4$b), [
173
+ }, null, 44, _hoisted_4$f), [
174
174
  [vue.vShow, vue.unref(status) === "loaded"]
175
175
  ])
176
176
  ]);
177
177
  };
178
178
  }
179
179
  });
180
- const FImage = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-e959ab10"]]);
181
- const _hoisted_1$s = ["type", "placeholder", "disabled", "readonly", "name", "id"];
182
- const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
180
+ const FImage = /* @__PURE__ */ _export_sfc$3(_sfc_main$H, [["__scopeId", "data-v-e959ab10"]]);
181
+ const _hoisted_1$v = ["type", "value", "placeholder"];
182
+ const _hoisted_2$p = { class: "f-input__suffix" };
183
+ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
183
184
  __name: "FInput",
184
185
  props: /* @__PURE__ */ vue.mergeModels({
185
- placeholder: { default: "输入..." },
186
- type: { default: "text" },
187
- disabled: { type: Boolean, default: false },
188
- readonly: { type: Boolean, default: false },
189
- name: { default: "" },
190
- id: { default: "" }
186
+ type: {},
187
+ placeholder: {},
188
+ clearable: { type: Boolean },
189
+ showPassword: { type: Boolean }
191
190
  }, {
192
191
  "modelValue": { default: "" },
193
192
  "modelModifiers": {}
194
193
  }),
195
- emits: /* @__PURE__ */ vue.mergeModels(["input", "change", "focus", "blur"], ["update:modelValue"]),
196
- setup(__props, { emit: __emit }) {
197
- const model = vue.useModel(__props, "modelValue");
198
- const emit = __emit;
199
- const handleInput = (event) => {
200
- const value = event.target.value;
201
- emit("input", value);
194
+ emits: ["update:modelValue"],
195
+ setup(__props) {
196
+ const modelValue = vue.useModel(__props, "modelValue");
197
+ const props = __props;
198
+ const formItemContext = vue.inject("FFormItemContext", null);
199
+ const isPasswordVisible = vue.ref(false);
200
+ const isFocused = vue.ref(false);
201
+ const hasError = vue.computed(() => {
202
+ var _a;
203
+ return !!((_a = formItemContext == null ? void 0 : formItemContext.errorMsg) == null ? void 0 : _a.value);
204
+ });
205
+ const inputType = vue.computed(() => {
206
+ if (props.showPassword && props.type === "password") {
207
+ return isPasswordVisible.value ? "text" : "password";
208
+ }
209
+ return props.type || "text";
210
+ });
211
+ const showClearIcon = vue.computed(() => {
212
+ return props.clearable && modelValue.value && !props.showPassword;
213
+ });
214
+ const showPasswordIcon = vue.computed(() => {
215
+ return props.showPassword && props.type === "password" && modelValue.value;
216
+ });
217
+ const onInput = (e) => {
218
+ modelValue.value = e.target.value;
219
+ };
220
+ const onBlur = (e) => {
221
+ isFocused.value = false;
222
+ formItemContext == null ? void 0 : formItemContext.validate();
202
223
  };
203
- const handleChange = (event) => {
204
- const value = event.target.value;
205
- emit("change", value);
224
+ const onFocus = () => {
225
+ isFocused.value = true;
206
226
  };
207
- const handleFocus = (event) => {
208
- emit("focus", event);
227
+ const clearValue = () => {
228
+ modelValue.value = "";
209
229
  };
210
- const handleBlur = (event) => {
211
- emit("blur", event);
230
+ const togglePassword = () => {
231
+ isPasswordVisible.value = !isPasswordVisible.value;
212
232
  };
213
233
  return (_ctx, _cache) => {
214
234
  return vue.openBlock(), vue.createElementBlock("div", {
215
- class: vue.normalizeClass(["f-input", { "is-disabled": _ctx.disabled, "is-readonly": "readonly" in _ctx ? _ctx.readonly : vue.unref(vue.readonly) }])
235
+ class: vue.normalizeClass(["f-input", {
236
+ "is-focus": vue.unref(isFocused),
237
+ "is-error": vue.unref(hasError)
238
+ }])
216
239
  }, [
217
- vue.createVNode(FIcon, { class: "f-input__icon" }, {
218
- default: vue.withCtx(() => [
219
- vue.createVNode(vue.unref(ionicons5.Search))
220
- ]),
221
- _: 1
222
- }),
223
- vue.withDirectives(vue.createElementVNode("input", {
224
- class: "f-input__text",
225
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
226
- type: _ctx.type,
240
+ vue.createElementVNode("input", {
241
+ type: vue.unref(inputType),
242
+ value: modelValue.value,
227
243
  placeholder: _ctx.placeholder,
228
- disabled: _ctx.disabled,
229
- readonly: "readonly" in _ctx ? _ctx.readonly : vue.unref(vue.readonly),
230
- name: _ctx.name,
231
- id: _ctx.id,
232
- onInput: handleInput,
233
- onChange: handleChange,
234
- onFocus: handleFocus,
235
- onBlur: handleBlur
236
- }, null, 40, _hoisted_1$s), [
237
- [vue.vModelDynamic, model.value]
238
- ])
244
+ onInput,
245
+ onBlur,
246
+ onFocus,
247
+ class: "f-input__inner"
248
+ }, null, 40, _hoisted_1$v),
249
+ vue.createElementVNode("div", _hoisted_2$p, [
250
+ vue.unref(showClearIcon) ? (vue.openBlock(), vue.createBlock(FIcon$3, {
251
+ key: 0,
252
+ onClick: clearValue,
253
+ class: "icon-btn"
254
+ }, {
255
+ default: vue.withCtx(() => [
256
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(ionicons5.CloseCircleOutline))))
257
+ ]),
258
+ _: 1
259
+ })) : vue.createCommentVNode("", true),
260
+ vue.unref(showPasswordIcon) ? (vue.openBlock(), vue.createBlock(FIcon$3, {
261
+ key: 1,
262
+ onClick: togglePassword,
263
+ class: "icon-btn"
264
+ }, {
265
+ default: vue.withCtx(() => [
266
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(isPasswordVisible) ? vue.unref(ionicons5.EyeOutline) : vue.unref(ionicons5.EyeOffOutline))))
267
+ ]),
268
+ _: 1
269
+ })) : vue.createCommentVNode("", true)
270
+ ]),
271
+ _cache[0] || (_cache[0] = vue.createElementVNode("div", { class: "f-input__focus-bg" }, null, -1))
239
272
  ], 2);
240
273
  };
241
274
  }
242
275
  });
243
- const FInput = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-9af0fbbe"]]);
244
- const _hoisted_1$r = ["onMousemove"];
245
- const _hoisted_2$l = {
276
+ const FInput = /* @__PURE__ */ _export_sfc$3(_sfc_main$G, [["__scopeId", "data-v-68f468e1"]]);
277
+ const _hoisted_1$u = ["onMousemove"];
278
+ const _hoisted_2$o = {
246
279
  key: 0,
247
280
  class: "f-rate__score"
248
281
  };
249
- const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
282
+ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
250
283
  __name: "FRate",
251
284
  props: /* @__PURE__ */ vue.mergeModels({
252
285
  modelValue: {},
@@ -320,7 +353,7 @@ var __async = (__this, __arguments, generator) => {
320
353
  onMousemove: ($event) => onMouseMove($event, index),
321
354
  onClick
322
355
  }, [
323
- vue.createVNode(FIcon, {
356
+ vue.createVNode(FIcon$3, {
324
357
  color: getStarColor(index),
325
358
  size: vue.unref(starSize)
326
359
  }, {
@@ -329,32 +362,33 @@ var __async = (__this, __arguments, generator) => {
329
362
  ]),
330
363
  _: 2
331
364
  }, 1032, ["color", "size"])
332
- ], 40, _hoisted_1$r);
365
+ ], 40, _hoisted_1$u);
333
366
  }), 128)),
334
- props.showText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$l, vue.toDisplayString(vue.unref(scoreText)), 1)) : vue.createCommentVNode("", true)
367
+ props.showText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$o, vue.toDisplayString(vue.unref(scoreText)), 1)) : vue.createCommentVNode("", true)
335
368
  ], 34);
336
369
  };
337
370
  }
338
371
  });
339
- const FRate = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-3b5c4f14"]]);
340
- const _hoisted_1$q = { class: "f-dropdown-wrapper" };
341
- const _hoisted_2$k = { class: "f-dropdown-content" };
342
- const _hoisted_3$i = ["onClick"];
343
- const _hoisted_4$a = {
372
+ const FRate = /* @__PURE__ */ _export_sfc$3(_sfc_main$F, [["__scopeId", "data-v-3b5c4f14"]]);
373
+ const _hoisted_1$t = { class: "f-dropdown-wrapper" };
374
+ const _hoisted_2$n = { class: "f-dropdown-content" };
375
+ const _hoisted_3$l = ["onClick"];
376
+ const _hoisted_4$e = {
344
377
  key: 0,
345
378
  class: "opt-icon"
346
379
  };
347
- const _hoisted_5$9 = { class: "opt-label" };
348
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
380
+ const _hoisted_5$c = { class: "opt-label" };
381
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
349
382
  __name: "FDropdown",
350
383
  props: {
351
384
  placement: { default: "right-start" },
352
385
  offset: { default: 12 },
353
386
  zIndex: { default: 2e3 },
354
387
  trigger: { default: "hover" },
355
- options: { default: () => [] }
388
+ options: { default: () => [] },
389
+ disabled: { type: Boolean, default: false }
356
390
  },
357
- emits: ["select"],
391
+ emits: ["select", "show", "hide"],
358
392
  setup(__props, { emit: __emit }) {
359
393
  const props = __props;
360
394
  const emit = __emit;
@@ -458,7 +492,7 @@ var __async = (__this, __arguments, generator) => {
458
492
  }
459
493
  };
460
494
  const handleTriggerClick = (e) => {
461
- if (props.trigger !== "click") return;
495
+ if (props.trigger !== "click" || props.disabled) return;
462
496
  e.stopPropagation();
463
497
  if (!show.value) {
464
498
  anchorRect.value = triggerRef.value.getBoundingClientRect();
@@ -468,7 +502,7 @@ var __async = (__this, __arguments, generator) => {
468
502
  }
469
503
  };
470
504
  const handleMouseEnter = () => {
471
- if (props.trigger !== "hover") return;
505
+ if (props.trigger !== "hover" || props.disabled) return;
472
506
  clearLeaveTimer();
473
507
  showTimer = setTimeout(() => {
474
508
  if (triggerRef.value) {
@@ -503,9 +537,11 @@ var __async = (__this, __arguments, generator) => {
503
537
  yield vue.nextTick();
504
538
  dropdownHeight.value = ((_a = dropdownRef.value) == null ? void 0 : _a.offsetHeight) || 200;
505
539
  dropdownWidth.value = ((_b = dropdownRef.value) == null ? void 0 : _b.offsetWidth) || 160;
540
+ emit("show");
506
541
  } else {
507
542
  dropdownHeight.value = 0;
508
543
  dropdownWidth.value = 0;
544
+ emit("hide");
509
545
  }
510
546
  }));
511
547
  vue.onUnmounted(() => {
@@ -514,7 +550,7 @@ var __async = (__this, __arguments, generator) => {
514
550
  });
515
551
  core.useEventListener(window, "click", handleWindowClick);
516
552
  return (_ctx, _cache) => {
517
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
553
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
518
554
  vue.createElementVNode("div", {
519
555
  ref_key: "triggerRef",
520
556
  ref: triggerRef,
@@ -544,18 +580,18 @@ var __async = (__this, __arguments, generator) => {
544
580
  class: "f-dropdown-bridge",
545
581
  style: vue.normalizeStyle(vue.unref(bridgeStyle))
546
582
  }, null, 4)) : vue.createCommentVNode("", true),
547
- vue.createElementVNode("div", _hoisted_2$k, [
583
+ vue.createElementVNode("div", _hoisted_2$n, [
548
584
  _ctx.options && _ctx.options.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.options, (opt) => {
549
585
  return vue.openBlock(), vue.createElementBlock("div", {
550
586
  key: opt.key,
551
587
  class: vue.normalizeClass(["f-dropdown-option", { "is-disabled": opt.disabled }]),
552
588
  onClick: ($event) => handleOptionClick(opt)
553
589
  }, [
554
- opt.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$a, [
590
+ opt.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$e, [
555
591
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(opt.icon)))
556
592
  ])) : vue.createCommentVNode("", true),
557
- vue.createElementVNode("span", _hoisted_5$9, vue.toDisplayString(opt.label), 1)
558
- ], 10, _hoisted_3$i);
593
+ vue.createElementVNode("span", _hoisted_5$c, vue.toDisplayString(opt.label), 1)
594
+ ], 10, _hoisted_3$l);
559
595
  }), 128)) : vue.renderSlot(_ctx.$slots, "content", { key: 1 }, void 0, true)
560
596
  ])
561
597
  ], 36)) : vue.createCommentVNode("", true)
@@ -567,55 +603,66 @@ var __async = (__this, __arguments, generator) => {
567
603
  };
568
604
  }
569
605
  });
570
- const FDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-addb3a3b"]]);
571
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
606
+ const FDropdown = /* @__PURE__ */ _export_sfc$3(_sfc_main$E, [["__scopeId", "data-v-834f9929"]]);
607
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
572
608
  __name: "FSelect",
573
609
  props: /* @__PURE__ */ vue.mergeModels({
574
610
  options: {},
575
- placeholder: {}
611
+ placeholder: {},
612
+ disabled: { type: Boolean }
576
613
  }, {
577
614
  "modelValue": {},
578
615
  "modelModifiers": {}
579
616
  }),
580
- emits: /* @__PURE__ */ vue.mergeModels(["select"], ["update:modelValue"]),
617
+ emits: /* @__PURE__ */ vue.mergeModels(["select", "change"], ["update:modelValue"]),
581
618
  setup(__props, { emit: __emit }) {
582
619
  const props = __props;
583
620
  const emit = __emit;
584
621
  const modelValue = vue.useModel(__props, "modelValue");
585
622
  const isOpen = vue.ref(false);
586
- const selectedLabel = vue.computed(
587
- () => {
588
- var _a, _b, _c;
589
- return (_c = (_a = props.options.find((o) => o.key === modelValue.value)) == null ? void 0 : _a.label) != null ? _c : (_b = props.placeholder) != null ? _b : "请选择";
590
- }
591
- );
592
- const hasValue = vue.computed(() => modelValue.value !== void 0 && modelValue.value !== "");
623
+ const dropdownRef = vue.ref();
624
+ const selectedLabel = vue.computed(() => {
625
+ var _a, _b;
626
+ const option = props.options.find((o) => o.key === modelValue.value);
627
+ return (_b = option == null ? void 0 : option.label) != null ? _b : (_a = props.placeholder) != null ? _a : "请选择";
628
+ });
629
+ const hasValue = vue.computed(() => {
630
+ return modelValue.value !== void 0 && modelValue.value !== null && modelValue.value !== "";
631
+ });
593
632
  const handleSelect = (key, option) => {
633
+ const oldValue = modelValue.value;
594
634
  modelValue.value = key;
595
635
  emit("select", key, option);
636
+ if (oldValue !== key) {
637
+ emit("change", key, option);
638
+ }
596
639
  isOpen.value = false;
597
640
  };
598
- const handleDropdownShow = (val) => {
599
- isOpen.value = val;
600
- };
601
641
  return (_ctx, _cache) => {
602
642
  return vue.openBlock(), vue.createBlock(FDropdown, {
643
+ ref_key: "dropdownRef",
644
+ ref: dropdownRef,
603
645
  options: _ctx.options,
646
+ disabled: _ctx.disabled,
604
647
  trigger: "click",
605
648
  onSelect: handleSelect,
606
- onShow: _cache[0] || (_cache[0] = ($event) => handleDropdownShow(true)),
607
- onHide: _cache[1] || (_cache[1] = ($event) => handleDropdownShow(false)),
649
+ onShow: _cache[0] || (_cache[0] = ($event) => isOpen.value = true),
650
+ onHide: _cache[1] || (_cache[1] = ($event) => isOpen.value = false),
608
651
  placement: "bottom",
609
652
  offset: 4
610
653
  }, {
611
654
  default: vue.withCtx(() => [
612
655
  vue.createElementVNode("div", {
613
- class: vue.normalizeClass(["f-select", { "is-active": vue.unref(hasValue), "is-open": vue.unref(isOpen) }])
656
+ class: vue.normalizeClass(["f-select", {
657
+ "is-active": vue.unref(hasValue),
658
+ "is-open": vue.unref(isOpen),
659
+ "is-disabled": _ctx.disabled
660
+ }])
614
661
  }, [
615
662
  vue.createElementVNode("span", {
616
663
  class: vue.normalizeClass(["f-select__label", { "is-placeholder": !vue.unref(hasValue) }])
617
664
  }, vue.toDisplayString(vue.unref(selectedLabel)), 3),
618
- vue.createVNode(FIcon, { class: "f-select__arrow" }, {
665
+ vue.createVNode(FIcon$3, { class: "f-select__arrow" }, {
619
666
  default: vue.withCtx(() => [
620
667
  vue.createVNode(vue.unref(ionicons5.ChevronDownOutline))
621
668
  ]),
@@ -624,25 +671,25 @@ var __async = (__this, __arguments, generator) => {
624
671
  ], 2)
625
672
  ]),
626
673
  _: 1
627
- }, 8, ["options"]);
674
+ }, 8, ["options", "disabled"]);
628
675
  };
629
676
  }
630
677
  });
631
- const FSelect = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-61444561"]]);
632
- const _hoisted_1$p = {
678
+ const FSelect = /* @__PURE__ */ _export_sfc$3(_sfc_main$D, [["__scopeId", "data-v-fc1ceb39"]]);
679
+ const _hoisted_1$s = {
633
680
  key: 0,
634
681
  class: "f-pagination"
635
682
  };
636
- const _hoisted_2$j = {
683
+ const _hoisted_2$m = {
637
684
  key: 0,
638
685
  class: "f-pagination__total"
639
686
  };
640
- const _hoisted_3$h = {
687
+ const _hoisted_3$k = {
641
688
  key: 1,
642
689
  class: "f-pagination__size"
643
690
  };
644
- const _hoisted_4$9 = ["value"];
645
- const _hoisted_5$8 = ["value"];
691
+ const _hoisted_4$d = ["value"];
692
+ const _hoisted_5$b = ["value"];
646
693
  const _hoisted_6$7 = {
647
694
  key: 3,
648
695
  class: "f-pagination__list"
@@ -657,7 +704,7 @@ var __async = (__this, __arguments, generator) => {
657
704
  class: "f-pagination__jump"
658
705
  };
659
706
  const _hoisted_10$2 = ["max"];
660
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
707
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
661
708
  __name: "FPagination",
662
709
  props: /* @__PURE__ */ vue.mergeModels({
663
710
  total: {},
@@ -706,10 +753,10 @@ var __async = (__this, __arguments, generator) => {
706
753
  jumpInput.value = "";
707
754
  };
708
755
  return (_ctx, _cache) => {
709
- return !_ctx.hideOnSingle || vue.unref(pageCount) > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
756
+ return !_ctx.hideOnSingle || vue.unref(pageCount) > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
710
757
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(layoutItems), (item) => {
711
758
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: item }, [
712
- item === "total" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$j, " 共 " + vue.toDisplayString(_ctx.total) + " 条 ", 1)) : item === "sizes" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$h, [
759
+ item === "total" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$m, " 共 " + vue.toDisplayString(_ctx.total) + " 条 ", 1)) : item === "sizes" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$k, [
713
760
  vue.createElementVNode("select", {
714
761
  class: "size-select",
715
762
  value: _ctx.pageSize,
@@ -719,15 +766,15 @@ var __async = (__this, __arguments, generator) => {
719
766
  return vue.openBlock(), vue.createElementBlock("option", {
720
767
  key: s,
721
768
  value: s
722
- }, vue.toDisplayString(s) + " 条/页", 9, _hoisted_5$8);
769
+ }, vue.toDisplayString(s) + " 条/页", 9, _hoisted_5$b);
723
770
  }), 128))
724
- ], 40, _hoisted_4$9)
771
+ ], 40, _hoisted_4$d)
725
772
  ])) : item === "prev" ? (vue.openBlock(), vue.createElementBlock("button", {
726
773
  key: 2,
727
774
  class: vue.normalizeClass(["page-btn", { disabled: currentPage.value === 1 }]),
728
775
  onClick: _cache[0] || (_cache[0] = ($event) => go(currentPage.value - 1))
729
776
  }, [
730
- vue.createVNode(FIcon, null, {
777
+ vue.createVNode(FIcon$3, null, {
731
778
  default: vue.withCtx(() => [
732
779
  vue.createVNode(vue.unref(ionicons5.ChevronBackOutline))
733
780
  ]),
@@ -737,7 +784,7 @@ var __async = (__this, __arguments, generator) => {
737
784
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(pages), (page, index) => {
738
785
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: index }, [
739
786
  page === "..." ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_7$3, [
740
- vue.createVNode(FIcon, null, {
787
+ vue.createVNode(FIcon$3, null, {
741
788
  default: vue.withCtx(() => [
742
789
  vue.createVNode(vue.unref(ionicons5.EllipsisHorizontal))
743
790
  ]),
@@ -755,7 +802,7 @@ var __async = (__this, __arguments, generator) => {
755
802
  class: vue.normalizeClass(["page-btn", { disabled: currentPage.value === vue.unref(pageCount) }]),
756
803
  onClick: _cache[1] || (_cache[1] = ($event) => go(currentPage.value + 1))
757
804
  }, [
758
- vue.createVNode(FIcon, null, {
805
+ vue.createVNode(FIcon$3, null, {
759
806
  default: vue.withCtx(() => [
760
807
  vue.createVNode(vue.unref(ionicons5.ChevronForwardOutline))
761
808
  ]),
@@ -782,24 +829,24 @@ var __async = (__this, __arguments, generator) => {
782
829
  };
783
830
  }
784
831
  });
785
- const FPagination = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-930f8b20"]]);
786
- const _hoisted_1$o = {
832
+ const FPagination = /* @__PURE__ */ _export_sfc$3(_sfc_main$C, [["__scopeId", "data-v-930f8b20"]]);
833
+ const _hoisted_1$r = {
787
834
  key: 0,
788
835
  class: "f-card__header"
789
836
  };
790
- const _hoisted_2$i = {
837
+ const _hoisted_2$l = {
791
838
  key: 0,
792
839
  class: "f-card__header-extra"
793
840
  };
794
- const _hoisted_3$g = {
841
+ const _hoisted_3$j = {
795
842
  key: 1,
796
843
  class: "f-card__cover"
797
844
  };
798
- const _hoisted_4$8 = {
845
+ const _hoisted_4$c = {
799
846
  key: 2,
800
847
  class: "f-card__body"
801
848
  };
802
- const _hoisted_5$7 = {
849
+ const _hoisted_5$a = {
803
850
  key: 3,
804
851
  class: "f-card__footer"
805
852
  };
@@ -824,7 +871,7 @@ var __async = (__this, __arguments, generator) => {
824
871
  key: 1,
825
872
  class: "f-card__footer"
826
873
  };
827
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
874
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
828
875
  __name: "FCard",
829
876
  props: {
830
877
  hoverable: { type: Boolean, default: true },
@@ -836,19 +883,19 @@ var __async = (__this, __arguments, generator) => {
836
883
  class: vue.normalizeClass(["f-card", [`f-card--${_ctx.direction}`, { "is-hoverable": _ctx.hoverable }]])
837
884
  }, [
838
885
  _ctx.direction === "vertical" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
839
- _ctx.$slots.header || _ctx.$slots["header-extra"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
886
+ _ctx.$slots.header || _ctx.$slots["header-extra"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [
840
887
  vue.renderSlot(_ctx.$slots, "header", {}, void 0, true),
841
- _ctx.$slots["header-extra"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$i, [
888
+ _ctx.$slots["header-extra"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$l, [
842
889
  vue.renderSlot(_ctx.$slots, "header-extra", {}, void 0, true)
843
890
  ])) : vue.createCommentVNode("", true)
844
891
  ])) : vue.createCommentVNode("", true),
845
- _ctx.$slots.cover ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$g, [
892
+ _ctx.$slots.cover ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$j, [
846
893
  vue.renderSlot(_ctx.$slots, "cover", {}, void 0, true)
847
894
  ])) : vue.createCommentVNode("", true),
848
- _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$8, [
895
+ _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$c, [
849
896
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
850
897
  ])) : vue.createCommentVNode("", true),
851
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$7, [
898
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$a, [
852
899
  vue.renderSlot(_ctx.$slots, "footer", {}, void 0, true)
853
900
  ])) : vue.createCommentVNode("", true)
854
901
  ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
@@ -874,12 +921,12 @@ var __async = (__this, __arguments, generator) => {
874
921
  };
875
922
  }
876
923
  });
877
- const FCard = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-a66fa373"]]);
878
- const _hoisted_1$n = {
924
+ const FCard = /* @__PURE__ */ _export_sfc$3(_sfc_main$B, [["__scopeId", "data-v-a66fa373"]]);
925
+ const _hoisted_1$q = {
879
926
  key: 0,
880
927
  class: "f-tag__dot"
881
928
  };
882
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
929
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
883
930
  __name: "FTag",
884
931
  props: {
885
932
  color: {},
@@ -903,9 +950,9 @@ var __async = (__this, __arguments, generator) => {
903
950
  onMouseenter: _cache[1] || (_cache[1] = ($event) => isHover.value = true),
904
951
  onMouseleave: _cache[2] || (_cache[2] = ($event) => isHover.value = false)
905
952
  }, [
906
- _ctx.type === "dot" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$n)) : vue.createCommentVNode("", true),
953
+ _ctx.type === "dot" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$q)) : vue.createCommentVNode("", true),
907
954
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
908
- _ctx.closable ? (vue.openBlock(), vue.createBlock(FIcon, {
955
+ _ctx.closable ? (vue.openBlock(), vue.createBlock(FIcon$3, {
909
956
  key: 1,
910
957
  class: "f-tag__close",
911
958
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => emit("close"), ["stop"]))
@@ -919,8 +966,8 @@ var __async = (__this, __arguments, generator) => {
919
966
  };
920
967
  }
921
968
  });
922
- const FTag = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-02bd5aa6"]]);
923
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
969
+ const FTag = /* @__PURE__ */ _export_sfc$3(_sfc_main$A, [["__scopeId", "data-v-02bd5aa6"]]);
970
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
924
971
  __name: "FTooltip",
925
972
  props: {
926
973
  content: {},
@@ -1024,13 +1071,13 @@ var __async = (__this, __arguments, generator) => {
1024
1071
  };
1025
1072
  }
1026
1073
  });
1027
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-be9acca7"]]);
1028
- const _hoisted_1$m = { class: "f-progress" };
1029
- const _hoisted_2$h = {
1074
+ const FTooltip = /* @__PURE__ */ _export_sfc$3(_sfc_main$z, [["__scopeId", "data-v-be9acca7"]]);
1075
+ const _hoisted_1$p = { class: "f-progress" };
1076
+ const _hoisted_2$k = {
1030
1077
  key: 0,
1031
1078
  class: "f-progress__text"
1032
1079
  };
1033
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
1080
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
1034
1081
  __name: "FProgress",
1035
1082
  props: {
1036
1083
  percent: {},
@@ -1042,7 +1089,7 @@ var __async = (__this, __arguments, generator) => {
1042
1089
  const props = __props;
1043
1090
  const clampedPercent = vue.computed(() => Math.min(100, Math.max(0, props.percent)));
1044
1091
  return (_ctx, _cache) => {
1045
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
1092
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
1046
1093
  vue.createElementVNode("div", {
1047
1094
  class: "f-progress__track",
1048
1095
  style: vue.normalizeStyle({ height: `${_ctx.height}px` })
@@ -1055,17 +1102,17 @@ var __async = (__this, __arguments, generator) => {
1055
1102
  })
1056
1103
  }, null, 4)
1057
1104
  ], 4),
1058
- _ctx.showText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$h, vue.toDisplayString(vue.unref(clampedPercent)) + "%", 1)) : vue.createCommentVNode("", true)
1105
+ _ctx.showText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$k, vue.toDisplayString(vue.unref(clampedPercent)) + "%", 1)) : vue.createCommentVNode("", true)
1059
1106
  ]);
1060
1107
  };
1061
1108
  }
1062
1109
  });
1063
- const FProgress = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-c2164d6e"]]);
1064
- const _hoisted_1$l = { class: "f-tabs__nav-container" };
1065
- const _hoisted_2$g = { class: "f-tabs__nav" };
1066
- const _hoisted_3$f = ["onClick"];
1067
- const _hoisted_4$7 = { class: "f-tabs__label" };
1068
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
1110
+ const FProgress = /* @__PURE__ */ _export_sfc$3(_sfc_main$y, [["__scopeId", "data-v-c2164d6e"]]);
1111
+ const _hoisted_1$o = { class: "f-tabs__nav-container" };
1112
+ const _hoisted_2$j = { class: "f-tabs__nav" };
1113
+ const _hoisted_3$i = ["onClick"];
1114
+ const _hoisted_4$b = { class: "f-tabs__label" };
1115
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
1069
1116
  __name: "FTabs",
1070
1117
  props: {
1071
1118
  tabs: {},
@@ -1098,8 +1145,8 @@ var __async = (__this, __arguments, generator) => {
1098
1145
  return vue.openBlock(), vue.createElementBlock("div", {
1099
1146
  class: vue.normalizeClass(["f-tabs", [`f-tabs--${_ctx.type}`]])
1100
1147
  }, [
1101
- vue.createElementVNode("div", _hoisted_1$l, [
1102
- vue.createElementVNode("div", _hoisted_2$g, [
1148
+ vue.createElementVNode("div", _hoisted_1$o, [
1149
+ vue.createElementVNode("div", _hoisted_2$j, [
1103
1150
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.tabs, (tab) => {
1104
1151
  return vue.openBlock(), vue.createElementBlock("div", {
1105
1152
  key: tab.name,
@@ -1109,8 +1156,8 @@ var __async = (__this, __arguments, generator) => {
1109
1156
  }]),
1110
1157
  onClick: ($event) => setActiveTab(tab.name, tab.disabled)
1111
1158
  }, [
1112
- vue.createElementVNode("span", _hoisted_4$7, vue.toDisplayString(tab.label), 1)
1113
- ], 10, _hoisted_3$f);
1159
+ vue.createElementVNode("span", _hoisted_4$b, vue.toDisplayString(tab.label), 1)
1160
+ ], 10, _hoisted_3$i);
1114
1161
  }), 128))
1115
1162
  ])
1116
1163
  ]),
@@ -1128,17 +1175,17 @@ var __async = (__this, __arguments, generator) => {
1128
1175
  };
1129
1176
  }
1130
1177
  });
1131
- const FTabs = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-268fc654"]]);
1132
- const _hoisted_1$k = {
1178
+ const FTabs = /* @__PURE__ */ _export_sfc$3(_sfc_main$x, [["__scopeId", "data-v-268fc654"]]);
1179
+ const _hoisted_1$n = {
1133
1180
  class: "f-breadcrumb__current",
1134
1181
  "aria-current": "page"
1135
1182
  };
1136
- const _hoisted_2$f = ["href"];
1137
- const _hoisted_3$e = {
1183
+ const _hoisted_2$i = ["href"];
1184
+ const _hoisted_3$h = {
1138
1185
  key: 3,
1139
1186
  class: "f-breadcrumb__text"
1140
1187
  };
1141
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
1188
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
1142
1189
  __name: "FBreadcrumb",
1143
1190
  props: {
1144
1191
  items: { default: () => [] },
@@ -1166,12 +1213,12 @@ var __async = (__this, __arguments, generator) => {
1166
1213
  key: 1,
1167
1214
  item
1168
1215
  }, () => [
1169
- vue.createElementVNode("span", _hoisted_1$k, vue.toDisplayString(item.label), 1)
1216
+ vue.createElementVNode("span", _hoisted_1$n, vue.toDisplayString(item.label), 1)
1170
1217
  ], true) : item.href ? (vue.openBlock(), vue.createElementBlock("a", {
1171
1218
  key: 2,
1172
1219
  href: item.href,
1173
1220
  class: "f-breadcrumb__link"
1174
- }, vue.toDisplayString(item.label), 9, _hoisted_2$f)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$e, vue.toDisplayString(item.label), 1))
1221
+ }, vue.toDisplayString(item.label), 9, _hoisted_2$i)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$h, vue.toDisplayString(item.label), 1))
1175
1222
  ], 64);
1176
1223
  }), 128))
1177
1224
  ]),
@@ -1181,8 +1228,8 @@ var __async = (__this, __arguments, generator) => {
1181
1228
  };
1182
1229
  }
1183
1230
  });
1184
- const FBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-55b15358"]]);
1185
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
1231
+ const FBreadcrumb = /* @__PURE__ */ _export_sfc$3(_sfc_main$w, [["__scopeId", "data-v-55b15358"]]);
1232
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
1186
1233
  __name: "FCol",
1187
1234
  props: {
1188
1235
  span: { default: 24 },
@@ -1223,8 +1270,8 @@ var __async = (__this, __arguments, generator) => {
1223
1270
  };
1224
1271
  }
1225
1272
  });
1226
- const FCol = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-5a8b0cb4"]]);
1227
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
1273
+ const FCol = /* @__PURE__ */ _export_sfc$3(_sfc_main$v, [["__scopeId", "data-v-5a8b0cb4"]]);
1274
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
1228
1275
  __name: "FRow",
1229
1276
  props: {
1230
1277
  gutter: { default: 0 },
@@ -1277,14 +1324,14 @@ var __async = (__this, __arguments, generator) => {
1277
1324
  };
1278
1325
  }
1279
1326
  });
1280
- const FRow = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-72f62339"]]);
1281
- const _hoisted_1$j = { class: "f-space__item" };
1282
- const _hoisted_2$e = {
1327
+ const FRow = /* @__PURE__ */ _export_sfc$3(_sfc_main$u, [["__scopeId", "data-v-72f62339"]]);
1328
+ const _hoisted_1$m = { class: "f-space__item" };
1329
+ const _hoisted_2$h = {
1283
1330
  key: 0,
1284
1331
  class: "f-space__split",
1285
1332
  "aria-hidden": "true"
1286
1333
  };
1287
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
1334
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
1288
1335
  __name: "FSpace",
1289
1336
  props: {
1290
1337
  direction: { default: "horizontal" },
@@ -1338,18 +1385,18 @@ var __async = (__this, __arguments, generator) => {
1338
1385
  }, [
1339
1386
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(children), (child, index) => {
1340
1387
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: index }, [
1341
- vue.createElementVNode("div", _hoisted_1$j, [
1388
+ vue.createElementVNode("div", _hoisted_1$m, [
1342
1389
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child)))
1343
1390
  ]),
1344
- _ctx.split && index < vue.unref(children).length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$e, vue.toDisplayString(_ctx.split), 1)) : vue.createCommentVNode("", true)
1391
+ _ctx.split && index < vue.unref(children).length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$h, vue.toDisplayString(_ctx.split), 1)) : vue.createCommentVNode("", true)
1345
1392
  ], 64);
1346
1393
  }), 128))
1347
1394
  ], 4);
1348
1395
  };
1349
1396
  }
1350
1397
  });
1351
- const FSpace = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-5fb3b1a0"]]);
1352
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
1398
+ const FSpace = /* @__PURE__ */ _export_sfc$3(_sfc_main$t, [["__scopeId", "data-v-5fb3b1a0"]]);
1399
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
1353
1400
  __name: "FContainer",
1354
1401
  props: {
1355
1402
  gap: { default: 12 }
@@ -1369,8 +1416,8 @@ var __async = (__this, __arguments, generator) => {
1369
1416
  };
1370
1417
  }
1371
1418
  });
1372
- const FContainer = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-08450ddf"]]);
1373
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1419
+ const FContainer = /* @__PURE__ */ _export_sfc$3(_sfc_main$s, [["__scopeId", "data-v-08450ddf"]]);
1420
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
1374
1421
  __name: "FDivider",
1375
1422
  props: {
1376
1423
  color: {},
@@ -1397,9 +1444,9 @@ var __async = (__this, __arguments, generator) => {
1397
1444
  };
1398
1445
  }
1399
1446
  });
1400
- const FDivider = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-512ee743"]]);
1401
- const _hoisted_1$i = ["src", "alt"];
1402
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1447
+ const FDivider = /* @__PURE__ */ _export_sfc$3(_sfc_main$r, [["__scopeId", "data-v-512ee743"]]);
1448
+ const _hoisted_1$l = ["src", "alt"];
1449
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1403
1450
  __name: "FAvatar",
1404
1451
  props: {
1405
1452
  src: {},
@@ -1431,7 +1478,7 @@ var __async = (__this, __arguments, generator) => {
1431
1478
  key: 0,
1432
1479
  src: _ctx.src,
1433
1480
  alt: _ctx.alt
1434
- }, null, 8, _hoisted_1$i)) : (vue.openBlock(), vue.createBlock(FIcon, {
1481
+ }, null, 8, _hoisted_1$l)) : (vue.openBlock(), vue.createBlock(FIcon$3, {
1435
1482
  key: 1,
1436
1483
  size: 24
1437
1484
  }, {
@@ -1444,13 +1491,2174 @@ var __async = (__this, __arguments, generator) => {
1444
1491
  };
1445
1492
  }
1446
1493
  });
1447
- const FAvatar = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-b3665268"]]);
1448
- const _hoisted_1$h = ["type", "disabled"];
1449
- const _hoisted_2$d = { class: "f-button__inner" };
1450
- const _hoisted_3$d = {
1494
+ const FAvatar = /* @__PURE__ */ _export_sfc$3(_sfc_main$q, [["__scopeId", "data-v-b3665268"]]);
1495
+ var __defProp2 = Object.defineProperty;
1496
+ var __defProps2 = Object.defineProperties;
1497
+ var __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;
1498
+ var __getOwnPropSymbols2 = Object.getOwnPropertySymbols;
1499
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
1500
+ var __propIsEnum2 = Object.prototype.propertyIsEnumerable;
1501
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1502
+ var __spreadValues2 = (a, b) => {
1503
+ for (var prop in b || (b = {}))
1504
+ if (__hasOwnProp2.call(b, prop))
1505
+ __defNormalProp2(a, prop, b[prop]);
1506
+ if (__getOwnPropSymbols2)
1507
+ for (var prop of __getOwnPropSymbols2(b)) {
1508
+ if (__propIsEnum2.call(b, prop))
1509
+ __defNormalProp2(a, prop, b[prop]);
1510
+ }
1511
+ return a;
1512
+ };
1513
+ var __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));
1514
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
1515
+ __name: "FIcon",
1516
+ props: {
1517
+ color: {},
1518
+ size: { default: "1em" }
1519
+ },
1520
+ setup(__props) {
1521
+ const props = __props;
1522
+ const style = vue.computed(() => ({
1523
+ width: typeof props.size === "number" ? `${props.size}px` : props.size,
1524
+ height: typeof props.size === "number" ? `${props.size}px` : props.size,
1525
+ color: props.color
1526
+ }));
1527
+ return (_ctx, _cache) => {
1528
+ return vue.openBlock(), vue.createElementBlock("span", {
1529
+ role: "img",
1530
+ class: "f-icon",
1531
+ style: vue.normalizeStyle(vue.unref(style))
1532
+ }, [
1533
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1534
+ ], 4);
1535
+ };
1536
+ }
1537
+ });
1538
+ const _export_sfc$2 = (sfc, props) => {
1539
+ const target = sfc.__vccOpts || sfc;
1540
+ for (const [key, val] of props) {
1541
+ target[key] = val;
1542
+ }
1543
+ return target;
1544
+ };
1545
+ const FIcon$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$L, [["__scopeId", "data-v-baf7de0c"]]);
1546
+ var __defProp22 = Object.defineProperty;
1547
+ var __getOwnPropSymbols22 = Object.getOwnPropertySymbols;
1548
+ var __hasOwnProp22 = Object.prototype.hasOwnProperty;
1549
+ var __propIsEnum22 = Object.prototype.propertyIsEnumerable;
1550
+ var __defNormalProp22 = (obj, key, value) => key in obj ? __defProp22(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1551
+ var __spreadValues22 = (a, b) => {
1552
+ for (var prop in b || (b = {}))
1553
+ if (__hasOwnProp22.call(b, prop))
1554
+ __defNormalProp22(a, prop, b[prop]);
1555
+ if (__getOwnPropSymbols22)
1556
+ for (var prop of __getOwnPropSymbols22(b)) {
1557
+ if (__propIsEnum22.call(b, prop))
1558
+ __defNormalProp22(a, prop, b[prop]);
1559
+ }
1560
+ return a;
1561
+ };
1562
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
1563
+ __name: "FIcon",
1564
+ props: {
1565
+ color: {},
1566
+ size: { default: "1em" }
1567
+ },
1568
+ setup(__props) {
1569
+ const props = __props;
1570
+ const style = vue.computed(() => ({
1571
+ width: typeof props.size === "number" ? `${props.size}px` : props.size,
1572
+ height: typeof props.size === "number" ? `${props.size}px` : props.size,
1573
+ color: props.color
1574
+ }));
1575
+ return (_ctx, _cache) => {
1576
+ return vue.openBlock(), vue.createElementBlock("span", {
1577
+ role: "img",
1578
+ class: "f-icon",
1579
+ style: vue.normalizeStyle(vue.unref(style))
1580
+ }, [
1581
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1582
+ ], 4);
1583
+ };
1584
+ }
1585
+ });
1586
+ const _export_sfc = (sfc, props) => {
1587
+ const target = sfc.__vccOpts || sfc;
1588
+ for (const [key, val] of props) {
1589
+ target[key] = val;
1590
+ }
1591
+ return target;
1592
+ };
1593
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-baf7de0c"]]);
1594
+ var __defProp222 = Object.defineProperty;
1595
+ var __getOwnPropSymbols222 = Object.getOwnPropertySymbols;
1596
+ var __hasOwnProp222 = Object.prototype.hasOwnProperty;
1597
+ var __propIsEnum222 = Object.prototype.propertyIsEnumerable;
1598
+ var __defNormalProp222 = (obj, key, value) => key in obj ? __defProp222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1599
+ var __spreadValues222 = (a, b) => {
1600
+ for (var prop in b || (b = {}))
1601
+ if (__hasOwnProp222.call(b, prop))
1602
+ __defNormalProp222(a, prop, b[prop]);
1603
+ if (__getOwnPropSymbols222)
1604
+ for (var prop of __getOwnPropSymbols222(b)) {
1605
+ if (__propIsEnum222.call(b, prop))
1606
+ __defNormalProp222(a, prop, b[prop]);
1607
+ }
1608
+ return a;
1609
+ };
1610
+ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
1611
+ __name: "FIcon",
1612
+ props: {
1613
+ color: {},
1614
+ size: { default: "1em" }
1615
+ },
1616
+ setup(__props) {
1617
+ const props = __props;
1618
+ const style = vue.computed(() => ({
1619
+ width: typeof props.size === "number" ? `${props.size}px` : props.size,
1620
+ height: typeof props.size === "number" ? `${props.size}px` : props.size,
1621
+ color: props.color
1622
+ }));
1623
+ return (_ctx, _cache) => {
1624
+ return vue.openBlock(), vue.createElementBlock("span", {
1625
+ role: "img",
1626
+ class: "f-icon",
1627
+ style: vue.normalizeStyle(vue.unref(style))
1628
+ }, [
1629
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1630
+ ], 4);
1631
+ };
1632
+ }
1633
+ });
1634
+ const _export_sfc$1 = (sfc, props) => {
1635
+ const target = sfc.__vccOpts || sfc;
1636
+ for (const [key, val] of props) {
1637
+ target[key] = val;
1638
+ }
1639
+ return target;
1640
+ };
1641
+ const FIcon$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__scopeId", "data-v-baf7de0c"]]);
1642
+ var __defProp2222 = Object.defineProperty;
1643
+ var __getOwnPropSymbols2222 = Object.getOwnPropertySymbols;
1644
+ var __hasOwnProp2222 = Object.prototype.hasOwnProperty;
1645
+ var __propIsEnum2222 = Object.prototype.propertyIsEnumerable;
1646
+ var __defNormalProp2222 = (obj, key, value) => key in obj ? __defProp2222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1647
+ var __spreadValues2222 = (a, b) => {
1648
+ for (var prop in b || (b = {}))
1649
+ if (__hasOwnProp2222.call(b, prop))
1650
+ __defNormalProp2222(a, prop, b[prop]);
1651
+ if (__getOwnPropSymbols2222)
1652
+ for (var prop of __getOwnPropSymbols2222(b)) {
1653
+ if (__propIsEnum2222.call(b, prop))
1654
+ __defNormalProp2222(a, prop, b[prop]);
1655
+ }
1656
+ return a;
1657
+ };
1658
+ var __defProp22222 = Object.defineProperty;
1659
+ var __getOwnPropSymbols22222 = Object.getOwnPropertySymbols;
1660
+ var __hasOwnProp22222 = Object.prototype.hasOwnProperty;
1661
+ var __propIsEnum22222 = Object.prototype.propertyIsEnumerable;
1662
+ var __defNormalProp22222 = (obj, key, value) => key in obj ? __defProp22222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1663
+ var __spreadValues22222 = (a, b) => {
1664
+ for (var prop in b || (b = {}))
1665
+ if (__hasOwnProp22222.call(b, prop))
1666
+ __defNormalProp22222(a, prop, b[prop]);
1667
+ if (__getOwnPropSymbols22222)
1668
+ for (var prop of __getOwnPropSymbols22222(b)) {
1669
+ if (__propIsEnum22222.call(b, prop))
1670
+ __defNormalProp22222(a, prop, b[prop]);
1671
+ }
1672
+ return a;
1673
+ };
1674
+ var __defProp222222 = Object.defineProperty;
1675
+ var __getOwnPropSymbols222222 = Object.getOwnPropertySymbols;
1676
+ var __hasOwnProp222222 = Object.prototype.hasOwnProperty;
1677
+ var __propIsEnum222222 = Object.prototype.propertyIsEnumerable;
1678
+ var __defNormalProp222222 = (obj, key, value) => key in obj ? __defProp222222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1679
+ var __spreadValues222222 = (a, b) => {
1680
+ for (var prop in b || (b = {}))
1681
+ if (__hasOwnProp222222.call(b, prop))
1682
+ __defNormalProp222222(a, prop, b[prop]);
1683
+ if (__getOwnPropSymbols222222)
1684
+ for (var prop of __getOwnPropSymbols222222(b)) {
1685
+ if (__propIsEnum222222.call(b, prop))
1686
+ __defNormalProp222222(a, prop, b[prop]);
1687
+ }
1688
+ return a;
1689
+ };
1690
+ var __defProp2222222 = Object.defineProperty;
1691
+ var __getOwnPropSymbols2222222 = Object.getOwnPropertySymbols;
1692
+ var __hasOwnProp2222222 = Object.prototype.hasOwnProperty;
1693
+ var __propIsEnum2222222 = Object.prototype.propertyIsEnumerable;
1694
+ var __defNormalProp2222222 = (obj, key, value) => key in obj ? __defProp2222222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1695
+ var __spreadValues2222222 = (a, b) => {
1696
+ for (var prop in b || (b = {}))
1697
+ if (__hasOwnProp2222222.call(b, prop))
1698
+ __defNormalProp2222222(a, prop, b[prop]);
1699
+ if (__getOwnPropSymbols2222222)
1700
+ for (var prop of __getOwnPropSymbols2222222(b)) {
1701
+ if (__propIsEnum2222222.call(b, prop))
1702
+ __defNormalProp2222222(a, prop, b[prop]);
1703
+ }
1704
+ return a;
1705
+ };
1706
+ var __defProp22222222 = Object.defineProperty;
1707
+ var __getOwnPropSymbols22222222 = Object.getOwnPropertySymbols;
1708
+ var __hasOwnProp22222222 = Object.prototype.hasOwnProperty;
1709
+ var __propIsEnum22222222 = Object.prototype.propertyIsEnumerable;
1710
+ var __defNormalProp22222222 = (obj, key, value) => key in obj ? __defProp22222222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1711
+ var __spreadValues22222222 = (a, b) => {
1712
+ for (var prop in b || (b = {}))
1713
+ if (__hasOwnProp22222222.call(b, prop))
1714
+ __defNormalProp22222222(a, prop, b[prop]);
1715
+ if (__getOwnPropSymbols22222222)
1716
+ for (var prop of __getOwnPropSymbols22222222(b)) {
1717
+ if (__propIsEnum22222222.call(b, prop))
1718
+ __defNormalProp22222222(a, prop, b[prop]);
1719
+ }
1720
+ return a;
1721
+ };
1722
+ const _hoisted_1$f$1 = { class: "f-checkbox__wrapper" };
1723
+ const _hoisted_2$d$1 = ["checked", "disabled"];
1724
+ const _hoisted_3$d$1 = {
1725
+ key: 0,
1726
+ class: "f-checkbox__label"
1727
+ };
1728
+ /* @__PURE__ */ vue.defineComponent({
1729
+ __name: "FCheckbox",
1730
+ props: /* @__PURE__ */ vue.mergeModels({
1731
+ label: {},
1732
+ disabled: { type: Boolean }
1733
+ }, {
1734
+ "modelValue": __spreadValues22222222({ type: Boolean }, { default: false }),
1735
+ "modelModifiers": {}
1736
+ }),
1737
+ emits: ["update:modelValue"],
1738
+ setup(__props) {
1739
+ const modelValue = vue.useModel(__props, "modelValue");
1740
+ const props = __props;
1741
+ const handleChange = (e) => {
1742
+ if (props.disabled) return;
1743
+ const target = e.target;
1744
+ modelValue.value = target.checked;
1745
+ };
1746
+ return (_ctx, _cache) => {
1747
+ return vue.openBlock(), vue.createElementBlock("label", {
1748
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
1749
+ }, [
1750
+ vue.createElementVNode("span", _hoisted_1$f$1, [
1751
+ vue.createElementVNode("input", {
1752
+ type: "checkbox",
1753
+ checked: modelValue.value,
1754
+ disabled: _ctx.disabled,
1755
+ onChange: handleChange
1756
+ }, null, 40, _hoisted_2$d$1),
1757
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
1758
+ ]),
1759
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$d$1, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
1760
+ ], 2);
1761
+ };
1762
+ }
1763
+ });
1764
+ /* @__PURE__ */ vue.defineComponent({
1765
+ __name: "FDialog",
1766
+ props: /* @__PURE__ */ vue.mergeModels({
1767
+ maskClosable: { type: Boolean, default: true },
1768
+ maskColor: { default: "black" },
1769
+ showMask: { type: Boolean, default: true }
1770
+ }, {
1771
+ "modelValue": __spreadValues22222222({ type: Boolean }, { default: false }),
1772
+ "modelModifiers": {}
1773
+ }),
1774
+ emits: ["update:modelValue"],
1775
+ setup(__props) {
1776
+ const props = __props;
1777
+ const visible = vue.useModel(__props, "modelValue");
1778
+ const handleMaskClick = () => {
1779
+ if (props.maskClosable) visible.value = false;
1780
+ };
1781
+ const maskBackgroundColor = vue.computed(() => {
1782
+ if (!props.showMask) return "transparent";
1783
+ switch (props.maskColor) {
1784
+ case "white":
1785
+ return "rgba(255, 255, 255, 0.5)";
1786
+ case "black":
1787
+ return "rgba(0, 0, 0, 0.5)";
1788
+ case "transparent":
1789
+ return "transparent";
1790
+ default:
1791
+ return "rgba(0, 0, 0, 0.5)";
1792
+ }
1793
+ });
1794
+ return (_ctx, _cache) => {
1795
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
1796
+ vue.createVNode(vue.Transition, { name: "fade" }, {
1797
+ default: vue.withCtx(() => [
1798
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
1799
+ key: 0,
1800
+ class: "f-dialog-mask",
1801
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
1802
+ onClick: handleMaskClick
1803
+ }, [
1804
+ vue.createElementVNode("div", {
1805
+ class: "f-dialog-container",
1806
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
1807
+ }, ["stop"]))
1808
+ }, [
1809
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1810
+ ])
1811
+ ], 4)) : vue.createCommentVNode("", true)
1812
+ ]),
1813
+ _: 3
1814
+ })
1815
+ ]);
1816
+ };
1817
+ }
1818
+ });
1819
+ var __defProp222222222 = Object.defineProperty;
1820
+ var __getOwnPropSymbols222222222 = Object.getOwnPropertySymbols;
1821
+ var __hasOwnProp222222222 = Object.prototype.hasOwnProperty;
1822
+ var __propIsEnum222222222 = Object.prototype.propertyIsEnumerable;
1823
+ var __defNormalProp222222222 = (obj, key, value) => key in obj ? __defProp222222222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1824
+ var __spreadValues222222222 = (a, b) => {
1825
+ for (var prop in b || (b = {}))
1826
+ if (__hasOwnProp222222222.call(b, prop))
1827
+ __defNormalProp222222222(a, prop, b[prop]);
1828
+ if (__getOwnPropSymbols222222222)
1829
+ for (var prop of __getOwnPropSymbols222222222(b)) {
1830
+ if (__propIsEnum222222222.call(b, prop))
1831
+ __defNormalProp222222222(a, prop, b[prop]);
1832
+ }
1833
+ return a;
1834
+ };
1835
+ var __defProp2222222222 = Object.defineProperty;
1836
+ var __getOwnPropSymbols2222222222 = Object.getOwnPropertySymbols;
1837
+ var __hasOwnProp2222222222 = Object.prototype.hasOwnProperty;
1838
+ var __propIsEnum2222222222 = Object.prototype.propertyIsEnumerable;
1839
+ var __defNormalProp2222222222 = (obj, key, value) => key in obj ? __defProp2222222222(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1840
+ var __spreadValues2222222222 = (a, b) => {
1841
+ for (var prop in b || (b = {}))
1842
+ if (__hasOwnProp2222222222.call(b, prop))
1843
+ __defNormalProp2222222222(a, prop, b[prop]);
1844
+ if (__getOwnPropSymbols2222222222)
1845
+ for (var prop of __getOwnPropSymbols2222222222(b)) {
1846
+ if (__propIsEnum2222222222.call(b, prop))
1847
+ __defNormalProp2222222222(a, prop, b[prop]);
1848
+ }
1849
+ return a;
1850
+ };
1851
+ const _hoisted_1$d$1 = { class: "f-checkbox__wrapper" };
1852
+ const _hoisted_2$b$1 = ["checked", "disabled"];
1853
+ const _hoisted_3$b$1 = {
1854
+ key: 0,
1855
+ class: "f-checkbox__label"
1856
+ };
1857
+ /* @__PURE__ */ vue.defineComponent({
1858
+ __name: "FCheckbox",
1859
+ props: /* @__PURE__ */ vue.mergeModels({
1860
+ label: {},
1861
+ disabled: { type: Boolean }
1862
+ }, {
1863
+ "modelValue": __spreadValues2222222222({ type: Boolean }, { default: false }),
1864
+ "modelModifiers": {}
1865
+ }),
1866
+ emits: ["update:modelValue"],
1867
+ setup(__props) {
1868
+ const modelValue = vue.useModel(__props, "modelValue");
1869
+ const props = __props;
1870
+ const handleChange = (e) => {
1871
+ if (props.disabled) return;
1872
+ const target = e.target;
1873
+ modelValue.value = target.checked;
1874
+ };
1875
+ return (_ctx, _cache) => {
1876
+ return vue.openBlock(), vue.createElementBlock("label", {
1877
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
1878
+ }, [
1879
+ vue.createElementVNode("span", _hoisted_1$d$1, [
1880
+ vue.createElementVNode("input", {
1881
+ type: "checkbox",
1882
+ checked: modelValue.value,
1883
+ disabled: _ctx.disabled,
1884
+ onChange: handleChange
1885
+ }, null, 40, _hoisted_2$b$1),
1886
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
1887
+ ]),
1888
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$1, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
1889
+ ], 2);
1890
+ };
1891
+ }
1892
+ });
1893
+ /* @__PURE__ */ vue.defineComponent({
1894
+ __name: "FDialog",
1895
+ props: /* @__PURE__ */ vue.mergeModels({
1896
+ maskClosable: { type: Boolean, default: true },
1897
+ maskColor: { default: "black" },
1898
+ showMask: { type: Boolean, default: true }
1899
+ }, {
1900
+ "modelValue": __spreadValues2222222222({ type: Boolean }, { default: false }),
1901
+ "modelModifiers": {}
1902
+ }),
1903
+ emits: ["update:modelValue"],
1904
+ setup(__props) {
1905
+ const props = __props;
1906
+ const visible = vue.useModel(__props, "modelValue");
1907
+ const handleMaskClick = () => {
1908
+ if (props.maskClosable) visible.value = false;
1909
+ };
1910
+ const maskBackgroundColor = vue.computed(() => {
1911
+ if (!props.showMask) return "transparent";
1912
+ switch (props.maskColor) {
1913
+ case "white":
1914
+ return "rgba(255, 255, 255, 0.5)";
1915
+ case "black":
1916
+ return "rgba(0, 0, 0, 0.5)";
1917
+ case "transparent":
1918
+ return "transparent";
1919
+ default:
1920
+ return "rgba(0, 0, 0, 0.5)";
1921
+ }
1922
+ });
1923
+ return (_ctx, _cache) => {
1924
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
1925
+ vue.createVNode(vue.Transition, { name: "fade" }, {
1926
+ default: vue.withCtx(() => [
1927
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
1928
+ key: 0,
1929
+ class: "f-dialog-mask",
1930
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
1931
+ onClick: handleMaskClick
1932
+ }, [
1933
+ vue.createElementVNode("div", {
1934
+ class: "f-dialog-container",
1935
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
1936
+ }, ["stop"]))
1937
+ }, [
1938
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1939
+ ])
1940
+ ], 4)) : vue.createCommentVNode("", true)
1941
+ ]),
1942
+ _: 3
1943
+ })
1944
+ ]);
1945
+ };
1946
+ }
1947
+ });
1948
+ const _hoisted_1$d$2 = { class: "f-checkbox__wrapper" };
1949
+ const _hoisted_2$b$2 = ["checked", "disabled"];
1950
+ const _hoisted_3$b$2 = {
1951
+ key: 0,
1952
+ class: "f-checkbox__label"
1953
+ };
1954
+ /* @__PURE__ */ vue.defineComponent({
1955
+ __name: "FCheckbox",
1956
+ props: /* @__PURE__ */ vue.mergeModels({
1957
+ label: {},
1958
+ disabled: { type: Boolean }
1959
+ }, {
1960
+ "modelValue": __spreadValues222222222({ type: Boolean }, { default: false }),
1961
+ "modelModifiers": {}
1962
+ }),
1963
+ emits: ["update:modelValue"],
1964
+ setup(__props) {
1965
+ const modelValue = vue.useModel(__props, "modelValue");
1966
+ const props = __props;
1967
+ const handleChange = (e) => {
1968
+ if (props.disabled) return;
1969
+ const target = e.target;
1970
+ modelValue.value = target.checked;
1971
+ };
1972
+ return (_ctx, _cache) => {
1973
+ return vue.openBlock(), vue.createElementBlock("label", {
1974
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
1975
+ }, [
1976
+ vue.createElementVNode("span", _hoisted_1$d$2, [
1977
+ vue.createElementVNode("input", {
1978
+ type: "checkbox",
1979
+ checked: modelValue.value,
1980
+ disabled: _ctx.disabled,
1981
+ onChange: handleChange
1982
+ }, null, 40, _hoisted_2$b$2),
1983
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
1984
+ ]),
1985
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$2, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
1986
+ ], 2);
1987
+ };
1988
+ }
1989
+ });
1990
+ /* @__PURE__ */ vue.defineComponent({
1991
+ __name: "FDialog",
1992
+ props: /* @__PURE__ */ vue.mergeModels({
1993
+ maskClosable: { type: Boolean, default: true },
1994
+ maskColor: { default: "black" },
1995
+ showMask: { type: Boolean, default: true }
1996
+ }, {
1997
+ "modelValue": __spreadValues222222222({ type: Boolean }, { default: false }),
1998
+ "modelModifiers": {}
1999
+ }),
2000
+ emits: ["update:modelValue"],
2001
+ setup(__props) {
2002
+ const props = __props;
2003
+ const visible = vue.useModel(__props, "modelValue");
2004
+ const handleMaskClick = () => {
2005
+ if (props.maskClosable) visible.value = false;
2006
+ };
2007
+ const maskBackgroundColor = vue.computed(() => {
2008
+ if (!props.showMask) return "transparent";
2009
+ switch (props.maskColor) {
2010
+ case "white":
2011
+ return "rgba(255, 255, 255, 0.5)";
2012
+ case "black":
2013
+ return "rgba(0, 0, 0, 0.5)";
2014
+ case "transparent":
2015
+ return "transparent";
2016
+ default:
2017
+ return "rgba(0, 0, 0, 0.5)";
2018
+ }
2019
+ });
2020
+ return (_ctx, _cache) => {
2021
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2022
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2023
+ default: vue.withCtx(() => [
2024
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2025
+ key: 0,
2026
+ class: "f-dialog-mask",
2027
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2028
+ onClick: handleMaskClick
2029
+ }, [
2030
+ vue.createElementVNode("div", {
2031
+ class: "f-dialog-container",
2032
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2033
+ }, ["stop"]))
2034
+ }, [
2035
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2036
+ ])
2037
+ ], 4)) : vue.createCommentVNode("", true)
2038
+ ]),
2039
+ _: 3
2040
+ })
2041
+ ]);
2042
+ };
2043
+ }
2044
+ });
2045
+ const _hoisted_1$d$3 = { class: "f-checkbox__wrapper" };
2046
+ const _hoisted_2$b$3 = ["checked", "disabled"];
2047
+ const _hoisted_3$b$3 = {
2048
+ key: 0,
2049
+ class: "f-checkbox__label"
2050
+ };
2051
+ /* @__PURE__ */ vue.defineComponent({
2052
+ __name: "FCheckbox",
2053
+ props: /* @__PURE__ */ vue.mergeModels({
2054
+ label: {},
2055
+ disabled: { type: Boolean }
2056
+ }, {
2057
+ "modelValue": __spreadValues2222222({ type: Boolean }, { default: false }),
2058
+ "modelModifiers": {}
2059
+ }),
2060
+ emits: ["update:modelValue"],
2061
+ setup(__props) {
2062
+ const modelValue = vue.useModel(__props, "modelValue");
2063
+ const props = __props;
2064
+ const handleChange = (e) => {
2065
+ if (props.disabled) return;
2066
+ const target = e.target;
2067
+ modelValue.value = target.checked;
2068
+ };
2069
+ return (_ctx, _cache) => {
2070
+ return vue.openBlock(), vue.createElementBlock("label", {
2071
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2072
+ }, [
2073
+ vue.createElementVNode("span", _hoisted_1$d$3, [
2074
+ vue.createElementVNode("input", {
2075
+ type: "checkbox",
2076
+ checked: modelValue.value,
2077
+ disabled: _ctx.disabled,
2078
+ onChange: handleChange
2079
+ }, null, 40, _hoisted_2$b$3),
2080
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2081
+ ]),
2082
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$3, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2083
+ ], 2);
2084
+ };
2085
+ }
2086
+ });
2087
+ /* @__PURE__ */ vue.defineComponent({
2088
+ __name: "FDialog",
2089
+ props: /* @__PURE__ */ vue.mergeModels({
2090
+ maskClosable: { type: Boolean, default: true },
2091
+ maskColor: { default: "black" },
2092
+ showMask: { type: Boolean, default: true }
2093
+ }, {
2094
+ "modelValue": __spreadValues2222222({ type: Boolean }, { default: false }),
2095
+ "modelModifiers": {}
2096
+ }),
2097
+ emits: ["update:modelValue"],
2098
+ setup(__props) {
2099
+ const props = __props;
2100
+ const visible = vue.useModel(__props, "modelValue");
2101
+ const handleMaskClick = () => {
2102
+ if (props.maskClosable) visible.value = false;
2103
+ };
2104
+ const maskBackgroundColor = vue.computed(() => {
2105
+ if (!props.showMask) return "transparent";
2106
+ switch (props.maskColor) {
2107
+ case "white":
2108
+ return "rgba(255, 255, 255, 0.5)";
2109
+ case "black":
2110
+ return "rgba(0, 0, 0, 0.5)";
2111
+ case "transparent":
2112
+ return "transparent";
2113
+ default:
2114
+ return "rgba(0, 0, 0, 0.5)";
2115
+ }
2116
+ });
2117
+ return (_ctx, _cache) => {
2118
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2119
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2120
+ default: vue.withCtx(() => [
2121
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2122
+ key: 0,
2123
+ class: "f-dialog-mask",
2124
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2125
+ onClick: handleMaskClick
2126
+ }, [
2127
+ vue.createElementVNode("div", {
2128
+ class: "f-dialog-container",
2129
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2130
+ }, ["stop"]))
2131
+ }, [
2132
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2133
+ ])
2134
+ ], 4)) : vue.createCommentVNode("", true)
2135
+ ]),
2136
+ _: 3
2137
+ })
2138
+ ]);
2139
+ };
2140
+ }
2141
+ });
2142
+ const _hoisted_1$d$4 = { class: "f-checkbox__wrapper" };
2143
+ const _hoisted_2$b$4 = ["checked", "disabled"];
2144
+ const _hoisted_3$b$4 = {
2145
+ key: 0,
2146
+ class: "f-checkbox__label"
2147
+ };
2148
+ /* @__PURE__ */ vue.defineComponent({
2149
+ __name: "FCheckbox",
2150
+ props: /* @__PURE__ */ vue.mergeModels({
2151
+ label: {},
2152
+ disabled: { type: Boolean }
2153
+ }, {
2154
+ "modelValue": __spreadValues222222({ type: Boolean }, { default: false }),
2155
+ "modelModifiers": {}
2156
+ }),
2157
+ emits: ["update:modelValue"],
2158
+ setup(__props) {
2159
+ const modelValue = vue.useModel(__props, "modelValue");
2160
+ const props = __props;
2161
+ const handleChange = (e) => {
2162
+ if (props.disabled) return;
2163
+ const target = e.target;
2164
+ modelValue.value = target.checked;
2165
+ };
2166
+ return (_ctx, _cache) => {
2167
+ return vue.openBlock(), vue.createElementBlock("label", {
2168
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2169
+ }, [
2170
+ vue.createElementVNode("span", _hoisted_1$d$4, [
2171
+ vue.createElementVNode("input", {
2172
+ type: "checkbox",
2173
+ checked: modelValue.value,
2174
+ disabled: _ctx.disabled,
2175
+ onChange: handleChange
2176
+ }, null, 40, _hoisted_2$b$4),
2177
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2178
+ ]),
2179
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$4, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2180
+ ], 2);
2181
+ };
2182
+ }
2183
+ });
2184
+ /* @__PURE__ */ vue.defineComponent({
2185
+ __name: "FDialog",
2186
+ props: /* @__PURE__ */ vue.mergeModels({
2187
+ maskClosable: { type: Boolean, default: true },
2188
+ maskColor: { default: "black" },
2189
+ showMask: { type: Boolean, default: true }
2190
+ }, {
2191
+ "modelValue": __spreadValues222222({ type: Boolean }, { default: false }),
2192
+ "modelModifiers": {}
2193
+ }),
2194
+ emits: ["update:modelValue"],
2195
+ setup(__props) {
2196
+ const props = __props;
2197
+ const visible = vue.useModel(__props, "modelValue");
2198
+ const handleMaskClick = () => {
2199
+ if (props.maskClosable) visible.value = false;
2200
+ };
2201
+ const maskBackgroundColor = vue.computed(() => {
2202
+ if (!props.showMask) return "transparent";
2203
+ switch (props.maskColor) {
2204
+ case "white":
2205
+ return "rgba(255, 255, 255, 0.5)";
2206
+ case "black":
2207
+ return "rgba(0, 0, 0, 0.5)";
2208
+ case "transparent":
2209
+ return "transparent";
2210
+ default:
2211
+ return "rgba(0, 0, 0, 0.5)";
2212
+ }
2213
+ });
2214
+ return (_ctx, _cache) => {
2215
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2216
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2217
+ default: vue.withCtx(() => [
2218
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2219
+ key: 0,
2220
+ class: "f-dialog-mask",
2221
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2222
+ onClick: handleMaskClick
2223
+ }, [
2224
+ vue.createElementVNode("div", {
2225
+ class: "f-dialog-container",
2226
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2227
+ }, ["stop"]))
2228
+ }, [
2229
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2230
+ ])
2231
+ ], 4)) : vue.createCommentVNode("", true)
2232
+ ]),
2233
+ _: 3
2234
+ })
2235
+ ]);
2236
+ };
2237
+ }
2238
+ });
2239
+ const _hoisted_1$d$5 = { class: "f-checkbox__wrapper" };
2240
+ const _hoisted_2$b$5 = ["checked", "disabled"];
2241
+ const _hoisted_3$b$5 = {
2242
+ key: 0,
2243
+ class: "f-checkbox__label"
2244
+ };
2245
+ /* @__PURE__ */ vue.defineComponent({
2246
+ __name: "FCheckbox",
2247
+ props: /* @__PURE__ */ vue.mergeModels({
2248
+ label: {},
2249
+ disabled: { type: Boolean }
2250
+ }, {
2251
+ "modelValue": __spreadValues22222({ type: Boolean }, { default: false }),
2252
+ "modelModifiers": {}
2253
+ }),
2254
+ emits: ["update:modelValue"],
2255
+ setup(__props) {
2256
+ const modelValue = vue.useModel(__props, "modelValue");
2257
+ const props = __props;
2258
+ const handleChange = (e) => {
2259
+ if (props.disabled) return;
2260
+ const target = e.target;
2261
+ modelValue.value = target.checked;
2262
+ };
2263
+ return (_ctx, _cache) => {
2264
+ return vue.openBlock(), vue.createElementBlock("label", {
2265
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2266
+ }, [
2267
+ vue.createElementVNode("span", _hoisted_1$d$5, [
2268
+ vue.createElementVNode("input", {
2269
+ type: "checkbox",
2270
+ checked: modelValue.value,
2271
+ disabled: _ctx.disabled,
2272
+ onChange: handleChange
2273
+ }, null, 40, _hoisted_2$b$5),
2274
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2275
+ ]),
2276
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$5, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2277
+ ], 2);
2278
+ };
2279
+ }
2280
+ });
2281
+ /* @__PURE__ */ vue.defineComponent({
2282
+ __name: "FDialog",
2283
+ props: /* @__PURE__ */ vue.mergeModels({
2284
+ maskClosable: { type: Boolean, default: true },
2285
+ maskColor: { default: "black" },
2286
+ showMask: { type: Boolean, default: true }
2287
+ }, {
2288
+ "modelValue": __spreadValues22222({ type: Boolean }, { default: false }),
2289
+ "modelModifiers": {}
2290
+ }),
2291
+ emits: ["update:modelValue"],
2292
+ setup(__props) {
2293
+ const props = __props;
2294
+ const visible = vue.useModel(__props, "modelValue");
2295
+ const handleMaskClick = () => {
2296
+ if (props.maskClosable) visible.value = false;
2297
+ };
2298
+ const maskBackgroundColor = vue.computed(() => {
2299
+ if (!props.showMask) return "transparent";
2300
+ switch (props.maskColor) {
2301
+ case "white":
2302
+ return "rgba(255, 255, 255, 0.5)";
2303
+ case "black":
2304
+ return "rgba(0, 0, 0, 0.5)";
2305
+ case "transparent":
2306
+ return "transparent";
2307
+ default:
2308
+ return "rgba(0, 0, 0, 0.5)";
2309
+ }
2310
+ });
2311
+ return (_ctx, _cache) => {
2312
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2313
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2314
+ default: vue.withCtx(() => [
2315
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2316
+ key: 0,
2317
+ class: "f-dialog-mask",
2318
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2319
+ onClick: handleMaskClick
2320
+ }, [
2321
+ vue.createElementVNode("div", {
2322
+ class: "f-dialog-container",
2323
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2324
+ }, ["stop"]))
2325
+ }, [
2326
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2327
+ ])
2328
+ ], 4)) : vue.createCommentVNode("", true)
2329
+ ]),
2330
+ _: 3
2331
+ })
2332
+ ]);
2333
+ };
2334
+ }
2335
+ });
2336
+ const _hoisted_1$d$6 = { class: "f-checkbox__wrapper" };
2337
+ const _hoisted_2$b$6 = ["checked", "disabled"];
2338
+ const _hoisted_3$b$6 = {
2339
+ key: 0,
2340
+ class: "f-checkbox__label"
2341
+ };
2342
+ /* @__PURE__ */ vue.defineComponent({
2343
+ __name: "FCheckbox",
2344
+ props: /* @__PURE__ */ vue.mergeModels({
2345
+ label: {},
2346
+ disabled: { type: Boolean }
2347
+ }, {
2348
+ "modelValue": __spreadValues2222({ type: Boolean }, { default: false }),
2349
+ "modelModifiers": {}
2350
+ }),
2351
+ emits: ["update:modelValue"],
2352
+ setup(__props) {
2353
+ const modelValue = vue.useModel(__props, "modelValue");
2354
+ const props = __props;
2355
+ const handleChange = (e) => {
2356
+ if (props.disabled) return;
2357
+ const target = e.target;
2358
+ modelValue.value = target.checked;
2359
+ };
2360
+ return (_ctx, _cache) => {
2361
+ return vue.openBlock(), vue.createElementBlock("label", {
2362
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2363
+ }, [
2364
+ vue.createElementVNode("span", _hoisted_1$d$6, [
2365
+ vue.createElementVNode("input", {
2366
+ type: "checkbox",
2367
+ checked: modelValue.value,
2368
+ disabled: _ctx.disabled,
2369
+ onChange: handleChange
2370
+ }, null, 40, _hoisted_2$b$6),
2371
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2372
+ ]),
2373
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$6, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2374
+ ], 2);
2375
+ };
2376
+ }
2377
+ });
2378
+ /* @__PURE__ */ vue.defineComponent({
2379
+ __name: "FDialog",
2380
+ props: /* @__PURE__ */ vue.mergeModels({
2381
+ maskClosable: { type: Boolean, default: true },
2382
+ maskColor: { default: "black" },
2383
+ showMask: { type: Boolean, default: true }
2384
+ }, {
2385
+ "modelValue": __spreadValues2222({ type: Boolean }, { default: false }),
2386
+ "modelModifiers": {}
2387
+ }),
2388
+ emits: ["update:modelValue"],
2389
+ setup(__props) {
2390
+ const props = __props;
2391
+ const visible = vue.useModel(__props, "modelValue");
2392
+ const handleMaskClick = () => {
2393
+ if (props.maskClosable) visible.value = false;
2394
+ };
2395
+ const maskBackgroundColor = vue.computed(() => {
2396
+ if (!props.showMask) return "transparent";
2397
+ switch (props.maskColor) {
2398
+ case "white":
2399
+ return "rgba(255, 255, 255, 0.5)";
2400
+ case "black":
2401
+ return "rgba(0, 0, 0, 0.5)";
2402
+ case "transparent":
2403
+ return "transparent";
2404
+ default:
2405
+ return "rgba(0, 0, 0, 0.5)";
2406
+ }
2407
+ });
2408
+ return (_ctx, _cache) => {
2409
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2410
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2411
+ default: vue.withCtx(() => [
2412
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2413
+ key: 0,
2414
+ class: "f-dialog-mask",
2415
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2416
+ onClick: handleMaskClick
2417
+ }, [
2418
+ vue.createElementVNode("div", {
2419
+ class: "f-dialog-container",
2420
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2421
+ }, ["stop"]))
2422
+ }, [
2423
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2424
+ ])
2425
+ ], 4)) : vue.createCommentVNode("", true)
2426
+ ]),
2427
+ _: 3
2428
+ })
2429
+ ]);
2430
+ };
2431
+ }
2432
+ });
2433
+ const _hoisted_1$d$7 = { class: "f-checkbox__wrapper" };
2434
+ const _hoisted_2$b$7 = ["checked", "disabled"];
2435
+ const _hoisted_3$b$7 = {
2436
+ key: 0,
2437
+ class: "f-checkbox__label"
2438
+ };
2439
+ /* @__PURE__ */ vue.defineComponent({
2440
+ __name: "FCheckbox",
2441
+ props: /* @__PURE__ */ vue.mergeModels({
2442
+ label: {},
2443
+ disabled: { type: Boolean }
2444
+ }, {
2445
+ "modelValue": __spreadValues222({ type: Boolean }, { default: false }),
2446
+ "modelModifiers": {}
2447
+ }),
2448
+ emits: ["update:modelValue"],
2449
+ setup(__props) {
2450
+ const modelValue = vue.useModel(__props, "modelValue");
2451
+ const props = __props;
2452
+ const handleChange = (e) => {
2453
+ if (props.disabled) return;
2454
+ const target = e.target;
2455
+ modelValue.value = target.checked;
2456
+ };
2457
+ return (_ctx, _cache) => {
2458
+ return vue.openBlock(), vue.createElementBlock("label", {
2459
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2460
+ }, [
2461
+ vue.createElementVNode("span", _hoisted_1$d$7, [
2462
+ vue.createElementVNode("input", {
2463
+ type: "checkbox",
2464
+ checked: modelValue.value,
2465
+ disabled: _ctx.disabled,
2466
+ onChange: handleChange
2467
+ }, null, 40, _hoisted_2$b$7),
2468
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2469
+ ]),
2470
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b$7, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2471
+ ], 2);
2472
+ };
2473
+ }
2474
+ });
2475
+ /* @__PURE__ */ vue.defineComponent({
2476
+ __name: "FDialog",
2477
+ props: /* @__PURE__ */ vue.mergeModels({
2478
+ maskClosable: { type: Boolean, default: true },
2479
+ maskColor: { default: "black" },
2480
+ showMask: { type: Boolean, default: true }
2481
+ }, {
2482
+ "modelValue": __spreadValues222({ type: Boolean }, { default: false }),
2483
+ "modelModifiers": {}
2484
+ }),
2485
+ emits: ["update:modelValue"],
2486
+ setup(__props) {
2487
+ const props = __props;
2488
+ const visible = vue.useModel(__props, "modelValue");
2489
+ const handleMaskClick = () => {
2490
+ if (props.maskClosable) visible.value = false;
2491
+ };
2492
+ const maskBackgroundColor = vue.computed(() => {
2493
+ if (!props.showMask) return "transparent";
2494
+ switch (props.maskColor) {
2495
+ case "white":
2496
+ return "rgba(255, 255, 255, 0.5)";
2497
+ case "black":
2498
+ return "rgba(0, 0, 0, 0.5)";
2499
+ case "transparent":
2500
+ return "transparent";
2501
+ default:
2502
+ return "rgba(0, 0, 0, 0.5)";
2503
+ }
2504
+ });
2505
+ return (_ctx, _cache) => {
2506
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2507
+ vue.createVNode(vue.Transition, { name: "fade" }, {
2508
+ default: vue.withCtx(() => [
2509
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2510
+ key: 0,
2511
+ class: "f-dialog-mask",
2512
+ style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2513
+ onClick: handleMaskClick
2514
+ }, [
2515
+ vue.createElementVNode("div", {
2516
+ class: "f-dialog-container",
2517
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2518
+ }, ["stop"]))
2519
+ }, [
2520
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2521
+ ])
2522
+ ], 4)) : vue.createCommentVNode("", true)
2523
+ ]),
2524
+ _: 3
2525
+ })
2526
+ ]);
2527
+ };
2528
+ }
2529
+ });
2530
+ const _hoisted_1$i$1 = ["type", "disabled"];
2531
+ const _hoisted_2$e$1 = { class: "f-button__inner" };
2532
+ const _hoisted_3$e$1 = {
2533
+ key: 0,
2534
+ class: "f-loader"
2535
+ };
2536
+ const _hoisted_4$8$1 = {
2537
+ key: 2,
2538
+ class: "f-button__text"
2539
+ };
2540
+ const _sfc_main$o$1 = /* @__PURE__ */ vue.defineComponent({
2541
+ __name: "FButton",
2542
+ props: {
2543
+ type: {},
2544
+ size: {},
2545
+ nativeType: { default: "button" },
2546
+ loading: { type: Boolean },
2547
+ disabled: { type: Boolean },
2548
+ round: { type: [Boolean, Number] },
2549
+ circle: { type: Boolean },
2550
+ plain: { type: Boolean },
2551
+ text: { type: Boolean },
2552
+ block: { type: Boolean },
2553
+ icon: {},
2554
+ active: { type: Boolean },
2555
+ bgColor: {},
2556
+ color: {}
2557
+ },
2558
+ setup(__props) {
2559
+ const SIZE_MAP = {
2560
+ small: { h: "24px", p: "0 8px", f: "12px", i: "14px" },
2561
+ normal: { h: "32px", p: "0 12px", f: "13px", i: "16px" },
2562
+ large: { h: "40px", p: "0 16px", f: "14px", i: "18px" }
2563
+ };
2564
+ const props = __props;
2565
+ const slots = vue.useSlots();
2566
+ const groupContext = vue.inject("FButtonGroupContext", null);
2567
+ const mergedSize = vue.computed(() => {
2568
+ var _a, _b;
2569
+ return (_b = (_a = props.size) != null ? _a : groupContext == null ? void 0 : groupContext.size) != null ? _b : "normal";
2570
+ });
2571
+ const mergedType = vue.computed(() => {
2572
+ var _a, _b;
2573
+ return (_b = (_a = props.type) != null ? _a : groupContext == null ? void 0 : groupContext.type) != null ? _b : "default";
2574
+ });
2575
+ const isDisabled = vue.computed(() => props.disabled || props.loading || (groupContext == null ? void 0 : groupContext.disabled));
2576
+ const hasText = vue.computed(() => !!slots.default);
2577
+ const buttonStyle = vue.computed(() => {
2578
+ const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
2579
+ const style = {
2580
+ height: s.h,
2581
+ padding: props.circle ? "0" : s.p,
2582
+ fontSize: s.f,
2583
+ minWidth: props.circle ? s.h : "auto",
2584
+ backgroundColor: props.bgColor,
2585
+ color: props.color
2586
+ };
2587
+ if (props.circle) {
2588
+ style.borderRadius = "50%";
2589
+ style.width = s.h;
2590
+ } else if (typeof props.round === "number") {
2591
+ style.borderRadius = `${props.round}px`;
2592
+ } else if (props.round === true) {
2593
+ style.borderRadius = "999px";
2594
+ }
2595
+ return style;
2596
+ });
2597
+ const iconSize = vue.computed(() => {
2598
+ const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
2599
+ return s.i;
2600
+ });
2601
+ return (_ctx, _cache) => {
2602
+ return vue.openBlock(), vue.createElementBlock("button", {
2603
+ type: _ctx.nativeType,
2604
+ class: vue.normalizeClass(["f-button", [
2605
+ `f-button--${vue.unref(mergedType)}`,
2606
+ `f-button--${vue.unref(mergedSize)}`,
2607
+ {
2608
+ "is-disabled": vue.unref(isDisabled),
2609
+ "is-loading": _ctx.loading,
2610
+ "is-active": _ctx.active,
2611
+ "is-text": _ctx.text,
2612
+ "is-icon-only": !vue.unref(hasText) && (_ctx.icon || _ctx.$slots.icon)
2613
+ }
2614
+ ]]),
2615
+ disabled: vue.unref(isDisabled),
2616
+ style: vue.normalizeStyle(vue.unref(buttonStyle))
2617
+ }, [
2618
+ vue.createElementVNode("span", _hoisted_2$e$1, [
2619
+ _ctx.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$e$1)) : vue.createCommentVNode("", true),
2620
+ !_ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
2621
+ _ctx.$slots.icon || _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon$1), {
2622
+ key: 0,
2623
+ class: "f-button__icon",
2624
+ style: vue.normalizeStyle({ fontSize: vue.unref(iconSize) })
2625
+ }, {
2626
+ default: vue.withCtx(() => [
2627
+ vue.renderSlot(_ctx.$slots, "icon", {}, () => [
2628
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.createCommentVNode("", true)
2629
+ ], true)
2630
+ ]),
2631
+ _: 3
2632
+ }, 8, ["style"])) : vue.createCommentVNode("", true)
2633
+ ], 64)) : vue.createCommentVNode("", true),
2634
+ vue.unref(hasText) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$8$1, [
2635
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2636
+ ])) : vue.createCommentVNode("", true)
2637
+ ])
2638
+ ], 14, _hoisted_1$i$1);
2639
+ };
2640
+ }
2641
+ });
2642
+ const FButton$1 = /* @__PURE__ */ _export_sfc(_sfc_main$o$1, [["__scopeId", "data-v-41be5001"]]);
2643
+ const _hoisted_1$e$1 = { class: "f-checkbox__wrapper" };
2644
+ const _hoisted_2$c$1 = ["checked", "disabled"];
2645
+ const _hoisted_3$c$1 = {
2646
+ key: 0,
2647
+ class: "f-checkbox__label"
2648
+ };
2649
+ /* @__PURE__ */ vue.defineComponent({
2650
+ __name: "FCheckbox",
2651
+ props: /* @__PURE__ */ vue.mergeModels({
2652
+ label: {},
2653
+ disabled: { type: Boolean }
2654
+ }, {
2655
+ "modelValue": __spreadValues22({ type: Boolean }, { default: false }),
2656
+ "modelModifiers": {}
2657
+ }),
2658
+ emits: ["update:modelValue"],
2659
+ setup(__props) {
2660
+ const modelValue = vue.useModel(__props, "modelValue");
2661
+ const props = __props;
2662
+ const handleChange = (e) => {
2663
+ if (props.disabled) return;
2664
+ const target = e.target;
2665
+ modelValue.value = target.checked;
2666
+ };
2667
+ return (_ctx, _cache) => {
2668
+ return vue.openBlock(), vue.createElementBlock("label", {
2669
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
2670
+ }, [
2671
+ vue.createElementVNode("span", _hoisted_1$e$1, [
2672
+ vue.createElementVNode("input", {
2673
+ type: "checkbox",
2674
+ checked: modelValue.value,
2675
+ disabled: _ctx.disabled,
2676
+ onChange: handleChange
2677
+ }, null, 40, _hoisted_2$c$1),
2678
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
2679
+ ]),
2680
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$c$1, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
2681
+ ], 2);
2682
+ };
2683
+ }
2684
+ });
2685
+ const _hoisted_1$j = {
2686
+ key: 0,
2687
+ class: "f-dialog__icon"
2688
+ };
2689
+ const _hoisted_2$f = { class: "f-dialog__title" };
2690
+ const _hoisted_3$f = { class: "f-dialog__body" };
2691
+ const _hoisted_4$9 = { key: 0 };
2692
+ const _hoisted_5$8 = {
2693
+ key: 2,
2694
+ class: "f-dialog__footer"
2695
+ };
2696
+ /* @__PURE__ */ vue.defineComponent({
2697
+ __name: "FDialog",
2698
+ props: /* @__PURE__ */ vue.mergeModels({
2699
+ title: { default: "提示" },
2700
+ content: {},
2701
+ width: { default: "500px" },
2702
+ type: { default: "default" },
2703
+ confirmText: { default: "确定" },
2704
+ cancelText: { default: "取消" },
2705
+ showCancel: { type: Boolean, default: true },
2706
+ showClose: { type: Boolean, default: true },
2707
+ closeOnClickModal: { type: Boolean, default: true },
2708
+ closeOnEsc: { type: Boolean, default: true },
2709
+ center: { type: Boolean, default: false },
2710
+ fullscreen: { type: Boolean, default: false },
2711
+ destroyOnClose: { type: Boolean, default: false },
2712
+ beforeClose: {}
2713
+ }, {
2714
+ "modelValue": __spreadValues22({ type: Boolean }, { required: true }),
2715
+ "modelModifiers": {}
2716
+ }),
2717
+ emits: /* @__PURE__ */ vue.mergeModels(["open", "close", "confirm", "cancel"], ["update:modelValue"]),
2718
+ setup(__props, { emit: __emit }) {
2719
+ const props = __props;
2720
+ const emit = __emit;
2721
+ const visible = vue.useModel(__props, "modelValue");
2722
+ const handleClose = () => {
2723
+ visible.value = false;
2724
+ emit("close");
2725
+ };
2726
+ const handleConfirm = () => {
2727
+ emit("confirm");
2728
+ if (props.beforeClose) {
2729
+ props.beforeClose(() => {
2730
+ visible.value = false;
2731
+ });
2732
+ } else {
2733
+ visible.value = false;
2734
+ }
2735
+ };
2736
+ const handleCancel = () => {
2737
+ emit("cancel");
2738
+ handleClose();
2739
+ };
2740
+ const handleOverlayClick = (e) => {
2741
+ if (props.closeOnClickModal && e.target === e.currentTarget) {
2742
+ handleClose();
2743
+ }
2744
+ };
2745
+ const handleKeydown = (e) => {
2746
+ if (props.closeOnEsc && e.key === "Escape") {
2747
+ handleClose();
2748
+ }
2749
+ };
2750
+ vue.onMounted(() => {
2751
+ if (props.closeOnEsc) {
2752
+ window.addEventListener("keydown", handleKeydown);
2753
+ }
2754
+ emit("open");
2755
+ });
2756
+ vue.onBeforeUnmount(() => {
2757
+ if (props.closeOnEsc) {
2758
+ window.removeEventListener("keydown", handleKeydown);
2759
+ }
2760
+ });
2761
+ const iconMap = {
2762
+ info: ionicons5.InformationCircleOutline,
2763
+ success: ionicons5.CheckmarkCircleOutline,
2764
+ warning: ionicons5.WarningOutline,
2765
+ failed: ionicons5.AlertCircleOutline,
2766
+ primary: ionicons5.InformationCircleOutline,
2767
+ default: ionicons5.InformationCircleOutline
2768
+ };
2769
+ const hasIcon = vue.computed(() => props.type && props.type !== "default");
2770
+ return (_ctx, _cache) => {
2771
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2772
+ vue.createVNode(vue.Transition, { name: "f-dialog-fade" }, {
2773
+ default: vue.withCtx(() => [
2774
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2775
+ key: 0,
2776
+ class: "f-dialog-overlay",
2777
+ onClick: handleOverlayClick
2778
+ }, [
2779
+ vue.createVNode(vue.Transition, { name: "f-dialog-zoom" }, {
2780
+ default: vue.withCtx(() => [
2781
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2782
+ key: 0,
2783
+ class: vue.normalizeClass(["f-dialog", [
2784
+ `f-dialog--${_ctx.type}`,
2785
+ {
2786
+ "is-center": _ctx.center,
2787
+ "is-fullscreen": _ctx.fullscreen
2788
+ }
2789
+ ]]),
2790
+ style: vue.normalizeStyle({ width: _ctx.fullscreen ? "100%" : _ctx.width })
2791
+ }, [
2792
+ _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
2793
+ key: 0,
2794
+ type: "button",
2795
+ class: "f-dialog__close",
2796
+ onClick: handleClose
2797
+ }, [
2798
+ vue.createVNode(FIcon, null, {
2799
+ default: vue.withCtx(() => [
2800
+ vue.createVNode(vue.unref(ionicons5.CloseOutline))
2801
+ ]),
2802
+ _: 1
2803
+ })
2804
+ ])) : vue.createCommentVNode("", true),
2805
+ _ctx.$slots.header || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", {
2806
+ key: 1,
2807
+ class: vue.normalizeClass(["f-dialog__header", { "has-icon": vue.unref(hasIcon) }])
2808
+ }, [
2809
+ vue.renderSlot(_ctx.$slots, "header", {}, () => [
2810
+ vue.unref(hasIcon) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
2811
+ vue.createVNode(FIcon, null, {
2812
+ default: vue.withCtx(() => [
2813
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(iconMap[_ctx.type])))
2814
+ ]),
2815
+ _: 1
2816
+ })
2817
+ ])) : vue.createCommentVNode("", true),
2818
+ vue.createElementVNode("h3", _hoisted_2$f, vue.toDisplayString(_ctx.title), 1)
2819
+ ], true)
2820
+ ], 2)) : vue.createCommentVNode("", true),
2821
+ vue.createElementVNode("div", _hoisted_3$f, [
2822
+ vue.renderSlot(_ctx.$slots, "default", {}, () => [
2823
+ _ctx.content ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4$9, vue.toDisplayString(_ctx.content), 1)) : vue.createCommentVNode("", true)
2824
+ ], true)
2825
+ ]),
2826
+ _ctx.$slots.footer || _ctx.showCancel ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$8, [
2827
+ vue.renderSlot(_ctx.$slots, "footer", {}, () => [
2828
+ _ctx.showCancel ? (vue.openBlock(), vue.createBlock(FButton$1, {
2829
+ key: 0,
2830
+ onClick: handleCancel
2831
+ }, {
2832
+ default: vue.withCtx(() => [
2833
+ vue.createTextVNode(vue.toDisplayString(_ctx.cancelText), 1)
2834
+ ]),
2835
+ _: 1
2836
+ })) : vue.createCommentVNode("", true),
2837
+ vue.createVNode(FButton$1, {
2838
+ type: "primary",
2839
+ onClick: handleConfirm
2840
+ }, {
2841
+ default: vue.withCtx(() => [
2842
+ vue.createTextVNode(vue.toDisplayString(_ctx.confirmText), 1)
2843
+ ]),
2844
+ _: 1
2845
+ })
2846
+ ], true)
2847
+ ])) : vue.createCommentVNode("", true)
2848
+ ], 6)) : vue.createCommentVNode("", true)
2849
+ ]),
2850
+ _: 3
2851
+ })
2852
+ ])) : vue.createCommentVNode("", true)
2853
+ ]),
2854
+ _: 3
2855
+ })
2856
+ ]);
2857
+ };
2858
+ }
2859
+ });
2860
+ const _hoisted_1$i$2 = ["type", "disabled"];
2861
+ const _hoisted_2$e$2 = { class: "f-button__inner" };
2862
+ const _hoisted_3$e$2 = {
2863
+ key: 0,
2864
+ class: "f-loader"
2865
+ };
2866
+ const _hoisted_4$8$2 = {
2867
+ key: 2,
2868
+ class: "f-button__text"
2869
+ };
2870
+ const _sfc_main$o$2 = /* @__PURE__ */ vue.defineComponent({
2871
+ __name: "FButton",
2872
+ props: {
2873
+ type: {},
2874
+ size: {},
2875
+ nativeType: { default: "button" },
2876
+ loading: { type: Boolean },
2877
+ disabled: { type: Boolean },
2878
+ round: { type: [Boolean, Number] },
2879
+ circle: { type: Boolean },
2880
+ plain: { type: Boolean },
2881
+ text: { type: Boolean },
2882
+ block: { type: Boolean },
2883
+ icon: {},
2884
+ active: { type: Boolean },
2885
+ bgColor: {},
2886
+ color: {}
2887
+ },
2888
+ setup(__props) {
2889
+ const SIZE_MAP = {
2890
+ small: { h: "24px", p: "0 8px", f: "12px", i: "14px" },
2891
+ normal: { h: "32px", p: "0 12px", f: "13px", i: "16px" },
2892
+ large: { h: "40px", p: "0 16px", f: "14px", i: "18px" }
2893
+ };
2894
+ const props = __props;
2895
+ const slots = vue.useSlots();
2896
+ const groupContext = vue.inject("FButtonGroupContext", null);
2897
+ const mergedSize = vue.computed(() => {
2898
+ var _a, _b;
2899
+ return (_b = (_a = props.size) != null ? _a : groupContext == null ? void 0 : groupContext.size) != null ? _b : "normal";
2900
+ });
2901
+ const mergedType = vue.computed(() => {
2902
+ var _a, _b;
2903
+ return (_b = (_a = props.type) != null ? _a : groupContext == null ? void 0 : groupContext.type) != null ? _b : "default";
2904
+ });
2905
+ const isDisabled = vue.computed(() => props.disabled || props.loading || (groupContext == null ? void 0 : groupContext.disabled));
2906
+ const hasText = vue.computed(() => !!slots.default);
2907
+ const buttonStyle = vue.computed(() => {
2908
+ const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
2909
+ const style = {
2910
+ height: s.h,
2911
+ padding: props.circle ? "0" : s.p,
2912
+ fontSize: s.f,
2913
+ minWidth: props.circle ? s.h : "auto",
2914
+ backgroundColor: props.bgColor,
2915
+ color: props.color
2916
+ };
2917
+ if (props.circle) {
2918
+ style.borderRadius = "50%";
2919
+ style.width = s.h;
2920
+ } else if (typeof props.round === "number") {
2921
+ style.borderRadius = `${props.round}px`;
2922
+ } else if (props.round === true) {
2923
+ style.borderRadius = "999px";
2924
+ }
2925
+ return style;
2926
+ });
2927
+ const iconSize = vue.computed(() => {
2928
+ const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
2929
+ return s.i;
2930
+ });
2931
+ return (_ctx, _cache) => {
2932
+ return vue.openBlock(), vue.createElementBlock("button", {
2933
+ type: _ctx.nativeType,
2934
+ class: vue.normalizeClass(["f-button", [
2935
+ `f-button--${vue.unref(mergedType)}`,
2936
+ `f-button--${vue.unref(mergedSize)}`,
2937
+ {
2938
+ "is-disabled": vue.unref(isDisabled),
2939
+ "is-loading": _ctx.loading,
2940
+ "is-active": _ctx.active,
2941
+ "is-text": _ctx.text,
2942
+ "is-icon-only": !vue.unref(hasText) && (_ctx.icon || _ctx.$slots.icon)
2943
+ }
2944
+ ]]),
2945
+ disabled: vue.unref(isDisabled),
2946
+ style: vue.normalizeStyle(vue.unref(buttonStyle))
2947
+ }, [
2948
+ vue.createElementVNode("span", _hoisted_2$e$2, [
2949
+ _ctx.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$e$2)) : vue.createCommentVNode("", true),
2950
+ !_ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
2951
+ _ctx.$slots.icon || _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon), {
2952
+ key: 0,
2953
+ class: "f-button__icon",
2954
+ style: vue.normalizeStyle({ fontSize: vue.unref(iconSize) })
2955
+ }, {
2956
+ default: vue.withCtx(() => [
2957
+ vue.renderSlot(_ctx.$slots, "icon", {}, () => [
2958
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.createCommentVNode("", true)
2959
+ ], true)
2960
+ ]),
2961
+ _: 3
2962
+ }, 8, ["style"])) : vue.createCommentVNode("", true)
2963
+ ], 64)) : vue.createCommentVNode("", true),
2964
+ vue.unref(hasText) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$8$2, [
2965
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2966
+ ])) : vue.createCommentVNode("", true)
2967
+ ])
2968
+ ], 14, _hoisted_1$i$2);
2969
+ };
2970
+ }
2971
+ });
2972
+ const FButton$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$o$2, [["__scopeId", "data-v-41be5001"]]);
2973
+ const _hoisted_1$e$2 = { class: "f-checkbox__wrapper" };
2974
+ const _hoisted_2$c$2 = ["checked", "disabled"];
2975
+ const _hoisted_3$c$2 = {
2976
+ key: 0,
2977
+ class: "f-checkbox__label"
2978
+ };
2979
+ /* @__PURE__ */ vue.defineComponent({
2980
+ __name: "FCheckbox",
2981
+ props: /* @__PURE__ */ vue.mergeModels({
2982
+ label: {},
2983
+ disabled: { type: Boolean }
2984
+ }, {
2985
+ "modelValue": __spreadValues2({ type: Boolean }, { default: false }),
2986
+ "modelModifiers": {}
2987
+ }),
2988
+ emits: ["update:modelValue"],
2989
+ setup(__props) {
2990
+ const modelValue = vue.useModel(__props, "modelValue");
2991
+ const props = __props;
2992
+ const handleChange = (e) => {
2993
+ if (props.disabled) return;
2994
+ const target = e.target;
2995
+ modelValue.value = target.checked;
2996
+ };
2997
+ return (_ctx, _cache) => {
2998
+ return vue.openBlock(), vue.createElementBlock("label", {
2999
+ class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
3000
+ }, [
3001
+ vue.createElementVNode("span", _hoisted_1$e$2, [
3002
+ vue.createElementVNode("input", {
3003
+ type: "checkbox",
3004
+ checked: modelValue.value,
3005
+ disabled: _ctx.disabled,
3006
+ onChange: handleChange
3007
+ }, null, 40, _hoisted_2$c$2),
3008
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
3009
+ ]),
3010
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$c$2, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
3011
+ ], 2);
3012
+ };
3013
+ }
3014
+ });
3015
+ const _hoisted_1$2$1 = { class: "f-message__content" };
3016
+ const _sfc_main$2$1 = /* @__PURE__ */ vue.defineComponent({
3017
+ __name: "FMessage",
3018
+ props: {
3019
+ type: { default: "info" },
3020
+ message: {},
3021
+ duration: { default: 3e3 },
3022
+ closable: { type: Boolean, default: false },
3023
+ showIcon: { type: Boolean, default: true },
3024
+ offset: { default: 20 }
3025
+ },
3026
+ emits: ["close", "destroy"],
3027
+ setup(__props, { expose: __expose, emit: __emit }) {
3028
+ const props = __props;
3029
+ const emit = __emit;
3030
+ const visible = vue.ref(false);
3031
+ let timer = null;
3032
+ const iconName = vue.computed(() => {
3033
+ const map = {
3034
+ info: ionicons5.InformationCircle,
3035
+ success: ionicons5.CheckmarkCircle,
3036
+ warning: ionicons5.Warning,
3037
+ failed: ionicons5.CloseCircle,
3038
+ default: ionicons5.InformationCircle,
3039
+ primary: ionicons5.InformationCircle
3040
+ };
3041
+ return map[props.type];
3042
+ });
3043
+ const rootStyle = vue.computed(() => ({
3044
+ top: `${props.offset}px`
3045
+ }));
3046
+ const startTimer = () => {
3047
+ if (props.duration <= 0) return;
3048
+ timer = setTimeout(() => {
3049
+ close();
3050
+ }, props.duration);
3051
+ };
3052
+ const clearTimer = () => {
3053
+ if (timer) {
3054
+ clearTimeout(timer);
3055
+ timer = null;
3056
+ }
3057
+ };
3058
+ const close = () => {
3059
+ clearTimer();
3060
+ visible.value = false;
3061
+ emit("close");
3062
+ };
3063
+ const handleAfterLeave = () => emit("destroy");
3064
+ vue.onMounted(() => {
3065
+ visible.value = true;
3066
+ startTimer();
3067
+ });
3068
+ vue.onBeforeUnmount(() => {
3069
+ clearTimer();
3070
+ });
3071
+ __expose({ close });
3072
+ return (_ctx, _cache) => {
3073
+ return vue.openBlock(), vue.createBlock(vue.Transition, {
3074
+ name: "f-message-fade",
3075
+ onAfterLeave: handleAfterLeave
3076
+ }, {
3077
+ default: vue.withCtx(() => [
3078
+ vue.unref(visible) ? (vue.openBlock(), vue.createElementBlock("div", {
3079
+ key: 0,
3080
+ class: vue.normalizeClass(["f-message", [`f-message--${_ctx.type}`]]),
3081
+ style: vue.normalizeStyle(vue.unref(rootStyle)),
3082
+ role: "alert",
3083
+ onMouseenter: clearTimer,
3084
+ onMouseleave: startTimer
3085
+ }, [
3086
+ _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon$2, {
3087
+ key: 0,
3088
+ class: "f-message__icon"
3089
+ }, {
3090
+ default: vue.withCtx(() => [
3091
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(iconName))))
3092
+ ]),
3093
+ _: 1
3094
+ })) : vue.createCommentVNode("", true),
3095
+ vue.createElementVNode("span", _hoisted_1$2$1, vue.toDisplayString(_ctx.message), 1),
3096
+ _ctx.closable ? (vue.openBlock(), vue.createElementBlock("button", {
3097
+ key: 1,
3098
+ type: "button",
3099
+ class: "f-message__close",
3100
+ "aria-label": "close",
3101
+ onClick: close
3102
+ }, [
3103
+ vue.createVNode(FIcon$2, null, {
3104
+ default: vue.withCtx(() => [
3105
+ vue.createVNode(vue.unref(ionicons5.Close))
3106
+ ]),
3107
+ _: 1
3108
+ })
3109
+ ])) : vue.createCommentVNode("", true)
3110
+ ], 38)) : vue.createCommentVNode("", true)
3111
+ ]),
3112
+ _: 1
3113
+ });
3114
+ };
3115
+ }
3116
+ });
3117
+ const FMessageComp$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$2$1, [["__scopeId", "data-v-97556afa"]]);
3118
+ const GAP$1$1 = 16;
3119
+ const BASE_OFFSET$1$1 = 20;
3120
+ let seed$1$1 = 0;
3121
+ const instances$1 = [];
3122
+ const normalizeOptions$1$1 = (options) => {
3123
+ return typeof options === "string" ? { message: options } : options;
3124
+ };
3125
+ const repositionAll$1 = () => {
3126
+ let offset = BASE_OFFSET$1$1;
3127
+ instances$1.forEach((item) => {
3128
+ const vm = item.vnode.component;
3129
+ if (vm) {
3130
+ vm.props.offset = offset;
3131
+ }
3132
+ offset += item.height + GAP$1$1;
3133
+ });
3134
+ };
3135
+ const removeInstance$1$1 = (id) => {
3136
+ const index = instances$1.findIndex((item) => item.id === id);
3137
+ if (index === -1) return;
3138
+ const { container } = instances$1[index];
3139
+ vue.render(null, container);
3140
+ container.remove();
3141
+ instances$1.splice(index, 1);
3142
+ repositionAll$1();
3143
+ };
3144
+ const createInstance$1$1 = (options) => {
3145
+ var _a;
3146
+ const id = seed$1$1++;
3147
+ const container = document.createElement("div");
3148
+ const offset = instances$1.length === 0 ? BASE_OFFSET$1$1 : (() => {
3149
+ var _a2;
3150
+ const last = instances$1[instances$1.length - 1];
3151
+ return ((_a2 = last.vnode.component) == null ? void 0 : _a2.props.offset) + last.height + GAP$1$1;
3152
+ })();
3153
+ const vnode = vue.createVNode(FMessageComp$1, __spreadProps2(__spreadValues2({}, options), {
3154
+ offset,
3155
+ onClose: () => {
3156
+ var _a2;
3157
+ (_a2 = options.onClose) == null ? void 0 : _a2.call(options);
3158
+ },
3159
+ onDestroy: () => {
3160
+ removeInstance$1$1(id);
3161
+ }
3162
+ }));
3163
+ vue.render(vnode, container);
3164
+ document.body.appendChild(container);
3165
+ const el = vnode.el;
3166
+ const height = (_a = el == null ? void 0 : el.offsetHeight) != null ? _a : 44;
3167
+ instances$1.push({ id, vnode, container, height });
3168
+ return {
3169
+ id,
3170
+ close: () => {
3171
+ var _a2, _b, _c;
3172
+ (_c = (_b = (_a2 = vnode.component) == null ? void 0 : _a2.exposed) == null ? void 0 : _b.close) == null ? void 0 : _c.call(_b);
3173
+ }
3174
+ };
3175
+ };
3176
+ const FMessage$1 = (options) => {
3177
+ return createInstance$1$1(normalizeOptions$1$1(options));
3178
+ };
3179
+ const withType$1$1 = (type) => (options) => createInstance$1$1(__spreadProps2(__spreadValues2({}, normalizeOptions$1$1(options)), { type }));
3180
+ FMessage$1.info = withType$1$1("info");
3181
+ FMessage$1.success = withType$1$1("success");
3182
+ FMessage$1.warning = withType$1$1("warning");
3183
+ FMessage$1.failed = withType$1$1("failed");
3184
+ FMessage$1.closeAll = () => {
3185
+ [...instances$1].forEach((item) => {
3186
+ var _a, _b, _c;
3187
+ (_c = (_b = (_a = item.vnode.component) == null ? void 0 : _a.exposed) == null ? void 0 : _b.close) == null ? void 0 : _c.call(_b);
3188
+ });
3189
+ };
3190
+ const _hoisted_1$1$1 = { class: "f-notification__body" };
3191
+ const _hoisted_2$1$1 = {
3192
+ key: 0,
3193
+ class: "f-notification__title"
3194
+ };
3195
+ const _hoisted_3$1$1 = { class: "f-notification__content" };
3196
+ const _sfc_main$1$1 = /* @__PURE__ */ vue.defineComponent({
3197
+ __name: "FNotification",
3198
+ props: {
3199
+ type: { default: "info" },
3200
+ title: {},
3201
+ message: {},
3202
+ duration: { default: 4500 },
3203
+ closable: { type: Boolean, default: true },
3204
+ showIcon: { type: Boolean, default: true },
3205
+ position: { default: "top-right" },
3206
+ offset: { default: 20 }
3207
+ },
3208
+ emits: ["close", "destroy", "click"],
3209
+ setup(__props, { expose: __expose, emit: __emit }) {
3210
+ const props = __props;
3211
+ const emit = __emit;
3212
+ const visible = vue.ref(false);
3213
+ let timer = null;
3214
+ const iconName = vue.computed(() => {
3215
+ const map = {
3216
+ info: ionicons5.InformationCircle,
3217
+ success: ionicons5.CheckmarkCircle,
3218
+ warning: ionicons5.Warning,
3219
+ failed: ionicons5.CloseCircle,
3220
+ default: ionicons5.InformationCircle,
3221
+ primary: ionicons5.InformationCircle
3222
+ };
3223
+ return map[props.type];
3224
+ });
3225
+ const isTop = vue.computed(() => props.position.startsWith("top"));
3226
+ const isRight = vue.computed(() => props.position.endsWith("right"));
3227
+ const rootStyle = vue.computed(() => ({
3228
+ [isTop.value ? "top" : "bottom"]: `${props.offset}px`,
3229
+ [isRight.value ? "right" : "left"]: "20px"
3230
+ }));
3231
+ const startTimer = () => {
3232
+ if (props.duration <= 0) return;
3233
+ timer = setTimeout(() => {
3234
+ close();
3235
+ }, props.duration);
3236
+ };
3237
+ const clearTimer = () => {
3238
+ if (timer) {
3239
+ clearTimeout(timer);
3240
+ timer = null;
3241
+ }
3242
+ };
3243
+ const close = () => {
3244
+ clearTimer();
3245
+ visible.value = false;
3246
+ emit("close");
3247
+ };
3248
+ const handleAfterLeave = () => emit("destroy");
3249
+ const handleClick = () => emit("click");
3250
+ vue.onMounted(() => {
3251
+ visible.value = true;
3252
+ startTimer();
3253
+ });
3254
+ vue.onBeforeUnmount(() => {
3255
+ clearTimer();
3256
+ });
3257
+ __expose({ close });
3258
+ return (_ctx, _cache) => {
3259
+ return vue.openBlock(), vue.createBlock(vue.Transition, {
3260
+ name: `f-notification-${_ctx.position}`,
3261
+ onAfterLeave: handleAfterLeave
3262
+ }, {
3263
+ default: vue.withCtx(() => [
3264
+ vue.unref(visible) ? (vue.openBlock(), vue.createElementBlock("div", {
3265
+ key: 0,
3266
+ class: vue.normalizeClass(["f-notification", [`f-notification--${_ctx.type}`]]),
3267
+ style: vue.normalizeStyle(vue.unref(rootStyle)),
3268
+ role: "alert",
3269
+ onMouseenter: clearTimer,
3270
+ onMouseleave: startTimer,
3271
+ onClick: handleClick
3272
+ }, [
3273
+ _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon$2, {
3274
+ key: 0,
3275
+ class: "f-notification__icon"
3276
+ }, {
3277
+ default: vue.withCtx(() => [
3278
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(iconName))))
3279
+ ]),
3280
+ _: 1
3281
+ })) : vue.createCommentVNode("", true),
3282
+ vue.createElementVNode("div", _hoisted_1$1$1, [
3283
+ _ctx.title ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$1$1, vue.toDisplayString(_ctx.title), 1)) : vue.createCommentVNode("", true),
3284
+ vue.createElementVNode("p", _hoisted_3$1$1, vue.toDisplayString(_ctx.message), 1)
3285
+ ]),
3286
+ _ctx.closable ? (vue.openBlock(), vue.createElementBlock("button", {
3287
+ key: 1,
3288
+ type: "button",
3289
+ class: "f-notification__close",
3290
+ "aria-label": "close",
3291
+ onClick: vue.withModifiers(close, ["stop"])
3292
+ }, [
3293
+ vue.createVNode(FIcon$2, null, {
3294
+ default: vue.withCtx(() => [
3295
+ vue.createVNode(vue.unref(ionicons5.Close))
3296
+ ]),
3297
+ _: 1
3298
+ })
3299
+ ])) : vue.createCommentVNode("", true)
3300
+ ], 38)) : vue.createCommentVNode("", true)
3301
+ ]),
3302
+ _: 1
3303
+ }, 8, ["name"]);
3304
+ };
3305
+ }
3306
+ });
3307
+ const FNotificationComp$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$1$1, [["__scopeId", "data-v-0a7315d6"]]);
3308
+ const GAP$2 = 16;
3309
+ const BASE_OFFSET$2 = 20;
3310
+ let seed$2 = 0;
3311
+ const groups$1 = {
3312
+ "top-right": [],
3313
+ "top-left": [],
3314
+ "bottom-right": [],
3315
+ "bottom-left": []
3316
+ };
3317
+ const normalizeOptions$2 = (options) => {
3318
+ return typeof options === "string" ? { message: options } : options;
3319
+ };
3320
+ const repositionGroup$1 = (position) => {
3321
+ let offset = BASE_OFFSET$2;
3322
+ groups$1[position].forEach((item) => {
3323
+ const vm = item.vnode.component;
3324
+ if (vm) {
3325
+ vm.props.offset = offset;
3326
+ }
3327
+ offset += Number(item.size) + GAP$2;
3328
+ });
3329
+ };
3330
+ const removeInstance$2 = (position, id) => {
3331
+ const list = groups$1[position];
3332
+ const index = list.findIndex((item) => item.id === id);
3333
+ if (index === -1) return;
3334
+ const { container } = list[index];
3335
+ vue.render(null, container);
3336
+ container.remove();
3337
+ list.splice(index, 1);
3338
+ repositionGroup$1(position);
3339
+ };
3340
+ const createInstance$2 = (options) => {
3341
+ var _a, _b;
3342
+ const id = seed$2++;
3343
+ const position = (_a = options.position) != null ? _a : "top-right";
3344
+ const list = groups$1[position];
3345
+ const container = document.createElement("div");
3346
+ const offset = list.length === 0 ? BASE_OFFSET$2 : (() => {
3347
+ var _a2;
3348
+ const last = list[list.length - 1];
3349
+ return Number((_a2 = last.vnode.component) == null ? void 0 : _a2.props.offset) + Number(last.size) + GAP$2;
3350
+ })();
3351
+ const vnode = vue.createVNode(FNotificationComp$1, __spreadProps2(__spreadValues2({}, options), {
3352
+ position,
3353
+ offset,
3354
+ onClose: () => {
3355
+ var _a2;
3356
+ (_a2 = options.onClose) == null ? void 0 : _a2.call(options);
3357
+ },
3358
+ onDestroy: () => {
3359
+ removeInstance$2(position, id);
3360
+ },
3361
+ onClick: () => {
3362
+ var _a2;
3363
+ (_a2 = options.onClick) == null ? void 0 : _a2.call(options);
3364
+ }
3365
+ }));
3366
+ vue.render(vnode, container);
3367
+ document.body.appendChild(container);
3368
+ const el = vnode.el;
3369
+ const size = (_b = el == null ? void 0 : el.offsetHeight) != null ? _b : 72;
3370
+ list.push({ id, position, vnode, container, size });
3371
+ return {
3372
+ id,
3373
+ close: () => {
3374
+ var _a2, _b2, _c;
3375
+ (_c = (_b2 = (_a2 = vnode.component) == null ? void 0 : _a2.exposed) == null ? void 0 : _b2.close) == null ? void 0 : _c.call(_b2);
3376
+ }
3377
+ };
3378
+ };
3379
+ const FNotification$1 = (options) => {
3380
+ return createInstance$2(normalizeOptions$2(options));
3381
+ };
3382
+ const withType$2 = (type) => (options) => createInstance$2(__spreadProps2(__spreadValues2({}, normalizeOptions$2(options)), { type }));
3383
+ FNotification$1.info = withType$2("info");
3384
+ FNotification$1.success = withType$2("success");
3385
+ FNotification$1.warning = withType$2("warning");
3386
+ FNotification$1.failed = withType$2("failed");
3387
+ FNotification$1.closeAll = (position) => {
3388
+ const positions = position ? [position] : Object.keys(groups$1);
3389
+ positions.forEach((pos) => {
3390
+ [...groups$1[pos]].forEach((item) => {
3391
+ var _a, _b, _c;
3392
+ (_c = (_b = (_a = item.vnode.component) == null ? void 0 : _a.exposed) == null ? void 0 : _b.close) == null ? void 0 : _c.call(_b);
3393
+ });
3394
+ });
3395
+ };
3396
+ const _hoisted_1$k = {
3397
+ key: 0,
3398
+ class: "f-dialog__icon"
3399
+ };
3400
+ const _hoisted_2$g = { class: "f-dialog__title" };
3401
+ const _hoisted_3$g = { class: "f-dialog__body" };
3402
+ const _hoisted_4$a = { key: 0 };
3403
+ const _hoisted_5$9 = {
3404
+ key: 2,
3405
+ class: "f-dialog__footer"
3406
+ };
3407
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
3408
+ __name: "FDialog",
3409
+ props: /* @__PURE__ */ vue.mergeModels({
3410
+ title: { default: "提示" },
3411
+ content: {},
3412
+ width: { default: "500px" },
3413
+ type: { default: "default" },
3414
+ confirmText: { default: "确定" },
3415
+ cancelText: { default: "取消" },
3416
+ showCancel: { type: Boolean, default: true },
3417
+ showClose: { type: Boolean, default: true },
3418
+ closeOnClickModal: { type: Boolean, default: true },
3419
+ closeOnEsc: { type: Boolean, default: true },
3420
+ center: { type: Boolean, default: false },
3421
+ fullscreen: { type: Boolean, default: false },
3422
+ destroyOnClose: { type: Boolean, default: false },
3423
+ beforeClose: {}
3424
+ }, {
3425
+ "modelValue": __spreadValues2({ type: Boolean }, { required: true }),
3426
+ "modelModifiers": {}
3427
+ }),
3428
+ emits: /* @__PURE__ */ vue.mergeModels(["open", "close", "confirm", "cancel"], ["update:modelValue"]),
3429
+ setup(__props, { emit: __emit }) {
3430
+ const props = __props;
3431
+ const emit = __emit;
3432
+ const visible = vue.useModel(__props, "modelValue");
3433
+ const handleClose = () => {
3434
+ visible.value = false;
3435
+ emit("close");
3436
+ };
3437
+ const handleConfirm = () => {
3438
+ emit("confirm");
3439
+ if (props.beforeClose) {
3440
+ props.beforeClose(() => {
3441
+ visible.value = false;
3442
+ });
3443
+ } else {
3444
+ visible.value = false;
3445
+ }
3446
+ };
3447
+ const handleCancel = () => {
3448
+ emit("cancel");
3449
+ handleClose();
3450
+ };
3451
+ const handleOverlayClick = (e) => {
3452
+ if (props.closeOnClickModal && e.target === e.currentTarget) {
3453
+ handleClose();
3454
+ }
3455
+ };
3456
+ const handleKeydown = (e) => {
3457
+ if (props.closeOnEsc && e.key === "Escape") {
3458
+ handleClose();
3459
+ }
3460
+ };
3461
+ vue.onMounted(() => {
3462
+ if (props.closeOnEsc) {
3463
+ window.addEventListener("keydown", handleKeydown);
3464
+ }
3465
+ emit("open");
3466
+ });
3467
+ vue.onBeforeUnmount(() => {
3468
+ if (props.closeOnEsc) {
3469
+ window.removeEventListener("keydown", handleKeydown);
3470
+ }
3471
+ });
3472
+ const iconMap = {
3473
+ info: ionicons5.InformationCircleOutline,
3474
+ success: ionicons5.CheckmarkCircleOutline,
3475
+ warning: ionicons5.WarningOutline,
3476
+ failed: ionicons5.AlertCircleOutline,
3477
+ primary: ionicons5.InformationCircleOutline,
3478
+ default: ionicons5.InformationCircleOutline
3479
+ };
3480
+ const hasIcon = vue.computed(() => props.type && props.type !== "default");
3481
+ return (_ctx, _cache) => {
3482
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
3483
+ vue.createVNode(vue.Transition, { name: "f-dialog-fade" }, {
3484
+ default: vue.withCtx(() => [
3485
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
3486
+ key: 0,
3487
+ class: "f-dialog-overlay",
3488
+ onClick: handleOverlayClick
3489
+ }, [
3490
+ vue.createVNode(vue.Transition, { name: "f-dialog-zoom" }, {
3491
+ default: vue.withCtx(() => [
3492
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
3493
+ key: 0,
3494
+ class: vue.normalizeClass(["f-dialog", [
3495
+ `f-dialog--${_ctx.type}`,
3496
+ {
3497
+ "is-center": _ctx.center,
3498
+ "is-fullscreen": _ctx.fullscreen
3499
+ }
3500
+ ]]),
3501
+ style: vue.normalizeStyle({ width: _ctx.fullscreen ? "100%" : _ctx.width })
3502
+ }, [
3503
+ _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
3504
+ key: 0,
3505
+ type: "button",
3506
+ class: "f-dialog__close",
3507
+ onClick: handleClose
3508
+ }, [
3509
+ vue.createVNode(FIcon$2, null, {
3510
+ default: vue.withCtx(() => [
3511
+ vue.createVNode(vue.unref(ionicons5.CloseOutline))
3512
+ ]),
3513
+ _: 1
3514
+ })
3515
+ ])) : vue.createCommentVNode("", true),
3516
+ _ctx.$slots.header || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", {
3517
+ key: 1,
3518
+ class: vue.normalizeClass(["f-dialog__header", { "has-icon": vue.unref(hasIcon) }])
3519
+ }, [
3520
+ vue.renderSlot(_ctx.$slots, "header", {}, () => [
3521
+ vue.unref(hasIcon) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
3522
+ vue.createVNode(FIcon$2, null, {
3523
+ default: vue.withCtx(() => [
3524
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(iconMap[_ctx.type])))
3525
+ ]),
3526
+ _: 1
3527
+ })
3528
+ ])) : vue.createCommentVNode("", true),
3529
+ vue.createElementVNode("h3", _hoisted_2$g, vue.toDisplayString(_ctx.title), 1)
3530
+ ], true)
3531
+ ], 2)) : vue.createCommentVNode("", true),
3532
+ vue.createElementVNode("div", _hoisted_3$g, [
3533
+ vue.renderSlot(_ctx.$slots, "default", {}, () => [
3534
+ _ctx.content ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4$a, vue.toDisplayString(_ctx.content), 1)) : vue.createCommentVNode("", true)
3535
+ ], true)
3536
+ ]),
3537
+ _ctx.$slots.footer || _ctx.showCancel ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$9, [
3538
+ vue.renderSlot(_ctx.$slots, "footer", {}, () => [
3539
+ _ctx.showCancel ? (vue.openBlock(), vue.createBlock(FButton$2, {
3540
+ key: 0,
3541
+ onClick: handleCancel
3542
+ }, {
3543
+ default: vue.withCtx(() => [
3544
+ vue.createTextVNode(vue.toDisplayString(_ctx.cancelText), 1)
3545
+ ]),
3546
+ _: 1
3547
+ })) : vue.createCommentVNode("", true),
3548
+ vue.createVNode(FButton$2, {
3549
+ type: "primary",
3550
+ onClick: handleConfirm
3551
+ }, {
3552
+ default: vue.withCtx(() => [
3553
+ vue.createTextVNode(vue.toDisplayString(_ctx.confirmText), 1)
3554
+ ]),
3555
+ _: 1
3556
+ })
3557
+ ], true)
3558
+ ])) : vue.createCommentVNode("", true)
3559
+ ], 6)) : vue.createCommentVNode("", true)
3560
+ ]),
3561
+ _: 3
3562
+ })
3563
+ ])) : vue.createCommentVNode("", true)
3564
+ ]),
3565
+ _: 3
3566
+ })
3567
+ ]);
3568
+ };
3569
+ }
3570
+ });
3571
+ const FDialogComp$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$p, [["__scopeId", "data-v-991352de"]]);
3572
+ const showDialog$1 = (options) => {
3573
+ return new Promise((resolve) => {
3574
+ const container = document.createElement("div");
3575
+ document.body.appendChild(container);
3576
+ const visible = vue.ref(true);
3577
+ const handleConfirm = () => {
3578
+ cleanup();
3579
+ resolve(true);
3580
+ };
3581
+ const handleCancel = () => {
3582
+ cleanup();
3583
+ resolve(false);
3584
+ };
3585
+ const handleClose = () => {
3586
+ cleanup();
3587
+ resolve(false);
3588
+ };
3589
+ const cleanup = () => {
3590
+ visible.value = false;
3591
+ setTimeout(() => {
3592
+ vue.render(null, container);
3593
+ document.body.removeChild(container);
3594
+ }, 300);
3595
+ };
3596
+ const vnode = vue.h(FDialogComp$1, __spreadValues2({
3597
+ modelValue: visible.value,
3598
+ "onUpdate:modelValue": (val) => {
3599
+ visible.value = val;
3600
+ if (!val) {
3601
+ cleanup();
3602
+ }
3603
+ },
3604
+ onConfirm: handleConfirm,
3605
+ onCancel: handleCancel,
3606
+ onClose: handleClose
3607
+ }, options));
3608
+ vue.render(vnode, container);
3609
+ });
3610
+ };
3611
+ const confirm$1 = (content, title = "确认") => {
3612
+ return showDialog$1({
3613
+ title,
3614
+ content,
3615
+ type: "warning",
3616
+ showCancel: true,
3617
+ center: true
3618
+ });
3619
+ };
3620
+ const alert$1 = (content, title = "提示", type = "info") => {
3621
+ return showDialog$1({
3622
+ title,
3623
+ content,
3624
+ type,
3625
+ showCancel: false,
3626
+ confirmText: "知道了",
3627
+ center: true
3628
+ });
3629
+ };
3630
+ const success$1 = (content, title = "成功") => {
3631
+ return alert$1(content, title, "success");
3632
+ };
3633
+ const warning$1 = (content, title = "警告") => {
3634
+ return alert$1(content, title, "warning");
3635
+ };
3636
+ const failed$1 = (content, title = "错误") => {
3637
+ return alert$1(content, title, "failed");
3638
+ };
3639
+ const info$1 = (content, title = "提示") => {
3640
+ return alert$1(content, title, "info");
3641
+ };
3642
+ const FDialog$1 = (options) => {
3643
+ return showDialog$1(options);
3644
+ };
3645
+ FDialog$1.showDialog = showDialog$1;
3646
+ FDialog$1.confirm = confirm$1;
3647
+ FDialog$1.alert = alert$1;
3648
+ FDialog$1.success = success$1;
3649
+ FDialog$1.warning = warning$1;
3650
+ FDialog$1.failed = failed$1;
3651
+ FDialog$1.info = info$1;
3652
+ const _hoisted_1$i = ["type", "disabled"];
3653
+ const _hoisted_2$e = { class: "f-button__inner" };
3654
+ const _hoisted_3$e = {
1451
3655
  key: 0,
1452
3656
  class: "f-loader"
1453
3657
  };
3658
+ const _hoisted_4$8 = {
3659
+ key: 2,
3660
+ class: "f-button__text"
3661
+ };
1454
3662
  const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1455
3663
  __name: "FButton",
1456
3664
  props: {
@@ -1462,6 +3670,7 @@ var __async = (__this, __arguments, generator) => {
1462
3670
  round: { type: [Boolean, Number] },
1463
3671
  circle: { type: Boolean },
1464
3672
  plain: { type: Boolean },
3673
+ text: { type: Boolean },
1465
3674
  block: { type: Boolean },
1466
3675
  icon: {},
1467
3676
  active: { type: Boolean },
@@ -1475,6 +3684,7 @@ var __async = (__this, __arguments, generator) => {
1475
3684
  large: { h: "40px", p: "0 16px", f: "14px", i: "18px" }
1476
3685
  };
1477
3686
  const props = __props;
3687
+ const slots = vue.useSlots();
1478
3688
  const groupContext = vue.inject("FButtonGroupContext", null);
1479
3689
  const mergedSize = vue.computed(() => {
1480
3690
  var _a, _b;
@@ -1485,6 +3695,7 @@ var __async = (__this, __arguments, generator) => {
1485
3695
  return (_b = (_a = props.type) != null ? _a : groupContext == null ? void 0 : groupContext.type) != null ? _b : "default";
1486
3696
  });
1487
3697
  const isDisabled = vue.computed(() => props.disabled || props.loading || (groupContext == null ? void 0 : groupContext.disabled));
3698
+ const hasText = vue.computed(() => !!slots.default);
1488
3699
  const buttonStyle = vue.computed(() => {
1489
3700
  const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
1490
3701
  const style = {
@@ -1505,26 +3716,52 @@ var __async = (__this, __arguments, generator) => {
1505
3716
  }
1506
3717
  return style;
1507
3718
  });
3719
+ const iconSize = vue.computed(() => {
3720
+ const s = SIZE_MAP[mergedSize.value] || SIZE_MAP.normal;
3721
+ return s.i;
3722
+ });
1508
3723
  return (_ctx, _cache) => {
1509
3724
  return vue.openBlock(), vue.createElementBlock("button", {
1510
3725
  type: _ctx.nativeType,
1511
3726
  class: vue.normalizeClass(["f-button", [
1512
3727
  `f-button--${vue.unref(mergedType)}`,
1513
3728
  `f-button--${vue.unref(mergedSize)}`,
1514
- { "is-disabled": vue.unref(isDisabled), "is-loading": _ctx.loading, "is-active": _ctx.active }
3729
+ {
3730
+ "is-disabled": vue.unref(isDisabled),
3731
+ "is-loading": _ctx.loading,
3732
+ "is-active": _ctx.active,
3733
+ "is-text": _ctx.text,
3734
+ "is-icon-only": !vue.unref(hasText) && (_ctx.icon || _ctx.$slots.icon)
3735
+ }
1515
3736
  ]]),
1516
3737
  disabled: vue.unref(isDisabled),
1517
3738
  style: vue.normalizeStyle(vue.unref(buttonStyle))
1518
3739
  }, [
1519
- vue.createElementVNode("span", _hoisted_2$d, [
1520
- _ctx.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$d)) : vue.createCommentVNode("", true),
1521
- vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
3740
+ vue.createElementVNode("span", _hoisted_2$e, [
3741
+ _ctx.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$e)) : vue.createCommentVNode("", true),
3742
+ !_ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
3743
+ _ctx.$slots.icon || _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon$2), {
3744
+ key: 0,
3745
+ class: "f-button__icon",
3746
+ style: vue.normalizeStyle({ fontSize: vue.unref(iconSize) })
3747
+ }, {
3748
+ default: vue.withCtx(() => [
3749
+ vue.renderSlot(_ctx.$slots, "icon", {}, () => [
3750
+ _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.createCommentVNode("", true)
3751
+ ], true)
3752
+ ]),
3753
+ _: 3
3754
+ }, 8, ["style"])) : vue.createCommentVNode("", true)
3755
+ ], 64)) : vue.createCommentVNode("", true),
3756
+ vue.unref(hasText) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$8, [
3757
+ vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
3758
+ ])) : vue.createCommentVNode("", true)
1522
3759
  ])
1523
- ], 14, _hoisted_1$h);
3760
+ ], 14, _hoisted_1$i);
1524
3761
  };
1525
3762
  }
1526
3763
  });
1527
- const FButton = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-8ec1ff5a"]]);
3764
+ const FButton = /* @__PURE__ */ _export_sfc$3(_sfc_main$o, [["__scopeId", "data-v-41be5001"]]);
1528
3765
  const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1529
3766
  __name: "FTypography",
1530
3767
  props: {
@@ -1547,7 +3784,7 @@ var __async = (__this, __arguments, generator) => {
1547
3784
  };
1548
3785
  }
1549
3786
  });
1550
- const FTypography = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-50e044db"]]);
3787
+ const FTypography = /* @__PURE__ */ _export_sfc$3(_sfc_main$n, [["__scopeId", "data-v-50e044db"]]);
1551
3788
  const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1552
3789
  __name: "FText",
1553
3790
  props: {
@@ -1606,8 +3843,8 @@ var __async = (__this, __arguments, generator) => {
1606
3843
  };
1607
3844
  }
1608
3845
  });
1609
- const FText = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-8bcfc6b3"]]);
1610
- const _hoisted_1$g = ["href", "target", "rel"];
3846
+ const FText = /* @__PURE__ */ _export_sfc$3(_sfc_main$m, [["__scopeId", "data-v-8bcfc6b3"]]);
3847
+ const _hoisted_1$h = ["href", "target", "rel"];
1611
3848
  const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1612
3849
  __name: "FLink",
1613
3850
  props: {
@@ -1631,12 +3868,12 @@ var __async = (__this, __arguments, generator) => {
1631
3868
  rel: props.target === "_blank" ? "noopener noreferrer" : void 0
1632
3869
  }, [
1633
3870
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
1634
- ], 10, _hoisted_1$g);
3871
+ ], 10, _hoisted_1$h);
1635
3872
  };
1636
3873
  }
1637
3874
  });
1638
- const FLink = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-daaa3e25"]]);
1639
- const _hoisted_1$f = { class: "f-badge" };
3875
+ const FLink = /* @__PURE__ */ _export_sfc$3(_sfc_main$l, [["__scopeId", "data-v-daaa3e25"]]);
3876
+ const _hoisted_1$g = { class: "f-badge" };
1640
3877
  const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1641
3878
  __name: "FBadge",
1642
3879
  props: {
@@ -1666,7 +3903,7 @@ var __async = (__this, __arguments, generator) => {
1666
3903
  return map[props.placement];
1667
3904
  });
1668
3905
  return (_ctx, _cache) => {
1669
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
3906
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
1670
3907
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
1671
3908
  _ctx.dot || _ctx.value !== void 0 && _ctx.value !== "" ? (vue.openBlock(), vue.createElementBlock("span", {
1672
3909
  key: 0,
@@ -1677,7 +3914,7 @@ var __async = (__this, __arguments, generator) => {
1677
3914
  };
1678
3915
  }
1679
3916
  });
1680
- const FBadge = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-be6947ff"]]);
3917
+ const FBadge = /* @__PURE__ */ _export_sfc$3(_sfc_main$k, [["__scopeId", "data-v-be6947ff"]]);
1681
3918
  const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1682
3919
  __name: "FAffix",
1683
3920
  props: {
@@ -1706,7 +3943,7 @@ var __async = (__this, __arguments, generator) => {
1706
3943
  };
1707
3944
  }
1708
3945
  });
1709
- const FAffix = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-8506d679"]]);
3946
+ const FAffix = /* @__PURE__ */ _export_sfc$3(_sfc_main$j, [["__scopeId", "data-v-8506d679"]]);
1710
3947
  const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1711
3948
  __name: "FForm",
1712
3949
  props: {
@@ -1764,7 +4001,7 @@ var __async = (__this, __arguments, generator) => {
1764
4001
  };
1765
4002
  }
1766
4003
  });
1767
- const FForm = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-21f7de9b"]]);
4004
+ const FForm = /* @__PURE__ */ _export_sfc$3(_sfc_main$i, [["__scopeId", "data-v-21f7de9b"]]);
1768
4005
  const validateSingleField = (value, rules) => __async(null, null, function* () {
1769
4006
  const ruleArray = Array.isArray(rules) ? rules : [rules];
1770
4007
  for (let rule of ruleArray) {
@@ -1846,12 +4083,12 @@ var __async = (__this, __arguments, generator) => {
1846
4083
  }
1847
4084
  return void 0;
1848
4085
  };
1849
- const _hoisted_1$e = {
4086
+ const _hoisted_1$f = {
1850
4087
  key: 0,
1851
4088
  class: "star"
1852
4089
  };
1853
- const _hoisted_2$c = { class: "f-form-item__content" };
1854
- const _hoisted_3$c = {
4090
+ const _hoisted_2$d = { class: "f-form-item__content" };
4091
+ const _hoisted_3$d = {
1855
4092
  key: 0,
1856
4093
  class: "f-form-item__error"
1857
4094
  };
@@ -1921,14 +4158,14 @@ var __async = (__this, __arguments, generator) => {
1921
4158
  textAlign: vue.unref(labelPosition) === "top" ? "left" : vue.unref(labelPosition)
1922
4159
  })
1923
4160
  }, [
1924
- vue.unref(isRequired) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$e, "*")) : vue.createCommentVNode("", true),
4161
+ vue.unref(isRequired) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$f, "*")) : vue.createCommentVNode("", true),
1925
4162
  vue.createTextVNode(" " + vue.toDisplayString(_ctx.label) + ": ", 1)
1926
4163
  ], 4)) : vue.createCommentVNode("", true),
1927
- vue.createElementVNode("div", _hoisted_2$c, [
4164
+ vue.createElementVNode("div", _hoisted_2$d, [
1928
4165
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true),
1929
4166
  vue.createVNode(vue.Transition, { name: "err-slide" }, {
1930
4167
  default: vue.withCtx(() => [
1931
- vue.unref(errorMsg) ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_3$c, vue.toDisplayString(vue.unref(errorMsg)), 1)) : vue.createCommentVNode("", true)
4168
+ vue.unref(errorMsg) ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_3$d, vue.toDisplayString(vue.unref(errorMsg)), 1)) : vue.createCommentVNode("", true)
1932
4169
  ]),
1933
4170
  _: 1
1934
4171
  })
@@ -1937,10 +4174,10 @@ var __async = (__this, __arguments, generator) => {
1937
4174
  };
1938
4175
  }
1939
4176
  });
1940
- const FFormItem = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-c3d6ec01"]]);
1941
- const _hoisted_1$d = { class: "f-checkbox__wrapper" };
1942
- const _hoisted_2$b = ["checked", "disabled"];
1943
- const _hoisted_3$b = {
4177
+ const FFormItem = /* @__PURE__ */ _export_sfc$3(_sfc_main$h, [["__scopeId", "data-v-c3d6ec01"]]);
4178
+ const _hoisted_1$e = { class: "f-checkbox__wrapper" };
4179
+ const _hoisted_2$c = ["checked", "disabled"];
4180
+ const _hoisted_3$c = {
1944
4181
  key: 0,
1945
4182
  class: "f-checkbox__label"
1946
4183
  };
@@ -1966,24 +4203,24 @@ var __async = (__this, __arguments, generator) => {
1966
4203
  return vue.openBlock(), vue.createElementBlock("label", {
1967
4204
  class: vue.normalizeClass(["f-checkbox", { "is-disabled": _ctx.disabled }])
1968
4205
  }, [
1969
- vue.createElementVNode("span", _hoisted_1$d, [
4206
+ vue.createElementVNode("span", _hoisted_1$e, [
1970
4207
  vue.createElementVNode("input", {
1971
4208
  type: "checkbox",
1972
4209
  checked: modelValue.value,
1973
4210
  disabled: _ctx.disabled,
1974
4211
  onChange: handleChange
1975
- }, null, 40, _hoisted_2$b),
4212
+ }, null, 40, _hoisted_2$c),
1976
4213
  _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "f-checkbox__checkmark" }, null, -1))
1977
4214
  ]),
1978
- _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
4215
+ _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$c, vue.toDisplayString(_ctx.label), 1)) : vue.createCommentVNode("", true)
1979
4216
  ], 2);
1980
4217
  };
1981
4218
  }
1982
4219
  });
1983
- const FCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-633b283a"]]);
1984
- const _hoisted_1$c = { class: "alert__body" };
1985
- const _hoisted_2$a = { class: "alert__title" };
1986
- const _hoisted_3$a = { class: "alert__content" };
4220
+ const FCheckbox = /* @__PURE__ */ _export_sfc$3(_sfc_main$g, [["__scopeId", "data-v-633b283a"]]);
4221
+ const _hoisted_1$d = { class: "alert__body" };
4222
+ const _hoisted_2$b = { class: "alert__title" };
4223
+ const _hoisted_3$b = { class: "alert__content" };
1987
4224
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1988
4225
  __name: "FAlert",
1989
4226
  props: {
@@ -2004,15 +4241,15 @@ var __async = (__this, __arguments, generator) => {
2004
4241
  return vue.openBlock(), vue.createElementBlock("div", {
2005
4242
  class: vue.normalizeClass(["alert", `alert--${_ctx.type}`])
2006
4243
  }, [
2007
- vue.createVNode(FIcon, { class: "alert__icon" }, {
4244
+ vue.createVNode(FIcon$3, { class: "alert__icon" }, {
2008
4245
  default: vue.withCtx(() => [
2009
4246
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(config).icon)))
2010
4247
  ]),
2011
4248
  _: 1
2012
4249
  }),
2013
- vue.createElementVNode("div", _hoisted_1$c, [
2014
- vue.createElementVNode("h4", _hoisted_2$a, vue.toDisplayString((_a = _ctx.title) != null ? _a : vue.unref(config).label), 1),
2015
- vue.createElementVNode("div", _hoisted_3$a, [
4250
+ vue.createElementVNode("div", _hoisted_1$d, [
4251
+ vue.createElementVNode("h4", _hoisted_2$b, vue.toDisplayString((_a = _ctx.title) != null ? _a : vue.unref(config).label), 1),
4252
+ vue.createElementVNode("div", _hoisted_3$b, [
2016
4253
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
2017
4254
  vue.createTextVNode(vue.toDisplayString(_ctx.content), 1)
2018
4255
  ], true)
@@ -2022,12 +4259,12 @@ var __async = (__this, __arguments, generator) => {
2022
4259
  };
2023
4260
  }
2024
4261
  });
2025
- const FAlert = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-f16678ef"]]);
2026
- const _hoisted_1$b = { class: "f-editor__toolbar" };
2027
- const _hoisted_2$9 = { class: "f-editor__status" };
2028
- const _hoisted_3$9 = { class: "f-editor__lines" };
2029
- const _hoisted_4$6 = { class: "f-editor__code-wrapper" };
2030
- const _hoisted_5$6 = ["innerHTML"];
4262
+ const FAlert = /* @__PURE__ */ _export_sfc$3(_sfc_main$f, [["__scopeId", "data-v-f16678ef"]]);
4263
+ const _hoisted_1$c = { class: "f-editor__toolbar" };
4264
+ const _hoisted_2$a = { class: "f-editor__status" };
4265
+ const _hoisted_3$a = { class: "f-editor__lines" };
4266
+ const _hoisted_4$7 = { class: "f-editor__code-wrapper" };
4267
+ const _hoisted_5$7 = ["innerHTML"];
2031
4268
  const _hoisted_6$5 = ["rows", "readonly", "placeholder"];
2032
4269
  const LINE_HEIGHT_PX = 17.6;
2033
4270
  const PADDING_TOP_PX = 12;
@@ -2199,9 +4436,9 @@ var __async = (__this, __arguments, generator) => {
2199
4436
  return vue.openBlock(), vue.createElementBlock("div", {
2200
4437
  class: vue.normalizeClass(["f-editor", { "f-editor--invalid": !vue.unref(isJsonValid) }])
2201
4438
  }, [
2202
- vue.createElementVNode("div", _hoisted_1$b, [
2203
- vue.createElementVNode("span", _hoisted_2$9, [
2204
- vue.createElementVNode("span", _hoisted_3$9, vue.toDisplayString(vue.unref(lineCount)) + " 行", 1),
4439
+ vue.createElementVNode("div", _hoisted_1$c, [
4440
+ vue.createElementVNode("span", _hoisted_2$a, [
4441
+ vue.createElementVNode("span", _hoisted_3$a, vue.toDisplayString(vue.unref(lineCount)) + " 行", 1),
2205
4442
  vue.unref(isHeavy) ? (vue.openBlock(), vue.createBlock(FTag, {
2206
4443
  key: 0,
2207
4444
  color: "orange",
@@ -2239,7 +4476,7 @@ var __async = (__this, __arguments, generator) => {
2239
4476
  }, vue.toDisplayString(ln), 3);
2240
4477
  }), 128))
2241
4478
  ], 512)) : vue.createCommentVNode("", true),
2242
- vue.createElementVNode("div", _hoisted_4$6, [
4479
+ vue.createElementVNode("div", _hoisted_4$7, [
2243
4480
  vue.createElementVNode("div", {
2244
4481
  class: "f-editor__active-line",
2245
4482
  style: vue.normalizeStyle({
@@ -2257,7 +4494,7 @@ var __async = (__this, __arguments, generator) => {
2257
4494
  key: line.lineNo,
2258
4495
  class: "f-editor__line",
2259
4496
  innerHTML: line.html + "\n"
2260
- }, null, 8, _hoisted_5$6);
4497
+ }, null, 8, _hoisted_5$7);
2261
4498
  }), 128))
2262
4499
  ], 512),
2263
4500
  vue.withDirectives(vue.createElementVNode("textarea", {
@@ -2284,18 +4521,18 @@ var __async = (__this, __arguments, generator) => {
2284
4521
  };
2285
4522
  }
2286
4523
  });
2287
- const FEditor = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-6d590649"]]);
2288
- const _hoisted_1$a = { class: "f-table" };
2289
- const _hoisted_2$8 = {
4524
+ const FEditor = /* @__PURE__ */ _export_sfc$3(_sfc_main$e, [["__scopeId", "data-v-6d590649"]]);
4525
+ const _hoisted_1$b = { class: "f-table" };
4526
+ const _hoisted_2$9 = {
2290
4527
  key: 0,
2291
4528
  class: "f-table__loading"
2292
4529
  };
2293
- const _hoisted_3$8 = { class: "f-table__inner" };
2294
- const _hoisted_4$5 = {
4530
+ const _hoisted_3$9 = { class: "f-table__inner" };
4531
+ const _hoisted_4$6 = {
2295
4532
  key: 0,
2296
4533
  class: "f-table__col--index"
2297
4534
  };
2298
- const _hoisted_5$5 = { class: "f-table__head" };
4535
+ const _hoisted_5$6 = { class: "f-table__head" };
2299
4536
  const _hoisted_6$4 = {
2300
4537
  key: 0,
2301
4538
  class: "f-table__th f-table__th--index"
@@ -2382,8 +4619,8 @@ var __async = (__this, __arguments, generator) => {
2382
4619
  scrollTop.value = 0;
2383
4620
  });
2384
4621
  return (_ctx, _cache) => {
2385
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
2386
- _ctx.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
4622
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
4623
+ _ctx.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$9, [
2387
4624
  _cache[0] || (_cache[0] = vue.createElementVNode("span", { class: "spinner" }, null, -1)),
2388
4625
  vue.createElementVNode("span", null, vue.toDisplayString(_ctx.loadingText), 1)
2389
4626
  ])) : vue.createCommentVNode("", true),
@@ -2393,9 +4630,9 @@ var __async = (__this, __arguments, generator) => {
2393
4630
  ref: scrollEl,
2394
4631
  onScroll
2395
4632
  }, [
2396
- vue.createElementVNode("table", _hoisted_3$8, [
4633
+ vue.createElementVNode("table", _hoisted_3$9, [
2397
4634
  vue.createElementVNode("colgroup", null, [
2398
- _ctx.showIndex ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$5)) : vue.createCommentVNode("", true),
4635
+ _ctx.showIndex ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$6)) : vue.createCommentVNode("", true),
2399
4636
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.columns, (col) => {
2400
4637
  var _a, _b;
2401
4638
  return vue.openBlock(), vue.createElementBlock("col", {
@@ -2407,7 +4644,7 @@ var __async = (__this, __arguments, generator) => {
2407
4644
  }, null, 4);
2408
4645
  }), 128))
2409
4646
  ]),
2410
- vue.createElementVNode("thead", _hoisted_5$5, [
4647
+ vue.createElementVNode("thead", _hoisted_5$6, [
2411
4648
  vue.createElementVNode("tr", null, [
2412
4649
  _ctx.showIndex ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$4, "#")) : vue.createCommentVNode("", true),
2413
4650
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.columns, (col) => {
@@ -2489,73 +4726,17 @@ var __async = (__this, __arguments, generator) => {
2489
4726
  };
2490
4727
  }
2491
4728
  });
2492
- const FTable = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-01724962"]]);
2493
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2494
- __name: "FDialog",
2495
- props: /* @__PURE__ */ vue.mergeModels({
2496
- maskClosable: { type: Boolean, default: true },
2497
- maskColor: { default: "black" },
2498
- showMask: { type: Boolean, default: true }
2499
- }, {
2500
- "modelValue": __spreadValues({ type: Boolean }, { default: false }),
2501
- "modelModifiers": {}
2502
- }),
2503
- emits: ["update:modelValue"],
2504
- setup(__props) {
2505
- const props = __props;
2506
- const visible = vue.useModel(__props, "modelValue");
2507
- const handleMaskClick = () => {
2508
- if (props.maskClosable) visible.value = false;
2509
- };
2510
- const maskBackgroundColor = vue.computed(() => {
2511
- if (!props.showMask) return "transparent";
2512
- switch (props.maskColor) {
2513
- case "white":
2514
- return "rgba(255, 255, 255, 0.5)";
2515
- case "black":
2516
- return "rgba(0, 0, 0, 0.5)";
2517
- case "transparent":
2518
- return "transparent";
2519
- default:
2520
- return "rgba(0, 0, 0, 0.5)";
2521
- }
2522
- });
2523
- return (_ctx, _cache) => {
2524
- return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
2525
- vue.createVNode(vue.Transition, { name: "fade" }, {
2526
- default: vue.withCtx(() => [
2527
- visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
2528
- key: 0,
2529
- class: "f-dialog-mask",
2530
- style: vue.normalizeStyle({ backgroundColor: vue.unref(maskBackgroundColor) }),
2531
- onClick: handleMaskClick
2532
- }, [
2533
- vue.createElementVNode("div", {
2534
- class: "f-dialog-container",
2535
- onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
2536
- }, ["stop"]))
2537
- }, [
2538
- vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
2539
- ])
2540
- ], 4)) : vue.createCommentVNode("", true)
2541
- ]),
2542
- _: 3
2543
- })
2544
- ]);
2545
- };
2546
- }
2547
- });
2548
- const FDialog = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-31496822"]]);
2549
- const _hoisted_1$9 = { class: "f-upload" };
2550
- const _hoisted_2$7 = { class: "f-upload__label" };
2551
- const _hoisted_3$7 = ["accept"];
2552
- const _hoisted_4$4 = {
4729
+ const FTable = /* @__PURE__ */ _export_sfc$3(_sfc_main$d, [["__scopeId", "data-v-01724962"]]);
4730
+ const _hoisted_1$a = { class: "f-upload" };
4731
+ const _hoisted_2$8 = { class: "f-upload__label" };
4732
+ const _hoisted_3$8 = ["accept"];
4733
+ const _hoisted_4$5 = {
2553
4734
  key: 0,
2554
4735
  class: "f-upload__file-item"
2555
4736
  };
2556
- const _hoisted_5$4 = { class: "f-upload__file-info" };
4737
+ const _hoisted_5$5 = { class: "f-upload__file-info" };
2557
4738
  const _hoisted_6$3 = { class: "f-upload__file-name" };
2558
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
4739
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2559
4740
  __name: "FUpload",
2560
4741
  props: /* @__PURE__ */ vue.mergeModels({
2561
4742
  accept: {},
@@ -2606,22 +4787,22 @@ var __async = (__this, __arguments, generator) => {
2606
4787
  emit("change", f);
2607
4788
  };
2608
4789
  return (_ctx, _cache) => {
2609
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
4790
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
2610
4791
  vue.createElementVNode("div", {
2611
4792
  class: vue.normalizeClass(["f-upload__zone", { "f-upload--drag": vue.unref(dragActive) }]),
2612
4793
  onDragover: onDragOver,
2613
4794
  onDragleave: onDragLeave,
2614
4795
  onDrop
2615
4796
  }, [
2616
- vue.createElementVNode("label", _hoisted_2$7, [
4797
+ vue.createElementVNode("label", _hoisted_2$8, [
2617
4798
  vue.createElementVNode("input", {
2618
4799
  type: "file",
2619
4800
  accept: _ctx.accept,
2620
4801
  class: "f-upload__input",
2621
4802
  onChange: onFileChange
2622
- }, null, 40, _hoisted_3$7),
4803
+ }, null, 40, _hoisted_3$8),
2623
4804
  vue.renderSlot(_ctx.$slots, "default", {}, () => [
2624
- vue.createVNode(FIcon, { size: 40 }, {
4805
+ vue.createVNode(FIcon$3, { size: 40 }, {
2625
4806
  default: vue.withCtx(() => [
2626
4807
  vue.createVNode(vue.unref(ionicons5.CloudUpload))
2627
4808
  ]),
@@ -2632,14 +4813,14 @@ var __async = (__this, __arguments, generator) => {
2632
4813
  ], true)
2633
4814
  ])
2634
4815
  ], 34),
2635
- file.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$4, [
2636
- vue.createVNode(FIcon, null, {
4816
+ file.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$5, [
4817
+ vue.createVNode(FIcon$3, null, {
2637
4818
  default: vue.withCtx(() => [
2638
4819
  vue.createVNode(vue.unref(ionicons5.DocumentOutline))
2639
4820
  ]),
2640
4821
  _: 1
2641
4822
  }),
2642
- vue.createElementVNode("div", _hoisted_5$4, [
4823
+ vue.createElementVNode("div", _hoisted_5$5, [
2643
4824
  vue.createElementVNode("span", _hoisted_6$3, vue.toDisplayString(file.value), 1),
2644
4825
  _ctx.progress != null ? (vue.openBlock(), vue.createBlock(FProgress, {
2645
4826
  key: 0,
@@ -2647,7 +4828,7 @@ var __async = (__this, __arguments, generator) => {
2647
4828
  "show-text": ""
2648
4829
  }, null, 8, ["percent"])) : vue.createCommentVNode("", true)
2649
4830
  ]),
2650
- vue.createVNode(FIcon, {
4831
+ vue.createVNode(FIcon$3, {
2651
4832
  onClick: vue.withModifiers(clearFile, ["stop"]),
2652
4833
  onMouseenter: _cache[0] || (_cache[0] = ($event) => isCloseHover.value = true),
2653
4834
  onMouseleave: _cache[1] || (_cache[1] = ($event) => isCloseHover.value = false),
@@ -2663,8 +4844,8 @@ var __async = (__this, __arguments, generator) => {
2663
4844
  };
2664
4845
  }
2665
4846
  });
2666
- const FUpload = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-07b95a32"]]);
2667
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
4847
+ const FUpload = /* @__PURE__ */ _export_sfc$3(_sfc_main$c, [["__scopeId", "data-v-07b95a32"]]);
4848
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2668
4849
  __name: "FButtonGroup",
2669
4850
  props: {
2670
4851
  size: { default: "normal" },
@@ -2685,9 +4866,9 @@ var __async = (__this, __arguments, generator) => {
2685
4866
  };
2686
4867
  }
2687
4868
  });
2688
- const FButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-62561657"]]);
2689
- const _hoisted_1$8 = { class: "f-collapse" };
2690
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
4869
+ const FButtonGroup = /* @__PURE__ */ _export_sfc$3(_sfc_main$b, [["__scopeId", "data-v-62561657"]]);
4870
+ const _hoisted_1$9 = { class: "f-collapse" };
4871
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
2691
4872
  __name: "FCollapse",
2692
4873
  props: /* @__PURE__ */ vue.mergeModels({
2693
4874
  accordion: { type: Boolean, default: false }
@@ -2727,16 +4908,16 @@ var __async = (__this, __arguments, generator) => {
2727
4908
  })
2728
4909
  );
2729
4910
  return (_ctx, _cache) => {
2730
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
4911
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
2731
4912
  vue.renderSlot(_ctx.$slots, "default")
2732
4913
  ]);
2733
4914
  };
2734
4915
  }
2735
4916
  });
2736
- const _hoisted_1$7 = { class: "f-collapse-item__header-title" };
2737
- const _hoisted_2$6 = { class: "f-collapse-item__wrapper" };
2738
- const _hoisted_3$6 = { class: "f-collapse-item__content" };
2739
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
4917
+ const _hoisted_1$8 = { class: "f-collapse-item__header-title" };
4918
+ const _hoisted_2$7 = { class: "f-collapse-item__wrapper" };
4919
+ const _hoisted_3$7 = { class: "f-collapse-item__content" };
4920
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
2740
4921
  __name: "FCollapseItem",
2741
4922
  props: {
2742
4923
  name: {},
@@ -2780,7 +4961,7 @@ var __async = (__this, __arguments, generator) => {
2780
4961
  onClick: handleHeaderClick
2781
4962
  }, [
2782
4963
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
2783
- vue.createElementVNode("span", _hoisted_1$7, vue.toDisplayString(_ctx.title), 1)
4964
+ vue.createElementVNode("span", _hoisted_1$8, vue.toDisplayString(_ctx.title), 1)
2784
4965
  ]),
2785
4966
  _cache[0] || (_cache[0] = vue.createElementVNode("svg", {
2786
4967
  class: "f-collapse-item__icon",
@@ -2804,8 +4985,8 @@ var __async = (__this, __arguments, generator) => {
2804
4985
  onLeave
2805
4986
  }, {
2806
4987
  default: vue.withCtx(() => [
2807
- vue.withDirectives(vue.createElementVNode("div", _hoisted_2$6, [
2808
- vue.createElementVNode("div", _hoisted_3$6, [
4988
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_2$7, [
4989
+ vue.createElementVNode("div", _hoisted_3$7, [
2809
4990
  vue.renderSlot(_ctx.$slots, "default")
2810
4991
  ])
2811
4992
  ], 512), [
@@ -2818,21 +4999,21 @@ var __async = (__this, __arguments, generator) => {
2818
4999
  };
2819
5000
  }
2820
5001
  });
2821
- const _hoisted_1$6 = { class: "f-color-picker__swatch" };
2822
- const _hoisted_2$5 = {
5002
+ const _hoisted_1$7 = { class: "f-color-picker__swatch" };
5003
+ const _hoisted_2$6 = {
2823
5004
  key: 0,
2824
5005
  class: "f-color-picker__panel"
2825
5006
  };
2826
- const _hoisted_3$5 = { class: "f-color-picker__sliders" };
2827
- const _hoisted_4$3 = { class: "f-color-picker__slider-group" };
2828
- const _hoisted_5$3 = ["value"];
5007
+ const _hoisted_3$6 = { class: "f-color-picker__sliders" };
5008
+ const _hoisted_4$4 = { class: "f-color-picker__slider-group" };
5009
+ const _hoisted_5$4 = ["value"];
2829
5010
  const _hoisted_6$2 = {
2830
5011
  key: 0,
2831
5012
  class: "f-color-picker__predefine"
2832
5013
  };
2833
5014
  const _hoisted_7 = ["onClick"];
2834
5015
  const hueBackground = "linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)";
2835
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
5016
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2836
5017
  __name: "FColorPicker",
2837
5018
  props: /* @__PURE__ */ vue.mergeModels({
2838
5019
  showAlpha: { type: Boolean, default: false },
@@ -3058,7 +5239,7 @@ var __async = (__this, __arguments, generator) => {
3058
5239
  class: "f-color-picker__trigger",
3059
5240
  onClick: togglePanel
3060
5241
  }, [
3061
- vue.createElementVNode("div", _hoisted_1$6, [
5242
+ vue.createElementVNode("div", _hoisted_1$7, [
3062
5243
  vue.createElementVNode("span", {
3063
5244
  class: "f-color-picker__swatch-color",
3064
5245
  style: vue.normalizeStyle({ background: `rgba(${vue.unref(previewRgb).r}, ${vue.unref(previewRgb).g}, ${vue.unref(previewRgb).b}, ${vue.unref(hsva).a})` })
@@ -3067,7 +5248,7 @@ var __async = (__this, __arguments, generator) => {
3067
5248
  ]),
3068
5249
  vue.createVNode(vue.Transition, { name: "f-color-picker-fade" }, {
3069
5250
  default: vue.withCtx(() => [
3070
- vue.unref(visible) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$5, [
5251
+ vue.unref(visible) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
3071
5252
  vue.createElementVNode("div", {
3072
5253
  ref_key: "panelRef",
3073
5254
  ref: panelRef,
@@ -3080,8 +5261,8 @@ var __async = (__this, __arguments, generator) => {
3080
5261
  style: vue.normalizeStyle({ left: `${vue.unref(hsva).s}%`, top: `${100 - vue.unref(hsva).v}%` })
3081
5262
  }, null, 4)
3082
5263
  ], 36),
3083
- vue.createElementVNode("div", _hoisted_3$5, [
3084
- vue.createElementVNode("div", _hoisted_4$3, [
5264
+ vue.createElementVNode("div", _hoisted_3$6, [
5265
+ vue.createElementVNode("div", _hoisted_4$4, [
3085
5266
  vue.createElementVNode("div", {
3086
5267
  ref_key: "hueRef",
3087
5268
  ref: hueRef,
@@ -3122,7 +5303,7 @@ var __async = (__this, __arguments, generator) => {
3122
5303
  value: toColorString(),
3123
5304
  onChange: handleInputChange,
3124
5305
  onKeydown: _cache[0] || (_cache[0] = vue.withKeys(($event) => $event.target.blur(), ["enter"]))
3125
- }, null, 40, _hoisted_5$3),
5306
+ }, null, 40, _hoisted_5$4),
3126
5307
  _ctx.predefine.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
3127
5308
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.predefine, (color) => {
3128
5309
  return vue.openBlock(), vue.createElementBlock("span", {
@@ -3141,19 +5322,19 @@ var __async = (__this, __arguments, generator) => {
3141
5322
  };
3142
5323
  }
3143
5324
  });
3144
- const _hoisted_1$5 = { class: "f-empty" };
3145
- const _hoisted_2$4 = ["src"];
3146
- const _hoisted_3$4 = {
5325
+ const _hoisted_1$6 = { class: "f-empty" };
5326
+ const _hoisted_2$5 = ["src"];
5327
+ const _hoisted_3$5 = {
3147
5328
  key: 1,
3148
5329
  viewBox: "0 0 160 160",
3149
5330
  class: "f-empty__image-default"
3150
5331
  };
3151
- const _hoisted_4$2 = { class: "f-empty__description" };
3152
- const _hoisted_5$2 = {
5332
+ const _hoisted_4$3 = { class: "f-empty__description" };
5333
+ const _hoisted_5$3 = {
3153
5334
  key: 0,
3154
5335
  class: "f-empty__extra"
3155
5336
  };
3156
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
5337
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
3157
5338
  __name: "FEmpty",
3158
5339
  props: {
3159
5340
  description: { default: "暂无数据" },
@@ -3162,7 +5343,7 @@ var __async = (__this, __arguments, generator) => {
3162
5343
  },
3163
5344
  setup(__props) {
3164
5345
  return (_ctx, _cache) => {
3165
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
5346
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
3166
5347
  vue.createElementVNode("div", {
3167
5348
  class: "f-empty__image",
3168
5349
  style: vue.normalizeStyle({ width: `${_ctx.imageSize}px`, height: `${_ctx.imageSize}px` })
@@ -3173,30 +5354,30 @@ var __async = (__this, __arguments, generator) => {
3173
5354
  src: _ctx.image,
3174
5355
  class: "f-empty__image-img",
3175
5356
  alt: ""
3176
- }, null, 8, _hoisted_2$4)) : (vue.openBlock(), vue.createElementBlock("svg", _hoisted_3$4, _cache[0] || (_cache[0] = [
5357
+ }, null, 8, _hoisted_2$5)) : (vue.openBlock(), vue.createElementBlock("svg", _hoisted_3$5, _cache[0] || (_cache[0] = [
3177
5358
  vue.createStaticVNode('<ellipse cx="80" cy="132" rx="46" ry="8" fill="currentColor" opacity="0.08"></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"></path><path d="M40 60 L58 32 L102 32 L120 60" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="round" opacity="0.35"></path><line x1="32" y1="88" x2="128" y2="88" stroke="currentColor" stroke-width="3" opacity="0.35"></line><path d="M64 88 Q80 106 96 88" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" opacity="0.5"></path>', 5)
3178
5359
  ])))
3179
5360
  ])
3180
5361
  ], 4),
3181
- vue.createElementVNode("div", _hoisted_4$2, [
5362
+ vue.createElementVNode("div", _hoisted_4$3, [
3182
5363
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
3183
5364
  vue.createTextVNode(vue.toDisplayString(_ctx.description), 1)
3184
5365
  ])
3185
5366
  ]),
3186
- _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$2, [
5367
+ _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$3, [
3187
5368
  vue.renderSlot(_ctx.$slots, "default")
3188
5369
  ])) : vue.createCommentVNode("", true)
3189
5370
  ]);
3190
5371
  };
3191
5372
  }
3192
5373
  });
3193
- const _hoisted_1$4 = { class: "f-slider__mark-label" };
3194
- const _hoisted_2$3 = ["aria-valuemin", "aria-valuemax", "aria-valuenow", "onMousedown", "onKeydown", "onMouseenter"];
3195
- const _hoisted_3$3 = {
5374
+ const _hoisted_1$5 = { class: "f-slider__mark-label" };
5375
+ const _hoisted_2$4 = ["aria-valuemin", "aria-valuemax", "aria-valuenow", "onMousedown", "onKeydown", "onMouseenter"];
5376
+ const _hoisted_3$4 = {
3196
5377
  key: 0,
3197
5378
  class: "f-slider__tooltip"
3198
5379
  };
3199
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
5380
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
3200
5381
  __name: "FSlider",
3201
5382
  props: /* @__PURE__ */ vue.mergeModels({
3202
5383
  min: { default: 0 },
@@ -3370,7 +5551,7 @@ var __async = (__this, __arguments, generator) => {
3370
5551
  style: vue.normalizeStyle(_ctx.vertical ? { bottom: `${mark.percent}%` } : { left: `${mark.percent}%` })
3371
5552
  }, [
3372
5553
  _cache[1] || (_cache[1] = vue.createElementVNode("span", { class: "f-slider__mark-dot" }, null, -1)),
3373
- vue.createElementVNode("span", _hoisted_1$4, vue.toDisplayString(mark.label), 1)
5554
+ vue.createElementVNode("span", _hoisted_1$5, vue.toDisplayString(mark.label), 1)
3374
5555
  ], 4);
3375
5556
  }), 128)),
3376
5557
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(values), (value, index) => {
@@ -3390,18 +5571,18 @@ var __async = (__this, __arguments, generator) => {
3390
5571
  }, [
3391
5572
  vue.createVNode(vue.Transition, { name: "f-slider-tooltip-fade" }, {
3392
5573
  default: vue.withCtx(() => [
3393
- tooltipVisible(index) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3, vue.toDisplayString(value), 1)) : vue.createCommentVNode("", true)
5574
+ tooltipVisible(index) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$4, vue.toDisplayString(value), 1)) : vue.createCommentVNode("", true)
3394
5575
  ]),
3395
5576
  _: 2
3396
5577
  }, 1024)
3397
- ], 46, _hoisted_2$3);
5578
+ ], 46, _hoisted_2$4);
3398
5579
  }), 128))
3399
5580
  ], 544)
3400
5581
  ], 2);
3401
5582
  };
3402
5583
  }
3403
5584
  });
3404
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
5585
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
3405
5586
  __name: "FScrollbar",
3406
5587
  props: {
3407
5588
  height: { default: "" },
@@ -3589,16 +5770,16 @@ var __async = (__this, __arguments, generator) => {
3589
5770
  };
3590
5771
  }
3591
5772
  });
3592
- const _hoisted_1$3 = ["disabled"];
3593
- const _hoisted_2$2 = ["value", "disabled", "placeholder"];
3594
- const _hoisted_3$2 = ["disabled"];
3595
- const _hoisted_4$1 = {
5773
+ const _hoisted_1$4 = ["disabled"];
5774
+ const _hoisted_2$3 = ["value", "disabled", "placeholder"];
5775
+ const _hoisted_3$3 = ["disabled"];
5776
+ const _hoisted_4$2 = {
3596
5777
  key: 2,
3597
5778
  class: "f-input-number__stack"
3598
5779
  };
3599
- const _hoisted_5$1 = ["disabled"];
5780
+ const _hoisted_5$2 = ["disabled"];
3600
5781
  const _hoisted_6$1 = ["disabled"];
3601
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
5782
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3602
5783
  __name: "FInputNumber",
3603
5784
  props: /* @__PURE__ */ vue.mergeModels({
3604
5785
  min: { default: -Infinity },
@@ -3606,7 +5787,6 @@ var __async = (__this, __arguments, generator) => {
3606
5787
  step: { default: 1 },
3607
5788
  precision: { default: void 0 },
3608
5789
  disabled: { type: Boolean, default: false },
3609
- size: { default: "default" },
3610
5790
  controls: { type: Boolean, default: true },
3611
5791
  controlsPosition: { default: "right" },
3612
5792
  placeholder: { default: "" }
@@ -3621,16 +5801,21 @@ var __async = (__this, __arguments, generator) => {
3621
5801
  const inputRef = vue.ref(null);
3622
5802
  const isFocused = vue.ref(false);
3623
5803
  const displayText = vue.ref("");
3624
- function format(value) {
5804
+ const formItemContext = vue.inject("FFormItemContext", null);
5805
+ const hasError = vue.computed(() => {
5806
+ var _a;
5807
+ return !!((_a = formItemContext == null ? void 0 : formItemContext.errorMsg) == null ? void 0 : _a.value);
5808
+ });
5809
+ const format = (value) => {
3625
5810
  return props.precision !== void 0 ? value.toFixed(props.precision) : String(value);
3626
- }
3627
- function clamp(value) {
5811
+ };
5812
+ const clamp = (value) => {
3628
5813
  let result = Math.min(Math.max(value, props.min), props.max);
3629
5814
  if (props.precision !== void 0) {
3630
5815
  result = Number(result.toFixed(props.precision));
3631
5816
  }
3632
5817
  return result;
3633
- }
5818
+ };
3634
5819
  vue.watch(
3635
5820
  modelValue,
3636
5821
  (val) => {
@@ -3641,7 +5826,7 @@ var __async = (__this, __arguments, generator) => {
3641
5826
  );
3642
5827
  const canIncrease = vue.computed(() => modelValue.value === void 0 || modelValue.value < props.max);
3643
5828
  const canDecrease = vue.computed(() => modelValue.value === void 0 || modelValue.value > props.min);
3644
- function commit(raw) {
5829
+ const commit = (raw) => {
3645
5830
  if (raw.trim() === "") {
3646
5831
  modelValue.value = void 0;
3647
5832
  displayText.value = "";
@@ -3655,48 +5840,49 @@ var __async = (__this, __arguments, generator) => {
3655
5840
  const clamped = clamp(parsed);
3656
5841
  modelValue.value = clamped;
3657
5842
  displayText.value = format(clamped);
3658
- }
3659
- function handleInput(e) {
5843
+ };
5844
+ const handleInput = (e) => {
3660
5845
  const raw = e.target.value;
3661
5846
  if (raw === "" || raw === "-" || /^-?\d*\.?\d*$/.test(raw)) {
3662
5847
  displayText.value = raw;
3663
5848
  }
3664
- }
3665
- function handleFocus() {
5849
+ };
5850
+ const handleFocus = () => {
3666
5851
  isFocused.value = true;
3667
- }
3668
- function handleBlur() {
5852
+ };
5853
+ const handleBlur = () => {
3669
5854
  isFocused.value = false;
3670
5855
  commit(displayText.value);
3671
- }
3672
- function handleEnter() {
5856
+ formItemContext == null ? void 0 : formItemContext.validate();
5857
+ };
5858
+ const handleEnter = () => {
3673
5859
  var _a;
3674
5860
  (_a = inputRef.value) == null ? void 0 : _a.blur();
3675
- }
3676
- function step(direction) {
5861
+ };
5862
+ const step = (direction) => {
3677
5863
  var _a;
3678
5864
  if (props.disabled) return;
3679
5865
  const base = (_a = modelValue.value) != null ? _a : 0;
3680
5866
  const next = clamp(base + direction * props.step);
3681
5867
  modelValue.value = next;
3682
5868
  displayText.value = format(next);
3683
- }
5869
+ };
3684
5870
  let repeatTimer = null;
3685
5871
  let repeatInterval = null;
3686
- function startRepeat(direction) {
5872
+ const startRepeat = (direction) => {
3687
5873
  if (props.disabled) return;
3688
5874
  step(direction);
3689
5875
  repeatTimer = setTimeout(() => {
3690
5876
  repeatInterval = setInterval(() => step(direction), 80);
3691
5877
  }, 400);
3692
- }
3693
- function stopRepeat() {
5878
+ };
5879
+ const stopRepeat = () => {
3694
5880
  if (repeatTimer) clearTimeout(repeatTimer);
3695
5881
  if (repeatInterval) clearInterval(repeatInterval);
3696
5882
  repeatTimer = null;
3697
5883
  repeatInterval = null;
3698
- }
3699
- function handleKeydown(e) {
5884
+ };
5885
+ const handleKeydown = (e) => {
3700
5886
  if (e.key === "ArrowUp") {
3701
5887
  e.preventDefault();
3702
5888
  step(1);
@@ -3706,43 +5892,39 @@ var __async = (__this, __arguments, generator) => {
3706
5892
  } else if (e.key === "Enter") {
3707
5893
  handleEnter();
3708
5894
  }
3709
- }
3710
- function handleWheel(e) {
5895
+ };
5896
+ const handleWheel = (e) => {
3711
5897
  if (!isFocused.value || props.disabled) return;
3712
5898
  e.preventDefault();
3713
5899
  step(e.deltaY < 0 ? 1 : -1);
3714
- }
5900
+ };
3715
5901
  return (_ctx, _cache) => {
3716
5902
  return vue.openBlock(), vue.createElementBlock("div", {
3717
- class: vue.normalizeClass(["f-input-number", [
3718
- `f-input-number--${_ctx.size}`,
3719
- `f-input-number--controls-${_ctx.controlsPosition}`,
3720
- { "f-input-number--disabled": _ctx.disabled, "f-input-number--without-controls": !_ctx.controls }
3721
- ]])
5903
+ class: vue.normalizeClass(["f-input-number", {
5904
+ "is-focus": vue.unref(isFocused),
5905
+ "is-error": vue.unref(hasError),
5906
+ "is-disabled": _ctx.disabled,
5907
+ "has-controls-both": _ctx.controls && _ctx.controlsPosition === "both",
5908
+ "has-controls-right": _ctx.controls && _ctx.controlsPosition === "right"
5909
+ }])
3722
5910
  }, [
3723
5911
  _ctx.controls && _ctx.controlsPosition === "both" ? (vue.openBlock(), vue.createElementBlock("button", {
3724
5912
  key: 0,
3725
5913
  type: "button",
3726
- class: "f-input-number__control f-input-number__control--minus",
5914
+ class: "f-input-number__btn-left",
3727
5915
  tabindex: "-1",
3728
5916
  disabled: _ctx.disabled || !vue.unref(canDecrease),
3729
5917
  onMousedown: _cache[0] || (_cache[0] = vue.withModifiers(($event) => startRepeat(-1), ["prevent"])),
3730
5918
  onMouseup: stopRepeat,
3731
5919
  onMouseleave: stopRepeat
3732
- }, _cache[4] || (_cache[4] = [
3733
- vue.createElementVNode("svg", {
3734
- viewBox: "0 0 12 12",
3735
- width: "10",
3736
- height: "10"
3737
- }, [
3738
- vue.createElementVNode("path", {
3739
- d: "M2 6h8",
3740
- stroke: "currentColor",
3741
- "stroke-width": "1.5",
3742
- "stroke-linecap": "round"
3743
- })
3744
- ], -1)
3745
- ]), 40, _hoisted_1$3)) : vue.createCommentVNode("", true),
5920
+ }, [
5921
+ vue.createVNode(vue.unref(FIcon$2), null, {
5922
+ default: vue.withCtx(() => [
5923
+ vue.createVNode(vue.unref(ionicons5.RemoveOutline))
5924
+ ]),
5925
+ _: 1
5926
+ })
5927
+ ], 40, _hoisted_1$4)) : vue.createCommentVNode("", true),
3746
5928
  vue.createElementVNode("input", {
3747
5929
  ref_key: "inputRef",
3748
5930
  ref: inputRef,
@@ -3757,31 +5939,25 @@ var __async = (__this, __arguments, generator) => {
3757
5939
  onBlur: handleBlur,
3758
5940
  onKeydown: handleKeydown,
3759
5941
  onWheel: handleWheel
3760
- }, null, 40, _hoisted_2$2),
5942
+ }, null, 40, _hoisted_2$3),
3761
5943
  _ctx.controls && _ctx.controlsPosition === "both" ? (vue.openBlock(), vue.createElementBlock("button", {
3762
5944
  key: 1,
3763
5945
  type: "button",
3764
- class: "f-input-number__control f-input-number__control--plus",
5946
+ class: "f-input-number__btn-right",
3765
5947
  tabindex: "-1",
3766
5948
  disabled: _ctx.disabled || !vue.unref(canIncrease),
3767
5949
  onMousedown: _cache[1] || (_cache[1] = vue.withModifiers(($event) => startRepeat(1), ["prevent"])),
3768
5950
  onMouseup: stopRepeat,
3769
5951
  onMouseleave: stopRepeat
3770
- }, _cache[5] || (_cache[5] = [
3771
- vue.createElementVNode("svg", {
3772
- viewBox: "0 0 12 12",
3773
- width: "10",
3774
- height: "10"
3775
- }, [
3776
- vue.createElementVNode("path", {
3777
- d: "M2 6h8M6 2v8",
3778
- stroke: "currentColor",
3779
- "stroke-width": "1.5",
3780
- "stroke-linecap": "round"
3781
- })
3782
- ], -1)
3783
- ]), 40, _hoisted_3$2)) : vue.createCommentVNode("", true),
3784
- _ctx.controls && _ctx.controlsPosition === "right" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, [
5952
+ }, [
5953
+ vue.createVNode(vue.unref(FIcon$2), null, {
5954
+ default: vue.withCtx(() => [
5955
+ vue.createVNode(vue.unref(ionicons5.AddOutline))
5956
+ ]),
5957
+ _: 1
5958
+ })
5959
+ ], 40, _hoisted_3$3)) : vue.createCommentVNode("", true),
5960
+ _ctx.controls && _ctx.controlsPosition === "right" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
3785
5961
  vue.createElementVNode("button", {
3786
5962
  type: "button",
3787
5963
  class: "f-input-number__stack-btn",
@@ -3790,22 +5966,14 @@ var __async = (__this, __arguments, generator) => {
3790
5966
  onMousedown: _cache[2] || (_cache[2] = vue.withModifiers(($event) => startRepeat(1), ["prevent"])),
3791
5967
  onMouseup: stopRepeat,
3792
5968
  onMouseleave: stopRepeat
3793
- }, _cache[6] || (_cache[6] = [
3794
- vue.createElementVNode("svg", {
3795
- viewBox: "0 0 12 12",
3796
- width: "8",
3797
- height: "8"
3798
- }, [
3799
- vue.createElementVNode("path", {
3800
- d: "M2 7l4-4 4 4",
3801
- stroke: "currentColor",
3802
- "stroke-width": "1.5",
3803
- fill: "none",
3804
- "stroke-linecap": "round",
3805
- "stroke-linejoin": "round"
3806
- })
3807
- ], -1)
3808
- ]), 40, _hoisted_5$1),
5969
+ }, [
5970
+ vue.createVNode(vue.unref(FIcon$2), null, {
5971
+ default: vue.withCtx(() => [
5972
+ vue.createVNode(vue.unref(ionicons5.ChevronUpOutline))
5973
+ ]),
5974
+ _: 1
5975
+ })
5976
+ ], 40, _hoisted_5$2),
3809
5977
  vue.createElementVNode("button", {
3810
5978
  type: "button",
3811
5979
  class: "f-input-number__stack-btn",
@@ -3814,41 +5982,34 @@ var __async = (__this, __arguments, generator) => {
3814
5982
  onMousedown: _cache[3] || (_cache[3] = vue.withModifiers(($event) => startRepeat(-1), ["prevent"])),
3815
5983
  onMouseup: stopRepeat,
3816
5984
  onMouseleave: stopRepeat
3817
- }, _cache[7] || (_cache[7] = [
3818
- vue.createElementVNode("svg", {
3819
- viewBox: "0 0 12 12",
3820
- width: "8",
3821
- height: "8"
3822
- }, [
3823
- vue.createElementVNode("path", {
3824
- d: "M2 5l4 4 4-4",
3825
- stroke: "currentColor",
3826
- "stroke-width": "1.5",
3827
- fill: "none",
3828
- "stroke-linecap": "round",
3829
- "stroke-linejoin": "round"
3830
- })
3831
- ], -1)
3832
- ]), 40, _hoisted_6$1)
5985
+ }, [
5986
+ vue.createVNode(vue.unref(FIcon$2), null, {
5987
+ default: vue.withCtx(() => [
5988
+ vue.createVNode(vue.unref(ionicons5.ChevronDownOutline))
5989
+ ]),
5990
+ _: 1
5991
+ })
5992
+ ], 40, _hoisted_6$1)
3833
5993
  ])) : vue.createCommentVNode("", true)
3834
5994
  ], 2);
3835
5995
  };
3836
5996
  }
3837
5997
  });
3838
- const _hoisted_1$2 = { class: "f-result__icon" };
3839
- const _hoisted_2$1 = {
5998
+ const FInputNumber = /* @__PURE__ */ _export_sfc$3(_sfc_main$4, [["__scopeId", "data-v-292cd24f"]]);
5999
+ const _hoisted_1$3 = { class: "f-result__icon" };
6000
+ const _hoisted_2$2 = {
3840
6001
  key: 0,
3841
6002
  class: "f-result__code"
3842
6003
  };
3843
- const _hoisted_3$1 = {
6004
+ const _hoisted_3$2 = {
3844
6005
  key: 0,
3845
6006
  class: "f-result__title"
3846
6007
  };
3847
- const _hoisted_4 = {
6008
+ const _hoisted_4$1 = {
3848
6009
  key: 1,
3849
6010
  class: "f-result__subtitle"
3850
6011
  };
3851
- const _hoisted_5 = {
6012
+ const _hoisted_5$1 = {
3852
6013
  key: 2,
3853
6014
  class: "f-result__extra"
3854
6015
  };
@@ -3856,7 +6017,7 @@ var __async = (__this, __arguments, generator) => {
3856
6017
  key: 3,
3857
6018
  class: "f-result__content"
3858
6019
  };
3859
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
6020
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3860
6021
  __name: "FResult",
3861
6022
  props: {
3862
6023
  status: { default: "info" },
@@ -3882,9 +6043,9 @@ var __async = (__this, __arguments, generator) => {
3882
6043
  return vue.openBlock(), vue.createElementBlock("div", {
3883
6044
  class: vue.normalizeClass(["f-result", `f-result--${_ctx.status}`])
3884
6045
  }, [
3885
- vue.createElementVNode("div", _hoisted_1$2, [
6046
+ vue.createElementVNode("div", _hoisted_1$3, [
3886
6047
  vue.renderSlot(_ctx.$slots, "icon", {}, () => [
3887
- vue.unref(showCode) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, vue.toDisplayString(_ctx.status), 1)) : (vue.openBlock(), vue.createBlock(FIcon, {
6048
+ vue.unref(showCode) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$2, vue.toDisplayString(_ctx.status), 1)) : (vue.openBlock(), vue.createBlock(FIcon$3, {
3888
6049
  key: 1,
3889
6050
  size: 72
3890
6051
  }, {
@@ -3895,17 +6056,17 @@ var __async = (__this, __arguments, generator) => {
3895
6056
  }))
3896
6057
  ], true)
3897
6058
  ]),
3898
- _ctx.$slots.title || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1, [
6059
+ _ctx.$slots.title || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2, [
3899
6060
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
3900
6061
  vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
3901
6062
  ], true)
3902
6063
  ])) : vue.createCommentVNode("", true),
3903
- _ctx.$slots.subtitle || _ctx.subTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
6064
+ _ctx.$slots.subtitle || _ctx.subTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, [
3904
6065
  vue.renderSlot(_ctx.$slots, "subtitle", {}, () => [
3905
6066
  vue.createTextVNode(vue.toDisplayString(_ctx.subTitle), 1)
3906
6067
  ], true)
3907
6068
  ])) : vue.createCommentVNode("", true),
3908
- _ctx.$slots.extra ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
6069
+ _ctx.$slots.extra ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, [
3909
6070
  vue.renderSlot(_ctx.$slots, "extra", {}, void 0, true)
3910
6071
  ])) : vue.createCommentVNode("", true),
3911
6072
  _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
@@ -3915,9 +6076,9 @@ var __async = (__this, __arguments, generator) => {
3915
6076
  };
3916
6077
  }
3917
6078
  });
3918
- const FResult = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-1667a865"]]);
3919
- const _hoisted_1$1 = { class: "f-message__content" };
3920
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
6079
+ const FResult = /* @__PURE__ */ _export_sfc$3(_sfc_main$3, [["__scopeId", "data-v-1667a865"]]);
6080
+ const _hoisted_1$2 = { class: "f-message__content" };
6081
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3921
6082
  __name: "FMessage",
3922
6083
  props: {
3923
6084
  type: { default: "info" },
@@ -3938,7 +6099,9 @@ var __async = (__this, __arguments, generator) => {
3938
6099
  info: ionicons5.InformationCircle,
3939
6100
  success: ionicons5.CheckmarkCircle,
3940
6101
  warning: ionicons5.Warning,
3941
- failed: ionicons5.CloseCircle
6102
+ failed: ionicons5.CloseCircle,
6103
+ default: ionicons5.InformationCircle,
6104
+ primary: ionicons5.InformationCircle
3942
6105
  };
3943
6106
  return map[props.type];
3944
6107
  });
@@ -3985,7 +6148,7 @@ var __async = (__this, __arguments, generator) => {
3985
6148
  onMouseenter: clearTimer,
3986
6149
  onMouseleave: startTimer
3987
6150
  }, [
3988
- _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon, {
6151
+ _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon$3, {
3989
6152
  key: 0,
3990
6153
  class: "f-message__icon"
3991
6154
  }, {
@@ -3994,7 +6157,7 @@ var __async = (__this, __arguments, generator) => {
3994
6157
  ]),
3995
6158
  _: 1
3996
6159
  })) : vue.createCommentVNode("", true),
3997
- vue.createElementVNode("span", _hoisted_1$1, vue.toDisplayString(_ctx.message), 1),
6160
+ vue.createElementVNode("span", _hoisted_1$2, vue.toDisplayString(_ctx.message), 1),
3998
6161
  _ctx.closable ? (vue.openBlock(), vue.createElementBlock("button", {
3999
6162
  key: 1,
4000
6163
  type: "button",
@@ -4002,7 +6165,7 @@ var __async = (__this, __arguments, generator) => {
4002
6165
  "aria-label": "close",
4003
6166
  onClick: close
4004
6167
  }, [
4005
- vue.createVNode(FIcon, null, {
6168
+ vue.createVNode(FIcon$3, null, {
4006
6169
  default: vue.withCtx(() => [
4007
6170
  vue.createVNode(vue.unref(ionicons5.Close))
4008
6171
  ]),
@@ -4016,7 +6179,7 @@ var __async = (__this, __arguments, generator) => {
4016
6179
  };
4017
6180
  }
4018
6181
  });
4019
- const FMessageComp = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-6332ba18"]]);
6182
+ const FMessageComp = /* @__PURE__ */ _export_sfc$3(_sfc_main$2, [["__scopeId", "data-v-97556afa"]]);
4020
6183
  const GAP$1 = 16;
4021
6184
  const BASE_OFFSET$1 = 20;
4022
6185
  let seed$1 = 0;
@@ -4089,13 +6252,13 @@ var __async = (__this, __arguments, generator) => {
4089
6252
  (_c = (_b = (_a = item.vnode.component) == null ? void 0 : _a.exposed) == null ? void 0 : _b.close) == null ? void 0 : _c.call(_b);
4090
6253
  });
4091
6254
  };
4092
- const _hoisted_1 = { class: "f-notification__body" };
4093
- const _hoisted_2 = {
6255
+ const _hoisted_1$1 = { class: "f-notification__body" };
6256
+ const _hoisted_2$1 = {
4094
6257
  key: 0,
4095
6258
  class: "f-notification__title"
4096
6259
  };
4097
- const _hoisted_3 = { class: "f-notification__content" };
4098
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
6260
+ const _hoisted_3$1 = { class: "f-notification__content" };
6261
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
4099
6262
  __name: "FNotification",
4100
6263
  props: {
4101
6264
  type: { default: "info" },
@@ -4118,7 +6281,9 @@ var __async = (__this, __arguments, generator) => {
4118
6281
  info: ionicons5.InformationCircle,
4119
6282
  success: ionicons5.CheckmarkCircle,
4120
6283
  warning: ionicons5.Warning,
4121
- failed: ionicons5.CloseCircle
6284
+ failed: ionicons5.CloseCircle,
6285
+ default: ionicons5.InformationCircle,
6286
+ primary: ionicons5.InformationCircle
4122
6287
  };
4123
6288
  return map[props.type];
4124
6289
  });
@@ -4170,7 +6335,7 @@ var __async = (__this, __arguments, generator) => {
4170
6335
  onMouseleave: startTimer,
4171
6336
  onClick: handleClick
4172
6337
  }, [
4173
- _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon, {
6338
+ _ctx.showIcon ? (vue.openBlock(), vue.createBlock(FIcon$3, {
4174
6339
  key: 0,
4175
6340
  class: "f-notification__icon"
4176
6341
  }, {
@@ -4179,9 +6344,9 @@ var __async = (__this, __arguments, generator) => {
4179
6344
  ]),
4180
6345
  _: 1
4181
6346
  })) : vue.createCommentVNode("", true),
4182
- vue.createElementVNode("div", _hoisted_1, [
4183
- _ctx.title ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2, vue.toDisplayString(_ctx.title), 1)) : vue.createCommentVNode("", true),
4184
- vue.createElementVNode("p", _hoisted_3, vue.toDisplayString(_ctx.message), 1)
6347
+ vue.createElementVNode("div", _hoisted_1$1, [
6348
+ _ctx.title ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$1, vue.toDisplayString(_ctx.title), 1)) : vue.createCommentVNode("", true),
6349
+ vue.createElementVNode("p", _hoisted_3$1, vue.toDisplayString(_ctx.message), 1)
4185
6350
  ]),
4186
6351
  _ctx.closable ? (vue.openBlock(), vue.createElementBlock("button", {
4187
6352
  key: 1,
@@ -4190,7 +6355,7 @@ var __async = (__this, __arguments, generator) => {
4190
6355
  "aria-label": "close",
4191
6356
  onClick: vue.withModifiers(close, ["stop"])
4192
6357
  }, [
4193
- vue.createVNode(FIcon, null, {
6358
+ vue.createVNode(FIcon$3, null, {
4194
6359
  default: vue.withCtx(() => [
4195
6360
  vue.createVNode(vue.unref(ionicons5.Close))
4196
6361
  ]),
@@ -4204,7 +6369,7 @@ var __async = (__this, __arguments, generator) => {
4204
6369
  };
4205
6370
  }
4206
6371
  });
4207
- const FNotificationComp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7600a501"]]);
6372
+ const FNotificationComp = /* @__PURE__ */ _export_sfc$3(_sfc_main$1, [["__scopeId", "data-v-0a7315d6"]]);
4208
6373
  const GAP = 16;
4209
6374
  const BASE_OFFSET = 20;
4210
6375
  let seed = 0;
@@ -4293,6 +6458,262 @@ var __async = (__this, __arguments, generator) => {
4293
6458
  });
4294
6459
  });
4295
6460
  };
6461
+ const _hoisted_1 = {
6462
+ key: 0,
6463
+ class: "f-dialog__icon"
6464
+ };
6465
+ const _hoisted_2 = { class: "f-dialog__title" };
6466
+ const _hoisted_3 = { class: "f-dialog__body" };
6467
+ const _hoisted_4 = { key: 0 };
6468
+ const _hoisted_5 = {
6469
+ key: 2,
6470
+ class: "f-dialog__footer"
6471
+ };
6472
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
6473
+ __name: "FDialog",
6474
+ props: /* @__PURE__ */ vue.mergeModels({
6475
+ title: { default: "提示" },
6476
+ content: {},
6477
+ width: { default: "500px" },
6478
+ type: { default: "default" },
6479
+ confirmText: { default: "确定" },
6480
+ cancelText: { default: "取消" },
6481
+ showCancel: { type: Boolean, default: true },
6482
+ showClose: { type: Boolean, default: true },
6483
+ closeOnClickModal: { type: Boolean, default: true },
6484
+ closeOnEsc: { type: Boolean, default: true },
6485
+ center: { type: Boolean, default: false },
6486
+ fullscreen: { type: Boolean, default: false },
6487
+ destroyOnClose: { type: Boolean, default: false },
6488
+ beforeClose: {}
6489
+ }, {
6490
+ "modelValue": __spreadValues({ type: Boolean }, { required: true }),
6491
+ "modelModifiers": {}
6492
+ }),
6493
+ emits: /* @__PURE__ */ vue.mergeModels(["open", "close", "confirm", "cancel"], ["update:modelValue"]),
6494
+ setup(__props, { emit: __emit }) {
6495
+ const props = __props;
6496
+ const emit = __emit;
6497
+ const visible = vue.useModel(__props, "modelValue");
6498
+ const handleClose = () => {
6499
+ visible.value = false;
6500
+ emit("close");
6501
+ };
6502
+ const handleConfirm = () => {
6503
+ emit("confirm");
6504
+ if (props.beforeClose) {
6505
+ props.beforeClose(() => {
6506
+ visible.value = false;
6507
+ });
6508
+ } else {
6509
+ visible.value = false;
6510
+ }
6511
+ };
6512
+ const handleCancel = () => {
6513
+ emit("cancel");
6514
+ handleClose();
6515
+ };
6516
+ const handleOverlayClick = (e) => {
6517
+ if (props.closeOnClickModal && e.target === e.currentTarget) {
6518
+ handleClose();
6519
+ }
6520
+ };
6521
+ const handleKeydown = (e) => {
6522
+ if (props.closeOnEsc && e.key === "Escape") {
6523
+ handleClose();
6524
+ }
6525
+ };
6526
+ vue.onMounted(() => {
6527
+ if (props.closeOnEsc) {
6528
+ window.addEventListener("keydown", handleKeydown);
6529
+ }
6530
+ emit("open");
6531
+ });
6532
+ vue.onBeforeUnmount(() => {
6533
+ if (props.closeOnEsc) {
6534
+ window.removeEventListener("keydown", handleKeydown);
6535
+ }
6536
+ });
6537
+ const iconMap = {
6538
+ info: ionicons5.InformationCircleOutline,
6539
+ success: ionicons5.CheckmarkCircleOutline,
6540
+ warning: ionicons5.WarningOutline,
6541
+ failed: ionicons5.AlertCircleOutline,
6542
+ primary: ionicons5.InformationCircleOutline,
6543
+ default: ionicons5.InformationCircleOutline
6544
+ };
6545
+ const hasIcon = vue.computed(() => props.type && props.type !== "default");
6546
+ return (_ctx, _cache) => {
6547
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
6548
+ vue.createVNode(vue.Transition, { name: "f-dialog-fade" }, {
6549
+ default: vue.withCtx(() => [
6550
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
6551
+ key: 0,
6552
+ class: "f-dialog-overlay",
6553
+ onClick: handleOverlayClick
6554
+ }, [
6555
+ vue.createVNode(vue.Transition, { name: "f-dialog-zoom" }, {
6556
+ default: vue.withCtx(() => [
6557
+ visible.value ? (vue.openBlock(), vue.createElementBlock("div", {
6558
+ key: 0,
6559
+ class: vue.normalizeClass(["f-dialog", [
6560
+ `f-dialog--${_ctx.type}`,
6561
+ {
6562
+ "is-center": _ctx.center,
6563
+ "is-fullscreen": _ctx.fullscreen
6564
+ }
6565
+ ]]),
6566
+ style: vue.normalizeStyle({ width: _ctx.fullscreen ? "100%" : _ctx.width })
6567
+ }, [
6568
+ _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
6569
+ key: 0,
6570
+ type: "button",
6571
+ class: "f-dialog__close",
6572
+ onClick: handleClose
6573
+ }, [
6574
+ vue.createVNode(FIcon$3, null, {
6575
+ default: vue.withCtx(() => [
6576
+ vue.createVNode(vue.unref(ionicons5.CloseOutline))
6577
+ ]),
6578
+ _: 1
6579
+ })
6580
+ ])) : vue.createCommentVNode("", true),
6581
+ _ctx.$slots.header || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", {
6582
+ key: 1,
6583
+ class: vue.normalizeClass(["f-dialog__header", { "has-icon": vue.unref(hasIcon) }])
6584
+ }, [
6585
+ vue.renderSlot(_ctx.$slots, "header", {}, () => [
6586
+ vue.unref(hasIcon) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
6587
+ vue.createVNode(FIcon$3, null, {
6588
+ default: vue.withCtx(() => [
6589
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(iconMap[_ctx.type])))
6590
+ ]),
6591
+ _: 1
6592
+ })
6593
+ ])) : vue.createCommentVNode("", true),
6594
+ vue.createElementVNode("h3", _hoisted_2, vue.toDisplayString(_ctx.title), 1)
6595
+ ], true)
6596
+ ], 2)) : vue.createCommentVNode("", true),
6597
+ vue.createElementVNode("div", _hoisted_3, [
6598
+ vue.renderSlot(_ctx.$slots, "default", {}, () => [
6599
+ _ctx.content ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4, vue.toDisplayString(_ctx.content), 1)) : vue.createCommentVNode("", true)
6600
+ ], true)
6601
+ ]),
6602
+ _ctx.$slots.footer || _ctx.showCancel ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
6603
+ vue.renderSlot(_ctx.$slots, "footer", {}, () => [
6604
+ _ctx.showCancel ? (vue.openBlock(), vue.createBlock(FButton, {
6605
+ key: 0,
6606
+ onClick: handleCancel
6607
+ }, {
6608
+ default: vue.withCtx(() => [
6609
+ vue.createTextVNode(vue.toDisplayString(_ctx.cancelText), 1)
6610
+ ]),
6611
+ _: 1
6612
+ })) : vue.createCommentVNode("", true),
6613
+ vue.createVNode(FButton, {
6614
+ type: "primary",
6615
+ onClick: handleConfirm
6616
+ }, {
6617
+ default: vue.withCtx(() => [
6618
+ vue.createTextVNode(vue.toDisplayString(_ctx.confirmText), 1)
6619
+ ]),
6620
+ _: 1
6621
+ })
6622
+ ], true)
6623
+ ])) : vue.createCommentVNode("", true)
6624
+ ], 6)) : vue.createCommentVNode("", true)
6625
+ ]),
6626
+ _: 3
6627
+ })
6628
+ ])) : vue.createCommentVNode("", true)
6629
+ ]),
6630
+ _: 3
6631
+ })
6632
+ ]);
6633
+ };
6634
+ }
6635
+ });
6636
+ const FDialogComp = /* @__PURE__ */ _export_sfc$3(_sfc_main, [["__scopeId", "data-v-991352de"]]);
6637
+ const showDialog = (options) => {
6638
+ return new Promise((resolve) => {
6639
+ const container = document.createElement("div");
6640
+ document.body.appendChild(container);
6641
+ const visible = vue.ref(true);
6642
+ const handleConfirm = () => {
6643
+ cleanup();
6644
+ resolve(true);
6645
+ };
6646
+ const handleCancel = () => {
6647
+ cleanup();
6648
+ resolve(false);
6649
+ };
6650
+ const handleClose = () => {
6651
+ cleanup();
6652
+ resolve(false);
6653
+ };
6654
+ const cleanup = () => {
6655
+ visible.value = false;
6656
+ setTimeout(() => {
6657
+ vue.render(null, container);
6658
+ document.body.removeChild(container);
6659
+ }, 300);
6660
+ };
6661
+ const vnode = vue.h(FDialogComp, __spreadValues({
6662
+ modelValue: visible.value,
6663
+ "onUpdate:modelValue": (val) => {
6664
+ visible.value = val;
6665
+ if (!val) {
6666
+ cleanup();
6667
+ }
6668
+ },
6669
+ onConfirm: handleConfirm,
6670
+ onCancel: handleCancel,
6671
+ onClose: handleClose
6672
+ }, options));
6673
+ vue.render(vnode, container);
6674
+ });
6675
+ };
6676
+ const confirm = (content, title = "确认") => {
6677
+ return showDialog({
6678
+ title,
6679
+ content,
6680
+ type: "warning",
6681
+ showCancel: true,
6682
+ center: true
6683
+ });
6684
+ };
6685
+ const alert = (content, title = "提示", type = "info") => {
6686
+ return showDialog({
6687
+ title,
6688
+ content,
6689
+ type,
6690
+ showCancel: false,
6691
+ confirmText: "知道了",
6692
+ center: true
6693
+ });
6694
+ };
6695
+ const success = (content, title = "成功") => {
6696
+ return alert(content, title, "success");
6697
+ };
6698
+ const warning = (content, title = "警告") => {
6699
+ return alert(content, title, "warning");
6700
+ };
6701
+ const failed = (content, title = "错误") => {
6702
+ return alert(content, title, "failed");
6703
+ };
6704
+ const info = (content, title = "提示") => {
6705
+ return alert(content, title, "info");
6706
+ };
6707
+ const FDialog = (options) => {
6708
+ return showDialog(options);
6709
+ };
6710
+ FDialog.showDialog = showDialog;
6711
+ FDialog.confirm = confirm;
6712
+ FDialog.alert = alert;
6713
+ FDialog.success = success;
6714
+ FDialog.warning = warning;
6715
+ FDialog.failed = failed;
6716
+ FDialog.info = info;
4296
6717
  const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4297
6718
  __proto__: null,
4298
6719
  FAffix,
@@ -4305,21 +6726,21 @@ var __async = (__this, __arguments, generator) => {
4305
6726
  FCard,
4306
6727
  FCheckbox,
4307
6728
  FCol,
4308
- FCollapse: _sfc_main$9,
4309
- FCollapseItem: _sfc_main$8,
4310
- FColorPicker: _sfc_main$7,
6729
+ FCollapse: _sfc_main$a,
6730
+ FCollapseItem: _sfc_main$9,
6731
+ FColorPicker: _sfc_main$8,
4311
6732
  FContainer,
4312
6733
  FDialog,
4313
6734
  FDivider,
4314
6735
  FDropdown,
4315
6736
  FEditor,
4316
- FEmpty: _sfc_main$6,
6737
+ FEmpty: _sfc_main$7,
4317
6738
  FForm,
4318
6739
  FFormItem,
4319
- FIcon,
6740
+ FIcon: FIcon$3,
4320
6741
  FImage,
4321
6742
  FInput,
4322
- FInputNumber: _sfc_main$3,
6743
+ FInputNumber,
4323
6744
  FLink,
4324
6745
  FLoading,
4325
6746
  FMessage,
@@ -4329,9 +6750,9 @@ var __async = (__this, __arguments, generator) => {
4329
6750
  FRate,
4330
6751
  FResult,
4331
6752
  FRow,
4332
- FScrollbar: _sfc_main$4,
6753
+ FScrollbar: _sfc_main$5,
4333
6754
  FSelect,
4334
- FSlider: _sfc_main$5,
6755
+ FSlider: _sfc_main$6,
4335
6756
  FSpace,
4336
6757
  FTable,
4337
6758
  FTabs,
@@ -4356,21 +6777,21 @@ var __async = (__this, __arguments, generator) => {
4356
6777
  exports2.FCard = FCard;
4357
6778
  exports2.FCheckbox = FCheckbox;
4358
6779
  exports2.FCol = FCol;
4359
- exports2.FCollapse = _sfc_main$9;
4360
- exports2.FCollapseItem = _sfc_main$8;
4361
- exports2.FColorPicker = _sfc_main$7;
6780
+ exports2.FCollapse = _sfc_main$a;
6781
+ exports2.FCollapseItem = _sfc_main$9;
6782
+ exports2.FColorPicker = _sfc_main$8;
4362
6783
  exports2.FContainer = FContainer;
4363
6784
  exports2.FDialog = FDialog;
4364
6785
  exports2.FDivider = FDivider;
4365
6786
  exports2.FDropdown = FDropdown;
4366
6787
  exports2.FEditor = FEditor;
4367
- exports2.FEmpty = _sfc_main$6;
6788
+ exports2.FEmpty = _sfc_main$7;
4368
6789
  exports2.FForm = FForm;
4369
6790
  exports2.FFormItem = FFormItem;
4370
- exports2.FIcon = FIcon;
6791
+ exports2.FIcon = FIcon$3;
4371
6792
  exports2.FImage = FImage;
4372
6793
  exports2.FInput = FInput;
4373
- exports2.FInputNumber = _sfc_main$3;
6794
+ exports2.FInputNumber = FInputNumber;
4374
6795
  exports2.FLink = FLink;
4375
6796
  exports2.FLoading = FLoading;
4376
6797
  exports2.FMessage = FMessage;
@@ -4380,9 +6801,9 @@ var __async = (__this, __arguments, generator) => {
4380
6801
  exports2.FRate = FRate;
4381
6802
  exports2.FResult = FResult;
4382
6803
  exports2.FRow = FRow;
4383
- exports2.FScrollbar = _sfc_main$4;
6804
+ exports2.FScrollbar = _sfc_main$5;
4384
6805
  exports2.FSelect = FSelect;
4385
- exports2.FSlider = _sfc_main$5;
6806
+ exports2.FSlider = _sfc_main$6;
4386
6807
  exports2.FSpace = FSpace;
4387
6808
  exports2.FTable = FTable;
4388
6809
  exports2.FTabs = FTabs;