diff --git a/.prettierrc.json b/.prettierrc.json index c84531d0..bbcad24e 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -24,7 +24,8 @@ { "files": "*.vue", "options": { - "printWidth": 120 + "printWidth": 120, + "bracketSameLine": true } } ] diff --git a/src/app.js b/src/app.js index 72f35668..f62023be 100644 --- a/src/app.js +++ b/src/app.js @@ -38,11 +38,13 @@ import _vrcxJsonStorage from './classes/vrcxJsonStorage.js'; // tabs import ModerationTab from './views/tabs/Moderation.vue'; import ChartsTab from './views/tabs/Charts.vue'; +import SideBar from './views/SideBar.vue'; +import NavMenu from './views/NavMenu.vue'; // components import SimpleSwitch from './components/settings/SimpleSwitch.vue'; -import GroupsSidebar from './components/sidebar/GroupsSidebar.vue'; import PreviousInstanceInfo from './views/dialogs/PreviousInstanceInfo.vue'; +import Location from './components/common/Location.vue'; // main app classes import _sharedFeed from './classes/sharedFeed.js'; @@ -171,14 +173,18 @@ console.log(`isLinux: ${LINUX}`); // tabs ModerationTab, ChartsTab, + // - others + SideBar, + NavMenu, // components // - settings SimpleSwitch, // components - // - sidebar(friendsListSidebar) - GroupsSidebar, + // - common + Location, + // - dialogs PreviousInstanceInfo }, @@ -186,7 +192,10 @@ console.log(`isLinux: ${LINUX}`); return { API, showUserDialog: this.showUserDialog, - adjustDialogZ: this.adjustDialogZ + adjustDialogZ: this.adjustDialogZ, + getWorldName: this.getWorldName, + userImage: this.userImage, + userStatusClass: this.userStatusClass }; }, el: '#x-app', @@ -2875,7 +2884,6 @@ console.log(`isLinux: ${LINUX}`); API.$on('LOGIN', function () { $app.localFavoriteFriends.clear(); $app.currentUserGroupsInit = false; - $app.localFavoriteFriendsDivideByGroup.clear(); this.cachedFavorites.clear(); this.cachedFavoritesByObjectId.clear(); this.cachedFavoriteGroups.clear(); @@ -2953,12 +2961,6 @@ console.log(`isLinux: ${LINUX}`); // 애초에 $isDeleted인데 여기로 올 수 가 있나..? this.cachedFavoritesByObjectId.delete(args.params.objectId); $app.localFavoriteFriends.delete(args.params.objectId); - $app.localFavoriteFriendsDivideByGroup.forEach((group, key) => { - $app.removeFromArray(group, args.params.objectId); - if (group.length === 0) { - $app.localFavoriteFriendsDivideByGroup.delete(key); - } - }); $app.updateSidebarFriendsList(); if (ref.$isDeleted) { return; @@ -3013,12 +3015,6 @@ console.log(`isLinux: ${LINUX}`); } this.cachedFavoritesByObjectId.delete(ref.favoriteId); $app.localFavoriteFriends.delete(ref.favoriteId); - $app.localFavoriteFriendsDivideByGroup.forEach((group, key) => { - $app.removeFromArray(group, ref.favoriteId); - if (group.length === 0) { - $app.localFavoriteFriendsDivideByGroup.delete(key); - } - }); $app.updateSidebarFriendsList(); ref.$isDeleted = true; API.$emit('FAVORITE:@DELETE', { @@ -3093,15 +3089,6 @@ console.log(`isLinux: ${LINUX}`); ref.$isExpired = false; } ref.$groupKey = `${ref.type}:${String(ref.tags[0])}`; - if (!$app.localFavoriteFriendsDivideByGroup.has(ref.$groupKey)) { - $app.localFavoriteFriendsDivideByGroup.set(ref.$groupKey, [ - ref.favoriteId - ]); - } else { - $app.localFavoriteFriendsDivideByGroup - .get(ref.$groupKey) - .push(ref.favoriteId); - } if (ref.$isDeleted === false && ref.$groupRef === null) { var group = this.cachedFavoriteGroupsByTypeName.get(ref.$groupKey); @@ -3115,7 +3102,6 @@ console.log(`isLinux: ${LINUX}`); API.expireFavorites = function () { $app.localFavoriteFriends.clear(); - $app.localFavoriteFriendsDivideByGroup.clear(); this.cachedFavorites.clear(); this.cachedFavoritesByObjectId.clear(); $app.favoriteObjects.clear(); @@ -3884,10 +3870,12 @@ console.log(`isLinux: ${LINUX}`); $app.data.debugGameLog = false; $app.data.debugFriendState = false; + $app.data.menuActiveIndex = 'feed'; + $app.methods.notifyMenu = function (index) { - var { menu } = this.$refs; - if (menu.activeIndex !== index) { - var item = menu.items[index]; + const navRef = this.$refs.menu.$children[0]; + if (this.menuActiveIndex !== index) { + const item = navRef.items[this.menuActiveIndex]; if (item) { item.$el.classList.add('notify'); } @@ -3895,7 +3883,8 @@ console.log(`isLinux: ${LINUX}`); }; $app.methods.selectMenu = function (index) { - var item = this.$refs.menu.items[index]; + this.menuActiveIndex = index; + const item = this.$refs.menu.$children[0]?.items[index]; if (item) { item.$el.classList.remove('notify'); } @@ -4068,7 +4057,6 @@ console.log(`isLinux: ${LINUX}`); args.ref.displayName )}!` }).show(); - $app.$refs.menu.activeIndex = 'feed'; $app.updateStoredUser(this.currentUser); }); @@ -4276,56 +4264,6 @@ console.log(`isLinux: ${LINUX}`); $app.data.sortActiveFriends = false; $app.data.sortOfflineFriends = false; - $app.methods.saveFriendsGroupStates = async function () { - await configRepository.setBool( - 'VRCX_isFriendsGroupMe', - this.isFriendsGroupMe - ); - await configRepository.setBool( - 'VRCX_isFriendsGroupFavorites', - this.isVIPFriends - ); - await configRepository.setBool( - 'VRCX_isFriendsGroupOnline', - this.isOnlineFriends - ); - await configRepository.setBool( - 'VRCX_isFriendsGroupActive', - this.isActiveFriends - ); - await configRepository.setBool( - 'VRCX_isFriendsGroupOffline', - this.isOfflineFriends - ); - }; - - $app.methods.loadFriendsGroupStates = async function () { - this.isFriendsGroupMe = await configRepository.getBool( - 'VRCX_isFriendsGroupMe', - true - ); - this.isVIPFriends = await configRepository.getBool( - 'VRCX_isFriendsGroupFavorites', - true - ); - this.isOnlineFriends = await configRepository.getBool( - 'VRCX_isFriendsGroupOnline', - true - ); - this.isActiveFriends = await configRepository.getBool( - 'VRCX_isFriendsGroupActive', - false - ); - this.isOfflineFriends = await configRepository.getBool( - 'VRCX_isFriendsGroupOffline', - false - ); - }; - - API.$on('LOGIN', function () { - $app.loadFriendsGroupStates(); - }); - $app.methods.fetchActiveFriend = function (userId) { this.pendingActiveFriends.add(userId); // FIXME: handle error @@ -4367,11 +4305,6 @@ console.log(`isLinux: ${LINUX}`); $app.friends.clear(); $app.pendingActiveFriends.clear(); $app.friendNumber = 0; - $app.isFriendsGroupMe = true; - $app.isVIPFriends = true; - $app.isOnlineFriends = true; - $app.isActiveFriends = true; - $app.isOfflineFriends = false; $app.isGroupInstances = false; $app.groupInstances = []; $app.vipFriends_ = []; @@ -5149,47 +5082,6 @@ console.log(`isLinux: ${LINUX}`); return this.vipFriends_; }; - // VIP friends divide by group - $app.computed.vipFriendsDivideByGroup = function () { - const array = []; - const helloYesThisIsDynamic = this.vipFriends_; - - for (const [key, value] of this.localFavoriteFriendsDivideByGroup) { - let friends = []; - for (const item of value) { - const friend = this.vipFriendsByGroupStatus.find( - (friend) => friend.id === item - ); - if (friend) { - friends.push(friend); - } - } - if (friends.length === 0) { - continue; - } - friends.sort(getFriendsSortFunction(this.sidebarSortMethods)); - - let groupName = API.favoriteFriendGroups.find( - (item) => item.key === key - )?.displayName; - if (!groupName) { - groupName = key; - } - - array.push({ - key: key, - value: friends, - displayName: groupName - }); - } - - array.sort((a, b) => { - return a.key.localeCompare(b.key); - }); - - return array; - }; - // Online friends $app.computed.onlineFriends = function () { if (!this.sortOnlineFriends) { @@ -5341,7 +5233,6 @@ console.log(`isLinux: ${LINUX}`); // #endregion // #region | App: Quick Search - $app.data.quickSearch = ''; $app.data.quickSearchItems = []; var localeIncludes = function (str, search, comparer) { @@ -5469,24 +5360,15 @@ console.log(`isLinux: ${LINUX}`); const searchText = value.substr(7); if (this.quickSearchItems.length > 1 && searchText.length) { this.friendsListSearch = searchText; - this.$refs.menu.activeIndex = 'friendsList'; + this.menuActiveIndex = 'friendsList'; } else { - this.$refs.menu.activeIndex = 'search'; + this.menuActiveIndex = 'search'; this.searchText = searchText; this.lookupUser({ displayName: searchText }); } } else { this.showUserDialog(value); } - this.quickSearchVisibleChange(value); - } - }; - - // NOTE: 그냥 열고 닫고 했을때 changed 이벤트 발생이 안되기 때문에 넣음 - $app.methods.quickSearchVisibleChange = function (value) { - if (value) { - this.quickSearch = ''; - this.quickSearchItems = []; this.quickSearchUserHistory(); } }; @@ -5545,7 +5427,7 @@ console.log(`isLinux: ${LINUX}`); $app.friendLogInitStatus = false; $app.notificationInitStatus = false; await database.initUserTables(args.json.id); - $app.$refs.menu.activeIndex = 'feed'; + $app.menuActiveIndex = 'feed'; await $app.updateDatabaseVersion(); // eslint-disable-next-line require-atomic-updates $app.gameLogTable.data = await database.lookupGameLogDatabase( @@ -6556,7 +6438,7 @@ console.log(`isLinux: ${LINUX}`); } } this.$refs.searchTab.currentName = '0'; - this.$refs.menu.activeIndex = 'search'; + this.menuActiveIndex = 'search'; }; // #endregion @@ -22160,7 +22042,6 @@ console.log(`isLinux: ${LINUX}`); // #region | Local Favorite Friends $app.data.localFavoriteFriends = new Set(); - $app.data.localFavoriteFriendsDivideByGroup = new Map(); $app.data.localFavoriteFriendsGroups = JSON.parse( await configRepository.getString( 'VRCX_localFavoriteFriendsGroups', @@ -22169,7 +22050,6 @@ console.log(`isLinux: ${LINUX}`); ); $app.methods.updateLocalFavoriteFriends = function () { this.localFavoriteFriends.clear(); - this.localFavoriteFriendsDivideByGroup.clear(); for (const ref of API.cachedFavorites.values()) { if ( !ref.$isDeleted && @@ -22178,17 +22058,6 @@ console.log(`isLinux: ${LINUX}`); this.localFavoriteFriendsGroups.length === 0) ) { this.localFavoriteFriends.add(ref.favoriteId); - if ( - !this.localFavoriteFriendsDivideByGroup.has(ref.$groupKey) - ) { - this.localFavoriteFriendsDivideByGroup.set(ref.$groupKey, [ - ref.favoriteId - ]); - } else { - this.localFavoriteFriendsDivideByGroup - .get(ref.$groupKey) - .push(ref.favoriteId); - } } } this.updateSidebarFriendsList(); @@ -22736,6 +22605,7 @@ console.log(`isLinux: ${LINUX}`); $app.data.appLanguage = (await configRepository.getString('VRCX_appLanguage')) ?? 'en'; + $utils.changeCJKorder($app.data.appLanguage); i18n.locale = $app.data.appLanguage; $app.methods.initLanguage = async function () { if (!(await configRepository.getString('VRCX_appLanguage'))) { @@ -22760,6 +22630,7 @@ console.log(`isLinux: ${LINUX}`); $app.methods.changeAppLanguage = function (language) { console.log('Language changed:', language); this.appLanguage = language; + $utils.changeCJKorder(language); i18n.locale = language; configRepository.setString('VRCX_appLanguage', language); this.applyLanguageStrings(); @@ -23394,123 +23265,6 @@ console.log(`isLinux: ${LINUX}`); ); }; - $app.data.isSidebarGroupByInstanceCollapsed = - await configRepository.getBool( - 'VRCX_sidebarGroupByInstanceCollapsed', - false - ); - - $app.methods.toggleSwitchGroupByInstanceCollapsed = function () { - this.isSidebarGroupByInstanceCollapsed = - !this.isSidebarGroupByInstanceCollapsed; - configRepository.setBool( - 'VRCX_sidebarGroupByInstanceCollapsed', - this.isSidebarGroupByInstanceCollapsed - ); - }; - - $app.computed.friendsInSameInstance = function () { - const friendsList = {}; - - const allFriends = [...this.vipFriends, ...this.onlineFriends]; - allFriends.forEach((friend) => { - let locationTag; - - if (friend.ref?.$location.isRealInstance) { - locationTag = friend.ref.$location.tag; - } else if (this.lastLocation.friendList.has(friend.id)) { - let $location = $utils.parseLocation( - this.lastLocation.location - ); - if ($location.isRealInstance) { - if ($location.tag === 'private') { - locationTag = this.lastLocation.name; - } else { - locationTag = $location.tag; - } - } - } - if (!locationTag) { - return; - } - - if (!friendsList[locationTag]) { - friendsList[locationTag] = []; - } - friendsList[locationTag].push(friend); - }); - - const sortedFriendsList = []; - for (const group of Object.values(friendsList)) { - if (group.length > 1) { - sortedFriendsList.push( - group.sort( - (a, b) => a.ref?.$location_at - b.ref?.$location_at - ) - ); - } - } - - return sortedFriendsList.sort((a, b) => b.length - a.length); - }; - - $app.computed.onlineFriendsByGroupStatus = function () { - if ( - !this.isSidebarGroupByInstance || - (this.isSidebarGroupByInstance && !this.isHideFriendsInSameInstance) - ) { - return this.onlineFriends; - } - - const sameInstanceTag = new Set( - this.friendsInSameInstance.flatMap((item) => - item.map((friend) => friend.ref?.$location.tag) - ) - ); - - return this.onlineFriends.filter( - (item) => !sameInstanceTag.has(item.ref?.$location.tag) - ); - }; - - $app.computed.vipFriendsByGroupStatus = function () { - if ( - !this.isSidebarGroupByInstance || - (this.isSidebarGroupByInstance && !this.isHideFriendsInSameInstance) - ) { - return this.vipFriends; - } - - const sameInstanceTag = new Set( - this.friendsInSameInstance.flatMap((item) => - item.map((friend) => friend.ref?.$location.tag) - ) - ); - - return this.vipFriends.filter( - (item) => !sameInstanceTag.has(item.ref?.$location.tag) - ); - }; - - $app.methods.getFriendsLocations = function (friendsArr) { - // prevent the instance title display as "Traveling". - if (!friendsArr?.length) { - return ''; - } - for (const friend of friendsArr) { - if (friend.ref?.location !== 'traveling') { - return friend.ref.location; - } - if ($utils.isRealInstance(friend.ref?.travelingToLocation)) { - return friend.ref.travelingToLocation; - } - if (this.lastLocation.friendList.has(friend.id)) { - return this.lastLocation.name; - } - } - return friendsArr[0].ref?.location; - }; - // favorites Tab // - local favorites // - local world & avatar @@ -23534,6 +23288,43 @@ console.log(`isLinux: ${LINUX}`); // #endregion + // #region | Tab Props + $app.computed.sideBarTabProps = function () { + return { + style: { width: `${this.asideWidth}px` }, + vipFriends: this.vipFriends, + onlineFriends: this.onlineFriends, + quickSearchRemoteMethod: this.quickSearchRemoteMethod, + quickSearchItems: this.quickSearchItems, + hideTooltips: this.hideTooltips, + onlineFriendCount: this.onlineFriendCount, + friends: this.friends, + isGameRunning: this.isGameRunning, + isSidebarDivideByFriendGroup: this.isSidebarDivideByFriendGroup, + isSidebarGroupByInstance: this.isSidebarGroupByInstance, + isHideFriendsInSameInstance: this.isHideFriendsInSameInstance, + gameLogDisabled: this.gameLogDisabled, + lastLocation: this.lastLocation, + lastLocationDestination: this.lastLocationDestination, + hideNicknames: this.hideNicknames, + activeFriends: this.activeFriends, + offlineFriends: this.offlineFriends, + groupInstances: this.groupInstances, + inGameGroupOrder: this.inGameGroupOrder, + groupedByGroupKeyFavoriteFriends: + this.groupedByGroupKeyFavoriteFriends + }; + }; + + $app.computed.isSideBarTabShow = function () { + return !( + this.menuActiveIndex === 'friendsList' || + this.menuActiveIndex === 'charts' + ); + }; + + // #endregion + // #region | Electron if (LINUX) { diff --git a/src/app.scss b/src/app.scss index db195f6a..bac8279d 100644 --- a/src/app.scss +++ b/src/app.scss @@ -8,7 +8,6 @@ // For a copy, see . // -@import '~normalize.css/normalize.css'; @import '~animate.css/animate.min.css'; @import '~noty/lib/noty.css'; @import '~element-ui/lib/theme-chalk/index.css'; @@ -135,14 +134,11 @@ border-radius: 16px; } -body, -input, -textarea, -select, -button { - font-family: 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans TC', 'Noto Sans SC', - 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', sans-serif; - line-height: normal; +body { + font-family: + 'Noto Sans KR', 'Noto Sans JP', 'Noto Sans TC', 'Noto Sans SC', + 'Meiryo UI', 'Malgun Gothic', 'Segoe UI', system-ui, sans-serif; + margin: 0; } a { @@ -164,10 +160,9 @@ a { } .x-app { - position: absolute; display: flex; - width: 100%; - height: 100%; + width: 100vw; + height: 100vh; overflow: hidden auto; cursor: default; } @@ -307,6 +302,7 @@ hr.x-vertical-divider { .el-popper.x-quick-search { width: 225px; min-width: 0 !important; + border: none; } .el-popper.x-quick-search .el-select-dropdown__item { diff --git a/src/classes/uiComponents.js b/src/classes/uiComponents.js index b7579bf4..77884f16 100644 --- a/src/classes/uiComponents.js +++ b/src/classes/uiComponents.js @@ -68,152 +68,6 @@ export default class extends baseClass { } }); - Vue.component('location', { - template: - "" + - '' + - '{{ text }}' + - '({{ groupName }})' + - '' + - '', - props: { - location: String, - traveling: String, - hint: { - type: String, - default: '' - }, - grouphint: { - type: String, - default: '' - }, - link: { - type: Boolean, - default: true - }, - isOpenPreviousInstanceInfoDialog: Boolean - }, - data() { - return { - text: this.location, - region: this.region, - strict: this.strict, - isTraveling: this.isTraveling, - groupName: this.groupName - }; - }, - methods: { - parse() { - this.isTraveling = false; - this.groupName = ''; - var instanceId = this.location; - if ( - typeof this.traveling !== 'undefined' && - this.location === 'traveling' - ) { - instanceId = this.traveling; - this.isTraveling = true; - } - this.text = instanceId; - var L = $utils.parseLocation(instanceId); - if (L.isOffline) { - this.text = 'Offline'; - } else if (L.isPrivate) { - this.text = 'Private'; - } else if (L.isTraveling) { - this.text = 'Traveling'; - } else if ( - typeof this.hint === 'string' && - this.hint !== '' - ) { - if (L.instanceId) { - this.text = `${this.hint} #${L.instanceName} ${L.accessTypeName}`; - } else { - this.text = this.hint; - } - } else if (L.worldId) { - var ref = API.cachedWorlds.get(L.worldId); - if (typeof ref === 'undefined') { - $app.getWorldName(L.worldId).then((worldName) => { - if (L.tag === instanceId) { - if (L.instanceId) { - this.text = `${worldName} #${L.instanceName} ${L.accessTypeName}`; - } else { - this.text = worldName; - } - } - }); - } else if (L.instanceId) { - this.text = `${ref.name} #${L.instanceName} ${L.accessTypeName}`; - } else { - this.text = ref.name; - } - } - if (this.grouphint) { - this.groupName = this.grouphint; - } else if (L.groupId) { - this.groupName = L.groupId; - $app.getGroupName(instanceId).then((groupName) => { - if (L.tag === instanceId) { - this.groupName = groupName; - } - }); - } - this.region = ''; - if (!L.isOffline && !L.isPrivate && !L.isTraveling) { - this.region = L.region; - if (!L.region && L.instanceId) { - this.region = 'us'; - } - } - this.strict = L.strict; - }, - showWorldDialog() { - if (this.link) { - var instanceId = this.location; - if (this.traveling && this.location === 'traveling') { - instanceId = this.traveling; - } - if (!instanceId && this.hint.length === 8) { - // shortName - API.$emit('SHOW_WORLD_DIALOG_SHORTNAME', this.hint); - return; - } - if (this.isOpenPreviousInstanceInfoDialog) { - this.$emit( - 'open-previous-instance-info-dialog', - instanceId - ); - } else { - API.$emit('SHOW_WORLD_DIALOG', instanceId); - } - } - }, - showGroupDialog() { - var location = this.location; - if (this.isTraveling) { - location = this.traveling; - } - if (!location || !this.link) { - return; - } - var L = $utils.parseLocation(location); - if (!L.groupId) { - return; - } - API.$emit('SHOW_GROUP_DIALOG', L.groupId); - } - }, - watch: { - location() { - this.parse(); - } - }, - created() { - this.parse(); - } - }); - Vue.component('location-world', { template: '' + diff --git a/src/classes/utils.js b/src/classes/utils.js index 7898a3d8..251c9c22 100644 --- a/src/classes/utils.js +++ b/src/classes/utils.js @@ -351,5 +351,29 @@ export default { echarts = module; return echarts; }); + }, + // CJK character in Japanese, Korean, Chinese are different + // so change font-family order when users change language to display CJK character correctly + changeCJKorder(lang) { + const otherFonts = window + .getComputedStyle(document.body) + .fontFamily.split(',') + .filter((item) => !item.includes('Noto Sans')) + .join(', '); + const notoSans = 'Noto Sans'; + + const fontFamilies = { + ja_JP: ['JP', 'KR', 'TC', 'SC'], + ko: ['KR', 'JP', 'TC', 'SC'], + zh_TW: ['TC', 'JP', 'KR', 'SC'], + zh_CN: ['SC', 'JP', 'KR', 'TC'] + }; + + if (fontFamilies[lang]) { + const CJKFamily = fontFamilies[lang] + .map((item) => `${notoSans} ${item}`) + .join(', '); + document.body.style.fontFamily = `${CJKFamily}, ${otherFonts}`; + } } }; diff --git a/src/components/charts/InstanceActivityDetail.vue b/src/components/charts/InstanceActivityDetail.vue index 24e6b5a9..2c5f64d3 100644 --- a/src/components/charts/InstanceActivityDetail.vue +++ b/src/components/charts/InstanceActivityDetail.vue @@ -7,8 +7,9 @@ class="location" :location="activityDetailData[0].location" is-open-previous-instance-info-dialog - @open-previous-instance-info-dialog="$emit('open-previous-instance-info-dialog', $event)" - > + @open-previous-instance-info-dialog=" + $emit('open-previous-instance-info-dialog', $event) + "> @@ -19,9 +20,13 @@ + + diff --git a/src/components/sidebar/FriendItem.vue b/src/components/sidebar/FriendItem.vue new file mode 100644 index 00000000..d9ac9d8c --- /dev/null +++ b/src/components/sidebar/FriendItem.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/sidebar/FriendsSidebar.vue b/src/components/sidebar/FriendsSidebar.vue new file mode 100644 index 00000000..6ae90a44 --- /dev/null +++ b/src/components/sidebar/FriendsSidebar.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/components/sidebar/GroupsSidebar.vue b/src/components/sidebar/GroupsSidebar.vue index b9be39b5..b2ed4e36 100644 --- a/src/components/sidebar/GroupsSidebar.vue +++ b/src/components/sidebar/GroupsSidebar.vue @@ -4,47 +4,50 @@ -
-
- +
diff --git a/src/views/SideBar.vue b/src/views/SideBar.vue new file mode 100644 index 00000000..834997f1 --- /dev/null +++ b/src/views/SideBar.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/dialogs/PreviousInstanceInfo.vue b/src/views/dialogs/PreviousInstanceInfo.vue index 920a8bd1..cb9eedbc 100644 --- a/src/views/dialogs/PreviousInstanceInfo.vue +++ b/src/views/dialogs/PreviousInstanceInfo.vue @@ -6,16 +6,14 @@ width="800px" @close="$emit('update:visible', false)" :fullscreen="fullscreen" - destroy-on-close - > + destroy-on-close>
+ clearable>
@@ -63,9 +61,13 @@ import utils from '../../classes/utils'; import database from '../../repository/database'; import dayjs from 'dayjs'; + import Location from '../../components/common/Location.vue'; export default { name: 'PreviousInstanceInfo', + components: { + Location + }, inject: ['adjustDialogZ'], props: { visible: {