foucui 1.0.1

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 (378) hide show
  1. package/README.md +43 -0
  2. package/components/QiuAffix/index.vue +186 -0
  3. package/components/QiuAlert/index.vue +208 -0
  4. package/components/QiuAnchor/context.ts +18 -0
  5. package/components/QiuAnchor/index.vue +180 -0
  6. package/components/QiuAnchorLink/index.vue +67 -0
  7. package/components/QiuApp/index.vue +9 -0
  8. package/components/QiuAutocomplete/index.vue +408 -0
  9. package/components/QiuAvatar/index.vue +140 -0
  10. package/components/QiuBacktop/index.vue +121 -0
  11. package/components/QiuBadge/api/index.ts +389 -0
  12. package/components/QiuBadge/components/BadgeImagePickerDialog.vue +243 -0
  13. package/components/QiuBadge/components/BadgeLibraryManagerDialog.vue +30 -0
  14. package/components/QiuBadge/components/BadgeLibraryPanel.vue +182 -0
  15. package/components/QiuBadge/composables/useTableHostHeight.ts +53 -0
  16. package/components/QiuBadge/index.ts +18 -0
  17. package/components/QiuBadge/shared/BadgeTemplateRenderer.vue +32 -0
  18. package/components/QiuBadge/shared/assetUrl.ts +26 -0
  19. package/components/QiuBadge/shared/badgeTemplate.ts +309 -0
  20. package/components/QiuBadge/utils/chinaAreaData.ts +44 -0
  21. package/components/QiuBadge/utils/hostRegion.ts +22 -0
  22. package/components/QiuBadge/utils/pca-code.json +1 -0
  23. package/components/QiuBadge/utils/pdfFromElement.ts +348 -0
  24. package/components/QiuBadge/views/BadgeLibraryView.vue +32 -0
  25. package/components/QiuBadge/views/BadgeManageView.vue +1364 -0
  26. package/components/QiuBadge/views/BadgeTemplateEditorView.vue +10 -0
  27. package/components/QiuBadge/views/BadgeTemplateListView.vue +229 -0
  28. package/components/QiuBadge/views/DeskLabelTemplateListView.vue +227 -0
  29. package/components/QiuBadge/views/DeskLabelView.vue +683 -0
  30. package/components/QiuBadgeDot/index.vue +87 -0
  31. package/components/QiuButton/index.vue +247 -0
  32. package/components/QiuButtonGroup/index.vue +63 -0
  33. package/components/QiuCanvasKit/QiuCanvasEditor.vue +5503 -0
  34. package/components/QiuCanvasKit/QiuCanvasRenderer.vue +348 -0
  35. package/components/QiuCanvasKit/assetUrl.ts +11 -0
  36. package/components/QiuCanvasKit/components/DataModulesPanel.vue +352 -0
  37. package/components/QiuCanvasKit/export/html.ts +132 -0
  38. package/components/QiuCanvasKit/export/pdf.ts +48 -0
  39. package/components/QiuCanvasKit/export/png.ts +50 -0
  40. package/components/QiuCanvasKit/index.ts +20 -0
  41. package/components/QiuCanvasKit/modules/badgeCompat.ts +84 -0
  42. package/components/QiuCanvasKit/modules/dataRegistry.ts +207 -0
  43. package/components/QiuCanvasKit/modules/merge.ts +71 -0
  44. package/components/QiuCanvasKit/presets/badge.ts +67 -0
  45. package/components/QiuCanvasKit/presets/banner.ts +79 -0
  46. package/components/QiuCanvasKit/types.ts +138 -0
  47. package/components/QiuCard/index.vue +104 -0
  48. package/components/QiuCarousel/context.ts +16 -0
  49. package/components/QiuCarousel/index.vue +343 -0
  50. package/components/QiuCarouselItem/index.vue +47 -0
  51. package/components/QiuCascader/index.vue +879 -0
  52. package/components/QiuCascader/types.ts +48 -0
  53. package/components/QiuCheckbox/QiuCheckboxGroup.vue +78 -0
  54. package/components/QiuCheckbox/index.vue +231 -0
  55. package/components/QiuCheckbox/types.ts +8 -0
  56. package/components/QiuCode/index.vue +64 -0
  57. package/components/QiuCol/col.scss +55 -0
  58. package/components/QiuCol/index.vue +64 -0
  59. package/components/QiuCollapse/context.ts +10 -0
  60. package/components/QiuCollapse/index.vue +70 -0
  61. package/components/QiuCollapseItem/index.vue +167 -0
  62. package/components/QiuColorField/index.vue +296 -0
  63. package/components/QiuColorPicker/README.md +118 -0
  64. package/components/QiuColorPicker/index.vue +60 -0
  65. package/components/QiuColorfulCard/index.vue +101 -0
  66. package/components/QiuCombobox/index.vue +277 -0
  67. package/components/QiuConfigProvider/index.vue +31 -0
  68. package/components/QiuContextMenu/index.vue +209 -0
  69. package/components/QiuDate/index.vue +1134 -0
  70. package/components/QiuDescriptions/context.ts +20 -0
  71. package/components/QiuDescriptions/index.vue +115 -0
  72. package/components/QiuDescriptionsItem/index.vue +103 -0
  73. package/components/QiuDialog/index.vue +828 -0
  74. package/components/QiuDigitalCard/index.vue +159 -0
  75. package/components/QiuDivider/index.vue +185 -0
  76. package/components/QiuDot/index.vue +83 -0
  77. package/components/QiuDrawer/index.vue +350 -0
  78. package/components/QiuDropdown/QiuDropdownItem.vue +74 -0
  79. package/components/QiuDropdown/QiuDropdownMenu.vue +22 -0
  80. package/components/QiuDropdown/context.ts +9 -0
  81. package/components/QiuDropdown/index.vue +189 -0
  82. package/components/QiuEmpty/index.vue +73 -0
  83. package/components/QiuForm/index.vue +172 -0
  84. package/components/QiuForm/types.ts +39 -0
  85. package/components/QiuFormItem/index.vue +276 -0
  86. package/components/QiuFullscreen/index.vue +11 -0
  87. package/components/QiuGrid/index.vue +408 -0
  88. package/components/QiuHoverCard/index.vue +192 -0
  89. package/components/QiuIcon/index.vue +117 -0
  90. package/components/QiuIconPicker/iconify.libraries.ts +182 -0
  91. package/components/QiuIconPicker/icons.catalog.ts +3072 -0
  92. package/components/QiuIconPicker/index.vue +488 -0
  93. package/components/QiuImage/index.vue +177 -0
  94. package/components/QiuInput/index.vue +328 -0
  95. package/components/QiuInputNumber/index.vue +295 -0
  96. package/components/QiuInputOtp/index.vue +190 -0
  97. package/components/QiuKbd/index.vue +57 -0
  98. package/components/QiuLayoutContainer/index.vue +50 -0
  99. package/components/QiuLinkPreview/index.vue +224 -0
  100. package/components/QiuLoading/index.ts +176 -0
  101. package/components/QiuLoading/spinner.vue +820 -0
  102. package/components/QiuLoading/types.ts +44 -0
  103. package/components/QiuMention/index.vue +299 -0
  104. package/components/QiuMenu/QiuMenuRoot.vue +241 -0
  105. package/components/QiuMenu/components/QiuMenuItem.vue +340 -0
  106. package/components/QiuMenu/components/QiuSubMenu.vue +504 -0
  107. package/components/QiuMenu/context.ts +21 -0
  108. package/components/QiuMenu/index.vue +43 -0
  109. package/components/QiuMenuNav/QiuMenuNavItem.vue +100 -0
  110. package/components/QiuMenuNav/QiuMenuNavSub.vue +120 -0
  111. package/components/QiuMenuNav/context.ts +14 -0
  112. package/components/QiuMenuNav/index.vue +148 -0
  113. package/components/QiuMsg/QiuMsgItem.vue +180 -0
  114. package/components/QiuMsg/index.ts +158 -0
  115. package/components/QiuMsg/types.ts +23 -0
  116. package/components/QiuMsgBox/index.ts +147 -0
  117. package/components/QiuNotification/QiuNotificationItem.vue +168 -0
  118. package/components/QiuNotification/index.ts +155 -0
  119. package/components/QiuNotification/types.ts +14 -0
  120. package/components/QiuPage/index.vue +12 -0
  121. package/components/QiuPageHeader/index.vue +115 -0
  122. package/components/QiuPageMain/index.vue +78 -0
  123. package/components/QiuPagination/index.vue +421 -0
  124. package/components/QiuPasswordStrength/index.vue +101 -0
  125. package/components/QiuPopconfirm/index.vue +196 -0
  126. package/components/QiuPopover/index.vue +277 -0
  127. package/components/QiuProgress/index.vue +235 -0
  128. package/components/QiuQrcode/index.vue +302 -0
  129. package/components/QiuQueryForm/components/QiuQueryFormBottomPanel.vue +13 -0
  130. package/components/QiuQueryForm/components/QiuQueryFormLeftPanel.vue +37 -0
  131. package/components/QiuQueryForm/components/QiuQueryFormRightPanel.vue +37 -0
  132. package/components/QiuQueryForm/components/QiuQueryFormTopPanel.vue +13 -0
  133. package/components/QiuQueryForm/index.vue +117 -0
  134. package/components/QiuRadio/QiuRadioGroup.vue +75 -0
  135. package/components/QiuRadio/index.vue +191 -0
  136. package/components/QiuRadio/types.ts +9 -0
  137. package/components/QiuRate/index.vue +184 -0
  138. package/components/QiuRefresh/index.vue +32 -0
  139. package/components/QiuResult/index.vue +103 -0
  140. package/components/QiuRow/index.vue +60 -0
  141. package/components/QiuRow/types.ts +5 -0
  142. package/components/QiuScrollbar/index.vue +107 -0
  143. package/components/QiuSearchBar/index.vue +154 -0
  144. package/components/QiuSegmented/index.vue +120 -0
  145. package/components/QiuSelect/QiuOption.vue +93 -0
  146. package/components/QiuSelect/index.vue +452 -0
  147. package/components/QiuSelect/types.ts +15 -0
  148. package/components/QiuSkeleton/index.vue +78 -0
  149. package/components/QiuSlider/index.vue +266 -0
  150. package/components/QiuSpace/index.vue +95 -0
  151. package/components/QiuSparkline/index.vue +92 -0
  152. package/components/QiuStatistic/index.vue +4 -0
  153. package/components/QiuStatistics/index.vue +123 -0
  154. package/components/QiuStep/index.vue +220 -0
  155. package/components/QiuSteps/context.ts +25 -0
  156. package/components/QiuSteps/index.vue +84 -0
  157. package/components/QiuSwitch/index.vue +145 -0
  158. package/components/QiuTabBar/index.vue +218 -0
  159. package/components/QiuTabBar/types.ts +19 -0
  160. package/components/QiuTabPane/index.vue +82 -0
  161. package/components/QiuTable/columns.ts +16 -0
  162. package/components/QiuTable/export.ts +102 -0
  163. package/components/QiuTable/index.ts +24 -0
  164. package/components/QiuTable/index.vue +3503 -0
  165. package/components/QiuTable/registry.ts +75 -0
  166. package/components/QiuTable/styles/table.scss +1230 -0
  167. package/components/QiuTable/types.ts +413 -0
  168. package/components/QiuTable/useArea.ts +202 -0
  169. package/components/QiuTable/useColumns.ts +325 -0
  170. package/components/QiuTable/useEdit.ts +136 -0
  171. package/components/QiuTable/useExtras.ts +115 -0
  172. package/components/QiuTable/useHistory.ts +77 -0
  173. package/components/QiuTable/useMerge.ts +105 -0
  174. package/components/QiuTable/useResize.ts +86 -0
  175. package/components/QiuTable/useScrollSync.ts +152 -0
  176. package/components/QiuTable/useVirtual.ts +97 -0
  177. package/components/QiuTable/utils.ts +165 -0
  178. package/components/QiuTableColumn/index.vue +101 -0
  179. package/components/QiuTag/index.vue +143 -0
  180. package/components/QiuText/index.vue +99 -0
  181. package/components/QiuTime/index.vue +548 -0
  182. package/components/QiuTimeAgo/index.vue +103 -0
  183. package/components/QiuTimeline/index.vue +54 -0
  184. package/components/QiuTimelineItem/index.vue +140 -0
  185. package/components/QiuTips/index.vue +323 -0
  186. package/components/QiuTooltip/index.vue +237 -0
  187. package/components/QiuTransfer/index.vue +277 -0
  188. package/components/QiuTree/QiuTreeNode.vue +146 -0
  189. package/components/QiuTree/index.vue +143 -0
  190. package/components/QiuTree/types.ts +30 -0
  191. package/components/QiuTreeSelect/index.vue +259 -0
  192. package/components/QiuTrend/index.vue +92 -0
  193. package/components/QiuUpload/index.vue +628 -0
  194. package/components/QiuUploadCrop/index.vue +1267 -0
  195. package/components/QiuWatermark/index.vue +121 -0
  196. package/components/useBodyScrollLock.ts +28 -0
  197. package/dist/components/QiuAnchor/context.d.ts +15 -0
  198. package/dist/components/QiuAnchorLink/index.vue.d.ts +23 -0
  199. package/dist/components/QiuBadge/api/index.d.ts +110 -0
  200. package/dist/components/QiuBadge/components/BadgeImagePickerDialog.vue.d.ts +16 -0
  201. package/dist/components/QiuBadge/components/BadgeLibraryManagerDialog.vue.d.ts +9 -0
  202. package/dist/components/QiuBadge/components/BadgeLibraryPanel.vue.d.ts +5 -0
  203. package/dist/components/QiuBadge/composables/useTableHostHeight.d.ts +7 -0
  204. package/dist/components/QiuBadge/index.d.ts +18 -0
  205. package/dist/components/QiuBadge/shared/BadgeTemplateRenderer.vue.d.ts +14 -0
  206. package/dist/components/QiuBadge/shared/assetUrl.d.ts +1 -0
  207. package/dist/components/QiuBadge/shared/badgeTemplate.d.ts +132 -0
  208. package/dist/components/QiuBadge/utils/chinaAreaData.d.ts +9 -0
  209. package/dist/components/QiuBadge/utils/hostRegion.d.ts +3 -0
  210. package/dist/components/QiuBadge/utils/pca-code.json.d.ts +3 -0
  211. package/dist/components/QiuBadge/utils/pdfFromElement.d.ts +14 -0
  212. package/dist/components/QiuBadge/views/BadgeLibraryView.vue.d.ts +2 -0
  213. package/dist/components/QiuBadge/views/BadgeManageView.vue.d.ts +7 -0
  214. package/dist/components/QiuBadge/views/BadgeTemplateListView.vue.d.ts +4 -0
  215. package/dist/components/QiuBadge/views/DeskLabelTemplateListView.vue.d.ts +4 -0
  216. package/dist/components/QiuBadge/views/DeskLabelView.vue.d.ts +4 -0
  217. package/dist/components/QiuButton/index.vue.d.ts +52 -0
  218. package/dist/components/QiuCanvasKit/QiuCanvasEditor.vue.d.ts +24 -0
  219. package/dist/components/QiuCanvasKit/QiuCanvasRenderer.vue.d.ts +13 -0
  220. package/dist/components/QiuCanvasKit/assetUrl.d.ts +7 -0
  221. package/dist/components/QiuCanvasKit/components/DataModulesPanel.vue.d.ts +23 -0
  222. package/dist/components/QiuCanvasKit/export/html.d.ts +12 -0
  223. package/dist/components/QiuCanvasKit/export/pdf.d.ts +9 -0
  224. package/dist/components/QiuCanvasKit/export/png.d.ts +8 -0
  225. package/dist/components/QiuCanvasKit/index.d.ts +19 -0
  226. package/dist/components/QiuCanvasKit/modules/badgeCompat.d.ts +8 -0
  227. package/dist/components/QiuCanvasKit/modules/dataRegistry.d.ts +23 -0
  228. package/dist/components/QiuCanvasKit/modules/merge.d.ts +12 -0
  229. package/dist/components/QiuCanvasKit/presets/badge.d.ts +12 -0
  230. package/dist/components/QiuCanvasKit/presets/banner.d.ts +4 -0
  231. package/dist/components/QiuCanvasKit/types.d.ts +119 -0
  232. package/dist/components/QiuCarousel/context.d.ts +13 -0
  233. package/dist/components/QiuCarouselItem/index.vue.d.ts +20 -0
  234. package/dist/components/QiuCascader/types.d.ts +25 -0
  235. package/dist/components/QiuCheckbox/QiuCheckboxGroup.vue.d.ts +33 -0
  236. package/dist/components/QiuCheckbox/index.vue.d.ts +38 -0
  237. package/dist/components/QiuCheckbox/types.d.ts +7 -0
  238. package/dist/components/QiuCode/index.vue.d.ts +15 -0
  239. package/dist/components/QiuCollapse/context.d.ts +8 -0
  240. package/dist/components/QiuCollapseItem/index.vue.d.ts +30 -0
  241. package/dist/components/QiuColorField/index.vue.d.ts +23 -0
  242. package/dist/components/QiuColorPicker/index.vue.d.ts +21 -0
  243. package/dist/components/QiuCombobox/index.vue.d.ts +54 -0
  244. package/dist/components/QiuContextMenu/index.vue.d.ts +46 -0
  245. package/dist/components/QiuDescriptions/context.d.ts +16 -0
  246. package/dist/components/QiuDescriptionsItem/index.vue.d.ts +25 -0
  247. package/dist/components/QiuDigitalCard/index.vue.d.ts +45 -0
  248. package/dist/components/QiuDropdown/QiuDropdownItem.vue.d.ts +30 -0
  249. package/dist/components/QiuDropdown/QiuDropdownMenu.vue.d.ts +17 -0
  250. package/dist/components/QiuDropdown/context.d.ts +7 -0
  251. package/dist/components/QiuDropdown/index.vue.d.ts +46 -0
  252. package/dist/components/QiuForm/types.d.ts +31 -0
  253. package/dist/components/QiuHoverCard/index.vue.d.ts +44 -0
  254. package/dist/components/QiuIcon/index.vue.d.ts +18 -0
  255. package/dist/components/QiuIconPicker/iconify.libraries.d.ts +18 -0
  256. package/dist/components/QiuIconPicker/icons.catalog.d.ts +12 -0
  257. package/dist/components/QiuInput/index.vue.d.ts +71 -0
  258. package/dist/components/QiuInputNumber/index.vue.d.ts +38 -0
  259. package/dist/components/QiuInputOtp/index.vue.d.ts +28 -0
  260. package/dist/components/QiuKbd/index.vue.d.ts +22 -0
  261. package/dist/components/QiuLayoutContainer/index.vue.d.ts +29 -0
  262. package/dist/components/QiuLinkPreview/index.vue.d.ts +43 -0
  263. package/dist/components/QiuLoading/index.d.ts +26 -0
  264. package/dist/components/QiuLoading/spinner.vue.d.ts +14 -0
  265. package/dist/components/QiuLoading/types.d.ts +2 -0
  266. package/dist/components/QiuMention/index.vue.d.ts +35 -0
  267. package/dist/components/QiuMenu/QiuMenuRoot.vue.d.ts +36 -0
  268. package/dist/components/QiuMenu/context.d.ts +19 -0
  269. package/dist/components/QiuMenuNav/QiuMenuNavItem.vue.d.ts +26 -0
  270. package/dist/components/QiuMenuNav/QiuMenuNavSub.vue.d.ts +25 -0
  271. package/dist/components/QiuMenuNav/context.d.ts +12 -0
  272. package/dist/components/QiuMenuNav/index.vue.d.ts +35 -0
  273. package/dist/components/QiuMsg/QiuMsgItem.vue.d.ts +15 -0
  274. package/dist/components/QiuMsg/index.d.ts +30 -0
  275. package/dist/components/QiuMsg/types.d.ts +12 -0
  276. package/dist/components/QiuMsgBox/index.d.ts +14 -0
  277. package/dist/components/QiuNotification/QiuNotificationItem.vue.d.ts +16 -0
  278. package/dist/components/QiuNotification/index.d.ts +30 -0
  279. package/dist/components/QiuNotification/types.d.ts +12 -0
  280. package/dist/components/QiuPageMain/index.vue.d.ts +27 -0
  281. package/dist/components/QiuPagination/index.vue.d.ts +44 -0
  282. package/dist/components/QiuPasswordStrength/index.vue.d.ts +9 -0
  283. package/dist/components/QiuQrcode/index.vue.d.ts +20 -0
  284. package/dist/components/QiuRadio/QiuRadioGroup.vue.d.ts +33 -0
  285. package/dist/components/QiuRadio/types.d.ts +8 -0
  286. package/dist/components/QiuRow/types.d.ts +4 -0
  287. package/dist/components/QiuSearchBar/index.vue.d.ts +38 -0
  288. package/dist/components/QiuSelect/QiuOption.vue.d.ts +24 -0
  289. package/dist/components/QiuSelect/index.vue.d.ts +52 -0
  290. package/dist/components/QiuSelect/types.d.ts +13 -0
  291. package/dist/components/QiuSparkline/index.vue.d.ts +18 -0
  292. package/dist/components/QiuStep/index.vue.d.ts +31 -0
  293. package/dist/components/QiuSteps/context.d.ts +21 -0
  294. package/dist/components/QiuSwitch/index.vue.d.ts +25 -0
  295. package/dist/components/QiuTabBar/index.vue.d.ts +32 -0
  296. package/dist/components/QiuTabBar/types.d.ts +16 -0
  297. package/dist/components/QiuTabPane/index.vue.d.ts +25 -0
  298. package/dist/components/QiuTable/columns.d.ts +1 -0
  299. package/dist/components/QiuTable/export.d.ts +18 -0
  300. package/dist/components/QiuTable/index.d.ts +3 -0
  301. package/dist/components/QiuTable/index.vue.d.ts +322 -0
  302. package/dist/components/QiuTable/registry.d.ts +39 -0
  303. package/dist/components/QiuTable/types.d.ts +353 -0
  304. package/dist/components/QiuTable/useArea.d.ts +51 -0
  305. package/dist/components/QiuTable/useColumns.d.ts +67 -0
  306. package/dist/components/QiuTable/useEdit.d.ts +36 -0
  307. package/dist/components/QiuTable/useExtras.d.ts +38 -0
  308. package/dist/components/QiuTable/useHistory.d.ts +44 -0
  309. package/dist/components/QiuTable/useMerge.d.ts +28 -0
  310. package/dist/components/QiuTable/useResize.d.ts +19 -0
  311. package/dist/components/QiuTable/useScrollSync.d.ts +25 -0
  312. package/dist/components/QiuTable/useVirtual.d.ts +30 -0
  313. package/dist/components/QiuTable/utils.d.ts +54 -0
  314. package/dist/components/QiuTime/index.vue.d.ts +43 -0
  315. package/dist/components/QiuTimeAgo/index.vue.d.ts +35 -0
  316. package/dist/components/QiuTimelineItem/index.vue.d.ts +35 -0
  317. package/dist/components/QiuTooltip/index.vue.d.ts +38 -0
  318. package/dist/components/QiuTree/types.d.ts +13 -0
  319. package/dist/components/QiuTrend/index.vue.d.ts +34 -0
  320. package/dist/components/QiuUpload/index.vue.d.ts +86 -0
  321. package/dist/components/QiuUploadCrop/index.vue.d.ts +136 -0
  322. package/dist/components/useBodyScrollLock.d.ts +4 -0
  323. package/dist/foucui.css +1 -0
  324. package/dist/foucui.js +26509 -0
  325. package/dist/foucui.umd.cjs +125 -0
  326. package/dist/index.d.ts +46 -0
  327. package/dist/src/bridge/@/api/media.d.ts +7 -0
  328. package/dist/src/bridge/@/api/notice.d.ts +5 -0
  329. package/dist/src/bridge/@/config/index.d.ts +29 -0
  330. package/dist/src/bridge/@/config/media.config.d.ts +15 -0
  331. package/dist/src/bridge/@/config/security.config.d.ts +7 -0
  332. package/dist/src/bridge/@/i18n/index.d.ts +7 -0
  333. package/dist/src/bridge/@/store/modules/bing.d.ts +3 -0
  334. package/dist/src/bridge/@/store/modules/errorLog.d.ts +3 -0
  335. package/dist/src/bridge/@/store/modules/media.d.ts +4 -0
  336. package/dist/src/bridge/@/store/modules/routes.d.ts +3 -0
  337. package/dist/src/bridge/@/store/modules/settings.d.ts +3 -0
  338. package/dist/src/bridge/@/store/modules/tabs.d.ts +3 -0
  339. package/dist/src/bridge/@/store/modules/user.d.ts +3 -0
  340. package/dist/src/bridge/@/utils/convertToCamelCase.d.ts +2 -0
  341. package/dist/src/bridge/@/utils/index.d.ts +5 -0
  342. package/dist/src/bridge/@/utils/pageTitle.d.ts +1 -0
  343. package/dist/src/bridge/@/utils/routes.d.ts +11 -0
  344. package/dist/src/bridge/@/utils/validate.d.ts +13 -0
  345. package/dist/src/bridge/@qiu/plugins/shortcuts.d.ts +2 -0
  346. package/dist/src/i18n.d.ts +2 -0
  347. package/package.json +83 -0
  348. package/plugins/qiu.ts +83 -0
  349. package/plugins/shortcuts.ts +69 -0
  350. package/src/bridge/@/api/media.ts +8 -0
  351. package/src/bridge/@/api/notice.ts +5 -0
  352. package/src/bridge/@/config/index.ts +38 -0
  353. package/src/bridge/@/config/media.config.ts +37 -0
  354. package/src/bridge/@/config/security.config.ts +8 -0
  355. package/src/bridge/@/i18n/index.ts +6 -0
  356. package/src/bridge/@/store/modules/bing.ts +9 -0
  357. package/src/bridge/@/store/modules/errorLog.ts +9 -0
  358. package/src/bridge/@/store/modules/media.ts +10 -0
  359. package/src/bridge/@/store/modules/routes.ts +10 -0
  360. package/src/bridge/@/store/modules/settings.ts +9 -0
  361. package/src/bridge/@/store/modules/tabs.ts +9 -0
  362. package/src/bridge/@/store/modules/user.ts +9 -0
  363. package/src/bridge/@/utils/convertToCamelCase.ts +11 -0
  364. package/src/bridge/@/utils/index.ts +9 -0
  365. package/src/bridge/@/utils/pageTitle.ts +4 -0
  366. package/src/bridge/@/utils/routes.ts +14 -0
  367. package/src/bridge/@/utils/validate.ts +17 -0
  368. package/src/bridge/@qiu/plugins/shortcuts.ts +3 -0
  369. package/src/i18n.ts +8 -0
  370. package/src/icons/qiu-logo.svg +1 -0
  371. package/styles/dark.scss +194 -0
  372. package/styles/normalize.css +349 -0
  373. package/styles/plain.scss +423 -0
  374. package/styles/qiu-tokens.scss +40 -0
  375. package/styles/qiu.scss +1149 -0
  376. package/styles/technology.scss +452 -0
  377. package/styles/var.scss +382 -0
  378. package/styles/variables.scss +77 -0
