@web-utils/component 4.0.16 → 5.0.0-beta01

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 (314) hide show
  1. package/address-input/index.mjs +76 -74
  2. package/affix/index.mjs +71 -78
  3. package/aside-menu/index.mjs +20 -31
  4. package/avatar/index.mjs +94 -82
  5. package/awesome-button/index.mjs +54 -71
  6. package/capsule-tab/index.mjs +27 -32
  7. package/card/index.mjs +86 -69
  8. package/carousel/index.mjs +45 -32
  9. package/chat/index.mjs +441 -266
  10. package/chunk-file-uploader/index.mjs +2 -103
  11. package/chunks/ChunkFileUploader.C3EA0e5t.mjs +114 -0
  12. package/chunks/EditableTree.C_IJBL5b.mjs +648 -0
  13. package/chunks/ElementBaseInfo.DyuFR6fE.mjs +209 -0
  14. package/chunks/ElementDialog.C0IjriTW.mjs +681 -0
  15. package/chunks/ElementForm.ButuYDPA.mjs +627 -0
  16. package/chunks/ElementListeners.Dg3e_dmp.mjs +656 -0
  17. package/chunks/ElementMultiInstance.Dmi79FqA.mjs +290 -0
  18. package/chunks/ElementOtherConfig.C2AddGTp.mjs +51 -0
  19. package/chunks/ElementProperties.CfV8UF7L.mjs +196 -0
  20. package/chunks/ElementTaskConfig.Bn7ycGGn.mjs +446 -0
  21. package/chunks/FlowCondition.C6PdqOAW.mjs +194 -0
  22. package/chunks/FlowDesigner.uJYFfKpR.mjs +5101 -0
  23. package/chunks/FormBlock.BEENc22F.mjs +117 -0
  24. package/chunks/FormCascader.CaM-oEhv.mjs +1226 -0
  25. package/chunks/FormInputTime.Bg3UIP8H.mjs +1773 -0
  26. package/chunks/FormItem.H9OOvNzT.mjs +90 -0
  27. package/chunks/FormItemGroup.D9eRy-cZ.mjs +147 -0
  28. package/chunks/FormSelect.CanodoAI.mjs +1472 -0
  29. package/chunks/FormSwitch.DTqdaFjv.mjs +296 -0
  30. package/chunks/FormTemp.DiI5EfgK.mjs +139 -0
  31. package/chunks/FyCurd.DMj1dMK9.mjs +2622 -0
  32. package/chunks/FyForm.vgR8ujEF.mjs +904 -0
  33. package/chunks/FyFormDesign.DEWT6LsX.mjs +5600 -0
  34. package/chunks/FyUEditor.D_rEYfll.mjs +221 -0
  35. package/chunks/FyUpload.B2QKfTxF.mjs +504 -0
  36. package/chunks/Keyboard.ItiRy7Gb.mjs +379 -0
  37. package/chunks/MonacoEditor.Bd5Kui-Y.mjs +301 -0
  38. package/chunks/PageableTable.Bujb0NUx.mjs +658 -0
  39. package/chunks/RecordVideo.B35_dLty.mjs +116 -0
  40. package/chunks/SignalAndMessage.CYVzlFuL.mjs +198 -0
  41. package/chunks/SplitPane.Dw96M0Yf.mjs +219 -0
  42. package/chunks/TableColumn.DJYkznbJ.mjs +180 -0
  43. package/chunks/TableView.DyIdIxAg.mjs +484 -0
  44. package/chunks/Toolbar.DHuXJAoG.mjs +219 -0
  45. package/chunks/UserTaskListeners.Bp-2qkHs.mjs +599 -0
  46. package/chunks/VueCron.GfjodnyM.mjs +1766 -0
  47. package/chunks/VueTreeSelect.9Ywl-I8e.mjs +1872 -0
  48. package/chunks/_plugin-vue_export-helper.7vrlOII_.mjs +8 -0
  49. package/chunks/checkbox.emIuFmnt.mjs +437 -0
  50. package/chunks/confirmable-mixin.BBil7dto.mjs +1646 -0
  51. package/chunks/core.DJv6Qrae.mjs +51 -0
  52. package/chunks/dataformat.Bfr4nOcA.mjs +144 -0
  53. package/chunks/dic.DgDfnovD.mjs +116 -0
  54. package/chunks/dictionary.5eKjWeAp.mjs +19 -0
  55. package/chunks/dictionary.DxZxP0ej.mjs +87 -0
  56. package/chunks/event.B4iwtUNO.mjs +4 -0
  57. package/chunks/event.eJ-c1Z3a.mjs +224 -0
  58. package/chunks/focus-trap.DT4GnqQI.mjs +211 -0
  59. package/chunks/form-input.D25eDRMq.mjs +34 -0
  60. package/chunks/form-item.CgmUuw_n.mjs +714 -0
  61. package/chunks/form-pick.Axem0gOO.mjs +7 -0
  62. package/chunks/form-validate.B1KPCHqN.mjs +11 -0
  63. package/chunks/icon.CbS8-322.mjs +259 -0
  64. package/chunks/init.DwpukyOB.mjs +115 -0
  65. package/chunks/input.PejnqwSH.mjs +547 -0
  66. package/chunks/install.yLcn5MLL.mjs +84 -0
  67. package/chunks/message.BCmee5N0.mjs +400 -0
  68. package/chunks/overlay.DubSnqma.mjs +122 -0
  69. package/chunks/packages.BGjydzjm.mjs +56 -0
  70. package/chunks/permission.DgEVNWlh.mjs +16 -0
  71. package/chunks/photo-swipe.BB0SJZg9.mjs +55 -0
  72. package/chunks/radio.BotKXqJr.mjs +274 -0
  73. package/chunks/scroll.CzORc5Zk.mjs +28 -0
  74. package/chunks/scrollbar.CAmrlKi9.mjs +345 -0
  75. package/chunks/slot.C6Ozd2e7.mjs +25 -0
  76. package/chunks/style.BmlGmjpO.mjs +325 -0
  77. package/chunks/sub-table-plus-props.B_lLth3j.mjs +28 -0
  78. package/chunks/tab-mixin.u0EZpx3j.mjs +70 -0
  79. package/chunks/tag.DPi-PLbb.mjs +141 -0
  80. package/chunks/teleport._VGEzK4d.mjs +22 -0
  81. package/chunks/tooltip.D50x7Rva.mjs +1926 -0
  82. package/chunks/typescript.DiWBU4nj.mjs +4 -0
  83. package/chunks/use-aria.BW7nWOl1.mjs +17 -0
  84. package/chunks/use-composition.mUaomyno.mjs +47 -0
  85. package/chunks/use-deprecated.BfDSbZS9.mjs +12 -0
  86. package/chunks/use-empty-values.Dy_r78F6.mjs +263 -0
  87. package/chunks/use-form-item.wsRjehHp.mjs +47 -0
  88. package/chunks/use-global-config.C9hs-O_x.mjs +56 -0
  89. package/chunks/use-id.CFO5NeoV.mjs +15 -0
  90. package/chunks/use-size.DxrwTUwf.mjs +18 -0
  91. package/chunks/util.B3sjVZoZ.mjs +103 -0
  92. package/chunks/util.g-WQEec9.mjs +223 -0
  93. package/chunks/utilSelf.ZED4DmCU.mjs +46 -0
  94. package/chunks/utils.Cs2fYBrT.mjs +60 -0
  95. package/chunks/utils.DsGhtCIO.mjs +14 -0
  96. package/chunks/validator.C4-z_t9p.mjs +5 -0
  97. package/chunks/vnode.D_SioRnx.mjs +14 -0
  98. package/code-mirror-editor/index.mjs +89 -88
  99. package/comment/index.mjs +62 -57
  100. package/configComponents.mjs +40 -50
  101. package/confirm-button/index.mjs +34 -46
  102. package/confirmable/index.mjs +7 -17
  103. package/context-menu/index.mjs +195 -174
  104. package/count-up/index.mjs +97 -105
  105. package/custom-scrollbar/index.mjs +91 -98
  106. package/data-box/index.mjs +64 -44
  107. package/data-card/index.mjs +60 -47
  108. package/data-card-text/index.mjs +63 -49
  109. package/data-display/index.mjs +71 -51
  110. package/data-icons/index.mjs +70 -50
  111. package/data-imgtext/index.mjs +67 -43
  112. package/data-operatext/index.mjs +51 -40
  113. package/data-panel/index.mjs +57 -44
  114. package/data-pay/index.mjs +105 -48
  115. package/data-price/index.mjs +48 -40
  116. package/data-progress/index.mjs +67 -44
  117. package/data-rotate/index.mjs +61 -44
  118. package/data-table-picker/index.mjs +119 -71
  119. package/data-tabs/index.mjs +67 -44
  120. package/dialog-form/index.mjs +139 -87
  121. package/dynamic-table/index.mjs +166 -109
  122. package/e-charts/index.mjs +174 -200
  123. package/easy-popup/index.mjs +91 -102
  124. package/editable-progress/index.mjs +112 -83
  125. package/editable-tree/index.mjs +2 -481
  126. package/element-dialog/index.mjs +2 -306
  127. package/ellipsis/index.mjs +124 -148
  128. package/empty-view/index.mjs +48 -65
  129. package/error-view/index.mjs +39 -51
  130. package/flex-column/index.mjs +32 -51
  131. package/flex-item/index.mjs +54 -64
  132. package/flex-row/index.mjs +32 -39
  133. package/flex-scroller/index.mjs +29 -30
  134. package/flow/index.mjs +240 -247
  135. package/flow-designer/index.mjs +2 -4709
  136. package/flow-node/index.mjs +56 -64
  137. package/flow-viewer/index.mjs +159 -157
  138. package/form-block/index.mjs +2 -147
  139. package/form-button/index.mjs +35 -47
  140. package/form-card/index.mjs +14 -25
  141. package/form-cascader/index.mjs +2 -115
  142. package/form-checkbox/index.mjs +89 -70
  143. package/form-checkbox-group/index.mjs +161 -113
  144. package/form-date-picker/index.mjs +155 -142
  145. package/form-holder/index.mjs +137 -109
  146. package/form-input/index.mjs +113 -86
  147. package/form-input-cron-expression/index.mjs +97 -76
  148. package/form-input-email/index.mjs +64 -51
  149. package/form-input-id-card/index.mjs +72 -54
  150. package/form-input-phone-number/index.mjs +71 -56
  151. package/form-input-tag/index.mjs +88 -61
  152. package/form-input-time/index.mjs +2 -73
  153. package/form-item/index.mjs +2 -142
  154. package/form-item-config-provider/index.mjs +46 -60
  155. package/form-item-group/index.mjs +2 -157
  156. package/form-radio-group/index.mjs +161 -121
  157. package/form-select/index.mjs +2 -179
  158. package/form-switch/index.mjs +2 -54
  159. package/form-table/index.mjs +131 -84
  160. package/form-table-plus/index.mjs +164 -108
  161. package/form-textarea/index.mjs +90 -56
  162. package/form-tree-select/index.mjs +89 -71
  163. package/form-tree-select-multiple/index.mjs +92 -77
  164. package/form-view/index.mjs +275 -207
  165. package/fy-array/index.mjs +121 -70
  166. package/fy-article/index.mjs +73 -60
  167. package/fy-cascader/index.mjs +113 -90
  168. package/fy-checkbox/index.mjs +96 -64
  169. package/fy-code/index.mjs +48 -50
  170. package/fy-curd/index.mjs +2 -1879
  171. package/fy-date/index.mjs +76 -41
  172. package/fy-draggable/index.mjs +322 -317
  173. package/fy-dynamic/index.mjs +259 -224
  174. package/fy-empty/index.mjs +35 -36
  175. package/fy-form/index.mjs +2 -640
  176. package/fy-form-design/index.mjs +2 -2852
  177. package/fy-form-design/style.css +1 -1
  178. package/fy-from/crud/zh.d.ts +1 -1
  179. package/fy-input/index.mjs +117 -97
  180. package/fy-input-color/index.mjs +77 -54
  181. package/fy-input-icon/index.mjs +129 -82
  182. package/fy-input-map/index.mjs +242 -183
  183. package/fy-input-number/index.mjs +74 -49
  184. package/fy-input-table/index.mjs +160 -105
  185. package/fy-input-tree/index.mjs +259 -178
  186. package/fy-progress/index.mjs +36 -39
  187. package/fy-radio/index.mjs +53 -37
  188. package/fy-rate/index.mjs +86 -70
  189. package/fy-select/index.mjs +224 -137
  190. package/fy-slider/index.mjs +68 -43
  191. package/fy-switch/index.mjs +67 -41
  192. package/fy-tabs/index.mjs +46 -46
  193. package/fy-time/index.mjs +81 -53
  194. package/fy-title/index.mjs +18 -27
  195. package/fy-tree/index.mjs +382 -286
  196. package/fy-u-editor/index.mjs +2 -357
  197. package/fy-upload/index.mjs +2 -421
  198. package/guide-steps/index.mjs +72 -71
  199. package/helper-function.d.ts +2 -30
  200. package/helper-function.mjs +41 -67
  201. package/highlight-j-s/index.mjs +50 -59
  202. package/icon-card/index.mjs +34 -36
  203. package/icon-temp/index.mjs +27 -27
  204. package/iframe-window/index.mjs +39 -32
  205. package/image-cropper/index.mjs +171 -73
  206. package/image-preview/index.mjs +187 -116
  207. package/image-viewer/index.mjs +69 -66
  208. package/index.d.ts +3 -9
  209. package/index.mjs +174 -489
  210. package/input-number-range/index.mjs +78 -58
  211. package/j-s-x-component/index.mjs +13 -15
  212. package/keyboard/index.mjs +2 -369
  213. package/license/index.mjs +106 -115
  214. package/loading-view/index.mjs +39 -51
  215. package/login/index.mjs +252 -120
  216. package/monaco-editor/index.mjs +2 -7
  217. package/name-avatar/index.mjs +61 -53
  218. package/nav-bar/index.mjs +33 -30
  219. package/not-implement/index.mjs +10 -22
  220. package/notice/index.mjs +100 -93
  221. package/package.json +3 -3
  222. package/page/index.mjs +18 -25
  223. package/page-header/index.mjs +27 -33
  224. package/page-index/index.mjs +121 -99
  225. package/page-index-top/index.mjs +79 -74
  226. package/page-skeleton/index.mjs +47 -44
  227. package/page-skeleton-new/index.mjs +79 -49
  228. package/pageable-table/index.mjs +2 -512
  229. package/pageable-view/index.mjs +279 -274
  230. package/photo-swipe/index.d.ts +4 -0
  231. package/photo-swipe/index.mjs +33 -36
  232. package/picker-table-view/index.mjs +224 -117
  233. package/present-view/index.mjs +266 -196
  234. package/queue/index.mjs +45 -53
  235. package/record-video/index.mjs +2 -134
  236. package/resize-observer/index.mjs +43 -46
  237. package/search/index.mjs +116 -107
  238. package/sign/index.mjs +103 -110
  239. package/sign-panel/index.mjs +182 -141
  240. package/skeleton/index.mjs +51 -54
  241. package/skeleton-panel/index.mjs +33 -37
  242. package/split-pane/index.mjs +3 -196
  243. package/stateful/index.mjs +69 -73
  244. package/static-pageable-table/index.mjs +72 -64
  245. package/sub-table/index.mjs +508 -206
  246. package/sub-table-plus/index.mjs +592 -230
  247. package/swiper/index.mjs +128 -120
  248. package/tab/index.mjs +117 -119
  249. package/tab-item/index.mjs +48 -56
  250. package/table-column/index.mjs +2 -225
  251. package/table-view/index.mjs +3 -326
  252. package/tabs-view/index.mjs +109 -104
  253. package/tag-render/index.mjs +79 -67
  254. package/text-ellipsis/index.mjs +94 -77
  255. package/toolbar/index.mjs +2 -254
  256. package/toolbar-button/index.mjs +145 -120
  257. package/verify/index.mjs +58 -64
  258. package/vue-cron/index.mjs +2 -1180
  259. package/vue-qr-code/index.mjs +30 -54
  260. package/vue-quill-editor/index.mjs +123 -99
  261. package/vue-tags-input/index.mjs +348 -431
  262. package/vue-tree-select/index.mjs +2 -2627
  263. package/vue-video-player/index.mjs +135 -136
  264. package/watermark/index.mjs +46 -74
  265. package/web-types.json +197 -975
  266. package/x-input-tag/index.mjs +144 -106
  267. package/chunks/ElementBaseInfo.ZADwixb5.mjs +0 -125
  268. package/chunks/ElementForm.CQ3PN5qj.mjs +0 -223
  269. package/chunks/ElementListeners.De_PRuIm.mjs +0 -215
  270. package/chunks/ElementMultiInstance.DQo2wuAQ.mjs +0 -181
  271. package/chunks/ElementOtherConfig.B1NfMTYh.mjs +0 -60
  272. package/chunks/ElementProperties.CosfDrlW.mjs +0 -112
  273. package/chunks/ElementTaskConfig.Bko0kgTp.mjs +0 -317
  274. package/chunks/FlowCondition.Y6qEYi1T.mjs +0 -102
  275. package/chunks/FormTemp.BQxO5IQq.mjs +0 -123
  276. package/chunks/MonacoEditor.D31t4FTy.mjs +0 -327
  277. package/chunks/SignalAndMessage.Bb5PFX0N.mjs +0 -85
  278. package/chunks/UserTaskListeners.Bv3BDfEI.mjs +0 -169
  279. package/chunks/_plugin-vue2_normalizer.CeySl7Fu.mjs +0 -10
  280. package/chunks/confirmable-mixin.B2TtLAdk.mjs +0 -86
  281. package/chunks/core.0Exl13Mz.mjs +0 -54
  282. package/chunks/dataformat.CpqOeGBl.mjs +0 -154
  283. package/chunks/dic.Dkl-leRW.mjs +0 -128
  284. package/chunks/dictionary.DGt59Ir7.mjs +0 -68
  285. package/chunks/dictionary.DqiP9x2m.mjs +0 -25
  286. package/chunks/event.9aDS6jcw.mjs +0 -236
  287. package/chunks/form-input.CvFdwlEV.mjs +0 -31
  288. package/chunks/form-item.LWjePsPa.mjs +0 -233
  289. package/chunks/form-pick.BFTIVn_i.mjs +0 -11
  290. package/chunks/form-validate.CVarNHKX.mjs +0 -12
  291. package/chunks/helper.BiMLcEEk.mjs +0 -41
  292. package/chunks/index.9OxHjTIE.mjs +0 -16
  293. package/chunks/index.B2TRddqf.mjs +0 -184
  294. package/chunks/index.BmYCjxZQ.mjs +0 -47
  295. package/chunks/init.DAsXSoLW.mjs +0 -122
  296. package/chunks/packages.ByyangTp.mjs +0 -58
  297. package/chunks/permission.CO31YIkD.mjs +0 -16
  298. package/chunks/slot.DXIbhGat.mjs +0 -27
  299. package/chunks/sub-table-plus-props.BVsD71hT.mjs +0 -30
  300. package/chunks/tab-mixin.BNK6dxLN.mjs +0 -81
  301. package/chunks/util.DqFv_pWg.mjs +0 -241
  302. package/chunks/utilSelf.Csq1766E.mjs +0 -48
  303. package/chunks/utils.DRcxC1Fb.mjs +0 -60
  304. package/color-picker/index.mjs +0 -78
  305. package/egd-collapse/index.mjs +0 -62
  306. package/egd-collapse-item/index.mjs +0 -72
  307. package/form-input-number/index.mjs +0 -69
  308. package/form-input-number/style.css +0 -1
  309. package/input-number/index.mjs +0 -232
  310. package/input-number/style.css +0 -1
  311. package/keep-view-alive/index.mjs +0 -117
  312. package/search-popover/index.mjs +0 -118
  313. package/search-popover/style.css +0 -1
  314. /package/{base.css → utils/style.css} +0 -0
