feat(ui): localization of cli-ui (#987)

This commit is contained in:
kazuya kawaguchi
2018-03-15 19:58:14 +09:00
committed by Guillaume Chau
parent 19cc90c6e6
commit 10202e93b3
22 changed files with 588 additions and 118 deletions

View File

@@ -29,6 +29,7 @@
"subscriptions-transport-ws": "^0.9.5",
"vue": "^2.5.13",
"vue-apollo": "^3.0.0-beta.5",
"vue-i18n": "^7.6.0",
"vue-instantsearch": "^1.5.1",
"vue-router": "^3.0.1",
"xterm": "^3.2.0"

View File

@@ -9,7 +9,7 @@
<VueButton
class="icon-button"
icon-left="keyboard_arrow_up"
v-tooltip="'Open parent folder'"
v-tooltip="$t('components.folder-explorer.toolbar.tooltips.parent-folder')"
@click="openParentFolder"
/>
@@ -17,7 +17,7 @@
<VueInput
ref="pathInput"
v-model="editedPath"
placeholder="Enter the full path to a folder"
:placeholder="$t('components.folder-explorer.toolbar.placeholder')"
icon-left="edit"
@keyup.esc="editingPath = false"
@keyup.enter="submitPathEdit()"
@@ -28,7 +28,7 @@
v-else
:query="require('@/graphql/cwd.gql')"
class="current-path"
v-tooltip="'Edit path'"
v-tooltip="$t('components.folder-explorer.toolbar.tooltips.edit-path')"
@click.native="openPathEdit()"
>
<ApolloSubscribeToMore
@@ -50,7 +50,7 @@
<VueButton
class="icon-button favorite-button"
:icon-left="folderCurrent.favorite ? 'star' : 'star_border'"
v-tooltip="'Toggle favorite'"
v-tooltip="$t('components.folder-explorer.toolbar.tooltips.favorite')"
@click="toggleFavorite()"
/>
@@ -61,7 +61,7 @@
slot="trigger"
icon-left="arrow_drop_down"
class="icon-button"
v-tooltip="'Favorite folders'"
v-tooltip="$t('components.folder-explorer.toolbar.tooltips.favorite-folders')"
/>
<template v-if="foldersFavorite.length">
@@ -75,14 +75,14 @@
</template>
<div v-else class="vue-ui-empty">
No favorite folders yet.
{{ $t('components.folder-explorer.toolbar.empty') }}
</div>
</VueDropdown>
<VueButton
class="icon-button"
icon-left="refresh"
v-tooltip="'Refresh'"
v-tooltip="$t('components.folder-explorer.toolbar.tooltips.refresh')"
@click="refreshFolder"
/>
</div>

View File

@@ -5,7 +5,7 @@
icon-left="search"
v-model="query"
class="big"
placeholder="Search a plugin"
:placeholder="$t('components.instant-search-input.placeholder')"
>
<template slot="right">
<VueButton

View File

@@ -22,7 +22,7 @@
@click.stop="() => {}"
>
<VueIcon icon="open_in_new" class="medium top"/>
More info
{{ $t('components.list-item-info.more-info') }}
</a>
</div>
</div>

View File

@@ -5,12 +5,12 @@
icon="dvr"
/>
<div class="title">
Logs
{{ $t('components.logger-view.title') }}
</div>
<VueButton
class="icon-button"
icon-left="delete_forever"
v-tooltip="'Clear logs'"
v-tooltip="$t('components.logger-view.buttons.clear')"
@click="clearLogs()"
/>
<VueIcon
@@ -20,13 +20,13 @@
<VueButton
class="icon-button"
icon-left="subdirectory_arrow_left"
v-tooltip="'Scroll to bottom'"
v-tooltip="$t('components.logger-view.buttons.scroll')"
@click="scrollToBottom()"
/>
<VueButton
class="icon-button"
icon-left="close"
v-tooltip="'Close'"
v-tooltip="$t('components.logger-view.buttons.close')"
@click="close()"
/>
</div>
@@ -56,7 +56,7 @@
class="vue-ui-empty"
>
<VueIcon icon="wifi" class="large"/>
<div>No logs yet</div>
<div>{{ $t('components.logger-view.empty') }}</div>
</div>
</template>
</template>

View File

@@ -20,7 +20,7 @@
<div class="actions">
<VueButton
icon-left="close"
label="Close"
:label="$t('components.progress-screen.close')"
@click="close()"
/>
</div>

View File

@@ -12,7 +12,7 @@
class="flat big icon-button"
:value="route.name"
:icon-left="route.icon"
v-tooltip.right="route.tooltip"
v-tooltip.right="renderTooltip(route.tooltip)"
/>
</VueGroup>
</div>
@@ -24,17 +24,17 @@ const BUILTIN_ROUTES = [
{
name: 'project-plugins',
icon: 'widgets',
tooltip: 'Plugins'
tooltip: 'plugins'
},
{
name: 'project-configuration',
icon: 'settings_applications',
tooltip: 'Configuration'
tooltip: 'configuration'
},
{
name: 'project-tasks',
icon: 'assignment',
tooltip: 'Tasks'
tooltip: 'tasks'
}
]
@@ -65,6 +65,12 @@ export default {
}
}
},
methods: {
renderTooltip (target) {
return this.$t(`components.project-nav.tooltips.${target}`)
}
}
}
</script>

