mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-04 22:06:06 +02:00
refactor favorites tab
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { nextTick, ref } from 'vue';
|
||||
|
||||
/**
|
||||
* @param {object} options
|
||||
* @param {Function} options.createGroup - store function to create a new local group
|
||||
* @param {Function} options.selectGroup - function to select a group after creation
|
||||
* @returns {object}
|
||||
*/
|
||||
export function useFavoritesLocalGroups(options = {}) {
|
||||
const { createGroup, selectGroup, canCreate = () => true } = options;
|
||||
|
||||
const isCreatingLocalGroup = ref(false);
|
||||
const newLocalGroupName = ref('');
|
||||
const newLocalGroupInput = ref(null);
|
||||
|
||||
/**
|
||||
* @returns {void}
|
||||
*/
|
||||
function startLocalGroupCreation() {
|
||||
if (!canCreate() || isCreatingLocalGroup.value) {
|
||||
return;
|
||||
}
|
||||
isCreatingLocalGroup.value = true;
|
||||
newLocalGroupName.value = '';
|
||||
nextTick(() => {
|
||||
const el =
|
||||
newLocalGroupInput.value?.$el ?? newLocalGroupInput.value;
|
||||
el?.focus?.();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {void}
|
||||
*/
|
||||
function cancelLocalGroupCreation() {
|
||||
isCreatingLocalGroup.value = false;
|
||||
newLocalGroupName.value = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {void}
|
||||
*/
|
||||
function handleLocalGroupCreationConfirm() {
|
||||
const name = newLocalGroupName.value.trim();
|
||||
if (!name) {
|
||||
cancelLocalGroupCreation();
|
||||
return;
|
||||
}
|
||||
createGroup(name);
|
||||
cancelLocalGroupCreation();
|
||||
nextTick(() => {
|
||||
selectGroup('local', name, { userInitiated: true });
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
isCreatingLocalGroup,
|
||||
newLocalGroupName,
|
||||
newLocalGroupInput,
|
||||
startLocalGroupCreation,
|
||||
cancelLocalGroupCreation,
|
||||
handleLocalGroupCreationConfirm
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user