tabby/tabby-plugin-manager/src/components/pluginsSettingsTab.component.pug
2022-01-09 11:28:14 +01:00

127 lines
6.4 KiB
Plaintext

.d-flex.mb-3
h3(translate) Plugins
button.btn.btn-secondary.btn-sm.ml-auto((click)='openPluginsFolder()')
i.fas.fa-folder
span(translate) Plugins folder
.alert.alert-danger(*ngIf='errorMessage')
strong {{ 'Error in {plugin}:'|translate:{plugin: erroredPlugin} }}
pre {{errorMessage}}
ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
li(ngbNavItem)
a(ngbNavLink, translate) Available
ng-template(ngbNavContent)
.input-group.mb-3.mt-3
.input-group-prepend
.input-group-text
i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='!availablePluginsReady')
i.fas.fa-fw.fa-search(*ngIf='availablePluginsReady')
input.form-control(
type='text',
[(ngModel)]='_1',
(ngModelChange)='searchAvailable(_1)',
placeholder='Search plugins'
)
ngb-accordion.mb-4(*ngIf='availablePlugins$', [closeOthers]='true')
ng-container(*ngFor='let plugin of (availablePlugins$|async)')
ngb-panel(*ngIf='!isAlreadyInstalled(plugin)')
ng-template(ngbPanelTitle)
.text-left
strong.d-block {{plugin.name}}
small.d-block.text-muted {{plugin.description}}
ng-template(ngbPanelContent)
.row
.col-4
button.btn.btn-primary.btn-block.justify-content-center(
(click)='installPlugin(plugin)',
[disabled]='busy.has(plugin.name)'
)
i.fas.fa-fw.fa-cloud-download(*ngIf='busy.get(plugin.name) != BusyState.Installing')
i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='busy.get(plugin.name) == BusyState.Installing')
span.ml-2(translate) Get
button.btn.btn-secondary.btn-block.justify-content-center(
*ngIf='plugin.homepage',
(click)='showPluginHomepage(plugin)'
)
i.fas.fa-fw.fa-external-link-alt
span.ml-2(translate) Homepage
.col-8
ng-container(*ngTemplateOutlet='pluginInfo; context: { plugin }')
.mt-2 {{plugin.description}}
li(ngbNavItem)
a(ngbNavLink, translate) Installed
ng-template(ngbNavContent)
ngb-accordion.mb-4([closeOthers]='true')
ng-container(*ngFor='let plugin of pluginManager.installedPlugins')
ngb-panel
ng-template(ngbPanelTitle)
.text-left.mr-auto
div
strong {{plugin.name}}
small.text-muted.ml-2(*ngIf='plugin.isBuiltin', translate) Built-in
small.text-warning.ml-2(*ngIf='!isPluginEnabled(plugin)', translate) Disabled
small.d-block.text-muted {{plugin.description}}
button.btn.btn-primary.ml-2(
*ngIf='knownUpgrades[plugin.name]',
(click)='upgradePlugin(plugin)',
[disabled]='busy.has(plugin.name)'
)
i.fas.fa-fw.fa-arrow-up(*ngIf='busy.get(plugin.name) != BusyState.Installing')
i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='busy.get(plugin.name) == BusyState.Installing')
span {{ 'Upgrade to {version}'|translate:{version: knownUpgrades[plugin.name].version} }}
ng-template(ngbPanelContent)
.row
.col-4
button.btn.btn-warning.btn-block.justify-content-center(
(click)='togglePlugin(plugin)',
*ngIf='isPluginEnabled(plugin)',
[disabled]='!canDisablePlugin(plugin)',
translate
) Disable
button.btn.btn-success.btn-block.justify-content-center(
(click)='togglePlugin(plugin)',
*ngIf='canDisablePlugin(plugin) && !isPluginEnabled(plugin)',
translate
) Enable
button.btn.btn-danger.btn-block.justify-content-center(
(click)='uninstallPlugin(plugin)',
*ngIf='!plugin.isBuiltin',
[disabled]='busy.has(plugin.name)'
)
i.fas.fa-fw.fa-trash(*ngIf='busy.get(plugin.name) != BusyState.Uninstalling')
i.fas.fa-fw.fa-circle-notch.fa-spin(*ngIf='busy.get(plugin.name) == BusyState.Uninstalling')
span(translate) Uninstall
.col-8
ng-container(*ngTemplateOutlet='pluginInfo; context: { plugin }')
.mt-2 {{plugin.description}}
ng-template(#pluginInfo, let-plugin='plugin')
.row.align-items-center
.col-4
strong(translate) Version
.col-8
span {{plugin.version}}
.row.align-items-center
.col-4
strong(translate) Author
.col-8
.badge.badge-success(*ngIf='plugin.isOfficial')
i.fas.fa-check
span.ml-1(translate) Official
a.btn.btn-link.px-0.w-auto((click)='showPluginInfo(plugin)', *ngIf='!plugin.isOfficial')
span {{plugin.author}}
i.fas.fa-fw.fa-external-link-alt.ml-2
.mb-4([ngbNavOutlet]='nav')