View File

@@ -9,12 +9,12 @@
>
<span slot="description" class="plugin-description">
<span class="info version">
<span class="label">version</span>
<span class="label">{{ $t('components.project-plugin-item.version') }}</span>
<span class="value">{{ plugin.version.current }}</span>
</span>
<span class="info latest">
<span class="label">latest</span>
<span class="label">{{ $t('components.project-plugin-item.latest') }}</span>
<VueIcon
v-if="plugin.version.current !== plugin.version.latest"
icon="warning"
@@ -28,7 +28,7 @@
icon="star"
class="top medium"
/>
Official
{{ $t('components.project-plugin-item.official') }}
</span>
<span v-if="plugin.installed" class="info">
@@ -36,7 +36,7 @@
icon="check_circle"
class="top medium"
/>
Installed
{{ $t('components.project-plugin-item.installed') }}
</span>
<span v-if="plugin.description" class="package-description">

View File

@@ -18,7 +18,7 @@
</div>
<div v-else class="vue-ui-empty">
<VueIcon icon="attach_file" class="empty-icon"/>
<div>No existing projects</div>
<div>{{ $t('components.project-select-list.empty') }}</div>
</div>
</template>
</template>

View File

@@ -5,7 +5,7 @@
<VueButton
class="icon-button"
:icon-left="project.favorite ? 'star' : 'star_border'"
v-tooltip="'Toggle favorite'"
v-tooltip="$t('components.project-select-list-item.tooltips.favorite')"
@click.stop="$emit('favorite')"
/>
</div>
@@ -19,7 +19,7 @@
<VueButton
class="icon-button"
icon-left="delete"
v-tooltip="'Delete'"
v-tooltip="$t('components.project-select-list-item.tooltips.delete')"
@click.stop="$emit('remove')"
/>
</div>

View File

@@ -8,18 +8,18 @@
<div class="content">
<div
class="section action current-project"
v-tooltip="'Current project<br><i>Click to toggle Project Manager</i>'"
v-tooltip="$t('components.status-bar.project.tooltip')"
@click="onProjectClick()"
>
<VueIcon icon="work"/>
<span v-if="projectCurrent">{{ projectCurrent.name }}</span>
<span v-else class="label">No project</span>
<span v-else class="label">{{ $t('components.status-bar.project.empty') }}</span>
</div>
<ApolloQuery
:query="require('@/graphql/cwd.gql')"
class="section current-path"
v-tooltip="'Current Working Directory'"
v-tooltip="$t('components.status-bar.path.tooltip')"
@click.native="onCwdClick()"
>
<ApolloSubscribeToMore
@@ -37,7 +37,7 @@
<div
class="section action console-log"
v-tooltip="'Logs<br><i>Click to toggle vue-cli logs</i>'"
v-tooltip="$t('components.status-bar.log.tooltip')"
@click="onConsoleClick()"
>
<VueIcon icon="dvr"/>
@@ -45,7 +45,7 @@
v-if="consoleLogLast"
:message="consoleLogLast"
/>
<div v-else class="last-message">No logs yet</div>
<div v-else class="last-message">{{ $t('components.status-bar.log.empty') }}</div>
<!-- <TerminalView
:cols="100"
:rows="1"

View File

@@ -0,0 +1,33 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
function loadLocaleMessages () {
const locales = require.context('./locales', true, /[a-z0-9]+\.json$/i)
const messages = {}
locales.keys().forEach(key => {
const locale = key.match(/([a-z0-9]+)\./i)[1]
messages[locale] = locales(key)
})
return messages
}
function detectLanguage () {
try {
const lang = (window.navigator.languages && window.navigator.languages[0]) ||
window.navigator.language ||
window.navigator.userLanguage
return lang.substr(0, 2)
} catch (e) {
return undefined
}
}
const i18n = new VueI18n({
locale: detectLanguage() || 'en',
fallbackLocale: 'en',
messages: loadLocaleMessages()
})
export default i18n

