easy-component-ui 2.0.5 → 2.1.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 (483) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -0
  3. package/build/components/Base.js +1 -0
  4. package/build/components/ea-alert/index.js +1 -0
  5. package/build/components/ea-alert/src/style/stylesheet.js +1 -0
  6. package/build/components/ea-aside/index.js +1 -0
  7. package/build/components/ea-avatar/index.js +1 -0
  8. package/build/components/ea-avatar/src/assets/defaultAvatar.js +1 -0
  9. package/build/components/ea-avatar/src/assets/errorAvatar.js +1 -0
  10. package/build/components/ea-avatar/src/assets/iconAndTextAvatar.js +1 -0
  11. package/build/components/ea-avatar/src/style/stylesheet.js +1 -0
  12. package/build/components/ea-backtop/index.js +1 -0
  13. package/build/components/ea-backtop/src/style/stylesheet.js +1 -0
  14. package/build/components/ea-badge/index.js +1 -0
  15. package/build/components/ea-badge/src/style/stylesheet.js +1 -0
  16. package/build/components/ea-breadcrumb/index.js +1 -0
  17. package/build/components/ea-breadcrumb/src/style/stylesheet.js +1 -0
  18. package/build/components/ea-breadcrumb-item/index.js +1 -0
  19. package/build/components/ea-breadcrumb-item/src/style/style.js +1 -0
  20. package/build/components/ea-button/index.js +1 -0
  21. package/build/components/ea-button/src/components/ButtonComm.js +1 -0
  22. package/build/components/ea-button/src/components/HrefComm.js +1 -0
  23. package/build/components/ea-button/src/style/stylesheet.js +1 -0
  24. package/build/components/ea-button-group/index.js +1 -0
  25. package/build/components/ea-button-group/src/style/stylesheet.js +1 -0
  26. package/build/components/ea-calendar/index.js +1 -0
  27. package/build/components/ea-calendar/src/style/stylesheet.js +1 -0
  28. package/build/components/ea-calendar/src/utils/createChangerElement.js +1 -0
  29. package/build/components/ea-calendar/src/utils/createThead.js +1 -0
  30. package/build/components/ea-calendar/src/utils/getDate.js +1 -0
  31. package/build/components/ea-calendar/src/utils/getUserWeekStart.js +1 -0
  32. package/build/components/ea-card/index.js +1 -0
  33. package/build/components/ea-card/src/style/stylesheet.js +1 -0
  34. package/build/components/ea-carousel/index.js +1 -0
  35. package/build/components/ea-carousel/src/style/stylesheet.js +1 -0
  36. package/build/components/ea-carousel/src/utils/handleIndexOverflow.js +1 -0
  37. package/build/components/ea-carousel-item/index.js +1 -0
  38. package/build/components/ea-carousel-item/src/style/stylesheet.js +1 -0
  39. package/build/components/ea-checkbox/index.js +1 -0
  40. package/build/components/ea-checkbox/src/style/stylesheet.js +1 -0
  41. package/build/components/ea-checkbox-group/index.js +1 -0
  42. package/build/components/ea-checkbox-group/src/style/stylesheet.js +1 -0
  43. package/build/components/ea-collapse/index.js +1 -0
  44. package/build/components/ea-collapse-item/index.js +1 -0
  45. package/build/components/ea-collapse-item/src/style/stylesheet.js +1 -0
  46. package/build/components/ea-container/index.js +1 -0
  47. package/build/components/ea-date-picker/index.js +1 -0
  48. package/build/components/ea-date-picker/src/style/stylesheet.js +1 -0
  49. package/build/components/ea-descriptions/index.js +1 -0
  50. package/build/components/ea-descriptions/src/components/contentTemplate.js +1 -0
  51. package/build/components/ea-descriptions/src/components/getTdTemplate_border.js +1 -0
  52. package/build/components/ea-descriptions/src/components/getTdTemplate_direction.js +1 -0
  53. package/build/components/ea-descriptions/src/components/getThTemplate_direction.js +1 -0
  54. package/build/components/ea-descriptions/src/components/getThTemplate_normal.js +1 -0
  55. package/build/components/ea-descriptions/src/style/stylesheet.js +1 -0
  56. package/build/components/ea-descriptions-item/index.js +1 -0
  57. package/build/components/ea-descriptions-item/src/stylesheet.js +1 -0
  58. package/build/components/ea-drawer/index.js +1 -0
  59. package/build/components/ea-drawer/src/style/stylesheet.js +1 -0
  60. package/build/components/ea-empty/index.js +1 -0
  61. package/build/components/ea-empty/src/assets/emptyStatusSVG.js +1 -0
  62. package/build/components/ea-empty/src/style/stylesheet.js +1 -0
  63. package/build/components/ea-footer/index.js +1 -0
  64. package/build/components/ea-form/index.js +1 -0
  65. package/build/components/ea-form-item/index.js +1 -0
  66. package/build/components/ea-form-item/src/style/stylesheet.js +1 -0
  67. package/build/components/ea-header/index.js +1 -0
  68. package/build/components/ea-icon/config.json +1030 -0
  69. package/{components/ea-icon/css/fontello-codes.css → build/components/ea-icon/css/fontello.css} +312 -123
  70. package/build/components/ea-icon/font/fontello.eot +0 -0
  71. package/build/components/ea-icon/font/fontello.svg +350 -0
  72. package/build/components/ea-icon/font/fontello.ttf +0 -0
  73. package/build/components/ea-icon/font/fontello.woff +0 -0
  74. package/build/components/ea-icon/font/fontello.woff2 +0 -0
  75. package/build/components/ea-icon/index.css +1 -0
  76. package/build/components/ea-icon/index.js +1 -0
  77. package/build/components/ea-image/index.js +1 -0
  78. package/build/components/ea-image/src/assets/errorImage.js +1 -0
  79. package/build/components/ea-image/src/style/stylesheet.js +1 -0
  80. package/build/components/ea-image/src/utils/createPreviewTools.js +1 -0
  81. package/build/components/ea-infinite-scroll/index.js +1 -0
  82. package/build/components/ea-infinite-scroll-item/index.js +1 -0
  83. package/build/components/ea-input/index.js +1 -0
  84. package/build/components/ea-input/src/components/createFixIcon.js +1 -0
  85. package/build/components/ea-input/src/components/createSuggestionBoard.js +1 -0
  86. package/build/components/ea-input/src/components/createWordLimitElement.js +1 -0
  87. package/build/components/ea-input/src/style/stylesheet.js +1 -0
  88. package/build/components/ea-input/src/utils/dispatchEvent.js +1 -0
  89. package/build/components/ea-input/src/utils/handleSearchResult.js +1 -0
  90. package/build/components/ea-input/src/utils/handleSuggestionBoardTrigger.js +1 -0
  91. package/build/components/ea-input-number/index.js +1 -0
  92. package/build/components/ea-input-number/src/style/stylesheet.js +1 -0
  93. package/build/components/ea-input-number/src/utils/handleCustomEvent.js +1 -0
  94. package/build/components/ea-link/index.js +1 -0
  95. package/build/components/ea-link/src/style/stylesheet.js +1 -0
  96. package/build/components/ea-loading/index.js +1 -0
  97. package/build/components/ea-loading/src/style/stylesheet.js +1 -0
  98. package/build/components/ea-main/index.js +1 -0
  99. package/build/components/ea-menu/index.js +1 -0
  100. package/build/components/ea-menu/src/style/stylesheet.js +1 -0
  101. package/build/components/ea-menu/src/utils/handleMenuItemEvent.js +1 -0
  102. package/build/components/ea-menu-item/index.js +1 -0
  103. package/build/components/ea-menu-item/src/style/stylesheet.js +1 -0
  104. package/build/components/ea-menu-item-group/index.js +1 -0
  105. package/build/components/ea-menu-item-group/src/style/stylesheet.js +1 -0
  106. package/build/components/ea-message/index.js +1 -0
  107. package/build/components/ea-message/src/style/stylesheet.js +1 -0
  108. package/build/components/ea-message/src/utils/MessageClass.js +1 -0
  109. package/build/components/ea-message-box/index.js +1 -0
  110. package/build/components/ea-message-box/src/style/stylesheet.js +1 -0
  111. package/build/components/ea-message-box/src/utils/EaMessageBoxClass.js +1 -0
  112. package/build/components/ea-option/index.js +1 -0
  113. package/build/components/ea-option/src/style/stylesheet.js +1 -0
  114. package/build/components/ea-option-gropu/index.js +1 -0
  115. package/build/components/ea-page-header/index.js +1 -0
  116. package/build/components/ea-page-header/src/style/stylesheet.js +1 -0
  117. package/build/components/ea-pagination/index.js +1 -0
  118. package/build/components/ea-pagination/src/components/getMoreItem.js +1 -0
  119. package/build/components/ea-pagination/src/components/getPageItem.js +1 -0
  120. package/build/components/ea-pagination/src/components/getShowTotalItem.js +1 -0
  121. package/build/components/ea-pagination/src/style/stylesheet.js +1 -0
  122. package/build/components/ea-pane/index.js +1 -0
  123. package/build/components/ea-pane/src/stylesheet.js +1 -0
  124. package/build/components/ea-progress/index.js +1 -0
  125. package/build/components/ea-progress/src/components/SVGComm.js +1 -0
  126. package/build/components/ea-progress/src/style/stylesheet.js +1 -0
  127. package/build/components/ea-radio/index.js +1 -0
  128. package/build/components/ea-radio/src/style/stylesheet.js +1 -0
  129. package/build/components/ea-radio-group/index.js +1 -0
  130. package/build/components/ea-rate/index.js +1 -0
  131. package/build/components/ea-rate/src/components/rateComm.js +1 -0
  132. package/build/components/ea-rate/src/style/stylesheet.js +1 -0
  133. package/build/components/ea-result/index.js +1 -0
  134. package/build/components/ea-result/src/style/stylesheet.js +1 -0
  135. package/build/components/ea-select/index.js +1 -0
  136. package/build/components/ea-select/src/style/stylesheet.js +1 -0
  137. package/build/components/ea-skeleton/index.js +1 -0
  138. package/build/components/ea-skeleton/src/style/stylesheet.js +1 -0
  139. package/build/components/ea-skeleton/src/utils/createSkeletonElement.js +1 -0
  140. package/build/components/ea-skeleton-item/index.js +1 -0
  141. package/build/components/ea-skeleton-item/src/assets/imageSVG.js +1 -0
  142. package/build/components/ea-skeleton-item/src/style/stylesheet.js +1 -0
  143. package/build/components/ea-step/index.js +1 -0
  144. package/build/components/ea-step/src/style/stylesheet.js +1 -0
  145. package/build/components/ea-steps/index.js +1 -0
  146. package/build/components/ea-steps/src/style/stylesheet.js +1 -0
  147. package/build/components/ea-submenu/index.js +1 -0
  148. package/build/components/ea-submenu/src/style/stylesheet.js +1 -0
  149. package/build/components/ea-switch/index.js +1 -0
  150. package/build/components/ea-switch/src/style/stylesheet.js +1 -0
  151. package/build/components/ea-tab/index.js +1 -0
  152. package/build/components/ea-tab/src/style/stylesheet.js +1 -0
  153. package/build/components/ea-table/index.js +1 -0
  154. package/build/components/ea-table/src/style/stylesheet.js +1 -0
  155. package/build/components/ea-table-column/index.js +1 -0
  156. package/build/components/ea-tabs/index.js +1 -0
  157. package/build/components/ea-tabs/src/style/stylesheet.js +1 -0
  158. package/build/components/ea-tag/index.js +1 -0
  159. package/build/components/ea-tag/src/style/stylesheet.js +1 -0
  160. package/build/components/ea-textarea/index.js +1 -0
  161. package/build/components/ea-textarea/src/style/stylesheet.js +1 -0
  162. package/build/components/ea-time-picker/index.js +1 -0
  163. package/build/components/ea-time-picker/src/style/stylesheet.js +1 -0
  164. package/build/components/ea-timeline/index.js +1 -0
  165. package/build/components/ea-timeline/style/stylesheet.js +1 -0
  166. package/build/components/ea-timeline-item/index.js +1 -0
  167. package/build/components/ea-timeline-item/src/style/stylesheet.js +1 -0
  168. package/build/components/globalConfig.js +1 -0
  169. package/build/components/index.js +1 -0
  170. package/build/utils/Validator.js +1 -0
  171. package/build/utils/createElement.js +1 -0
  172. package/build/utils/handleDefaultAttrIsTrue.js +1 -0
  173. package/build/utils/handleTemplate.js +1 -0
  174. package/build/utils/setStyle.js +1 -0
  175. package/build/utils/timeout.js +1 -0
  176. package/components/Base.js +75 -1
  177. package/components/ea-alert/index.css +91 -0
  178. package/components/ea-alert/index.js +210 -1
  179. package/components/ea-alert/index.scss +108 -0
  180. package/components/ea-alert/src/style/stylesheet.js +85 -1
  181. package/components/ea-aside/index.css +9 -0
  182. package/components/ea-aside/index.js +54 -1
  183. package/components/ea-aside/index.scss +12 -0
  184. package/components/ea-avatar/index.css +66 -0
  185. package/components/ea-avatar/index.js +156 -1
  186. package/components/ea-avatar/index.scss +59 -0
  187. package/components/ea-avatar/src/assets/defaultAvatar.js +12 -1
  188. package/components/ea-avatar/src/assets/errorAvatar.js +9 -1
  189. package/components/ea-avatar/src/assets/iconAndTextAvatar.js +18 -1
  190. package/components/ea-avatar/src/style/stylesheet.js +61 -1
  191. package/components/ea-backtop/index.css +27 -0
  192. package/components/ea-backtop/index.js +167 -1
  193. package/components/ea-backtop/index.scss +29 -0
  194. package/components/ea-backtop/src/style/stylesheet.js +21 -1
  195. package/components/ea-badge/index.css +49 -0
  196. package/components/ea-badge/index.js +103 -1
  197. package/components/ea-badge/index.scss +56 -0
  198. package/components/ea-badge/src/style/stylesheet.js +43 -1
  199. package/components/ea-breadcrumb/index.css +6 -0
  200. package/components/ea-breadcrumb/index.js +90 -1
  201. package/components/ea-breadcrumb/index.scss +7 -0
  202. package/components/ea-breadcrumb/src/style/stylesheet.js +8 -1
  203. package/components/ea-breadcrumb-item/index.css +10 -0
  204. package/components/ea-breadcrumb-item/index.js +23 -1
  205. package/components/ea-breadcrumb-item/index.scss +12 -0
  206. package/components/ea-breadcrumb-item/src/style/style.js +12 -1
  207. package/components/ea-button/index.css +206 -0
  208. package/components/ea-button/index.js +198 -1
  209. package/components/ea-button/index.scss +143 -0
  210. package/components/ea-button/src/components/ButtonComm.js +5 -1
  211. package/components/ea-button/src/components/HrefComm.js +5 -1
  212. package/components/ea-button/src/style/stylesheet.js +208 -1
  213. package/components/ea-button-group/index.css +16 -0
  214. package/components/ea-button-group/index.js +44 -1
  215. package/components/ea-button-group/index.scss +20 -0
  216. package/components/ea-button-group/src/style/stylesheet.js +18 -1
  217. package/components/ea-calendar/index.css +72 -0
  218. package/components/ea-calendar/index.js +298 -1
  219. package/components/ea-calendar/index.scss +106 -0
  220. package/components/ea-calendar/src/style/stylesheet.js +74 -1
  221. package/components/ea-calendar/src/utils/createChangerElement.js +10 -1
  222. package/components/ea-calendar/src/utils/createThead.js +18 -1
  223. package/components/ea-calendar/src/utils/getDate.js +11 -1
  224. package/components/ea-calendar/src/utils/getUserWeekStart.js +11 -1
  225. package/components/ea-card/index.css +25 -0
  226. package/components/ea-card/index.js +51 -1
  227. package/components/ea-card/index.scss +24 -0
  228. package/components/ea-card/src/style/stylesheet.js +19 -1
  229. package/components/ea-carousel/index.css +103 -0
  230. package/components/ea-carousel/index.js +222 -1
  231. package/components/ea-carousel/index.scss +140 -0
  232. package/components/ea-carousel/src/style/stylesheet.js +105 -1
  233. package/components/ea-carousel/src/utils/handleIndexOverflow.js +9 -1
  234. package/components/ea-carousel-item/index.css +20 -0
  235. package/components/ea-carousel-item/index.js +23 -1
  236. package/components/ea-carousel-item/index.scss +26 -0
  237. package/components/ea-carousel-item/src/style/stylesheet.js +22 -1
  238. package/components/ea-checkbox/index.css +108 -0
  239. package/components/ea-checkbox/index.js +160 -1
  240. package/components/ea-checkbox/index.scss +141 -0
  241. package/components/ea-checkbox/src/style/stylesheet.js +110 -1
  242. package/components/ea-checkbox-group/index.css +6 -0
  243. package/components/ea-checkbox-group/index.js +120 -1
  244. package/components/ea-checkbox-group/index.scss +7 -0
  245. package/components/ea-checkbox-group/src/style/stylesheet.js +8 -1
  246. package/components/ea-collapse/index.css +0 -0
  247. package/components/ea-collapse/index.js +109 -1
  248. package/components/ea-collapse/index.scss +4 -0
  249. package/components/ea-collapse-item/index.css +31 -0
  250. package/components/ea-collapse-item/index.js +111 -1
  251. package/components/ea-collapse-item/index.scss +46 -0
  252. package/components/ea-collapse-item/src/style/stylesheet.js +33 -1
  253. package/components/ea-container/index.css +14 -0
  254. package/components/ea-container/index.js +85 -1
  255. package/components/ea-container/index.scss +18 -0
  256. package/components/ea-date-picker/index.css +17 -0
  257. package/components/ea-date-picker/index.js +191 -1
  258. package/components/ea-date-picker/index.scss +29 -0
  259. package/components/ea-date-picker/src/style/stylesheet.js +19 -1
  260. package/components/ea-descriptions/index.css +33 -0
  261. package/components/ea-descriptions/index.js +171 -1
  262. package/components/ea-descriptions/index.scss +45 -0
  263. package/components/ea-descriptions/src/components/contentTemplate.js +11 -1
  264. package/components/ea-descriptions/src/components/getTdTemplate_border.js +6 -1
  265. package/components/ea-descriptions/src/components/getTdTemplate_direction.js +7 -1
  266. package/components/ea-descriptions/src/components/getThTemplate_direction.js +7 -1
  267. package/components/ea-descriptions/src/components/getThTemplate_normal.js +8 -1
  268. package/components/ea-descriptions/src/style/stylesheet.js +35 -1
  269. package/components/ea-descriptions-item/index.css +21 -0
  270. package/components/ea-descriptions-item/index.js +71 -1
  271. package/components/ea-descriptions-item/index.scss +29 -0
  272. package/components/ea-descriptions-item/src/stylesheet.js +23 -1
  273. package/components/ea-drawer/index.css +138 -0
  274. package/components/ea-drawer/index.js +251 -1
  275. package/components/ea-drawer/index.scss +208 -0
  276. package/components/ea-drawer/src/style/stylesheet.js +141 -1
  277. package/components/ea-empty/index.css +30 -0
  278. package/components/ea-empty/index.js +93 -1
  279. package/components/ea-empty/index.scss +30 -0
  280. package/components/ea-empty/src/assets/emptyStatusSVG.js +6 -1
  281. package/components/ea-empty/src/style/stylesheet.js +24 -1
  282. package/components/ea-footer/index.css +7 -0
  283. package/components/ea-footer/index.js +57 -1
  284. package/components/ea-footer/index.scss +10 -0
  285. package/components/ea-form/index.css +0 -0
  286. package/components/ea-form/index.js +121 -1
  287. package/components/ea-form/index.scss +0 -0
  288. package/components/ea-form-item/index.css +62 -0
  289. package/components/ea-form-item/index.js +152 -1
  290. package/components/ea-form-item/index.scss +83 -0
  291. package/components/ea-form-item/src/style/stylesheet.js +64 -1
  292. package/components/ea-header/index.css +7 -0
  293. package/components/ea-header/index.js +55 -1
  294. package/components/ea-header/index.scss +10 -0
  295. package/components/ea-icon/css/fontello.css +312 -226
  296. package/components/ea-icon/index.css +1 -2
  297. package/components/ea-icon/index.js +84 -1
  298. package/components/ea-image/index.css +84 -0
  299. package/components/ea-image/index.js +182 -1
  300. package/components/ea-image/index.scss +111 -0
  301. package/components/ea-image/src/assets/errorImage.js +9 -1
  302. package/components/ea-image/src/assets/errorImage.svg +7 -0
  303. package/components/ea-image/src/style/stylesheet.js +86 -1
  304. package/components/ea-image/src/utils/createPreviewTools.js +140 -1
  305. package/components/ea-infinite-scroll/index.css +0 -0
  306. package/components/ea-infinite-scroll/index.js +119 -1
  307. package/components/ea-infinite-scroll/index.scss +0 -0
  308. package/components/ea-infinite-scroll-item/index.css +0 -0
  309. package/components/ea-infinite-scroll-item/index.js +18 -1
  310. package/components/ea-infinite-scroll-item/index.scss +0 -0
  311. package/components/ea-input/index.css +139 -0
  312. package/components/ea-input/index.js +398 -1
  313. package/components/ea-input/index.scss +178 -0
  314. package/components/ea-input/src/components/createFixIcon.js +108 -1
  315. package/components/ea-input/src/components/createSuggestionBoard.js +43 -1
  316. package/components/ea-input/src/components/createWordLimitElement.js +18 -1
  317. package/components/ea-input/src/style/stylesheet.js +141 -1
  318. package/components/ea-input/src/utils/dispatchEvent.js +9 -1
  319. package/components/ea-input/src/utils/handleSearchResult.js +9 -1
  320. package/components/ea-input/src/utils/handleSuggestionBoardTrigger.js +31 -1
  321. package/components/ea-input-number/index.css +120 -0
  322. package/components/ea-input-number/index.js +308 -1
  323. package/components/ea-input-number/index.scss +132 -0
  324. package/components/ea-input-number/src/style/stylesheet.js +122 -1
  325. package/components/ea-input-number/src/utils/handleCustomEvent.js +5 -1
  326. package/components/ea-link/index.css +48 -0
  327. package/components/ea-link/index.js +122 -1
  328. package/components/ea-link/index.scss +36 -0
  329. package/components/ea-link/src/style/stylesheet.js +50 -1
  330. package/components/ea-loading/index.css +38 -0
  331. package/components/ea-loading/index.js +166 -1
  332. package/components/ea-loading/index.scss +55 -0
  333. package/components/ea-loading/src/style/stylesheet.js +40 -1
  334. package/components/ea-main/index.css +8 -0
  335. package/components/ea-main/index.js +32 -1
  336. package/components/ea-main/index.scss +11 -0
  337. package/components/ea-menu/index.css +19 -0
  338. package/components/ea-menu/index.js +131 -1
  339. package/components/ea-menu/index.scss +22 -0
  340. package/components/ea-menu/src/style/stylesheet.js +21 -1
  341. package/components/ea-menu/src/utils/handleMenuItemEvent.js +32 -1
  342. package/components/ea-menu-item/index.css +48 -0
  343. package/components/ea-menu-item/index.js +130 -1
  344. package/components/ea-menu-item/index.scss +62 -0
  345. package/components/ea-menu-item/src/style/stylesheet.js +50 -1
  346. package/components/ea-menu-item-group/index.css +42 -0
  347. package/components/ea-menu-item-group/index.js +130 -1
  348. package/components/ea-menu-item-group/index.scss +60 -0
  349. package/components/ea-menu-item-group/src/style/stylesheet.js +44 -1
  350. package/components/ea-message/index.css +47 -0
  351. package/components/ea-message/index.js +171 -1
  352. package/components/ea-message/index.scss +70 -0
  353. package/components/ea-message/src/style/stylesheet.js +48 -1
  354. package/components/ea-message/src/utils/MessageClass.js +67 -1
  355. package/components/ea-message-box/index.css +85 -0
  356. package/components/ea-message-box/index.js +211 -1
  357. package/components/ea-message-box/index.scss +113 -0
  358. package/components/ea-message-box/src/style/stylesheet.js +87 -1
  359. package/components/ea-message-box/src/utils/EaMessageBoxClass.js +60 -1
  360. package/components/ea-option/index.css +24 -0
  361. package/components/ea-option/index.js +74 -1
  362. package/components/ea-option/index.scss +31 -0
  363. package/components/ea-option/src/style/stylesheet.js +26 -1
  364. package/components/ea-option-gropu/index.css +6 -0
  365. package/components/ea-option-gropu/index.js +57 -1
  366. package/components/ea-option-gropu/index.scss +8 -0
  367. package/components/ea-page-header/index.css +33 -0
  368. package/components/ea-page-header/index.js +91 -1
  369. package/components/ea-page-header/index.scss +44 -0
  370. package/components/ea-page-header/src/style/stylesheet.js +35 -1
  371. package/components/ea-pagination/index.css +69 -0
  372. package/components/ea-pagination/index.js +305 -1
  373. package/components/ea-pagination/index.scss +89 -0
  374. package/components/ea-pagination/src/components/getMoreItem.js +20 -1
  375. package/components/ea-pagination/src/components/getPageItem.js +11 -1
  376. package/components/ea-pagination/src/components/getShowTotalItem.js +7 -1
  377. package/components/ea-pagination/src/style/stylesheet.js +71 -1
  378. package/components/ea-pane/index.css +6 -0
  379. package/components/ea-pane/index.js +52 -1
  380. package/components/ea-pane/index.scss +7 -0
  381. package/components/ea-pane/src/stylesheet.js +8 -1
  382. package/components/ea-progress/index.css +61 -0
  383. package/components/ea-progress/index.js +249 -1
  384. package/components/ea-progress/index.scss +74 -0
  385. package/components/ea-progress/src/components/SVGComm.js +18 -1
  386. package/components/ea-progress/src/style/stylesheet.js +55 -1
  387. package/components/ea-radio/index.css +82 -0
  388. package/components/ea-radio/index.js +137 -1
  389. package/components/ea-radio/index.scss +119 -0
  390. package/components/ea-radio/src/style/stylesheet.js +84 -1
  391. package/components/ea-radio-group/index.css +3 -0
  392. package/components/ea-radio-group/index.js +96 -1
  393. package/components/ea-radio-group/index.scss +3 -0
  394. package/components/ea-rate/index.css +44 -0
  395. package/components/ea-rate/index.js +243 -1
  396. package/components/ea-rate/index.scss +55 -0
  397. package/components/ea-rate/src/components/rateComm.js +20 -1
  398. package/components/ea-rate/src/style/stylesheet.js +45 -1
  399. package/components/ea-result/index.css +37 -0
  400. package/components/ea-result/index.js +109 -1
  401. package/components/ea-result/index.scss +46 -0
  402. package/components/ea-result/src/style/stylesheet.js +39 -1
  403. package/components/ea-select/index.css +47 -0
  404. package/components/ea-select/index.js +312 -1
  405. package/components/ea-select/index.scss +70 -0
  406. package/components/ea-select/src/style/stylesheet.js +49 -1
  407. package/components/ea-skeleton/index.css +12 -0
  408. package/components/ea-skeleton/index.js +148 -1
  409. package/components/ea-skeleton/index.scss +16 -0
  410. package/components/ea-skeleton/src/style/stylesheet.js +14 -1
  411. package/components/ea-skeleton/src/utils/createSkeletonElement.js +7 -1
  412. package/components/ea-skeleton-item/index.css +69 -0
  413. package/components/ea-skeleton-item/index.js +82 -1
  414. package/components/ea-skeleton-item/index.scss +107 -0
  415. package/components/ea-skeleton-item/src/assets/imageSVG.js +8 -1
  416. package/components/ea-skeleton-item/src/style/stylesheet.js +71 -1
  417. package/components/ea-step/index.css +84 -0
  418. package/components/ea-step/index.js +230 -1
  419. package/components/ea-step/index.scss +110 -0
  420. package/components/ea-step/src/style/stylesheet.js +86 -1
  421. package/components/ea-steps/index.css +19 -0
  422. package/components/ea-steps/index.js +104 -1
  423. package/components/ea-steps/index.scss +23 -0
  424. package/components/ea-steps/src/style/stylesheet.js +21 -1
  425. package/components/ea-submenu/index.css +65 -0
  426. package/components/ea-submenu/index.js +141 -1
  427. package/components/ea-submenu/index.scss +88 -0
  428. package/components/ea-submenu/src/style/stylesheet.js +67 -1
  429. package/components/ea-switch/index.css +90 -0
  430. package/components/ea-switch/index.js +189 -1
  431. package/components/ea-switch/index.scss +117 -0
  432. package/components/ea-switch/src/style/stylesheet.js +92 -1
  433. package/components/ea-tab/index.css +68 -0
  434. package/components/ea-tab/index.js +138 -1
  435. package/components/ea-tab/index.scss +96 -0
  436. package/components/ea-tab/src/style/stylesheet.js +70 -1
  437. package/components/ea-table/index.css +98 -0
  438. package/components/ea-table/index.js +555 -1
  439. package/components/ea-table/index.scss +90 -0
  440. package/components/ea-table/src/style/stylesheet.js +100 -1
  441. package/components/ea-table-column/index.css +0 -0
  442. package/components/ea-table-column/index.js +164 -1
  443. package/components/ea-table-column/index.scss +0 -0
  444. package/components/ea-tabs/index.css +45 -0
  445. package/components/ea-tabs/index.js +245 -1
  446. package/components/ea-tabs/index.scss +64 -0
  447. package/components/ea-tabs/src/style/stylesheet.js +47 -1
  448. package/components/ea-tag/index.css +90 -0
  449. package/components/ea-tag/index.js +107 -1
  450. package/components/ea-tag/index.scss +71 -0
  451. package/components/ea-tag/src/style/stylesheet.js +92 -1
  452. package/components/ea-textarea/index.css +37 -0
  453. package/components/ea-textarea/index.js +277 -1
  454. package/components/ea-textarea/index.scss +48 -0
  455. package/components/ea-textarea/src/style/stylesheet.js +39 -1
  456. package/components/ea-time-picker/index.css +82 -0
  457. package/components/ea-time-picker/index.js +379 -1
  458. package/components/ea-time-picker/index.scss +110 -0
  459. package/components/ea-time-picker/src/style/stylesheet.js +84 -1
  460. package/components/ea-timeline/index.css +0 -0
  461. package/components/ea-timeline/index.js +74 -1
  462. package/components/ea-timeline/index.scss +1 -0
  463. package/components/ea-timeline/style/stylesheet.js +3 -1
  464. package/components/ea-timeline-item/index.css +79 -0
  465. package/components/ea-timeline-item/index.js +146 -1
  466. package/components/ea-timeline-item/index.scss +92 -0
  467. package/components/ea-timeline-item/src/style/stylesheet.js +81 -1
  468. package/components/ea-ui-base-style.css +0 -0
  469. package/components/ea-ui-base-style.scss +153 -0
  470. package/components/globalConfig.js +10 -0
  471. package/components/index.js +67 -0
  472. package/package.json +1 -1
  473. package/public/logo.png +0 -0
  474. package/utils/Validator.js +16 -1
  475. package/utils/createElement.js +30 -1
  476. package/utils/handleDefaultAttrIsTrue.js +11 -1
  477. package/utils/handleTemplate.js +19 -1
  478. package/utils/setStyle.js +8 -1
  479. package/utils/timeout.js +16 -1
  480. package/components/ea-icon/css/animation.css +0 -85
  481. package/components/ea-icon/css/fontello-embedded.css +0 -181
  482. package/components/ea-icon/css/fontello-ie7-codes.css +0 -123
  483. package/components/ea-icon/css/fontello-ie7.css +0 -134
