This commit is contained in:
2022-12-28 10:08:51 +08:00
parent 0fa93d545e
commit 3881370b6e
151 changed files with 17044 additions and 0 deletions

49
im/src/core/directives.js Normal file
View File

@@ -0,0 +1,49 @@
import Vue from 'vue'
import Clickoutside from 'element-ui/src/utils/clickoutside'
// 自定义聚焦指令
Vue.directive('focus', {
inserted(el) {
el.focus()
},
})
// 自定义粘贴指令
Vue.directive('paste', {
bind(el, binding, vnode) {
el.addEventListener('paste', function(event) {
//这里直接监听元素的粘贴事件
binding.value(event)
})
},
})
// 自定义拖拽指令
Vue.directive('drag', {
bind(el, binding, vnode) {
// 因为拖拽还包括拖动时的经过事件,离开事件,和进入事件,放下事件,
// 浏览器对于拖拽的默认事件的处理是打开拖进来的资源,
// 所以要先对这三个事件进行默认事件的禁止
el.addEventListener('dragenter', function(event) {
event.stopPropagation()
event.preventDefault()
})
el.addEventListener('dragover', function(event) {
event.stopPropagation()
event.preventDefault()
})
el.addEventListener('dragleave', function(event) {
event.stopPropagation()
event.preventDefault()
})
el.addEventListener('drop', function(event) {
// 这里阻止默认事件,并绑定事件的对象,用来在组件上返回事件对象
event.stopPropagation()
event.preventDefault()
binding.value(event)
})
},
})
// 点击其他地方隐藏指令
Vue.directive('outside', Clickoutside)

0
im/src/core/filter.js Normal file
View File

View File

@@ -0,0 +1,37 @@
import Vue from "vue";
import {
AudioMessage,
CodeMessage,
ForwardMessage,
ImageMessage,
TextMessage,
VideoMessage,
VoiceMessage,
SystemTextMessage,
FileMessage,
InviteMessage,
RevokeMessage,
VisitCardMessage,
ReplyMessage,
VoteMessage,
LoginMessage,
} from "@/components/chat/messaege";
Vue.component(AudioMessage.name, AudioMessage);
Vue.component(CodeMessage.name, CodeMessage);
Vue.component(ForwardMessage.name, ForwardMessage);
Vue.component(ImageMessage.name, ImageMessage);
Vue.component(TextMessage.name, TextMessage);
Vue.component(VideoMessage.name, VideoMessage);
Vue.component(VoiceMessage.name, VoiceMessage);
Vue.component(SystemTextMessage.name, SystemTextMessage);
Vue.component(FileMessage.name, FileMessage);
Vue.component(InviteMessage.name, InviteMessage);
Vue.component(RevokeMessage.name, RevokeMessage);
Vue.component(VisitCardMessage.name, VisitCardMessage);
Vue.component(ReplyMessage.name, ReplyMessage);
Vue.component(VoteMessage.name, VoteMessage);
Vue.component(LoginMessage.name, LoginMessage);
import UserCard from "@/components/user/user-card/index";
Vue.use(UserCard);

22
im/src/core/icons.js Normal file
View File

@@ -0,0 +1,22 @@
/**
* Custom icon list
* All icons are loaded here for easy management
*
* 自定义图标加载表
* 所有图标均从这里加载,方便管理
*/
import SvgMentionDown from '@/icons/svg/mention-down.svg?inline' // path to your '*.svg?inline' file.
import SvgNotFount from '@/icons/svg/not-fount.svg?inline' // path to your '*.svg?inline' file.
import SvgNote from '@/icons/svg/note.svg?inline' // path to your '*.svg?inline' file.
import SvgNoteBook from '@/icons/svg/note-book.svg?inline' // path to your '*.svg?inline' file.
import SvgNotData from '@/icons/svg/not-data.svg?inline' // path to your '*.svg?inline' file.
import SvgZhuangFa from '@/icons/svg/zhuangfa.svg?inline' // path to your '*.svg?inline' file.
export {
SvgMentionDown,
SvgNotFount,
SvgNote,
SvgNoteBook,
SvgNotData,
SvgZhuangFa,
}

89
im/src/core/lazy-use.js Normal file
View File

@@ -0,0 +1,89 @@
import Vue from 'vue'
import 'element-ui/lib/theme-chalk/index.css'
import {
Notification,
Popover,
Switch,
Dropdown,
DropdownMenu,
DropdownItem,
Message,
Container,
Header,
Aside,
Main,
Footer,
Menu,
Submenu,
MenuItem,
MenuItemGroup,
Button,
Image,
Loading,
Row,
Col,
MessageBox,
Form,
FormItem,
Input,
Divider,
Link,
Tooltip,
Autocomplete,
Scrollbar,
Avatar,
Radio,
RadioGroup,
Progress,
Dialog,
Checkbox,
Tag
} from 'element-ui'
Vue.use(Popover)
Vue.use(Switch)
Vue.use(Dropdown)
Vue.use(DropdownMenu)
Vue.use(DropdownItem)
Vue.use(Container)
Vue.use(Header)
Vue.use(Aside)
Vue.use(Main)
Vue.use(Footer)
Vue.use(Menu)
Vue.use(Submenu)
Vue.use(MenuItem)
Vue.use(MenuItemGroup)
Vue.use(Button)
Vue.use(Image)
Vue.use(Row)
Vue.use(Col)
Vue.use(Input)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Divider)
Vue.use(Link)
Vue.use(Tooltip)
Vue.use(Autocomplete)
Vue.use(Scrollbar)
Vue.use(Avatar)
Vue.use(Radio)
Vue.use(Checkbox)
Vue.use(RadioGroup)
Vue.use(Progress)
Vue.use(Dialog)
Vue.use(Tag)
Vue.use(Loading.directive)
Vue.prototype.$notify = Notification
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm
Vue.prototype.$prompt = MessageBox.prompt
Vue.prototype.$alert = MessageBox.alert
import Contextmenu from 'vue-contextmenujs'
Vue.use(Contextmenu)
process.env.NODE_ENV !== 'production' &&
console.warn('[Lumen-IM] NOTICE: element-ui use lazy-load.')