View File

@@ -0,0 +1,220 @@
{
"components": {
"folder-explorer": {
"toolbar": {
"tooltips": {
"parent-folder": "Open parent folder",
"edit-path": "Edit path",
"favorite": "Toggle favorite",
"favorite-folders": "Favorite folders",
"refresh": "Refresh"
},
"placeholder": "Enter the full path to a folder",
"empty": "No favorite folders yet."
}
},
"instant-search-input": {
"placeholder": "Search a plugin"
},
"list-item-info": {
"more-info": "More Info"
},
"logger-view": {
"title": "Logs",
"empty": "Not logs yet",
"buttons": {
"clear": "Clear logs",
"scroll": "Scroll to bottom",
"close": "Close"
}
},
"progress-screen": {
"close": "Close"
},
"project-nav": {
"tooltips": {
"plugins": "Plugins",
"configuration": "Configuration",
"tasks": "Tasks"
}
},
"project-select-list": {
"empty": "No existing projects"
},
"project-select-list-item": {
"tooltips": {
"favorite": "Toggle favorite",
"delete": "Delete"
}
},
"project-plugin-item": {
"version": "version",
"latest": "latest",
"official": "Official",
"installed": "Installed"
},
"status-bar": {
"project": {
"tooltip": "Current project<br><i>Click to toggle Project Manager</i>",
"empty": "No project"
},
"path": {
"tooltip": "Current Working Folder"
},
"log": {
"tooltip": "Logs<br><i>Click to toggle Vue CLI logs</i>",
"empty": "No logs yet"
}
}
},
"mixins": {
"progress": {
"creating": "Creating project...",
"git-init": "Initializing git repository...",
"plugins-install": "Installing Vue CLI plugins. This might take a while...",
"invoking-generators": "Invoking generators...",
"deps-install": "Installing additional dependencies...",
"completion-hooks": "Running completion hooks...",
"fetch-remote-preset": "Fetching remote preset...",
"done": "Successfully created project",
"plugin-install": "Installing {arg0}",
"plugin-uninstall": "Uninstalling {arg0}",
"plugin-invoke": "Invoking {arg0}"
}
},
"views": {
"project-select": {
"title": "Vue Project Manager",
"tabs": {
"projects": "Projects",
"create": "Create",
"import": "Import"
},
"buttons": {
"create": "Create a new project here",
"import": "Import this folder"
}
},
"project-create": {
"title": "Create a new project",
"tabs": {
"details": {
"title": "Details",
"form": {
"folder": {
"label": "Project folder",
"placeholder": "my-app",
"tooltip": "Change base folder",
"action": "Select this folder"
},
"manager": {
"label": "Project manager",
"default": "Default"
},
"options": {
"label": "Additional options",
"description": "Overwrite target folder if it exists"
}
},
"buttons": {
"cancel": "Cancel",
"next": "Next"
},
"modal": {
"title": "Cancel and reset project creation",
"body": "Are you sure you want to reset the project creation?",
"buttons": {
"back": "Go back",
"clear": "Clear project"
}
}
},
"presets": {
"title": "Presets",
"description": "A preset is an association of plugins and configurations. After you've selected features, you can optionally save it as a preset so that you can reuse it for future projects, without having to reconfigure everything again.",
"select": "Select a preset",
"buttons": {
"previous": "Previous",
"next": "Next",
"create": "Create Project"
},
"modal": {
"title": "Configure Remote preset",
"body": "Available soon..."
}
},
"features": {
"title": "Features",
"description": "You will be able to add features after the project is created.",
"enable": "Enable features",
"buttons": {
"previous": "Previous",
"next": "Next",
"create": "Create Project"
}
},
"configuration": {
"title": "Configuration",
"buttons": {
"previous": "Previous",
"create": "Create Project"
},
"modal": {
"title": "Save as a new preset",
"body": {
"title": "Preset name",
"subtitle": "Save the features and configuration into a new preset"
},
"buttons": {
"cancel": "Cancel",
"continue": "Continue without saving",
"create": "Create a new preset"
}
}
}
}
},
"project-plugins": {
"title": "Project plugins",
"button": "Add plugin",
"heading": "Installed plugins"
},
"project-plugins-add": {
"title": "Add a plugin",
"plugin": "plugin",
"tabs": {
"search": {
"label": "Search",
"not-found": "Not results found",
"buttons": {
"cancel": "Cancel",
"install": "Install {target}"
}
},
"configuration": {
"label": "Configuration",
"heading": "Installation of {target}",
"buttons": {
"cancel": "Cancel",
"finish": "Finish installation"
}
}
},
"modal": {
"title": "Uninstall {target}?",
"body": "Do you want to uninstall the {target} plugin?",
"buttons": {
"back": "Go back",
"cancel": "Cancel without uninstalling",
"uninstall": "Uninstall"
}
}
},
"project-configuration": {
"title": "Project configuration"
},
"project-tasks": {
"title": "Project tasks"
}
}
}

