@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,335 @@
1
+ import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, resolveDynamicComponent, toDisplayString, unref, useAttrs, useSlots, withCtx, withKeys, withModifiers } from "vue";
2
+ import { Close, FullScreen } from "@element-plus/icons-vue";
3
+ import { ElButton, ElDialog, ElIcon } from "element-plus";
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 FlButton = withInstall(/* @__PURE__ */ defineComponent({
87
+ name: "FlButton",
88
+ inheritAttrs: false,
89
+ __name: "button",
90
+ props: {
91
+ debugLabel: {
92
+ type: String,
93
+ default: ""
94
+ },
95
+ debugMode: {
96
+ type: Boolean,
97
+ default: false
98
+ }
99
+ },
100
+ emits: { "debug-click": (payload) => typeof payload.label === "string" },
101
+ setup(__props, { expose: __expose, emit: __emit }) {
102
+ const props = __props;
103
+ const emit = __emit;
104
+ const attrs = useAttrs();
105
+ const slots = useSlots();
106
+ const { changeRef } = useMergedExpose({ debugKind: "button" });
107
+ const { mergedAttrs } = useMergedAttrs({
108
+ attrs,
109
+ block: "button",
110
+ listenerName: "onClick",
111
+ onListener: () => {
112
+ if (props.debugMode) emit("debug-click", { label: props.debugLabel });
113
+ }
114
+ });
115
+ __expose({});
116
+ return (_ctx, _cache) => {
117
+ return openBlock(), createBlock(resolveDynamicComponent(h(unref(ElButton), {
118
+ ...unref(mergedAttrs),
119
+ ref: unref(changeRef)
120
+ }, unref(slots))));
121
+ };
122
+ }
123
+ }));
124
+ const flDialogProps = {
125
+ bodyHeight: {
126
+ type: [Number, String],
127
+ default: void 0
128
+ },
129
+ cancelDisabled: {
130
+ type: Boolean,
131
+ default: false
132
+ },
133
+ cancelText: {
134
+ type: String,
135
+ default: "取消"
136
+ },
137
+ confirmDisabled: {
138
+ type: Boolean,
139
+ default: false
140
+ },
141
+ confirmText: {
142
+ type: String,
143
+ default: "确认"
144
+ },
145
+ modelValue: {
146
+ type: Boolean,
147
+ default: false
148
+ },
149
+ showFooter: {
150
+ type: Boolean,
151
+ default: true
152
+ }
153
+ };
154
+ const flDialogEmits = {
155
+ cancel: () => true,
156
+ confirm: () => true,
157
+ "update:modelValue": (value) => typeof value === "boolean"
158
+ };
159
+ var _hoisted_1 = ["onKeydown"];
160
+ const FlDialog = withInstall(/* @__PURE__ */ defineComponent({
161
+ name: "FlDialog",
162
+ inheritAttrs: false,
163
+ __name: "dialog",
164
+ props: flDialogProps,
165
+ emits: flDialogEmits,
166
+ setup(__props, { expose: __expose, emit: __emit }) {
167
+ const omitAttrKeys = new Set([
168
+ "align-center",
169
+ "alignCenter",
170
+ "body-class",
171
+ "bodyClass",
172
+ "class",
173
+ "destroy-on-close",
174
+ "destroyOnClose",
175
+ "draggable",
176
+ "footer-class",
177
+ "footerClass",
178
+ "fullscreen",
179
+ "header-class",
180
+ "headerClass",
181
+ "show-close",
182
+ "showClose",
183
+ "transition"
184
+ ]);
185
+ const props = __props;
186
+ const emit = __emit;
187
+ const attrs = useAttrs();
188
+ const slots = useSlots();
189
+ const ns = useNamespace("dialog");
190
+ const isFullscreen = ref(false);
191
+ const normalizeClassName = (value) => {
192
+ if (!value) return "";
193
+ if (typeof value === "string") return value.split(" ").map((item) => item.trim()).filter(Boolean).join(" ");
194
+ if (Array.isArray(value)) return value.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
195
+ return Object.entries(value).filter(([, enabled]) => enabled).map(([className]) => className).join(" ");
196
+ };
197
+ const mergeClassName = (...values) => values.map((item) => normalizeClassName(item)).filter(Boolean).join(" ").trim();
198
+ const getAttrValue = (kebabCaseName, camelCaseName = kebabCaseName) => attrs[kebabCaseName] ?? attrs[camelCaseName];
199
+ const resolveBooleanAttr = (value, fallback) => {
200
+ if (value === void 0) return fallback;
201
+ if (typeof value === "boolean") return value;
202
+ if (typeof value === "string") {
203
+ if (!value) return true;
204
+ return value !== "false";
205
+ }
206
+ return Boolean(value);
207
+ };
208
+ const closeDialog = () => {
209
+ emit("update:modelValue", false);
210
+ };
211
+ const toggleFullscreen = () => {
212
+ isFullscreen.value = !isFullscreen.value;
213
+ };
214
+ const handleCancel = () => {
215
+ emit("cancel");
216
+ closeDialog();
217
+ };
218
+ const handleConfirm = () => {
219
+ emit("confirm");
220
+ closeDialog();
221
+ };
222
+ const handleModelValueUpdate = (value) => {
223
+ emit("update:modelValue", value);
224
+ invokeListener(attrs["onUpdate:modelValue"], value);
225
+ };
226
+ const mergedClass = computed(() => mergeClassName(ns.b(), attrs.class));
227
+ const mergedHeaderClass = computed(() => mergeClassName(ns.e("header"), getAttrValue("header-class", "headerClass")));
228
+ const mergedBodyClass = computed(() => mergeClassName(ns.e("body"), getAttrValue("body-class", "bodyClass")));
229
+ const mergedFooterClass = computed(() => mergeClassName(ns.e("footer"), getAttrValue("footer-class", "footerClass")));
230
+ const bodyStyle = computed(() => {
231
+ if (isFullscreen.value) return;
232
+ if (props.bodyHeight === void 0 || props.bodyHeight === null || props.bodyHeight === "") return;
233
+ return {
234
+ height: typeof props.bodyHeight === "number" ? `${props.bodyHeight}px` : props.bodyHeight,
235
+ overflowY: "auto"
236
+ };
237
+ });
238
+ const resolvedTitle = computed(() => {
239
+ const title = attrs.title;
240
+ return typeof title === "string" ? title : "";
241
+ });
242
+ const resolvedAlignCenter = computed(() => resolveBooleanAttr(getAttrValue("align-center", "alignCenter"), true));
243
+ const resolvedDestroyOnClose = computed(() => resolveBooleanAttr(getAttrValue("destroy-on-close", "destroyOnClose"), true));
244
+ const resolvedDraggable = computed(() => resolveBooleanAttr(getAttrValue("draggable"), true));
245
+ const resolvedShowClose = computed(() => resolveBooleanAttr(getAttrValue("show-close", "showClose"), false));
246
+ const resolvedTransition = computed(() => {
247
+ const transition = getAttrValue("transition");
248
+ return typeof transition === "string" && transition ? transition : "fl-dialog-bounce";
249
+ });
250
+ const forwardedAttrs = computed(() => {
251
+ const next = {};
252
+ for (const [key, value] of Object.entries(attrs)) if (!omitAttrKeys.has(key)) next[key] = value;
253
+ return next;
254
+ });
255
+ const mergedAttrs = computed(() => ({
256
+ ...forwardedAttrs.value,
257
+ alignCenter: resolvedAlignCenter.value,
258
+ bodyClass: mergedBodyClass.value,
259
+ class: mergedClass.value,
260
+ destroyOnClose: resolvedDestroyOnClose.value,
261
+ draggable: resolvedDraggable.value,
262
+ footerClass: mergedFooterClass.value,
263
+ fullscreen: isFullscreen.value,
264
+ headerClass: mergedHeaderClass.value,
265
+ modelValue: props.modelValue,
266
+ showClose: resolvedShowClose.value,
267
+ transition: resolvedTransition.value,
268
+ "onUpdate:modelValue": handleModelValueUpdate
269
+ }));
270
+ const headerContentClass = ns.e("header-content");
271
+ const headerTitleClass = ns.e("header-title");
272
+ const headerActionsClass = ns.e("header-actions");
273
+ const headerActionIconClass = ns.e("header-action-icon");
274
+ const bodyInnerClass = ns.e("body-inner");
275
+ const footerActionsClass = ns.e("footer-actions");
276
+ const { changeRef } = useMergedExpose({
277
+ closeDialog,
278
+ toggleFullscreen
279
+ });
280
+ __expose({});
281
+ return (_ctx, _cache) => {
282
+ return openBlock(), createBlock(resolveDynamicComponent(unref(ElDialog)), mergeProps(mergedAttrs.value, { ref: unref(changeRef) }), createSlots({
283
+ 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", {
284
+ class: normalizeClass(unref(headerActionIconClass)),
285
+ "aria-label": "FullScreen",
286
+ role: "button",
287
+ tabindex: "0",
288
+ title: "FullScreen",
289
+ onClick: toggleFullscreen,
290
+ onKeydown: [withKeys(withModifiers(toggleFullscreen, ["prevent"]), ["enter"]), withKeys(withModifiers(toggleFullscreen, ["prevent"]), ["space"])]
291
+ }, [createVNode(unref(ElIcon), null, {
292
+ default: withCtx(() => [createVNode(unref(FullScreen))]),
293
+ _: 1
294
+ })], 42, _hoisted_1), createVNode(unref(FlButton), {
295
+ icon: unref(Close),
296
+ class: normalizeClass(unref(headerActionIconClass)),
297
+ "aria-label": "Close",
298
+ link: "",
299
+ title: "Close",
300
+ type: "primary",
301
+ onClick: closeDialog
302
+ }, null, 8, ["icon", "class"])], 2)], 2)]),
303
+ default: withCtx(() => [createElementVNode("div", {
304
+ class: normalizeClass(unref(bodyInnerClass)),
305
+ style: normalizeStyle(bodyStyle.value)
306
+ }, [renderSlot(_ctx.$slots, "default")], 6)]),
307
+ _: 2
308
+ }, [unref(slots).footer || props.showFooter ? {
309
+ name: "footer",
310
+ fn: withCtx(() => [unref(slots).footer ? renderSlot(_ctx.$slots, "footer", { key: 0 }) : (openBlock(), createElementBlock("div", {
311
+ key: 1,
312
+ class: normalizeClass(unref(footerActionsClass))
313
+ }, [createVNode(unref(FlButton), {
314
+ disabled: props.cancelDisabled,
315
+ onClick: handleCancel
316
+ }, {
317
+ default: withCtx(() => [createTextVNode(toDisplayString(props.cancelText), 1)]),
318
+ _: 1
319
+ }, 8, ["disabled"]), createVNode(unref(FlButton), {
320
+ disabled: props.confirmDisabled,
321
+ type: "primary",
322
+ onClick: handleConfirm
323
+ }, {
324
+ default: withCtx(() => [createTextVNode(toDisplayString(props.confirmText), 1)]),
325
+ _: 1
326
+ }, 8, ["disabled"])], 2))]),
327
+ key: "0"
328
+ } : void 0]), 1040);
329
+ };
330
+ }
331
+ }));
332
+ var dialog_default = FlDialog;
333
+ export { FlDialog, dialog_default as default };
334
+
335
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../packages/utils/src/bem.ts","../../../../../packages/utils/src/component.ts","../../../../../packages/utils/src/install.ts","../../../../../packages/hooks/src/use-component.ts","../../../../../packages/components/button/src/button.ts","../../../../../packages/components/button/src/button.vue","../../../../../packages/components/button/src/button.vue","../../../../../packages/components/button/index.ts","../../../../../packages/components/dialog/src/dialog.ts","../../../../../packages/components/dialog/src/dialog.vue","../../../../../packages/components/dialog/src/dialog.vue","../../../../../packages/components/dialog/index.ts"],"sourcesContent":["const defaultNamespace = 'fl'\r\nconst statePrefix = 'is-'\r\n\r\nconst buildBemName = (\r\n namespace: string,\r\n block: string,\r\n blockSuffix = '',\r\n element = '',\r\n modifier = ''\r\n) => {\r\n let className = `${namespace}-${block}`\r\n\r\n if (blockSuffix) {\r\n className += `-${blockSuffix}`\r\n }\r\n\r\n if (element) {\r\n className += `__${element}`\r\n }\r\n\r\n if (modifier) {\r\n className += `--${modifier}`\r\n }\r\n\r\n return className\r\n}\r\n\r\nexport const useNamespace = (block: string, namespace = defaultNamespace) => {\r\n const b = (blockSuffix = '') => buildBemName(namespace, block, blockSuffix)\r\n\r\n const e = (element?: string) => (element ? buildBemName(namespace, block, '', element) : '')\r\n\r\n const m = (modifier?: string) =>\r\n modifier ? buildBemName(namespace, block, '', '', modifier) : ''\r\n\r\n const be = (blockSuffix?: string, element?: string) => {\r\n if (!blockSuffix || !element) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element)\r\n }\r\n\r\n const em = (element?: string, modifier?: string) => {\r\n if (!element || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, '', element, modifier)\r\n }\r\n\r\n const bm = (blockSuffix?: string, modifier?: string) => {\r\n if (!blockSuffix || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, '', modifier)\r\n }\r\n\r\n const bem = (blockSuffix?: string, element?: string, modifier?: string) => {\r\n if (!blockSuffix && !element && !modifier) {\r\n return b()\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element, modifier)\r\n }\r\n\r\n const is = (name: string, state = true) => (state ? `${statePrefix}${name}` : '')\r\n\r\n return {\r\n namespace,\r\n b,\r\n e,\r\n m,\r\n be,\r\n em,\r\n bm,\r\n bem,\r\n is\r\n }\r\n}\r\n","type ExposedTarget = {\r\n exposed?: Record<string, unknown> | null\r\n} | null\r\n\r\nexport const mergeComponentExpose = (\r\n vm: ExposedTarget,\r\n exposed: unknown,\r\n extras: Record<string, unknown> = {}\r\n) => {\r\n if (!vm?.exposed || !exposed || (typeof exposed !== 'object' && typeof exposed !== 'function')) {\r\n return\r\n }\r\n\r\n Object.assign(vm.exposed, extras, exposed)\r\n}\r\n\r\nexport const invokeListener = (listener: unknown, ...args: unknown[]) => {\r\n if (typeof listener === 'function') {\r\n listener(...args)\r\n return\r\n }\r\n\r\n if (!Array.isArray(listener)) {\r\n return\r\n }\r\n\r\n for (const item of listener) {\r\n if (typeof item === 'function') {\r\n item(...args)\r\n }\r\n }\r\n}\r\n","import type { App, Plugin } from 'vue'\r\n\r\nexport type SFCWithInstall<T> = T & Plugin\r\n\r\nexport const withInstall = <T extends { name?: string }>(component: T): SFCWithInstall<T> => {\r\n const installable = component as SFCWithInstall<T>\r\n\r\n installable.install = (app: App) => {\r\n if (!component.name) {\r\n return\r\n }\r\n\r\n app.component(component.name, component as unknown as object)\r\n }\r\n\r\n return installable\r\n}\r\n","import { computed, getCurrentInstance } from 'vue'\r\nimport { invokeListener, mergeComponentExpose, useNamespace } from '@falcon-ui/utils'\r\n\r\ntype UseMergedAttrsOptions = {\r\n attrs: Record<string, unknown>\r\n block: string\r\n listenerName: string\r\n onListener?: (...args: unknown[]) => void\r\n}\r\n\r\nexport const useMergedAttrs = ({\r\n attrs,\r\n block,\r\n listenerName,\r\n onListener\r\n}: UseMergedAttrsOptions) => {\r\n const ns = useNamespace(block)\r\n const className = ns.b()\r\n\r\n const mergedAttrs = computed(() => {\r\n const next = { ...attrs }\r\n const originalListener = next[listenerName]\r\n next.class = [className, next.class]\r\n\r\n next[listenerName] = (...args: unknown[]) => {\r\n onListener?.(...args)\r\n invokeListener(originalListener, ...args)\r\n }\r\n\r\n return next\r\n })\r\n\r\n return {\r\n mergedAttrs\r\n }\r\n}\r\n\r\nexport const useMergedExpose = <TExpose extends Record<string, unknown>>(extras: TExpose) => {\r\n const vm = getCurrentInstance()\r\n\r\n const changeRef = (exposed: unknown) => {\r\n mergeComponentExpose(vm, exposed, extras)\r\n }\r\n\r\n return {\r\n changeRef\r\n }\r\n}\r\n","import type { ExtractPublicPropTypes } from 'vue'\r\n\r\nexport const flButtonProps = {\r\n /**\r\n * 调试事件标签,在开启调试模式后会随 `debug-click` 一起抛出。\r\n */\r\n debugLabel: {\r\n type: String,\r\n default: ''\r\n },\r\n /**\r\n * 是否开启调试点击事件,开启后每次点击都会触发 `debug-click`。\r\n */\r\n debugMode: {\r\n type: Boolean,\r\n default: false\r\n }\r\n} as const\r\n\r\nexport interface FlButtonDebugPayload {\r\n /**\r\n * 用于标识当前按钮实例的业务标签。\r\n */\r\n label: string\r\n}\r\n\r\nexport const flButtonEmits = {\r\n /**\r\n * 开启调试模式后,在按钮点击时触发。\r\n */\r\n 'debug-click': (payload: FlButtonDebugPayload) => typeof payload.label === 'string'\r\n} as const\r\n\r\nexport type FlButtonProps = ExtractPublicPropTypes<typeof flButtonProps>\r\nexport type FlButtonEmits = typeof flButtonEmits\r\n\r\nexport type ButtonProps = FlButtonProps\r\nexport type ButtonEmits = FlButtonEmits\r\n","<template>\r\n <component :is=\"h(ElButton, { ...mergedAttrs, ref: changeRef }, slots)\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElButton } from 'element-plus'\r\nimport type { ComponentInstance } from 'vue'\r\nimport { h, useAttrs, useSlots } from 'vue'\r\nimport { useMergedAttrs, useMergedExpose } from '@falcon-ui/hooks'\r\nimport { flButtonEmits, flButtonProps } from './button'\r\n\r\ndefineOptions({\r\n name: 'FlButton',\r\n inheritAttrs: false\r\n})\r\n\r\nconst props = defineProps(flButtonProps)\r\nconst emit = defineEmits(flButtonEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\n\r\nconst _myExpose = {\r\n /**\r\n * 标记该暴露值来源于 FlButton,便于调试识别。\r\n */\r\n debugKind: 'button'\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\nconst { mergedAttrs } = useMergedAttrs({\r\n attrs: attrs as Record<string, unknown>,\r\n block: 'button',\r\n listenerName: 'onClick',\r\n onListener: () => {\r\n if (props.debugMode) {\r\n emit('debug-click', {\r\n label: props.debugLabel\r\n })\r\n }\r\n }\r\n})\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElButton> & typeof _myExpose)\r\n</script>\r\n","<template>\r\n <component :is=\"h(ElButton, { ...mergedAttrs, ref: changeRef }, slots)\" />\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ElButton } from 'element-plus'\r\nimport type { ComponentInstance } from 'vue'\r\nimport { h, useAttrs, useSlots } from 'vue'\r\nimport { useMergedAttrs, useMergedExpose } from '@falcon-ui/hooks'\r\nimport { flButtonEmits, flButtonProps } from './button'\r\n\r\ndefineOptions({\r\n name: 'FlButton',\r\n inheritAttrs: false\r\n})\r\n\r\nconst props = defineProps(flButtonProps)\r\nconst emit = defineEmits(flButtonEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\n\r\nconst _myExpose = {\r\n /**\r\n * 标记该暴露值来源于 FlButton,便于调试识别。\r\n */\r\n debugKind: 'button'\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\nconst { mergedAttrs } = useMergedAttrs({\r\n attrs: attrs as Record<string, unknown>,\r\n block: 'button',\r\n listenerName: 'onClick',\r\n onListener: () => {\r\n if (props.debugMode) {\r\n emit('debug-click', {\r\n label: props.debugLabel\r\n })\r\n }\r\n }\r\n})\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElButton> & typeof _myExpose)\r\n</script>\r\n","import Button from './src/button.vue'\r\nimport { withInstall } from '@falcon-ui/utils'\r\n\r\nexport const FlButton = withInstall(Button)\r\n\r\nexport default FlButton\r\n\r\nexport type { ButtonEmits, ButtonProps, FlButtonEmits, FlButtonProps } from './src/button'\r\n","import type { ExtractPublicPropTypes } from 'vue'\r\n\r\nexport const flDialogProps = {\r\n /**\r\n * 对话框主体区域固定高度,传入数字时按像素处理。\r\n */\r\n bodyHeight: {\r\n type: [Number, String] as [NumberConstructor, StringConstructor],\r\n default: undefined\r\n },\r\n /**\r\n * 是否禁用默认页脚中的取消按钮。\r\n */\r\n cancelDisabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 默认页脚取消按钮文案。\r\n */\r\n cancelText: {\r\n type: String,\r\n default: '取消'\r\n },\r\n /**\r\n * 是否禁用默认页脚中的确认按钮。\r\n */\r\n confirmDisabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 默认页脚确认按钮文案。\r\n */\r\n confirmText: {\r\n type: String,\r\n default: '确认'\r\n },\r\n /**\r\n * 通过 v-model 控制对话框显示状态。\r\n */\r\n modelValue: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 是否渲染默认页脚操作区。\r\n */\r\n showFooter: {\r\n type: Boolean,\r\n default: true\r\n }\r\n} as const\r\n\r\nexport const flDialogEmits = {\r\n /**\r\n * 点击默认取消动作时触发。\r\n */\r\n cancel: () => true,\r\n /**\r\n * 点击默认确认动作时触发。\r\n */\r\n confirm: () => true,\r\n /**\r\n * 对话框显示状态变更时触发。\r\n */\r\n 'update:modelValue': (value: boolean) => typeof value === 'boolean'\r\n} as const\r\n\r\nexport type FlDialogProps = ExtractPublicPropTypes<typeof flDialogProps>\r\nexport type FlDialogEmits = typeof flDialogEmits\r\n\r\nexport type DialogProps = FlDialogProps\r\nexport type DialogEmits = FlDialogEmits\r\n","<template>\r\n <component :is=\"ElDialog\" v-bind=\"mergedAttrs\" :ref=\"changeRef\">\r\n <template #header>\r\n <div :class=\"headerContentClass\">\r\n <div :class=\"headerTitleClass\">\r\n <slot v-if=\"slots.header\" name=\"header\" />\r\n <slot v-else-if=\"slots.title\" name=\"title\" />\r\n <template v-else>{{ resolvedTitle }}</template>\r\n </div>\r\n <div :class=\"headerActionsClass\">\r\n <span\r\n :class=\"headerActionIconClass\"\r\n aria-label=\"FullScreen\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n title=\"FullScreen\"\r\n @click=\"toggleFullscreen\"\r\n @keydown.enter.prevent=\"toggleFullscreen\"\r\n @keydown.space.prevent=\"toggleFullscreen\">\r\n <ElIcon>\r\n <FullScreen />\r\n </ElIcon>\r\n </span>\r\n <FlButton\r\n :icon=\"Close\"\r\n :class=\"headerActionIconClass\"\r\n aria-label=\"Close\"\r\n link\r\n title=\"Close\"\r\n type=\"primary\"\r\n @click=\"closeDialog\" />\r\n </div>\r\n </div>\r\n </template>\r\n\r\n <div :class=\"bodyInnerClass\" :style=\"bodyStyle\">\r\n <slot />\r\n </div>\r\n\r\n <template v-if=\"slots.footer || props.showFooter\" #footer>\r\n <slot v-if=\"slots.footer\" name=\"footer\" />\r\n <div v-else :class=\"footerActionsClass\">\r\n <fl-button :disabled=\"props.cancelDisabled\" @click=\"handleCancel\">\r\n {{ props.cancelText }}\r\n </fl-button>\r\n <fl-button :disabled=\"props.confirmDisabled\" type=\"primary\" @click=\"handleConfirm\">\r\n {{ props.confirmText }}\r\n </fl-button>\r\n </div>\r\n </template>\r\n </component>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { Close, FullScreen } from '@element-plus/icons-vue'\r\nimport { ElDialog, ElIcon } from 'element-plus'\r\nimport type { ComponentInstance, CSSProperties } from 'vue'\r\nimport { computed, ref, useAttrs, useSlots } from 'vue'\r\nimport { useMergedExpose } from '@falcon-ui/hooks'\r\nimport { invokeListener, useNamespace } from '@falcon-ui/utils'\r\nimport { FlButton } from '../../button'\r\nimport { flDialogEmits, flDialogProps } from './dialog'\r\n\r\ndefineOptions({\r\n name: 'FlDialog',\r\n inheritAttrs: false\r\n})\r\n\r\ntype ClassValue = string | Record<string, boolean> | ClassValue[] | null | undefined\r\n\r\nconst omitAttrKeys = new Set([\r\n 'align-center',\r\n 'alignCenter',\r\n 'body-class',\r\n 'bodyClass',\r\n 'class',\r\n 'destroy-on-close',\r\n 'destroyOnClose',\r\n 'draggable',\r\n 'footer-class',\r\n 'footerClass',\r\n 'fullscreen',\r\n 'header-class',\r\n 'headerClass',\r\n 'show-close',\r\n 'showClose',\r\n 'transition'\r\n])\r\n\r\nconst props = defineProps(flDialogProps)\r\nconst emit = defineEmits(flDialogEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\nconst ns = useNamespace('dialog')\r\nconst isFullscreen = ref(false)\r\n\r\nconst normalizeClassName = (value: ClassValue): string => {\r\n if (!value) {\r\n return ''\r\n }\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(' ')\r\n .map((item) => item.trim())\r\n .filter(Boolean)\r\n .join(' ')\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((item) => normalizeClassName(item))\r\n .filter(Boolean)\r\n .join(' ')\r\n .trim()\r\n }\r\n\r\n return Object.entries(value)\r\n .filter(([, enabled]) => enabled)\r\n .map(([className]) => className)\r\n .join(' ')\r\n}\r\n\r\nconst mergeClassName = (...values: ClassValue[]): string =>\r\n values\r\n .map((item) => normalizeClassName(item))\r\n .filter(Boolean)\r\n .join(' ')\r\n .trim()\r\n\r\nconst getAttrValue = (kebabCaseName: string, camelCaseName = kebabCaseName): unknown =>\r\n attrs[kebabCaseName] ?? attrs[camelCaseName]\r\n\r\nconst resolveBooleanAttr = (value: unknown, fallback: boolean): boolean => {\r\n if (value === undefined) {\r\n return fallback\r\n }\r\n\r\n if (typeof value === 'boolean') {\r\n return value\r\n }\r\n\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return true\r\n }\r\n\r\n return value !== 'false'\r\n }\r\n\r\n return Boolean(value)\r\n}\r\n\r\n/**\r\n * 通过同步 `modelValue=false` 关闭当前对话框。\r\n */\r\nconst closeDialog = () => {\r\n emit('update:modelValue', false)\r\n}\r\n\r\n/**\r\n * 切换当前对话框的全屏状态。\r\n */\r\nconst toggleFullscreen = () => {\r\n isFullscreen.value = !isFullscreen.value\r\n}\r\n\r\nconst handleCancel = () => {\r\n emit('cancel')\r\n closeDialog()\r\n}\r\n\r\nconst handleConfirm = () => {\r\n emit('confirm')\r\n closeDialog()\r\n}\r\n\r\nconst handleModelValueUpdate = (value: boolean) => {\r\n emit('update:modelValue', value)\r\n invokeListener(attrs['onUpdate:modelValue'], value)\r\n}\r\n\r\nconst mergedClass = computed(() => mergeClassName(ns.b(), attrs.class as ClassValue))\r\nconst mergedHeaderClass = computed(() =>\r\n mergeClassName(ns.e('header'), getAttrValue('header-class', 'headerClass') as ClassValue)\r\n)\r\nconst mergedBodyClass = computed(() =>\r\n mergeClassName(ns.e('body'), getAttrValue('body-class', 'bodyClass') as ClassValue)\r\n)\r\nconst mergedFooterClass = computed(() =>\r\n mergeClassName(ns.e('footer'), getAttrValue('footer-class', 'footerClass') as ClassValue)\r\n)\r\n\r\nconst bodyStyle = computed<CSSProperties | undefined>(() => {\r\n if (isFullscreen.value) {\r\n return undefined\r\n }\r\n\r\n if (props.bodyHeight === undefined || props.bodyHeight === null || props.bodyHeight === '') {\r\n return undefined\r\n }\r\n\r\n const height = typeof props.bodyHeight === 'number' ? `${props.bodyHeight}px` : props.bodyHeight\r\n return {\r\n height,\r\n overflowY: 'auto'\r\n }\r\n})\r\n\r\nconst resolvedTitle = computed(() => {\r\n const title = attrs.title\r\n return typeof title === 'string' ? title : ''\r\n})\r\n\r\nconst resolvedAlignCenter = computed(() =>\r\n resolveBooleanAttr(getAttrValue('align-center', 'alignCenter'), true)\r\n)\r\nconst resolvedDestroyOnClose = computed(() =>\r\n resolveBooleanAttr(getAttrValue('destroy-on-close', 'destroyOnClose'), true)\r\n)\r\nconst resolvedDraggable = computed(() => resolveBooleanAttr(getAttrValue('draggable'), true))\r\nconst resolvedShowClose = computed(() =>\r\n resolveBooleanAttr(getAttrValue('show-close', 'showClose'), false)\r\n)\r\nconst resolvedTransition = computed(() => {\r\n const transition = getAttrValue('transition')\r\n return typeof transition === 'string' && transition ? transition : 'fl-dialog-bounce'\r\n})\r\n\r\nconst forwardedAttrs = computed(() => {\r\n const next: Record<string, unknown> = {}\r\n\r\n for (const [key, value] of Object.entries(attrs)) {\r\n if (!omitAttrKeys.has(key)) {\r\n next[key] = value\r\n }\r\n }\r\n\r\n return next\r\n})\r\n\r\nconst mergedAttrs = computed(() => ({\r\n ...forwardedAttrs.value,\r\n alignCenter: resolvedAlignCenter.value,\r\n bodyClass: mergedBodyClass.value,\r\n class: mergedClass.value,\r\n destroyOnClose: resolvedDestroyOnClose.value,\r\n draggable: resolvedDraggable.value,\r\n footerClass: mergedFooterClass.value,\r\n fullscreen: isFullscreen.value,\r\n headerClass: mergedHeaderClass.value,\r\n modelValue: props.modelValue,\r\n showClose: resolvedShowClose.value,\r\n transition: resolvedTransition.value,\r\n 'onUpdate:modelValue': handleModelValueUpdate\r\n}))\r\n\r\nconst headerContentClass = ns.e('header-content')\r\nconst headerTitleClass = ns.e('header-title')\r\nconst headerActionsClass = ns.e('header-actions')\r\nconst headerActionIconClass = ns.e('header-action-icon')\r\nconst bodyInnerClass = ns.e('body-inner')\r\nconst footerActionsClass = ns.e('footer-actions')\r\n\r\nconst _myExpose = {\r\n /**\r\n * 以编程方式关闭当前对话框。\r\n */\r\n closeDialog,\r\n /**\r\n * 以编程方式切换对话框全屏模式。\r\n */\r\n toggleFullscreen\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElDialog> & typeof _myExpose)\r\n</script>\r\n","<template>\r\n <component :is=\"ElDialog\" v-bind=\"mergedAttrs\" :ref=\"changeRef\">\r\n <template #header>\r\n <div :class=\"headerContentClass\">\r\n <div :class=\"headerTitleClass\">\r\n <slot v-if=\"slots.header\" name=\"header\" />\r\n <slot v-else-if=\"slots.title\" name=\"title\" />\r\n <template v-else>{{ resolvedTitle }}</template>\r\n </div>\r\n <div :class=\"headerActionsClass\">\r\n <span\r\n :class=\"headerActionIconClass\"\r\n aria-label=\"FullScreen\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n title=\"FullScreen\"\r\n @click=\"toggleFullscreen\"\r\n @keydown.enter.prevent=\"toggleFullscreen\"\r\n @keydown.space.prevent=\"toggleFullscreen\">\r\n <ElIcon>\r\n <FullScreen />\r\n </ElIcon>\r\n </span>\r\n <FlButton\r\n :icon=\"Close\"\r\n :class=\"headerActionIconClass\"\r\n aria-label=\"Close\"\r\n link\r\n title=\"Close\"\r\n type=\"primary\"\r\n @click=\"closeDialog\" />\r\n </div>\r\n </div>\r\n </template>\r\n\r\n <div :class=\"bodyInnerClass\" :style=\"bodyStyle\">\r\n <slot />\r\n </div>\r\n\r\n <template v-if=\"slots.footer || props.showFooter\" #footer>\r\n <slot v-if=\"slots.footer\" name=\"footer\" />\r\n <div v-else :class=\"footerActionsClass\">\r\n <fl-button :disabled=\"props.cancelDisabled\" @click=\"handleCancel\">\r\n {{ props.cancelText }}\r\n </fl-button>\r\n <fl-button :disabled=\"props.confirmDisabled\" type=\"primary\" @click=\"handleConfirm\">\r\n {{ props.confirmText }}\r\n </fl-button>\r\n </div>\r\n </template>\r\n </component>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { Close, FullScreen } from '@element-plus/icons-vue'\r\nimport { ElDialog, ElIcon } from 'element-plus'\r\nimport type { ComponentInstance, CSSProperties } from 'vue'\r\nimport { computed, ref, useAttrs, useSlots } from 'vue'\r\nimport { useMergedExpose } from '@falcon-ui/hooks'\r\nimport { invokeListener, useNamespace } from '@falcon-ui/utils'\r\nimport { FlButton } from '../../button'\r\nimport { flDialogEmits, flDialogProps } from './dialog'\r\n\r\ndefineOptions({\r\n name: 'FlDialog',\r\n inheritAttrs: false\r\n})\r\n\r\ntype ClassValue = string | Record<string, boolean> | ClassValue[] | null | undefined\r\n\r\nconst omitAttrKeys = new Set([\r\n 'align-center',\r\n 'alignCenter',\r\n 'body-class',\r\n 'bodyClass',\r\n 'class',\r\n 'destroy-on-close',\r\n 'destroyOnClose',\r\n 'draggable',\r\n 'footer-class',\r\n 'footerClass',\r\n 'fullscreen',\r\n 'header-class',\r\n 'headerClass',\r\n 'show-close',\r\n 'showClose',\r\n 'transition'\r\n])\r\n\r\nconst props = defineProps(flDialogProps)\r\nconst emit = defineEmits(flDialogEmits)\r\nconst attrs = useAttrs()\r\nconst slots = useSlots()\r\nconst ns = useNamespace('dialog')\r\nconst isFullscreen = ref(false)\r\n\r\nconst normalizeClassName = (value: ClassValue): string => {\r\n if (!value) {\r\n return ''\r\n }\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(' ')\r\n .map((item) => item.trim())\r\n .filter(Boolean)\r\n .join(' ')\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((item) => normalizeClassName(item))\r\n .filter(Boolean)\r\n .join(' ')\r\n .trim()\r\n }\r\n\r\n return Object.entries(value)\r\n .filter(([, enabled]) => enabled)\r\n .map(([className]) => className)\r\n .join(' ')\r\n}\r\n\r\nconst mergeClassName = (...values: ClassValue[]): string =>\r\n values\r\n .map((item) => normalizeClassName(item))\r\n .filter(Boolean)\r\n .join(' ')\r\n .trim()\r\n\r\nconst getAttrValue = (kebabCaseName: string, camelCaseName = kebabCaseName): unknown =>\r\n attrs[kebabCaseName] ?? attrs[camelCaseName]\r\n\r\nconst resolveBooleanAttr = (value: unknown, fallback: boolean): boolean => {\r\n if (value === undefined) {\r\n return fallback\r\n }\r\n\r\n if (typeof value === 'boolean') {\r\n return value\r\n }\r\n\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return true\r\n }\r\n\r\n return value !== 'false'\r\n }\r\n\r\n return Boolean(value)\r\n}\r\n\r\n/**\r\n * 通过同步 `modelValue=false` 关闭当前对话框。\r\n */\r\nconst closeDialog = () => {\r\n emit('update:modelValue', false)\r\n}\r\n\r\n/**\r\n * 切换当前对话框的全屏状态。\r\n */\r\nconst toggleFullscreen = () => {\r\n isFullscreen.value = !isFullscreen.value\r\n}\r\n\r\nconst handleCancel = () => {\r\n emit('cancel')\r\n closeDialog()\r\n}\r\n\r\nconst handleConfirm = () => {\r\n emit('confirm')\r\n closeDialog()\r\n}\r\n\r\nconst handleModelValueUpdate = (value: boolean) => {\r\n emit('update:modelValue', value)\r\n invokeListener(attrs['onUpdate:modelValue'], value)\r\n}\r\n\r\nconst mergedClass = computed(() => mergeClassName(ns.b(), attrs.class as ClassValue))\r\nconst mergedHeaderClass = computed(() =>\r\n mergeClassName(ns.e('header'), getAttrValue('header-class', 'headerClass') as ClassValue)\r\n)\r\nconst mergedBodyClass = computed(() =>\r\n mergeClassName(ns.e('body'), getAttrValue('body-class', 'bodyClass') as ClassValue)\r\n)\r\nconst mergedFooterClass = computed(() =>\r\n mergeClassName(ns.e('footer'), getAttrValue('footer-class', 'footerClass') as ClassValue)\r\n)\r\n\r\nconst bodyStyle = computed<CSSProperties | undefined>(() => {\r\n if (isFullscreen.value) {\r\n return undefined\r\n }\r\n\r\n if (props.bodyHeight === undefined || props.bodyHeight === null || props.bodyHeight === '') {\r\n return undefined\r\n }\r\n\r\n const height = typeof props.bodyHeight === 'number' ? `${props.bodyHeight}px` : props.bodyHeight\r\n return {\r\n height,\r\n overflowY: 'auto'\r\n }\r\n})\r\n\r\nconst resolvedTitle = computed(() => {\r\n const title = attrs.title\r\n return typeof title === 'string' ? title : ''\r\n})\r\n\r\nconst resolvedAlignCenter = computed(() =>\r\n resolveBooleanAttr(getAttrValue('align-center', 'alignCenter'), true)\r\n)\r\nconst resolvedDestroyOnClose = computed(() =>\r\n resolveBooleanAttr(getAttrValue('destroy-on-close', 'destroyOnClose'), true)\r\n)\r\nconst resolvedDraggable = computed(() => resolveBooleanAttr(getAttrValue('draggable'), true))\r\nconst resolvedShowClose = computed(() =>\r\n resolveBooleanAttr(getAttrValue('show-close', 'showClose'), false)\r\n)\r\nconst resolvedTransition = computed(() => {\r\n const transition = getAttrValue('transition')\r\n return typeof transition === 'string' && transition ? transition : 'fl-dialog-bounce'\r\n})\r\n\r\nconst forwardedAttrs = computed(() => {\r\n const next: Record<string, unknown> = {}\r\n\r\n for (const [key, value] of Object.entries(attrs)) {\r\n if (!omitAttrKeys.has(key)) {\r\n next[key] = value\r\n }\r\n }\r\n\r\n return next\r\n})\r\n\r\nconst mergedAttrs = computed(() => ({\r\n ...forwardedAttrs.value,\r\n alignCenter: resolvedAlignCenter.value,\r\n bodyClass: mergedBodyClass.value,\r\n class: mergedClass.value,\r\n destroyOnClose: resolvedDestroyOnClose.value,\r\n draggable: resolvedDraggable.value,\r\n footerClass: mergedFooterClass.value,\r\n fullscreen: isFullscreen.value,\r\n headerClass: mergedHeaderClass.value,\r\n modelValue: props.modelValue,\r\n showClose: resolvedShowClose.value,\r\n transition: resolvedTransition.value,\r\n 'onUpdate:modelValue': handleModelValueUpdate\r\n}))\r\n\r\nconst headerContentClass = ns.e('header-content')\r\nconst headerTitleClass = ns.e('header-title')\r\nconst headerActionsClass = ns.e('header-actions')\r\nconst headerActionIconClass = ns.e('header-action-icon')\r\nconst bodyInnerClass = ns.e('body-inner')\r\nconst footerActionsClass = ns.e('footer-actions')\r\n\r\nconst _myExpose = {\r\n /**\r\n * 以编程方式关闭当前对话框。\r\n */\r\n closeDialog,\r\n /**\r\n * 以编程方式切换对话框全屏模式。\r\n */\r\n toggleFullscreen\r\n}\r\n\r\nconst { changeRef } = useMergedExpose(_myExpose)\r\n\r\ndefineExpose({} as ComponentInstance<typeof ElDialog> & typeof _myExpose)\r\n</script>\r\n","import Dialog from './src/dialog.vue'\r\nimport { withInstall } from '@falcon-ui/utils'\r\n\r\nexport const FlDialog = withInstall(Dialog)\r\n\r\nexport default FlDialog\r\n\r\nexport type { DialogEmits, DialogProps, FlDialogEmits, FlDialogProps } from './src/dialog'\r\n"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ const flDialogProps = {
2
+ bodyHeight: {
3
+ type: [Number, String],
4
+ default: void 0
5
+ },
6
+ cancelDisabled: {
7
+ type: Boolean,
8
+ default: false
9
+ },
10
+ cancelText: {
11
+ type: String,
12
+ default: "取消"
13
+ },
14
+ confirmDisabled: {
15
+ type: Boolean,
16
+ default: false
17
+ },
18
+ confirmText: {
19
+ type: String,
20
+ default: "确认"
21
+ },
22
+ modelValue: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ showFooter: {
27
+ type: Boolean,
28
+ default: true
29
+ }
30
+ };
31
+ const flDialogEmits = {
32
+ cancel: () => true,
33
+ confirm: () => true,
34
+ "update:modelValue": (value) => typeof value === "boolean"
35
+ };
36
+ export { flDialogEmits, flDialogProps };
37
+
38
+ //# sourceMappingURL=dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.mjs","names":[],"sources":["../../../../../../packages/components/dialog/src/dialog.ts"],"sourcesContent":["import type { ExtractPublicPropTypes } from 'vue'\r\n\r\nexport const flDialogProps = {\r\n /**\r\n * 对话框主体区域固定高度,传入数字时按像素处理。\r\n */\r\n bodyHeight: {\r\n type: [Number, String] as [NumberConstructor, StringConstructor],\r\n default: undefined\r\n },\r\n /**\r\n * 是否禁用默认页脚中的取消按钮。\r\n */\r\n cancelDisabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 默认页脚取消按钮文案。\r\n */\r\n cancelText: {\r\n type: String,\r\n default: '取消'\r\n },\r\n /**\r\n * 是否禁用默认页脚中的确认按钮。\r\n */\r\n confirmDisabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 默认页脚确认按钮文案。\r\n */\r\n confirmText: {\r\n type: String,\r\n default: '确认'\r\n },\r\n /**\r\n * 通过 v-model 控制对话框显示状态。\r\n */\r\n modelValue: {\r\n type: Boolean,\r\n default: false\r\n },\r\n /**\r\n * 是否渲染默认页脚操作区。\r\n */\r\n showFooter: {\r\n type: Boolean,\r\n default: true\r\n }\r\n} as const\r\n\r\nexport const flDialogEmits = {\r\n /**\r\n * 点击默认取消动作时触发。\r\n */\r\n cancel: () => true,\r\n /**\r\n * 点击默认确认动作时触发。\r\n */\r\n confirm: () => true,\r\n /**\r\n * 对话框显示状态变更时触发。\r\n */\r\n 'update:modelValue': (value: boolean) => typeof value === 'boolean'\r\n} as const\r\n\r\nexport type FlDialogProps = ExtractPublicPropTypes<typeof flDialogProps>\r\nexport type FlDialogEmits = typeof flDialogEmits\r\n\r\nexport type DialogProps = FlDialogProps\r\nexport type DialogEmits = FlDialogEmits\r\n"],"mappings":"AAEA,MAAa,gBAAgB;CAI3B,YAAY;EACV,MAAM,CAAC,QAAQ,OAAO;EACtB,SAAS,KAAA;EACV;CAID,gBAAgB;EACd,MAAM;EACN,SAAS;EACV;CAID,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,iBAAiB;EACf,MAAM;EACN,SAAS;EACV;CAID,aAAa;EACX,MAAM;EACN,SAAS;EACV;CAID,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,YAAY;EACV,MAAM;EACN,SAAS;EACV;CACF;AAED,MAAa,gBAAgB;CAI3B,cAAc;CAId,eAAe;CAIf,sBAAsB,UAAmB,OAAO,UAAU;CAC3D"}