@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,614 @@
1
+ const require_chunk = require("./chunk-D4y6LrGi.cjs");
2
+ let vue = require("vue");
3
+ let element_plus = require("element-plus");
4
+ let __element_plus_icons_vue = require("@element-plus/icons-vue");
5
+ var defaultNamespace = "fl";
6
+ var statePrefix = "is-";
7
+ var buildBemName = (namespace, block, blockSuffix = "", element = "", modifier = "") => {
8
+ let className = `${namespace}-${block}`;
9
+ if (blockSuffix) className += `-${blockSuffix}`;
10
+ if (element) className += `__${element}`;
11
+ if (modifier) className += `--${modifier}`;
12
+ return className;
13
+ };
14
+ const useNamespace = (block, namespace = defaultNamespace) => {
15
+ const b = (blockSuffix = "") => buildBemName(namespace, block, blockSuffix);
16
+ const e = (element) => element ? buildBemName(namespace, block, "", element) : "";
17
+ const m = (modifier) => modifier ? buildBemName(namespace, block, "", "", modifier) : "";
18
+ const be = (blockSuffix, element) => {
19
+ if (!blockSuffix || !element) return "";
20
+ return buildBemName(namespace, block, blockSuffix, element);
21
+ };
22
+ const em = (element, modifier) => {
23
+ if (!element || !modifier) return "";
24
+ return buildBemName(namespace, block, "", element, modifier);
25
+ };
26
+ const bm = (blockSuffix, modifier) => {
27
+ if (!blockSuffix || !modifier) return "";
28
+ return buildBemName(namespace, block, blockSuffix, "", modifier);
29
+ };
30
+ const bem = (blockSuffix, element, modifier) => {
31
+ if (!blockSuffix && !element && !modifier) return b();
32
+ return buildBemName(namespace, block, blockSuffix, element, modifier);
33
+ };
34
+ const is = (name, state = true) => state ? `${statePrefix}${name}` : "";
35
+ return {
36
+ namespace,
37
+ b,
38
+ e,
39
+ m,
40
+ be,
41
+ em,
42
+ bm,
43
+ bem,
44
+ is
45
+ };
46
+ };
47
+ const mergeComponentExpose = (vm, exposed, extras = {}) => {
48
+ if (!vm?.exposed || !exposed || typeof exposed !== "object" && typeof exposed !== "function") return;
49
+ Object.assign(vm.exposed, extras, exposed);
50
+ };
51
+ const invokeListener = (listener, ...args) => {
52
+ if (typeof listener === "function") {
53
+ listener(...args);
54
+ return;
55
+ }
56
+ if (!Array.isArray(listener)) return;
57
+ for (const item of listener) if (typeof item === "function") item(...args);
58
+ };
59
+ const withInstall = (component) => {
60
+ const installable = component;
61
+ installable.install = (app) => {
62
+ if (!component.name) return;
63
+ app.component(component.name, component);
64
+ };
65
+ return installable;
66
+ };
67
+ const useMergedAttrs = ({ attrs, block, listenerName, onListener }) => {
68
+ const className = useNamespace(block).b();
69
+ return { mergedAttrs: (0, vue.computed)(() => {
70
+ const next = { ...attrs };
71
+ const originalListener = next[listenerName];
72
+ next.class = [className, next.class];
73
+ next[listenerName] = (...args) => {
74
+ onListener?.(...args);
75
+ invokeListener(originalListener, ...args);
76
+ };
77
+ return next;
78
+ }) };
79
+ };
80
+ const useMergedExpose = (extras) => {
81
+ const vm = (0, vue.getCurrentInstance)();
82
+ const changeRef = (exposed) => {
83
+ mergeComponentExpose(vm, exposed, extras);
84
+ };
85
+ return { changeRef };
86
+ };
87
+ const useClearableState = ({ attrs, isError, resolveClearValue = () => void 0 }) => {
88
+ const resolveClearable = () => {
89
+ const candidate = attrs.clearable;
90
+ if (typeof candidate === "boolean") return candidate;
91
+ return true;
92
+ };
93
+ const clearModelValue = () => {
94
+ invokeListener(attrs["onUpdate:modelValue"], resolveClearValue());
95
+ };
96
+ (0, vue.watch)(isError, (active, previousActive) => {
97
+ if (active && previousActive !== true) clearModelValue();
98
+ }, { immediate: true });
99
+ return {
100
+ clearModelValue,
101
+ resolveClearable
102
+ };
103
+ };
104
+ var componentVNodeShapeFlag = 6;
105
+ var managedDialogPropKeys = new Set([
106
+ "modelValue",
107
+ "title",
108
+ "showClose",
109
+ "closeOnClickModal",
110
+ "closeOnPressEscape",
111
+ "onCancel",
112
+ "onConfirm",
113
+ "onUpdate:modelValue",
114
+ "onUpdateModelValue"
115
+ ]);
116
+ var activeDialogInstance = null;
117
+ var dialogSeed = 0;
118
+ var dialogComponentLoader = null;
119
+ var loadDialogComponent = async () => {
120
+ if (!dialogComponentLoader) dialogComponentLoader = Promise.resolve().then(() => require("./dialog-DcH26KbE.cjs")).then((module$1) => module$1.default);
121
+ return dialogComponentLoader;
122
+ };
123
+ var toDialogRejectAction = (action) => action === "confirm" ? "close" : action;
124
+ var resolveAppendTarget = (appendTo) => {
125
+ if (typeof document === "undefined") throw new Error("[useDialog] document is not available in current runtime.");
126
+ if (appendTo instanceof HTMLElement) return appendTo;
127
+ if (typeof appendTo === "string") {
128
+ const node = document.querySelector(appendTo);
129
+ if (node instanceof HTMLElement) return node;
130
+ }
131
+ return document.body;
132
+ };
133
+ var sanitizeDialogProps = (dialogProps) => {
134
+ if (!dialogProps) return {};
135
+ const nextProps = {};
136
+ for (const [key, value] of Object.entries(dialogProps)) if (!managedDialogPropKeys.has(key)) nextProps[key] = value;
137
+ return nextProps;
138
+ };
139
+ var resolveMessageContent = (message) => {
140
+ if (typeof message === "function") return message();
141
+ return message;
142
+ };
143
+ var isComponentVNode = (value) => {
144
+ if (!(0, vue.isVNode)(value)) return false;
145
+ return (value.shapeFlag & componentVNodeShapeFlag) !== 0;
146
+ };
147
+ var injectPayloadTargetRef = (messageContent, payloadTargetRef) => {
148
+ if (!isComponentVNode(messageContent)) return messageContent;
149
+ return (0, vue.cloneVNode)(messageContent, { ref: payloadTargetRef }, true);
150
+ };
151
+ var resolvePayloadByMethod = async (options, payloadTargetRef) => {
152
+ const payloadMethod = options.payloadMethod;
153
+ if (!payloadMethod) return;
154
+ const targetInstance = payloadTargetRef.value;
155
+ if (!targetInstance) throw new Error(`[useDialog] payload target is not available for method "${payloadMethod}".`);
156
+ const method = targetInstance[payloadMethod];
157
+ if (typeof method !== "function") throw new Error(`[useDialog] payload method "${payloadMethod}" is not a function.`);
158
+ return await method(...options.payloadMethodArgs ?? []);
159
+ };
160
+ var resolveConfirmPayload = async (options, payloadTargetRef) => {
161
+ if (options.payloadResolver) return await options.payloadResolver();
162
+ if (options.payloadMethod) return await resolvePayloadByMethod(options, payloadTargetRef);
163
+ };
164
+ var resolveBeforeClose = async (beforeClose, action) => {
165
+ if (!beforeClose) return true;
166
+ try {
167
+ return await beforeClose(action) !== false;
168
+ } catch {
169
+ return false;
170
+ }
171
+ };
172
+ var open = (options = {}) => {
173
+ activeDialogInstance?.close("closeAll");
174
+ const appendTarget = resolveAppendTarget(options.appendTo);
175
+ const container = document.createElement("div");
176
+ appendTarget.appendChild(container);
177
+ const instanceId = ++dialogSeed;
178
+ return new Promise((resolve, reject) => {
179
+ let isSettled = false;
180
+ let isSettling = false;
181
+ let skipNextModelUpdate = false;
182
+ let pendingModelUpdateAction = null;
183
+ const payloadTargetRef = (0, vue.ref)(null);
184
+ const cleanup = () => {
185
+ (0, vue.render)(null, container);
186
+ container.remove();
187
+ if (activeDialogInstance?.id === instanceId) activeDialogInstance = null;
188
+ };
189
+ const settle = async (action) => {
190
+ if (isSettled || isSettling) return;
191
+ isSettling = true;
192
+ try {
193
+ if (action === "confirm") {
194
+ const payload = await resolveConfirmPayload(options, payloadTargetRef);
195
+ if (isSettled) return;
196
+ isSettled = true;
197
+ options.onAction?.(action);
198
+ if (payload === void 0) resolve({ action: "confirm" });
199
+ else resolve({
200
+ action: "confirm",
201
+ data: payload
202
+ });
203
+ } else {
204
+ isSettled = true;
205
+ options.onAction?.(action);
206
+ reject({ action: toDialogRejectAction(action) });
207
+ }
208
+ cleanup();
209
+ } catch (error) {
210
+ isSettled = true;
211
+ cleanup();
212
+ reject(error);
213
+ } finally {
214
+ isSettling = false;
215
+ }
216
+ };
217
+ const requestClose = async (action, force = false) => {
218
+ if (isSettled) return;
219
+ if (!force) {
220
+ if (!await resolveBeforeClose(options.beforeClose, action)) {
221
+ skipNextModelUpdate = action === "cancel" || action === "confirm";
222
+ return;
223
+ }
224
+ }
225
+ settle(action);
226
+ };
227
+ const handleCancel = () => {
228
+ pendingModelUpdateAction = "cancel";
229
+ requestClose("cancel");
230
+ };
231
+ const handleConfirm = () => {
232
+ pendingModelUpdateAction = "confirm";
233
+ requestClose("confirm");
234
+ };
235
+ const handleModelValueUpdate = (value) => {
236
+ if (value || isSettled) return;
237
+ if (skipNextModelUpdate) {
238
+ skipNextModelUpdate = false;
239
+ pendingModelUpdateAction = null;
240
+ return;
241
+ }
242
+ const action = pendingModelUpdateAction ?? "close";
243
+ pendingModelUpdateAction = null;
244
+ requestClose(action);
245
+ };
246
+ activeDialogInstance = {
247
+ id: instanceId,
248
+ close: (reason = "closeAll") => {
249
+ requestClose(reason, true);
250
+ }
251
+ };
252
+ loadDialogComponent().then((DialogComponent) => {
253
+ if (isSettled) return;
254
+ (0, vue.render)((0, vue.createVNode)((0, vue.defineComponent)({
255
+ name: "FlDialogServiceWrapper",
256
+ setup() {
257
+ const safeDialogProps = sanitizeDialogProps(options.dialogProps);
258
+ return () => {
259
+ const injectedMessageContent = injectPayloadTargetRef(resolveMessageContent(options.message), payloadTargetRef);
260
+ return (0, vue.h)(DialogComponent, {
261
+ ...safeDialogProps,
262
+ modelValue: true,
263
+ title: options.title,
264
+ showClose: options.showClose ?? true,
265
+ closeOnClickModal: options.closeOnClickModal ?? true,
266
+ closeOnPressEscape: options.closeOnPressEscape ?? true,
267
+ teleported: safeDialogProps.teleported ?? false,
268
+ onCancel: handleCancel,
269
+ onConfirm: handleConfirm,
270
+ "onUpdate:modelValue": handleModelValueUpdate
271
+ }, injectedMessageContent === void 0 ? void 0 : { default: () => [injectedMessageContent] });
272
+ };
273
+ }
274
+ })), container);
275
+ }).catch((error) => {
276
+ if (isSettled) return;
277
+ isSettled = true;
278
+ cleanup();
279
+ reject(error);
280
+ });
281
+ });
282
+ };
283
+ var closeAll = (reason = "closeAll") => {
284
+ activeDialogInstance?.close(reason);
285
+ };
286
+ var useDialog = () => ({
287
+ open,
288
+ closeAll
289
+ });
290
+ const flButtonProps = {
291
+ debugLabel: {
292
+ type: String,
293
+ default: ""
294
+ },
295
+ debugMode: {
296
+ type: Boolean,
297
+ default: false
298
+ }
299
+ };
300
+ const flButtonEmits = { "debug-click": (payload) => typeof payload.label === "string" };
301
+ var button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
302
+ name: "FlButton",
303
+ inheritAttrs: false,
304
+ __name: "button",
305
+ props: flButtonProps,
306
+ emits: flButtonEmits,
307
+ setup(__props, { expose: __expose, emit: __emit }) {
308
+ const props = __props;
309
+ const emit = __emit;
310
+ const attrs = (0, vue.useAttrs)();
311
+ const slots = (0, vue.useSlots)();
312
+ const { changeRef } = useMergedExpose({ debugKind: "button" });
313
+ const { mergedAttrs } = useMergedAttrs({
314
+ attrs,
315
+ block: "button",
316
+ listenerName: "onClick",
317
+ onListener: () => {
318
+ if (props.debugMode) emit("debug-click", { label: props.debugLabel });
319
+ }
320
+ });
321
+ __expose({});
322
+ return (_ctx, _cache) => {
323
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.h)((0, vue.unref)(element_plus.ElButton), {
324
+ ...(0, vue.unref)(mergedAttrs),
325
+ ref: (0, vue.unref)(changeRef)
326
+ }, (0, vue.unref)(slots))));
327
+ };
328
+ }
329
+ });
330
+ var button_default = button_vue_vue_type_script_setup_true_lang_default;
331
+ const FlButton = withInstall(button_default);
332
+ const flDialogProps = {
333
+ bodyHeight: {
334
+ type: [Number, String],
335
+ default: void 0
336
+ },
337
+ cancelDisabled: {
338
+ type: Boolean,
339
+ default: false
340
+ },
341
+ cancelText: {
342
+ type: String,
343
+ default: "取消"
344
+ },
345
+ confirmDisabled: {
346
+ type: Boolean,
347
+ default: false
348
+ },
349
+ confirmText: {
350
+ type: String,
351
+ default: "确认"
352
+ },
353
+ modelValue: {
354
+ type: Boolean,
355
+ default: false
356
+ },
357
+ showFooter: {
358
+ type: Boolean,
359
+ default: true
360
+ }
361
+ };
362
+ const flDialogEmits = {
363
+ cancel: () => true,
364
+ confirm: () => true,
365
+ "update:modelValue": (value) => typeof value === "boolean"
366
+ };
367
+ var _hoisted_1 = ["onKeydown"];
368
+ var dialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
369
+ name: "FlDialog",
370
+ inheritAttrs: false,
371
+ __name: "dialog",
372
+ props: flDialogProps,
373
+ emits: flDialogEmits,
374
+ setup(__props, { expose: __expose, emit: __emit }) {
375
+ const omitAttrKeys = new Set([
376
+ "align-center",
377
+ "alignCenter",
378
+ "body-class",
379
+ "bodyClass",
380
+ "class",
381
+ "destroy-on-close",
382
+ "destroyOnClose",
383
+ "draggable",
384
+ "footer-class",
385
+ "footerClass",
386
+ "fullscreen",
387
+ "header-class",
388
+ "headerClass",
389
+ "show-close",
390
+ "showClose",
391
+ "transition"
392
+ ]);
393
+ const props = __props;
394
+ const emit = __emit;
395
+ const attrs = (0, vue.useAttrs)();
396
+ const slots = (0, vue.useSlots)();
397
+ const ns = useNamespace("dialog");
398
+ const isFullscreen = (0, vue.ref)(false);
399
+ const normalizeClassName = (value) => {
400
+ if (!value) return "";
401
+ if (typeof value === "string") return value.split(" ").map((item) => item.trim()).filter(Boolean).join(" ");
402
+ if (Array.isArray(value)) return value.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
403
+ return Object.entries(value).filter(([, enabled]) => enabled).map(([className]) => className).join(" ");
404
+ };
405
+ const mergeClassName = (...values) => values.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
406
+ const getAttrValue = (kebabCaseName, camelCaseName = kebabCaseName) => attrs[kebabCaseName] ?? attrs[camelCaseName];
407
+ const resolveBooleanAttr = (value, fallback) => {
408
+ if (value === void 0) return fallback;
409
+ if (typeof value === "boolean") return value;
410
+ if (typeof value === "string") {
411
+ if (!value) return true;
412
+ return value !== "false";
413
+ }
414
+ return Boolean(value);
415
+ };
416
+ const closeDialog = () => {
417
+ emit("update:modelValue", false);
418
+ };
419
+ const toggleFullscreen = () => {
420
+ isFullscreen.value = !isFullscreen.value;
421
+ };
422
+ const handleCancel = () => {
423
+ emit("cancel");
424
+ closeDialog();
425
+ };
426
+ const handleConfirm = () => {
427
+ emit("confirm");
428
+ closeDialog();
429
+ };
430
+ const handleModelValueUpdate = (value) => {
431
+ emit("update:modelValue", value);
432
+ invokeListener(attrs["onUpdate:modelValue"], value);
433
+ };
434
+ const mergedClass = (0, vue.computed)(() => mergeClassName(ns.b(), attrs.class));
435
+ const mergedHeaderClass = (0, vue.computed)(() => mergeClassName(ns.e("header"), getAttrValue("header-class", "headerClass")));
436
+ const mergedBodyClass = (0, vue.computed)(() => mergeClassName(ns.e("body"), getAttrValue("body-class", "bodyClass")));
437
+ const mergedFooterClass = (0, vue.computed)(() => mergeClassName(ns.e("footer"), getAttrValue("footer-class", "footerClass")));
438
+ const bodyStyle = (0, vue.computed)(() => {
439
+ if (isFullscreen.value) return;
440
+ if (props.bodyHeight === void 0 || props.bodyHeight === null || props.bodyHeight === "") return;
441
+ return {
442
+ height: typeof props.bodyHeight === "number" ? `${props.bodyHeight}px` : props.bodyHeight,
443
+ overflowY: "auto"
444
+ };
445
+ });
446
+ const resolvedTitle = (0, vue.computed)(() => {
447
+ const title = attrs.title;
448
+ return typeof title === "string" ? title : "";
449
+ });
450
+ const resolvedAlignCenter = (0, vue.computed)(() => resolveBooleanAttr(getAttrValue("align-center", "alignCenter"), true));
451
+ const resolvedDestroyOnClose = (0, vue.computed)(() => resolveBooleanAttr(getAttrValue("destroy-on-close", "destroyOnClose"), true));
452
+ const resolvedDraggable = (0, vue.computed)(() => resolveBooleanAttr(getAttrValue("draggable"), true));
453
+ const resolvedShowClose = (0, vue.computed)(() => resolveBooleanAttr(getAttrValue("show-close", "showClose"), false));
454
+ const resolvedTransition = (0, vue.computed)(() => {
455
+ const transition = getAttrValue("transition");
456
+ return typeof transition === "string" && transition ? transition : "fl-dialog-bounce";
457
+ });
458
+ const forwardedAttrs = (0, vue.computed)(() => {
459
+ const next = {};
460
+ for (const [key, value] of Object.entries(attrs)) if (!omitAttrKeys.has(key)) next[key] = value;
461
+ return next;
462
+ });
463
+ const mergedAttrs = (0, vue.computed)(() => ({
464
+ ...forwardedAttrs.value,
465
+ alignCenter: resolvedAlignCenter.value,
466
+ bodyClass: mergedBodyClass.value,
467
+ class: mergedClass.value,
468
+ destroyOnClose: resolvedDestroyOnClose.value,
469
+ draggable: resolvedDraggable.value,
470
+ footerClass: mergedFooterClass.value,
471
+ fullscreen: isFullscreen.value,
472
+ headerClass: mergedHeaderClass.value,
473
+ modelValue: props.modelValue,
474
+ showClose: resolvedShowClose.value,
475
+ transition: resolvedTransition.value,
476
+ "onUpdate:modelValue": handleModelValueUpdate
477
+ }));
478
+ const headerContentClass = ns.e("header-content");
479
+ const headerTitleClass = ns.e("header-title");
480
+ const headerActionsClass = ns.e("header-actions");
481
+ const headerActionIconClass = ns.e("header-action-icon");
482
+ const bodyInnerClass = ns.e("body-inner");
483
+ const footerActionsClass = ns.e("footer-actions");
484
+ const { changeRef } = useMergedExpose({
485
+ closeDialog,
486
+ toggleFullscreen
487
+ });
488
+ __expose({});
489
+ return (_ctx, _cache) => {
490
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(element_plus.ElDialog)), (0, vue.mergeProps)(mergedAttrs.value, { ref: (0, vue.unref)(changeRef) }), (0, vue.createSlots)({
491
+ header: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(headerContentClass)) }, [(0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(headerTitleClass)) }, [(0, vue.unref)(slots).header ? (0, vue.renderSlot)(_ctx.$slots, "header", { key: 0 }) : (0, vue.unref)(slots).title ? (0, vue.renderSlot)(_ctx.$slots, "title", { key: 1 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(resolvedTitle.value), 1)], 64))], 2), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)((0, vue.unref)(headerActionsClass)) }, [(0, vue.createElementVNode)("span", {
492
+ class: (0, vue.normalizeClass)((0, vue.unref)(headerActionIconClass)),
493
+ "aria-label": "FullScreen",
494
+ role: "button",
495
+ tabindex: "0",
496
+ title: "FullScreen",
497
+ onClick: toggleFullscreen,
498
+ onKeydown: [(0, vue.withKeys)((0, vue.withModifiers)(toggleFullscreen, ["prevent"]), ["enter"]), (0, vue.withKeys)((0, vue.withModifiers)(toggleFullscreen, ["prevent"]), ["space"])]
499
+ }, [(0, vue.createVNode)((0, vue.unref)(element_plus.ElIcon), null, {
500
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(__element_plus_icons_vue.FullScreen))]),
501
+ _: 1
502
+ })], 42, _hoisted_1), (0, vue.createVNode)((0, vue.unref)(FlButton), {
503
+ icon: (0, vue.unref)(__element_plus_icons_vue.Close),
504
+ class: (0, vue.normalizeClass)((0, vue.unref)(headerActionIconClass)),
505
+ "aria-label": "Close",
506
+ link: "",
507
+ title: "Close",
508
+ type: "primary",
509
+ onClick: closeDialog
510
+ }, null, 8, ["icon", "class"])], 2)], 2)]),
511
+ default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("div", {
512
+ class: (0, vue.normalizeClass)((0, vue.unref)(bodyInnerClass)),
513
+ style: (0, vue.normalizeStyle)(bodyStyle.value)
514
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 6)]),
515
+ _: 2
516
+ }, [(0, vue.unref)(slots).footer || props.showFooter ? {
517
+ name: "footer",
518
+ fn: (0, vue.withCtx)(() => [(0, vue.unref)(slots).footer ? (0, vue.renderSlot)(_ctx.$slots, "footer", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
519
+ key: 1,
520
+ class: (0, vue.normalizeClass)((0, vue.unref)(footerActionsClass))
521
+ }, [(0, vue.createVNode)((0, vue.unref)(FlButton), {
522
+ disabled: props.cancelDisabled,
523
+ onClick: handleCancel
524
+ }, {
525
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.cancelText), 1)]),
526
+ _: 1
527
+ }, 8, ["disabled"]), (0, vue.createVNode)((0, vue.unref)(FlButton), {
528
+ disabled: props.confirmDisabled,
529
+ type: "primary",
530
+ onClick: handleConfirm
531
+ }, {
532
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.confirmText), 1)]),
533
+ _: 1
534
+ }, 8, ["disabled"])], 2))]),
535
+ key: "0"
536
+ } : void 0]), 1040);
537
+ };
538
+ }
539
+ });
540
+ var dialog_default = dialog_vue_vue_type_script_setup_true_lang_default;
541
+ Object.defineProperty(exports, "FlButton", {
542
+ enumerable: true,
543
+ get: function() {
544
+ return FlButton;
545
+ }
546
+ });
547
+ Object.defineProperty(exports, "closeAll", {
548
+ enumerable: true,
549
+ get: function() {
550
+ return closeAll;
551
+ }
552
+ });
553
+ Object.defineProperty(exports, "dialog_default", {
554
+ enumerable: true,
555
+ get: function() {
556
+ return dialog_default;
557
+ }
558
+ });
559
+ Object.defineProperty(exports, "invokeListener", {
560
+ enumerable: true,
561
+ get: function() {
562
+ return invokeListener;
563
+ }
564
+ });
565
+ Object.defineProperty(exports, "mergeComponentExpose", {
566
+ enumerable: true,
567
+ get: function() {
568
+ return mergeComponentExpose;
569
+ }
570
+ });
571
+ Object.defineProperty(exports, "open", {
572
+ enumerable: true,
573
+ get: function() {
574
+ return open;
575
+ }
576
+ });
577
+ Object.defineProperty(exports, "useClearableState", {
578
+ enumerable: true,
579
+ get: function() {
580
+ return useClearableState;
581
+ }
582
+ });
583
+ Object.defineProperty(exports, "useDialog", {
584
+ enumerable: true,
585
+ get: function() {
586
+ return useDialog;
587
+ }
588
+ });
589
+ Object.defineProperty(exports, "useMergedAttrs", {
590
+ enumerable: true,
591
+ get: function() {
592
+ return useMergedAttrs;
593
+ }
594
+ });
595
+ Object.defineProperty(exports, "useMergedExpose", {
596
+ enumerable: true,
597
+ get: function() {
598
+ return useMergedExpose;
599
+ }
600
+ });
601
+ Object.defineProperty(exports, "useNamespace", {
602
+ enumerable: true,
603
+ get: function() {
604
+ return useNamespace;
605
+ }
606
+ });
607
+ Object.defineProperty(exports, "withInstall", {
608
+ enumerable: true,
609
+ get: function() {
610
+ return withInstall;
611
+ }
612
+ });
613
+
614
+ //# sourceMappingURL=dialog-CJU00aEV.cjs.map