View File

@@ -0,0 +1,220 @@
{
"components": {
"folder-explorer": {
"toolbar": {
"tooltips": {
"parent-folder": "親フォルダを開く",
"edit-path": "パスを編集する",
"favorite": "お気に入りをトグル",
"favorite-folders": "お気に入りフォルダ",
"refresh": "リフレッシュ"
},
"placeholder": "フォルダへのフルパスを入力する",
"empty": "まだお気に入りフォルダがありません。"
}
},
"instant-search-input": {
"placeholder": "プラグインを検索する"
},
"list-item-info": {
"more-info": "詳細情報"
},
"logger-view": {
"title": "ログ",
"empty": "まだログはありません",
"buttons": {
"clear": "ログをクリアする",
"scroll": "一番下にスクロールする",
"close": "閉じる"
}
},
"progress-screen": {
"close": "閉じる"
},
"project-nav": {
"tooltips": {
"plugins": "プラグイン",
"configuration": "設定",
"tasks": "タスク"
}
},
"project-select-list": {
"empty": "プロジェクトが存在しません"
},
"project-select-list-item": {
"tooltips": {
"favorite": "お気に入りをトグル",
"delete": "削除する"
}
},
"project-plugin-item": {
"version": "バージョン",
"latest": "最新",
"official": "公式",
"installed": "インストール済み"
},
"status-bar": {
"project": {
"tooltip": "現在のプロジェクト<br><i>プロジェクトマネージャにトグルするにはクリック</i>",
"empty": "プロジェクトなし"
},
"path": {
"tooltip": "現在の作業フォルダ"
},
"log": {
"tooltip": "ログ<br><i>Vue CLI のログをトグルするにはクリック</i>",
"empty": "まだログはありません"
}
}
},
"mixins": {
"progress": {
"creating": "プロジェクトを作成中...",
"git-init": "Git リポジトリを初期化中...",
"plugins-install": "Vue CLI プラグインをインストール中。これは時間がかかるかもしれません...",
"invoking-generators": "ジェネレータを起動中...",
"deps-install": "追加依存関係をインストール中...",
"completion-hooks": "完了フックを実行中...",
"fetch-remote-preset": "リモートプリセットのフェッチング...",
"done": "プロジェクトを作成しました",
"plugin-install": "{arg0} をインストール中",
"plugin-uninstall": "{arg0} をアンインストール中",
"plugin-invoke": "{arg0} を起動中"
}
},
"views": {
"project-select": {
"title": "Vue プロジェクトマネージャ",
"tabs": {
"projects": "プロジェクト",
"create": "作成",
"import": "インポート"
},
"buttons": {
"create": "ここに新しいプロジェクトを作成する",
"import": "このフォルダをインポートする"
}
},
"project-create": {
"title": "新しいプロジェクトを作成する",
"tabs": {
"details": {
"title": "詳細",
"form": {
"folder": {
"label": "プロジェクトフォルダ",
"placeholder": "my-app",
"tooltip": "ベースフォルダを変更する",
"action": "このフォルダを選択する"
},
"manager": {
"label": "プロジェクトマネージャ",
"default": "デフォルト"
},
"options": {
"label": "追加オプション",
"description": "存在する場合はターゲットフォルダを上書きする"
}
},
"buttons": {
"cancel": "キャンセル",
"next": "次へ"
},
"modal": {
"title": "プロジェクト作成のキャンセルとリセット",
"body": "プロジェクト作成をリセットしますか?",
"buttons": {
"back": "戻る",
"clear": "プロジェクトをクリア"
}
}
},
"presets": {
"title": "プリセット",
"description": "プリセットはプラグインと設定の関連付けです。機能を選択した後に、必要に応じてプリセットとして保存することができます。これにより、すべてを再設定することなく、次のプロジェクトに再利用できるようになります。",
"select": "プリセットを選択する",
"buttons": {
"previous": "前へ",
"next": "次へ",
"create": "プロジェクトを作成する"
},
"modal": {
"title": "リモートプリセットを設定する",
"body": "間もなく利用できます..."
}
},
"features": {
"title": "機能",
"description": "プロジェクトが作成された後に機能を追加することができます。",
"enable": "機能の有効化",
"buttons": {
"previous": "前へ",
"next": "次へ",
"create": "プロジェクトを作成する"
}
},
"configuration": {
"title": "設定",
"buttons": {
"previous": "前へ",
"create": "プロジェクトを作成する"
},
"modal": {
"title": "新しいプロジェクトを保存する",
"body": {
"title": "プリセット名",
"subtitle": "新しいプリセットに機能と設定を保存する"
},
"buttons": {
"cancel": "キャンセル",
"continue": "保存なしで続ける",
"create": "プロジェクトを作成する"
}
}
}
}
},
"project-plugins": {
"title": "プロジェクトプラグイン",
"button": "プラグインを追加する",
"heading": "インストールされたプラグイン"
},
"project-plugins-add": {
"title": "プラグインを追加する",
"plugin": "プラグイン",
"tabs": {
"search": {
"label": "検索",
"not-found": "結果が見つかりません",
"buttons": {
"cancel": "キャンセル",
"install": "{target} をインストール"
}
},
"configuration": {
"label": "設定",
"heading": "{target} の設定",
"buttons": {
"cancel": "キャンセル",
"finish": "インストールを終了する"
}
}
},
"modal": {
"title": "{target} をアンインストールしますか?",
"body": "{target} プラグインをアンインストールしたいですか?",
"buttons": {
"back": "戻る",
"cancel": "アンインストールなしでキャンセル",
"uninstall": "アンインストール"
}
}
},
"project-configuration": {
"title": "プロジェクト設定"
},
"project-tasks": {
"title": "プロジェクトタスク"
}
}
}

