More reverting
This commit is contained in:
@@ -248,7 +248,7 @@ onBeforeUnmount(() => {
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.initializing-icon-active,
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ onMounted(async () => {
|
||||
searchStore.instanceContext = null
|
||||
}
|
||||
searchStore.searchInput = ''
|
||||
await handleReset(true)
|
||||
await handleReset()
|
||||
loading.value = false
|
||||
})
|
||||
|
||||
@@ -128,227 +128,221 @@ watch(
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<transition name="fade">
|
||||
<div class="search-container">
|
||||
<aside class="filter-panel">
|
||||
<Instance
|
||||
v-if="searchStore.instanceContext"
|
||||
:instance="searchStore.instanceContext"
|
||||
small
|
||||
/>
|
||||
<Button
|
||||
role="button"
|
||||
:disabled="
|
||||
!(
|
||||
searchStore.facets.length > 0 ||
|
||||
searchStore.orFacets.length > 0 ||
|
||||
searchStore.environments.server === true ||
|
||||
searchStore.environments.client === true ||
|
||||
searchStore.openSource === true ||
|
||||
searchStore.activeVersions.length > 0
|
||||
)
|
||||
"
|
||||
@click="handleReset"
|
||||
><ClearIcon />Clear Filters</Button
|
||||
>
|
||||
<div
|
||||
v-for="categoryList in Array.from(sortedCategories)"
|
||||
:key="categoryList[0]"
|
||||
class="categories"
|
||||
>
|
||||
<h2>{{ formatCategoryHeader(categoryList[0]) }}</h2>
|
||||
<div v-for="category in categoryList[1]" :key="category.name">
|
||||
<SearchFilter
|
||||
:active-filters="searchStore.facets"
|
||||
:icon="category.icon"
|
||||
:display-name="category.name"
|
||||
:facet-name="`categories:${encodeURIComponent(category.name)}`"
|
||||
class="filter-checkbox"
|
||||
@toggle="toggleFacet"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="
|
||||
showLoaders &&
|
||||
searchStore.projectType !== 'datapack' &&
|
||||
searchStore.projectType !== 'resourcepack' &&
|
||||
searchStore.projectType !== 'shader'
|
||||
"
|
||||
class="loaders"
|
||||
>
|
||||
<h2>Loaders</h2>
|
||||
<div
|
||||
v-for="loader in loaders.filter((l) =>
|
||||
l.supported_project_types?.includes(searchStore.projectType)
|
||||
)"
|
||||
:key="loader"
|
||||
>
|
||||
<SearchFilter
|
||||
:active-filters="searchStore.orFacets"
|
||||
:icon="loader.icon"
|
||||
:display-name="loader.name"
|
||||
:facet-name="`categories:${encodeURIComponent(loader.name)}`"
|
||||
class="filter-checkbox"
|
||||
@toggle="toggleOrFacet"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="searchStore.projectType !== 'datapack'" class="environment">
|
||||
<h2>Environments</h2>
|
||||
<div class="search-container">
|
||||
<aside class="filter-panel">
|
||||
<Instance v-if="searchStore.instanceContext" :instance="searchStore.instanceContext" small />
|
||||
<Button
|
||||
role="button"
|
||||
:disabled="
|
||||
!(
|
||||
searchStore.facets.length > 0 ||
|
||||
searchStore.orFacets.length > 0 ||
|
||||
searchStore.environments.server === true ||
|
||||
searchStore.environments.client === true ||
|
||||
searchStore.openSource === true ||
|
||||
searchStore.activeVersions.length > 0
|
||||
)
|
||||
"
|
||||
@click="handleReset"
|
||||
><ClearIcon />Clear Filters</Button
|
||||
>
|
||||
<div
|
||||
v-for="categoryList in Array.from(sortedCategories)"
|
||||
:key="categoryList[0]"
|
||||
class="categories"
|
||||
>
|
||||
<h2>{{ formatCategoryHeader(categoryList[0]) }}</h2>
|
||||
<div v-for="category in categoryList[1]" :key="category.name">
|
||||
<SearchFilter
|
||||
v-model="searchStore.environments.client"
|
||||
display-name="Client"
|
||||
facet-name="client"
|
||||
:active-filters="searchStore.facets"
|
||||
:icon="category.icon"
|
||||
:display-name="category.name"
|
||||
:facet-name="`categories:${encodeURIComponent(category.name)}`"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
<ClientIcon aria-hidden="true" />
|
||||
</SearchFilter>
|
||||
<SearchFilter
|
||||
v-model="searchStore.environments.server"
|
||||
display-name="Server"
|
||||
facet-name="server"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
<ServerIcon aria-hidden="true" />
|
||||
</SearchFilter>
|
||||
</div>
|
||||
<div v-if="showVersions" class="versions">
|
||||
<h2>Minecraft versions</h2>
|
||||
<Checkbox v-model="showSnapshots" class="filter-checkbox">Show snapshots</Checkbox>
|
||||
<multiselect
|
||||
v-model="searchStore.activeVersions"
|
||||
:options="
|
||||
showSnapshots
|
||||
? availableGameVersions.map((x) => x.version)
|
||||
: availableGameVersions
|
||||
.filter((it) => it.version_type === 'release')
|
||||
.map((x) => x.version)
|
||||
"
|
||||
:multiple="true"
|
||||
:searchable="true"
|
||||
:show-no-results="false"
|
||||
:close-on-select="false"
|
||||
:clear-search-on-select="false"
|
||||
:show-labels="false"
|
||||
placeholder="Choose versions..."
|
||||
@update:model-value="getSearchResults"
|
||||
@toggle="toggleFacet"
|
||||
/>
|
||||
</div>
|
||||
<div class="open-source">
|
||||
<h2>Open source</h2>
|
||||
<Checkbox
|
||||
v-model="searchStore.openSource"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
Open source
|
||||
</Checkbox>
|
||||
</div>
|
||||
</aside>
|
||||
<div class="search">
|
||||
<Card class="project-type-container">
|
||||
<NavRow
|
||||
:links="
|
||||
searchStore.instanceContext
|
||||
? [
|
||||
{ label: 'Mods', href: `/browse/mod` },
|
||||
{ label: 'Datapacks', href: `/browse/datapack` },
|
||||
{ label: 'Shaders', href: `/browse/shader` },
|
||||
{ label: 'Resource Packs', href: `/browse/resourcepack` },
|
||||
]
|
||||
: [
|
||||
{ label: 'Modpacks', href: '/browse/modpack' },
|
||||
{ label: 'Mods', href: '/browse/mod' },
|
||||
{ label: 'Datapacks', href: '/browse/datapack' },
|
||||
{ label: 'Shaders', href: '/browse/shader' },
|
||||
{ label: 'Resource Packs', href: '/browse/resourcepack' },
|
||||
]
|
||||
"
|
||||
/>
|
||||
</Card>
|
||||
<Card class="search-panel-container">
|
||||
<div class="search-panel">
|
||||
<div class="iconified-input">
|
||||
<SearchIcon aria-hidden="true" />
|
||||
<input
|
||||
v-model="searchStore.searchInput"
|
||||
type="text"
|
||||
:placeholder="`Search ${searchStore.projectType}s...`"
|
||||
@input="getSearchResults"
|
||||
/>
|
||||
</div>
|
||||
<span>Sort by</span>
|
||||
<DropdownSelect
|
||||
v-model="searchStore.filter"
|
||||
name="Sort dropdown"
|
||||
:options="[
|
||||
'Relevance',
|
||||
'Download count',
|
||||
'Follow count',
|
||||
'Recently published',
|
||||
'Recently updated',
|
||||
]"
|
||||
class="sort-dropdown"
|
||||
@change="getSearchResults"
|
||||
/>
|
||||
<span>Show per page</span>
|
||||
<DropdownSelect
|
||||
v-model="searchStore.limit"
|
||||
name="Limit dropdown"
|
||||
:options="[5, 10, 15, 20, 50, 100]"
|
||||
:default-value="searchStore.limit.toString()"
|
||||
:model-value="searchStore.limit.toString()"
|
||||
class="limit-dropdown"
|
||||
@change="getSearchResults"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<Pagination
|
||||
:page="searchStore.currentPage"
|
||||
:count="searchStore.pageCount"
|
||||
@switch-page="switchPage"
|
||||
/>
|
||||
<SplashScreen v-if="loading"/>
|
||||
<section v-else class="project-list display-mode--list instance-results" role="list">
|
||||
<ProjectCard
|
||||
v-for="result in searchStore.searchResults"
|
||||
:id="`${result?.project_id}/`"
|
||||
:key="result?.project_id"
|
||||
class="result-project-item"
|
||||
:type="result?.project_type"
|
||||
:name="result?.title"
|
||||
:description="result?.description"
|
||||
:icon-url="result?.icon_url"
|
||||
:downloads="result?.downloads?.toString()"
|
||||
:follows="result?.follows?.toString()"
|
||||
:created-at="result?.date_created"
|
||||
:updated-at="result?.date_modified"
|
||||
:categories="[
|
||||
...categories.filter(
|
||||
(cat) =>
|
||||
result?.display_categories.includes(cat.name) &&
|
||||
cat.project_type === searchStore.projectType
|
||||
),
|
||||
...loaders.filter(
|
||||
(loader) =>
|
||||
result?.display_categories.includes(loader.name) &&
|
||||
loader.supported_project_types?.includes(searchStore.projectType)
|
||||
),
|
||||
]"
|
||||
:project-type-display="result?.project_type"
|
||||
project-type-url="project"
|
||||
:server-side="result?.server_side"
|
||||
:client-side="result?.client_side"
|
||||
:show-updated-date="false"
|
||||
:color="result?.color"
|
||||
/>
|
||||
</section>
|
||||
</div>
|
||||
<div
|
||||
v-if="
|
||||
showLoaders &&
|
||||
searchStore.projectType !== 'datapack' &&
|
||||
searchStore.projectType !== 'resourcepack' &&
|
||||
searchStore.projectType !== 'shader'
|
||||
"
|
||||
class="loaders"
|
||||
>
|
||||
<h2>Loaders</h2>
|
||||
<div
|
||||
v-for="loader in loaders.filter((l) =>
|
||||
l.supported_project_types?.includes(searchStore.projectType)
|
||||
)"
|
||||
:key="loader"
|
||||
>
|
||||
<SearchFilter
|
||||
:active-filters="searchStore.orFacets"
|
||||
:icon="loader.icon"
|
||||
:display-name="loader.name"
|
||||
:facet-name="`categories:${encodeURIComponent(loader.name)}`"
|
||||
class="filter-checkbox"
|
||||
@toggle="toggleOrFacet"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="searchStore.projectType !== 'datapack'" class="environment">
|
||||
<h2>Environments</h2>
|
||||
<SearchFilter
|
||||
v-model="searchStore.environments.client"
|
||||
display-name="Client"
|
||||
facet-name="client"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
<ClientIcon aria-hidden="true" />
|
||||
</SearchFilter>
|
||||
<SearchFilter
|
||||
v-model="searchStore.environments.server"
|
||||
display-name="Server"
|
||||
facet-name="server"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
<ServerIcon aria-hidden="true" />
|
||||
</SearchFilter>
|
||||
</div>
|
||||
<div v-if="showVersions" class="versions">
|
||||
<h2>Minecraft versions</h2>
|
||||
<Checkbox v-model="showSnapshots" class="filter-checkbox">Show snapshots</Checkbox>
|
||||
<multiselect
|
||||
v-model="searchStore.activeVersions"
|
||||
:options="
|
||||
showSnapshots
|
||||
? availableGameVersions.map((x) => x.version)
|
||||
: availableGameVersions
|
||||
.filter((it) => it.version_type === 'release')
|
||||
.map((x) => x.version)
|
||||
"
|
||||
:multiple="true"
|
||||
:searchable="true"
|
||||
:show-no-results="false"
|
||||
:close-on-select="false"
|
||||
:clear-search-on-select="false"
|
||||
:show-labels="false"
|
||||
placeholder="Choose versions..."
|
||||
@update:model-value="getSearchResults"
|
||||
/>
|
||||
</div>
|
||||
<div class="open-source">
|
||||
<h2>Open source</h2>
|
||||
<Checkbox
|
||||
v-model="searchStore.openSource"
|
||||
class="filter-checkbox"
|
||||
@click="getSearchResults"
|
||||
>
|
||||
Open source
|
||||
</Checkbox>
|
||||
</div>
|
||||
</aside>
|
||||
<div class="search">
|
||||
<Card class="project-type-container">
|
||||
<NavRow
|
||||
:links="
|
||||
searchStore.instanceContext
|
||||
? [
|
||||
{ label: 'Mods', href: `/browse/mod` },
|
||||
{ label: 'Datapacks', href: `/browse/datapack` },
|
||||
{ label: 'Shaders', href: `/browse/shader` },
|
||||
{ label: 'Resource Packs', href: `/browse/resourcepack` },
|
||||
]
|
||||
: [
|
||||
{ label: 'Modpacks', href: '/browse/modpack' },
|
||||
{ label: 'Mods', href: '/browse/mod' },
|
||||
{ label: 'Datapacks', href: '/browse/datapack' },
|
||||
{ label: 'Shaders', href: '/browse/shader' },
|
||||
{ label: 'Resource Packs', href: '/browse/resourcepack' },
|
||||
]
|
||||
"
|
||||
/>
|
||||
</Card>
|
||||
<Card class="search-panel-container">
|
||||
<div class="search-panel">
|
||||
<div class="iconified-input">
|
||||
<SearchIcon aria-hidden="true" />
|
||||
<input
|
||||
v-model="searchStore.searchInput"
|
||||
type="text"
|
||||
:placeholder="`Search ${searchStore.projectType}s...`"
|
||||
@input="getSearchResults"
|
||||
/>
|
||||
</div>
|
||||
<span>Sort by</span>
|
||||
<DropdownSelect
|
||||
v-model="searchStore.filter"
|
||||
name="Sort dropdown"
|
||||
:options="[
|
||||
'Relevance',
|
||||
'Download count',
|
||||
'Follow count',
|
||||
'Recently published',
|
||||
'Recently updated',
|
||||
]"
|
||||
class="sort-dropdown"
|
||||
@change="getSearchResults"
|
||||
/>
|
||||
<span>Show per page</span>
|
||||
<DropdownSelect
|
||||
v-model="searchStore.limit"
|
||||
name="Limit dropdown"
|
||||
:options="[5, 10, 15, 20, 50, 100]"
|
||||
:default-value="searchStore.limit.toString()"
|
||||
:model-value="searchStore.limit.toString()"
|
||||
class="limit-dropdown"
|
||||
@change="getSearchResults"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<Pagination
|
||||
:page="searchStore.currentPage"
|
||||
:count="searchStore.pageCount"
|
||||
@switch-page="switchPage"
|
||||
/>
|
||||
<SplashScreen v-if="loading" />
|
||||
<section v-else class="project-list display-mode--list instance-results" role="list">
|
||||
<ProjectCard
|
||||
v-for="result in searchStore.searchResults"
|
||||
:id="`${result?.project_id}/`"
|
||||
:key="result?.project_id"
|
||||
class="result-project-item"
|
||||
:type="result?.project_type"
|
||||
:name="result?.title"
|
||||
:description="result?.description"
|
||||
:icon-url="result?.icon_url"
|
||||
:downloads="result?.downloads?.toString()"
|
||||
:follows="result?.follows?.toString()"
|
||||
:created-at="result?.date_created"
|
||||
:updated-at="result?.date_modified"
|
||||
:categories="[
|
||||
...categories.filter(
|
||||
(cat) =>
|
||||
result?.display_categories.includes(cat.name) &&
|
||||
cat.project_type === searchStore.projectType
|
||||
),
|
||||
...loaders.filter(
|
||||
(loader) =>
|
||||
result?.display_categories.includes(loader.name) &&
|
||||
loader.supported_project_types?.includes(searchStore.projectType)
|
||||
),
|
||||
]"
|
||||
:project-type-display="result?.project_type"
|
||||
project-type-url="project"
|
||||
:server-side="result?.server_side"
|
||||
:client-side="result?.client_side"
|
||||
:show-updated-date="false"
|
||||
:color="result?.color"
|
||||
/>
|
||||
</section>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style src="vue-multiselect/dist/vue-multiselect.css"></style>
|
||||
|
||||
@@ -125,237 +125,235 @@ const setJavaInstall = (javaInstall) => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<Modal ref="detectJavaModal" header="Select java version">
|
||||
<div class="auto-detect-modal">
|
||||
<div class="table">
|
||||
<div class="table-row table-head">
|
||||
<div class="table-cell table-text">Version</div>
|
||||
<div class="table-cell table-text">Path</div>
|
||||
<div class="table-cell table-text">Actions</div>
|
||||
<div>
|
||||
<Modal ref="detectJavaModal" header="Select java version">
|
||||
<div class="auto-detect-modal">
|
||||
<div class="table">
|
||||
<div class="table-row table-head">
|
||||
<div class="table-cell table-text">Version</div>
|
||||
<div class="table-cell table-text">Path</div>
|
||||
<div class="table-cell table-text">Actions</div>
|
||||
</div>
|
||||
<div
|
||||
v-for="javaInstall in chosenInstallOptions"
|
||||
:key="javaInstall.path"
|
||||
class="table-row"
|
||||
>
|
||||
<div class="table-cell table-text">
|
||||
<span>{{ javaInstall.version }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-for="javaInstall in chosenInstallOptions"
|
||||
:key="javaInstall.path"
|
||||
class="table-row"
|
||||
>
|
||||
<div class="table-cell table-text">
|
||||
<span>{{ javaInstall.version }}</span>
|
||||
</div>
|
||||
<div class="table-cell table-text">
|
||||
<span>{{ javaInstall.path }}</span>
|
||||
</div>
|
||||
<div class="table-cell table-text manage">
|
||||
<Button
|
||||
:disabled="
|
||||
<div class="table-cell table-text">
|
||||
<span>{{ javaInstall.path }}</span>
|
||||
</div>
|
||||
<div class="table-cell table-text manage">
|
||||
<Button
|
||||
:disabled="
|
||||
settings.java_globals.JAVA_17.path === javaInstall.path ||
|
||||
settings.java_globals.JAVA_8.path === javaInstall.path
|
||||
"
|
||||
class="select-btn"
|
||||
@click="() => setJavaInstall(javaInstall)"
|
||||
>
|
||||
<span
|
||||
v-if="
|
||||
settings.java_globals.JAVA_17.path === javaInstall.path ||
|
||||
settings.java_globals.JAVA_8.path === javaInstall.path
|
||||
"
|
||||
class="select-btn"
|
||||
@click="() => setJavaInstall(javaInstall)"
|
||||
>
|
||||
<span
|
||||
v-if="
|
||||
settings.java_globals.JAVA_17.path === javaInstall.path ||
|
||||
settings.java_globals.JAVA_8.path === javaInstall.path
|
||||
"
|
||||
>
|
||||
<CheckIcon />Selected
|
||||
</span>
|
||||
<span v-else><PlusIcon />Select</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="chosenInstallOptions.length === 0" class="table-row entire-row">
|
||||
<div class="table-cell table-text">No JARS Found!</div>
|
||||
<CheckIcon />Selected
|
||||
</span>
|
||||
<span v-else><PlusIcon />Select</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="chosenInstallOptions.length === 0" class="table-row entire-row">
|
||||
<div class="table-cell table-text">No JARS Found!</div>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
<Card class="theming">
|
||||
<h2>Display</h2>
|
||||
</div>
|
||||
</Modal>
|
||||
<Card class="theming">
|
||||
<h2>Display</h2>
|
||||
<div class="toggle-setting">
|
||||
<div class="description">
|
||||
<h3>Color theme</h3>
|
||||
<p>Change the global launcher color theme.</p>
|
||||
</div>
|
||||
<DropdownSelect
|
||||
name="Theme dropdown"
|
||||
:options="themeStore.themeOptions"
|
||||
:default-value="settings.theme"
|
||||
:model-value="settings.theme"
|
||||
class="theme-dropdown"
|
||||
@change="handleTheme"
|
||||
/>
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
<div class="description">
|
||||
<h3>Collapsed navigation mode</h3>
|
||||
<p>Change the style of the side navigation bar</p>
|
||||
</div>
|
||||
<Toggle
|
||||
:model-value="themeStore.collapsedNavigation"
|
||||
:checked="themeStore.collapsedNavigation"
|
||||
@update:model-value="(value) => handleCollapse(value)"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Java</h2>
|
||||
<div class="settings-group">
|
||||
<h3>Java 17 Location</h3>
|
||||
<div class="toggle-setting">
|
||||
<div class="description">
|
||||
<h3>Color theme</h3>
|
||||
<p>Change the global launcher color theme.</p>
|
||||
</div>
|
||||
<DropdownSelect
|
||||
name="Theme dropdown"
|
||||
:options="themeStore.themeOptions"
|
||||
:default-value="settings.theme"
|
||||
:model-value="settings.theme"
|
||||
class="theme-dropdown"
|
||||
@change="handleTheme"
|
||||
/>
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
<div class="description">
|
||||
<h3>Collapsed navigation mode</h3>
|
||||
<p>Change the style of the side navigation bar</p>
|
||||
</div>
|
||||
<Toggle
|
||||
:model-value="themeStore.collapsedNavigation"
|
||||
:checked="themeStore.collapsedNavigation"
|
||||
@update:model-value="(value) => handleCollapse(value)"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Java</h2>
|
||||
<div class="settings-group">
|
||||
<h3>Java 17 Location</h3>
|
||||
<div class="toggle-setting">
|
||||
<input
|
||||
v-model="settings.java_globals.JAVA_17.path"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="/path/to/java17"
|
||||
/>
|
||||
<span class="installation-buttons">
|
||||
<Button @click="() => loadJavaModal(17)">
|
||||
<SearchIcon />
|
||||
Auto Detect
|
||||
</Button>
|
||||
<Button @click="handleJava17FileInput">
|
||||
<BrowseIcon />
|
||||
Browse
|
||||
</Button>
|
||||
<Button @click="handleJava17Test">
|
||||
<PlayIcon />
|
||||
Test
|
||||
</Button>
|
||||
<AnimatedLogo v-if="testingJava17 === true" class="testing-loader" />
|
||||
<CheckIcon
|
||||
v-else-if="java17Success === true && testingJava17 === false"
|
||||
class="test-success"
|
||||
/>
|
||||
<XIcon
|
||||
v-else-if="java17Success === false && testingJava17 === false"
|
||||
class="test-fail"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settings-group">
|
||||
<h3>Java 8 Location</h3>
|
||||
<div class="toggle-setting">
|
||||
<input
|
||||
v-model="settings.java_globals.JAVA_8.path"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="/path/to/java8"
|
||||
/>
|
||||
<span class="installation-buttons">
|
||||
<Button @click="() => loadJavaModal(8)">
|
||||
<SearchIcon />
|
||||
Auto Detect
|
||||
</Button>
|
||||
<Button @click="handleJava8FileInput">
|
||||
<BrowseIcon />
|
||||
Browse
|
||||
</Button>
|
||||
<Button @click="handleJava8Test">
|
||||
<PlayIcon />
|
||||
Test
|
||||
</Button>
|
||||
<AnimatedLogo v-if="testingJava8 === true" class="testing-loader" />
|
||||
<CheckIcon
|
||||
v-else-if="java8Success === true && testingJava8 === false"
|
||||
class="test-success"
|
||||
/>
|
||||
<XIcon
|
||||
v-else-if="java8Success === false && testingJava8 === false"
|
||||
class="test-fail"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="card-divider" />
|
||||
<div class="settings-group">
|
||||
<h3>Java Arguments</h3>
|
||||
<input
|
||||
v-model="settings.custom_java_args"
|
||||
v-model="settings.java_globals.JAVA_17.path"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="Enter java arguments..."
|
||||
placeholder="/path/to/java17"
|
||||
/>
|
||||
<span class="installation-buttons">
|
||||
<Button @click="() => loadJavaModal(17)">
|
||||
<SearchIcon />
|
||||
Auto Detect
|
||||
</Button>
|
||||
<Button @click="handleJava17FileInput">
|
||||
<BrowseIcon />
|
||||
Browse
|
||||
</Button>
|
||||
<Button @click="handleJava17Test">
|
||||
<PlayIcon />
|
||||
Test
|
||||
</Button>
|
||||
<AnimatedLogo v-if="testingJava17 === true" class="testing-loader" />
|
||||
<CheckIcon
|
||||
v-else-if="java17Success === true && testingJava17 === false"
|
||||
class="test-success"
|
||||
/>
|
||||
<XIcon
|
||||
v-else-if="java17Success === false && testingJava17 === false"
|
||||
class="test-fail"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="settings-group">
|
||||
<h3>Environment Arguments</h3>
|
||||
</div>
|
||||
<div class="settings-group">
|
||||
<h3>Java 8 Location</h3>
|
||||
<div class="toggle-setting">
|
||||
<input
|
||||
v-model="settings.custom_env_args"
|
||||
v-model="settings.java_globals.JAVA_8.path"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="Enter environment arguments..."
|
||||
placeholder="/path/to/java8"
|
||||
/>
|
||||
<span class="installation-buttons">
|
||||
<Button @click="() => loadJavaModal(8)">
|
||||
<SearchIcon />
|
||||
Auto Detect
|
||||
</Button>
|
||||
<Button @click="handleJava8FileInput">
|
||||
<BrowseIcon />
|
||||
Browse
|
||||
</Button>
|
||||
<Button @click="handleJava8Test">
|
||||
<PlayIcon />
|
||||
Test
|
||||
</Button>
|
||||
<AnimatedLogo v-if="testingJava8 === true" class="testing-loader" />
|
||||
<CheckIcon
|
||||
v-else-if="java8Success === true && testingJava8 === false"
|
||||
class="test-success"
|
||||
/>
|
||||
<XIcon v-else-if="java8Success === false && testingJava8 === false" class="test-fail" />
|
||||
</span>
|
||||
</div>
|
||||
<hr class="card-divider" />
|
||||
</div>
|
||||
<hr class="card-divider" />
|
||||
<div class="settings-group">
|
||||
<h3>Java Arguments</h3>
|
||||
<input
|
||||
v-model="settings.custom_java_args"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="Enter java arguments..."
|
||||
/>
|
||||
</div>
|
||||
<div class="settings-group">
|
||||
<h3>Environment Arguments</h3>
|
||||
<input
|
||||
v-model="settings.custom_env_args"
|
||||
type="text"
|
||||
class="input installation-input"
|
||||
placeholder="Enter environment arguments..."
|
||||
/>
|
||||
</div>
|
||||
<hr class="card-divider" />
|
||||
<div class="settings-group">
|
||||
<div class="sliders">
|
||||
<span class="slider">
|
||||
Minimum Memory
|
||||
<Slider v-model="settings.memory.minimum" :min="1000" :max="8200" :step="10" />
|
||||
</span>
|
||||
<span class="slider">
|
||||
Maximum Memory
|
||||
<Slider v-model="settings.memory.maximum" :min="1000" :max="8200" :step="10" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Window Size</h2>
|
||||
<div class="settings-group">
|
||||
<div class="settings-group">
|
||||
<div class="sliders">
|
||||
<span class="slider">
|
||||
Minimum Memory
|
||||
<Slider v-model="settings.memory.minimum" :min="1000" :max="8200" :step="10" />
|
||||
Width
|
||||
<Slider v-model="settings.game_resolution[0]" :min="400" :max="2562" :step="2" />
|
||||
</span>
|
||||
<span class="slider">
|
||||
Maximum Memory
|
||||
<Slider v-model="settings.memory.maximum" :min="1000" :max="8200" :step="10" />
|
||||
Height
|
||||
<Slider v-model="settings.game_resolution[1]" :min="400" :max="2562" :step="2" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Window Size</h2>
|
||||
<div class="settings-group">
|
||||
<div class="settings-group">
|
||||
<div class="sliders">
|
||||
<span class="slider">
|
||||
Width
|
||||
<Slider v-model="settings.game_resolution[0]" :min="400" :max="2562" :step="2" />
|
||||
</span>
|
||||
<span class="slider">
|
||||
Height
|
||||
<Slider v-model="settings.game_resolution[1]" :min="400" :max="2562" :step="2" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Launcher Settings</h2>
|
||||
<div class="settings-group">
|
||||
<h3>Resource Management</h3>
|
||||
<div class="toggle-setting">
|
||||
<span>Maximum Concurrent Downloads</span>
|
||||
<Slider
|
||||
v-model="settings.max_concurrent_downloads"
|
||||
class="concurrent-downloads"
|
||||
:min="1"
|
||||
:max="100"
|
||||
:step="1"
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Launcher Settings</h2>
|
||||
<div class="settings-group">
|
||||
<h3>Resource Management</h3>
|
||||
<div class="toggle-setting">
|
||||
<span>Maximum Concurrent Downloads</span>
|
||||
<Slider
|
||||
v-model="settings.max_concurrent_downloads"
|
||||
class="concurrent-downloads"
|
||||
:min="1"
|
||||
:max="100"
|
||||
:step="1"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Commands</h2>
|
||||
<div class="settings-group">
|
||||
<div class="toggle-setting">
|
||||
Pre Launch
|
||||
<input v-model="settings.hooks.pre_launch" type="text" class="input" />
|
||||
</div>
|
||||
</Card>
|
||||
<Card class="settings-card">
|
||||
<h2 class="settings-title">Commands</h2>
|
||||
<div class="settings-group">
|
||||
<div class="toggle-setting">
|
||||
Pre Launch
|
||||
<input v-model="settings.hooks.pre_launch" type="text" class="input" />
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
Wrapper
|
||||
<input v-model="settings.hooks.wrapper" type="text" class="input" />
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
Post Launch
|
||||
<input v-model="settings.hooks.post_exit" type="text" class="input" />
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
Wrapper
|
||||
<input v-model="settings.hooks.wrapper" type="text" class="input" />
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
<div class="toggle-setting">
|
||||
Post Launch
|
||||
<input v-model="settings.hooks.post_exit" type="text" class="input" />
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
.concurrent-downloads {
|
||||
width: 80% !important;
|
||||
|
||||
@@ -356,23 +356,4 @@ Button {
|
||||
height: 1px;
|
||||
margin: var(--gap-xl) 0;
|
||||
}
|
||||
|
||||
.loading-icon {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
animation: spin 1s linear infinite;
|
||||
color: var(--color-base);
|
||||
|
||||
:deep(svg) {
|
||||
color: var(--color-base);
|
||||
fill: var(--color-base);
|
||||
left: 2rem;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
:deep(path) {
|
||||
fill: var(--color-base) !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user