Files
element-plus/packages/element-plus/make-installer.ts
三咲智子 bbd16a08e9 refactor(hooks): refactor hooks (#4253)
* refactor(hooks): remove use-css-var

* refactor(hooks): remove use-events

* refactor(hooks): remove use-migrating

* refactor(hooks): remove use-transition

* refactor(hooks): named export useAttrs

* refactor(hooks): named export useFocus

* refactor(hooks): refactor useFormItem

* refactor(hooks): refactor useGlobalConfig

* refactor(hooks): refactor useLocale

* refactor(hooks): refactor useLockscreen

* refactor(hooks): refactor useModal

* refactor(hooks): refactor useModelToggle

* refactor(hooks): refactor usePreventGlobal

* refactor(hooks): refactor useRestoreActive

* refactor(hooks): refactor useTeleport

* refactor(hooks): refactor useThrottleRender

* refactor(hooks): refactor useTimeout

* refactor(hooks): refactor useTransitionFallthrogh
2021-11-29 15:58:44 +08:00

43 lines
1.1 KiB
TypeScript

import { setConfig } from '@element-plus/utils/config'
import { localeContextKey, localeProviderMaker } from '@element-plus/hooks'
import { version } from './version'
import type { App, Plugin } from 'vue'
import type { ComponentSize } from '@element-plus/utils/types'
import type { InstallOptions } from '@element-plus/utils/config'
const makeInstaller = (components: Plugin[] = []) => {
const apps: App[] = []
const install = (app: App, opts: InstallOptions) => {
const defaultInstallOpt: InstallOptions = {
size: '' as ComponentSize,
zIndex: 2000,
}
const option = Object.assign(defaultInstallOpt, opts)
if (apps.includes(app)) return
apps.push(app)
components.forEach((c) => {
app.use(c)
})
if (option.locale) {
const localeProvides = localeProviderMaker(opts.locale)
app.provide(localeContextKey, localeProvides)
}
app.config.globalProperties.$ELEMENT = option
// app.provide() ? is this better? I think its not that flexible but worth implement
setConfig(option)
}
return {
version,
install,
}
}
export default makeInstaller