mirror of
https://github.com/VueTorrent/VueTorrent.git
synced 2025-02-26 12:21:00 +03:00
feat: Add import / export settings button (#659) @Larsluph
This commit is contained in:
parent
bf9484b142
commit
7caa19ab88
13 changed files with 255 additions and 15 deletions
9
package-lock.json
generated
9
package-lock.json
generated
|
@ -11,6 +11,7 @@
|
||||||
"apexcharts": "^3.35.0",
|
"apexcharts": "^3.35.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"dayjs": "^1.10.4",
|
"dayjs": "^1.10.4",
|
||||||
|
"jsonschema": "^1.4.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"quick-score": "^0.2.0",
|
"quick-score": "^0.2.0",
|
||||||
"typeface-roboto": "^1.1.13",
|
"typeface-roboto": "^1.1.13",
|
||||||
|
@ -5382,6 +5383,14 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/jsonschema": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/kind-of": {
|
"node_modules/kind-of": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
"apexcharts": "^3.35.0",
|
"apexcharts": "^3.35.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"dayjs": "^1.10.4",
|
"dayjs": "^1.10.4",
|
||||||
|
"jsonschema": "^1.4.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"quick-score": "^0.2.0",
|
"quick-score": "^0.2.0",
|
||||||
"typeface-roboto": "^1.1.13",
|
"typeface-roboto": "^1.1.13",
|
||||||
|
|
|
@ -207,8 +207,15 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
<v-list-item>
|
||||||
|
<v-textarea v-model="settingsField" />
|
||||||
|
</v-list-item>
|
||||||
|
<v-list-item class="remove-after justify-content-evenly">
|
||||||
|
<v-btn @click="importSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.importSettings') }}</v-btn>
|
||||||
|
<v-btn @click="exportSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.exportSettings') }}</v-btn>
|
||||||
|
</v-list-item>
|
||||||
<v-list-item class="justify-center pb-2">
|
<v-list-item class="justify-center pb-2">
|
||||||
<v-btn @click="resetSettings"> {{ $t('modals.settings.pageVueTorrent.pageGeneral.resetSettings') }} </v-btn>
|
<v-btn dark color="red" @click="resetSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.resetSettings') }}</v-btn>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
|
@ -217,16 +224,21 @@
|
||||||
import { mapState, mapGetters } from 'vuex'
|
import { mapState, mapGetters } from 'vuex'
|
||||||
import { Qbit } from '@/services/qbit'
|
import { Qbit } from '@/services/qbit'
|
||||||
import { LOCALES } from '@/lang/locales'
|
import { LOCALES } from '@/lang/locales'
|
||||||
import {TitleOptions} from "@/enums/vuetorrent";
|
import { General } from '@/mixins'
|
||||||
|
import { TitleOptions } from '@/enums/vuetorrent'
|
||||||
|
import { validate } from 'jsonschema'
|
||||||
|
import { StoreState } from '@/schemas'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'VueTorrent-General',
|
name: 'VueTorrent-General',
|
||||||
|
mixins: [General],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
languages: LOCALES,
|
languages: LOCALES,
|
||||||
paginationSizes: [5, 15, 30, 50],
|
paginationSizes: [5, 15, 30, 50],
|
||||||
titleOptions: [TitleOptions.DEFAULT, TitleOptions.GLOBAL_SPEED, TitleOptions.FIRST_TORRENT_STATUS],
|
titleOptions: [TitleOptions.DEFAULT, TitleOptions.GLOBAL_SPEED, TitleOptions.FIRST_TORRENT_STATUS],
|
||||||
Qbitversion: 0
|
Qbitversion: 0,
|
||||||
|
settingsField: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -243,6 +255,32 @@ export default {
|
||||||
async fetchQbitVersion() {
|
async fetchQbitVersion() {
|
||||||
this.Qbitversion = await Qbit.getAppVersion()
|
this.Qbitversion = await Qbit.getAppVersion()
|
||||||
},
|
},
|
||||||
|
importSettings() {
|
||||||
|
let isValidJson = true
|
||||||
|
let userState
|
||||||
|
try {
|
||||||
|
userState = JSON.parse(this.settingsField)
|
||||||
|
let validatorResult = validate(userState, StoreState)
|
||||||
|
console.log(userState)
|
||||||
|
console.log(validatorResult)
|
||||||
|
if (!validatorResult.valid)
|
||||||
|
isValidJson = false
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
isValidJson = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isValidJson) {
|
||||||
|
this.$toast.error(this.$t('toast.invalidJson').toString())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
window.localStorage.setItem('vuetorrent', this.settingsField)
|
||||||
|
location.reload()
|
||||||
|
},
|
||||||
|
exportSettings() {
|
||||||
|
this.settingsField = window.localStorage.getItem('vuetorrent') ?? ''
|
||||||
|
},
|
||||||
resetSettings() {
|
resetSettings() {
|
||||||
window.localStorage.clear()
|
window.localStorage.clear()
|
||||||
location.reload()
|
location.reload()
|
||||||
|
@ -261,4 +299,11 @@ export default {
|
||||||
@import 'src/styles/styles.scss';
|
@import 'src/styles/styles.scss';
|
||||||
@include reverse-switch;
|
@include reverse-switch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.justify-content-evenly {
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
.remove-after::after {
|
||||||
|
content: unset;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
"inactive": "Inactive",
|
"inactive": "Inactive",
|
||||||
"stalled": "Stalled",
|
"stalled": "Stalled",
|
||||||
"errored": "Errored",
|
"errored": "Errored",
|
||||||
"login": "Login in",
|
"login": "Log in",
|
||||||
"logout": "Log out",
|
"logout": "Log out",
|
||||||
"shutdownApp": "Shutdown Application",
|
"shutdownApp": "Shutdown Application",
|
||||||
"download": "Download",
|
"download": "Download",
|
||||||
|
@ -50,6 +50,7 @@
|
||||||
"yes": "yes",
|
"yes": "yes",
|
||||||
"no": "no",
|
"no": "no",
|
||||||
"filter": "Filter",
|
"filter": "Filter",
|
||||||
|
"close": "Close",
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"tooltips": {
|
"tooltips": {
|
||||||
"toggleSearch": "Toggle Search Filter",
|
"toggleSearch": "Toggle Search Filter",
|
||||||
|
@ -190,6 +191,8 @@
|
||||||
"openSideBarOnStart": "Open Side Bar on launch",
|
"openSideBarOnStart": "Open Side Bar on launch",
|
||||||
"currentVersion": "Current Version:",
|
"currentVersion": "Current Version:",
|
||||||
"qbittorrentVersion": "QBittorrent Version:",
|
"qbittorrentVersion": "QBittorrent Version:",
|
||||||
|
"importSettings": "Import Settings",
|
||||||
|
"exportSettings": "Export Settings",
|
||||||
"resetSettings": "Reset Settings"
|
"resetSettings": "Reset Settings"
|
||||||
},
|
},
|
||||||
"pageDashboard": {
|
"pageDashboard": {
|
||||||
|
@ -505,7 +508,8 @@
|
||||||
"pasteSuccess": "Text pasted!",
|
"pasteSuccess": "Text pasted!",
|
||||||
"pasteNotSupported": "Unable to paste, context isn't secured",
|
"pasteNotSupported": "Unable to paste, context isn't secured",
|
||||||
"shutdownSuccess": "qBittorrent was shutdown successfully!",
|
"shutdownSuccess": "qBittorrent was shutdown successfully!",
|
||||||
"shutdownError": "Unable to shutdown app. Make sure qBittorrent is running!"
|
"shutdownError": "Unable to shutdown app. Make sure qBittorrent is running!",
|
||||||
|
"invalidJson": "Invalid JSON!"
|
||||||
},
|
},
|
||||||
"rightClick": {
|
"rightClick": {
|
||||||
"resume": "resume",
|
"resume": "resume",
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
"yes": "oui",
|
"yes": "oui",
|
||||||
"no": "non",
|
"no": "non",
|
||||||
"filter": "Filtre",
|
"filter": "Filtre",
|
||||||
|
"close": "Fermer",
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"tooltips": {
|
"tooltips": {
|
||||||
"toggleSearch": "Rechercher un torrent",
|
"toggleSearch": "Rechercher un torrent",
|
||||||
|
@ -185,7 +186,10 @@
|
||||||
"dateFormat": "Format de date",
|
"dateFormat": "Format de date",
|
||||||
"openSideBarOnStart": "Ouvrir la barre latérale au lancement",
|
"openSideBarOnStart": "Ouvrir la barre latérale au lancement",
|
||||||
"currentVersion": "Version actuelle:",
|
"currentVersion": "Version actuelle:",
|
||||||
"qbittorrentVersion": "Version de QBittorrent:"
|
"qbittorrentVersion": "Version de QBittorrent:",
|
||||||
|
"importSettings": "Importer la configuration",
|
||||||
|
"exportSettings": "Exporter la configuration",
|
||||||
|
"resetSettings": "Réinitialiser la configuration"
|
||||||
},
|
},
|
||||||
"pageDashboard": {
|
"pageDashboard": {
|
||||||
"busyTorrentTip": "Propriétés à afficher pour les torrents occupés",
|
"busyTorrentTip": "Propriétés à afficher pour les torrents occupés",
|
||||||
|
@ -491,6 +495,7 @@
|
||||||
"copySuccess": "Texte copié!",
|
"copySuccess": "Texte copié!",
|
||||||
"copyNotSupported": "Impossible de copier, le contexte n'est pas sécurisé",
|
"copyNotSupported": "Impossible de copier, le contexte n'est pas sécurisé",
|
||||||
"pasteSuccess": "Texte collé!",
|
"pasteSuccess": "Texte collé!",
|
||||||
|
"invalidJson": "JSON invalide!"
|
||||||
"pasteNotSupported": "Impossible de coller, le contexte n'est pas sécurisé"
|
"pasteNotSupported": "Impossible de coller, le contexte n'est pas sécurisé"
|
||||||
},
|
},
|
||||||
"rightClick": {
|
"rightClick": {
|
||||||
|
|
170
src/schemas/StoreState.json
Normal file
170
src/schemas/StoreState.json
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"sort_options": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"isCustomSortEnabled": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"sort": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"reverse": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"filter": {
|
||||||
|
"type": ["string", "null"]
|
||||||
|
},
|
||||||
|
"category": {
|
||||||
|
"type": ["string", "null"]
|
||||||
|
},
|
||||||
|
"tag": {
|
||||||
|
"type": ["string", "null"]
|
||||||
|
},
|
||||||
|
"tracker": {
|
||||||
|
"type": ["string", "null"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"isCustomSortEnabled",
|
||||||
|
"sort",
|
||||||
|
"reverse",
|
||||||
|
"filter",
|
||||||
|
"category",
|
||||||
|
"tag",
|
||||||
|
"tracker"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"webuiSettings": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"lang": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"darkTheme": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showFreeSpace": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showSpeedGraph": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showSessionStat": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showAlltimeStat": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showCurrentSpeed": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showTrackerFilter": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"showSpeedInTitle": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"deleteWithFiles": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"rightDrawer": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"topPagination": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"paginationSize": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"dateFormat": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"openSideBarOnStart": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"busyTorrentProperties": {
|
||||||
|
"type": "array",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"active": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"name",
|
||||||
|
"active",
|
||||||
|
"label"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"doneTorrentProperties": {
|
||||||
|
"type": "array",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"active": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"name",
|
||||||
|
"active",
|
||||||
|
"label"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"lang",
|
||||||
|
"darkTheme",
|
||||||
|
"showFreeSpace",
|
||||||
|
"showSpeedGraph",
|
||||||
|
"showSessionStat",
|
||||||
|
"showAlltimeStat",
|
||||||
|
"showCurrentSpeed",
|
||||||
|
"showTrackerFilter",
|
||||||
|
"showSpeedInTitle",
|
||||||
|
"deleteWithFiles",
|
||||||
|
"title",
|
||||||
|
"rightDrawer",
|
||||||
|
"topPagination",
|
||||||
|
"paginationSize",
|
||||||
|
"dateFormat",
|
||||||
|
"openSideBarOnStart",
|
||||||
|
"busyTorrentProperties",
|
||||||
|
"doneTorrentProperties"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"authenticated": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"sort_options",
|
||||||
|
"webuiSettings",
|
||||||
|
"authenticated"
|
||||||
|
]
|
||||||
|
}
|
3
src/schemas/index.ts
Normal file
3
src/schemas/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import StoreState from './StoreState.json'
|
||||||
|
|
||||||
|
export { StoreState }
|
|
@ -92,7 +92,6 @@ export class QBitApi {
|
||||||
const params: Parameters = {
|
const params: Parameters = {
|
||||||
sort: !payload.isCustomSortEnabled ? payload.sort : null,
|
sort: !payload.isCustomSortEnabled ? payload.sort : null,
|
||||||
reverse: !payload.isCustomSortEnabled ? payload.reverse : null,
|
reverse: !payload.isCustomSortEnabled ? payload.reverse : null,
|
||||||
hashes: payload.hashes.length > 0 ? payload.hashes.join('|') : null,
|
|
||||||
filter: payload.filter ? payload.filter : null,
|
filter: payload.filter ? payload.filter : null,
|
||||||
category: payload.category !== null ? payload.category : null,
|
category: payload.category !== null ? payload.category : null,
|
||||||
tag: payload.tag !== null ? payload.tag : null
|
tag: payload.tag !== null ? payload.tag : null
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mutations from './mutations'
|
||||||
import type { StoreState } from '@/types/vuetorrent'
|
import type { StoreState } from '@/types/vuetorrent'
|
||||||
import { Status } from '@/models'
|
import { Status } from '@/models'
|
||||||
import { TitleOptions } from '@/enums/vuetorrent'
|
import { TitleOptions } from '@/enums/vuetorrent'
|
||||||
|
import {AppPreferences} from "@/types/qbit/models";
|
||||||
|
|
||||||
const vuexPersist = new VuexPersist<StoreState>({
|
const vuexPersist = new VuexPersist<StoreState>({
|
||||||
key: 'vuetorrent',
|
key: 'vuetorrent',
|
||||||
|
@ -67,12 +68,11 @@ export default new Vuex.Store<StoreState>({
|
||||||
searchPlugins: [],
|
searchPlugins: [],
|
||||||
selectMode: false,
|
selectMode: false,
|
||||||
selected_torrents: [],
|
selected_torrents: [],
|
||||||
settings: null,
|
settings: {} as AppPreferences,
|
||||||
sort_options: {
|
sort_options: {
|
||||||
isCustomSortEnabled: false,
|
isCustomSortEnabled: false,
|
||||||
sort: 'priority',
|
sort: 'priority',
|
||||||
reverse: false,
|
reverse: false,
|
||||||
hashes: [],
|
|
||||||
filter: null,
|
filter: null,
|
||||||
category: null,
|
category: null,
|
||||||
tag: null,
|
tag: null,
|
||||||
|
|
|
@ -70,8 +70,7 @@ export default {
|
||||||
FETCH_SETTINGS: async (state: StoreState, settings: AppPreferences) => {
|
FETCH_SETTINGS: async (state: StoreState, settings: AppPreferences) => {
|
||||||
state.settings = settings
|
state.settings = settings
|
||||||
},
|
},
|
||||||
UPDATE_SORT_OPTIONS: (state: StoreState, { hashes = [], filter = null, category = null, tag = null, tracker = null }) => {
|
UPDATE_SORT_OPTIONS: (state: StoreState, { filter = null, category = null, tag = null, tracker = null }) => {
|
||||||
state.sort_options.hashes = hashes
|
|
||||||
state.sort_options.filter = filter
|
state.sort_options.filter = filter
|
||||||
state.sort_options.category = category
|
state.sort_options.category = category
|
||||||
state.sort_options.tag = tag
|
state.sort_options.tag = tag
|
||||||
|
|
|
@ -5,7 +5,6 @@ export default interface SortOptions {
|
||||||
isCustomSortEnabled: boolean
|
isCustomSortEnabled: boolean
|
||||||
sort: string
|
sort: string
|
||||||
reverse: boolean
|
reverse: boolean
|
||||||
hashes: string[]
|
|
||||||
filter: Optional<TorrentState>
|
filter: Optional<TorrentState>
|
||||||
category: Optional<string>
|
category: Optional<string>
|
||||||
tag: Optional<string>
|
tag: Optional<string>
|
||||||
|
|
|
@ -4,7 +4,6 @@ import type Category from '../qbit/models/Category'
|
||||||
import type Torrent from '@/models/Torrent'
|
import type Torrent from '@/models/Torrent'
|
||||||
import type SortOptions from './SortOptions'
|
import type SortOptions from './SortOptions'
|
||||||
import type { AppPreferences } from '../qbit/models'
|
import type { AppPreferences } from '../qbit/models'
|
||||||
import type { Optional } from '@/global'
|
|
||||||
import type ModalTemplate from './ModalTemplate'
|
import type ModalTemplate from './ModalTemplate'
|
||||||
import type { Status } from '@/models'
|
import type { Status } from '@/models'
|
||||||
import type WebUISettings from '@/types/vuetorrent/WebUISettings'
|
import type WebUISettings from '@/types/vuetorrent/WebUISettings'
|
||||||
|
@ -30,7 +29,7 @@ export default interface StoreState {
|
||||||
searchPlugins: SearchPlugin[]
|
searchPlugins: SearchPlugin[]
|
||||||
selectMode: boolean
|
selectMode: boolean
|
||||||
selected_torrents: string[]
|
selected_torrents: string[]
|
||||||
settings: Optional<AppPreferences>
|
settings: AppPreferences
|
||||||
sort_options: SortOptions
|
sort_options: SortOptions
|
||||||
status: Status
|
status: Status
|
||||||
tags: string[]
|
tags: string[]
|
||||||
|
|
|
@ -126,8 +126,15 @@ exports[`General > render correctly 1`] = `
|
||||||
</a></v-col-stub>
|
</a></v-col-stub>
|
||||||
</v-row-stub>
|
</v-row-stub>
|
||||||
</v-list-item-stub>
|
</v-list-item-stub>
|
||||||
|
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||||
|
<v-textarea-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"\\" backgroundcolor=\\"\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" type=\\"text\\" rowheight=\\"24\\" rows=\\"5\\"></v-textarea-stub>
|
||||||
|
</v-list-item-stub>
|
||||||
|
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"remove-after justify-content-evenly\\">
|
||||||
|
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||||
|
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||||
|
</v-list-item-stub>
|
||||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"justify-center pb-2\\">
|
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"justify-center pb-2\\">
|
||||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"> </v-btn-stub>
|
<v-btn-stub data-v-7da6d3e2=\\"\\" color=\\"red\\" dark=\\"true\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||||
</v-list-item-stub>
|
</v-list-item-stub>
|
||||||
</v-card-stub>"
|
</v-card-stub>"
|
||||||
`;
|
`;
|
||||||
|
|
Loading…
Add table
Reference in a new issue