@lekseek/ui
Version:
Vue 3 components library
35 lines (30 loc) • 829 B
text/typescript
import { App, inject } from 'vue';
import {
Options,
CustomOptions,
BemItem,
} from './models';
import ClickOutside from './directives/click-outside';
import { install, uiSymbol } from './core';
export * from './components';
export * from './directives';
export { useBem } from './helpers/bem';
export function createUI (options: CustomOptions): {install: (T: App) => void} {
return {
install: (app: App): void => {
install(app, options);
app.directive('click-outside', ClickOutside);
},
};
}
export function useUi () {
const uiInstance = inject<Options>(uiSymbol);
if (!uiSymbol || !uiInstance) throw new Error('No ui provided');
return uiInstance;
}
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$bem: (T: BemItem) => string[];
$ui: Options;
}
}