View File

@@ -1,6 +1,7 @@
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import i18n from './i18n'
import { apolloProvider } from './vue-apollo'
import VueUi from '@vue/ui'
import InstantSearch from 'vue-instantsearch'
@@ -19,6 +20,7 @@ Vue.config.productionTip = false
const app = new Vue({
provide: apolloProvider.provide(),
router,
i18n,
...App
})

View File

@@ -2,20 +2,6 @@ import PROGRESS from '../graphql/progress.gql'
import PROGRESS_CHANGED from '../graphql/progressChanged.gql'
import PROGRESS_REMOVED from '../graphql/progressRemoved.gql'
const messages = {
'creating': 'Creating project...',
'git-init': 'Initializing git repository...',
'plugins-install': 'Installing CLI plugins. This might take a while...',
'invoking-generators': 'Invoking generators...',
'deps-install': 'Installing additional dependencies...',
'completion-hooks': 'Running completion hooks...',
'fetch-remote-preset': `Fetching remote preset...`,
'done': 'Successfully created project',
'plugin-install': 'Installing {{arg0}}',
'plugin-uninstall': 'Uninstalling {{arg0}}',
'plugin-invoke': 'Invoking {{arg0}}'
}
// @vue/component
export default {
props: {
@@ -80,16 +66,13 @@ export default {
if (!this.progress) return null
const { status } = this.progress
let message = messages[status]
if (message && this.progress.args) {
const values = {}
if (this.progress.args) {
for (let i = 0, l = this.progress.args.length; i < l; i++) {
message = message.replace(
new RegExp(`{{arg${i}}}`, 'g'),
this.progress.args[i]
)
values[`arg${i}`] = this.progress.args[i]
}
}
return message || status || ''
return this.$t(`mixins.progress.${status}`, values) || status || ''
}
}
}

View File

@@ -1,7 +1,7 @@
<template>
<div class="project-configuration page">
<ContentView
title="Project configuration"
:title="$t('views.project-configuration.title')"
>
WIP
</ContentView>

View File

@@ -2,23 +2,23 @@
<div class="project-create page">
<div class="content">
<StepWizard
title="Create a new project"
:title="$t('views.project-create.title')"
class="frame"
>
<template slot-scope="{ next, previous }">
<VueTab
id="details"
label="Details"
:label="$t('views.project-create.tabs.details.title')"
icon="subject"
>
<div class="content vue-ui-disable-scroll">
<div class="project-details vue-ui-grid col-1 big-gap">
<VueFormField
title="Project folder"
:title="$t('views.project-create.tabs.details.form.folder.label')"
>
<VueInput
v-model="formData.folder"
placeholder="my-app"
:placeholder="$t('views.project-create.tabs.details.form.folder.placeholder')"
icon-left="folder"
class="big"
/>
@@ -38,14 +38,14 @@
<VueButton
icon-left="edit"
class="icon-button"
v-tooltip="'Change base directory'"
v-tooltip="$t('views.project-create.tabs.details.form.folder.tooltip')"
:to="{
name: 'project-select',
query: {
title: 'Create a new project',
title: $t('views.project-create.title'),
tab: 'create',
hideTabs: true,
action: 'Select this folder'
action: $t('views.project-create.tabs.details.form.folder.action')
}
}"
/>
@@ -54,14 +54,14 @@
</VueFormField>
<VueFormField
title="Package manager"
:title="$t('views.project-create.tabs.details.form.manager.label')"
>
<VueSelect
v-model="formData.packageManager"
>
<VueSelectButton
:value="undefined"
label="Default"
:label="$t('views.project-create.tabs.details.form.manager.default')"
/>
<VueSelectButton
value="npm"
@@ -75,13 +75,13 @@
</VueFormField>
<VueFormField
title="Additional options"
:title="$t('views.project-create.tabs.details.form.options.label')"
>
<VueSwitch
v-model="formData.force"
class="extend-left"
>
Overwrite target directory if it exists
{{ $t('views.project-create.tabs.details.form.options.description') }}
</VueSwitch>
</VueFormField>
</div>
@@ -90,14 +90,14 @@
<div class="actions-bar">
<VueButton
icon-left="close"
label="Cancel"
:label="$t('views.project-create.tabs.details.buttons.cancel')"
class="big"
@click="showCancel = true"
/>
<VueButton
icon-right="arrow_forward"
label="Next"
:label="$t('views.project-create.tabs.details.buttons.next')"
class="big primary"
:disabled="!detailsValid"
@click="next()"
@@ -107,7 +107,7 @@
<VueTab
id="presets"
label="Presets"
:label="$t('views.project-create.tabs.presets.title')"
icon="check_circle"
:disabled="!detailsValid"
lazy
@@ -115,10 +115,12 @@
<div class="content vue-ui-disable-scroll">
<div class="vue-ui-text info banner">
<VueIcon icon="info" class="big"/>
<span>A preset is an association of plugins and configurations. After you've selected features, you can optionally save it as a preset so that you can reuse it for future projects, without having to reconfigure everything again.</span>
<span>{{ $t('views.project-create.tabs.presets.description') }}</span>
</div>
<div class="cta-text">Select a preset</div>
<div class="cta-text">
{{ $t('views.project-create.tabs.presets.select') }}
</div>
<template v-if="projectCreation">
<ProjectPresetItem
@@ -140,7 +142,7 @@
<div class="actions-bar">
<VueButton
icon-left="arrow_back"
label="Previous"
:label="$t('views.project-create.tabs.presets.buttons.previous')"
class="big"
@click="previous()"
/>
@@ -148,7 +150,7 @@
<VueButton
v-if="manual"
icon-right="arrow_forward"
label="Next"
:label="$t('views.project-create.tabs.presets.buttons.next')"
class="big primary"
:disabled="!presetValid"
@click="next()"
@@ -156,7 +158,7 @@
<VueButton
v-else
icon-left="done"
label="Create project"
:label="$t('views.project-create.tabs.presets.buttons.create')"
class="big primary"
@click="createWithoutSaving()"
/>
@@ -165,7 +167,7 @@
<VueTab
id="features"
label="Features"
:label="$t('views.project-create.tabs.features.title')"
icon="device_hub"
:disabled="!detailsValid || !presetValid || !manual"
lazy
@@ -173,10 +175,12 @@
<div class="content vue-ui-disable-scroll">
<div class="vue-ui-text info banner">
<VueIcon icon="info" class="big"/>
<span>You will be able to add features after the project is created.</span>
<span>{{ $t('views.project-create.tabs.features.description') }}</span>
</div>
<div class="cta-text">Enable features</div>
<div class="cta-text">
{{ $t('views.project-create.tabs.features.enable') }}
</div>
<template v-if="projectCreation">
<ProjectFeatureItem
@@ -191,7 +195,7 @@
<div class="actions-bar">
<VueButton
icon-left="arrow_back"
label="Previous"
:label="$t('views.project-create.tabs.features.buttons.previous')"
class="big"
@click="previous()"
/>
@@ -199,14 +203,14 @@
<VueButton
v-if="enabledPrompts.length"
icon-right="arrow_forward"
label="Next"
:label="$t('views.project-create.tabs.features.buttons.next')"
class="big primary"
@click="next()"
/>
<VueButton
v-else
icon-left="done"
label="Create project"
:label="$t('views.project-create.tabs.features.buttons.create')"
class="big primary"
@click="showSavePreset = true"
/>
@@ -243,7 +247,7 @@
<VueTab
id="config"
label="Configuration"
:label="$t('views.project-create.tabs.configuration.title')"
icon="settings_applications"
:disabled="!detailsValid || !presetValid || !manual || !enabledPrompts.length"
lazy
@@ -258,14 +262,14 @@
<div class="actions-bar">
<VueButton
icon-left="arrow_back"
label="Previous"
:label="$t('views.project-create.tabs.configuration.buttons.previous')"
class="big"
@click="previous()"
/>
<VueButton
icon-left="done"
label="Create project"
:label="$t('views.project-create.tabs.configuration.buttons.create')"
class="big primary"
:disabled="!configurationValid"
@click="showSavePreset = true"
@@ -278,38 +282,40 @@
<VueModal
v-if="showRemotePreset"
title="Configure Remote preset"
:title="$t('views.project-create.tabs.presets.modal.title')"
class="medium"
@close="showRemotePreset = false"
>
<div class="default-body">
<div class="vue-ui-empty">
<VueIcon icon="cake" class="large"/>
<div>Available soon...</div>
<div>
{{ $t('views.project-create.tabs.presets.modal.body') }}
</div>
</div>
</div>
</VueModal>
<VueModal
v-if="showCancel"
title="Cancel and reset project creation"
:title="$t('views.project-create.tabs.details.modal.title')"
class="small"
@close="showCancel = false"
>
<div class="default-body">
Are you sure you want to reset the project creation?
{{ $t('views.project-create.tabs.details.modal.body') }}
</div>
<div slot="footer" class="actions space-between">
<VueButton
label="Go back"
:label="$t('views.project-create.tabs.details.modal.buttons.back')"
class="flat"
@click="showCancel = false"
/>
<VueButton
:to="{ name: 'project-select' }"
label="Clear project"
:label="$t('views.project-create.tabs.details.modal.buttons.clear')"
icon-left="delete_forever"
class="danger"
@click="reset()"
@@ -319,14 +325,14 @@
<VueModal
v-if="showSavePreset"
title="Save as a new preset"
:title="$t('views.project-create.tabs.configuration.modal.title')"
class="small"
@close="showSavePreset = false"
>
<div class="default-body">
<VueFormField
title="Preset name"
subtitle="Save the features and configuration into a new preset"
:title="$t('views.project-create.tabs.configuration.modal.body.title')"
:subtitle="$t('views.project-create.tabs.configuration.modal.body.subtitle')"
>
<VueInput
v-model="formData.save"
@@ -337,19 +343,19 @@
<div slot="footer" class="actions end">
<VueButton
label="Cancel"
:label="$t('views.project-create.tabs.configuration.modal.buttons.cancel')"
class="flat"
@click="showSavePreset = false"
/>
<VueButton
label="Continue without saving"
:label="$t('views.project-create.tabs.configuration.modal.buttons.continue')"
class="flat"
@click="createWithoutSaving()"
/>
<VueButton
label="Create a new preset"
:label="$t('views.project-create.tabs.configuration.modal.buttons.create')"
icon-left="save"
class="primary"
:disabled="!formData.save"