@@ -1 +1,555 @@
1
- import Base from"../Base.js";import"../ea-icon/index.js";import{createElement}from"../../utils/createElement.js";import"../ea-table-column/index.js";import"../ea-checkbox/index.js";import{stylesheet}from"./src/style/stylesheet.js";export class EaTable extends Base{#e;#t;#r;#a;#l;#o;#s;#i;#n;#h;#d;#c;constructor(){super();const e=this.attachShadow({mode:"open"});e.innerHTML='\n <div class="ea-table_wrap" part="container">\n <div class="ea-table_header-wrap" part="header-wrap">\n <table class="ea-table_header" part="header-table">\n <colgroup></colgroup>\n <thead></thead>\n </table>\n </div>\n <div class="ea-table_body-wrap" part="body-wrap">\n <table class="ea-table_main" part="body-table">\n <colgroup></colgroup>\n <tbody></tbody>\n <slot name="empty" style="display: none;"></slot>\n </table>\n </div>\n </div>\n <slot></slot>\n <slot name="header"></slot>\n <slot name="body"></slot>\n ',this.build(e,stylesheet),this.#e=this.shadowRoot.querySelector(".ea-table_wrap"),this.#t=this.shadowRoot.querySelector(".ea-table_header"),this.#r=this.#t.querySelector(".ea-table_header colgroup"),this.#a=this.#t.querySelector(".ea-table_header thead"),this.#l=this.shadowRoot.querySelector(".ea-table_main"),this.#o=this.#l.querySelector(".ea-table_body-wrap colgroup"),this.#s=this.#l.querySelector(".ea-table_body-wrap tbody"),this.#i=this.querySelectorAll("ea-table-column")}get border(){return this.getAttrBoolean("border")}set border(e){this.setAttribute("border",e),this.#e.classList.toggle("border",e),this.#t.classList.toggle("border",e),this.#l.classList.toggle("border",e)}get stripe(){return this.getAttrBoolean("stripe")}set stripe(e){this.setAttribute("stripe",e),this.#e.classList.toggle("stripe",e)}get height(){return this.getAttrNumber("height")}set height(e){if(this.setAttribute("height",e),e){this.shadowRoot.querySelector(".ea-table_body-wrap").style.height=`${e}px`}else this.#e.style.height=""}get highlightCurrentRow(){return this.getAttrBoolean("highlight-current-row")||!1}set highlightCurrentRow(e){this.setAttribute("highlight-current-row",e)}get currentRow(){return this.getAttrNumber("current-row")||0}set currentRow(e){this.setAttribute("current-row",e)}get data(){return this.#h||[]}set data(e){const t=JSON.stringify(e);let r=JSON.parse(t);this.#h=r,this.renderTableBody(r)}get currentRowDetail(){const e=this.currentRow;return{index:e,data:this.data[e],target:this.#l.querySelectorAll(".ea-table__row")[e]||null}}#b(e,t,r,a,l,o=!1){const s=this.parentNode.clientWidth,i=Array.from(a.children).reduce(((e,t)=>e+Number(t.getAttribute("width"))),0);s>0&&i<=s?(r.style.width=s-l+"px",e.style.width=`${s}px`,t.style.width=s-l+"px",o&&(e.style.width=`${s}px`)):(r.style.width=`${s}px`,e.style.width=`${s}px`,t.style.width=`${s}px`)}#p(){const e=this.shadowRoot.querySelector(".ea-table_header-wrap"),t=this.shadowRoot.querySelector(".ea-table_body-wrap");let r=null;const a=()=>{this.#b(this.#e,this.#l,this.#t,this.#r,r)};window.addEventListener("resize",(()=>{a()})),setTimeout((()=>{r=this.#e.getBoundingClientRect().width-this.#l.getBoundingClientRect().width,a()}),0),t.addEventListener("scroll",(r=>{e.style.transform=`translateX(-${t.scrollLeft}px)`}))}#u(e,t){if(t.sortable&&"selection"!==t.type){const r=createElement("ea-icon");r.icon="icon-angle-down",r.style.float="right",e.appendChild(r),e.addEventListener("click",(()=>{r.color="#5cb6ff";"asc"===t.order?(t.order="desc",r.icon="icon-angle-up"):(t.order="asc",r.icon="icon-angle-down");let e=this.data.sort(((e,r)=>{const a="null"!==t.prop?t.prop:t.type;return"asc"===t.order?String(e[a]).localeCompare(r[a]):String(r[a]).localeCompare(e[a])}));this.renderTableBody(e),this.dispatchEvent(new CustomEvent("sort-change",{detail:{prop:t.prop,order:t.order},composed:!0,bubbles:!0}))}))}}#y(){this.querySelectorAll("ea-table-column");this.#r.innerHTML="",this.#o.innerHTML="",this.#a.innerHTML="";const e=(t,r=1)=>{const a=createElement("tr");a.part="row",a.setAttribute("index",r),Array.from(t).forEach((t=>{if("EA-TABLE-COLUMN"!==t.nodeName)return;const l=createElement("th","ea-table__cell th-cell");if(l.part="th-cell",l.setAttribute("colspan",t.colspan||1),l.setAttribute("rowspan",t.rowspan||1),l.appendChild(t),a.appendChild(l),"selection"===t.type&&(this.#n=t.querySelector("ea-checkbox")),t.children.length>0)e(t.children,++r);else{const e=createElement("col");e.setAttribute("width",t.getAttribute("width")||100);const r=createElement("col");r.setAttribute("width",t.getAttribute("width")||100),this.#r.appendChild(e),this.#o.appendChild(r),this.#a.appendChild(a),this.#u(l,t)}}))};e(this.children)}#g(e,t){e.addEventListener("click",(()=>{const r=this.#s.querySelectorAll(".ea-table__row");let a=!1,l=!1;r.forEach(((e,t)=>{"index"===e.type&&(a=!0),"selection"===e.type&&(l=!0),e.index=t,this.highlightCurrentRow&&e.classList.remove("is-current-row")})),this.highlightCurrentRow&&e.classList.add("is-current-row"),l&&delete t.selection,this.currentRow=e.index,this.dispatchEvent(new CustomEvent("current-change",{composed:!0,bubbles:!0,detail:{index:e.index,row:e,data:t}}))}))}#m(e,t){const r=this.#t.querySelectorAll("ea-table-column");let a=0,l=!1;return r.forEach(((e,r)=>{e.type===t&&(a=r,l=!0)})),l?e.map(((e,r)=>{const l={},o=Object.keys(e);return o.splice(a,0,t),o.forEach(((t,a)=>{l[t]="index"===t?r+1:"selection"===t?"<ea-checkbox></ea-checkbox>":e[t]})),l})):e}#T(){const e=this.#s.querySelectorAll("tr"),t=this.shadowRoot.querySelector('slot[name="body"]');t.assignedNodes().length?(e.forEach((e=>{const r=createElement("td","ea-table__cell");r.part="td-cell",Array.from(t.assignedNodes()).forEach((t=>{const a=t.cloneNode(!0);r.appendChild(a),a.addEventListener("click",(()=>{t.dispatchEvent(new CustomEvent("click",{bubbles:!0,composed:!0,detail:{row:e}}))}))})),e.appendChild(r)})),t.style.display="none"):t.remove()}renderTableBody(e){if(this.#s.innerHTML="",!this.#d){e=this.#m(e,"index"),e=this.#m(e,"selection");const t=Array.from(this.#t.querySelectorAll("ea-table-column")).map(((e,t)=>"default"===e.type?e.prop:e.type));e=e.map((e=>{const r={};return t.forEach((t=>{null!==t&&"null"!==t&&void 0!==t&&"undefined"!==t&&(r[t]=e[t])})),r})),this.#d=!0}e.forEach(((t,r)=>{const a=createElement("tr","ea-table__row");a.part="row",Object.entries(t).forEach((([r,l])=>{const o=createElement("td","ea-table__cell td_cell");o.part="td-cell",o.innerHTML=l,"selection"===r&&o.querySelector("ea-checkbox").addEventListener("change",(r=>{const l=this.shadowRoot.querySelectorAll("ea-checkbox"),o=Array.from(l).filter(((e,t)=>(e.index=t,e.checked))),s=o.map((t=>{const r=e[t.index];return delete r.selection,r}));this.dispatchEvent(new CustomEvent("body-selection-change",{composed:!0,bubbles:!0,detail:{checked:r.detail.checked,currentRow:a,currentRowData:t,checkedElements:o,checkedElementsData:s}}))})),a.appendChild(o)})),this.#g(a,t),this.#s.appendChild(a)})),this.#h=e;const t=this.shadowRoot.querySelector('slot[name="empty"]');e.length>0?t.style.display="none":t.style.display="block",this.#T()}#w(){const e=this.shadowRoot.querySelectorAll("ea-table-column");Array.from(e).some((e=>"selection"===e.type))&&(this.addEventListener("header-selection-change",(e=>{this.#l.querySelectorAll("ea-checkbox").forEach((t=>{t.checked=e.detail.checked}))})),this.addEventListener("body-selection-change",(e=>{const t=this.#a.querySelector("ea-table-column").shadowRoot.querySelector("ea-checkbox"),r=this.#l.querySelectorAll("ea-checkbox");let a=Array.from(r).map((e=>e.checked));a.every((e=>!0===e))?t.checked=!0:a.every((e=>!1===e))?t.checked=!1:t.indeterminate=!0})))}#E(){const e=this.shadowRoot.querySelector('slot[name="header"]');if(e.assignedNodes().length>0){const t=this.#a.querySelector("tr"),r=createElement("th","ea-table__cell th-cell");r.part="th-cell";let a=1;Array.from(this.#a.querySelectorAll("th")).forEach((e=>{e.rowSpan>a&&(a=e.rowSpan)})),r.rowSpan=a,r.appendChild(e),t.appendChild(r)}else e.remove()}connectedCallback(){this.style.position="relative",this.border=this.border,this.stripe=this.stripe,this.height=this.height,this.highlightCurrentRow=this.highlightCurrentRow,this.#y(),this.#p(),this.#w(),this.#E()}}customElements.get("ea-table")||customElements.define("ea-table",EaTable);
1
+ // @ts-nocheck
2
+ import Base from '../Base.js';
3
+ import '../ea-icon/index.js'
4
+ import { createElement } from '../../utils/createElement.js';
5
+
6
+ import "../ea-table-column/index.js"
7
+ import "../ea-checkbox/index.js"
8
+
9
+ import { stylesheet } from './src/style/stylesheet.js';
10
+ import { timeout } from '../../utils/timeout.js';
11
+
12
+ export class EaTable extends Base {
13
+ #container;
14
+
15
+ #headerTable;
16
+ #headerTableColgroup;
17
+ #headerTableThead;
18
+
19
+ #bodyTable;
20
+ #bodyTableColgroup
21
+ #bodyTableTbody
22
+
23
+ #tableColumns;
24
+
25
+ #checkAllElement;
26
+
27
+ #tableData;
28
+
29
+ #tableDataIsInit;
30
+
31
+ #bodySlot;
32
+
33
+ constructor() {
34
+ super();
35
+
36
+ const shadowRoot = this.attachShadow({ mode: 'open' });
37
+ shadowRoot.innerHTML = `
38
+ <div class="ea-table_wrap" part="container">
39
+ <div class="ea-table_header-wrap" part="header-wrap">
40
+ <table class="ea-table_header" part="header-table">
41
+ <colgroup></colgroup>
42
+ <thead></thead>
43
+ </table>
44
+ </div>
45
+ <div class="ea-table_body-wrap" part="body-wrap">
46
+ <table class="ea-table_main" part="body-table">
47
+ <colgroup></colgroup>
48
+ <tbody></tbody>
49
+ <slot name="empty" style="display: none;"></slot>
50
+ </table>
51
+ </div>
52
+ </div>
53
+ <slot></slot>
54
+ <slot name="header"></slot>
55
+ <slot name="body"></slot>
56
+ `;
57
+
58
+ this.build(shadowRoot, stylesheet);
59
+
60
+ this.#container = this.shadowRoot.querySelector('.ea-table_wrap');
61
+
62
+ this.#headerTable = this.shadowRoot.querySelector('.ea-table_header');
63
+ this.#headerTableColgroup = this.#headerTable.querySelector('.ea-table_header colgroup');
64
+ this.#headerTableThead = this.#headerTable.querySelector('.ea-table_header thead');
65
+
66
+ this.#bodyTable = this.shadowRoot.querySelector('.ea-table_main');
67
+ this.#bodyTableColgroup = this.#bodyTable.querySelector('.ea-table_body-wrap colgroup');
68
+ this.#bodyTableTbody = this.#bodyTable.querySelector('.ea-table_body-wrap tbody');
69
+
70
+ this.#tableColumns = this.querySelectorAll('ea-table-column');
71
+ }
72
+
73
+ // ------- border 边框 -------
74
+ // #region
75
+ get border() {
76
+ return this.getAttrBoolean('border');
77
+ }
78
+
79
+ set border(value) {
80
+ this.setAttribute('border', value);
81
+
82
+ this.#container.classList.toggle('border', value);
83
+ this.#headerTable.classList.toggle('border', value);
84
+ this.#bodyTable.classList.toggle('border', value);
85
+ }
86
+ // #endregion
87
+ // ------- end -------
88
+
89
+ // ------- stripe 斑马线条纹 -------
90
+ // #region
91
+ get stripe() {
92
+ return this.getAttrBoolean('stripe');
93
+ }
94
+
95
+ set stripe(value) {
96
+ this.setAttribute('stripe', value);
97
+
98
+ this.#container.classList.toggle('stripe', value);
99
+ }
100
+ // #endregion
101
+ // ------- end -------
102
+
103
+ // ------- height 表格高度 -------
104
+ // #region
105
+ get height() {
106
+ return this.getAttrNumber('height');
107
+ }
108
+
109
+ set height(value) {
110
+ this.setAttribute('height', value);
111
+
112
+ if (value) {
113
+ const bodyWrap = this.shadowRoot.querySelector('.ea-table_body-wrap');
114
+ bodyWrap.style.height = `${value}px`;
115
+ }
116
+ else this.#container.style.height = '';
117
+ }
118
+ // #endregion
119
+ // ------- end -------
120
+
121
+ // ------- highlight-current-row 当前行高亮 -------
122
+ // #region
123
+ get highlightCurrentRow() {
124
+ return this.getAttrBoolean('highlight-current-row') || false;
125
+ }
126
+
127
+ set highlightCurrentRow(value) {
128
+ this.setAttribute('highlight-current-row', value);
129
+ }
130
+ // #endregion
131
+ // ------- end -------
132
+
133
+ // ------- currentRow 当前行 -------
134
+ // #region
135
+ get currentRow() {
136
+ return this.getAttrNumber('current-row') || 0;
137
+ }
138
+
139
+ set currentRow(value) {
140
+ this.setAttribute('current-row', value);
141
+ }
142
+ // #endregion
143
+ // ------- end -------
144
+
145
+ // ------- data 数据 -------
146
+ // #region
147
+ get data() {
148
+ return this.#tableData || [];
149
+ }
150
+
151
+ set data(value) {
152
+ const strData = JSON.stringify(value);
153
+ let jsonData = JSON.parse(strData);
154
+
155
+ this.#tableData = jsonData;
156
+
157
+ this.renderTableBody(jsonData);
158
+ }
159
+ // #endregion
160
+ // ------- end -------
161
+
162
+ // ------- currentRowDetail 当前行详情 -------
163
+ // #region
164
+ get currentRowDetail() {
165
+ const index = this.currentRow;
166
+ const data = this.data[index];
167
+ const target = this.#bodyTable.querySelectorAll('.ea-table__row')[index] || null;
168
+ return { index, data, target };
169
+ }
170
+ // #endregion
171
+ // ------- end -------
172
+
173
+ #handleResize(bodyWrap, bodyTable, headerWrap, headerColgroup, scrollbarWidth, isInit = false) {
174
+ // 获取父元素的宽度
175
+ const width = this.parentNode.clientWidth;
176
+
177
+ // 计算所有列的宽度之和
178
+ const colWidth = Array.from(headerColgroup.children).reduce((pre, cur) => {
179
+ return pre + Number(cur.getAttribute('width'));
180
+ }, 0);
181
+
182
+ // 根据窗口和列宽度的比较,设置表头和表格内容部分的宽度
183
+ if (width > 0 && colWidth <= width) {
184
+ headerWrap.style.width = `${width - scrollbarWidth}px`;
185
+ bodyWrap.style.width = `${width}px`;
186
+ bodyTable.style.width = `${width - scrollbarWidth}px`;
187
+
188
+ // 在初始化阶段,表格内容部分的宽度应与窗口宽度相同
189
+ if (isInit) bodyWrap.style.width = `${width}px`;
190
+ } else {
191
+ // 当窗口宽度不足以显示所有列时,表格内容部分的宽度应与窗口宽度相同
192
+ headerWrap.style.width = `${width}px`;
193
+ bodyWrap.style.width = `${width}px`;
194
+ bodyTable.style.width = `${width}px`;
195
+ }
196
+ }
197
+
198
+ #handleHasGutterTable() {
199
+ const headerWrap = this.shadowRoot.querySelector('.ea-table_header-wrap');
200
+ const bodyWrap = this.shadowRoot.querySelector('.ea-table_body-wrap');
201
+
202
+ let scrollbarWidth = null;
203
+
204
+ const resizeFn = () => {
205
+ this.#handleResize(this.#container, this.#bodyTable, this.#headerTable, this.#headerTableColgroup, scrollbarWidth);
206
+ }
207
+
208
+ window.addEventListener('resize', () => {
209
+ resizeFn();
210
+ });
211
+
212
+ setTimeout(() => {
213
+ scrollbarWidth = this.#container.getBoundingClientRect().width - this.#bodyTable.getBoundingClientRect().width;
214
+ resizeFn();
215
+ }, 0);
216
+
217
+ // 监听表格内容部分的滚动事件,保持表头位置同步
218
+ bodyWrap.addEventListener('scroll', (e) => {
219
+ headerWrap.style.transform = `translateX(-${bodyWrap.scrollLeft}px)`;
220
+ });
221
+ }
222
+
223
+ #handleSortableTh(th, subchild) {
224
+ if (subchild.sortable && subchild.type !== 'selection') {
225
+ const icon = createElement('ea-icon');
226
+ icon.icon = "icon-angle-down";
227
+ icon.style.float = 'right';
228
+ th.appendChild(icon);
229
+
230
+ th.addEventListener('click', () => {
231
+ icon.color = "#5cb6ff";
232
+ const order = subchild.order;
233
+ if (order === "asc") {
234
+ subchild.order = "desc";
235
+ icon.icon = "icon-angle-up";
236
+ } else {
237
+ subchild.order = "asc";
238
+ icon.icon = "icon-angle-down";
239
+ }
240
+
241
+ let data = this.data.sort((a, b) => {
242
+ const key = subchild.prop !== "null" ? subchild.prop : subchild.type;
243
+
244
+ return subchild.order === "asc" ? String(a[key]).localeCompare(b[key]) : String(b[key]).localeCompare(a[key]);
245
+ })
246
+
247
+ this.renderTableBody(data);
248
+
249
+ this.dispatchEvent(new CustomEvent('sort-change', {
250
+ detail: {
251
+ prop: subchild.prop,
252
+ order: subchild.order
253
+ },
254
+ composed: true,
255
+ bubbles: true,
256
+ }));
257
+ });
258
+ }
259
+ }
260
+
261
+ #renderTableHeader() {
262
+ const columns = this.querySelectorAll('ea-table-column');
263
+ this.#headerTableColgroup.innerHTML = '';
264
+ this.#bodyTableColgroup.innerHTML = '';
265
+ this.#headerTableThead.innerHTML = '';
266
+
267
+ const createThElement = (child, i = 1) => {
268
+ const newTr = createElement('tr');
269
+ newTr.part = 'row';
270
+ newTr.setAttribute('index', i);
271
+ Array.from(child).forEach(subchild => {
272
+ if (subchild.nodeName !== 'EA-TABLE-COLUMN') return;
273
+
274
+ const th = createElement('th', 'ea-table__cell th-cell');
275
+ th.part = 'th-cell';
276
+
277
+ th.setAttribute('colspan', subchild.colspan || 1);
278
+ th.setAttribute('rowspan', subchild.rowspan || 1);
279
+
280
+ th.appendChild(subchild);
281
+ newTr.appendChild(th);
282
+
283
+ if (subchild.type === 'selection') {
284
+ this.#checkAllElement = subchild.querySelector('ea-checkbox');
285
+ }
286
+
287
+ if (subchild.children.length > 0) {
288
+ createThElement(subchild.children, ++i);
289
+ } else {
290
+ const headerCol = createElement('col');
291
+ headerCol.setAttribute('width', subchild.getAttribute('width') || 100);
292
+ const bodyCol = createElement('col');
293
+ bodyCol.setAttribute('width', subchild.getAttribute('width') || 100);
294
+ this.#headerTableColgroup.appendChild(headerCol);
295
+ this.#bodyTableColgroup.appendChild(bodyCol);
296
+
297
+ this.#headerTableThead.appendChild(newTr);
298
+
299
+ this.#handleSortableTh(th, subchild);
300
+ }
301
+ });
302
+ };
303
+
304
+ createThElement(this.children);
305
+ }
306
+
307
+ #handleHighlightCurrentRow(row, data) {
308
+ row.addEventListener('click', () => {
309
+ const rows = this.#bodyTableTbody.querySelectorAll('.ea-table__row');
310
+ let isIndexType = false;
311
+ let isSelectionType = false;
312
+ rows.forEach((row, index) => {
313
+ if (row.type === "index") isIndexType = true;
314
+ if (row.type === "selection") isSelectionType = true;
315
+
316
+ row.index = index;
317
+
318
+ if (this.highlightCurrentRow) row.classList.remove('is-current-row');
319
+ });
320
+ if (this.highlightCurrentRow) row.classList.add('is-current-row');
321
+
322
+ if (isSelectionType) delete data.selection;
323
+
324
+ this.currentRow = row.index;
325
+
326
+ this.dispatchEvent(new CustomEvent('current-change', {
327
+ composed: true,
328
+ bubbles: true,
329
+ detail: {
330
+ index: row.index,
331
+ row,
332
+ data
333
+ }
334
+ }));
335
+ });
336
+ }
337
+
338
+ #handleTypeTh(data, type) {
339
+ const ths = this.#headerTable.querySelectorAll('ea-table-column');
340
+ let colIndex = 0;
341
+ let isIndexTh = false;
342
+ ths.forEach((item, i) => {
343
+ if (item.type === type) {
344
+ colIndex = i;
345
+ isIndexTh = true;
346
+ }
347
+ });
348
+
349
+ if (isIndexTh) {
350
+ return data.map((item, index) => {
351
+ const obj = {};
352
+ const arr = Object.keys(item);
353
+ arr.splice(colIndex, 0, type);
354
+ arr.forEach((key, i) => {
355
+ if (key === 'index') obj[key] = index + 1;
356
+ else if (key === 'selection') obj[key] = `<ea-checkbox></ea-checkbox>`;
357
+ else obj[key] = item[key];
358
+ });
359
+
360
+ return obj;
361
+ });
362
+ }
363
+
364
+ return data;
365
+ }
366
+
367
+ #handleRenderBodySlot() {
368
+ const trs = this.#bodyTableTbody.querySelectorAll('tr');
369
+ const slot = this.shadowRoot.querySelector('slot[name="body"]');
370
+
371
+ timeout(() => {
372
+ if (!slot.assignedNodes().length) {
373
+ slot.remove();
374
+ } else {
375
+ trs.forEach(item => {
376
+ const div = createElement('td', 'ea-table__cell');
377
+ div.part = 'td-cell';
378
+ Array.from(slot.assignedNodes()).forEach(slotItem => {
379
+ const cloneNode = slotItem.cloneNode(true);
380
+ div.appendChild(cloneNode);
381
+
382
+ cloneNode.addEventListener('click', () => {
383
+ slotItem.dispatchEvent(new CustomEvent('click', {
384
+ bubbles: true,
385
+ composed: true,
386
+ detail: {
387
+ row: item
388
+ }
389
+ }));
390
+ });
391
+ });
392
+ item.appendChild(div);
393
+ });
394
+ slot.style.display = 'none';
395
+
396
+ }
397
+ }, 0)
398
+ }
399
+
400
+ renderTableBody(data) {
401
+ this.#bodyTableTbody.innerHTML = '';
402
+
403
+ if (!this.#tableDataIsInit) {
404
+ data = this.#handleTypeTh(data, 'index');
405
+ data = this.#handleTypeTh(data, 'selection');
406
+
407
+ const thSequence = Array.from(this.#headerTable.querySelectorAll('ea-table-column')).map((item, i) => {
408
+ return item.type === "default" ? item.prop : item.type;
409
+ });
410
+ data = data.map(item => {
411
+ const obj = {};
412
+ thSequence.forEach(key => {
413
+ if (key !== null && key !== 'null' && typeof key !== 'undefined' && key !== "undefined")
414
+ obj[key] = item[key];
415
+ });
416
+ return obj;
417
+ });
418
+
419
+ this.#tableDataIsInit = true;
420
+ }
421
+
422
+
423
+ data.forEach((item, index) => {
424
+ const row = createElement('tr', 'ea-table__row');
425
+ row.part = 'row';
426
+
427
+ Object.entries(item).forEach(([key, value]) => {
428
+ const cell = createElement('td', 'ea-table__cell td_cell');
429
+ cell.part = 'td-cell';
430
+ cell.innerHTML = value;
431
+
432
+ if (key === "selection") {
433
+ cell.querySelector('ea-checkbox').addEventListener('change', (e) => {
434
+ const checkboxes = this.shadowRoot.querySelectorAll('ea-checkbox');
435
+ const checkedElements = Array.from(checkboxes).filter((checkbox, index) => {
436
+ checkbox.index = index;
437
+ return checkbox.checked;
438
+ });
439
+ const checkedElementsData = checkedElements.map(checkbox => {
440
+ const currentData = data[checkbox.index];
441
+ delete currentData.selection;
442
+
443
+ return currentData;
444
+ });
445
+
446
+ this.dispatchEvent(new CustomEvent('body-selection-change', {
447
+ composed: true,
448
+ bubbles: true,
449
+ detail: {
450
+ checked: e.detail.checked,
451
+ currentRow: row,
452
+ currentRowData: item,
453
+ checkedElements,
454
+ checkedElementsData
455
+ }
456
+ }));
457
+ });
458
+ }
459
+
460
+ row.appendChild(cell);
461
+ });
462
+
463
+ this.#handleHighlightCurrentRow(row, item);
464
+
465
+ this.#bodyTableTbody.appendChild(row);
466
+ });
467
+ this.#tableData = data;
468
+
469
+ const emptySlot = this.shadowRoot.querySelector('slot[name="empty"]');
470
+ if (data.length > 0) {
471
+ emptySlot.style.display = 'none';
472
+ } else {
473
+ emptySlot.style.display = 'block';
474
+ }
475
+
476
+
477
+ this.#handleRenderBodySlot();
478
+ }
479
+
480
+ #initSelectionTypeTh() {
481
+ const ths = this.shadowRoot.querySelectorAll('ea-table-column');
482
+ if (!Array.from(ths).some(item => item.type === "selection")) return;
483
+
484
+ this.addEventListener('header-selection-change', (e) => {
485
+ const checkboxes = this.#bodyTable.querySelectorAll('ea-checkbox');
486
+ checkboxes.forEach(item => {
487
+ item.checked = e.detail.checked;
488
+ });
489
+ })
490
+
491
+ this.addEventListener('body-selection-change', (e) => {
492
+ const checkallBtn = this.#headerTableThead.querySelector('ea-table-column').shadowRoot.querySelector('ea-checkbox');
493
+ const checkboxes = this.#bodyTable.querySelectorAll('ea-checkbox');
494
+
495
+ let isAllSelectedArr = Array.from(checkboxes).map(item => {
496
+ return item.checked;
497
+ })
498
+
499
+
500
+ if (isAllSelectedArr.every(item => item === true)) {
501
+ checkallBtn.checked = true;
502
+ } else if (isAllSelectedArr.every(item => item === false)) {
503
+ checkallBtn.checked = false;
504
+ } else {
505
+ checkallBtn.indeterminate = true;
506
+ }
507
+ })
508
+ }
509
+
510
+ #initHeaderSlot() {
511
+ const headerSlot = this.shadowRoot.querySelector('slot[name="header"]');
512
+ if (headerSlot.assignedNodes().length > 0) {
513
+ const tr = this.#headerTableThead.querySelector('tr');
514
+ const th = createElement('th', 'ea-table__cell th-cell');
515
+ th.part = 'th-cell';
516
+ let maxRowSpan = 1;
517
+ Array.from(this.#headerTableThead.querySelectorAll('th')).forEach(item => {
518
+ if (item.rowSpan > maxRowSpan) maxRowSpan = item.rowSpan;
519
+ });
520
+ th.rowSpan = maxRowSpan;
521
+ th.appendChild(headerSlot);
522
+ tr.appendChild(th);
523
+ } else {
524
+ headerSlot.remove();
525
+ }
526
+ }
527
+
528
+ connectedCallback() {
529
+ this.style.position = 'relative';
530
+
531
+ this.border = this.border;
532
+
533
+ this.stripe = this.stripe;
534
+
535
+ this.height = this.height;
536
+
537
+ this.highlightCurrentRow = this.highlightCurrentRow;
538
+
539
+ this.#renderTableHeader();
540
+
541
+ this.#handleHasGutterTable();
542
+
543
+ this.#initSelectionTypeTh();
544
+
545
+ this.#initHeaderSlot();
546
+
547
+ timeout(() => {
548
+ this.dispatchEvent(new CustomEvent('table-ready'));
549
+ }, 20);
550
+ }
551
+ }
552
+
553
+ if (!customElements.get('ea-table')) {
554
+ customElements.define('ea-table', EaTable);
555
+ }
@@ -0,0 +1,90 @@
1
+ .ea-table_wrap,
2
+ .ea-table_fixed-column {
3
+ position: relative;
4
+ background-color: #fff;
5
+ overflow: hidden;
6
+
7
+ .ea-table_header-wrap .ea-table_header,
8
+ .ea-table_body-wrap .ea-table_main,
9
+ .ea-table_main {
10
+ position: relative;
11
+
12
+ box-sizing: border-box;
13
+ padding: 12px 0;
14
+
15
+ width: 100%;
16
+ min-width: 0;
17
+
18
+ text-overflow: ellipsis;
19
+ vertical-align: middle;
20
+ text-align: left;
21
+
22
+ border-collapse: collapse;
23
+ table-layout: fixed;
24
+
25
+ .ea-table__cell {
26
+ border-top: 1px solid #ebeef5;
27
+ border-bottom: 1px solid #ebeef5;
28
+
29
+ box-sizing: border-box;
30
+
31
+ padding: 8px;
32
+ color: #606266;
33
+
34
+ &.th-cell {
35
+ color: #909399;
36
+ }
37
+
38
+ &.is-gutter {
39
+ width: 15px;
40
+ padding: 0;
41
+ }
42
+ }
43
+
44
+ &.border {
45
+ .ea-table__cell {
46
+ border: 1px solid #ebeef5;
47
+ padding: 8px;
48
+ color: #606266;
49
+
50
+ &.is-gutter {
51
+ width: 15px;
52
+ padding: 0;
53
+ min-width: none;
54
+ }
55
+ }
56
+ }
57
+
58
+ &.stripe {
59
+ .ea-table__row:nth-child(2n) {
60
+ background-color: #fafafa;
61
+ }
62
+ }
63
+ }
64
+
65
+ .ea-table_main {
66
+ position: absolute;
67
+ left: 0;
68
+ top: 0;
69
+ }
70
+
71
+ .ea-table_header-wrap {
72
+ .ea-table_header {
73
+ }
74
+ }
75
+
76
+ .ea-table_body-wrap {
77
+ overflow-y: auto;
78
+
79
+ .ea-table_main {
80
+ .ea-table__row {
81
+ &:hover {
82
+ background-color: #f5f7fa;
83
+ }
84
+ &.is-current-row {
85
+ background-color: #ecf5ff;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }