@falcon-ui/falcon-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/cjs/JsBarcode-BlUjuVmB.cjs +3519 -0
  4. package/cjs/JsBarcode-BlUjuVmB.cjs.map +1 -0
  5. package/cjs/chunk-D4y6LrGi.cjs +40 -0
  6. package/cjs/components/JsBarcode-BOXEZn4Q.cjs +3519 -0
  7. package/cjs/components/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  8. package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs +3519 -0
  9. package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  10. package/cjs/components/barcode/chunk-D4y6LrGi.cjs +40 -0
  11. package/cjs/components/barcode/index.cjs +211 -0
  12. package/cjs/components/barcode/index.cjs.map +1 -0
  13. package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs +3519 -0
  14. package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs.map +1 -0
  15. package/cjs/components/barcode/src/barcode.cjs +102 -0
  16. package/cjs/components/barcode/src/barcode.cjs.map +1 -0
  17. package/cjs/components/barcode/src/barcode.vue.cjs +200 -0
  18. package/cjs/components/barcode/src/barcode.vue.cjs.map +1 -0
  19. package/cjs/components/barcode/src/chunk-D4y6LrGi.cjs +40 -0
  20. package/cjs/components/button/index.cjs +135 -0
  21. package/cjs/components/button/index.cjs.map +1 -0
  22. package/cjs/components/button/src/button.cjs +16 -0
  23. package/cjs/components/button/src/button.cjs.map +1 -0
  24. package/cjs/components/button/src/button.vue.cjs +124 -0
  25. package/cjs/components/button/src/button.vue.cjs.map +1 -0
  26. package/cjs/components/chunk-D4y6LrGi.cjs +40 -0
  27. package/cjs/components/date-picker/index.cjs +164 -0
  28. package/cjs/components/date-picker/index.cjs.map +1 -0
  29. package/cjs/components/date-picker/src/date-picker.cjs +25 -0
  30. package/cjs/components/date-picker/src/date-picker.cjs.map +1 -0
  31. package/cjs/components/date-picker/src/date-picker.vue.cjs +153 -0
  32. package/cjs/components/date-picker/src/date-picker.vue.cjs.map +1 -0
  33. package/cjs/components/dialog/index.cjs +346 -0
  34. package/cjs/components/dialog/index.cjs.map +1 -0
  35. package/cjs/components/dialog/src/dialog.cjs +40 -0
  36. package/cjs/components/dialog/src/dialog.cjs.map +1 -0
  37. package/cjs/components/dialog/src/dialog.vue.cjs +343 -0
  38. package/cjs/components/dialog/src/dialog.vue.cjs.map +1 -0
  39. package/cjs/components/index.cjs +9450 -0
  40. package/cjs/components/index.cjs.map +1 -0
  41. package/cjs/components/input/index.cjs +175 -0
  42. package/cjs/components/input/index.cjs.map +1 -0
  43. package/cjs/components/input/src/input.cjs +27 -0
  44. package/cjs/components/input/src/input.cjs.map +1 -0
  45. package/cjs/components/input/src/input.vue.cjs +164 -0
  46. package/cjs/components/input/src/input.vue.cjs.map +1 -0
  47. package/cjs/components/input-number/index.cjs +374 -0
  48. package/cjs/components/input-number/index.cjs.map +1 -0
  49. package/cjs/components/input-number/src/input-number.cjs +48 -0
  50. package/cjs/components/input-number/src/input-number.cjs.map +1 -0
  51. package/cjs/components/input-number/src/input-number.vue.cjs +363 -0
  52. package/cjs/components/input-number/src/input-number.vue.cjs.map +1 -0
  53. package/cjs/components/input-search/index.cjs +286 -0
  54. package/cjs/components/input-search/index.cjs.map +1 -0
  55. package/cjs/components/input-search/src/input-search.cjs +55 -0
  56. package/cjs/components/input-search/src/input-search.cjs.map +1 -0
  57. package/cjs/components/input-search/src/input-search.vue.cjs +275 -0
  58. package/cjs/components/input-search/src/input-search.vue.cjs.map +1 -0
  59. package/cjs/components/qr-code/index.cjs +1975 -0
  60. package/cjs/components/qr-code/index.cjs.map +1 -0
  61. package/cjs/components/qr-code/src/qr-code.cjs +63 -0
  62. package/cjs/components/qr-code/src/qr-code.cjs.map +1 -0
  63. package/cjs/components/qr-code/src/qr-code.vue.cjs +1964 -0
  64. package/cjs/components/qr-code/src/qr-code.vue.cjs.map +1 -0
  65. package/cjs/components/radial-menu/index.cjs +983 -0
  66. package/cjs/components/radial-menu/index.cjs.map +1 -0
  67. package/cjs/components/radial-menu/src/radial-menu.cjs +96 -0
  68. package/cjs/components/radial-menu/src/radial-menu.cjs.map +1 -0
  69. package/cjs/components/radial-menu/src/radial-menu.vue.cjs +921 -0
  70. package/cjs/components/radial-menu/src/radial-menu.vue.cjs.map +1 -0
  71. package/cjs/components/select/index.cjs +163 -0
  72. package/cjs/components/select/index.cjs.map +1 -0
  73. package/cjs/components/select/src/select.cjs +16 -0
  74. package/cjs/components/select/src/select.cjs.map +1 -0
  75. package/cjs/components/select/src/select.vue.cjs +152 -0
  76. package/cjs/components/select/src/select.vue.cjs.map +1 -0
  77. package/cjs/components/table/index.cjs +3351 -0
  78. package/cjs/components/table/index.cjs.map +1 -0
  79. package/cjs/components/table/src/table.cjs +62 -0
  80. package/cjs/components/table/src/table.cjs.map +1 -0
  81. package/cjs/components/table/src/table.vue.cjs +3085 -0
  82. package/cjs/components/table/src/table.vue.cjs.map +1 -0
  83. package/cjs/dialog-CJU00aEV.cjs +614 -0
  84. package/cjs/dialog-CJU00aEV.cjs.map +1 -0
  85. package/cjs/dialog-DcH26KbE.cjs +2 -0
  86. package/cjs/hooks/dialog-DpYPBcKV.cjs +266 -0
  87. package/cjs/hooks/dialog-DpYPBcKV.cjs.map +1 -0
  88. package/cjs/hooks/hooks-D2Jaq5kO.cjs +328 -0
  89. package/cjs/hooks/hooks-D2Jaq5kO.cjs.map +1 -0
  90. package/cjs/hooks/index.cjs +8 -0
  91. package/cjs/icons/index.cjs +86 -0
  92. package/cjs/icons/index.cjs.map +1 -0
  93. package/cjs/index.cjs +9141 -0
  94. package/cjs/index.cjs.map +1 -0
  95. package/cjs/utils/index.cjs +69 -0
  96. package/cjs/utils/index.cjs.map +1 -0
  97. package/esm/JsBarcode-kVJER62m.js +3514 -0
  98. package/esm/JsBarcode-kVJER62m.js.map +1 -0
  99. package/esm/chunk-BuRq7rDw.js +23 -0
  100. package/esm/components/JsBarcode-CzzxrEd_.js +3514 -0
  101. package/esm/components/JsBarcode-CzzxrEd_.js.map +1 -0
  102. package/esm/components/barcode/JsBarcode-C5ux6wsb.js +3514 -0
  103. package/esm/components/barcode/JsBarcode-C5ux6wsb.js.map +1 -0
  104. package/esm/components/barcode/chunk--em_ddB3.js +23 -0
  105. package/esm/components/barcode/index.mjs +204 -0
  106. package/esm/components/barcode/index.mjs.map +1 -0
  107. package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js +3514 -0
  108. package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js.map +1 -0
  109. package/esm/components/barcode/src/barcode.mjs +98 -0
  110. package/esm/components/barcode/src/barcode.mjs.map +1 -0
  111. package/esm/components/barcode/src/barcode.vue.mjs +194 -0
  112. package/esm/components/barcode/src/barcode.vue.mjs.map +1 -0
  113. package/esm/components/barcode/src/chunk--em_ddB3.js +23 -0
  114. package/esm/components/button/index.mjs +126 -0
  115. package/esm/components/button/index.mjs.map +1 -0
  116. package/esm/components/button/src/button.mjs +14 -0
  117. package/esm/components/button/src/button.mjs.map +1 -0
  118. package/esm/components/button/src/button.vue.mjs +117 -0
  119. package/esm/components/button/src/button.vue.mjs.map +1 -0
  120. package/esm/components/chunk-BuRq7rDw.js +23 -0
  121. package/esm/components/date-picker/index.mjs +155 -0
  122. package/esm/components/date-picker/index.mjs.map +1 -0
  123. package/esm/components/date-picker/src/date-picker.mjs +23 -0
  124. package/esm/components/date-picker/src/date-picker.mjs.map +1 -0
  125. package/esm/components/date-picker/src/date-picker.vue.mjs +146 -0
  126. package/esm/components/date-picker/src/date-picker.vue.mjs.map +1 -0
  127. package/esm/components/dialog/index.mjs +335 -0
  128. package/esm/components/dialog/index.mjs.map +1 -0
  129. package/esm/components/dialog/src/dialog.mjs +38 -0
  130. package/esm/components/dialog/src/dialog.mjs.map +1 -0
  131. package/esm/components/dialog/src/dialog.vue.mjs +334 -0
  132. package/esm/components/dialog/src/dialog.vue.mjs.map +1 -0
  133. package/esm/components/index.mjs +9386 -0
  134. package/esm/components/index.mjs.map +1 -0
  135. package/esm/components/input/index.mjs +166 -0
  136. package/esm/components/input/index.mjs.map +1 -0
  137. package/esm/components/input/src/input.mjs +25 -0
  138. package/esm/components/input/src/input.mjs.map +1 -0
  139. package/esm/components/input/src/input.vue.mjs +157 -0
  140. package/esm/components/input/src/input.vue.mjs.map +1 -0
  141. package/esm/components/input-number/index.mjs +365 -0
  142. package/esm/components/input-number/index.mjs.map +1 -0
  143. package/esm/components/input-number/src/input-number.mjs +45 -0
  144. package/esm/components/input-number/src/input-number.mjs.map +1 -0
  145. package/esm/components/input-number/src/input-number.vue.mjs +356 -0
  146. package/esm/components/input-number/src/input-number.vue.mjs.map +1 -0
  147. package/esm/components/input-search/index.mjs +277 -0
  148. package/esm/components/input-search/index.mjs.map +1 -0
  149. package/esm/components/input-search/src/input-search.mjs +53 -0
  150. package/esm/components/input-search/src/input-search.mjs.map +1 -0
  151. package/esm/components/input-search/src/input-search.vue.mjs +268 -0
  152. package/esm/components/input-search/src/input-search.vue.mjs.map +1 -0
  153. package/esm/components/qr-code/index.mjs +1967 -0
  154. package/esm/components/qr-code/index.mjs.map +1 -0
  155. package/esm/components/qr-code/src/qr-code.mjs +59 -0
  156. package/esm/components/qr-code/src/qr-code.mjs.map +1 -0
  157. package/esm/components/qr-code/src/qr-code.vue.mjs +1958 -0
  158. package/esm/components/qr-code/src/qr-code.vue.mjs.map +1 -0
  159. package/esm/components/radial-menu/index.mjs +974 -0
  160. package/esm/components/radial-menu/index.mjs.map +1 -0
  161. package/esm/components/radial-menu/src/radial-menu.mjs +94 -0
  162. package/esm/components/radial-menu/src/radial-menu.mjs.map +1 -0
  163. package/esm/components/radial-menu/src/radial-menu.vue.mjs +916 -0
  164. package/esm/components/radial-menu/src/radial-menu.vue.mjs.map +1 -0
  165. package/esm/components/select/index.mjs +154 -0
  166. package/esm/components/select/index.mjs.map +1 -0
  167. package/esm/components/select/src/select.mjs +14 -0
  168. package/esm/components/select/src/select.mjs.map +1 -0
  169. package/esm/components/select/src/select.vue.mjs +145 -0
  170. package/esm/components/select/src/select.vue.mjs.map +1 -0
  171. package/esm/components/table/index.mjs +3342 -0
  172. package/esm/components/table/index.mjs.map +1 -0
  173. package/esm/components/table/src/table.mjs +60 -0
  174. package/esm/components/table/src/table.mjs.map +1 -0
  175. package/esm/components/table/src/table.vue.mjs +3080 -0
  176. package/esm/components/table/src/table.vue.mjs.map +1 -0
  177. package/esm/dialog-Cm3Px-Bu.js +537 -0
  178. package/esm/dialog-Cm3Px-Bu.js.map +1 -0
  179. package/esm/dialog-CzZm50XM.js +2 -0
  180. package/esm/hooks/dialog-d4SMZWbw.js +261 -0
  181. package/esm/hooks/dialog-d4SMZWbw.js.map +1 -0
  182. package/esm/hooks/hooks-DdjieG2I.js +281 -0
  183. package/esm/hooks/hooks-DdjieG2I.js.map +1 -0
  184. package/esm/hooks/index.mjs +2 -0
  185. package/esm/icons/index.mjs +79 -0
  186. package/esm/icons/index.mjs.map +1 -0
  187. package/esm/index.mjs +9065 -0
  188. package/esm/index.mjs.map +1 -0
  189. package/esm/utils/index.mjs +65 -0
  190. package/esm/utils/index.mjs.map +1 -0
  191. package/global.d.ts +39 -0
  192. package/package.json +131 -0
  193. package/theme/index.css +1 -0
  194. package/theme/index.scss +16 -0
  195. package/theme/src/barcode.scss +14 -0
  196. package/theme/src/button.scss +65 -0
  197. package/theme/src/date-picker.scss +87 -0
  198. package/theme/src/dialog.scss +146 -0
  199. package/theme/src/ep-vars.scss +11 -0
  200. package/theme/src/input-number.scss +66 -0
  201. package/theme/src/input-search.scss +78 -0
  202. package/theme/src/input.scss +66 -0
  203. package/theme/src/mixins/bem.scss +35 -0
  204. package/theme/src/mixins/color.scss +8 -0
  205. package/theme/src/qr-code.scss +23 -0
  206. package/theme/src/radial-menu.scss +346 -0
  207. package/theme/src/select.scss +44 -0
  208. package/theme/src/table.scss +143 -0
  209. package/theme/src/tokens.scss +26 -0
  210. package/theme/src/tree-select.scss +45 -0
  211. package/theme/src/tree.scss +369 -0
  212. package/types/components/barcode/index.d.ts +183 -0
  213. package/types/components/barcode/src/barcode.d.ts +147 -0
  214. package/types/components/barcode/src/barcode.vue.d.ts +184 -0
  215. package/types/components/button/index.d.ts +135 -0
  216. package/types/components/button/src/button.d.ts +33 -0
  217. package/types/components/button/src/button.vue.d.ts +138 -0
  218. package/types/components/date-picker/index.d.ts +508 -0
  219. package/types/components/date-picker/src/date-picker.d.ts +35 -0
  220. package/types/components/date-picker/src/date-picker.vue.d.ts +509 -0
  221. package/types/components/dialog/index.d.ts +630 -0
  222. package/types/components/dialog/src/dialog.d.ts +70 -0
  223. package/types/components/dialog/src/dialog.vue.d.ts +257 -0
  224. package/types/components/index.d.ts +27 -0
  225. package/types/components/input/index.d.ts +233 -0
  226. package/types/components/input/src/input.d.ts +65 -0
  227. package/types/components/input/src/input.vue.d.ts +239 -0
  228. package/types/components/input-number/index.d.ts +713 -0
  229. package/types/components/input-number/src/input-number.d.ts +101 -0
  230. package/types/components/input-number/src/input-number.vue.d.ts +283 -0
  231. package/types/components/input-search/index.d.ts +113 -0
  232. package/types/components/input-search/src/input-search.d.ts +128 -0
  233. package/types/components/input-search/src/input-search.vue.d.ts +114 -0
  234. package/types/components/qr-code/index.d.ts +109 -0
  235. package/types/components/qr-code/src/qr-code.d.ts +93 -0
  236. package/types/components/qr-code/src/qr-code.vue.d.ts +109 -0
  237. package/types/components/radial-menu/index.d.ts +499 -0
  238. package/types/components/radial-menu/src/radial-menu-item.d.ts +40 -0
  239. package/types/components/radial-menu/src/radial-menu-item.vue.d.ts +95 -0
  240. package/types/components/radial-menu/src/radial-menu.d.ts +92 -0
  241. package/types/components/radial-menu/src/radial-menu.vue.d.ts +200 -0
  242. package/types/components/radial-menu/src/types.d.ts +48 -0
  243. package/types/components/radial-menu/src/use-radial-menu-items.d.ts +19 -0
  244. package/types/components/radial-menu/src/use-radial-menu-keyboard.d.ts +17 -0
  245. package/types/components/radial-menu/src/use-radial-menu-position.d.ts +45 -0
  246. package/types/components/radial-menu/src/use-radial-menu-shortcut.d.ts +8 -0
  247. package/types/components/radial-menu/src/use-radial-menu-state.d.ts +15 -0
  248. package/types/components/select/index.d.ts +5 -0
  249. package/types/components/select/src/select.d.ts +30 -0
  250. package/types/components/select/src/select.vue.d.ts +25 -0
  251. package/types/components/table/index.d.ts +8 -0
  252. package/types/components/table/src/editor-registry.d.ts +24 -0
  253. package/types/components/table/src/proxy-data.d.ts +10 -0
  254. package/types/components/table/src/table-editor.d.ts +18 -0
  255. package/types/components/table/src/table-editor.vue.d.ts +43 -0
  256. package/types/components/table/src/table.d.ts +179 -0
  257. package/types/components/table/src/table.vue.d.ts +121 -0
  258. package/types/components/tree/index.d.ts +5 -0
  259. package/types/components/tree/src/tree-node.vue.d.ts +88 -0
  260. package/types/components/tree/src/tree-types.d.ts +90 -0
  261. package/types/components/tree/src/tree.d.ts +448 -0
  262. package/types/components/tree/src/tree.vue.d.ts +301 -0
  263. package/types/components/tree/src/use-tree-check-conduct.d.ts +43 -0
  264. package/types/components/tree/src/use-tree-checked-state.d.ts +34 -0
  265. package/types/components/tree/src/use-tree-drag.d.ts +45 -0
  266. package/types/components/tree/src/use-tree-expanded-state.d.ts +41 -0
  267. package/types/components/tree/src/use-tree-keyboard.d.ts +21 -0
  268. package/types/components/tree/src/use-tree-load.d.ts +25 -0
  269. package/types/components/tree/src/use-tree-scroll.d.ts +17 -0
  270. package/types/components/tree/src/use-tree-selected-state.d.ts +29 -0
  271. package/types/components/tree-select/index.d.ts +5 -0
  272. package/types/components/tree-select/src/tree-select.d.ts +26 -0
  273. package/types/components/tree-select/src/tree-select.vue.d.ts +25 -0
  274. package/types/falcon-ui/index.d.ts +8 -0
  275. package/types/hooks/index.d.ts +3 -0
  276. package/types/hooks/src/use-clearable-state.d.ts +10 -0
  277. package/types/hooks/src/use-component.d.ts +15 -0
  278. package/types/hooks/src/use-dialog.d.ts +49 -0
  279. package/types/icons/index.d.ts +1 -0
  280. package/types/icons/src/components/holder-outlined.vue.d.ts +3 -0
  281. package/types/icons/src/components/index.d.ts +3 -0
  282. package/types/icons/src/components/minus-square-outlined.vue.d.ts +3 -0
  283. package/types/icons/src/components/plus-square-outlined.vue.d.ts +3 -0
  284. package/types/utils/index.d.ts +3 -0
  285. package/types/utils/src/bem.d.ts +11 -0
  286. package/types/utils/src/component.d.ts +6 -0
  287. package/types/utils/src/install.d.ts +5 -0
  288. package/umd/falcon-ui.umd.js +13297 -0
  289. package/umd/falcon-ui.umd.js.map +1 -0
