Vue3 migration - vue-migration.js launch + shell compatibility fixes

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
This commit is contained in:
Francesco Torchia 2024-09-10 17:26:19 +02:00
parent 9613ada5a7
commit aba9c167e0
No known key found for this signature in database
GPG Key ID: E6D011B7415D4393
150 changed files with 2297 additions and 2244 deletions

View File

@ -1,175 +1,247 @@
module.exports = { module.exports = {
root: true, "root": true,
env: { "env": {
browser: true, "browser": true,
node: true "node": true
}, },
globals: { NodeJS: true, Timer: true }, "globals": {
extends: [ "NodeJS": true,
'standard', "Timer": true
'eslint:recommended', },
'@nuxtjs/eslint-config-typescript', "extends": [
'plugin:cypress/recommended' "standard",
"eslint:recommended",
"@nuxtjs/eslint-config-typescript",
"plugin:cypress/recommended"
], ],
// add your custom rules here "rules": {
rules: { "dot-notation": "off",
'dot-notation': 'off', "generator-star-spacing": "off",
'generator-star-spacing': 'off', "guard-for-in": "off",
'guard-for-in': 'off', "linebreak-style": "off",
'linebreak-style': 'off', "new-cap": "off",
'new-cap': 'off', "no-empty": "off",
'no-empty': 'off', "no-extra-boolean-cast": "off",
'no-extra-boolean-cast': 'off', "no-new": "off",
'no-new': 'off', "no-plusplus": "off",
'no-plusplus': 'off', "no-useless-escape": "off",
'no-useless-escape': 'off', "nuxt/no-cjs-in-config": "off",
'nuxt/no-cjs-in-config': 'off', "semi-spacing": "off",
'semi-spacing': 'off', "space-in-parens": "off",
'space-in-parens': 'off', "strict": "off",
strict: 'off', "unicorn/no-new-buffer": "off",
'unicorn/no-new-buffer': 'off', "vue/html-self-closing": "off",
'vue/html-self-closing': 'off', "vue/multi-word-component-names": "off",
'vue/multi-word-component-names': 'off', "vue/no-reserved-component-names": "off",
'vue/no-reserved-component-names': 'off', "vue/no-unused-components": "warn",
'vue/no-unused-components': 'warn', "vue/no-v-html": "error",
'vue/no-v-html': 'error', "wrap-iife": "off",
'wrap-iife': 'off', "array-bracket-spacing": "warn",
"arrow-parens": "warn",
'array-bracket-spacing': 'warn', "arrow-spacing": [
'arrow-parens': 'warn', "warn",
'arrow-spacing': ['warn', { before: true, after: true }],
'block-spacing': ['warn', 'always'],
'brace-style': ['warn', '1tbs'],
'comma-dangle': ['warn', 'only-multiline'],
'comma-spacing': 'warn',
curly: 'warn',
eqeqeq: 'warn',
'func-call-spacing': ['warn', 'never'],
'implicit-arrow-linebreak': 'warn',
indent: ['warn', 2],
'keyword-spacing': 'warn',
'lines-between-class-members': ['warn', 'always', { exceptAfterSingleLine: true }],
'multiline-ternary': ['warn', 'never'],
'newline-per-chained-call': ['warn', { ignoreChainWithDepth: 4 }],
'no-caller': 'warn',
'no-cond-assign': ['warn', 'except-parens'],
'no-console': 'warn',
'no-debugger': 'warn',
'no-eq-null': 'warn',
'no-eval': 'warn',
'no-trailing-spaces': 'warn',
'no-undef': 'warn',
'no-unused-vars': 'warn',
'no-whitespace-before-property': 'warn',
'object-curly-spacing': ['warn', 'always'],
'object-property-newline': 'warn',
'object-shorthand': 'warn',
'padded-blocks': ['warn', 'never'],
'prefer-arrow-callback': 'warn',
'prefer-template': 'warn',
'quote-props': 'warn',
'rest-spread-spacing': 'warn',
semi: ['warn', 'always'],
'space-before-function-paren': ['warn', 'never'],
'space-infix-ops': 'warn',
'spaced-comment': 'warn',
'switch-colon-spacing': 'warn',
'template-curly-spacing': ['warn', 'always'],
'yield-star-spacing': ['warn', 'both'],
'key-spacing': ['warn', {
align: {
beforeColon: false,
afterColon: true,
on: 'value',
mode: 'minimum'
},
multiLine: {
beforeColon: false,
afterColon: true
},
}],
'object-curly-newline': ['warn', {
ObjectExpression: {
multiline: true,
minProperties: 3
},
ObjectPattern: {
multiline: true,
minProperties: 4
},
ImportDeclaration: {
multiline: true,
minProperties: 5
},
ExportDeclaration: {
multiline: true,
minProperties: 3
}
}],
'padding-line-between-statements': [
'warn',
{ {
blankLine: 'always', "before": true,
prev: '*', "after": true
next: 'return',
},
{
blankLine: 'always',
prev: 'function',
next: 'function',
},
// This configuration would require blank lines after every sequence of variable declarations
{
blankLine: 'always',
prev: ['const', 'let', 'var'],
next: '*'
},
{
blankLine: 'any',
prev: ['const', 'let', 'var'],
next: ['const', 'let', 'var']
} }
], ],
"block-spacing": [
quotes: [ "warn",
'warn', "always"
'single',
{
avoidEscape: true,
allowTemplateLiterals: true
},
], ],
"brace-style": [
'space-unary-ops': [ "warn",
'warn', "1tbs"
],
"comma-dangle": [
"warn",
"only-multiline"
],
"comma-spacing": "warn",
"curly": "warn",
"eqeqeq": "warn",
"func-call-spacing": [
"warn",
"never"
],
"implicit-arrow-linebreak": "warn",
"indent": [
"warn",
2
],
"keyword-spacing": "warn",
"lines-between-class-members": [
"warn",
"always",
{ {
words: true, "exceptAfterSingleLine": true
nonwords: false,
} }
], ],
"multiline-ternary": [
// FIXME: The following is disabled due to new linter and old JS code. These should all be enabled and underlying issues fixed "warn",
'vue/order-in-components': 'off', "never"
'vue/no-lone-template': 'off', ],
'vue/v-slot-style': 'off', "newline-per-chained-call": [
'vue/component-tags-order': 'off', "warn",
'vue/no-mutating-props': 'off', {
'@typescript-eslint/no-unused-vars': 'off', "ignoreChainWithDepth": 4
'array-callback-return': 'off', }
],
"no-caller": "warn",
"no-cond-assign": [
"warn",
"except-parens"
],
"no-console": "warn",
"no-debugger": "warn",
"no-eq-null": "warn",
"no-eval": "warn",
"no-trailing-spaces": "warn",
"no-undef": "warn",
"no-unused-vars": "warn",
"no-whitespace-before-property": "warn",
"object-curly-spacing": [
"warn",
"always"
],
"object-property-newline": "warn",
"object-shorthand": "warn",
"padded-blocks": [
"warn",
"never"
],
"prefer-arrow-callback": "warn",
"prefer-template": "warn",
"quote-props": "warn",
"rest-spread-spacing": "warn",
"semi": [
"warn",
"always"
],
"space-before-function-paren": [
"warn",
"never"
],
"space-infix-ops": "warn",
"spaced-comment": "warn",
"switch-colon-spacing": "warn",
"template-curly-spacing": [
"warn",
"always"
],
"yield-star-spacing": [
"warn",
"both"
],
"key-spacing": [
"warn",
{
"align": {
"beforeColon": false,
"afterColon": true,
"on": "value",
"mode": "minimum"
},
"multiLine": {
"beforeColon": false,
"afterColon": true
}
}
],
"object-curly-newline": [
"warn",
{
"ObjectExpression": {
"multiline": true,
"minProperties": 3
},
"ObjectPattern": {
"multiline": true,
"minProperties": 4
},
"ImportDeclaration": {
"multiline": true,
"minProperties": 5
},
"ExportDeclaration": {
"multiline": true,
"minProperties": 3
}
}
],
"padding-line-between-statements": [
"warn",
{
"blankLine": "always",
"prev": "*",
"next": "return"
},
{
"blankLine": "always",
"prev": "function",
"next": "function"
},
{
"blankLine": "always",
"prev": [
"const",
"let",
"var"
],
"next": "*"
},
{
"blankLine": "any",
"prev": [
"const",
"let",
"var"
],
"next": [
"const",
"let",
"var"
]
}
],
"quotes": [
"warn",
"single",
{
"avoidEscape": true,
"allowTemplateLiterals": true
}
],
"space-unary-ops": [
"warn",
{
"words": true,
"nonwords": false
}
],
"vue/order-in-components": "off",
"vue/no-lone-template": "off",
"vue/v-slot-style": "off",
"vue/component-tags-order": "off",
"vue/no-mutating-props": "off",
"@typescript-eslint/no-unused-vars": "off",
"array-callback-return": "off",
"vue/one-component-per-file": "off",
"vue/no-deprecated-slot-attribute": "off",
"vue/require-explicit-emits": "off",
"vue/v-on-event-hyphenation": "off"
}, },
overrides: [ "overrides": [
{ {
files: ['*.js'], "files": [
rules: { "*.js"
// FIXME: The following is disabled due to new linter and old JS code. These should all be enabled and underlying issues fixed ],
'prefer-regex-literals': 'off', "rules": {
'vue/component-definition-name-casing': 'off', "prefer-regex-literals": "off",
'no-unreachable-loop': 'off', "vue/component-definition-name-casing": "off",
'computed-property-spacing': 'off', "no-unreachable-loop": "off",
"computed-property-spacing": "off"
} }
} }
] ]
}; }

View File

@ -8,14 +8,17 @@
"dependencies": { "dependencies": {
"@rancher/components": "0.3.0-alpha.1", "@rancher/components": "0.3.0-alpha.1",
"@rancher/shell": "2.0.0", "@rancher/shell": "2.0.0",
"@vue/cli-plugin-babel": "5.0.8",
"@vue/cli-plugin-typescript": "5.0.8",
"@vue/cli-service": "5.0.8",
"cache-loader": "^4.1.0",
"codemirror": ">=5.64.0 <6",
"codemirror-editor-vue3": "^2.7.0",
"core-js": "3.25.3", "core-js": "3.25.3",
"css-loader": "4.3.0", "css-loader": "4.3.0",
"@vue/cli-plugin-babel": "5.0.8", "diff_match_patch": "^0.1.1",
"@vue/cli-service": "5.0.8", "node-polyfill-webpack-plugin": "^3.0.0",
"@vue/cli-plugin-typescript": "5.0.8", "yaml": "2.0.0"
"cache-loader": "^4.1.0",
"yaml": "2.0.0",
"node-polyfill-webpack-plugin": "^3.0.0"
}, },
"resolutions": { "resolutions": {
"@vue/cli-plugin-babel": "5.0.8", "@vue/cli-plugin-babel": "5.0.8",
@ -46,13 +49,13 @@
"publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish", "publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
"parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name", "parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name",
"lint": "./node_modules/.bin/eslint --max-warnings 0 --ext .js,.ts,.vue .", "lint": "./node_modules/.bin/eslint --max-warnings 0 --ext .js,.ts,.vue .",
"test": "jest --watch" "test": "jest --watch",
"migrate": "node ./vue-migrate.js"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^29.5.12", "@types/jest": "^29.5.12",
"@types/lodash": "^4.17.5", "@types/lodash": "^4.17.5",
"@vue/vue2-jest": "^29.2.6", "@vue/vue3-jest": "^27.0.0-alpha.1",
"babel-plugin-transform-require-context": "^0.1.1", "babel-plugin-transform-require-context": "^0.1.1"
"ts-jest": "^29.1.4"
} }
} }

View File

