index.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { VNode } from 'vue'
  2. import { VxeCore } from './src/core'
  3. import { setConfig, getConfig } from './src/config'
  4. import { globalStore } from './src/dataStore'
  5. import { setIcon, getIcon, renderGlobalIcon, renderCustomIcon } from './src/icon'
  6. import { setTheme, getTheme } from './src/theme'
  7. import { globalEvents, GLOBAL_EVENT_KEYS, createEvent } from './src/event'
  8. import { globalResize } from './src/resize'
  9. import { getI18n, setI18n, setLanguage, hasLanguage, getLanguage } from './src/i18n'
  10. import { renderer } from './src/renderer'
  11. import { validators } from './src/validators'
  12. import { menus } from './src/menus'
  13. import { formats } from './src/formats'
  14. import { commands } from './src/commands'
  15. import { interceptor } from './src/interceptor'
  16. import { clipboard } from './src/clipboard'
  17. import { permission } from './src/permission'
  18. import { log } from './src/log'
  19. import { globalMixins } from './src/mixins'
  20. import { getSlotVNs } from './src/vm'
  21. import XEUtils from 'xe-utils'
  22. import { VxeGlobalComponents, VxeUIPluginObject } from '../types'
  23. const installedPlugins: VxeUIPluginObject[] = []
  24. export function use (Plugin: VxeUIPluginObject, options: any[]) {
  25. if (Plugin && Plugin.install) {
  26. if (installedPlugins.indexOf(Plugin) === -1) {
  27. Plugin.install(VxeUI, options)
  28. installedPlugins.push(Plugin)
  29. }
  30. }
  31. return VxeUI
  32. }
  33. const components: Record<string, any> = {}
  34. export function getComponent (name: keyof VxeGlobalComponents) {
  35. return components[name] || null
  36. }
  37. export function component (comp: any) {
  38. if (comp && comp.name) {
  39. components[comp.name] = comp
  40. components[XEUtils.kebabCase(comp.name)] = comp
  41. }
  42. }
  43. export function hasComponent (name: keyof VxeGlobalComponents) {
  44. return !!components[name]
  45. }
  46. export function renderEmptyElement (_vm: any): VNode {
  47. const { _e } = _vm
  48. return _e()
  49. }
  50. export function checkVersion (version: string, pVersion: number, sVersion?: number) {
  51. if (version) {
  52. const vRest = `${version}`.match(/(\d+).(\d+).(\d+)/)
  53. if (vRest) {
  54. const pV = XEUtils.toNumber(vRest[1])
  55. if (sVersion) {
  56. const sV = XEUtils.toNumber(vRest[2])
  57. return pV >= pVersion && sV >= sVersion
  58. }
  59. return pV >= pVersion
  60. }
  61. }
  62. return false
  63. }
  64. export const VxeUI = Object.assign(VxeCore, {
  65. renderEmptyElement,
  66. setTheme,
  67. getTheme,
  68. setConfig,
  69. getConfig: getConfig as any,
  70. setIcon,
  71. getIcon: getIcon as any,
  72. renderGlobalIcon,
  73. renderCustomIcon,
  74. setLanguage,
  75. hasLanguage,
  76. getLanguage,
  77. setI18n,
  78. getI18n,
  79. globalEvents,
  80. GLOBAL_EVENT_KEYS,
  81. createEvent,
  82. globalResize,
  83. renderer,
  84. validators,
  85. menus,
  86. formats,
  87. commands,
  88. interceptor,
  89. clipboard,
  90. log,
  91. permission,
  92. globalStore,
  93. component,
  94. getComponent,
  95. hasComponent,
  96. globalMixins,
  97. getSlotVNs,
  98. checkVersion,
  99. use
  100. })
  101. setTheme()
  102. export * from './src/core'
  103. export * from './src/event'
  104. export * from './src/resize'
  105. export * from './src/config'
  106. export * from './src/i18n'
  107. export * from './src/icon'
  108. export * from './src/theme'
  109. export * from './src/renderer'
  110. export * from './src/validators'
  111. export * from './src/menus'
  112. export * from './src/formats'
  113. export * from './src/commands'
  114. export * from './src/interceptor'
  115. export * from './src/clipboard'
  116. export * from './src/permission'
  117. export * from './src/dataStore'
  118. export * from './src/mixins'
  119. export * from './src/vm'
  120. export * from './src/log'
  121. export default VxeUI