BetterDiscordApp-v2/client/src/ui/vue.js

67 lines
2.1 KiB
JavaScript
Raw Normal View History

2018-01-31 16:45:25 +01:00
/**
* BetterDiscord Client UI Module
* Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks
* All rights reserved.
* https://betterdiscord.net
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
2018-06-10 22:22:01 +02:00
import { WebpackModules } from 'modules';
2018-01-31 16:45:25 +01:00
import Vue from 'vue';
import VTooltip from 'v-tooltip';
2018-06-10 22:22:01 +02:00
import DOM from './dom';
2018-01-31 16:45:25 +01:00
Vue.use(VTooltip, {
defaultContainer: 'bd-tooltips',
2018-01-31 16:45:25 +01:00
defaultClass: 'bd-tooltip',
2018-08-15 04:03:56 +02:00
defaultTargetClass: 'bd-hasTooltip',
defaultArrowSelector: '.bd-tooltipArrow',
defaultInnerSelector: '.bd-tooltipInner',
defaultTemplate: '<div class="bd-tooltip"><div class="bd-tooltipArrow"></div><span class="bd-tooltipInner"></span></div>',
defaultBoundariesElement: DOM.getElement('#app-mount'),
popover: {
defaultContainer: 'bd-tooltips',
defaultClass: 'bd-popover',
2018-08-15 04:03:56 +02:00
defaultWrapperClass: 'bd-popoverWrapper',
defaultInnerClass: 'bd-popoverInner',
defaultArrowClass: 'bd-popoverArrow',
defaultBoundariesElement: DOM.getElement('#app-mount'),
defaultPopperOptions: {
modifiers: {
computeStyle: {
gpuAcceleration: false
}
}
}
},
defaultPopperOptions: {
modifiers: {
computeStyle: {
gpuAcceleration: false
}
}
}
2018-01-31 16:45:25 +01:00
});
2018-06-10 22:22:01 +02:00
export const ReactComponent = {
props: ['component', 'component-props', 'component-children', 'react-element'],
render(createElement) {
return createElement('div');
},
mounted() {
const { React, ReactDOM } = WebpackModules;
ReactDOM.unmountComponentAtNode(this.$el);
ReactDOM.render(this.reactElement || React.createElement(this.component, this.componentProps, ...(this.componentChildren || [])), this.$el);
},
beforeDestroy() {
WebpackModules.ReactDOM.unmountComponentAtNode(this.$el);
}
};
Vue.component('ReactComponent', ReactComponent);
2018-01-31 16:45:25 +01:00
export default Vue;