@@ -0,0 +1,1230 @@
1
+ /* QiuTable — 对齐 vxe-table 视觉 token(方案 A 自研,无 vxe 运行时) */
2
+ .qiu-table {
3
+ --qiu-table-header-bg: #f8f8f9;
4
+ --qiu-table-border-color: #e8eaec;
5
+ --qiu-table-row-height: 48px;
6
+ --qiu-table-cell-padding-x: 8px;
7
+ --qiu-table-footer-bg: #fff;
8
+ --qiu-table-font-color: #606266;
9
+ --qiu-table-header-font-color: #606266;
10
+
11
+ display: flex;
12
+ flex: 1 1 0;
13
+ flex-direction: column;
14
+ width: 100%;
15
+ min-width: 0;
16
+ min-height: 0;
17
+ font-size: 14px;
18
+ color: var(--qiu-table-font-color);
19
+ background: #fff;
20
+
21
+ &--small {
22
+ --qiu-table-row-height: 40px;
23
+ font-size: 12px;
24
+ }
25
+
26
+ &--large {
27
+ --qiu-table-row-height: 52px;
28
+ font-size: 15px;
29
+ }
30
+
31
+ &--round {
32
+ border-radius: 4px;
33
+ overflow: hidden;
34
+ }
35
+
36
+ &--fullscreen {
37
+ position: fixed !important;
38
+ inset: 0;
39
+ z-index: 2000;
40
+ width: 100vw !important;
41
+ height: 100vh !important;
42
+ margin: 0 !important;
43
+ padding: 12px;
44
+ background: #fff;
45
+ box-sizing: border-box;
46
+
47
+ > .qiu-table__main {
48
+ flex: 1 1 0;
49
+ width: 100%;
50
+ height: 0;
51
+ min-width: 0;
52
+ min-height: 0;
53
+ }
54
+
55
+ .qiu-table__body-wrap {
56
+ flex: 1 1 0;
57
+ width: 100%;
58
+ height: 0;
59
+ min-width: 0;
60
+ min-height: 0;
61
+ overflow: auto;
62
+ }
63
+ }
64
+
65
+ &__toolbar {
66
+ display: flex;
67
+ flex-shrink: 0;
68
+ gap: 8px;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ padding: 8px 0;
72
+ }
73
+
74
+ &__toolbar-left,
75
+ &__toolbar-center,
76
+ &__toolbar-right {
77
+ display: flex;
78
+ flex-wrap: wrap;
79
+ gap: 8px;
80
+ align-items: center;
81
+ }
82
+
83
+ &__toolbar-center {
84
+ flex: 1;
85
+ justify-content: center;
86
+ }
87
+
88
+ &__toolbar-left,
89
+ &__toolbar-right {
90
+ flex: 1;
91
+ }
92
+
93
+ &__toolbar-right {
94
+ justify-content: flex-end;
95
+ }
96
+
97
+ &__toolbar-builtin {
98
+ display: inline-flex;
99
+ gap: 4px;
100
+ align-items: center;
101
+ }
102
+
103
+ &__toolbar-dropdown {
104
+ display: inline-flex;
105
+ }
106
+
107
+ &__toolbar-icon {
108
+ display: inline-flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ width: 28px;
112
+ height: 28px;
113
+ padding: 0;
114
+ border: none;
115
+ border-radius: 4px;
116
+ background: transparent;
117
+ color: #606266;
118
+ cursor: pointer;
119
+
120
+ &:hover {
121
+ background: #f5f7fa;
122
+ color: var(--qiu-color-primary, #0f766e);
123
+ }
124
+ }
125
+
126
+ /* height/maxHeight:强制 flex 子项吃剩余空间,否则内容撑开 → 无滚动条、虚拟滚动失效 */
127
+ &--fixed-height {
128
+ overflow: hidden;
129
+
130
+ /* main 作为固定高度的承载层:自身吃满剩余空间,内部内容(caption/toolbar/header/body)按比例分配 */
131
+ > .qiu-table__main {
132
+ flex: 1 1 0;
133
+ width: 100%;
134
+ height: 0;
135
+ min-width: 0;
136
+ min-height: 0;
137
+ }
138
+
139
+ /* body-wrap 必须真正滚动,数据不足时绝不反向撑开父级高度 */
140
+ .qiu-table__body-wrap {
141
+ flex: 1 1 0;
142
+ width: 100%;
143
+ height: 0;
144
+ min-width: 0;
145
+ min-height: 0;
146
+ overflow: auto;
147
+ }
148
+ }
149
+
150
+ &__main {
151
+ position: relative;
152
+ display: flex;
153
+ flex: 0 1 auto;
154
+ flex-direction: column;
155
+ width: 100%;
156
+ min-width: 0;
157
+ min-height: 0;
158
+ overflow: hidden;
159
+ border: 1px solid transparent;
160
+ }
161
+
162
+ &--border &__main,
163
+ &--border-full &__main,
164
+ &--border-outer &__main {
165
+ border-color: var(--qiu-table-border-color);
166
+ }
167
+
168
+ &--border-inner &__main {
169
+ border-color: transparent;
170
+ }
171
+
172
+ &--border-none &__main {
173
+ border-color: transparent;
174
+ }
175
+
176
+ /* 使用 QiuLoading,仅抬高层级覆盖表格主区 */
177
+ &__loading.qiu-loading {
178
+ z-index: 20;
179
+ }
180
+
181
+ &__resizer {
182
+ position: absolute;
183
+ top: 0;
184
+ right: 0;
185
+ z-index: 2;
186
+ width: 6px;
187
+ height: 100%;
188
+ cursor: col-resize;
189
+
190
+ &::after {
191
+ content: '';
192
+ position: absolute;
193
+ top: 25%;
194
+ right: 2px;
195
+ width: 1px;
196
+ height: 50%;
197
+ background: transparent;
198
+ }
199
+
200
+ &:hover::after {
201
+ background: var(--qiu-color-primary, #0f766e);
202
+ }
203
+ }
204
+
205
+ &__cell--header {
206
+ /* resizer 需要相对定位;固定列另行覆盖为 sticky */
207
+ position: relative;
208
+ }
209
+
210
+ &__edit-icon {
211
+ flex-shrink: 0;
212
+ margin-right: 2px;
213
+ font-size: 13px;
214
+ color: #909399;
215
+ transform: none;
216
+ }
217
+
218
+ &__row.is-current {
219
+ background: #dceeff !important;
220
+ }
221
+
222
+ &__row.is-current &__cell--fixed-left,
223
+ &__row.is-current &__cell--fixed-right {
224
+ background: #dceeff !important;
225
+ }
226
+
227
+ &--hover &__row:hover {
228
+ background: #f0f7ff;
229
+ }
230
+
231
+ &--hover &__row.is-current:hover {
232
+ background: #d0e7ff !important;
233
+ }
234
+
235
+ &__cell.is-area-cell {
236
+ background: rgba(15, 118, 110, 0.08) !important;
237
+ }
238
+
239
+ &__cell.is-active-cell {
240
+ outline: 2px solid var(--qiu-color-primary, #0f766e);
241
+ outline-offset: -2px;
242
+ position: relative;
243
+ z-index: 1;
244
+ }
245
+
246
+ &--border-outer &__cell {
247
+ border-right: none;
248
+ border-bottom: 1px solid var(--qiu-table-border-color);
249
+ }
250
+
251
+ &--border-inner &__cell {
252
+ border-right: 1px solid var(--qiu-table-border-color);
253
+ border-bottom: 1px solid var(--qiu-table-border-color);
254
+ }
255
+
256
+ /* 表头/表尾对齐靠 useScrollSync:paddingRight + 强制与 body table 同像素宽并同步 col */
257
+ &__header-wrap,
258
+ &__footer-wrap {
259
+ position: relative;
260
+ box-sizing: border-box;
261
+ flex-shrink: 0;
262
+ width: 100%;
263
+ min-width: 0;
264
+ overflow: hidden;
265
+ background: var(--qiu-table-header-bg);
266
+ }
267
+
268
+ &__footer-wrap {
269
+ background: var(--qiu-table-footer-bg);
270
+ }
271
+
272
+ /*
273
+ * 有纵向滚动条时 header/footer 右侧 padding 让位,末列又去掉 border-right,
274
+ * 会在末列与滚动条之间缺一截竖线。在 padding 内侧补回。
275
+ */
276
+ &--scroll-y {
277
+ &.qiu-table--border,
278
+ &.qiu-table--border-full,
279
+ &.qiu-table--border-outer {
280
+ .qiu-table__header-wrap,
281
+ .qiu-table__footer-wrap {
282
+ &::after {
283
+ content: '';
284
+ position: absolute;
285
+ top: 0;
286
+ right: var(--qiu-table-v-scrollbar, 0px);
287
+ bottom: 0;
288
+ width: 1px;
289
+ background: var(--qiu-table-border-color);
290
+ pointer-events: none;
291
+ z-index: 2;
292
+ }
293
+ }
294
+ }
295
+ }
296
+
297
+ &__body-wrap {
298
+ flex: 1;
299
+ width: 100%;
300
+ min-width: 0;
301
+ min-height: 0;
302
+ overflow: auto;
303
+ background: #fff;
304
+ scrollbar-gutter: stable;
305
+ scrollbar-width: thin;
306
+ scrollbar-color: #c0c4cc transparent;
307
+
308
+ &::-webkit-scrollbar {
309
+ width: 8px;
310
+ height: 8px;
311
+ }
312
+
313
+ &::-webkit-scrollbar-track {
314
+ background: #f5f7fa;
315
+ border-radius: 4px;
316
+ }
317
+
318
+ &::-webkit-scrollbar-thumb {
319
+ background: #c0c4cc;
320
+ border-radius: 4px;
321
+ }
322
+
323
+ &::-webkit-scrollbar-thumb:hover {
324
+ background: #a8abb2;
325
+ }
326
+
327
+ &::-webkit-scrollbar-corner {
328
+ background: transparent;
329
+ }
330
+ }
331
+
332
+ &__inner {
333
+ /* 窄于容器时 width:100% 铺满;宽于容器时 inline minWidth 撑开触发横向滚动 */
334
+ width: 100%;
335
+ max-width: none;
336
+ border-collapse: separate;
337
+ border-spacing: 0;
338
+ table-layout: fixed;
339
+ background: #fff;
340
+
341
+ /* 行高落在 tr 上,便于 td/内层用 height:100% 垂直居中 */
342
+ > thead > tr,
343
+ > tbody > tr {
344
+ height: var(--qiu-table-row-height);
345
+ }
346
+ }
347
+
348
+ &__header-table {
349
+ background: var(--qiu-table-header-bg);
350
+ }
351
+
352
+ &--border &__cell,
353
+ &--border-full &__cell {
354
+ border-right: 1px solid var(--qiu-table-border-color);
355
+ border-bottom: 1px solid var(--qiu-table-border-color);
356
+ }
357
+
358
+ &--border &__cell:last-child,
359
+ &--border-full &__cell:last-child {
360
+ border-right: none;
361
+ }
362
+
363
+ &__cell {
364
+ position: relative;
365
+ box-sizing: border-box;
366
+ height: var(--qiu-table-row-height);
367
+ max-height: var(--qiu-table-row-height);
368
+ padding: 0;
369
+ overflow: hidden;
370
+ vertical-align: middle;
371
+ text-align: left;
372
+ background: inherit;
373
+
374
+ &.is-align-left {
375
+ text-align: left;
376
+ }
377
+
378
+ &.is-align-center {
379
+ text-align: center;
380
+ }
381
+
382
+ &.is-align-right {
383
+ text-align: right;
384
+ }
385
+
386
+ &--header {
387
+ font-weight: 700;
388
+ color: var(--qiu-table-header-font-color);
389
+ white-space: nowrap;
390
+ user-select: none;
391
+ background: var(--qiu-table-header-bg);
392
+ max-height: none;
393
+ overflow: visible;
394
+ }
395
+
396
+ &--footer {
397
+ font-weight: 600;
398
+ background: var(--qiu-table-footer-bg);
399
+ max-height: none;
400
+ }
401
+
402
+ &--expand-content,
403
+ &--empty {
404
+ height: auto;
405
+ max-height: none;
406
+ overflow: visible;
407
+
408
+ .qiu-table__cell-inner {
409
+ position: relative;
410
+ width: 100%;
411
+ height: auto;
412
+ min-height: 0;
413
+ max-height: none;
414
+ }
415
+ }
416
+
417
+ &--sortable {
418
+ cursor: pointer;
419
+ }
420
+
421
+ &--selection,
422
+ &--index {
423
+ text-align: center;
424
+ width: 48px;
425
+ }
426
+
427
+ &--selection .qiu-checkbox {
428
+ height: auto;
429
+ margin-right: 0;
430
+ }
431
+
432
+ &--index {
433
+ width: 55px;
434
+ }
435
+
436
+ &--empty {
437
+ height: auto;
438
+ padding: 32px 12px;
439
+ text-align: center;
440
+ color: #909399;
441
+ }
442
+
443
+ &--fixed-left,
444
+ &--fixed-right {
445
+ /* 必须压过 .qiu-table__cell / .qiu-table__cell--header 的 position:relative */
446
+ position: sticky !important;
447
+ z-index: 2;
448
+ overflow: visible;
449
+ background-clip: padding-box;
450
+ }
451
+
452
+ &--fixed-left {
453
+ left: 0;
454
+ }
455
+
456
+ &--fixed-right {
457
+ right: 0;
458
+ }
459
+
460
+ &--fixed-left-last::after,
461
+ &--fixed-right-first::before {
462
+ position: absolute;
463
+ top: 0;
464
+ bottom: 0;
465
+ width: 10px;
466
+ pointer-events: none;
467
+ content: '';
468
+ }
469
+
470
+ /* 仅当表格出现横向滚动条时才显示 fixed 列阴影 */
471
+ &--fixed-left-last::after {
472
+ right: -10px;
473
+ box-shadow: none;
474
+ }
475
+
476
+ &--fixed-right-first::before {
477
+ left: -10px;
478
+ box-shadow: none;
479
+ }
480
+
481
+ /* 编辑态不改 padding/行高 —— 避免整表抖动 */
482
+ &.is-editing:not(.is-input-fill) .qiu-table__cell-inner {
483
+ /* keep same padding */
484
+ }
485
+
486
+ &.is-input-fill {
487
+ z-index: 3;
488
+ overflow: hidden;
489
+ }
490
+ }
491
+
492
+ &--scroll-x {
493
+ .qiu-table__cell--fixed-left-last::after {
494
+ box-shadow: inset 10px 0 8px -8px rgb(0 0 0 / 15%);
495
+ }
496
+
497
+ .qiu-table__cell--fixed-right-first::before {
498
+ box-shadow: inset -10px 0 8px -8px rgb(0 0 0 / 15%);
499
+ }
500
+ }
501
+
502
+ &__header-table &__cell--fixed-left,
503
+ &__header-table &__cell--fixed-right,
504
+ &__footer-table &__cell--fixed-left,
505
+ &__footer-table &__cell--fixed-right {
506
+ z-index: 4;
507
+ }
508
+
509
+ &__header-table &__cell--fixed-left,
510
+ &__header-table &__cell--fixed-right {
511
+ background: var(--qiu-table-header-bg);
512
+ }
513
+
514
+ &__footer-table &__cell--fixed-left,
515
+ &__footer-table &__cell--fixed-right {
516
+ background: var(--qiu-table-footer-bg);
517
+ }
518
+
519
+ &__cell-inner {
520
+ /* inline-flex 才能被 td 的 vertical-align: middle 垂直居中;块级 flex 会顶对齐 */
521
+ display: inline-flex;
522
+ gap: 4px;
523
+ align-items: center;
524
+ justify-content: flex-start;
525
+ box-sizing: border-box;
526
+ width: 100%;
527
+ max-width: 100%;
528
+ height: auto;
529
+ min-height: 0;
530
+ max-height: none;
531
+ padding: 0 var(--qiu-table-cell-padding-x);
532
+ margin: 0;
533
+ overflow: hidden;
534
+ line-height: 1.25;
535
+ vertical-align: middle;
536
+ }
537
+
538
+ &__cell.is-align-left &__cell-inner {
539
+ justify-content: flex-start;
540
+ }
541
+
542
+ &__cell.is-align-center &__cell-inner {
543
+ justify-content: center;
544
+ }
545
+
546
+ &__cell.is-align-right &__cell-inner {
547
+ justify-content: flex-end;
548
+ }
549
+
550
+ &__cell--ellipsis &__cell-inner:not(.qiu-table__cell-inner--input-fill) {
551
+ text-overflow: ellipsis;
552
+ white-space: nowrap;
553
+ }
554
+
555
+ /* 仅 input:在单元格内铺满 */
556
+ &__cell-inner--input-fill {
557
+ position: relative;
558
+ z-index: 2;
559
+ display: flex;
560
+ align-items: stretch;
561
+ width: 100%;
562
+ height: 100%;
563
+ min-height: calc(var(--qiu-table-row-height) - 2px);
564
+ max-height: none;
565
+ padding: 0 !important;
566
+ overflow: hidden;
567
+ vertical-align: middle;
568
+ background: #fff;
569
+ }
570
+
571
+ &__editor-host {
572
+ flex: 1;
573
+ min-width: 0;
574
+ max-width: 100%;
575
+ height: 100%;
576
+ }
577
+
578
+ &__editor-host--input-fill {
579
+ display: flex;
580
+ flex: 1;
581
+ align-items: stretch;
582
+ width: 100%;
583
+ height: 100%;
584
+ min-height: 0;
585
+ }
586
+
587
+ &__th {
588
+ display: flex;
589
+ gap: 4px;
590
+ align-items: center;
591
+ justify-content: flex-start;
592
+ box-sizing: border-box;
593
+ width: 100%;
594
+ height: 100%;
595
+ min-height: var(--qiu-table-row-height);
596
+ max-width: 100%;
597
+ padding: 0 var(--qiu-table-cell-padding-x);
598
+ line-height: 1.25;
599
+ }
600
+
601
+ &__cell--header.is-align-left &__th {
602
+ justify-content: flex-start;
603
+ }
604
+
605
+ &__cell--header.is-align-center &__th {
606
+ justify-content: center;
607
+ }
608
+
609
+ &__cell--header.is-align-right &__th {
610
+ justify-content: flex-end;
611
+ }
612
+
613
+ &__label {
614
+ overflow: hidden;
615
+ text-overflow: ellipsis;
616
+ line-height: 1.25;
617
+ }
618
+
619
+ &__sort-num {
620
+ position: absolute;
621
+ right: -8px;
622
+ bottom: -2px;
623
+ font-size: 10px;
624
+ font-style: normal;
625
+ color: var(--qiu-color-primary, #409eff);
626
+ }
627
+
628
+ &__sort {
629
+ position: relative;
630
+ display: inline-flex;
631
+ flex-direction: column;
632
+ flex-shrink: 0;
633
+ gap: 2px;
634
+ align-items: center;
635
+ width: 10px;
636
+ color: #c0c4cc;
637
+ }
638
+
639
+ &__radio {
640
+ width: 14px;
641
+ height: 14px;
642
+ accent-color: var(--qiu-color-primary, #0f766e);
643
+ cursor: pointer;
644
+ }
645
+
646
+ &__expand-row td {
647
+ background: #fafafa;
648
+ }
649
+
650
+ &__expand-content {
651
+ padding: 12px 16px;
652
+ }
653
+
654
+ &__expand-json {
655
+ margin: 0;
656
+ font-size: 12px;
657
+ white-space: pre-wrap;
658
+ }
659
+
660
+ &__row.is-dirty > .qiu-table__cell {
661
+ box-shadow: inset 0 -2px 0 #e6a23c;
662
+ }
663
+
664
+ &__row.is-radio-checked {
665
+ background: #e6f7ff;
666
+ }
667
+
668
+ &__cell--col-drag {
669
+ cursor: move;
670
+ }
671
+
672
+ &__cell--expand,
673
+ &__cell--radio {
674
+ text-align: center;
675
+ width: 48px;
676
+ }
677
+
678
+ &__caret {
679
+ display: block;
680
+ width: 0;
681
+ height: 0;
682
+ border-style: solid;
683
+
684
+ &--up {
685
+ border-width: 0 4px 5px;
686
+ border-color: transparent transparent currentColor;
687
+ }
688
+
689
+ &--down {
690
+ border-width: 5px 4px 0;
691
+ border-color: currentColor transparent transparent;
692
+ }
693
+ }
694
+
695
+ &__sort.is-asc .qiu-table__caret--up,
696
+ &__sort.is-desc .qiu-table__caret--down {
697
+ color: var(--qiu-color-primary, #409eff);
698
+ }
699
+
700
+ &__filter-btn {
701
+ display: inline-flex;
702
+ flex-shrink: 0;
703
+ align-items: center;
704
+ justify-content: center;
705
+ width: 18px;
706
+ height: 18px;
707
+ padding: 0;
708
+ color: #c0c4cc;
709
+ cursor: pointer;
710
+ background: transparent;
711
+ border: none;
712
+ border-radius: 4px;
713
+ transition: color 0.15s ease, background 0.15s ease;
714
+
715
+ svg {
716
+ width: 12px;
717
+ height: 12px;
718
+ }
719
+
720
+ &:hover {
721
+ color: var(--qiu-color-primary, #0f766e);
722
+ background: var(--qiu-color-primary-light-9, rgb(15 118 110 / 8%));
723
+ }
724
+
725
+ &.is-active {
726
+ color: var(--qiu-color-primary, #0f766e);
727
+ background: var(--qiu-color-primary-light-9, rgb(15 118 110 / 10%));
728
+ }
729
+ }
730
+
731
+ &__row {
732
+ background: #fff;
733
+
734
+ &:hover {
735
+ background: #f5f7fa;
736
+ }
737
+
738
+ &.is-selected {
739
+ background: #e6f7ff;
740
+ }
741
+
742
+ &--striped {
743
+ background: #fafafa;
744
+ }
745
+
746
+ &--striped:hover {
747
+ background: #f5f7fa;
748
+ }
749
+ }
750
+
751
+ &__body &__cell--fixed-left,
752
+ &__body &__cell--fixed-right {
753
+ background: #fff;
754
+ }
755
+
756
+ &__body &__row--striped &__cell--fixed-left,
757
+ &__body &__row--striped &__cell--fixed-right {
758
+ background: #fafafa;
759
+ }
760
+
761
+ &__row.is-selected &__cell--fixed-left,
762
+ &__row.is-selected &__cell--fixed-right {
763
+ background: #e6f7ff;
764
+ }
765
+
766
+ &__row:hover &__cell--fixed-left,
767
+ &__row:hover &__cell--fixed-right {
768
+ background: #f5f7fa;
769
+ }
770
+
771
+ &__text {
772
+ display: block;
773
+ max-width: 100%;
774
+ overflow: hidden;
775
+ line-height: 1.25;
776
+ text-overflow: ellipsis;
777
+ white-space: nowrap;
778
+ }
779
+
780
+ &__date-input {
781
+ width: 100%;
782
+ height: 28px;
783
+ padding: 0 8px;
784
+ font-size: inherit;
785
+ border: 1px solid var(--qiu-table-border-color);
786
+ border-radius: 2px;
787
+ box-sizing: border-box;
788
+ background: #fff;
789
+ }
790
+
791
+ &__drag-handle {
792
+ display: inline-flex;
793
+ color: #909399;
794
+ cursor: grab;
795
+ }
796
+
797
+ &__tree-cell {
798
+ display: flex;
799
+ gap: 4px;
800
+ align-items: center;
801
+ width: 100%;
802
+ min-width: 0;
803
+ }
804
+
805
+ &__tree-toggle {
806
+ display: inline-flex;
807
+ width: 18px;
808
+ height: 18px;
809
+ padding: 0;
810
+ border: none;
811
+ background: transparent;
812
+ color: #909399;
813
+ cursor: pointer;
814
+ }
815
+
816
+ &__tree-placeholder {
817
+ display: inline-block;
818
+ width: 18px;
819
+ height: 18px;
820
+ }
821
+
822
+ &__pager {
823
+ display: flex;
824
+ flex-shrink: 0;
825
+ justify-content: flex-end;
826
+ padding: 8px 0 0;
827
+ }
828
+
829
+ &__import-input {
830
+ display: none;
831
+ }
832
+
833
+ &__custom-panel {
834
+ display: flex;
835
+ flex-wrap: wrap;
836
+ gap: 8px 16px;
837
+ padding: 8px 12px;
838
+ margin-bottom: 8px;
839
+ border: 1px solid var(--qiu-table-border-color);
840
+ border-radius: 4px;
841
+ background: #fafafa;
842
+ }
843
+
844
+ &__custom-item {
845
+ display: inline-flex;
846
+ gap: 6px;
847
+ align-items: center;
848
+ font-size: 12px;
849
+ color: #606266;
850
+ cursor: pointer;
851
+ }
852
+
853
+ &__export-dialog {
854
+ display: flex;
855
+ flex-direction: column;
856
+ gap: 16px;
857
+ }
858
+
859
+ &__export-section {
860
+ display: flex;
861
+ flex-direction: column;
862
+ gap: 8px;
863
+ }
864
+
865
+ &__export-label {
866
+ font-size: 13px;
867
+ font-weight: 600;
868
+ color: #303133;
869
+ }
870
+
871
+ &__export-fields {
872
+ display: flex;
873
+ flex-wrap: wrap;
874
+ gap: 8px 14px;
875
+ max-height: 220px;
876
+ padding: 10px 12px;
877
+ overflow: auto;
878
+ background: #fafafa;
879
+ border: 1px solid var(--qiu-table-border-color);
880
+ border-radius: 6px;
881
+ }
882
+
883
+ &__export-field {
884
+ display: inline-flex;
885
+ gap: 6px;
886
+ align-items: center;
887
+ min-width: 120px;
888
+ font-size: 13px;
889
+ color: #606266;
890
+ cursor: pointer;
891
+ }
892
+
893
+ &__export-formats {
894
+ display: flex;
895
+ flex-wrap: wrap;
896
+ gap: 8px;
897
+ }
898
+
899
+ &__export-format,
900
+ &__export-mode {
901
+ display: inline-flex;
902
+ gap: 6px;
903
+ align-items: center;
904
+ padding: 6px 12px;
905
+ font-size: 13px;
906
+ color: #606266;
907
+ cursor: pointer;
908
+ background: #f5f7fa;
909
+ border: 1px solid var(--qiu-table-border-color);
910
+ border-radius: 6px;
911
+
912
+ &.is-active {
913
+ color: var(--qiu-color-primary, #0f766e);
914
+ background: var(--qiu-color-primary-light-9, #e6f4f2);
915
+ border-color: var(--qiu-color-primary, #0f766e);
916
+ }
917
+
918
+ input {
919
+ margin: 0;
920
+ }
921
+ }
922
+
923
+ &__export-modes {
924
+ display: flex;
925
+ flex-wrap: wrap;
926
+ gap: 8px;
927
+ }
928
+
929
+ &__export-range {
930
+ display: flex;
931
+ gap: 8px;
932
+ align-items: center;
933
+ margin-top: 12px;
934
+ font-size: 13px;
935
+ color: var(--qiu-text-color-regular, #606266);
936
+ }
937
+
938
+ &__export-range-input {
939
+ width: 60px;
940
+ height: 28px;
941
+ padding: 0 6px;
942
+ text-align: center;
943
+ border: 1px solid var(--qiu-table-border-color);
944
+ border-radius: 4px;
945
+ outline: none;
946
+
947
+ &:focus {
948
+ border-color: var(--qiu-color-primary, #0f766e);
949
+ }
950
+ }
951
+
952
+ &__cell.is-valid-error {
953
+ box-shadow: inset 0 0 0 1px #f56c6c;
954
+ }
955
+
956
+ &__row {
957
+ height: var(--qiu-table-row-height);
958
+ }
959
+
960
+ &__virtual-pad {
961
+ height: auto;
962
+
963
+ td {
964
+ height: auto !important;
965
+ max-height: none !important;
966
+ padding: 0 !important;
967
+ border: none !important;
968
+ background: transparent !important;
969
+ vertical-align: top;
970
+ }
971
+ }
972
+
973
+ &__virtual-pad-space {
974
+ display: block;
975
+ width: 1px;
976
+ overflow: hidden;
977
+ pointer-events: none;
978
+ }
979
+
980
+ /* input 铺满:无圆角、贴满 td(盖过 QiuInput size 固定高度) */
981
+ &__cell-inner--input-fill .qiu-input,
982
+ &__cell-inner--input-fill .qiu-table__input-fill {
983
+ display: flex !important;
984
+ box-sizing: border-box;
985
+ width: 100% !important;
986
+ height: 100% !important;
987
+ min-height: 100% !important;
988
+ border: none !important;
989
+ border-radius: 0 !important;
990
+ box-shadow: inset 0 0 0 1px transparent !important;
991
+ }
992
+
993
+ &__cell-inner--input-fill .qiu-input.is-focused,
994
+ &__cell-inner--input-fill .qiu-table__input-fill.is-focused {
995
+ box-shadow: inset 0 0 0 1px var(--qiu-color-primary, #0f766e) !important;
996
+ }
997
+
998
+ &__cell-inner--input-fill .qiu-input__inner,
999
+ &__cell-inner--input-fill .qiu-input--default .qiu-input__inner,
1000
+ &__cell-inner--input-fill .qiu-input--small .qiu-input__inner,
1001
+ &__cell-inner--input-fill .qiu-input--large .qiu-input__inner {
1002
+ box-sizing: border-box;
1003
+ width: 100% !important;
1004
+ height: 100% !important;
1005
+ min-height: 100% !important;
1006
+ padding: 0 var(--qiu-table-cell-padding-x) !important;
1007
+ border: none !important;
1008
+ border-radius: 0 !important;
1009
+ box-shadow: none !important;
1010
+ line-height: normal !important;
1011
+ }
1012
+
1013
+ /* input 铺满时让 wrapper 也撑满整行,避免固定高度导致编辑器贴顶 */
1014
+ &__cell-inner--input-fill .qiu-input__wrapper {
1015
+ height: 100% !important;
1016
+ }
1017
+
1018
+ /* 非 input 编辑器:锁高度、不铺满单元格(按内容/合适宽度) */
1019
+ &__cell.is-editing:not(.is-input-fill) .qiu-select,
1020
+ &__cell.is-editing:not(.is-input-fill) .qiu-input-number,
1021
+ &__cell.is-editing:not(.is-input-fill) .qiu-table__date-input,
1022
+ &__cell.is-editing:not(.is-input-fill) .qiu-time {
1023
+ box-sizing: border-box;
1024
+ width: auto;
1025
+ max-width: 100%;
1026
+ height: calc(var(--qiu-table-row-height) - 10px) !important;
1027
+ max-height: calc(var(--qiu-table-row-height) - 10px) !important;
1028
+ }
1029
+
1030
+ &__cell.is-editing:not(.is-input-fill) .qiu-select {
1031
+ min-width: 96px;
1032
+ }
1033
+
1034
+ &__cell.is-editing:not(.is-input-fill) .qiu-time {
1035
+ min-width: 120px;
1036
+ }
1037
+
1038
+ &__cell.is-editing:not(.is-input-fill) .qiu-input-number {
1039
+ width: 110px;
1040
+ }
1041
+
1042
+ &__date-input {
1043
+ box-sizing: border-box;
1044
+ width: auto;
1045
+ min-width: 132px;
1046
+ max-width: 100%;
1047
+ height: calc(var(--qiu-table-row-height) - 10px);
1048
+ padding: 0 8px;
1049
+ font: inherit;
1050
+ color: inherit;
1051
+ background: #fff;
1052
+ border: 1px solid var(--qiu-table-border-color, #dcdfe6);
1053
+ border-radius: 4px;
1054
+ outline: none;
1055
+
1056
+ &:focus {
1057
+ border-color: var(--qiu-color-primary, #0f766e);
1058
+ }
1059
+ }
1060
+ }
1061
+
1062
+ .qiu-table__filter-mask {
1063
+ position: fixed;
1064
+ inset: 0;
1065
+ z-index: 2999;
1066
+ }
1067
+
1068
+ .qiu-table__filter-panel {
1069
+ position: fixed;
1070
+ z-index: 3000;
1071
+ box-sizing: border-box;
1072
+ width: 200px;
1073
+ overflow: hidden;
1074
+ background: var(--qiu-bg-color, #fff);
1075
+ border: 1px solid var(--qiu-border-color-light, #e4e7ed);
1076
+ border-radius: 8px;
1077
+ box-shadow: 0 6px 16px rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%);
1078
+ }
1079
+
1080
+ .qiu-table__filter-head {
1081
+ display: flex;
1082
+ gap: 8px;
1083
+ align-items: center;
1084
+ justify-content: space-between;
1085
+ padding: 10px 12px 8px;
1086
+ border-bottom: 1px solid var(--qiu-border-color-lighter, #ebeef5);
1087
+ }
1088
+
1089
+ .qiu-table__filter-title {
1090
+ font-size: 13px;
1091
+ font-weight: 600;
1092
+ color: var(--qiu-text-color-primary, #303133);
1093
+ }
1094
+
1095
+ .qiu-table__filter-checkall {
1096
+ display: inline-flex;
1097
+ align-items: center;
1098
+ font-size: 12px;
1099
+ color: var(--qiu-text-color-regular, #606266);
1100
+
1101
+ .qiu-checkbox {
1102
+ height: auto;
1103
+ margin-right: 0;
1104
+ font-size: 12px;
1105
+ }
1106
+ }
1107
+
1108
+ .qiu-table__filter-list {
1109
+ max-height: 220px;
1110
+ padding: 6px;
1111
+ overflow: auto;
1112
+ scrollbar-width: thin;
1113
+ }
1114
+
1115
+ .qiu-table__filter-item {
1116
+ display: flex;
1117
+ align-items: center;
1118
+ box-sizing: border-box;
1119
+ min-height: 32px;
1120
+ padding: 2px 8px;
1121
+ margin: 0;
1122
+ font-size: 13px;
1123
+ color: var(--qiu-text-color-regular, #606266);
1124
+ cursor: pointer;
1125
+ border-radius: 6px;
1126
+ transition: background 0.15s ease;
1127
+
1128
+ &:hover {
1129
+ background: var(--qiu-fill-color-light, #f5f7fa);
1130
+ }
1131
+
1132
+ .qiu-checkbox {
1133
+ width: 100%;
1134
+ height: auto;
1135
+ margin-right: 0;
1136
+ font-size: 13px;
1137
+ }
1138
+
1139
+ .qiu-checkbox__label {
1140
+ overflow: hidden;
1141
+ text-overflow: ellipsis;
1142
+ white-space: nowrap;
1143
+ }
1144
+ }
1145
+
1146
+ .qiu-table__filter-empty {
1147
+ padding: 20px 12px;
1148
+ font-size: 13px;
1149
+ color: var(--qiu-text-color-secondary, #909399);
1150
+ text-align: center;
1151
+ }
1152
+
1153
+ .qiu-table__filter-actions {
1154
+ display: flex;
1155
+ gap: 8px;
1156
+ align-items: center;
1157
+ justify-content: flex-end;
1158
+ padding: 8px 12px 10px;
1159
+ background: var(--qiu-fill-color-blank, #fafafa);
1160
+ border-top: 1px solid var(--qiu-border-color-lighter, #ebeef5);
1161
+ }
1162
+
1163
+ .qiu-table__filter-action {
1164
+ min-width: 56px;
1165
+ height: 28px;
1166
+ padding: 0 12px;
1167
+ font-size: 12px;
1168
+ line-height: 26px;
1169
+ color: #fff;
1170
+ cursor: pointer;
1171
+ background: var(--qiu-color-primary, #0f766e);
1172
+ border: 1px solid var(--qiu-color-primary, #0f766e);
1173
+ border-radius: 4px;
1174
+ transition: opacity 0.15s ease, background 0.15s ease, border-color 0.15s ease;
1175
+
1176
+ &:hover {
1177
+ opacity: 0.92;
1178
+ }
1179
+
1180
+ &.is-plain {
1181
+ color: var(--qiu-text-color-regular, #606266);
1182
+ background: #fff;
1183
+ border-color: var(--qiu-border-color, #dcdfe6);
1184
+
1185
+ &:hover {
1186
+ color: var(--qiu-color-primary, #0f766e);
1187
+ border-color: var(--qiu-color-primary-light-5, #79bbff);
1188
+ opacity: 1;
1189
+ }
1190
+ }
1191
+ }
1192
+
1193
+ .qiu-table__ctx-menu {
1194
+ position: fixed;
1195
+ z-index: 3000;
1196
+ min-width: 140px;
1197
+ padding: 4px 0;
1198
+ border: 1px solid #e4e7ed;
1199
+ border-radius: 4px;
1200
+ background: #fff;
1201
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
1202
+ }
1203
+
1204
+ .qiu-table__ctx-item {
1205
+ display: block;
1206
+ width: 100%;
1207
+ padding: 6px 14px;
1208
+ font-size: 13px;
1209
+ color: #606266;
1210
+ text-align: left;
1211
+ border: none;
1212
+ background: transparent;
1213
+ cursor: pointer;
1214
+
1215
+ &:hover:not(:disabled) {
1216
+ background: #f5f7fa;
1217
+ color: var(--qiu-color-primary, #0f766e);
1218
+ }
1219
+
1220
+ &:disabled {
1221
+ color: #c0c4cc;
1222
+ cursor: not-allowed;
1223
+ }
1224
+ }
1225
+
1226
+ .qiu-table__ctx-divider {
1227
+ height: 1px;
1228
+ margin: 4px 0;
1229
+ background: #ebeef5;
1230
+ }