@@ -0,0 +1,537 @@
1
+ import { Fragment, cloneVNode, computed, createBlock, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, isVNode, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, render, renderSlot, resolveDynamicComponent, toDisplayString, unref, useAttrs, useSlots, watch, withCtx, withKeys, withModifiers } from "vue";
2
+ import { ElButton, ElDialog, ElIcon } from "element-plus";
3
+ import { Close, FullScreen } from "@element-plus/icons-vue";
4
+ var defaultNamespace = "fl";
5
+ var statePrefix = "is-";
6
+ var buildBemName = (namespace, block, blockSuffix = "", element = "", modifier = "") => {
7
+ let className = `${namespace}-${block}`;
8
+ if (blockSuffix) className += `-${blockSuffix}`;
9
+ if (element) className += `__${element}`;
10
+ if (modifier) className += `--${modifier}`;
11
+ return className;
12
+ };
13
+ const useNamespace = (block, namespace = defaultNamespace) => {
14
+ const b = (blockSuffix = "") => buildBemName(namespace, block, blockSuffix);
15
+ const e = (element) => element ? buildBemName(namespace, block, "", element) : "";
16
+ const m = (modifier) => modifier ? buildBemName(namespace, block, "", "", modifier) : "";
17
+ const be = (blockSuffix, element) => {
18
+ if (!blockSuffix || !element) return "";
19
+ return buildBemName(namespace, block, blockSuffix, element);
20
+ };
21
+ const em = (element, modifier) => {
22
+ if (!element || !modifier) return "";
23
+ return buildBemName(namespace, block, "", element, modifier);
24
+ };
25
+ const bm = (blockSuffix, modifier) => {
26
+ if (!blockSuffix || !modifier) return "";
27
+ return buildBemName(namespace, block, blockSuffix, "", modifier);
28
+ };
29
+ const bem = (blockSuffix, element, modifier) => {
30
+ if (!blockSuffix && !element && !modifier) return b();
31
+ return buildBemName(namespace, block, blockSuffix, element, modifier);
32
+ };
33
+ const is = (name, state = true) => state ? `${statePrefix}${name}` : "";
34
+ return {
35
+ namespace,
36
+ b,
37
+ e,
38
+ m,
39
+ be,
40
+ em,
41
+ bm,
42
+ bem,
43
+ is
44
+ };
45
+ };
46
+ const mergeComponentExpose = (vm, exposed, extras = {}) => {
47
+ if (!vm?.exposed || !exposed || typeof exposed !== "object" && typeof exposed !== "function") return;
48
+ Object.assign(vm.exposed, extras, exposed);
49
+ };
50
+ const invokeListener = (listener, ...args) => {
51
+ if (typeof listener === "function") {
52
+ listener(...args);
53
+ return;
54
+ }
55
+ if (!Array.isArray(listener)) return;
56
+ for (const item of listener) if (typeof item === "function") item(...args);
57
+ };
58
+ const withInstall = (component) => {
59
+ const installable = component;
60
+ installable.install = (app) => {
61
+ if (!component.name) return;
62
+ app.component(component.name, component);
63
+ };
64
+ return installable;
65
+ };
66
+ const useMergedAttrs = ({ attrs, block, listenerName, onListener }) => {
67
+ const className = useNamespace(block).b();
68
+ return { mergedAttrs: computed(() => {
69
+ const next = { ...attrs };
70
+ const originalListener = next[listenerName];
71
+ next.class = [className, next.class];
72
+ next[listenerName] = (...args) => {
73
+ onListener?.(...args);
74
+ invokeListener(originalListener, ...args);
75
+ };
76
+ return next;
77
+ }) };
78
+ };
79
+ const useMergedExpose = (extras) => {
80
+ const vm = getCurrentInstance();
81
+ const changeRef = (exposed) => {
82
+ mergeComponentExpose(vm, exposed, extras);
83
+ };
84
+ return { changeRef };
85
+ };
86
+ const useClearableState = ({ attrs, isError, resolveClearValue = () => void 0 }) => {
87
+ const resolveClearable = () => {
88
+ const candidate = attrs.clearable;
89
+ if (typeof candidate === "boolean") return candidate;
90
+ return true;
91
+ };
92
+ const clearModelValue = () => {
93
+ invokeListener(attrs["onUpdate:modelValue"], resolveClearValue());
94
+ };
95
+ watch(isError, (active, previousActive) => {
96
+ if (active && previousActive !== true) clearModelValue();
97
+ }, { immediate: true });
98
+ return {
99
+ clearModelValue,
100
+ resolveClearable
101
+ };
102
+ };
103
+ var componentVNodeShapeFlag = 6;
104
+ var managedDialogPropKeys = new Set([
105
+ "modelValue",
106
+ "title",
107
+ "showClose",
108
+ "closeOnClickModal",
109
+ "closeOnPressEscape",
110
+ "onCancel",
111
+ "onConfirm",
112
+ "onUpdate:modelValue",
113
+ "onUpdateModelValue"
114
+ ]);
115
+ var activeDialogInstance = null;
116
+ var dialogSeed = 0;
117
+ var dialogComponentLoader = null;
118
+ var loadDialogComponent = async () => {
119
+ if (!dialogComponentLoader) dialogComponentLoader = import("./dialog-CzZm50XM.js").then((module) => module.default);
120
+ return dialogComponentLoader;
121
+ };
122
+ var toDialogRejectAction = (action) => action === "confirm" ? "close" : action;
123
+ var resolveAppendTarget = (appendTo) => {
124
+ if (typeof document === "undefined") throw new Error("[useDialog] document is not available in current runtime.");
125
+ if (appendTo instanceof HTMLElement) return appendTo;
126
+ if (typeof appendTo === "string") {
127
+ const node = document.querySelector(appendTo);
128
+ if (node instanceof HTMLElement) return node;
129
+ }
130
+ return document.body;
131
+ };
132
+ var sanitizeDialogProps = (dialogProps) => {
133
+ if (!dialogProps) return {};
134
+ const nextProps = {};
135
+ for (const [key, value] of Object.entries(dialogProps)) if (!managedDialogPropKeys.has(key)) nextProps[key] = value;
136
+ return nextProps;
137
+ };
138
+ var resolveMessageContent = (message) => {
139
+ if (typeof message === "function") return message();
140
+ return message;
141
+ };
142
+ var isComponentVNode = (value) => {
143
+ if (!isVNode(value)) return false;
144
+ return (value.shapeFlag & componentVNodeShapeFlag) !== 0;
145
+ };
146
+ var injectPayloadTargetRef = (messageContent, payloadTargetRef) => {
147
+ if (!isComponentVNode(messageContent)) return messageContent;
148
+ return cloneVNode(messageContent, { ref: payloadTargetRef }, true);
149
+ };
150
+ var resolvePayloadByMethod = async (options, payloadTargetRef) => {
151
+ const payloadMethod = options.payloadMethod;
152
+ if (!payloadMethod) return;
153
+ const targetInstance = payloadTargetRef.value;
154
+ if (!targetInstance) throw new Error(`[useDialog] payload target is not available for method "${payloadMethod}".`);
155
+ const method = targetInstance[payloadMethod];
156
+ if (typeof method !== "function") throw new Error(`[useDialog] payload method "${payloadMethod}" is not a function.`);
157
+ return await method(...options.payloadMethodArgs ?? []);
158
+ };
159
+ var resolveConfirmPayload = async (options, payloadTargetRef) => {
160
+ if (options.payloadResolver) return await options.payloadResolver();
161
+ if (options.payloadMethod) return await resolvePayloadByMethod(options, payloadTargetRef);
162
+ };
163
+ var resolveBeforeClose = async (beforeClose, action) => {
164
+ if (!beforeClose) return true;
165
+ try {
166
+ return await beforeClose(action) !== false;
167
+ } catch {
168
+ return false;
169
+ }
170
+ };
171
+ var open = (options = {}) => {
172
+ activeDialogInstance?.close("closeAll");
173
+ const appendTarget = resolveAppendTarget(options.appendTo);
174
+ const container = document.createElement("div");
175
+ appendTarget.appendChild(container);
176
+ const instanceId = ++dialogSeed;
177
+ return new Promise((resolve, reject) => {
178
+ let isSettled = false;
179
+ let isSettling = false;
180
+ let skipNextModelUpdate = false;
181
+ let pendingModelUpdateAction = null;
182
+ const payloadTargetRef = ref(null);
183
+ const cleanup = () => {
184
+ render(null, container);
185
+ container.remove();
186
+ if (activeDialogInstance?.id === instanceId) activeDialogInstance = null;
187
+ };
188
+ const settle = async (action) => {
189
+ if (isSettled || isSettling) return;
190
+ isSettling = true;
191
+ try {
192
+ if (action === "confirm") {
193
+ const payload = await resolveConfirmPayload(options, payloadTargetRef);
194
+ if (isSettled) return;
195
+ isSettled = true;
196
+ options.onAction?.(action);
197
+ if (payload === void 0) resolve({ action: "confirm" });
198
+ else resolve({
199
+ action: "confirm",
200
+ data: payload
201
+ });
202
+ } else {
203
+ isSettled = true;
204
+ options.onAction?.(action);
205
+ reject({ action: toDialogRejectAction(action) });
206
+ }
207
+ cleanup();
208
+ } catch (error) {
209
+ isSettled = true;
210
+ cleanup();
211
+ reject(error);
212
+ } finally {
213
+ isSettling = false;
214
+ }
215
+ };
216
+ const requestClose = async (action, force = false) => {
217
+ if (isSettled) return;
218
+ if (!force) {
219
+ if (!await resolveBeforeClose(options.beforeClose, action)) {
220
+ skipNextModelUpdate = action === "cancel" || action === "confirm";
221
+ return;
222
+ }
223
+ }
224
+ settle(action);
225
+ };
226
+ const handleCancel = () => {
227
+ pendingModelUpdateAction = "cancel";
228
+ requestClose("cancel");
229
+ };
230
+ const handleConfirm = () => {
231
+ pendingModelUpdateAction = "confirm";
232
+ requestClose("confirm");
233
+ };
234
+ const handleModelValueUpdate = (value) => {
235
+ if (value || isSettled) return;
236
+ if (skipNextModelUpdate) {
237
+ skipNextModelUpdate = false;
238
+ pendingModelUpdateAction = null;
239
+ return;
240
+ }
241
+ const action = pendingModelUpdateAction ?? "close";
242
+ pendingModelUpdateAction = null;
243
+ requestClose(action);
244
+ };
245
+ activeDialogInstance = {
246
+ id: instanceId,
247
+ close: (reason = "closeAll") => {
248
+ requestClose(reason, true);
249
+ }
250
+ };
251
+ loadDialogComponent().then((DialogComponent) => {
252
+ if (isSettled) return;
253
+ render(createVNode(defineComponent({
254
+ name: "FlDialogServiceWrapper",
255
+ setup() {
256
+ const safeDialogProps = sanitizeDialogProps(options.dialogProps);
257
+ return () => {
258
+ const injectedMessageContent = injectPayloadTargetRef(resolveMessageContent(options.message), payloadTargetRef);
259
+ return h(DialogComponent, {
260
+ ...safeDialogProps,
261
+ modelValue: true,
262
+ title: options.title,
263
+ showClose: options.showClose ?? true,
264
+ closeOnClickModal: options.closeOnClickModal ?? true,
265
+ closeOnPressEscape: options.closeOnPressEscape ?? true,
266
+ teleported: safeDialogProps.teleported ?? false,
267
+ onCancel: handleCancel,
268
+ onConfirm: handleConfirm,
269
+ "onUpdate:modelValue": handleModelValueUpdate
270
+ }, injectedMessageContent === void 0 ? void 0 : { default: () => [injectedMessageContent] });
271
+ };
272
+ }
273
+ })), container);
274
+ }).catch((error) => {
275
+ if (isSettled) return;
276
+ isSettled = true;
277
+ cleanup();
278
+ reject(error);
279
+ });
280
+ });
281
+ };
282
+ var closeAll = (reason = "closeAll") => {
283
+ activeDialogInstance?.close(reason);
284
+ };
285
+ var useDialog = () => ({
286
+ open,
287
+ closeAll
288
+ });
289
+ const FlButton = withInstall(/* @__PURE__ */ defineComponent({
290
+ name: "FlButton",
291
+ inheritAttrs: false,
292
+ __name: "button",
293
+ props: {
294
+ debugLabel: {
295
+ type: String,
296
+ default: ""
297
+ },
298
+ debugMode: {
299
+ type: Boolean,
300
+ default: false
301
+ }
302
+ },
303
+ emits: { "debug-click": (payload) => typeof payload.label === "string" },
304
+ setup(__props, { expose: __expose, emit: __emit }) {
305
+ const props = __props;
306
+ const emit = __emit;
307
+ const attrs = useAttrs();
308
+ const slots = useSlots();
309
+ const { changeRef } = useMergedExpose({ debugKind: "button" });
310
+ const { mergedAttrs } = useMergedAttrs({
311
+ attrs,
312
+ block: "button",
313
+ listenerName: "onClick",
314
+ onListener: () => {
315
+ if (props.debugMode) emit("debug-click", { label: props.debugLabel });
316
+ }
317
+ });
318
+ __expose({});
319
+ return (_ctx, _cache) => {
320
+ return openBlock(), createBlock(resolveDynamicComponent(h(unref(ElButton), {
321
+ ...unref(mergedAttrs),
322
+ ref: unref(changeRef)
323
+ }, unref(slots))));
324
+ };
325
+ }
326
+ }));
327
+ const flDialogProps = {
328
+ bodyHeight: {
329
+ type: [Number, String],
330
+ default: void 0
331
+ },
332
+ cancelDisabled: {
333
+ type: Boolean,
334
+ default: false
335
+ },
336
+ cancelText: {
337
+ type: String,
338
+ default: "取消"
339
+ },
340
+ confirmDisabled: {
341
+ type: Boolean,
342
+ default: false
343
+ },
344
+ confirmText: {
345
+ type: String,
346
+ default: "确认"
347
+ },
348
+ modelValue: {
349
+ type: Boolean,
350
+ default: false
351
+ },
352
+ showFooter: {
353
+ type: Boolean,
354
+ default: true
355
+ }
356
+ };
357
+ const flDialogEmits = {
358
+ cancel: () => true,
359
+ confirm: () => true,
360
+ "update:modelValue": (value) => typeof value === "boolean"
361
+ };
362
+ var _hoisted_1 = ["onKeydown"];
363
+ var dialog_default = /* @__PURE__ */ defineComponent({
364
+ name: "FlDialog",
365
+ inheritAttrs: false,
366
+ __name: "dialog",
367
+ props: flDialogProps,
368
+ emits: flDialogEmits,
369
+ setup(__props, { expose: __expose, emit: __emit }) {
370
+ const omitAttrKeys = new Set([
371
+ "align-center",
372
+ "alignCenter",
373
+ "body-class",
374
+ "bodyClass",
375
+ "class",
376
+ "destroy-on-close",
377
+ "destroyOnClose",
378
+ "draggable",
379
+ "footer-class",
380
+ "footerClass",
381
+ "fullscreen",
382
+ "header-class",
383
+ "headerClass",
384
+ "show-close",
385
+ "showClose",
386
+ "transition"
387
+ ]);
388
+ const props = __props;
389
+ const emit = __emit;
390
+ const attrs = useAttrs();
391
+ const slots = useSlots();
392
+ const ns = useNamespace("dialog");
393
+ const isFullscreen = ref(false);
394
+ const normalizeClassName = (value) => {
395
+ if (!value) return "";
396
+ if (typeof value === "string") return value.split(" ").map((item) => item.trim()).filter(Boolean).join(" ");
397
+ if (Array.isArray(value)) return value.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
398
+ return Object.entries(value).filter(([, enabled]) => enabled).map(([className]) => className).join(" ");
399
+ };
400
+ const mergeClassName = (...values) => values.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
401
+ const getAttrValue = (kebabCaseName, camelCaseName = kebabCaseName) => attrs[kebabCaseName] ?? attrs[camelCaseName];
402
+ const resolveBooleanAttr = (value, fallback) => {
403
+ if (value === void 0) return fallback;
404
+ if (typeof value === "boolean") return value;
405
+ if (typeof value === "string") {
406
+ if (!value) return true;
407
+ return value !== "false";
408
+ }
409
+ return Boolean(value);
410
+ };
411
+ const closeDialog = () => {
412
+ emit("update:modelValue", false);
413
+ };
414
+ const toggleFullscreen = () => {
415
+ isFullscreen.value = !isFullscreen.value;
416
+ };
417
+ const handleCancel = () => {
418
+ emit("cancel");
419
+ closeDialog();
420
+ };
421
+ const handleConfirm = () => {
422
+ emit("confirm");
423
+ closeDialog();
424
+ };
425
+ const handleModelValueUpdate = (value) => {
426
+ emit("update:modelValue", value);
427
+ invokeListener(attrs["onUpdate:modelValue"], value);
428
+ };
429
+ const mergedClass = computed(() => mergeClassName(ns.b(), attrs.class));
430
+ const mergedHeaderClass = computed(() => mergeClassName(ns.e("header"), getAttrValue("header-class", "headerClass")));
431
+ const mergedBodyClass = computed(() => mergeClassName(ns.e("body"), getAttrValue("body-class", "bodyClass")));
432
+ const mergedFooterClass = computed(() => mergeClassName(ns.e("footer"), getAttrValue("footer-class", "footerClass")));
433
+ const bodyStyle = computed(() => {
434
+ if (isFullscreen.value) return;
435
+ if (props.bodyHeight === void 0 || props.bodyHeight === null || props.bodyHeight === "") return;
436
+ return {
437
+ height: typeof props.bodyHeight === "number" ? `${props.bodyHeight}px` : props.bodyHeight,
438
+ overflowY: "auto"
439
+ };
440
+ });
441
+ const resolvedTitle = computed(() => {
442
+ const title = attrs.title;
443
+ return typeof title === "string" ? title : "";
444
+ });
445
+ const resolvedAlignCenter = computed(() => resolveBooleanAttr(getAttrValue("align-center", "alignCenter"), true));
446
+ const resolvedDestroyOnClose = computed(() => resolveBooleanAttr(getAttrValue("destroy-on-close", "destroyOnClose"), true));
447
+ const resolvedDraggable = computed(() => resolveBooleanAttr(getAttrValue("draggable"), true));
448
+ const resolvedShowClose = computed(() => resolveBooleanAttr(getAttrValue("show-close", "showClose"), false));
449
+ const resolvedTransition = computed(() => {
450
+ const transition = getAttrValue("transition");
451
+ return typeof transition === "string" && transition ? transition : "fl-dialog-bounce";
452
+ });
453
+ const forwardedAttrs = computed(() => {
454
+ const next = {};
455
+ for (const [key, value] of Object.entries(attrs)) if (!omitAttrKeys.has(key)) next[key] = value;
456
+ return next;
457
+ });
458
+ const mergedAttrs = computed(() => ({
459
+ ...forwardedAttrs.value,
460
+ alignCenter: resolvedAlignCenter.value,
461
+ bodyClass: mergedBodyClass.value,
462
+ class: mergedClass.value,
463
+ destroyOnClose: resolvedDestroyOnClose.value,
464
+ draggable: resolvedDraggable.value,
465
+ footerClass: mergedFooterClass.value,
466
+ fullscreen: isFullscreen.value,
467
+ headerClass: mergedHeaderClass.value,
468
+ modelValue: props.modelValue,
469
+ showClose: resolvedShowClose.value,
470
+ transition: resolvedTransition.value,
471
+ "onUpdate:modelValue": handleModelValueUpdate
472
+ }));
473
+ const headerContentClass = ns.e("header-content");
474
+ const headerTitleClass = ns.e("header-title");
475
+ const headerActionsClass = ns.e("header-actions");
476
+ const headerActionIconClass = ns.e("header-action-icon");
477
+ const bodyInnerClass = ns.e("body-inner");
478
+ const footerActionsClass = ns.e("footer-actions");
479
+ const { changeRef } = useMergedExpose({
480
+ closeDialog,
481
+ toggleFullscreen
482
+ });
483
+ __expose({});
484
+ return (_ctx, _cache) => {
485
+ return openBlock(), createBlock(resolveDynamicComponent(unref(ElDialog)), mergeProps(mergedAttrs.value, { ref: unref(changeRef) }), createSlots({
486
+ header: withCtx(() => [createElementVNode("div", { class: normalizeClass(unref(headerContentClass)) }, [createElementVNode("div", { class: normalizeClass(unref(headerTitleClass)) }, [unref(slots).header ? renderSlot(_ctx.$slots, "header", { key: 0 }) : unref(slots).title ? renderSlot(_ctx.$slots, "title", { key: 1 }) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(resolvedTitle.value), 1)], 64))], 2), createElementVNode("div", { class: normalizeClass(unref(headerActionsClass)) }, [createElementVNode("span", {
487
+ class: normalizeClass(unref(headerActionIconClass)),
488
+ "aria-label": "FullScreen",
489
+ role: "button",
490
+ tabindex: "0",
491
+ title: "FullScreen",
492
+ onClick: toggleFullscreen,
493
+ onKeydown: [withKeys(withModifiers(toggleFullscreen, ["prevent"]), ["enter"]), withKeys(withModifiers(toggleFullscreen, ["prevent"]), ["space"])]
494
+ }, [createVNode(unref(ElIcon), null, {
495
+ default: withCtx(() => [createVNode(unref(FullScreen))]),
496
+ _: 1
497
+ })], 42, _hoisted_1), createVNode(unref(FlButton), {
498
+ icon: unref(Close),
499
+ class: normalizeClass(unref(headerActionIconClass)),
500
+ "aria-label": "Close",
501
+ link: "",
502
+ title: "Close",
503
+ type: "primary",
504
+ onClick: closeDialog
505
+ }, null, 8, ["icon", "class"])], 2)], 2)]),
506
+ default: withCtx(() => [createElementVNode("div", {
507
+ class: normalizeClass(unref(bodyInnerClass)),
508
+ style: normalizeStyle(bodyStyle.value)
509
+ }, [renderSlot(_ctx.$slots, "default")], 6)]),
510
+ _: 2
511
+ }, [unref(slots).footer || props.showFooter ? {
512
+ name: "footer",
513
+ fn: withCtx(() => [unref(slots).footer ? renderSlot(_ctx.$slots, "footer", { key: 0 }) : (openBlock(), createElementBlock("div", {
514
+ key: 1,
515
+ class: normalizeClass(unref(footerActionsClass))
516
+ }, [createVNode(unref(FlButton), {
517
+ disabled: props.cancelDisabled,
518
+ onClick: handleCancel
519
+ }, {
520
+ default: withCtx(() => [createTextVNode(toDisplayString(props.cancelText), 1)]),
521
+ _: 1
522
+ }, 8, ["disabled"]), createVNode(unref(FlButton), {
523
+ disabled: props.confirmDisabled,
524
+ type: "primary",
525
+ onClick: handleConfirm
526
+ }, {
527
+ default: withCtx(() => [createTextVNode(toDisplayString(props.confirmText), 1)]),
528
+ _: 1
529
+ }, 8, ["disabled"])], 2))]),
530
+ key: "0"
531
+ } : void 0]), 1040);
532
+ };
533
+ }
534
+ });
535
+ export { useDialog as a, useMergedExpose as c, mergeComponentExpose as d, useNamespace as f, open as i, withInstall as l, FlButton as n, useClearableState as o, closeAll as r, useMergedAttrs as s, dialog_default as t, invokeListener as u };
536
+
537
+ //# sourceMappingURL=dialog-Cm3Px-Bu.js.map