@@ -0,0 +1,484 @@
1
+ import { o as e, t } from "./install.yLcn5MLL.mjs";
2
+ import { t as n } from "./_plugin-vue_export-helper.7vrlOII_.mjs";
3
+ import { processButtons as r, reloadTable as i } from "../configComponents.mjs";
4
+ import { l as a, t as o } from "./util.B3sjVZoZ.mjs";
5
+ import s from "../form-item-config-provider/index.mjs";
6
+ import { r as c } from "./core.DJv6Qrae.mjs";
7
+ import { Transition as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createSlots as m, createTextVNode as h, createVNode as g, defineComponent as _, mergeProps as v, normalizeClass as y, normalizeStyle as b, openBlock as x, renderList as S, renderSlot as C, resolveComponent as w, toDisplayString as T, toHandlers as E, unref as D, vShow as O, withCtx as k, withDirectives as A, withModifiers as j } from "vue";
8
+ import { hasOwn as M, isArray as N, isFunction as P, isString as F, toStringArray as I, trace as L, warning as R } from "@web-utils/core";
9
+ import { merge as z } from "@web-utils/integrations/lodash";
10
+ //#endregion
11
+ //#region node_modules/.pnpm/element-plus@2.13.6_typescr_b7ae825491da06c0282fd613061a7e37/node_modules/element-plus/es/components/collapse-transition/index.mjs
12
+ var B = t(/* @__PURE__ */ _({
13
+ name: "ElCollapseTransition",
14
+ __name: "collapse-transition",
15
+ setup(t) {
16
+ let n = e("collapse-transition"), r = (e) => {
17
+ e.style.maxHeight = "", e.style.overflow = e.dataset.oldOverflow, e.style.paddingTop = e.dataset.oldPaddingTop, e.style.paddingBottom = e.dataset.oldPaddingBottom;
18
+ }, i = {
19
+ beforeEnter(e) {
20
+ e.dataset || (e.dataset = {}), e.dataset.oldPaddingTop = e.style.paddingTop, e.dataset.oldPaddingBottom = e.style.paddingBottom, e.style.height && (e.dataset.elExistsHeight = e.style.height), e.style.maxHeight = 0, e.style.paddingTop = 0, e.style.paddingBottom = 0;
21
+ },
22
+ enter(e) {
23
+ requestAnimationFrame(() => {
24
+ e.dataset.oldOverflow = e.style.overflow, e.dataset.elExistsHeight ? e.style.maxHeight = e.dataset.elExistsHeight : e.scrollHeight === 0 ? e.style.maxHeight = 0 : e.style.maxHeight = `${e.scrollHeight}px`, e.style.paddingTop = e.dataset.oldPaddingTop, e.style.paddingBottom = e.dataset.oldPaddingBottom, e.style.overflow = "hidden";
25
+ });
26
+ },
27
+ afterEnter(e) {
28
+ e.style.maxHeight = "", e.style.overflow = e.dataset.oldOverflow;
29
+ },
30
+ enterCancelled(e) {
31
+ r(e);
32
+ },
33
+ beforeLeave(e) {
34
+ e.dataset || (e.dataset = {}), e.dataset.oldPaddingTop = e.style.paddingTop, e.dataset.oldPaddingBottom = e.style.paddingBottom, e.dataset.oldOverflow = e.style.overflow, e.style.maxHeight = `${e.scrollHeight}px`, e.style.overflow = "hidden";
35
+ },
36
+ leave(e) {
37
+ e.scrollHeight !== 0 && (e.style.maxHeight = 0, e.style.paddingTop = 0, e.style.paddingBottom = 0);
38
+ },
39
+ afterLeave(e) {
40
+ r(e);
41
+ },
42
+ leaveCancelled(e) {
43
+ r(e);
44
+ }
45
+ };
46
+ return (e, t) => (x(), u(l, v({ name: D(n).b() }, E(i)), {
47
+ default: k(() => [C(e.$slots, "default")]),
48
+ _: 3
49
+ }, 16, ["name"]));
50
+ }
51
+ })), V = [
52
+ "back",
53
+ "create",
54
+ "save",
55
+ "withdraw",
56
+ "edit",
57
+ "submit",
58
+ "publish",
59
+ "agree",
60
+ "disagree",
61
+ "reject",
62
+ "finish",
63
+ "cancel",
64
+ "enable",
65
+ "exp",
66
+ "imp",
67
+ "del",
68
+ "disabled",
69
+ "reload",
70
+ "slot"
71
+ ], H = {
72
+ name: "TableView",
73
+ bus: {
74
+ reloadTableView(e) {
75
+ if (this._viewIds) if (F(e) || N(e)) {
76
+ let t = e;
77
+ F(t) && (t = t.split(",")), this._viewIds.some((e) => t.includes(e)) && (L.call(this.$parent || {}, "reloadTableView"), this.reloadTable());
78
+ } else R.call(this.$parent || {}, "`viewId`的类型必须是字符串或数组");
79
+ },
80
+ reloadTreeView(e) {
81
+ if (this._viewIds) if (F(e) || N(e)) {
82
+ let t = e;
83
+ F(t) && (t = t.split(",")), this._viewIds.some((e) => t.includes(e)) && this.$refs.tree && (L.call(this.$parent || {}, "reloadTreeView"), this.reloadTree());
84
+ } else R.call(this.$parent || {}, "`viewId`的类型必须是字符串或数组");
85
+ }
86
+ },
87
+ components: {
88
+ FormItemConfigProvider: s,
89
+ ElCollapseTransition: a(B)
90
+ },
91
+ props: {
92
+ viewId: [String, Array],
93
+ searchPanelAttrs: {
94
+ type: Object,
95
+ default: () => {}
96
+ },
97
+ toolbarAttrs: {
98
+ type: Object,
99
+ default: () => {}
100
+ },
101
+ toolbarListeners: Object,
102
+ treeAttrs: {
103
+ type: Object,
104
+ default: () => {}
105
+ },
106
+ treeListeners: Object,
107
+ tableAttrs: Object,
108
+ searchModel: Object,
109
+ tableListeners: {
110
+ type: Object,
111
+ default: () => {}
112
+ },
113
+ deleteApi: Function,
114
+ borderTop: Boolean,
115
+ borderBottom: Boolean,
116
+ borderLeft: Boolean,
117
+ borderRight: Boolean,
118
+ border: {
119
+ type: Boolean,
120
+ default: !0
121
+ },
122
+ labelWidth: {
123
+ type: String,
124
+ default: "120px"
125
+ },
126
+ formPath: [String, Function],
127
+ searchFormPosition: {
128
+ type: String,
129
+ default: "top"
130
+ },
131
+ embed: Boolean,
132
+ deleteTips: String,
133
+ selectTips: String,
134
+ rowKey: {
135
+ type: String,
136
+ default: "id"
137
+ },
138
+ expandSearch: Boolean,
139
+ showToolbar: {
140
+ type: Boolean,
141
+ default: !0
142
+ }
143
+ },
144
+ emits: ["reset"],
145
+ data() {
146
+ return {
147
+ importDialogVisible: !1,
148
+ selectedRows: [],
149
+ isSearchVisible: !1
150
+ };
151
+ },
152
+ computed: {
153
+ buttonSlots() {
154
+ return V.filter((e) => this.$slots[e]);
155
+ },
156
+ toolbarProps() {
157
+ var e, t;
158
+ let n = z({}, this.toolbarAttrs, {}), i = (n == null ? void 0 : n.buttons) || this.$parent.buttons;
159
+ return i = i || [], n.buttons = i, n.buttons = r(n.buttons), n.buttons = I(n.buttons), n.searchable = !!((e = (t = this.$slots)["search-form"]) != null && e.call(t)), n;
160
+ },
161
+ treeProps() {
162
+ return c(z({}, this.treeAttrs, {
163
+ treeProps: {
164
+ children: "children",
165
+ label: "label",
166
+ isLeaf: (e) => M(e, "hasChildren") ? !e.hasChildren : M(e, "hasChild") ? !e.hasChild : !0
167
+ },
168
+ show: !1,
169
+ lazy: !0,
170
+ readonly: !0,
171
+ data: [],
172
+ expandFirstNode: !0,
173
+ defaultExpandAll: !1
174
+ }));
175
+ },
176
+ tableProps() {
177
+ let e = this.tableAttrs.api || this.$parent.getPage, t = {
178
+ model: this.searchModel || {},
179
+ height: "auto",
180
+ highlightCurrentRow: !0,
181
+ api: e
182
+ };
183
+ return c(z({}, this.tableAttrs, t));
184
+ },
185
+ searchPanelProps() {
186
+ let e = {
187
+ width: 350,
188
+ model: this.searchModel || {}
189
+ };
190
+ return c(z({}, this.searchPanelAttrs, e));
191
+ },
192
+ toolbarEventHandlers() {
193
+ if (this.toolbarListeners) {
194
+ let { exp: e, ...t } = this.toolbarListeners;
195
+ return t;
196
+ }
197
+ return null;
198
+ },
199
+ tableScopeSlotNames() {
200
+ var e;
201
+ return ((e = this.tableAttrs) == null || (e = e.columns) == null ? void 0 : e.map((e) => e.prop).filter((e) => this.$slots[e])) ?? [];
202
+ }
203
+ },
204
+ watch: { expandSearch: {
205
+ immediate: !0,
206
+ handler(e) {
207
+ this.isSearchVisible = e;
208
+ }
209
+ } },
210
+ created() {
211
+ this._viewIds = [], this.viewId && this._viewIds.push(this.viewId), this._viewIds.includes(this.$parent.$options.name) || this._viewIds.push(this.$parent.$options.name);
212
+ },
213
+ activated() {
214
+ this.$refs.treeScroller && (this.treeScrollTop && (this.$refs.treeScroller.scrollTop = this.treeScrollTop), this.treeScrollLeft && (this.$refs.treeScroller.scrollLeft = this.treeScrollLeft));
215
+ },
216
+ methods: {
217
+ toHyphenateKey: c,
218
+ onTreeScroll() {
219
+ this.treeScrollTop = this.$refs.treeScroller.scrollTop, this.treeScrollLeft = this.$refs.treeScroller.scrollLeft;
220
+ },
221
+ toggleSearch() {
222
+ this.isSearchVisible = !this.isSearchVisible;
223
+ },
224
+ onSearchClick() {
225
+ this.reloadTable();
226
+ },
227
+ onClearClick() {
228
+ this.$emit("reset"), this.$refs.form.resetFields(), this.reloadTable();
229
+ },
230
+ openFrom(e) {
231
+ this.$router.push(o(this.formPath, e));
232
+ },
233
+ rowDbClick(e) {
234
+ var t;
235
+ !((t = this.tableListeners) != null && t["row-dblclick"]) && this.formPath && this.openFrom(e);
236
+ },
237
+ onSelectionChange(e) {
238
+ this.selectedRows = e;
239
+ },
240
+ create() {
241
+ var e;
242
+ !((e = this.toolbarListeners) != null && e.create) && this.formPath && this.openFrom();
243
+ },
244
+ async del() {
245
+ var e;
246
+ let t = this.deleteApi || this.$parent.del;
247
+ if (!((e = this.toolbarListeners) != null && e.del) && P(t)) {
248
+ if (!this.selectedRows.length) {
249
+ this.$message.warning(this.selectTips || "请选择要删除的记录!");
250
+ return;
251
+ }
252
+ await this.$confirm(this.deleteTips || `您确定要删除选中的[<span class="break-word" style="color: orange">${this.selectedRows.length}</span>]行记录吗?`, "系统提示", {
253
+ type: "warning",
254
+ modal: !0,
255
+ dangerouslyUseHTMLString: !0,
256
+ closeOnClickModal: !1,
257
+ beforeClose: async (e, n, r) => {
258
+ if (e === "confirm") try {
259
+ n.confirmButtonLoading = !0, n.confirmButtonText = "删除...";
260
+ let e = await t.call(this, this.selectedRows.map((e) => e[this.rowKey]));
261
+ this.$message.success(e.data.msg || "删除成功"), this.reloadTableAndTree(), i();
262
+ } catch {}
263
+ r();
264
+ }
265
+ }).catch((e) => e);
266
+ }
267
+ },
268
+ reloadTable() {
269
+ var e;
270
+ (e = this.$refs.table) == null || e.reload();
271
+ },
272
+ async refreshTable(e) {
273
+ var t;
274
+ await ((t = this.$refs.table) == null ? void 0 : t.getPage(e));
275
+ },
276
+ reloadTree() {
277
+ var e;
278
+ (e = this.$refs.tree) == null || e.reloadTree();
279
+ },
280
+ reloadTableAndTree() {
281
+ this.reloadTable(), this.reloadTree();
282
+ },
283
+ currentRow() {
284
+ return this.$refs.table.currentRow;
285
+ },
286
+ getPageQuery() {
287
+ return this.$refs.table.getPageQuery();
288
+ },
289
+ exp() {
290
+ var e, t;
291
+ (e = (t = this.toolbarListeners).exp) == null || e.call(t, this.selectedRows);
292
+ },
293
+ getTableColumns() {
294
+ return this.$refs.table.tableColumns;
295
+ }
296
+ }
297
+ }, U = { class: "table-view-wrapper" }, W = {
298
+ key: 0,
299
+ class: "search-form-top"
300
+ }, G = { class: "table-view-content-wrapper" }, K = { class: "table-view-content" }, q = { class: "table-view-table" }, J = { class: "slide-panel-content" }, Y = { class: "slide-panel-actions" };
301
+ function X(e, t, n, r, i, a) {
302
+ let o = w("ElButton"), s = w("FormItem"), c = w("ElRow"), _ = w("FormItemConfigProvider"), D = w("ElForm"), M = w("ElCollapseTransition"), N = w("Toolbar"), P = w("EditableTree"), F = w("PageableTable"), I = w("ElFormItem");
303
+ return x(), f("div", { class: y(["table-view", {
304
+ embed: n.embed,
305
+ "has-tree": a.treeProps.show
306
+ }]) }, [p("div", U, [
307
+ d("搜索条件"),
308
+ n.searchFormPosition === "top" ? (x(), u(M, { key: 0 }, {
309
+ default: k(() => [a.toolbarProps.searchable ? A((x(), f("div", W, [g(D, {
310
+ ref: "form",
311
+ "label-position": "right",
312
+ model: n.searchModel || a.searchPanelProps.model,
313
+ size: "mini",
314
+ "label-width": n.labelWidth,
315
+ onSubmitCapture: j(a.onSearchClick, ["prevent"])
316
+ }, {
317
+ default: k(() => [g(_, { reactive: "" }, {
318
+ default: k(() => [g(c, { gutter: 0 }, {
319
+ default: k(() => [C(e.$slots, "search-form", {}, () => [t[3] || (t[3] = p("p", null, "请添加搜索条件!", -1))]), g(s, {
320
+ class: "search-actions",
321
+ "hide-label": ""
322
+ }, {
323
+ default: k(() => [g(o, {
324
+ type: "primary",
325
+ "native-type": "submit",
326
+ size: "mini"
327
+ }, {
328
+ default: k(() => [...t[4] || (t[4] = [h("开始搜索", -1)])]),
329
+ _: 1
330
+ }), g(o, {
331
+ size: "mini",
332
+ style: { "margin-left": "10px" },
333
+ onClick: a.onClearClick
334
+ }, {
335
+ default: k(() => [...t[5] || (t[5] = [h("清除条件", -1)])]),
336
+ _: 1
337
+ }, 8, ["onClick"])]),
338
+ _: 1
339
+ })]),
340
+ _: 3
341
+ })]),
342
+ _: 3
343
+ })]),
344
+ _: 3
345
+ }, 8, [
346
+ "model",
347
+ "label-width",
348
+ "onSubmitCapture"
349
+ ])], 512)), [[O, i.isSearchVisible]]) : d("v-if", !0)]),
350
+ _: 3
351
+ })) : d("v-if", !0),
352
+ d("顶部工具条"),
353
+ n.showToolbar ? (x(), u(N, v({ key: 1 }, a.toolbarProps, {
354
+ refreshable: "",
355
+ onSearch: a.toggleSearch,
356
+ onSettings: t[0] || (t[0] = () => e.$refs.table.toggleSettings()),
357
+ onDel: a.del,
358
+ onCreate: a.create,
359
+ onReload: a.reloadTableAndTree,
360
+ onExp: a.exp,
361
+ onImp: t[1] || (t[1] = (e) => i.importDialogVisible = !0)
362
+ }, E(a.toolbarEventHandlers)), m({
363
+ default: k(() => [C(e.$slots, "toolbar-button", { selectedRows: i.selectedRows })]),
364
+ "toolbar-left": k(() => [C(e.$slots, "toolbar-left", { selectedRows: i.selectedRows })]),
365
+ "toolbar-right": k(() => [C(e.$slots, "toolbar-right", {
366
+ del: a.del,
367
+ create: a.create,
368
+ reload: a.reloadTableAndTree,
369
+ selectedRows: i.selectedRows
370
+ })]),
371
+ "toolbar-right-button": k(() => [C(e.$slots, "toolbar-right-button")]),
372
+ _: 2
373
+ }, [S(a.buttonSlots, (t) => ({
374
+ name: t,
375
+ fn: k(() => [C(e.$slots, t, { selectedRows: i.selectedRows })])
376
+ }))]), 1040, [
377
+ "onSearch",
378
+ "onDel",
379
+ "onCreate",
380
+ "onReload",
381
+ "onExp"
382
+ ])) : d("v-if", !0),
383
+ p("div", G, [
384
+ p("div", K, [
385
+ d("侧栏"),
386
+ a.treeProps.show ? (x(), f("div", {
387
+ key: 0,
388
+ ref: "treeScroller",
389
+ class: "table-view-sidebar",
390
+ onScroll: t[2] || (t[2] = (...e) => a.onTreeScroll && a.onTreeScroll(...e))
391
+ }, [d("<div style=\"font-size: 16px\">视图导航</div>"), g(P, v({ ref: "tree" }, a.treeProps, { readonly: "" }, E(a.toHyphenateKey(n.treeListeners))), {
392
+ default: k(({ node: t, data: n }) => [C(e.$slots, "tree-node", {
393
+ node: t,
394
+ data: n
395
+ }, () => [p("span", null, [p("i", { class: y([t.childNodes.length > 0 ? t.expanded ? "el-icon-folder-opened" : "el-icon-folder" : "el-icon-tickets", "node-icon"]) }, null, 2), C(e.$slots, "tree-label", {
396
+ node: t,
397
+ data: n
398
+ }, () => [h(T(t.label), 1)])])])]),
399
+ _: 3
400
+ }, 16)], 544)) : d("v-if", !0),
401
+ d("表格"),
402
+ p("div", q, [g(F, v({
403
+ ref: "table",
404
+ border: n.border,
405
+ class: [{
406
+ "border-top": n.borderTop,
407
+ "border-bottom": n.borderBottom,
408
+ "border-left": n.borderLeft || n.treeAttrs && n.treeAttrs.show,
409
+ "border-right": n.borderRight
410
+ }]
411
+ }, a.tableProps, E(a.toHyphenateKey(n.tableListeners)), {
412
+ onRowDblclick: a.rowDbClick,
413
+ onSelectionChange: a.onSelectionChange
414
+ }), m({
415
+ default: k(() => [C(e.$slots, "columns")]),
416
+ _: 2
417
+ }, [S(a.tableScopeSlotNames, (t) => ({
418
+ name: t,
419
+ fn: k(({ row: n }) => [C(e.$slots, t, { row: n })])
420
+ }))]), 1040, [
421
+ "border",
422
+ "class",
423
+ "onRowDblclick",
424
+ "onSelectionChange"
425
+ ])])
426
+ ]),
427
+ d("搜索条件"),
428
+ n.searchFormPosition === "right" ? (x(), u(l, {
429
+ key: 0,
430
+ name: "slide"
431
+ }, {
432
+ default: k(() => [a.toolbarProps.searchable ? A((x(), f("div", {
433
+ key: 0,
434
+ style: b({ width: `${a.searchPanelProps.width}px` }),
435
+ class: "slide-panel"
436
+ }, [d("<div class=\"slide-panel-line\">\n <div class=\"slide-panel-line-indicator\"></div>\n </div>"), p("div", J, [g(D, {
437
+ ref: "form",
438
+ "label-position": "right",
439
+ model: n.searchModel || a.searchPanelProps.model,
440
+ size: "mini",
441
+ "label-width": n.labelWidth,
442
+ onSubmitCapture: j(a.onSearchClick, ["prevent"])
443
+ }, {
444
+ default: k(() => [g(_, {
445
+ block: "",
446
+ "wrap-col": !1
447
+ }, {
448
+ default: k(() => [g(c, { gutter: 0 }, {
449
+ default: k(() => [C(e.$slots, "search-form", {}, () => [t[6] || (t[6] = p("p", null, "请添加搜索条件!", -1))])]),
450
+ _: 3
451
+ })]),
452
+ _: 3
453
+ }), g(I, { "label-width": "0" }, {
454
+ default: k(() => [p("div", Y, [g(o, {
455
+ type: "primary",
456
+ "native-type": "submit",
457
+ size: "mini"
458
+ }, {
459
+ default: k(() => [...t[7] || (t[7] = [h("开始搜索", -1)])]),
460
+ _: 1
461
+ }), g(o, {
462
+ size: "mini",
463
+ onClick: a.onClearClick
464
+ }, {
465
+ default: k(() => [...t[8] || (t[8] = [h("清除条件", -1)])]),
466
+ _: 1
467
+ }, 8, ["onClick"])])]),
468
+ _: 1
469
+ })]),
470
+ _: 3
471
+ }, 8, [
472
+ "model",
473
+ "label-width",
474
+ "onSubmitCapture"
475
+ ])])], 4)), [[O, i.isSearchVisible]]) : d("v-if", !0)]),
476
+ _: 3
477
+ })) : d("v-if", !0)
478
+ ]),
479
+ C(e.$slots, "default")
480
+ ])], 2);
481
+ }
482
+ var Z = /* @__PURE__ */ n(H, [["render", X]]);
483
+ //#endregion
484
+ export { Z as t };
@@ -0,0 +1,219 @@
1
+ import { goBack as e, hasAuthority as t } from "../configComponents.mjs";
2
+ import { createVNode as n, resolveComponent as r } from "vue";
3
+ import { NOOP as i, copy as a } from "@web-utils/core";
4
+ //#region src/components/toolbar/Toolbar.vue?vue&type=script&lang.jsx
5
+ var o = {
6
+ back: {
7
+ label: "返回",
8
+ type: "primary",
9
+ icon: "el-icon-arrow-left"
10
+ },
11
+ cancel: {
12
+ label: "取消",
13
+ icon: "el-icon-close"
14
+ },
15
+ create: {
16
+ label: "新增",
17
+ type: "primary",
18
+ icon: "el-icon-plus"
19
+ },
20
+ save: {
21
+ label: "保存",
22
+ type: "primary",
23
+ icon: "el-icon-takeaway-box",
24
+ loadable: !0
25
+ },
26
+ withdraw: {
27
+ label: "提取",
28
+ type: "primary",
29
+ icon: "el-icon-refresh-left"
30
+ },
31
+ edit: {
32
+ label: "编辑",
33
+ type: "primary",
34
+ icon: "el-icon-edit-outline"
35
+ },
36
+ submit: {
37
+ label: "审批办理",
38
+ type: "primary",
39
+ icon: "el-icon-s-promotion"
40
+ },
41
+ publish: {
42
+ label: "发布",
43
+ type: "primary",
44
+ icon: "el-icon-s-promotion"
45
+ },
46
+ agree: {
47
+ label: "同意",
48
+ type: "primary",
49
+ icon: "el-icon-check"
50
+ },
51
+ disagree: {
52
+ label: "不同意",
53
+ type: "primary",
54
+ icon: "el-icon-close"
55
+ },
56
+ reject: {
57
+ label: "退回",
58
+ type: "primary",
59
+ icon: "el-icon-s-release"
60
+ },
61
+ finish: {
62
+ label: "完成",
63
+ type: "primary",
64
+ icon: "el-icon-circle-check"
65
+ },
66
+ enable: {
67
+ label: "启用",
68
+ type: "primary",
69
+ icon: "el-icon-circle-check"
70
+ },
71
+ exp: {
72
+ label: "导出",
73
+ type: "primary",
74
+ icon: "el-icon-download"
75
+ },
76
+ imp: {
77
+ label: "导入",
78
+ type: "primary",
79
+ icon: "el-icon-upload"
80
+ },
81
+ del: {
82
+ label: "删除",
83
+ type: "primary",
84
+ icon: "el-icon-delete"
85
+ },
86
+ print: {
87
+ label: "打印",
88
+ type: "primary",
89
+ icon: "el-icon-printer"
90
+ },
91
+ disabled: {
92
+ label: "禁用",
93
+ type: "primary",
94
+ icon: "el-icon-remove-outline"
95
+ },
96
+ reload: {
97
+ label: "刷新",
98
+ icon: "el-icon-refresh",
99
+ separateLine: !1,
100
+ circle: !0
101
+ },
102
+ settings: {
103
+ label: "设置",
104
+ icon: "el-icon-s-operation",
105
+ separateLine: !1,
106
+ circle: !0
107
+ },
108
+ search: {
109
+ label: "搜索",
110
+ icon: "el-icon-search",
111
+ separateLine: !1,
112
+ circle: !0
113
+ }
114
+ }, s = {
115
+ name: "Toolbar",
116
+ provide() {
117
+ return { toolbar: this };
118
+ },
119
+ props: {
120
+ searchable: Boolean,
121
+ refreshable: Boolean,
122
+ buttons: {
123
+ type: Array,
124
+ default: () => ["back"]
125
+ },
126
+ back: Function,
127
+ cancel: Function,
128
+ emitter: {
129
+ type: String,
130
+ default: "self"
131
+ },
132
+ footer: Boolean,
133
+ label: Object
134
+ },
135
+ methods: {
136
+ goBack() {
137
+ let t = this.$route.path;
138
+ e(t);
139
+ },
140
+ createButton(e, { label: t, icon: a, type: o, separateLine: s = !0, loadable: c, circle: l, onClick: u, title: d }) {
141
+ var f;
142
+ let p, m = ((f = this.label) == null ? void 0 : f[e]) || t;
143
+ return p = u || (["back", "cancel"].includes(e) ? this.goBack : (t) => (this.$listeners[e] || i)(t)), n(r("ToolbarButton"), {
144
+ "separate-line": s,
145
+ icon: a,
146
+ title: d,
147
+ label: m,
148
+ loadable: c,
149
+ circle: l,
150
+ footer: this.footer,
151
+ type: o,
152
+ "on-click": p
153
+ }, null);
154
+ },
155
+ getLeftButtons() {
156
+ var e, n;
157
+ let { createButton: r } = this, i = ((e = (n = this.$slots)["toolbar-left"]) == null ? void 0 : e.call(n)) || this.buttons.flatMap((e) => {
158
+ let t = o[e];
159
+ if (t) {
160
+ var n, i;
161
+ return ((n = (i = this.$slots)[e]) == null ? void 0 : n.call(i)) || r(e, t);
162
+ } else if (e === "slot") {
163
+ var a, s;
164
+ return ((a = (s = this.$slots).default) == null ? void 0 : a.call(s, {
165
+ buttons: this.buttons,
166
+ footer: this.footer
167
+ })) ?? null;
168
+ } else return null;
169
+ });
170
+ return i == null ? void 0 : i.filter((e) => {
171
+ var n;
172
+ return !(e == null || (n = e.componentOptions) == null) && n.propsData.privilege ? t(e.componentOptions.propsData.privilege) : !0;
173
+ });
174
+ },
175
+ getRightButtons() {
176
+ var e, t, n, r;
177
+ let i = (e = (t = this.$slots)["toolbar-right"]) == null ? void 0 : e.call(t), o = [
178
+ ...((n = (r = this.$slots)["toolbar-right-button"]) == null ? void 0 : n.call(r)) || [],
179
+ this.getRefreshButton(),
180
+ this.getSettingsButton(),
181
+ this.getSearchButton()
182
+ ];
183
+ if (process.env.NODE_ENV === "development" && this.$parent.toggleSearch) {
184
+ let { createButton: e } = this;
185
+ o.push(e("copyColumnWidth", {
186
+ label: "复制列宽",
187
+ title: "复制列宽",
188
+ icon: "el-icon-document-copy",
189
+ separateLine: !1,
190
+ circle: !0,
191
+ onClick: () => {
192
+ let e = Array.from(this.$el.parentNode.querySelectorAll(".el-table__header > colgroup > col"));
193
+ e = e.filter((t, n) => n > 1 && n < e.length - 1).map((e) => `width="${e.getAttribute("width")}"`).join("\n"), a(e, () => {
194
+ this.$message.success("复制成功");
195
+ });
196
+ }
197
+ }));
198
+ }
199
+ return i || o;
200
+ },
201
+ getSearchButton() {
202
+ let { createButton: e } = this;
203
+ return this.searchable ? e("search", o.search) : null;
204
+ },
205
+ getRefreshButton() {
206
+ let { createButton: e } = this;
207
+ return this.refreshable ? e("reload", o.reload) : null;
208
+ },
209
+ getSettingsButton() {
210
+ let { createButton: e } = this;
211
+ return this.refreshable ? e("settings", o.settings) : null;
212
+ }
213
+ },
214
+ render() {
215
+ return this.footer ? n("div", { class: "footer-bar" }, [this.getLeftButtons()]) : n("div", { class: "toolbar" }, [n("div", { class: "toolbar-left" }, [this.getLeftButtons()]), n("div", { class: "toolbar-right" }, [this.getRightButtons()])]);
216
+ }
217
+ };
218
+ //#endregion
219
+ export { s as t };