View File

@@ -1,12 +1,12 @@
<template>
<div class="project-plugins page">
<ContentView
title="Project plugins"
:title="$t('views.project-plugins.title')"
>
<template slot="header">
<VueButton
icon-left="add"
label="Add plugin"
:label="$t('views.project-plugins.button')"
class="primary"
:to="{ name: 'project-plugins-add' }"
/>
@@ -17,7 +17,7 @@
fetch-policy="cache-and-network"
>
<template slot-scope="{ result: { data, loading } }">
<div class="cta-text">Installed plugins</div>
<div class="cta-text">{{ $t('views.project-plugins.heading') }}</div>
<VueLoadingIndicator
v-if="loading"

View File

@@ -2,14 +2,14 @@
<div class="project-plugins-add page">
<div class="content">
<StepWizard
title="Add a plugin"
:title="$t('views.project-plugins-add.title')"
class="frame"
:tab-id.sync="tabId"
>
<template slot-scope="{ next, previous }">
<VueTab
id="search"
label="Search"
:label="$t('views.project-plugins-add.tabs.search.label')"
icon="search"
disabled
>
@@ -48,7 +48,7 @@
<ais-no-results>
<div class="vue-ui-empty">
<VueIcon icon="search" class="huge"/>
<div>No results found</div>
<div>{{ $t('views.project-plugins-add.tabs.search.not-found') }}</div>
</div>
</ais-no-results>
<InstantSearchPagination/>
@@ -58,7 +58,7 @@
<div class="actions-bar no-padding-x">
<VueButton
icon-left="close"
label="Cancel"
:label="$t('views.project-plugins-add.tabs.search.buttons.cancel')"
class="big"
@click="close()"
/>
@@ -69,7 +69,7 @@
<VueButton
icon-left="file_download"
:label="`Install ${selectedId || 'plugin'}`"
:label="$t('views.project-plugins-add.tabs.search.buttons.install', { target: selectedId || $t('views.project-plugins-add.plugin') })"
class="big primary"
:disabled="!selectedId"
@click="installPlugin()"
@@ -79,14 +79,13 @@
<VueTab
id="config"
label="Configuration"
:label="$t('views.project-plugins-add.tabs.configuration.label')"
icon="settings_applications"
disabled
lazy
>
<div class="content vue-ui-disable-scroll">
<div class="cta-text">Installation of {{ pluginId }}</div>
<div class="cta-text">{{ $t('views.project-plugins-add.tabs.configuration.heading', { target: pluginId }) }}</div>
<PromptsList
:prompts="enabledPrompts"
@answer="answerPrompt"
@@ -96,14 +95,14 @@
<div class="actions-bar no-padding-x">
<VueButton
icon-left="arrow_back"
label="Cancel"
:label="$t('views.project-plugins-add.tabs.configuration.buttons.cancel')"
class="big"
@click="showCancelInstall = true"
/>
<VueButton
icon-left="done"
label="Finish installation"
:label="$t('views.project-plugins-add.tabs.configuration.buttons.finish')"
class="big primary"
:disabled="!configurationValid"
@click="invokePlugin()"
@@ -116,29 +115,29 @@
<VueModal
v-if="showCancelInstall"
:title="`Uninstall ${pluginId}?`"
:title="$t('views.project-plugins-add.modal.title', { target: pluginId })"
class="small"
@close="showCancelInstall = false"
>
<div class="default-body">
Do you want to uninstall the {{ pluginId }} plugin?
{{ $t('views.project-plugins-add.modal.body', { target: pluginId }) }}
</div>
<div slot="footer" class="actions space-between">
<VueButton
label="Go back"
:label="$t('views.project-plugins-add.modal.buttons.back')"
class="flat"
@click="showCancelInstall = false"
/>
<VueButton
label="Cancel without uninstalling"
:label="$t('views.project-plugins-add.modal.buttons.cancel')"
class="flat"
@click="cancelInstall()"
/>
<VueButton
label="Uninstall"
:label="$t('views.project-plugins-add.modal.buttons.uninstall')"
icon-left="delete_forever"
class="danger"
@click="uninstallPlugin()"