@ -122,9 +122,7 @@ export default {
</div> </div>
<div class="mt-10"> <div class="mt-10">
<Tag <Tag
v-for="(tag) in value" v-for="((tag), i) in value" :key="i" class="tag"
:key="tag"
class="tag"
> >
<span> <span>
{{ tag }} {{ tag }}
@ -157,7 +155,7 @@ export default {
> >
<input <input
ref="addTagInput" ref="addTagInput"
v-model="inputValue" v-model:value="inputValue"
type="text" type="text"
size="small" size="small"
@blur="confirmAdd" @blur="confirmAdd"

View File

@ -88,7 +88,7 @@ export default {
<div class="filter-popup"> <div class="filter-popup">
<div> <div>
<LabeledSelect <LabeledSelect
v-model="parentSriov" v-model:value="parentSriov"
:options="parentSriovOptions" :options="parentSriovOptions"
:searchable="true" :searchable="true"
:label="label" :label="label"
@ -121,7 +121,7 @@ export default {
width: 300px; width: 300px;
} }
::v-deep .box { :deep() .box {
display: grid; display: grid;
grid-template-columns: 40% 40% 10%; grid-template-columns: 40% 40% 10%;
column-gap: 1.75%; column-gap: 1.75%;

View File

@ -117,7 +117,7 @@ export default {
<template> <template>
<div class="filter"> <div class="filter">
<template v-for="(label, index) in searchLabels"> <template v-for="(label, index) in searchLabels" :key="index">
<span v-if="label.key" :key="`${label.key}${index}`" class="banner-item bg-warning"> <span v-if="label.key" :key="`${label.key}${index}`" class="banner-item bg-warning">
{{ label.key }}{{ label.value ? "=" : '' }}{{ label.value }}<i class="icon icon-close" @click="remove(label)" /> {{ label.key }}{{ label.value ? "=" : '' }}{{ label.value }}<i class="icon icon-close" @click="remove(label)" />
</span> </span>
@ -139,11 +139,11 @@ export default {
<div class="filter-popup"> <div class="filter-popup">
<div> <div>
<ArrayList <ArrayList
v-model="searchLabels" v-model:value="searchLabels"
:show-header="true" :show-header="true"
:default-add-value="defaultAddValue" :default-add-value="defaultAddValue"
:initial-empty-row="true" :initial-empty-row="true"
@input="filterRows" @update:value="filterRows"
> >
<template v-slot:column-headers> <template v-slot:column-headers>
<div class="box"> <div class="box">
@ -162,11 +162,11 @@ export default {
<Select <Select
ref="select" ref="select"
key="label" key="label"
v-model="scope.row.value.key" v-model:value="scope.row.value.key"
:append-to-body="false" :append-to-body="false"
:searchable="true" :searchable="true"
:options="optionLabels" :options="optionLabels"
@input="filterRows" @update:value="filterRows"
/> />
</div> </div>
<div class="value"> <div class="value">
@ -174,13 +174,13 @@ export default {
v-if="calcValueOptions(scope.row.value.key).length > 0" v-if="calcValueOptions(scope.row.value.key).length > 0"
ref="select" ref="select"
key="value" key="value"
v-model="scope.row.value.value" v-model:value="scope.row.value.value"
:append-to-body="false" :append-to-body="false"
:searchable="true" :searchable="true"
:options="calcValueOptions(scope.row.value.key)" :options="calcValueOptions(scope.row.value.key)"
@input="filterRows" @update:value="filterRows"
/> />
<LabeledInput v-else v-model="scope.row.value.value" @input="filterRows" /> <LabeledInput v-else v-model:value="scope.row.value.value" @update:value="filterRows" />
</div> </div>
</template> </template>
@ -234,7 +234,7 @@ export default {
width: 600px; width: 600px;
} }
::v-deep .box { :deep() .box {
display: grid; display: grid;
grid-template-columns: 40% 40% 10%; grid-template-columns: 40% 40% 10%;
column-gap: 1.75%; column-gap: 1.75%;

View File

@ -161,7 +161,7 @@ export default {
<div> <div>
<LabeledSelect <LabeledSelect
v-model="version" v-model:value="version"
class="mb-10" class="mb-10"
:label="t('harvester.upgradePage.versionLabel')" :label="t('harvester.upgradePage.versionLabel')"
:options="versionOptions" :options="versionOptions"
@ -173,7 +173,7 @@ export default {
class="mb-5" class="mb-5"
> >
<Checkbox <Checkbox
v-model="enableLogging" v-model:value="enableLogging"
class="check" class="check"
type="checkbox" type="checkbox"
:label="t('harvester.upgradePage.enableLogging')" :label="t('harvester.upgradePage.enableLogging')"
@ -187,7 +187,7 @@ export default {
></p> ></p>
<Checkbox <Checkbox
v-model="readyReleaseNote" v-model:value="readyReleaseNote"
class="check" class="check"
type="checkbox" type="checkbox"
label-key="harvester.upgradePage.checkReady" label-key="harvester.upgradePage.checkReady"

View File

@ -42,7 +42,7 @@ export default {
<h4>{{ title }} <span class="float-r text-info">{{ precent }}%</span></h4> <h4>{{ title }} <span class="float-r text-info">{{ precent }}%</span></h4>
<div> <div>
<div> <div>
<Collapse :open.sync="open"> <Collapse v-model:open="open">
<template #title> <template #title>
<div class="total-bar"> <div class="total-bar">
<span class="bar"><PercentageBar :value="precent" preferred-direction="MORE" /></span> <span class="bar"><PercentageBar :value="precent" preferred-direction="MORE" /></span>
@ -52,7 +52,7 @@ export default {
<template> <template>
<div class="custom-content"> <div class="custom-content">
<div v-for="item in list" :key="item.name" class="item"> <div v-for="(item, i) in list" :key="i" >
<p>{{ item.name }} <span class="status" :class="{ [item.state]: true }">{{ item.state }}</span></p> <p>{{ item.name }} <span class="status" :class="{ [item.state]: true }">{{ item.state }}</span></p>
<PercentageBar :value="item.percent" preferred-direction="MORE" /> <PercentageBar :value="item.percent" preferred-direction="MORE" />
<p class="warning"> <p class="warning">

View File

@ -104,7 +104,7 @@ export default {
<template> <template>
<div> <div>
<div v-for="setting in categorySettings" :key="setting.id" class="advanced-setting mb-20"> <div v-for="(setting, i) in categorySettings" :key="i" >
<div class="header"> <div class="header">
<div class="title"> <div class="title">
<h1> <h1>

View File

@ -204,7 +204,7 @@ export default {
/> />
<div class="displayed-banners"> <div class="displayed-banners">
<Banner v-for="(keys,index) in displayedKeys" :key="index" color="info" :closable="true" @close="removeKey(keys)"> <Banner v-for="(keys,index) in displayedKeys" :key="index">
<span v-clean-html="keys"></span> <span v-clean-html="keys"></span>
</Banner> </Banner>
</div> </div>

View File

@ -318,7 +318,7 @@ export default {
<hr> <hr>
<div v-for="(keys, index) in preferredShortcutKeys" :key="index" class="mb-5"> <div v-for="(keys, index) in preferredShortcutKeys" :key="index">
<button class="btn btn-sm bg-primary" @click="sendCustomKeys(keys.value)"> <button class="btn btn-sm bg-primary" @click="sendCustomKeys(keys.value)">
{{ keys.label }} {{ keys.label }}
</button> </button>

View File

@ -26,7 +26,7 @@ export default {
<div> <div>
<TextAreaAutoGrow <TextAreaAutoGrow
v-model="value.value" v-model:value="value.value"
:min-height="254" :min-height="254"
/> />
</div> </div>

View File

@ -51,16 +51,16 @@ export default {
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<RadioGroup <RadioGroup
v-model="parseDefaultValue.enable" v-model:value="parseDefaultValue.enable"
class="mb-20" class="mb-20"
name="model" name="model"
:options="[true,false]" :options="[true,false]"
:labels="[t('generic.enabled'), t('generic.disabled')]" :labels="[t('generic.enabled'), t('generic.disabled')]"
@input="update" @update:value="update"
/> />
<UnitInput <UnitInput
v-if="parseDefaultValue.enable" v-if="parseDefaultValue.enable"
v-model="parseDefaultValue.expiringInHours" v-model:value="parseDefaultValue.expiringInHours"
v-int-number v-int-number
class="mb-20" class="mb-20"
:min="1" :min="1"
@ -69,14 +69,14 @@ export default {
:suffix="parseDefaultValue.expiringInHours === 1 ? 'Hour' : 'Hours'" :suffix="parseDefaultValue.expiringInHours === 1 ? 'Hour' : 'Hours'"
:label="t('harvester.setting.autoRotateRKE2Certs.expiringInHours')" :label="t('harvester.setting.autoRotateRKE2Certs.expiringInHours')"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -121,16 +121,16 @@ export default {
</script> </script>
<template> <template>
<div class="row" @input="update"> <div class="row" @update:value="update">
<div class="col span-12"> <div class="col span-12">
<LabeledSelect v-model="parseDefaultValue.type" class="mb-20" :label="t('harvester.fields.type')" :options="typeOption" @input="update" /> <LabeledSelect v-model:value="parseDefaultValue.type" class="mb-20" :label="t('harvester.fields.type')" :options="typeOption" @update:value="update" />
<LabeledInput v-model="parseDefaultValue.endpoint" class="mb-5" :placeholder="endpointPlaceholder" :mode="mode" label="Endpoint" /> <LabeledInput v-model:value="parseDefaultValue.endpoint" class="mb-5" :placeholder="endpointPlaceholder" :mode="mode" label="Endpoint" />
<Tip class="mb-20" icon="icon icon-info" :text="t('harvester.backup.backupTargetTip')" /> <Tip class="mb-20" icon="icon icon-info" :text="t('harvester.backup.backupTargetTip')" />
<template v-if="isS3"> <template v-if="isS3">
<LabeledInput <LabeledInput
v-model="parseDefaultValue.bucketName" v-model:value="parseDefaultValue.bucketName"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
label="Bucket Name" label="Bucket Name"
@ -138,7 +138,7 @@ export default {
/> />
<LabeledInput <LabeledInput
v-model="parseDefaultValue.bucketRegion" v-model:value="parseDefaultValue.bucketRegion"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
label="Bucket Region" label="Bucket Region"
@ -146,7 +146,7 @@ export default {
/> />
<LabeledInput <LabeledInput
v-model="parseDefaultValue.accessKeyId" v-model:value="parseDefaultValue.accessKeyId"
:placeholder="t('harvester.setting.placeholder.accessKeyId')" :placeholder="t('harvester.setting.placeholder.accessKeyId')"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
@ -155,7 +155,7 @@ export default {
/> />
<Password <Password
v-model="parseDefaultValue.secretAccessKey" v-model:value="parseDefaultValue.secretAccessKey"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
:placeholder="t('harvester.setting.placeholder.secretAccessKey')" :placeholder="t('harvester.setting.placeholder.secretAccessKey')"
@ -163,7 +163,7 @@ export default {
required required
/> />
<LabeledSelect v-model="parseDefaultValue.virtualHostedStyle" class="mb-20" label="Virtual Hosted-Style" :options="virtualHostedStyleType" @input="update" /> <LabeledSelect v-model:value="parseDefaultValue.virtualHostedStyle" class="mb-20" label="Virtual Hosted-Style" :options="virtualHostedStyleType" @update:value="update" />
<div class="mb-20"> <div class="mb-20">
<Tip icon="icon icon-info"> <Tip icon="icon icon-info">

View File

@ -233,20 +233,19 @@ export default {
<div class="row mb-20"> <div class="row mb-20">
<div class="col span-12"> <div class="col span-12">
<LabeledInput <LabeledInput
v-model="mirror.key" v-model:value="mirror.key"
:mode="mode" :mode="mode"
required required
label-key="harvester.setting.containerdRegistry.mirrors.registryName" label-key="harvester.setting.containerdRegistry.mirrors.registryName"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
<div class="mb-20"> <div class="mb-20">
<LabeledSelect <LabeledSelect
:key="mirror.idx" v-model:value="mirror.value.Endpoints"
v-model="mirror.value.Endpoints"
:mode="mode" :mode="mode"
required required
label-key="harvester.setting.containerdRegistry.mirrors.endpoints" label-key="harvester.setting.containerdRegistry.mirrors.endpoints"
@ -255,20 +254,20 @@ export default {
:searchable="true" :searchable="true"
:options="[]" :options="[]"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="row mb-20"> <div class="row mb-20">
<KeyValue <KeyValue
v-model="mirror.value.Rewrites" v-model:value="mirror.value.Rewrites"
:add-label="t('harvester.setting.containerdRegistry.mirrors.rewrite.addRewrite')" :add-label="t('harvester.setting.containerdRegistry.mirrors.rewrite.addRewrite')"
:mode="mode" :mode="mode"
:title="t('harvester.setting.containerdRegistry.mirrors.rewrite.rewrite')" :title="t('harvester.setting.containerdRegistry.mirrors.rewrite.rewrite')"
:read-allowed="false" :read-allowed="false"
:value-can-be-empty="true" :value-can-be-empty="true"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
</infobox> </infobox>
@ -291,11 +290,11 @@ export default {
<div class="col span-12"> <div class="col span-12">
<div class="col span-12"> <div class="col span-12">
<LabeledInput <LabeledInput
v-model="config.key" v-model:value="config.key"
:mode="mode" :mode="mode"
:placeholder="t('harvester.setting.containerdRegistry.configs.registryPlaceholder')" :placeholder="t('harvester.setting.containerdRegistry.configs.registryPlaceholder')"
label-key="harvester.setting.containerdRegistry.configs.registryEDQNorIP" label-key="harvester.setting.containerdRegistry.configs.registryEDQNorIP"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
@ -304,19 +303,19 @@ export default {
<div class="row mb-20"> <div class="row mb-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="config.value.Auth.Username" v-model:value="config.value.Auth.Username"
:mode="mode" :mode="mode"
label-key="harvester.setting.containerdRegistry.configs.username" label-key="harvester.setting.containerdRegistry.configs.username"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="config.value.Auth.Password" v-model:value="config.value.Auth.Password"
:mode="mode" :mode="mode"
label-key="harvester.setting.containerdRegistry.configs.password" label-key="harvester.setting.containerdRegistry.configs.password"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
@ -324,34 +323,34 @@ export default {
<div class="row mb-20"> <div class="row mb-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="config.value.Auth.Auth" v-model:value="config.value.Auth.Auth"
:mode="mode" :mode="mode"
type="multiline" type="multiline"
:min-height="150" :min-height="150"
label-key="harvester.setting.containerdRegistry.configs.auth" label-key="harvester.setting.containerdRegistry.configs.auth"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="config.value.Auth.IdentityToken" v-model:value="config.value.Auth.IdentityToken"
:mode="mode" :mode="mode"
type="multiline" type="multiline"
:min-height="150" :min-height="150"
label-key="harvester.setting.containerdRegistry.configs.identityToken" label-key="harvester.setting.containerdRegistry.configs.identityToken"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<LabeledSelect <LabeledSelect
v-model="config.value.TLS.InsecureSkipVerify" v-model:value="config.value.TLS.InsecureSkipVerify"
:mode="mode" :mode="mode"
label-key="harvester.setting.containerdRegistry.configs.insecureSkipVerify" label-key="harvester.setting.containerdRegistry.configs.insecureSkipVerify"
:options="insecureSkipVerifyOption" :options="insecureSkipVerifyOption"
@input="update" @update:value="update"
/> />
</div> </div>
</infobox> </infobox>

View File

@ -181,7 +181,7 @@ export default {
<template> <template>
<div> <div>
<InfoBox v-for="(driver, idx) in configArr" :key="driver.key" class="box"> <InfoBox v-for="(driver, idx) in configArr" :key="idx">
<button :disabled="disableEdit(driver.key)" type="button" class="role-link btn btn-sm remove" @click="remove(idx)"> <button :disabled="disableEdit(driver.key)" type="button" class="role-link btn btn-sm remove" @click="remove(idx)">
<i class="icon icon-x" /> <i class="icon icon-x" />
</button> </button>
@ -189,7 +189,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-4"> <div class="col span-4">
<LabeledSelect <LabeledSelect
v-model="driver.key" v-model:value="driver.key"
:mode="mode" :mode="mode"
required required
:disabled="disableEdit(driver.key)" :disabled="disableEdit(driver.key)"
@ -197,33 +197,33 @@ export default {
:searchable="true" :searchable="true"
:options="provisioners" :options="provisioners"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-4"> <div class="col span-4">
<LabeledSelect <LabeledSelect
v-model="driver.value.volumeSnapshotClassName" v-model:value="driver.value.volumeSnapshotClassName"
:mode="mode" :mode="mode"
required required
:disabled="disableEdit(driver.key)" :disabled="disableEdit(driver.key)"
:options="getVolumeSnapshotOptions(driver.key)" :options="getVolumeSnapshotOptions(driver.key)"
:label="t('harvester.setting.csiDriverConfig.volumeSnapshotClassName')" :label="t('harvester.setting.csiDriverConfig.volumeSnapshotClassName')"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-4"> <div class="col span-4">
<LabeledSelect <LabeledSelect
v-model="driver.value.backupVolumeSnapshotClassName" v-model:value="driver.value.backupVolumeSnapshotClassName"
:mode="mode" :mode="mode"
required required
:disabled="disableEdit(driver.key)" :disabled="disableEdit(driver.key)"
:options="getVolumeSnapshotOptions(driver.key)" :options="getVolumeSnapshotOptions(driver.key)"
:label="t('harvester.setting.csiDriverConfig.backupVolumeSnapshotClassName')" :label="t('harvester.setting.csiDriverConfig.backupVolumeSnapshotClassName')"
@keydown.native.enter.prevent="()=>{}" @keydown.native.enter.prevent="()=>{}"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>

View File

@ -32,7 +32,7 @@ export default {
> >
<div class="col span-12"> <div class="col span-12">
<UnitInput <UnitInput
v-model="terminationGracePeriodSeconds" v-model:value="terminationGracePeriodSeconds"
:suffix="terminationGracePeriodSeconds === 1 ? 'Second' : 'Seconds'" :suffix="terminationGracePeriodSeconds === 1 ? 'Second' : 'Seconds'"
:label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')" :label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')"
:mode="mode" :mode="mode"

View File

@ -57,25 +57,25 @@ export default {
<t k="harvester.setting.httpProxy.warning" :raw="true" /> <t k="harvester.setting.httpProxy.warning" :raw="true" />
</Banner> </Banner>
<div class="row" @input="update"> <div class="row" @update:value="update">
<div class="col span-12"> <div class="col span-12">
<template> <template>
<LabeledInput <LabeledInput
v-model="parseDefaultValue.httpProxy" v-model:value="parseDefaultValue.httpProxy"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
label="http-proxy" label="http-proxy"
/> />
<LabeledInput <LabeledInput
v-model="parseDefaultValue.httpsProxy" v-model:value="parseDefaultValue.httpsProxy"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
label="https-proxy" label="https-proxy"
/> />
<LabeledInput <LabeledInput
v-model="parseDefaultValue.noProxy" v-model:value="parseDefaultValue.noProxy"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
label="no-proxy" label="no-proxy"

View File

@ -60,12 +60,12 @@ export default {
<div class="col span-12"> <div class="col span-12">
<template> <template>
<ArrayList <ArrayList
v-model="parseDefaultValue.ntpServers" v-model:value="parseDefaultValue.ntpServers"
:title="t('harvester.host.ntp.label')" :title="t('harvester.host.ntp.label')"
:protip="t('harvester.host.ntp.tips')" :protip="t('harvester.host.ntp.tips')"
:value-placeholder="t('harvester.host.ntp.placeholder')" :value-placeholder="t('harvester.host.ntp.placeholder')"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</template> </template>
</div> </div>

View File

@ -54,7 +54,7 @@ export default {
<div class="col span-12"> <div class="col span-12">
<template> <template>
<UnitInput <UnitInput
v-model="parseDefaultValue.cpu" v-model:value="parseDefaultValue.cpu"
v-int-number v-int-number
label-key="harvester.generic.cpu" label-key="harvester.generic.cpu"
suffix="%" suffix="%"
@ -62,11 +62,11 @@ export default {
required required
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
<UnitInput <UnitInput
v-model="parseDefaultValue.memory" v-model:value="parseDefaultValue.memory"
v-int-number v-int-number
label-key="harvester.generic.memory" label-key="harvester.generic.memory"
suffix="%" suffix="%"
@ -74,11 +74,11 @@ export default {
required required
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
<UnitInput <UnitInput
v-model="parseDefaultValue.storage" v-model:value="parseDefaultValue.storage"
v-int-number v-int-number
label-key="harvester.generic.storage" label-key="harvester.generic.storage"
suffix="%" suffix="%"
@ -86,7 +86,7 @@ export default {
required required
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
</template> </template>
</div> </div>

View File

@ -138,22 +138,22 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-12"> <div class="col span-12">
<LabeledSelect <LabeledSelect
v-model="parsedDefaultValue.protocols" v-model:value="parsedDefaultValue.protocols"
:mode="mode" :mode="mode"
label-key="harvester.sslParameters.protocols.label" label-key="harvester.sslParameters.protocols.label"
:multiple="true" :multiple="true"
:options="protocolOptions" :options="protocolOptions"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-12"> <div class="col span-12">
<LabeledInput <LabeledInput
v-model="parsedDefaultValue.ciphers" v-model:value="parsedDefaultValue.ciphers"
:mode="mode" :mode="mode"
label-key="harvester.sslParameters.ciphers.label" label-key="harvester.sslParameters.ciphers.label"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>

View File

@ -165,19 +165,19 @@ export default {
<template> <template>
<div <div
:class="mode" :class="mode"
@input="update" @update:value="update"
> >
<Banner color="warning"> <Banner color="warning">
<t k="harvester.setting.storageNetwork.warning" :raw="true" /> <t k="harvester.setting.storageNetwork.warning" :raw="true" />
</Banner> </Banner>
<RadioGroup <RadioGroup
v-model="openVlan" v-model:value="openVlan"
class="mb-20" class="mb-20"
name="model" name="model"
:options="[true,false]" :options="[true,false]"
:labels="[t('generic.enabled'), t('generic.disabled')]" :labels="[t('generic.enabled'), t('generic.disabled')]"
@input="update" @update:value="update"
/> />
<div v-if="openVlan"> <div v-if="openVlan">
@ -190,16 +190,16 @@ export default {
/> />
<LabeledSelect <LabeledSelect
v-model="parsedDefaultValue.clusterNetwork" v-model:value="parsedDefaultValue.clusterNetwork"
label-key="harvester.setting.storageNetwork.clusterNetwork" label-key="harvester.setting.storageNetwork.clusterNetwork"
class="mb-20" class="mb-20"
required required
:options="clusterNetworkOptions" :options="clusterNetworkOptions"
@input="update" @update:value="update"
/> />
<LabeledInput <LabeledInput
v-model="parsedDefaultValue.range" v-model:value="parsedDefaultValue.range"
class="mb-5" class="mb-5"
:mode="mode" :mode="mode"
required required
@ -211,12 +211,12 @@ export default {
</Tip> </Tip>
<ArrayList <ArrayList
v-model="exclude" v-model:value="exclude"
:show-header="true" :show-header="true"
:default-add-value="defaultAddValue" :default-add-value="defaultAddValue"
:mode="mode" :mode="mode"
:add-label="t('harvester.setting.storageNetwork.exclude.addIp')" :add-label="t('harvester.setting.storageNetwork.exclude.addIp')"
@input="update" @update:value="update"
> >
<template v-slot:column-headers> <template v-slot:column-headers>
<div class="box"> <div class="box">
@ -228,9 +228,9 @@ export default {
<template v-slot:columns="scope"> <template v-slot:columns="scope">
<div class="key"> <div class="key">
<input <input
v-model="scope.row.value" v-model:value="scope.row.value"
:placeholder="t('harvester.setting.storageNetwork.exclude.placeholder')" :placeholder="t('harvester.setting.storageNetwork.exclude.placeholder')"
@input="update" @update:value="update"
/> />
</div> </div>
</template> </template>

View File

@ -105,7 +105,7 @@ export default {
<div class="col span-12"> <div class="col span-12">
<template> <template>
<LabeledInput <LabeledInput
v-model="parseDefaultValue.repository" v-model:value="parseDefaultValue.repository"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
required required
@ -113,7 +113,7 @@ export default {
/> />
<LabeledInput <LabeledInput
v-model="parseDefaultValue.tag" v-model:value="parseDefaultValue.tag"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
required required
@ -121,7 +121,7 @@ export default {
/> />
<LabeledSelect <LabeledSelect
v-model="parseDefaultValue.imagePullPolicy" v-model:value="parseDefaultValue.imagePullPolicy"
class="mb-20" class="mb-20"
required required
label-key="harvester.setting.supportBundleImage.imagePullPolicy" label-key="harvester.setting.supportBundleImage.imagePullPolicy"

View File

@ -61,12 +61,12 @@ export default {
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<LabeledSelect <LabeledSelect
v-model="namespaces" v-model:value="namespaces"
:multiple="true" :multiple="true"
label-key="nameNsDescription.namespace.label" label-key="nameNsDescription.namespace.label"
:mode="mode" :mode="mode"
:options="namespaceOptions" :options="namespaceOptions"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>

View File

@ -51,7 +51,7 @@ export default {
<div class="row" @input="update"> <div class="row" @input="update">
<div class="col span-12"> <div class="col span-12">
<RadioGroup <RadioGroup
v-model="parseDefaultValue.enable" v-model:value="parseDefaultValue.enable"
class="mb-20" class="mb-20"
name="model" name="model"
:options="[true,false]" :options="[true,false]"
@ -72,7 +72,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -92,7 +92,7 @@ export default {
</script> </script>
<template> <template>
<div class="disk" @input="update"> <div class="disk" @update:value="update">
<Banner <Banner
v-if="mountedMessage" v-if="mountedMessage"
color="error" color="error"
@ -107,7 +107,7 @@ export default {
> >
<template #value> <template #value>
<div class="mt-5"> <div class="mt-5">
<Tag v-for="(prop, key) in value.tags" :key="key + prop" class="mr-5"> <Tag v-for="(prop, key) in value.tags" :key="key">
{{ prop }} {{ prop }}
</Tag> </Tag>
</div> </div>

View File

@ -57,9 +57,7 @@ export default {
<div> <div>
<div v-if="inventory.warningMessages.length > 0"> <div v-if="inventory.warningMessages.length > 0">
<Banner <Banner
v-for="msg in inventory.warningMessages" v-for="(msg, i) in inventory.warningMessages" :key="i" color="error"
:key="msg.text"
color="error"
:label="msg.text" :label="msg.text"
/> />
</div> </div>
@ -117,7 +115,7 @@ export default {
> >
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="enableInventory" v-model:value="enableInventory"
:options="[ :options="[
{ label: t('generic.enabled'), value: true }, { label: t('generic.enabled'), value: true },
{ label: t('generic.disabled'), value: false } { label: t('generic.disabled'), value: false }

View File

@ -102,9 +102,9 @@ export default {
default-sort-by="age" default-sort-by="age"
:rows="rows" :rows="rows"
key-field="_key" key-field="_key"
v-on="$listeners"
> >
<template slot="cell:state" slot-scope="scope"> <template cell:state="scope">
<div class="state"> <div class="state">
<HarvesterVmState class="vmstate" :row="scope.row" :all-cluster-network="allClusterNetwork" /> <HarvesterVmState class="vmstate" :row="scope.row" :all-cluster-network="allClusterNetwork" />
</div> </div>
@ -116,11 +116,11 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
#host-instances { #host-instances {
::v-deep thead th { :deep() thead th {
vertical-align: middle; vertical-align: middle;
} }
::v-deep .state { :deep() .state {
display: flex; display: flex;
.vmstate { .vmstate {

View File

@ -87,7 +87,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-12"> <div class="col span-12">
<ArrayListGrouped <ArrayListGrouped
v-model="linkStatus" v-model:value="linkStatus"
:mode="mode" :mode="mode"
:can-remove="false" :can-remove="false"
> >

View File

@ -378,7 +378,7 @@ export default {
> >
<Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="4" class="bordered-table"> <Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="4" class="bordered-table">
<Basic <Basic
v-model="value" v-model:value="value"
:metrics="metrics" :metrics="metrics"
:mode="mode" :mode="mode"
/> />
@ -394,9 +394,7 @@ export default {
class="bordered-table" class="bordered-table"
> >
<InfoBox <InfoBox
v-for="vlan in vlanStatuses" v-for="(vlan, i) in vlanStatuses" :key="i" >
:key="vlan.id"
>
<VlanStatus <VlanStatus
:value="vlan" :value="vlan"
:mode="mode" :mode="mode"
@ -420,7 +418,7 @@ export default {
> >
<template #value> <template #value>
<div class="mt-5"> <div class="mt-5">
<Tag v-for="(prop, key) in longhornNode.spec.tags" :key="key + prop" class="mr-5"> <Tag v-for="(prop, key) in longhornNode.spec.tags" :key="key">
{{ prop }} {{ prop }}
</Tag> </Tag>
</div> </div>
@ -429,14 +427,14 @@ export default {
</div> </div>
</div> </div>
<ArrayListGrouped <ArrayListGrouped
v-model="newDisks" v-model:value="newDisks"
:mode="mode" :mode="mode"
:can-remove="false" :can-remove="false"
:initial-empty-row="false" :initial-empty-row="false"
> >
<template #default="props"> <template #default="props">
<Disk <Disk
v-model="props.row.value" v-model:value="props.row.value"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
:disks="disks" :disks="disks"

View File

@ -158,7 +158,7 @@ export default {
<template> <template>
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
:need-events="false" :need-events="false"
:need-related="false" :need-related="false"
:mode="mode" :mode="mode"
@ -255,9 +255,7 @@ export default {
<div v-else> <div v-else>
<div <div
v-for="(row,idx) in parsedRows" v-for="(row,idx) in parsedRows" :key="idx"class="entry"
:key="idx"
class="entry"
> >
<DetailText <DetailText
:value="row.value" :value="row.value"

View File

@ -154,7 +154,7 @@ export default {
<template #value> <template #value>
<div> <div>
<ul> <ul>
<li v-for="(disk) in disks" :key="disk.bootOrder"> <li v-for="(disk, i) in disks" :key="i" >
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }}) {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
</li> </li>
</ul> </ul>
@ -167,7 +167,7 @@ export default {
<template #value> <template #value>
<div> <div>
<ul v-if="cdroms.length > 0"> <ul v-if="cdroms.length > 0">
<li v-for="(rom) in cdroms" :key="rom.name"> <li v-for="(rom, i) in cdroms" :key="i" >
{{ rom.name }} {{ rom.name }}
</li> </li>
</ul> </ul>
@ -186,7 +186,7 @@ export default {
:label="t('harvester.tab.volume')" :label="t('harvester.tab.volume')"
:weight="-1" :weight="-1"
> >
<Volume v-model="diskRows" :mode="mode" /> <Volume v-model:value="diskRows" :mode="mode" />
</Tab> </Tab>
<Tab <Tab
@ -194,11 +194,11 @@ export default {
:label="t('harvester.tab.network')" :label="t('harvester.tab.network')"
:weight="-2" :weight="-2"
> >
<Network v-model="networkRows" :mode="mode" /> <Network v-model:value="networkRows" :mode="mode" />
</Tab> </Tab>
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3"> <Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3">
<OverviewKeypairs v-if="vm" v-model="vm" /> <OverviewKeypairs v-if="vm" v-model:value="vm" />
</Tab> </Tab>
<Tab <Tab
@ -214,7 +214,7 @@ export default {
/> />
<div class="spacer"></div> <div class="spacer"></div>
<Checkbox v-model="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" /> <Checkbox v-model:value="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
</Tab> </Tab>
</Tabbed> </Tabbed>
</CruResource> </CruResource>

View File

@ -124,7 +124,7 @@ export default {
class="bordered-table" class="bordered-table"
> >
<Storage <Storage
v-model="value.spec.storageClassParameters" v-model:value="value.spec.storageClassParameters"
/> />
</Tab> </Tab>
</Tabbed> </Tabbed>

View File

@ -154,7 +154,7 @@ export default {
<template #value> <template #value>
<div> <div>
<ul> <ul>
<li v-for="(disk) in disks" :key="disk.bootOrder"> <li v-for="(disk, i) in disks" :key="i" >
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }}) {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
</li> </li>
</ul> </ul>
@ -167,7 +167,7 @@ export default {
<template #value> <template #value>
<div> <div>
<ul v-if="cdroms.length > 0"> <ul v-if="cdroms.length > 0">
<li v-for="(rom) in cdroms" :key="rom.name"> <li v-for="(rom, i) in cdroms" :key="i" >
{{ rom.name }} {{ rom.name }}
</li> </li>
</ul> </ul>
@ -186,7 +186,7 @@ export default {
:label="t('harvester.tab.volume')" :label="t('harvester.tab.volume')"
:weight="-1" :weight="-1"
> >
<Volume v-model="diskRows" :mode="mode" /> <Volume v-model:value="diskRows" :mode="mode" />
</Tab> </Tab>
<Tab <Tab
@ -194,11 +194,11 @@ export default {
:label="t('harvester.tab.network')" :label="t('harvester.tab.network')"
:weight="-2" :weight="-2"
> >
<Network v-model="networkRows" :mode="mode" /> <Network v-model:value="networkRows" :mode="mode" />
</Tab> </Tab>
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3"> <Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="-3">
<OverviewKeypairs v-if="vm" v-model="vm" /> <OverviewKeypairs v-if="vm" v-model:value="vm" />
</Tab> </Tab>
<Tab <Tab
@ -214,7 +214,7 @@ export default {
/> />
<div class="spacer"></div> <div class="spacer"></div>
<Checkbox v-model="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" /> <Checkbox v-model:value="installUSBTablet" :mode="mode" class="check" type="checkbox" :label="t('harvester.virtualMachine.enableUsb')" />
</Tab> </Tab>
</Tabbed> </Tabbed>
</CruResource> </CruResource>

View File

@ -182,7 +182,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<LabelValue :name="t('harvester.virtualMachine.detail.details.ipAddress')"> <LabelValue :name="t('harvester.virtualMachine.detail.details.ipAddress')">
<template #value> <template #value>
<HarvesterIpAddress v-model="value.id" :row="value" /> <HarvesterIpAddress v-model:value="value.id" :row="value" />
</template> </template>
</LabelValue> </LabelValue>
</div> </div>
@ -201,7 +201,7 @@ export default {
<InputOrDisplay :name="t('harvester.virtualMachine.detail.details.bootOrder')" :value="disks" :mode="mode"> <InputOrDisplay :name="t('harvester.virtualMachine.detail.details.bootOrder')" :value="disks" :mode="mode">
<template #value> <template #value>
<ul> <ul>
<li v-for="(disk) in disks" :key="disk.bootOrder"> <li v-for="(disk, i) in disks" :key="i" >
{{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }}) {{ disk.bootOrder }}. {{ disk.name }} ({{ getDeviceType(disk) }})
</li> </li>
</ul> </ul>
@ -213,7 +213,7 @@ export default {
<template #value> <template #value>
<div> <div>
<ul v-if="cdroms.length > 0"> <ul v-if="cdroms.length > 0">
<li v-for="(rom) in cdroms" :key="rom.name"> <li v-for="(rom, i) in cdroms" :key="i" >
{{ rom.name }} {{ rom.name }}
</li> </li>
</ul> </ul>

View File

@ -66,7 +66,7 @@ export default {
<template> <template>
<div class="overview-sshKeys"> <div class="overview-sshKeys">
<div v-for="(ssh, index) in sshKeys" :key="index" class="row overview-sshKeys__item"> <div v-for="(ssh, index) in sshKeys" :key="index">
<div class="col span-4"> <div class="col span-4">
{{ ssh.id }} {{ ssh.id }}
</div> </div>

View File

@ -158,12 +158,12 @@ export default {
<div> <div>
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true" @changed="onTabChanged"> <Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true" @changed="onTabChanged">
<Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table" :weight="7"> <Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table" :weight="7">
<OverviewBasics v-model="value" :vmi="vmi" mode="view" /> <OverviewBasics v-model:value="value" :vmi="vmi" mode="view" />
</Tab> </Tab>
<Tab name="disks" :label="t('harvester.tab.volume')" class="bordered-table" :weight="6"> <Tab name="disks" :label="t('harvester.tab.volume')" class="bordered-table" :weight="6">
<Volume <Volume
v-model="diskRows" v-model:value="diskRows"
mode="view" mode="view"
:namespace="value.metadata.namespace" :namespace="value.metadata.namespace"
:vm="value" :vm="value"
@ -172,11 +172,11 @@ export default {
</Tab> </Tab>
<Tab name="networks" :label="t('harvester.virtualMachine.detail.tabs.networks')" class="bordered-table" :weight="5"> <Tab name="networks" :label="t('harvester.virtualMachine.detail.tabs.networks')" class="bordered-table" :weight="5">
<Network v-model="networkRows" mode="view" /> <Network v-model:value="networkRows" mode="view" />
</Tab> </Tab>
<Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="3"> <Tab name="keypairs" :label="t('harvester.virtualMachine.detail.tabs.keypairs')" class="bordered-table" :weight="3">
<OverviewKeypairs v-model="value" /> <OverviewKeypairs v-model:value="value" />
</Tab> </Tab>
<Tab <Tab
@ -235,7 +235,7 @@ export default {
</Tab> </Tab>
<Tab name="migration" :label="t('harvester.virtualMachine.detail.tabs.migration')"> <Tab name="migration" :label="t('harvester.virtualMachine.detail.tabs.migration')">
<Migration v-model="value" :vmi-resource="vmi" /> <Migration v-model:value="value" :vmi-resource="vmi" />
</Tab> </Tab>
<Tab <Tab
@ -261,7 +261,7 @@ export default {
:mode="mode" :mode="mode"
:read-allowed="false" :read-allowed="false"
:value-can-be-empty="true" :value-can-be-empty="true"
@input="value.setInstanceLabels($event)" @update:value="value.setInstanceLabels($event)"
/> />
</template> </template>
</Labels> </Labels>

View File

@ -71,7 +71,7 @@ export default {
<template> <template>
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
:need-related="false" :need-related="false"
> >
<Tab <Tab

View File

@ -119,7 +119,7 @@ export default {
<template> <template>
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
:need-related="false" :need-related="false"
> >
<Tab <Tab

View File

@ -69,7 +69,7 @@ export default {
<template> <template>
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
:need-related="false" :need-related="false"
> >
<Tab <Tab

View File

@ -91,11 +91,11 @@ export default {
</template> </template>
<template #body> <template #body>
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" /> <Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
<LabeledInput <LabeledInput
v-show="cloneData" v-show="cloneData"
v-model="name" v-model:value="name"
class="mb-20" class="mb-20"
:label="t('harvester.modal.cloneVM.name')" :label="t('harvester.modal.cloneVM.name')"
required required
@ -116,7 +116,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -146,11 +146,11 @@ export default {
<div class="mb-10"> <div class="mb-10">
<CopyToClipboardText :text="nameToMatch" /> <CopyToClipboardText :text="nameToMatch" />
</div> </div>
<input id="confirm" v-model="confirmName" type="text" /> <input id="confirm" v-model:value="confirmName" type="text" />
<div class="text-info mt-20"> <div class="text-info mt-20">
{{ protip }} {{ protip }}
</div> </div>
<Banner v-for="(error, i) in errors" :key="i" class="" color="error" :label="error" /> <Banner v-for="(error, i) in errors" :key="i"/>
</div> </div>
<template #actions> <template #actions>
<button class="btn role-secondary mr-10" @click="close"> <button class="btn role-secondary mr-10" @click="close">

View File

@ -91,11 +91,11 @@ export default {
</template> </template>
<template #body> <template #body>
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" /> <Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
<LabeledInput <LabeledInput
v-show="cloneData" v-show="cloneData"
v-model="name" v-model:value="name"
class="mb-20" class="mb-20"
:label="t('harvester.modal.cloneVM.name')" :label="t('harvester.modal.cloneVM.name')"
required required

View File

@ -69,7 +69,7 @@ export default {
<div class="body"> <div class="body">
<div class="type-field"> <div class="type-field">
<LabeledSelect <LabeledSelect
v-model="type" v-model:value="type"
required required
:options="availableTypes" :options="availableTypes"
:searchable="true" :searchable="true"

View File

@ -114,13 +114,13 @@ export default {
<template #body> <template #body>
<LabeledInput <LabeledInput
v-model="diskName" v-model:value="diskName"
:label="t('generic.name')" :label="t('generic.name')"
required required
/> />
<LabeledSelect <LabeledSelect
v-model="volumeName" v-model:value="volumeName"
:label="t('harvester.fields.volume')" :label="t('harvester.fields.volume')"
:options="volumeOption" :options="volumeOption"
class="mt-20" class="mt-20"
@ -141,7 +141,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -95,7 +95,7 @@ export default {
/> />
<template #body> <template #body>
<LabeledInput v-model="backUpName" :label="t('generic.name')" required /> <LabeledInput v-model:value="backUpName" :label="t('generic.name')" required />
</template> </template>
<div slot="actions" class="actions"> <div slot="actions" class="actions">

View File

@ -101,17 +101,17 @@ export default {
</template> </template>
<template #body> <template #body>
<Checkbox v-model="withData" class="mb-10" label="With Data" /> <Checkbox v-model:value="withData" class="mb-10" label="With Data" />
<LabeledInput <LabeledInput
v-model="templateName" v-model:value="templateName"
class="mb-20" class="mb-20"
:label="t('harvester.modal.createTemplate.name')" :label="t('harvester.modal.createTemplate.name')"
required required
/> />
<LabeledInput <LabeledInput
v-model="description" v-model:value="description"
:label="t('harvester.modal.createTemplate.description')" :label="t('harvester.modal.createTemplate.description')"
/> />
</template> </template>
@ -129,7 +129,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -116,9 +116,7 @@ export default {
<div> <div>
<Checkbox <Checkbox
v-for="disk in allDisk" v-for="(disk, i) in allDisk" :key="i" v-model:value="disk.value"
:key="disk.name"
v-model="disk.value"
:label="disk.name" :label="disk.name"
/> />
</div> </div>

View File

@ -142,7 +142,7 @@ export default {
<template #body> <template #body>
<LabeledSelect <LabeledSelect
v-model="namespace" v-model:value="namespace"
:label="t('harvester.modal.exportImage.namespace')" :label="t('harvester.modal.exportImage.namespace')"
:options="namespaces" :options="namespaces"
class="mb-20" class="mb-20"
@ -150,13 +150,13 @@ export default {
/> />
<LabeledInput <LabeledInput
v-model="name" v-model:value="name"
:label="t('harvester.modal.exportImage.name')" :label="t('harvester.modal.exportImage.name')"
required required
/> />
<LabeledSelect <LabeledSelect
v-model="storageClassName" v-model:value="storageClassName"
:options="storageClassOptions" :options="storageClassOptions"
:label="t('harvester.storage.storageClass.label')" :label="t('harvester.storage.storageClass.label')"
class="mt-20" class="mt-20"
@ -177,7 +177,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -93,7 +93,7 @@ export default {
<template #body> <template #body>
<div> <div>
<Checkbox <Checkbox
v-model="force" v-model:value="force"
label-key="harvester.host.enableMaintenance.force" label-key="harvester.host.enableMaintenance.force"
/> />
</div> </div>
@ -109,9 +109,7 @@ export default {
<div class="vm-list mb-5"> <div class="vm-list mb-5">
<BadgeState <BadgeState
v-for="vm in unhealthyVM.vms" v-for="(vm, i) in unhealthyVM.vms" :key="i" color="bg-error mb-5 mr-5"
:key="vm"
color="bg-error mb-5 mr-5"
:label="vm" :label="vm"
/> />
</div> </div>

View File

@ -141,7 +141,7 @@ export default {
<template #body> <template #body>
<LabeledSelect <LabeledSelect
v-model="nodeName" v-model:value="nodeName"
:label="t('harvester.modal.migration.fields.nodeName.label')" :label="t('harvester.modal.migration.fields.nodeName.label')"
:placeholder="t('harvester.modal.migration.fields.nodeName.placeholder')" :placeholder="t('harvester.modal.migration.fields.nodeName.placeholder')"
:options="nodeNameList" :options="nodeNameList"
@ -161,7 +161,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -128,7 +128,7 @@ export default {
<template #body> <template #body>
<LabeledSelect <LabeledSelect
v-model="backupName" v-model:value="backupName"
:label="t('harvester.modal.restore.selectBackup')" :label="t('harvester.modal.restore.selectBackup')"
:localized-label="true" :localized-label="true"
:options="backupOption" :options="backupOption"

View File

@ -124,13 +124,13 @@ export default {
class="content" class="content"
> >
<LabeledInput <LabeledInput
v-model="url" v-model:value="url"
:label="t('harvester.modal.bundle.url')" :label="t('harvester.modal.bundle.url')"
class="mb-20" class="mb-20"
/> />
<LabeledInput <LabeledInput
v-model="description" v-model:value="description"
:label="t('harvester.modal.bundle.description')" :label="t('harvester.modal.bundle.description')"
type="multiline" type="multiline"
:min-height="120" :min-height="120"
@ -154,9 +154,7 @@ export default {
</div> </div>
<div <div
v-for="(err, idx) in errors" v-for="(err, idx) in errors" :key="idx">
:key="idx"
>
<Banner <Banner
color="error" color="error"
:label="stringify(err)" :label="stringify(err)"

View File

@ -118,8 +118,8 @@ export default {
/> />
<template #body> <template #body>
<LabeledInput v-model="actionResource.metadata.namespace" :disabled="true" :label="t('generic.namespace')" /> <LabeledInput v-model:value="actionResource.metadata.namespace" :disabled="true" :label="t('generic.namespace')" />
<LabeledInput v-model="snapshotName" class="mt-20" :label="t('generic.name')" required /> <LabeledInput v-model:value="snapshotName" class="mt-20" :label="t('generic.name')" required />
</template> </template>
<div slot="actions" class="actions"> <div slot="actions" class="actions">
@ -131,7 +131,7 @@ export default {
<AsyncButton mode="create" :disabled="!snapshotName" @click="save" /> <AsyncButton mode="create" :disabled="!snapshotName" @click="save" />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -100,7 +100,7 @@ export default {
<template #body> <template #body>
<LabeledSelect <LabeledSelect
v-model="clusterNetwork" v-model:value="clusterNetwork"
:label="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.label')" :label="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.label')"
:placeholder="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.placeholder')" :placeholder="t('harvester.harvesterVlanConfigMigrateDialog.targetClusterNetwork.placeholder')"
:options="clusterNetworks" :options="clusterNetworks"
@ -120,7 +120,7 @@ export default {
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -75,9 +75,7 @@ export default {
class="bottom" class="bottom"
> >
<Banner <Banner
v-for="(err, i) in errors" v-for="(err, i) in errors" :key="i"color="error"
:key="i"
color="error"
:label="err" :label="err"
/> />
<div class="buttons"> <div class="buttons">

View File

@ -129,13 +129,13 @@ export default {
</template> </template>
<template #body> <template #body>
<LabeledInput <LabeledInput
v-model="name" v-model:value="name"
:label="t('harvester.modal.restoreSnapshot.name')" :label="t('harvester.modal.restoreSnapshot.name')"
required required
/> />
<LabeledSelect <LabeledSelect
v-if="showStorageClass" v-if="showStorageClass"
v-model="storageClassName" v-model:value="storageClassName"
:options="storageClassOptions" :options="storageClassOptions"
:label="t('harvester.storage.storageClass.label')" :label="t('harvester.storage.storageClass.label')"
class="mt-20" class="mt-20"
@ -153,7 +153,7 @@ export default {
@click="save" @click="save"
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -71,7 +71,7 @@ export default {
</template> </template>
<template #body> <template #body>
<LabeledInput <LabeledInput
v-model="name" v-model:value="name"
:label="t('harvester.modal.snapshot.name')" :label="t('harvester.modal.snapshot.name')"
required required
/> />

View File

@ -81,11 +81,11 @@ export default {
{{ t('harvester.modal.volumeClone.title') }} {{ t('harvester.modal.volumeClone.title') }}
</template> </template>
<template #body> <template #body>
<Checkbox v-model="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" /> <Checkbox v-model:value="cloneData" class="mb-10" label-key="harvester.modal.cloneVM.type" />
<LabeledInput <LabeledInput
v-show="cloneData" v-show="cloneData"
v-model="name" v-model:value="name"
class="mb-20" class="mb-20"
:label="t('harvester.modal.volumeClone.name')" :label="t('harvester.modal.volumeClone.name')"
required required
@ -102,7 +102,7 @@ export default {
@click="save" @click="save"
/> />
</div> </div>
<Banner v-for="(err, i) in errors" :key="i" color="error" :label="err" /> <Banner v-for="(err, i) in errors" :key="i"/>
</div> </div>
</Card> </Card>
</template> </template>

View File

@ -37,7 +37,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -49,7 +49,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -37,7 +37,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -49,7 +49,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -110,13 +110,13 @@ export default {
:mode="mode" :mode="mode"
:options="[true,false]" :options="[true,false]"
:labels="[t('generic.enabled'), t('generic.disabled')]" :labels="[t('generic.enabled'), t('generic.disabled')]"
@input="toggleEnable" @update:value="toggleEnable"
/> />
<div v-if="value.spec.enabled"> <div v-if="value.spec.enabled">
<div v-if="valuesContentJson.image" class="row mb-15"> <div v-if="valuesContentJson.image" class="row mb-15">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.image.repo" v-model:value="valuesContentJson.image.repo"
:mode="mode" :mode="mode"
:required="true" :required="true"
label-key="harvester.addons.nvidiaDriverToolkit.image.repository" label-key="harvester.addons.nvidiaDriverToolkit.image.repository"
@ -124,7 +124,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.image.tag" v-model:value="valuesContentJson.image.tag"
:mode="mode" :mode="mode"
:required="true" :required="true"
class="col span-6" class="col span-6"
@ -134,7 +134,7 @@ export default {
</div> </div>
<div class="row mb-15"> <div class="row mb-15">
<LabeledInput <LabeledInput
v-model="valuesContentJson.driverLocation" v-model:value="valuesContentJson.driverLocation"
:mode="mode" :mode="mode"
:required="true" :required="true"
label-key="harvester.addons.nvidiaDriverToolkit.driver.location" label-key="harvester.addons.nvidiaDriverToolkit.driver.location"
@ -147,7 +147,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -37,7 +37,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -49,7 +49,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -94,7 +94,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -106,7 +106,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentbit.resources.requests.cpu" v-model:value="valuesContentJson.fluentbit.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -114,7 +114,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentbit.resources.requests.memory" v-model:value="valuesContentJson.fluentbit.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -124,7 +124,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentbit.resources.limits.cpu" v-model:value="valuesContentJson.fluentbit.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -132,7 +132,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentbit.resources.limits.memory" v-model:value="valuesContentJson.fluentbit.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -144,7 +144,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentd.resources.requests.cpu" v-model:value="valuesContentJson.fluentd.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -152,7 +152,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentd.resources.requests.memory" v-model:value="valuesContentJson.fluentd.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -162,7 +162,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentd.resources.limits.cpu" v-model:value="valuesContentJson.fluentd.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -170,7 +170,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.fluentd.resources.limits.memory" v-model:value="valuesContentJson.fluentd.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -182,7 +182,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -208,7 +208,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -244,7 +244,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.scrapeInterval" v-model:value="valuesContentJson.prometheus.prometheusSpec.scrapeInterval"
:label="t('monitoring.prometheus.config.scrape')" :label="t('monitoring.prometheus.config.scrape')"
:tooltip="t('harvester.setting.harvesterMonitoring.tips.scrape')" :tooltip="t('harvester.setting.harvesterMonitoring.tips.scrape')"
:required="true" :required="true"
@ -253,7 +253,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.evaluationInterval" v-model:value="valuesContentJson.prometheus.prometheusSpec.evaluationInterval"
:label="t('monitoring.prometheus.config.evaluation')" :label="t('monitoring.prometheus.config.evaluation')"
:tooltip="t('harvester.setting.harvesterMonitoring.tips.evaluation')" :tooltip="t('harvester.setting.harvesterMonitoring.tips.evaluation')"
:required="true" :required="true"
@ -264,7 +264,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.retention" v-model:value="valuesContentJson.prometheus.prometheusSpec.retention"
:label="t('monitoring.prometheus.config.retention')" :label="t('monitoring.prometheus.config.retention')"
:tooltip="t('harvester.setting.harvesterMonitoring.tips.retention')" :tooltip="t('harvester.setting.harvesterMonitoring.tips.retention')"
:required="true" :required="true"
@ -273,7 +273,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.retentionSize" v-model:value="valuesContentJson.prometheus.prometheusSpec.retentionSize"
:label="t('monitoring.prometheus.config.retentionSize')" :label="t('monitoring.prometheus.config.retentionSize')"
:tooltip="t('harvester.setting.harvesterMonitoring.tips.retentionSize')" :tooltip="t('harvester.setting.harvesterMonitoring.tips.retentionSize')"
:required="true" :required="true"
@ -291,7 +291,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.resources.requests.cpu" v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -299,7 +299,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.resources.requests.memory" v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -309,7 +309,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.resources.limits.cpu" v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -317,7 +317,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.prometheus.prometheusSpec.resources.limits.memory" v-model:value="valuesContentJson.prometheus.prometheusSpec.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -329,7 +329,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="prometheusNodeExporter.resources.limits.cpu" v-model:value="prometheusNodeExporter.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -337,7 +337,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="prometheusNodeExporter.resources.limits.memory" v-model:value="prometheusNodeExporter.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -347,7 +347,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="prometheusNodeExporter.resources.requests.cpu" v-model:value="prometheusNodeExporter.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -355,7 +355,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="prometheusNodeExporter.resources.requests.memory" v-model:value="prometheusNodeExporter.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -391,7 +391,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.grafana.resources.requests.cpu" v-model:value="valuesContentJson.grafana.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -399,7 +399,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.grafana.resources.requests.memory" v-model:value="valuesContentJson.grafana.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -409,7 +409,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.grafana.resources.limits.cpu" v-model:value="valuesContentJson.grafana.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -417,7 +417,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.grafana.resources.limits.memory" v-model:value="valuesContentJson.grafana.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -427,7 +427,7 @@ export default {
</Tab> </Tab>
<Tab v-if="value.spec.enabled" name="alertmanager" :label="t('harvester.setting.harvesterMonitoring.section.alertmanager')" :weight="-4"> <Tab v-if="value.spec.enabled" name="alertmanager" :label="t('harvester.setting.harvesterMonitoring.section.alertmanager')" :weight="-4">
<RadioGroup <RadioGroup
v-model="valuesContentJson.alertmanager.enabled" v-model:value="valuesContentJson.alertmanager.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -465,7 +465,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.alertmanager.alertmanagerSpec.retention" v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.retention"
:label="t('monitoring.prometheus.config.retention')" :label="t('monitoring.prometheus.config.retention')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -475,7 +475,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.cpu" v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -483,7 +483,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.memory" v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -493,7 +493,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.cpu" v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -501,7 +501,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.memory" v-model:value="valuesContentJson.alertmanager.alertmanagerSpec.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -514,7 +514,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -94,7 +94,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -108,7 +108,7 @@ export default {
<div class="row mb-20"> <div class="row mb-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.hostname" v-model:value="valuesContentJson.hostname"
label-key="harvester.addons.rancherVcluster.hostname" label-key="harvester.addons.rancherVcluster.hostname"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -118,7 +118,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.rancherVersion" v-model:value="valuesContentJson.rancherVersion"
label-key="harvester.addons.rancherVcluster.rancherVersion" label-key="harvester.addons.rancherVcluster.rancherVersion"
:required="true" :required="true"
:disabled="true" :disabled="true"
@ -129,7 +129,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContentJson.bootstrapPassword" v-model:value="valuesContentJson.bootstrapPassword"
label-key="harvester.addons.rancherVcluster.password" label-key="harvester.addons.rancherVcluster.password"
:mode="mode" :mode="mode"
:required="true" :required="true"
@ -142,7 +142,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -132,7 +132,7 @@ export default {
:weight="99" :weight="99"
> >
<RadioGroup <RadioGroup
v-model="value.spec.enabled" v-model:value="value.spec.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
@ -144,40 +144,40 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContent.resources.limits.cpu" v-model:value="valuesContent.resources.limits.cpu"
:label="t('monitoring.prometheus.config.limits.cpu')" :label="t('monitoring.prometheus.config.limits.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContent.resources.limits.memory" v-model:value="valuesContent.resources.limits.memory"
:label="t('monitoring.prometheus.config.limits.memory')" :label="t('monitoring.prometheus.config.limits.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContent.resources.requests.cpu" v-model:value="valuesContent.resources.requests.cpu"
:label="t('monitoring.prometheus.config.requests.cpu')" :label="t('monitoring.prometheus.config.requests.cpu')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContent.resources.requests.memory" v-model:value="valuesContent.resources.requests.memory"
:label="t('monitoring.prometheus.config.requests.memory')" :label="t('monitoring.prometheus.config.requests.memory')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
@ -186,34 +186,34 @@ export default {
<h2>{{ t('harvester.addons.vmImport.titles.pvc') }}</h2> <h2>{{ t('harvester.addons.vmImport.titles.pvc') }}</h2>
<div v-if="value.spec.enabled"> <div v-if="value.spec.enabled">
<RadioGroup <RadioGroup
v-model="valuesContent.pvcClaim.enabled" v-model:value="valuesContent.pvcClaim.enabled"
class="mb-20" class="mb-20"
name="model" name="model"
:mode="mode" :mode="mode"
:options="[true,false]" :options="[true,false]"
:labels="[t('generic.enabled'), t('generic.disabled')]" :labels="[t('generic.enabled'), t('generic.disabled')]"
@input="update" @update:value="update"
/> />
<div v-if="valuesContent.pvcClaim.enabled"> <div v-if="valuesContent.pvcClaim.enabled">
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="valuesContent.pvcClaim.size" v-model:value="valuesContent.pvcClaim.size"
:label="t('harvester.volume.size')" :label="t('harvester.volume.size')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@input="update" @update:value="update"
/> />
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="valuesContent.pvcClaim.storageClassName" v-model:value="valuesContent.pvcClaim.storageClassName"
:options="storageClassOptions" :options="storageClassOptions"
:label="t('harvester.storage.storageClass.label')" :label="t('harvester.storage.storageClass.label')"
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
</div> </div>
</div> </div>
@ -225,7 +225,7 @@ export default {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;

View File

@ -78,7 +78,7 @@ export default {
@cancel="done" @cancel="done"
> >
<NameNsDescription <NameNsDescription
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
:namespaced="true" :namespaced="true"
/> />
@ -87,7 +87,7 @@ export default {
<Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="1"> <Tab name="basics" :label="t('harvester.host.tabs.basics')" :weight="1">
<div class="mb-20"> <div class="mb-20">
<LabeledSelect <LabeledSelect
v-model="type" v-model:value="type"
:label="t('harvester.cloudTemplate.templateType')" :label="t('harvester.cloudTemplate.templateType')"
:disabled="!isCreate" :disabled="!isCreate"
:options="types" :options="types"
@ -97,7 +97,7 @@ export default {
<div class="resource-yaml"> <div class="resource-yaml">
<YamlEditor <YamlEditor
ref="yamlUser" ref="yamlUser"
v-model="config" v-model:value="config"
class="yaml-editor" class="yaml-editor"
:editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'" :editor-mode="mode === 'view' ? 'VIEW_CODE' : 'EDIT_CODE'"
@onChanges="update" @onChanges="update"
@ -111,7 +111,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
$yaml-height: 200px; $yaml-height: 200px;
::v-deep .yaml-editor{ :deep() .yaml-editor{
flex: 1; flex: 1;
min-height: $yaml-height; min-height: $yaml-height;
& .code-mirror .CodeMirror { & .code-mirror .CodeMirror {

View File

@ -151,7 +151,7 @@ export default {
</script> </script>
<template> <template>
<div class="disk" @input="update"> <div class="disk" @update:value="update">
<div class="mt-10" /> <div class="mt-10" />
<Banner <Banner
v-if="mountedMessage && isProvisioned" v-if="mountedMessage && isProvisioned"
@ -172,7 +172,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<DiskTags <DiskTags
v-model="value.tags" v-model:value="value.tags"
:label="t('harvester.host.disk.tags.label')" :label="t('harvester.host.disk.tags.label')"
:add-label="t('harvester.host.disk.tags.addLabel')" :add-label="t('harvester.host.disk.tags.addLabel')"
:mode="mode" :mode="mode"
@ -228,7 +228,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-12"> <div class="col span-12">
<LabeledInput <LabeledInput
v-model="value.displayName" v-model:value="value.displayName"
:label="t('generic.name')" :label="t('generic.name')"
:disabled="true" :disabled="true"
/> />
@ -237,7 +237,7 @@ export default {
<div v-if="(value.isNew && !isFormatted) || isCorrupted" class="row mt-10"> <div v-if="(value.isNew && !isFormatted) || isCorrupted" class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.forceFormatted" v-model:value="value.forceFormatted"
:mode="mode" :mode="mode"
name="forceFormatted" name="forceFormatted"
label-key="harvester.host.disk.forceFormatted.label" label-key="harvester.host.disk.forceFormatted.label"

View File

@ -112,7 +112,7 @@ export default {
<template> <template>
<div> <div>
<LabeledSelect <LabeledSelect
v-model="spec.run" v-model:value="spec.run"
:label="t('harvester.host.ksmtuned.run')" :label="t('harvester.host.ksmtuned.run')"
:options="ksmtunedRunOption" :options="ksmtunedRunOption"
class="mb-20" class="mb-20"
@ -122,7 +122,7 @@ export default {
<template v-if="showKsmt"> <template v-if="showKsmt">
<UnitInput <UnitInput
v-model="spec.thresCoef" v-model:value="spec.thresCoef"
v-int-number v-int-number
:label="t('harvester.host.ksmtuned.thresCoef')" :label="t('harvester.host.ksmtuned.thresCoef')"
suffix="%" suffix="%"
@ -132,13 +132,13 @@ export default {
class="mb-20" class="mb-20"
/> />
<Checkbox v-model="enableMergeAcrossNodes" :mode="mode" class="check mb-20" type="checkbox" :label="t('harvester.host.ksmtuned.enableMergeNodes')" /> <Checkbox v-model:value="enableMergeAcrossNodes" :mode="mode" class="check mb-20" type="checkbox" :label="t('harvester.host.ksmtuned.enableMergeNodes')" />
<h3> <h3>
<t k="harvester.host.ksmtuned.modeLink" :raw="true" /> <t k="harvester.host.ksmtuned.modeLink" :raw="true" />
</h3> </h3>
<RadioGroup <RadioGroup
v-model="spec.mode" v-model:value="spec.mode"
class="mb-20" class="mb-20"
:name="t('harvester.host.ksmtuned.mode')" :name="t('harvester.host.ksmtuned.mode')"
:options="ksmtunedMode" :options="ksmtunedMode"

View File

@ -250,16 +250,14 @@ export default {
<div> <div>
<div v-if="inventory.warningMessages.length > 0"> <div v-if="inventory.warningMessages.length > 0">
<Banner <Banner
v-for="msg in inventory.warningMessages" v-for="(msg, i) in inventory.warningMessages" :key="i" color="error"
:key="msg.text"
color="error"
:label="msg.text" :label="msg.text"
/> />
</div> </div>
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="enableInventory" v-model:value="enableInventory"
:options="[ :options="[
{ label: t('generic.enabled'), value: true }, { label: t('generic.enabled'), value: true },
{ label: t('generic.disabled'), value: false } { label: t('generic.disabled'), value: false }
@ -273,14 +271,14 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="value.spec.baseboardSpec.connection.host" v-model:value="value.spec.baseboardSpec.connection.host"
:label="t('harvester.seeder.inventory.host.label')" :label="t('harvester.seeder.inventory.host.label')"
:placeholder="t('harvester.seeder.inventory.host.placeholder')" :placeholder="t('harvester.seeder.inventory.host.placeholder')"
:mode="mode" :mode="mode"
required required
/> />
<Checkbox <Checkbox
v-model="value.spec.baseboardSpec.connection.insecureTLS" v-model:value="value.spec.baseboardSpec.connection.insecureTLS"
class="mt-5" class="mt-5"
:mode="mode" :mode="mode"
:label="t('harvester.seeder.inventory.insecureTLS.label')" :label="t('harvester.seeder.inventory.insecureTLS.label')"
@ -299,7 +297,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="selectedSecret" v-model:value="selectedSecret"
:label="t('harvester.seeder.inventory.secret.label')" :label="t('harvester.seeder.inventory.secret.label')"
:mode="mode" :mode="mode"
:options="secretOption" :options="secretOption"
@ -310,7 +308,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.spec.events.enabled" v-model:value="value.spec.events.enabled"
name="enabled" name="enabled"
:options="[true, false]" :options="[true, false]"
:label="t('harvester.seeder.inventory.event.label')" :label="t('harvester.seeder.inventory.event.label')"
@ -323,7 +321,7 @@ export default {
class="col span-6" class="col span-6"
> >
<LabeledInput <LabeledInput
v-model="value.spec.events.pollingInterval" v-model:value="value.spec.events.pollingInterval"
:label="t('harvester.seeder.inventory.pollingInterval.label')" :label="t('harvester.seeder.inventory.pollingInterval.label')"
:mode="mode" :mode="mode"
/> />
@ -344,20 +342,20 @@ export default {
<template #content> <template #content>
<NameNsDescription <NameNsDescription
v-model="secret" v-model:value="secret"
:namespaced="true" :namespaced="true"
mode="create" mode="create"
/> />
<LabeledInput <LabeledInput
v-model="username" v-model:value="username"
:label="t('harvester.virtualMachine.input.username')" :label="t('harvester.virtualMachine.input.username')"
class="mb-20" class="mb-20"
required required
/> />
<LabeledInput <LabeledInput
v-model="password" v-model:value="password"
type="password" type="password"
:label="t('harvester.virtualMachine.input.password')" :label="t('harvester.virtualMachine.input.password')"
class="mb-20" class="mb-20"

View File

@ -522,14 +522,14 @@ export default {
<Tabbed ref="tabbed" class="mt-15" :side-tabs="true"> <Tabbed ref="tabbed" class="mt-15" :side-tabs="true">
<Tab name="basics" :weight="100" :label="t('harvester.host.tabs.basics')"> <Tab name="basics" :weight="100" :label="t('harvester.host.tabs.basics')">
<LabeledInput <LabeledInput
v-model="customName" v-model:value="customName"
:label="t('harvester.host.detail.customName')" :label="t('harvester.host.detail.customName')"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
/> />
<LabeledInput <LabeledInput
v-model="consoleUrl" v-model:value="consoleUrl"
:label="t('harvester.host.detail.consoleUrl')" :label="t('harvester.host.detail.consoleUrl')"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
@ -547,7 +547,7 @@ export default {
> >
<div class="col span-12"> <div class="col span-12">
<DiskTags <DiskTags
v-model="longhornNode.spec.tags" v-model:value="longhornNode.spec.tags"
:label="t('harvester.host.tags.label')" :label="t('harvester.host.tags.label')"
:add-label="t('harvester.host.tags.addLabel')" :add-label="t('harvester.host.tags.addLabel')"
:mode="mode" :mode="mode"
@ -555,13 +555,13 @@ export default {
</div> </div>
</div> </div>
<ArrayListGrouped <ArrayListGrouped
v-model="newDisks" v-model:value="newDisks"
:mode="mode" :mode="mode"
:initial-empty-row="false" :initial-empty-row="false"
> >
<template #default="props"> <template #default="props">
<HarvesterDisk <HarvesterDisk
v-model="props.row.value" v-model:value="props.row.value"
class="mb-20" class="mb-20"
:mode="mode" :mode="mode"
:disks="disks" :disks="disks"
@ -652,7 +652,7 @@ export default {
:title="t('labels.labels.title')" :title="t('labels.labels.title')"
:read-allowed="false" :read-allowed="false"
:value-can-be-empty="true" :value-can-be-empty="true"
@input="updateHostLabels" @update:value="updateHostLabels"
/> />
</Tab> </Tab>
</Tabbed> </Tabbed>

View File

@ -85,14 +85,14 @@ export default {
<NameNsDescription <NameNsDescription
ref="nd" ref="nd"
:key="randomString" :key="randomString"
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
/> />
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true"> <Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true">
<Tab name="basic" :label="t('harvester.sshKey.tabs.basics')" :weight="1" class="bordered-table"> <Tab name="basic" :label="t('harvester.sshKey.tabs.basics')" :weight="1" class="bordered-table">
<LabeledInput <LabeledInput
v-model="publicKey" v-model:value="publicKey"
type="multiline" type="multiline"
:mode="mode" :mode="mode"
:min-height="160" :min-height="160"

View File

@ -186,7 +186,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="loggingType" v-model:value="loggingType"
class="mb-20" class="mb-20"
:options="outputTypeOptions" :options="outputTypeOptions"
:disabled="!isCreate" :disabled="!isCreate"
@ -197,7 +197,7 @@ export default {
</div> </div>
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect v-model="selectedProvider" label="Output" :options="providers" :mode="mode" /> <LabeledSelect v-model:value="selectedProvider" label="Output" :options="providers" :mode="mode" />
</div> </div>
</div> </div>
<div class="spacer"></div> <div class="spacer"></div>
@ -206,7 +206,7 @@ export default {
<Tab name="buffer" :label="t('logging.output.buffer.label')" :weight="1"> <Tab name="buffer" :label="t('logging.output.buffer.label')" :weight="1">
<YamlEditor <YamlEditor
ref="yaml" ref="yaml"
v-model="bufferYaml" v-model:value="bufferYaml"
:scrolling="false" :scrolling="false"
:initial-yaml-values="initialBufferYaml" :initial-yaml-values="initialBufferYaml"
:editor-mode="isView ? EDITOR_MODES.VIEW_CODE : EDITOR_MODES.EDIT_CODE" :editor-mode="isView ? EDITOR_MODES.VIEW_CODE : EDITOR_MODES.EDIT_CODE"

View File

@ -190,7 +190,7 @@ export default {
@cancel="done" @cancel="done"
> >
<NameNsDescription <NameNsDescription
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
:namespaced="isNamespaced" :namespaced="isNamespaced"
/> />

View File

@ -177,13 +177,13 @@ export default {
> >
<NameNsDescription <NameNsDescription
ref="nd" ref="nd"
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
/> />
<Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true"> <Tabbed v-bind="$attrs" class="mt-15" :side-tabs="true">
<Tab name="basics" :label="t('harvester.network.tabs.basics')" :weight="99" class="bordered-table"> <Tab name="basics" :label="t('harvester.network.tabs.basics')" :weight="99" class="bordered-table">
<LabeledSelect <LabeledSelect
v-model="type" v-model:value="type"
class="mb-20" class="mb-20"
:options="networkType" :options="networkType"
:mode="mode" :mode="mode"
@ -201,7 +201,7 @@ export default {
placeholder="e.g. 1-4094" placeholder="e.g. 1-4094"
:label="t('tableHeaders.networkVlan')" :label="t('tableHeaders.networkVlan')"
:mode="mode" :mode="mode"
@input="input" @update:value="input"
/> />
<div class="row"> <div class="row">
@ -209,7 +209,7 @@ export default {
class="col span-12" class="col span-12"
> >
<LabeledSelect <LabeledSelect
v-model="config.bridge" v-model:value="config.bridge"
class="mb-20" class="mb-20"
:label="t('harvester.network.clusterNetwork.label')" :label="t('harvester.network.clusterNetwork.label')"
required required
@ -230,7 +230,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="layer3Network.mode" v-model:value="layer3Network.mode"
name="layer3NetworkMode" name="layer3NetworkMode"
:label="t('harvester.network.layer3Network.mode.label')" :label="t('harvester.network.layer3Network.mode.label')"
:mode="mode" :mode="mode"
@ -244,7 +244,7 @@ export default {
> >
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="layer3Network.serverIPAddr" v-model:value="layer3Network.serverIPAddr"
class="mb-20" class="mb-20"
:label="t('harvester.network.layer3Network.serverIPAddr.label')" :label="t('harvester.network.layer3Network.serverIPAddr.label')"
:mode="mode" :mode="mode"
@ -257,7 +257,7 @@ export default {
> >
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="layer3Network.cidr" v-model:value="layer3Network.cidr"
class="mb-20" class="mb-20"
:label="t('harvester.network.layer3Network.cidr.label')" :label="t('harvester.network.layer3Network.cidr.label')"
:placeholder="t('harvester.network.layer3Network.cidr.placeholder')" :placeholder="t('harvester.network.layer3Network.cidr.placeholder')"
@ -267,7 +267,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="layer3Network.gateway" v-model:value="layer3Network.gateway"
class="mb-20" class="mb-20"
:label="t('harvester.network.layer3Network.gateway.label')" :label="t('harvester.network.layer3Network.gateway.label')"
:placeholder="t('harvester.network.layer3Network.gateway.placeholder')" :placeholder="t('harvester.network.layer3Network.gateway.placeholder')"

View File

@ -233,7 +233,7 @@ export default {
@error="e=>errors = e" @error="e=>errors = e"
> >
<NameNsDescription <NameNsDescription
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
:namespaced="!isCloud" :namespaced="!isCloud"
/> />
@ -271,7 +271,7 @@ export default {
:weight="-1" :weight="-1"
> >
<Labels <Labels
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
/> />
</Tab> </Tab>

View File

@ -201,14 +201,14 @@ export default {
:is="customComponent" :is="customComponent"
v-if="hasCustomComponent" v-if="hasCustomComponent"
ref="settingComp" ref="settingComp"
v-model="value" v-model:value="value"
:register-before-hook="registerBeforeHook" :register-before-hook="registerBeforeHook"
:mode="mode" :mode="mode"
/> />
</div> </div>
<div v-else-if="setting.kind === 'enum'"> <div v-else-if="setting.kind === 'enum'">
<LabeledSelect <LabeledSelect
v-model="value.value" v-model:value="value.value"
:label="t('advancedSettings.edit.value')" :label="t('advancedSettings.edit.value')"
:localized-label="true" :localized-label="true"
:mode="mode" :mode="mode"
@ -217,7 +217,7 @@ export default {
</div> </div>
<div v-else-if="setting.kind === 'boolean'"> <div v-else-if="setting.kind === 'boolean'">
<RadioGroup <RadioGroup
v-model="value.value" v-model:value="value.value"
name="settings_value" name="settings_value"
:labels="[ :labels="[
t('advancedSettings.edit.trueOption'), t('advancedSettings.edit.trueOption'),
@ -227,11 +227,11 @@ export default {
/> />
</div> </div>
<div v-else-if="setting.kind === 'multiline' || setting.kind === 'json'"> <div v-else-if="setting.kind === 'multiline' || setting.kind === 'json'">
<TextAreaAutoGrow v-model="value.value" :min-height="254" /> <TextAreaAutoGrow v-model:value="value.value" :min-height="254" />
</div> </div>
<div v-else> <div v-else>
<LabeledInput <LabeledInput
v-model="value.value" v-model:value="value.value"
:label="t('advancedSettings.edit.value')" :label="t('advancedSettings.edit.value')"
/> />
</div> </div>
@ -249,7 +249,7 @@ export default {
} }
} }
::v-deep .edit-help code { :deep() .edit-help code {
padding: 1px 5px; padding: 1px 5px;
} }
</style> </style>

View File

@ -222,7 +222,7 @@ export default {
:searchable="true" :searchable="true"
:taggable="true" :taggable="true"
class="mb-20" class="mb-20"
@input="updateProvisioner($event)" @update:value="updateProvisioner($event)"
/> />
<Tabbed :side-tabs="true"> <Tabbed :side-tabs="true">
<Tab name="parameters" :label="t('storageClass.parameters.label')" :weight="2"> <Tab name="parameters" :label="t('storageClass.parameters.label')" :weight="2">
@ -238,7 +238,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.reclaimPolicy" v-model:value="value.reclaimPolicy"
name="reclaimPolicy" name="reclaimPolicy"
:label="t('storageClass.customize.reclaimPolicy.label')" :label="t('storageClass.customize.reclaimPolicy.label')"
:mode="modeOverride" :mode="modeOverride"
@ -247,7 +247,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.allowVolumeExpansion" v-model:value="value.allowVolumeExpansion"
name="allowVolumeExpansion" name="allowVolumeExpansion"
:label="t('storageClass.customize.allowVolumeExpansion.label')" :label="t('storageClass.customize.allowVolumeExpansion.label')"
:mode="modeOverride" :mode="modeOverride"
@ -258,7 +258,7 @@ export default {
<div class="row mt-20"> <div class="row mt-20">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.volumeBindingMode" v-model:value="value.volumeBindingMode"
name="volumeBindingMode" name="volumeBindingMode"
:label="t('storageClass.customize.volumeBindingMode.label')" :label="t('storageClass.customize.volumeBindingMode.label')"
:mode="modeOverride" :mode="modeOverride"
@ -274,7 +274,7 @@ export default {
:tooltip="t('harvester.storage.allowedTopologies.tooltip')" :tooltip="t('harvester.storage.allowedTopologies.tooltip')"
> >
<ArrayList <ArrayList
v-model="allowedTopologies" v-model:value="allowedTopologies"
:default-add-value="defaultAddValue" :default-add-value="defaultAddValue"
:initial-empty-row="true" :initial-empty-row="true"
:show-header="true" :show-header="true"
@ -297,14 +297,14 @@ export default {
<div class="row custom-headers"> <div class="row custom-headers">
<div class="col span-4 key"> <div class="col span-4 key">
<LabeledInput <LabeledInput
v-model="scope.row.value.key" v-model:value="scope.row.value.key"
:required="true" :required="true"
:mode="modeOverride" :mode="modeOverride"
/> />
</div> </div>
<div class="col span-8 value"> <div class="col span-8 value">
<DiskTags <DiskTags
v-model="scope.row.value.values" v-model:value="scope.row.value.values"
:add-label="t('generic.add')" :add-label="t('generic.add')"
:mode="modeOverride" :mode="modeOverride"
/> />

View File

@ -17,7 +17,7 @@ export default {
</script> </script>
<template> <template>
<KeyValue <KeyValue
v-model="value.parameters" v-model:value="value.parameters"
:add-label="t('storageClass.custom.addLabel')" :add-label="t('storageClass.custom.addLabel')"
:read-allowed="false" :read-allowed="false"
:mode="mode" :mode="mode"

View File

@ -168,7 +168,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="numberOfReplicas" v-model:value="numberOfReplicas"
:label="t('harvester.storage.parameters.numberOfReplicas.label')" :label="t('harvester.storage.parameters.numberOfReplicas.label')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -179,7 +179,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="value.parameters.staleReplicaTimeout" v-model:value="value.parameters.staleReplicaTimeout"
:label="t('harvester.storage.parameters.staleReplicaTimeout.label')" :label="t('harvester.storage.parameters.staleReplicaTimeout.label')"
:required="true" :required="true"
:mode="mode" :mode="mode"
@ -190,7 +190,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="nodeSelector" v-model:value="nodeSelector"
:label="t('harvester.storage.parameters.nodeSelector.label')" :label="t('harvester.storage.parameters.nodeSelector.label')"
:options="nodeTags" :options="nodeTags"
:taggable="true" :taggable="true"
@ -206,7 +206,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="diskSelector" v-model:value="diskSelector"
:label="t('harvester.storage.parameters.diskSelector.label')" :label="t('harvester.storage.parameters.diskSelector.label')"
:options="diskTags" :options="diskTags"
:taggable="true" :taggable="true"
@ -224,7 +224,7 @@ export default {
<div class="row mt-10"> <div class="row mt-10">
<div class="col span-6"> <div class="col span-6">
<RadioGroup <RadioGroup
v-model="value.parameters.migratable" v-model:value="value.parameters.migratable"
name="layer3NetworkMode" name="layer3NetworkMode"
:label="t('harvester.storage.parameters.migratable.label')" :label="t('harvester.storage.parameters.migratable.label')"
:mode="mode" :mode="mode"
@ -233,7 +233,7 @@ export default {
</div> </div>
</div> </div>
<KeyValue <KeyValue
v-model="parameters" v-model:value="parameters"
:add-label="t('storageClass.longhorn.addLabel')" :add-label="t('storageClass.longhorn.addLabel')"
:read-allowed="false" :read-allowed="false"
:mode="mode" :mode="mode"

View File

@ -209,7 +209,7 @@ export default {
<div class="content"> <div class="content">
<div class="mb-20"> <div class="mb-20">
<RadioGroup <RadioGroup
v-model="restoreNewVm" v-model:value="restoreNewVm"
name="model" name="model"
:options="[true,false]" :options="[true,false]"
:labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]" :labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]"
@ -221,7 +221,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="namespace" v-model:value="namespace"
:disabled="!restoreNewVm" :disabled="!restoreNewVm"
:label="t('nameNsDescription.namespace.label')" :label="t('nameNsDescription.namespace.label')"
:options="namespaces" :options="namespaces"
@ -230,7 +230,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="name" v-model:value="name"
:disabled="!restoreNewVm" :disabled="!restoreNewVm"
:label="t('harvester.backup.restore.virtualMachineName')" :label="t('harvester.backup.restore.virtualMachineName')"
:placeholder="t('nameNsDescription.name.placeholder')" :placeholder="t('nameNsDescription.name.placeholder')"
@ -240,7 +240,7 @@ export default {
</div> </div>
<LabeledSelect <LabeledSelect
v-model="backupName" v-model:value="backupName"
class="mb-20" class="mb-20"
:label="t('harvester.backup.restore.backup')" :label="t('harvester.backup.restore.backup')"
:options="backupOption" :options="backupOption"
@ -248,14 +248,14 @@ export default {
<Checkbox <Checkbox
v-if="restoreNewVm" v-if="restoreNewVm"
v-model="restoreResource.spec.keepMacAddress" v-model:value="restoreResource.spec.keepMacAddress"
type="checkbox" type="checkbox"
:label="t('harvester.backup.restore.keepMacAddress')" :label="t('harvester.backup.restore.keepMacAddress')"
/> />
<LabeledSelect <LabeledSelect
v-if="!restoreNewVm" v-if="!restoreNewVm"
v-model="deletionPolicy" v-model:value="deletionPolicy"
:label="t('harvester.backup.restore.deletePreviousVolumes')" :label="t('harvester.backup.restore.deletePreviousVolumes')"
:options="deletionPolicyOption" :options="deletionPolicyOption"
/> />
@ -271,7 +271,7 @@ export default {
flex-grow: 1; flex-grow: 1;
flex-direction: column; flex-direction: column;
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;
@ -291,7 +291,7 @@ export default {
margin-bottom: -$space-m; margin-bottom: -$space-m;
padding: $space-s $space-m; padding: $space-s $space-m;
::v-deep .spacer-small { :deep() .spacer-small {
padding: 0px; padding: 0px;
} }
} }

View File

@ -280,7 +280,7 @@ export default {
> >
<NameNsDescription <NameNsDescription
ref="nd" ref="nd"
v-model="value" v-model:value="value"
:mode="mode" :mode="mode"
:label="t('generic.name')" :label="t('generic.name')"
name-key="spec.displayName" name-key="spec.displayName"
@ -295,7 +295,7 @@ export default {
> >
<RadioGroup <RadioGroup
v-if="isCreate" v-if="isCreate"
v-model="value.spec.sourceType" v-model:value="value.spec.sourceType"
name="model" name="model"
:options="[ :options="[
'download', 'download',
@ -311,7 +311,7 @@ export default {
<div class="col span-12"> <div class="col span-12">
<LabeledInput <LabeledInput
v-if="!isCreate" v-if="!isCreate"
v-model="value.spec.sourceType" v-model:value="value.spec.sourceType"
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
:disabled="isEdit" :disabled="isEdit"
@ -320,7 +320,7 @@ export default {
<LabeledInput <LabeledInput
v-if="value.spec.sourceType === 'download'" v-if="value.spec.sourceType === 'download'"
v-model="value.spec.url" v-model:value="value.spec.url"
:mode="mode" :mode="mode"
:disabled="isEdit" :disabled="isEdit"
class="mb-20 labeled-input--tooltip" class="mb-20 labeled-input--tooltip"
@ -332,7 +332,7 @@ export default {
<div v-else> <div v-else>
<LabeledInput <LabeledInput
v-if="isView" v-if="isView"
v-model="imageName" v-model:value="imageName"
:mode="mode" :mode="mode"
class="mt-20" class="mt-20"
label-key="harvester.image.fileName" label-key="harvester.image.fileName"
@ -368,7 +368,7 @@ export default {
<LabeledInput <LabeledInput
v-if="value.spec.sourceType === 'download'" v-if="value.spec.sourceType === 'download'"
v-model="value.spec.checksum" v-model:value="value.spec.checksum"
:mode="mode" :mode="mode"
:disabled="isEdit" :disabled="isEdit"
label-key="harvester.image.checksum" label-key="harvester.image.checksum"
@ -387,7 +387,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="storageClassName" v-model:value="storageClassName"
:options="storageClassOptions" :options="storageClassOptions"
:label="t('harvester.storage.storageClass.label')" :label="t('harvester.storage.storageClass.label')"
:mode="mode" :mode="mode"
@ -408,28 +408,28 @@ export default {
:pad-left="false" :pad-left="false"
:read-allowed="false" :read-allowed="false"
@focusKey="focusKey" @focusKey="focusKey"
@input="value.setLabels($event)" @update:value="value.setLabels($event)"
> >
<template #value="{row, keyName, valueName, queueUpdate}"> <template #value="{row, keyName, valueName, queueUpdate}">
<Select <Select
v-if="internalAnnotations(row)" v-if="internalAnnotations(row)"
v-model="row[valueName]" v-model:value="row[valueName]"
:mode="mode" :mode="mode"
:searchable="true" :searchable="true"
:clearable="false" :clearable="false"
:options="calculateOptions(row[keyName])" :options="calculateOptions(row[keyName])"
@input="queueUpdate" @update:value="queueUpdate"
/> />
<input <input
v-else v-else
v-model="row[valueName]" v-model:value="row[valueName]"
:disabled="isView" :disabled="isView"
:type="'text'" :type="'text'"
:placeholder="t('keyValue.valuePlaceholder')" :placeholder="t('keyValue.valuePlaceholder')"
autocorrect="off" autocorrect="off"
autocapitalize="off" autocapitalize="off"
spellcheck="false" spellcheck="false"
@input="queueUpdate" @update:value="queueUpdate"
/> />
</template> </template>
</KeyValue> </KeyValue>

View File

@ -220,7 +220,7 @@ export default {
@finish="saveVMT" @finish="saveVMT"
> >
<NameNsDescription <NameNsDescription
v-model="templateValue" v-model:value="templateValue"
:mode="realTemplateMode" :mode="realTemplateMode"
name-label="harvester.vmTemplate.nameNsDescription.name" name-label="harvester.vmTemplate.nameNsDescription.name"
:namespaced="true" :namespaced="true"
@ -228,7 +228,7 @@ export default {
<Checkbox <Checkbox
v-if="templateId" v-if="templateId"
v-model="isDefaultVersion" v-model:value="isDefaultVersion"
class="mb-20" class="mb-20"
:label="t('tableHeaders.defaultVersion')" :label="t('tableHeaders.defaultVersion')"
type="checkbox" type="checkbox"
@ -241,7 +241,7 @@ export default {
<div class="mb-20"> <div class="mb-20">
<SSHKey <SSHKey
v-model="sshKey" v-model:value="sshKey"
:create-namespace="true" :create-namespace="true"
:namespace="templateValue.metadata.namespace" :namespace="templateValue.metadata.namespace"
:disable-create="isView" :disable-create="isView"
@ -252,11 +252,11 @@ export default {
</Tab> </Tab>
<Tab name="Volume" :label="t('harvester.tab.volume')" :weight="-1"> <Tab name="Volume" :label="t('harvester.tab.volume')" :weight="-1">
<Volume v-model="diskRows" :mode="mode" :namespace="value.metadata.namespace" :existing-volume-disabled="true" /> <Volume v-model:value="diskRows" :mode="mode" :namespace="value.metadata.namespace" :existing-volume-disabled="true" />
</Tab> </Tab>
<Tab name="Network" :label="t('harvester.tab.network')" :weight="-2"> <Tab name="Network" :label="t('harvester.tab.network')" :weight="-2">
<Network v-model="networkRows" :mode="mode" /> <Network v-model:value="networkRows" :mode="mode" />
</Tab> </Tab>
<Tab <Tab
@ -266,7 +266,6 @@ export default {
> >
<template #default="{active}"> <template #default="{active}">
<NodeScheduling <NodeScheduling
:key="active"
:mode="mode" :mode="mode"
:value="spec.template.spec" :value="spec.template.spec"
:nodes="nodesIdOptions" :nodes="nodesIdOptions"
@ -277,7 +276,6 @@ export default {
<Tab :label="t('harvester.tab.vmScheduling')" name="vmScheduling" :weight="-90"> <Tab :label="t('harvester.tab.vmScheduling')" name="vmScheduling" :weight="-90">
<template #default="{active}"> <template #default="{active}">
<PodAffinity <PodAffinity
:key="active"
:mode="mode" :mode="mode"
:value="spec.template.spec" :value="spec.template.spec"
:nodes="nodes" :nodes="nodes"
@ -292,7 +290,7 @@ export default {
<div class="row mb-20"> <div class="row mb-20">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="runStrategy" v-model:value="runStrategy"
label-key="harvester.virtualMachine.runStrategy" label-key="harvester.virtualMachine.runStrategy"
:options="RunStrategys" :options="RunStrategys"
:mode="mode" :mode="mode"
@ -301,7 +299,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="osType" v-model:value="osType"
label-key="harvester.virtualMachine.osType" label-key="harvester.virtualMachine.osType"
:mode="mode" :mode="mode"
:options="OS" :options="OS"
@ -325,7 +323,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<UnitInput <UnitInput
v-model="terminationGracePeriodSeconds" v-model:value="terminationGracePeriodSeconds"
:suffix="terminationGracePeriodSeconds == 1 ? 'Second' : 'Seconds'" :suffix="terminationGracePeriodSeconds == 1 ? 'Second' : 'Seconds'"
:label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')" :label="t('harvester.virtualMachine.terminationGracePeriodSeconds.label')"
:mode="mode" :mode="mode"
@ -347,7 +345,7 @@ export default {
<div class="spacer"></div> <div class="spacer"></div>
<Checkbox <Checkbox
v-model="installUSBTablet" v-model:value="installUSBTablet"
class="check" class="check"
type="checkbox" type="checkbox"
:label="t('harvester.virtualMachine.enableUsb')" :label="t('harvester.virtualMachine.enableUsb')"
@ -355,7 +353,7 @@ export default {
/> />
<Checkbox <Checkbox
v-model="installAgent" v-model:value="installAgent"
class="check" class="check"
type="checkbox" type="checkbox"
label-key="harvester.virtualMachine.installAgent" label-key="harvester.virtualMachine.installAgent"
@ -363,7 +361,7 @@ export default {
/> />
<Checkbox <Checkbox
v-model="tpmEnabled" v-model:value="tpmEnabled"
class="check" class="check"
type="checkbox" type="checkbox"
label-key="harvester.virtualMachine.advancedOptions.tpm" label-key="harvester.virtualMachine.advancedOptions.tpm"
@ -371,7 +369,7 @@ export default {
/> />
<Checkbox <Checkbox
v-model="efiEnabled" v-model:value="efiEnabled"
class="check" class="check"
type="checkbox" type="checkbox"
:label="t('harvester.virtualMachine.efiEnabled')" :label="t('harvester.virtualMachine.efiEnabled')"
@ -380,7 +378,7 @@ export default {
<Checkbox <Checkbox
v-if="efiEnabled" v-if="efiEnabled"
v-model="secureBoot" v-model:value="secureBoot"
class="check" class="check"
type="checkbox" type="checkbox"
:label="t('harvester.virtualMachine.secureBoot')" :label="t('harvester.virtualMachine.secureBoot')"
@ -411,7 +409,7 @@ export default {
:mode="mode" :mode="mode"
:read-allowed="false" :read-allowed="false"
:value-can-be-empty="true" :value-can-be-empty="true"
@input="value.setInstanceLabels($event)" @update:value="value.setInstanceLabels($event)"
/> />
</template> </template>
</Labels> </Labels>

View File

@ -206,7 +206,7 @@ export default {
<div class="content"> <div class="content">
<div class="mb-20"> <div class="mb-20">
<RadioGroup <RadioGroup
v-model="restoreNewVm" v-model:value="restoreNewVm"
name="model" name="model"
:options="[true,false]" :options="[true,false]"
:labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]" :labels="[t('harvester.backup.restore.createNew'), t('harvester.backup.restore.replaceExisting')]"
@ -218,7 +218,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="namespace" v-model:value="namespace"
:disabled="true" :disabled="true"
:label="t('nameNsDescription.namespace.label')" :label="t('nameNsDescription.namespace.label')"
:options="namespaces" :options="namespaces"
@ -227,7 +227,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<LabeledInput <LabeledInput
v-model="name" v-model:value="name"
:disabled="!restoreNewVm" :disabled="!restoreNewVm"
:label="t('harvester.backup.restore.virtualMachineName')" :label="t('harvester.backup.restore.virtualMachineName')"
:placeholder="t('nameNsDescription.name.placeholder')" :placeholder="t('nameNsDescription.name.placeholder')"
@ -236,9 +236,9 @@ export default {
</div> </div>
</div> </div>
<LabeledSelect v-model="snapshotName" class="mb-20" :label="t('harvester.vmSnapshot.snapshot')" :options="snapshotOption" /> <LabeledSelect v-model:value="snapshotName" class="mb-20" :label="t('harvester.vmSnapshot.snapshot')" :options="snapshotOption" />
<LabeledSelect v-if="!restoreNewVm" v-model="deletionPolicy" :label="t('harvester.backup.restore.deletePreviousVolumes')" :options="deletionPolicyOption" /> <LabeledSelect v-if="!restoreNewVm" v-model:value="deletionPolicy" :label="t('harvester.backup.restore.deletePreviousVolumes')" :options="deletionPolicyOption" />
</div> </div>
<Footer mode="create" class="footer" :errors="errors" @save="saveRestore" @done="done" /> <Footer mode="create" class="footer" :errors="errors" @save="saveRestore" @done="done" />
@ -251,7 +251,7 @@ export default {
flex-grow: 1; flex-grow: 1;
flex-direction: column; flex-direction: column;
::v-deep .radio-group { :deep() .radio-group {
display: flex; display: flex;
.radio-container { .radio-container {
margin-right: 30px; margin-right: 30px;
@ -271,7 +271,7 @@ export default {
margin-bottom: -$space-m; margin-bottom: -$space-m;
padding: $space-s $space-m; padding: $space-s $space-m;
::v-deep .spacer-small { :deep() .spacer-small {
padding: 0px; padding: 0px;
} }
} }

View File

@ -272,7 +272,7 @@ export default {
<NameNsDescription :value="value" :namespaced="true" :mode="mode" /> <NameNsDescription :value="value" :namespaced="true" :mode="mode" />
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
class="mt-15" class="mt-15"
:need-conditions="false" :need-conditions="false"
:need-related="false" :need-related="false"
@ -281,41 +281,41 @@ export default {
> >
<Tab name="basic" :label="t('harvester.volume.tabs.basics')" :weight="3" class="bordered-table"> <Tab name="basic" :label="t('harvester.volume.tabs.basics')" :weight="3" class="bordered-table">
<LabeledSelect <LabeledSelect
v-model="source" v-model:value="source"
:label="t('harvester.volume.source')" :label="t('harvester.volume.source')"
:options="sourceOption" :options="sourceOption"
:disabled="!isCreate" :disabled="!isCreate"
required required
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
<LabeledSelect <LabeledSelect
v-if="isVMImage" v-if="isVMImage"
v-model="imageId" v-model:value="imageId"
:label="t('harvester.volume.image')" :label="t('harvester.volume.image')"
:options="imageOption" :options="imageOption"
:disabled="!isCreate" :disabled="!isCreate"
required required
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
<LabeledSelect <LabeledSelect
v-if="source === 'blank'" v-if="source === 'blank'"
v-model="value.spec.storageClassName" v-model:value="value.spec.storageClassName"
:options="storageClassOptions" :options="storageClassOptions"
:label="t('harvester.storage.storageClass.label')" :label="t('harvester.storage.storageClass.label')"
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
:disabled="!isCreate" :disabled="!isCreate"
@input="update" @update:value="update"
/> />
<UnitInput <UnitInput
v-model="storage" v-model:value="storage"
v-int-number v-int-number
:label="t('harvester.volume.size')" :label="t('harvester.volume.size')"
:input-exponent="3" :input-exponent="3"
@ -324,15 +324,15 @@ export default {
:mode="mode" :mode="mode"
required required
class="mb-20" class="mb-20"
@input="update" @update:value="update"
/> />
</Tab> </Tab>
<Tab v-if="!isCreate" name="details" :label="t('harvester.volume.tabs.details')" :weight="2.5" class="bordered-table"> <Tab v-if="!isCreate" name="details" :label="t('harvester.volume.tabs.details')" :weight="2.5" class="bordered-table">
<LabeledInput v-model="frontendDisplay" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.frontend')" /> <LabeledInput v-model:value="frontendDisplay" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.frontend')" />
<LabeledInput v-model="attachedNode" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.attachedNode')" /> <LabeledInput v-model:value="attachedNode" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.attachedNode')" />
<LabeledInput v-model="endpoint" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.endpoint')" /> <LabeledInput v-model:value="endpoint" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.endpoint')" />
<LabeledSelect <LabeledSelect
v-model="diskTags" v-model:value="diskTags"
:multiple="true" :multiple="true"
:label="t('harvester.volume.diskTags')" :label="t('harvester.volume.diskTags')"
:options="[]" :options="[]"
@ -341,7 +341,7 @@ export default {
class="mb-20" class="mb-20"
/> />
<LabeledSelect <LabeledSelect
v-model="nodeTags" v-model:value="nodeTags"
:multiple="true" :multiple="true"
:label="t('harvester.volume.nodeTags')" :label="t('harvester.volume.nodeTags')"
:options="[]" :options="[]"
@ -349,9 +349,9 @@ export default {
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
/> />
<LabeledInput v-model="lastBackup" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackup')" /> <LabeledInput v-model:value="lastBackup" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackup')" />
<LabeledInput v-model="lastBackupAt" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackupAt')" /> <LabeledInput v-model:value="lastBackupAt" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.lastBackupAt')" />
<LabeledInput v-model="replicasNumber" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.replicasNumber')" /> <LabeledInput v-model:value="replicasNumber" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.replicasNumber')" />
</Tab> </Tab>
<Tab v-if="!isCreate" name="instances" :label="t('harvester.volume.tabs.snapshots')" :weight="2" class="bordered-table"> <Tab v-if="!isCreate" name="instances" :label="t('harvester.volume.tabs.snapshots')" :weight="2" class="bordered-table">
<SortableTable <SortableTable
@ -360,12 +360,12 @@ export default {
default-sort-by="age" default-sort-by="age"
:rows="value.relatedVolumeSnapshotCounts" :rows="value.relatedVolumeSnapshotCounts"
key-field="_key" key-field="_key"
v-on="$listeners"
/> />
</Tab> </Tab>
<Tab v-if="!isCreate && value.spec.dataSource" name="datasource" :label="t('harvester.volume.tabs.datasource')" :weight="1" class="bordered-table"> <Tab v-if="!isCreate && value.spec.dataSource" name="datasource" :label="t('harvester.volume.tabs.datasource')" :weight="1" class="bordered-table">
<LabeledInput v-model="dataSourceKind" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.kind')" /> <LabeledInput v-model:value="dataSourceKind" class="mb-20" :mode="mode" :disabled="true" :label="t('harvester.volume.kind')" />
<LabeledInput v-model="value.spec.dataSource.name" :mode="mode" :disabled="true" :label="t('nameNsDescription.name.label')" /> <LabeledInput v-model:value="value.spec.dataSource.name" :mode="mode" :disabled="true" :label="t('nameNsDescription.name.label')" />
</Tab> </Tab>
</ResourceTabs> </ResourceTabs>
</CruResource> </CruResource>

View File

@ -62,7 +62,7 @@ export default {
> >
<NameNsDescription :value="value" :namespaced="true" :mode="mode" /> <NameNsDescription :value="value" :namespaced="true" :mode="mode" />
<ResourceTabs <ResourceTabs
v-model="value" v-model:value="value"
class="mt-15" class="mt-15"
:need-conditions="false" :need-conditions="false"
:need-related="false" :need-related="false"
@ -72,17 +72,17 @@ export default {
<Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table"> <Tab name="basics" :label="t('harvester.virtualMachine.detail.tabs.basics')" class="bordered-table">
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<LabeledInput v-model="size" :label="t('harvester.snapshot.size')" class="mt-20" :disabled="true" /> <LabeledInput v-model:value="size" :label="t('harvester.snapshot.size')" class="mt-20" :disabled="true" />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col span-12"> <div class="col span-12">
<LabeledInput v-model="targetVolume" :label="t('harvester.snapshot.targetVolume')" class="mt-20" :disabled="true" /> <LabeledInput v-model:value="targetVolume" :label="t('harvester.snapshot.targetVolume')" class="mt-20" :disabled="true" />
</div> </div>
</div> </div>
<div v-if="isImageVolume" class="row"> <div v-if="isImageVolume" class="row">
<div class="col span-12"> <div class="col span-12">
<LabeledInput v-model="imageName" :label="t('harvester.snapshot.image')" class="mt-20" :disabled="true" /> <LabeledInput v-model:value="imageName" :label="t('harvester.snapshot.image')" class="mt-20" :disabled="true" />
</div> </div>
</div> </div>
</Tab> </Tab>

View File

@ -141,7 +141,7 @@ export default {
<template> <template>
<div class="vm__credentials-users"> <div class="vm__credentials-users">
<LabeledSelect <LabeledSelect
v-model="selectedUser" v-model:value="selectedUser"
:options="userOptions" :options="userOptions"
:label="t('harvester.virtualMachine.accessCredentials.injectSSH.users')" :label="t('harvester.virtualMachine.accessCredentials.injectSSH.users')"
:taggable="multiple" :taggable="multiple"
@ -167,7 +167,7 @@ export default {
<template #content> <template #content>
<LabeledInput <LabeledInput
v-model="newUsername" v-model:value="newUsername"
:label="t('harvester.virtualMachine.input.username')" :label="t('harvester.virtualMachine.input.username')"
class="mb-20" class="mb-20"
required required

View File

@ -152,7 +152,7 @@ export default {
<div> <div>
<Banner class="mb-20" color="info" :label="t('harvester.virtualMachine.accessCredentials.tips')" /> <Banner class="mb-20" color="info" :label="t('harvester.virtualMachine.accessCredentials.tips')" />
<div v-for="(row, i) in rows" :key="row.id"> <div v-for="(row, i) in rows" :key="i">
<InfoBox class="volume-source"> <InfoBox class="volume-source">
<button v-if="isEdit" type="button" class="role-link btn btn-sm remove-vol" @click="remove(row)"> <button v-if="isEdit" type="button" class="role-link btn btn-sm remove-vol" @click="remove(row)">
<i class="icon icon-x" /> <i class="icon icon-x" />
@ -165,7 +165,7 @@ export default {
<div> <div>
<component <component
:is="componentFor(row.source)" :is="componentFor(row.source)"
v-model="rows[i]" v-model:value="rows[i]"
:rows="rows" :rows="rows"
:resource="resource" :resource="resource"
:user-options="userOptions" :user-options="userOptions"

View File

@ -61,10 +61,10 @@ export default {
</script> </script>
<template> <template>
<div class="row" @input="update"> <div class="row" @update:value="update">
<div class="col span-6"> <div class="col span-6">
<AccessCredentialsUsers <AccessCredentialsUsers
v-model="value.username" v-model:value="value.username"
:resource="resource" :resource="resource"
:user-options="userOptions" :user-options="userOptions"
:multiple="false" :multiple="false"
@ -76,7 +76,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<Password <Password
ref="password" ref="password"
v-model="value.newPassword" v-model:value="value.newPassword"
:mode="mode" :mode="mode"
:disabled="mode !== 'edit'" :disabled="mode !== 'edit'"
:label="t('harvester.virtualMachine.input.password')" :label="t('harvester.virtualMachine.input.password')"

View File

@ -61,7 +61,7 @@ export default {
<div class="columns row"> <div class="columns row">
<div class="col span-6"> <div class="col span-6">
<AccessCredentialsUsers <AccessCredentialsUsers
v-model="value.users" v-model:value="value.users"
:resource="resource" :resource="resource"
:user-options="userOptions" :user-options="userOptions"
:mode="mode" :mode="mode"
@ -72,7 +72,7 @@ export default {
</div> </div>
<div class="col span-6"> <div class="col span-6">
<SSHKey <SSHKey
v-model="value.sshkeys" v-model:value="value.sshkeys"
class="mb-20" class="mb-20"
:namespace="resource.metadata.namespace" :namespace="resource.metadata.namespace"
:mode="mode" :mode="mode"

View File

@ -117,7 +117,7 @@ export default {
<LabeledSelect <LabeledSelect
v-if="!isView" v-if="!isView"
v-model="id" v-model:value="id"
class="mb-20" class="mb-20"
:options="options" :options="options"
:disabled="viewCode" :disabled="viewCode"
@ -127,7 +127,7 @@ export default {
<div class="resource-yaml"> <div class="resource-yaml">
<YamlEditor <YamlEditor
ref="yaml" ref="yaml"
v-model="yamlScript" v-model:value="yamlScript"
class="yaml-editor" class="yaml-editor"
:editor-mode="editorMode" :editor-mode="editorMode"
/> />
@ -138,7 +138,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
$yaml-height: 200px; $yaml-height: 200px;
::v-deep .resource-yaml { :deep() .resource-yaml {
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -200,7 +200,7 @@ export default {
<div class="mb-20"> <div class="mb-20">
<DataTemplate <DataTemplate
ref="userTemplate" ref="userTemplate"
v-model="userScript" v-model:value="userScript"
type="user" type="user"
:view-code="viewCode" :view-code="viewCode"
:mode="mode" :mode="mode"
@ -215,7 +215,7 @@ export default {
<div class="mb-20"> <div class="mb-20">
<DataTemplate <DataTemplate
ref="networkTemplate" ref="networkTemplate"
v-model="networkScript" v-model:value="networkScript"
type="network" type="network"
:view-code="viewCode" :view-code="viewCode"
:mode="mode" :mode="mode"
@ -240,7 +240,7 @@ export default {
<template #content> <template #content>
<LabeledInput <LabeledInput
v-model="cloudTemplateName" v-model:value="cloudTemplateName"
:label="t('harvester.virtualMachine.input.name')" :label="t('harvester.virtualMachine.input.name')"
class="mb-20" class="mb-20"
required required
@ -251,7 +251,7 @@ export default {
<div class="resource-yaml"> <div class="resource-yaml">
<YamlEditor <YamlEditor
ref="createTemplate" ref="createTemplate"
v-model="cloudTemplate" v-model:value="cloudTemplate"
class="yaml-editor" class="yaml-editor"
:editor-mode="editorMode" :editor-mode="editorMode"
/> />
@ -270,7 +270,7 @@ $yaml-height: 350px;
overflow: auto; overflow: auto;
} }
::v-deep .resource-yaml { :deep() .resource-yaml {
flex: 1; flex: 1;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -77,7 +77,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<InputOrDisplay name="CPU" :value="cupDisplay" :mode="mode" class="mb-10"> <InputOrDisplay name="CPU" :value="cupDisplay" :mode="mode" class="mb-10">
<UnitInput <UnitInput
v-model="localCpu" v-model:value="localCpu"
v-int-number v-int-number
label="CPU" label="CPU"
suffix="C" suffix="C"
@ -86,7 +86,7 @@ export default {
:disabled="disabled" :disabled="disabled"
:mode="mode" :mode="mode"
class="mb-20" class="mb-20"
@input="change" @update:value="change"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>
@ -94,7 +94,7 @@ export default {
<div class="col span-6"> <div class="col span-6">
<InputOrDisplay :name="t('harvester.virtualMachine.input.memory')" :value="memoryDisplay" :mode="mode" class="mb-10"> <InputOrDisplay :name="t('harvester.virtualMachine.input.memory')" :value="memoryDisplay" :mode="mode" class="mb-10">
<UnitInput <UnitInput
v-model="localMemory" v-model:value="localMemory"
v-int-number v-int-number
:label="t('harvester.virtualMachine.input.memory')" :label="t('harvester.virtualMachine.input.memory')"
:mode="mode" :mode="mode"
@ -105,7 +105,7 @@ export default {
:disabled="disabled" :disabled="disabled"
required required
class="mb-20" class="mb-20"
@input="change" @update:value="change"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>

View File

@ -198,12 +198,12 @@ export default {
:mode="mode" :mode="mode"
> >
<LabeledInput <LabeledInput
v-model="value.name" v-model:value="value.name"
:label="t('harvester.fields.name')" :label="t('harvester.fields.name')"
required required
:mode="mode" :mode="mode"
:disabled="isDisabled" :disabled="isDisabled"
@input="update" @update:value="update"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>
@ -218,13 +218,13 @@ export default {
:mode="mode" :mode="mode"
> >
<LabeledSelect <LabeledSelect
v-model="value.model" v-model:value="value.model"
:label="t('harvester.fields.model')" :label="t('harvester.fields.model')"
:disabled="isDisabled" :disabled="isDisabled"
:options="modelOption" :options="modelOption"
:mode="mode" :mode="mode"
required required
@input="update" @update:value="update"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>
@ -241,13 +241,13 @@ export default {
:mode="mode" :mode="mode"
> >
<LabeledSelect <LabeledSelect
v-model="value.networkName" v-model:value="value.networkName"
:label="t('harvester.fields.network')" :label="t('harvester.fields.network')"
:options="allNetworkOption" :options="allNetworkOption"
:mode="mode" :mode="mode"
required required
:disabled="isDisabled" :disabled="isDisabled"
@input="updateNetworkName" @update:value="updateNetworkName"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>
@ -262,12 +262,12 @@ export default {
:mode="mode" :mode="mode"
> >
<LabeledSelect <LabeledSelect
v-model="value.type" v-model:value="value.type"
:label="t('harvester.fields.type')" :label="t('harvester.fields.type')"
:options="typeOption" :options="typeOption"
:mode="mode" :mode="mode"
required required
@input="update" @update:value="update"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>
@ -292,11 +292,11 @@ export default {
:mode="mode" :mode="mode"
> >
<LabeledInput <LabeledInput
v-model="value.macAddress" v-model:value="value.macAddress"
label-key="harvester.fields.macAddress" label-key="harvester.fields.macAddress"
:mode="mode" :mode="mode"
:tooltip="t('harvester.virtualMachine.volume.macTip')" :tooltip="t('harvester.virtualMachine.volume.macTip')"
@input="update" @update:value="update"
/> />
</InputOrDisplay> </InputOrDisplay>
</div> </div>

View File

@ -125,7 +125,7 @@ export default {
<template> <template>
<div> <div>
<InfoBox v-for="(row, i) in rows" :key="i" class="infoBox"> <InfoBox v-for="(row, i) in rows" :key="i">
<button v-if="!isView" type="button" class="role-link remove-vol" @click="remove(row)"> <button v-if="!isView" type="button" class="role-link remove-vol" @click="remove(row)">
<i class="icon icon-x" /> <i class="icon icon-x" />
</button> </button>
@ -133,8 +133,7 @@ export default {
<h3> {{ t('harvester.virtualMachine.network.title') }} </h3> <h3> {{ t('harvester.virtualMachine.network.title') }} </h3>
<Base <Base
:key="rows[i].rowKeyId" v-model:value="rows[i]"
v-model="rows[i]"
:rows="rows" :rows="rows"
:mode="mode" :mode="mode"
:is-single="isSingle" :is-single="isSingle"

View File

@ -82,18 +82,16 @@ export default {
</div> </div>
<div>{{ t('harvester.pci.matrixHostName') }}</div> <div>{{ t('harvester.pci.matrixHostName') }}</div>
</div> </div>
<div v-for="nodeName in allNodeNames" :key="nodeName" class="node-label"> <div v-for="(nodeName, i) in allNodeNames" :key="i" >
<span> {{ nodeName }}</span> <span> {{ nodeName }}</span>
</div> </div>
</div> </div>
<div v-for="deviceCRD in enabledDevices" :key="deviceCRD.metadata.name" class="device-col"> <div v-for="(deviceCRD, i) in enabledDevices" :key="i" >
<div v-clean-tooltip="deviceTooltip(deviceCRD)" class="compat-cell device-label" :class="{'text-muted': noneAvailable(deviceCRD)}"> <div v-clean-tooltip="deviceTooltip(deviceCRD)" class="compat-cell device-label" :class="{'text-muted': noneAvailable(deviceCRD)}">
{{ deviceCRD.metadata.name }} {{ deviceCRD.metadata.name }}
</div> </div>
<div <div
v-for="nodeName in allNodeNames" v-for="(nodeName, i) in allNodeNames" :key="i" class="compat-cell"
:key="nodeName"
class="compat-cell"
:class="{'has-device': nodeHasDevice(nodeName, deviceCRD)}" :class="{'has-device': nodeHasDevice(nodeName, deviceCRD)}"
/> />
</div> </div>

View File

@ -226,7 +226,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="selectedDevices" v-model:value="selectedDevices"
label="Available PCI Devices" label="Available PCI Devices"
searchable searchable
multiple multiple
@ -244,7 +244,7 @@ export default {
<div class="col span-12 text-muted"> <div class="col span-12 text-muted">
Compatible hosts: Compatible hosts:
<!-- eslint-disable-next-line vue/no-parsing-error --> <!-- eslint-disable-next-line vue/no-parsing-error -->
<span v-for="(node, idx) in compatibleNodes" :key="node">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span> <span v-for="(node, idx) in compatibleNodes" :key="idx">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
</div> </div>
</div> </div>
<div v-else-if="selectedDevices.length" class="text-error"> <div v-else-if="selectedDevices.length" class="text-error">

View File

@ -38,13 +38,13 @@ export default {
<template> <template>
<UnitInput <UnitInput
v-model="memory" v-model:value="memory"
v-int-number v-int-number
:label="t('harvester.virtualMachine.input.reservedMemory')" :label="t('harvester.virtualMachine.input.reservedMemory')"
:mode="mode" :mode="mode"
:input-exponent="2" :input-exponent="2"
:increment="1024" :increment="1024"
:output-modifier="true" :output-modifier="true"
@input="change" @update:value="change"
/> />
</template> </template>

View File

@ -239,7 +239,7 @@ export default {
<template> <template>
<div> <div>
<LabeledSelect <LabeledSelect
v-model="checkedSsh" v-model:value="checkedSsh"
:label="t('harvester.virtualMachine.input.sshKey')" :label="t('harvester.virtualMachine.input.sshKey')"
:taggable="true" :taggable="true"
:mode="mode" :mode="mode"
@ -247,7 +247,7 @@ export default {
:searchable="searchable" :searchable="searchable"
:disabled="disabled" :disabled="disabled"
:options="sshOption" :options="sshOption"
@input="update" @update:value="update"
/> />
<ModalWithCard <ModalWithCard
@ -264,7 +264,7 @@ export default {
<template #content> <template #content>
<LabeledInput <LabeledInput
v-model="sshName" v-model:value="sshName"
:label="t('harvester.virtualMachine.input.name')" :label="t('harvester.virtualMachine.input.name')"
class="mb-20" class="mb-20"
required required
@ -272,7 +272,7 @@ export default {
/> />
<LabeledInput <LabeledInput
v-model="publicKey" v-model:value="publicKey"
:label="t('harvester.virtualMachine.input.sshKeyValue')" :label="t('harvester.virtualMachine.input.sshKeyValue')"
:min-height="160" :min-height="160"
class="mb-20" class="mb-20"

View File

@ -169,7 +169,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model="selectedDevices" v-model:value="selectedDevices"
label="Available vGPU Devices" label="Available vGPU Devices"
searchable searchable
multiple multiple
@ -187,7 +187,7 @@ export default {
<div class="col span-12 text-muted"> <div class="col span-12 text-muted">
Compatible hosts: Compatible hosts:
<!-- eslint-disable-next-line vue/no-parsing-error --> <!-- eslint-disable-next-line vue/no-parsing-error -->
<span v-for="(node, idx) in compatibleNodes" :key="node">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span> <span v-for="(node, idx) in compatibleNodes" :key="idx">{{ node }}{{ idx < compatibleNodes.length-1 ? ', ' : '' }}</span>
</div> </div>
</div> </div>
<div v-else-if="selectedDevices.length" class="text-error"> <div v-else-if="selectedDevices.length" class="text-error">

Some files were not shown because too many files have changed in this diff Show More