View File

@@ -2,13 +2,13 @@
<div class="project-select page">
<StepWizard
:tab-id.sync="tab"
:title="$route.query.title || 'Vue Project Manager'"
:title="$route.query.title || $t('views.project-select.title')"
:hide-tabs="!!hideTabs"
class="frame"
>
<VueTab
id="existing"
label="Projects"
:label="$t('views.project-select.tabs.projects')"
icon="storage"
>
<ProjectSelectList/>
@@ -16,7 +16,7 @@
<VueTab
id="create"
label="Create"
:label="$t('views.project-select.tabs.create')"
icon="add_box"
>
<div class="content">
@@ -26,7 +26,7 @@
<div class="actions-bar center">
<VueButton
icon-left="add"
:label="$route.query.action || 'Create a new project here'"
:label="$route.query.action || $t('views.project-select.buttons.create')"
class="big primary"
:to="{ name: 'project-create' }"
/>
@@ -35,7 +35,7 @@
<VueTab
id="import"
label="Import"
:label="$t('views.project-select.tabs.import')"
icon="unarchive"
>
<div class="content">
@@ -45,7 +45,7 @@
<div class="actions-bar center">
<VueButton
icon-left="unarchive"
:label="$route.query.action || 'Import this folder'"
:label="$route.query.action || $t('views.project-select.buttons.import')"
class="big primary"
:disabled="!folderCurrent.isVueProject"
@click="importProject()"

View File

@@ -1,7 +1,7 @@
<template>
<div class="project-tasks page">
<ContentView
title="Project tasks"
:title="$t('views.project-tasks.title')"
>
WIP
</ContentView>