mirror of
https://github.com/portainer/portainer.git
synced 2025-08-08 07:15:23 +02:00
refactor(icons): replace fa icons [EE-4459] (#7907)
refactor(icons): remove fontawesome EE-4459 refactor(icon) replace feather with lucide EE-4472
This commit is contained in:
parent
9dfac98a26
commit
d78b762f7b
498 changed files with 2102 additions and 2817 deletions
|
@ -301,18 +301,6 @@ angular
|
|||
},
|
||||
};
|
||||
|
||||
var initEndpoint = {
|
||||
name: 'portainer.init.endpoint',
|
||||
url: '/endpoint',
|
||||
views: {
|
||||
'content@': {
|
||||
templateUrl: './views/init/endpoint/initEndpoint.html',
|
||||
controller: 'InitEndpointController',
|
||||
controllerAs: 'ctrl',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
var initAdmin = {
|
||||
name: 'portainer.init.admin',
|
||||
url: '/admin',
|
||||
|
@ -440,7 +428,6 @@ angular
|
|||
$stateRegistryProvider.register(groupCreation);
|
||||
$stateRegistryProvider.register(home);
|
||||
$stateRegistryProvider.register(init);
|
||||
$stateRegistryProvider.register(initEndpoint);
|
||||
$stateRegistryProvider.register(initAdmin);
|
||||
$stateRegistryProvider.register(registries);
|
||||
$stateRegistryProvider.register(registry);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<a class="ml-5 vertical-center be-indicator" href="{{ $ctrl.url }}" target="_blank" rel="noopener" ng-if="$ctrl.limitedToBE">
|
||||
<ng-transclude></ng-transclude>
|
||||
<pr-icon icon="'briefcase'" feather="true" class-name="'icon icon-sm vertical-center'"></pr-icon>
|
||||
<pr-icon icon="'briefcase'" class-name="'space-right be-indicator-icon'"></pr-icon>
|
||||
<span class="be-indicator-label">Business Edition Feature</span>
|
||||
</a>
|
||||
|
|
|
@ -9,8 +9,7 @@ export function buildOption<T extends number | string>(
|
|||
label: string,
|
||||
description: string,
|
||||
value: T,
|
||||
feature?: FeatureId,
|
||||
featherIcon?: IconProps['featherIcon']
|
||||
feature?: FeatureId
|
||||
): BoxSelectorOption<T> {
|
||||
return { id, icon, label, description, value, feature, featherIcon };
|
||||
return { id, icon, label, description, value, feature };
|
||||
}
|
||||
|
|
|
@ -7,7 +7,10 @@
|
|||
{{ $ctrl.titleText }}
|
||||
</span>
|
||||
<span class="small" style="float: right" ng-if="$ctrl.dismissAction">
|
||||
<a ng-click="$ctrl.dismissAction()"><i class="fa fa-times"></i> dismiss</a>
|
||||
<a ng-click="$ctrl.dismissAction()">
|
||||
<pr-icon icon="'x'"></pr-icon>
|
||||
dismiss</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -26,7 +26,7 @@
|
|||
ng-disabled="$ctrl.state.selectedItemCount === 0"
|
||||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
Remove
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="datatable">
|
||||
<table class="table table-hover">
|
||||
<div class="col-sm-12">
|
||||
<i class="fa fa-search searchIcon" aria-hidden="true"></i>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -41,7 +41,8 @@
|
|||
<span ng-if="item.Inherited" class="text-muted small" style="margin-left: 2px"><code style="font-size: 85% !important">inherited</code></span>
|
||||
</td>
|
||||
<td>
|
||||
<i class="fa" ng-class="item.Type === 'user' ? 'fa-user' : 'fa-users'" aria-hidden="true" style="margin-right: 2px"></i>
|
||||
<pr-icon ng-if="item.Type === 'user'" icon="'user'" class-name="'mr-0.5'"></pr-icon>
|
||||
<pr-icon ng-if="!item.Type === 'user'" icon="'users'" class-name="'mr-0.5'"></pr-icon>
|
||||
{{ item.Type }}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<input type="radio" id="access_administrators" ng-model="$ctrl.formData.Ownership" value="administrators" />
|
||||
<label for="access_administrators" data-cy="portainer-selectAdminAccess">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'eye-off'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'eye-off'"></pr-icon>
|
||||
Administrators
|
||||
</div>
|
||||
<p class="boxselector_content">I want to restrict the management of this resource to administrators only</p>
|
||||
|
@ -32,7 +32,7 @@
|
|||
<input type="radio" id="access_restricted" ng-model="$ctrl.formData.Ownership" value="restricted" />
|
||||
<label for="access_restricted" data-cy="portainer-selectRestrictedAccess">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'users'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'users'"></pr-icon>
|
||||
Restricted
|
||||
</div>
|
||||
<p class="boxselector_content"> I want to restrict the management of this resource to a set of users and/or teams </p>
|
||||
|
@ -42,7 +42,7 @@
|
|||
<input type="radio" id="access_private" ng-model="$ctrl.formData.Ownership" value="private" />
|
||||
<label for="access_private">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'eye-off'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'eye-off'"></pr-icon>
|
||||
Private
|
||||
</div>
|
||||
<p> I want to restrict this resource to be manageable by myself only </p>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<input type="radio" id="access_restricted" ng-model="$ctrl.formData.Ownership" value="restricted" />
|
||||
<label for="access_restricted">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'users'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'users'"></pr-icon>
|
||||
|
||||
Restricted
|
||||
</div>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<rd-widget ng-if="ctrl.availableUsersAndTeams && ctrl.accessControlledEntity">
|
||||
<rd-widget-header icon="user-check" feather-icon="true" title-text="Create access"></rd-widget-header>
|
||||
<rd-widget-header icon="user-check" title-text="Create access"></rd-widget-header>
|
||||
<rd-widget-body>
|
||||
<form class="form-horizontal">
|
||||
<div ng-if="ctrl.entityType !== 'registry'" class="form-group">
|
||||
<span class="col-sm-12 small text-warning">
|
||||
<p class="vertical-center">
|
||||
<pr-icon icon="'alert-circle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" mode="'warning'"></pr-icon>
|
||||
Adding user access will require the affected user(s) to logout and login for the changes to be taken into account.
|
||||
</p>
|
||||
</span>
|
||||
|
@ -48,7 +48,7 @@
|
|||
data-cy="access-createAccess"
|
||||
>
|
||||
<span ng-hide="ctrl.state.actionInProgress" class="vertical-center">
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus'"></pr-icon>
|
||||
Create access
|
||||
</span>
|
||||
<span ng-show="ctrl.state.actionInProgress">Creating access...</span>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<information-panel title-text="Information">
|
||||
<span class="small">
|
||||
<p class="text-muted">
|
||||
<i class="fa fa-flask orange-icon" aria-hidden="true" style="margin-right: 2px"></i>
|
||||
<pr-icon icon="'flask-conical'" mode="'warning'"></pr-icon>
|
||||
This is a beta feature.
|
||||
</p>
|
||||
</span>
|
||||
|
|
|
@ -5,7 +5,7 @@ angular.module('portainer.app').directive('buttonSpinner', function buttonSpinne
|
|||
spinning: '=buttonSpinner',
|
||||
},
|
||||
transclude: true,
|
||||
template: '<ng-transclude></ng-transclude><span ng-show="spinning"><i class="fa fa-circle-notch fa-spin" style="margin-left: 2px;"></i> </span>',
|
||||
template: '<ng-transclude></ng-transclude><span ng-show="spinning"><pr-icon icon="\'loader-2\'" class-name="\'animate-spin-slow ml-0.5\'"></pr-icon> </span>',
|
||||
};
|
||||
|
||||
return directive;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<span>
|
||||
<button type="button" class="btn btn-link nopadding" ng-click="$ctrl.copyValueText()" title="Copy Value">
|
||||
<pr-icon icon="'clipboard'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'clipboard'"></pr-icon>
|
||||
Copy
|
||||
</button>
|
||||
<span ng-class="{ 'copy-button-fadeout': $ctrl.state.isFading }" class="copy-button-copy-text">
|
||||
<pr-icon icon="'check'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'check'"></pr-icon>
|
||||
copied
|
||||
</span>
|
||||
</span>
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
<div ng-show="commonCustomTemplateForm.template_title.$invalid">
|
||||
<div class="mt-2 small text-warning">
|
||||
<div ng-messages="commonCustomTemplateForm.template_title.$error">
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" feather="true" mode="'warning'"></pr-icon> Title is required. </p>
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Title is required. </p>
|
||||
<p class="vertical-center" ng-message="pattern">
|
||||
<pr-icon icon="'alert-triangle'" feather="true" mode="'warning'"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').
|
||||
</p>
|
||||
</div>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<div class="mt-2 small text-warning">
|
||||
<div ng-show="commonCustomTemplateForm.description.$invalid">
|
||||
<div ng-messages="commonCustomTemplateForm.description.$error">
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" feather="true" mode="'warning'"></pr-icon> Description is required.</p>
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Description is required.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true" class-name="'icon-nested-blue'" mode="'primary'"></pr-icon>
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
Custom Templates
|
||||
</div>
|
||||
<div class="searchBar vertical-center !mr-0">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -20,7 +22,7 @@
|
|||
</div>
|
||||
<div class="actionBar">
|
||||
<button type="button" class="btn btn-sm btn-primary" ui-state="$ctrl.createPath">
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus'"></pr-icon>
|
||||
Add Custom Template
|
||||
</button>
|
||||
</div>
|
||||
|
@ -36,11 +38,11 @@
|
|||
<template-item-actions>
|
||||
<div ng-if="$ctrl.isEditAllowed(template)" class="vertical-center">
|
||||
<a ui-state="$ctrl.editPath" ui-state-params="{id: template.Id}" ng-click="$event.stopPropagation();" class="btn btn-secondary btn-sm vertical-center">
|
||||
<pr-icon icon="'edit'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'edit'"></pr-icon>
|
||||
Edit
|
||||
</a>
|
||||
<button class="btn btn-dangerlight btn-sm vertical-center" ng-click="$ctrl.onDeleteClick(template.Id); $event.stopPropagation();">
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar vertical-center">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
<span>{{ $ctrl.titleText }}</span>
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class="searchIcon"></pr-icon>
|
||||
<pr-icon icon="'search'" class="searchIcon"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -27,11 +27,11 @@
|
|||
ng-disabled="$ctrl.state.selectedItemCount === 0"
|
||||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" class-name="'icon-white'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" class-name="'icon-white'"></pr-icon>
|
||||
<span>Remove</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-primary vertical-center" ng-click="$ctrl.onClickAdd()">
|
||||
<pr-icon icon="'plus'" feather="true" class-name="'icon-white'"></pr-icon>
|
||||
<pr-icon icon="'plus'" class-name="'icon-white'"></pr-icon>
|
||||
<span>Add access token</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<span class="setting" ng-class="{ 'setting-active': $ctrl.state.isOpen }" uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.state.isOpen">
|
||||
<span uib-dropdown-toggle aria-label="Columns">
|
||||
<pr-icon icon="'columns'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'columns'"></pr-icon>
|
||||
</span>
|
||||
<div class="dropdown-menu dropdown-menu-right" uib-dropdown-menu>
|
||||
<div class="tableMenu">
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class="searchIcon"></pr-icon>
|
||||
<pr-icon icon="'search'" class="searchIcon"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -30,11 +30,11 @@
|
|||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
data-cy="endpoint-removeEndpointButton"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" class-name="'icon-white'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" class-name="'icon-white'"></pr-icon>
|
||||
<span>Remove</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-primary h-fit" ng-click="$ctrl.setReferrer()" ui-sref="portainer.wizard.endpoints" data-cy="endpoint-addEndpointButton">
|
||||
<pr-icon icon="'plus'" feather="true" class-name="'icon-white'"></pr-icon>
|
||||
<pr-icon icon="'plus'" class-name="'icon-white'"></pr-icon>
|
||||
<span>Add environment</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -116,7 +116,7 @@
|
|||
<td>{{ item.GroupName }}</td>
|
||||
<td>
|
||||
<a ui-sref="portainer.endpoints.endpoint.access({id: item.Id})">
|
||||
<pr-icon icon="'users'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'users'"></pr-icon>
|
||||
Manage access
|
||||
</a>
|
||||
</td>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<div class="filter-button">
|
||||
<span uib-dropdown-toggle class="table-filter vertical-center" ng-class="{ 'filter-active': $ctrl.isEnabled() }">
|
||||
Filter
|
||||
<pr-icon ng-if="$ctrl.isEnabled()" icon="'check'" feather="true"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.isEnabled()" icon="'filter'" feather="true"></pr-icon>
|
||||
<pr-icon ng-if="$ctrl.isEnabled()" icon="'check'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.isEnabled()" icon="'filter'"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
<div class="dropdown-menu" style="min-width: 0" uib-dropdown-menu>
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -29,11 +29,11 @@
|
|||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
data-cy="endpointGroup-removeGroupButton"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
Remove
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-primary h-fit" ui-sref="portainer.groups.new" data-cy="endpointGroup-addGroupButton">
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>Add group
|
||||
<pr-icon icon="'plus'"></pr-icon>Add group
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -76,7 +76,7 @@
|
|||
<td>
|
||||
<div class="vertical-center">
|
||||
<a ui-sref="portainer.groups.group.access({id: item.Id})">
|
||||
<pr-icon icon="'users'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'users'"></pr-icon>
|
||||
Manage access
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -2,13 +2,11 @@ import angular from 'angular';
|
|||
import 'angular-utils-pagination';
|
||||
|
||||
import { datatableTitlebar } from './titlebar';
|
||||
import { datatableSortIcon } from './sort-icon';
|
||||
import { datatablePagination } from './pagination';
|
||||
import { datatableFilter } from './filter';
|
||||
|
||||
export default angular
|
||||
.module('portainer.shared.datatable', ['angularUtils.directives.dirPagination'])
|
||||
.component('datatableTitlebar', datatableTitlebar)
|
||||
.component('datatableSortIcon', datatableSortIcon)
|
||||
.component('datatablePagination', datatablePagination)
|
||||
.component('datatableFilter', datatableFilter).name;
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -30,10 +30,10 @@
|
|||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
data-cy="registry-removeRegistryButton"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>Remove
|
||||
<pr-icon icon="'trash-2'"></pr-icon>Remove
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-primary h-fit vertical-center !ml-0" ui-sref="portainer.registries.new" data-cy="registry-addRegistryButton">
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>Add registry
|
||||
<pr-icon icon="'plus'"></pr-icon>Add registry
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -107,10 +107,10 @@
|
|||
ng-if="$ctrl.canManageAccess(item)"
|
||||
ng-click="$ctrl.redirectToManageAccess(item)"
|
||||
>
|
||||
<pr-icon icon="'users'" feather="true"></pr-icon>Manage access
|
||||
<pr-icon icon="'users'"></pr-icon>Manage access
|
||||
</button>
|
||||
<be-feature-indicator feature="$ctrl.limitedFeature" ng-if="$ctrl.canBrowse(item)">
|
||||
<span class="text-muted" style="padding-right: 5px"> <pr-icon icon="'search'" feather="true"></pr-icon> Browse </span>
|
||||
<span class="text-muted" style="padding-right: 5px"> <pr-icon icon="'search'"></pr-icon> Browse </span>
|
||||
</be-feature-indicator>
|
||||
|
||||
<span ng-if="!$ctrl.canBrowse(item) && !$ctrl.canManageAccess(item)"> - </span>
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
export default class datatableSortIconController {
|
||||
isCurrentSortOrder() {
|
||||
return this.selectedSortKey === this.key;
|
||||
}
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
<i
|
||||
class="fa fa-sort-alpha-down"
|
||||
ng-class="{
|
||||
'fa-sort-alpha-down': !$ctrl.reverseOrder,
|
||||
'fa-sort-alpha-up': $ctrl.reverseOrder,
|
||||
}"
|
||||
aria-hidden="true"
|
||||
ng-if="$ctrl.isCurrentSortOrder()"
|
||||
></i>
|
|
@ -1,11 +0,0 @@
|
|||
import controller from './datatable-sort-icon.controller';
|
||||
|
||||
export const datatableSortIcon = {
|
||||
bindings: {
|
||||
key: '@',
|
||||
selectedSortKey: '@',
|
||||
reverseOrder: '<',
|
||||
},
|
||||
controller,
|
||||
templateUrl: './datatable-sort-icon.html',
|
||||
};
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="'layers'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'layers'"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center !mr-0">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -30,7 +30,7 @@
|
|||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
data-cy="stack-removeStackButton"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>Remove
|
||||
<pr-icon icon="'trash-2'"></pr-icon>Remove
|
||||
</button>
|
||||
<button
|
||||
ng-disabled="!$ctrl.createEnabled"
|
||||
|
@ -40,14 +40,14 @@
|
|||
authorization="PortainerStackCreate"
|
||||
data-cy="stack-addStackButton"
|
||||
>
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>Add stack
|
||||
<pr-icon icon="'plus'"></pr-icon>Add stack
|
||||
</button>
|
||||
</div>
|
||||
<div class="settings">
|
||||
<datatable-columns-visibility columns="$ctrl.columnVisibility.columns" on-change="($ctrl.onColumnVisibilityChange)"></datatable-columns-visibility>
|
||||
<span class="setting ml-2" ng-class="{ 'setting-active': $ctrl.settings.open }" uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.settings.open">
|
||||
<span uib-dropdown-toggle aria-label="Settings">
|
||||
<pr-icon icon="'more-vertical'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'more-vertical'"></pr-icon>
|
||||
</span>
|
||||
<div class="dropdown-menu dropdown-menu-right" uib-dropdown-menu>
|
||||
<div class="tableMenu">
|
||||
|
@ -72,7 +72,7 @@
|
|||
<option value="300">5min</option>
|
||||
</select>
|
||||
<span>
|
||||
<pr-icon id="refreshRateChange" icon="'check'" feather="true" mode="'success'" size="'sm'"></pr-icon>
|
||||
<pr-icon id="refreshRateChange" icon="'check'" mode="'success'" style="display: none"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -106,8 +106,8 @@
|
|||
<div>
|
||||
<span uib-dropdown-toggle ng-class="['table-filter vertical-center !ml-1', { 'filter-active': $ctrl.filters.state.enabled }]">
|
||||
Filter
|
||||
<pr-icon ng-if="$ctrl.filters.state.enabled" icon="'check'" feather="true" size="'sm'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.filters.state.enabled" icon="'filter'" feather="true" size="'sm'"></pr-icon>
|
||||
<pr-icon ng-if="$ctrl.filters.state.enabled" icon="'check'" size="'sm'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.filters.state.enabled" icon="'filter'" size="'sm'"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
<div class="dropdown-menu" uib-dropdown-menu>
|
||||
|
@ -197,7 +197,7 @@
|
|||
uib-tooltip="This stack was created inside an environment that is no longer registered inside Portainer."
|
||||
>
|
||||
Orphaned
|
||||
<pr-icon icon="'alert-circle'" feather="true" class-name="'ml-0.5'" mode="'warning'"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" class-name="'ml-0.5'" mode="'warning'"></pr-icon>
|
||||
</span>
|
||||
<span
|
||||
ng-if="item.External"
|
||||
|
@ -208,7 +208,7 @@
|
|||
uib-tooltip="This stack was created outside of Portainer. Control over this stack is limited."
|
||||
>
|
||||
Limited
|
||||
<pr-icon icon="'alert-circle'" feather="true" class-name="'ml-0.5'" mode="'warning'"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" class-name="'ml-0.5'" mode="'warning'"></pr-icon>
|
||||
</span>
|
||||
<span ng-if="item.Regular">Total</span>
|
||||
</td>
|
||||
|
@ -222,7 +222,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<span class="vertical-center">
|
||||
<pr-icon ng-attr-icon="item.ResourceControl.Ownership | ownershipicon" feather="true" class-name="'icon ml-0.5'"></pr-icon>
|
||||
<pr-icon ng-attr-icon="item.ResourceControl.Ownership | ownershipicon" class-name="'icon ml-0.5'"></pr-icon>
|
||||
{{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}
|
||||
</span>
|
||||
</td>
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap w-full relative">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -26,7 +26,7 @@
|
|||
ng-disabled="$ctrl.state.selectedItemCount === 0"
|
||||
ng-click="$ctrl.onRemove($ctrl.state.selectedItems)"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>Remove
|
||||
<pr-icon icon="'trash-2'"></pr-icon>Remove
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -21,7 +21,7 @@
|
|||
</div>
|
||||
<div class="actionBar !gap-3">
|
||||
<button type="button" class="btn btn-sm btn-dangerlight h-fit" ng-disabled="$ctrl.state.selectedItemCount === 0" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)">
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>Remove
|
||||
<pr-icon icon="'trash-2'"></pr-icon>Remove
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle">
|
||||
<pr-icon icon="$ctrl.icon" feather="$ctrl.featherIcon" class-name="space-right"></pr-icon>
|
||||
<pr-icon icon="$ctrl.icon" class-name="'space-right'"></pr-icon>
|
||||
{{ $ctrl.title }}
|
||||
<be-feature-indicator feature="$ctrl.feature"></be-feature-indicator>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,6 @@ export const datatableTitlebar = {
|
|||
icon: '@',
|
||||
title: '@',
|
||||
feature: '@',
|
||||
featherIcon: '<',
|
||||
},
|
||||
templateUrl: './datatable-titlebar.html',
|
||||
};
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -29,7 +29,7 @@
|
|||
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
|
||||
data-cy="user-removeUserButton"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>Remove
|
||||
<pr-icon icon="'trash-2'"></pr-icon>Remove
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -88,9 +88,9 @@
|
|||
</td>
|
||||
<td>
|
||||
<span class="vertical-center">
|
||||
<pr-icon icon="'svg-usercircle'" ng-if="item.Role === 1 && !item.isTeamLeader"></pr-icon>
|
||||
<pr-icon icon="'user'" ng-if="item.Role !== 1 && item.isTeamLeader" feather="true"></pr-icon>
|
||||
<pr-icon icon="'user-plus'" ng-if="item.Role !== 1 && !item.isTeamLeader" feather="true"></pr-icon>
|
||||
<pr-icon icon="'user'" ng-if="item.Role === 1 && !item.isTeamLeader"></pr-icon>
|
||||
<pr-icon icon="'user'" ng-if="item.Role !== 1 && item.isTeamLeader"></pr-icon>
|
||||
<pr-icon icon="'user-plus'" ng-if="item.Role !== 1 && !item.isTeamLeader"></pr-icon>
|
||||
{{ item.RoleName ? item.RoleName : '-' }}
|
||||
</span>
|
||||
</td>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="row" ng-if="$ctrl.isDemo">
|
||||
<div class="col-lg-12 col-md-12 col-xs-12">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="fa-exclamation-triangle" title-text="Feature not available"> </rd-widget-header>
|
||||
<rd-widget-header icon="alert-triangle" title-text="Feature not available"> </rd-widget-header>
|
||||
<rd-widget-body>
|
||||
<span class="small text-muted">{{ $ctrl.content }}</span>
|
||||
</rd-widget-body>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<input type="radio" id="tls_client_ca" ng-model="$ctrl.formData.TLSMode" value="tls_client_ca" />
|
||||
<label for="tls_client_ca">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'shield'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'shield'"></pr-icon>
|
||||
TLS with server and client verification
|
||||
</div>
|
||||
<p>Use client certificates and server verification</p>
|
||||
|
@ -41,7 +41,7 @@
|
|||
<input type="radio" id="tls_client_noca" ng-model="$ctrl.formData.TLSMode" value="tls_client_noca" />
|
||||
<label for="tls_client_noca">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'shield'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'shield'"></pr-icon>
|
||||
TLS with client verification only
|
||||
</div>
|
||||
<p>Use client certificates without server verification</p>
|
||||
|
@ -51,7 +51,7 @@
|
|||
<input type="radio" id="tls_ca" ng-model="$ctrl.formData.TLSMode" value="tls_ca" />
|
||||
<label for="tls_ca">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'shield'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'shield'"></pr-icon>
|
||||
TLS with server verification only
|
||||
</div>
|
||||
<p>Only verify the server certificate</p>
|
||||
|
@ -61,7 +61,7 @@
|
|||
<input type="radio" id="tls_only" ng-model="$ctrl.formData.TLSMode" value="tls_only" />
|
||||
<label for="tls_only">
|
||||
<div class="boxselector_header">
|
||||
<pr-icon icon="'shield'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'shield'"></pr-icon>
|
||||
TLS only
|
||||
</div>
|
||||
<p>No server/client verification</p>
|
||||
|
@ -81,8 +81,8 @@
|
|||
<button type="button" class="btn btn-sm btn-primary" ngf-select ng-model="$ctrl.formData.TLSCACert">Select file</button>
|
||||
<span class="space-left">
|
||||
{{ $ctrl.formData.TLSCACert.name }}
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSCACert && $ctrl.formData.TLSCACert === $ctrl.endpoint.TLSConfig.TLSCACert" mode="'success'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSCACert" mode="'danger'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSCACert && $ctrl.formData.TLSCACert === $ctrl.endpoint.TLSConfig.TLSCACert" mode="'success'"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSCACert" mode="'danger'"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -96,8 +96,8 @@
|
|||
<button type="button" class="btn btn-sm btn-primary" ngf-select ng-model="$ctrl.formData.TLSCert">Select file</button>
|
||||
<span class="space-left">
|
||||
{{ $ctrl.formData.TLSCert.name }}
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSCert && $ctrl.formData.TLSCert === $ctrl.endpoint.TLSConfig.TLSCert" mode="'success'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSCert" mode="'danger'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSCert && $ctrl.formData.TLSCert === $ctrl.endpoint.TLSConfig.TLSCert" mode="'success'"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSCert" mode="'danger'"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -109,8 +109,8 @@
|
|||
<button type="button" class="btn btn-sm btn-primary" ngf-select ng-model="$ctrl.formData.TLSKey">Select file</button>
|
||||
<span class="space-left">
|
||||
{{ $ctrl.formData.TLSKey.name }}
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSKey && $ctrl.formData.TLSKey === $ctrl.endpoint.TLSConfig.TLSKey" mode="'success'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSKey" mode="'danger'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'check'" ng-if="$ctrl.formData.TLSKey && $ctrl.formData.TLSKey === $ctrl.endpoint.TLSConfig.TLSKey" mode="'success'"></pr-icon>
|
||||
<pr-icon icon="'x'" ng-if="!$ctrl.formData.TLSKey" mode="'danger'"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -16,18 +16,18 @@
|
|||
<div ng-if="$ctrl.mode == 'advanced'" class="environment-variables-panel--advanced">
|
||||
<div class="col-sm-12 text-clickable">
|
||||
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center" ng-click="$ctrl.switchEnvMode()">
|
||||
<pr-icon icon="'list'" feather="true"></pr-icon> Simple mode
|
||||
<pr-icon icon="'list'"></pr-icon> Simple mode
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'"></pr-icon>
|
||||
Switch to simple mode to define variables line by line, or load from .env file
|
||||
</div>
|
||||
<div class="form-group" style="margin-left: 1px">
|
||||
<code-editor identifier="environment-variables-editor" placeholder="e.g. key=value" value="$ctrl.editorText" yml="false" on-change="($ctrl.editorUpdate)"></code-editor>
|
||||
</div>
|
||||
<div class="col-sm-12 small text-muted" ng-if="$ctrl.showHelpMessage">
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'"></pr-icon>
|
||||
Environment changes will not take effect until redeployment occurs manually or via webhook.
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
<div class="form-group" style="margin-top: 5px" ng-show="$ctrl[$ctrl.formName].name.$invalid">
|
||||
<div class="col-sm-12 small">
|
||||
<div ng-messages="$ctrl[$ctrl.formName].name.$error">
|
||||
<p ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon> Name is required. </p>
|
||||
<p ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Name is required. </p>
|
||||
<p ng-message="pattern">
|
||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
This field must consist alphanumeric characters, '-' or '_', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-var', or 'MY_VAR123').
|
||||
</p>
|
||||
</div>
|
||||
|
@ -43,14 +43,17 @@
|
|||
<div class="form-group" ng-show="$ctrl[$ctrl.formName].value.$invalid">
|
||||
<div class="col-sm-12 small text-warning">
|
||||
<div ng-messages="$ctrl[$ctrl.formName].value.$error">
|
||||
<p ng-message="pattern"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Value is invalid. </p>
|
||||
<p ng-message="pattern">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
Value is invalid.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn btn-dangerlight" type="button" ng-click="$ctrl.onRemove($ctrl.index)">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</ng-form>
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
<div class="environment-variables-simple-mode">
|
||||
<div class="col-sm-12">
|
||||
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0" ng-click="$ctrl.onSwitchModeClick()">
|
||||
<pr-icon icon="'edit'" feather="true"></pr-icon> Advanced mode
|
||||
</button>
|
||||
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0" ng-click="$ctrl.onSwitchModeClick()"> <pr-icon icon="'edit'"></pr-icon> Advanced mode </button>
|
||||
</div>
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'"></pr-icon>
|
||||
Switch to advanced mode to copy & paste multiple variables
|
||||
</div>
|
||||
<div class="col-sm-12 environment-variables-simple-mode--actions">
|
||||
<button type="button" class="btn btn-sm btn-default" ng-click="$ctrl.add()"> <pr-icon icon="'plus'" feather="true"></pr-icon> Add an environment variable </button>
|
||||
<button type="button" class="btn btn-sm btn-default" ng-click="$ctrl.add()"> <pr-icon icon="'plus'"></pr-icon> Add an environment variable </button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-default"
|
||||
|
@ -19,10 +17,10 @@
|
|||
ngf-max-size="1MB"
|
||||
ngf-model-invalid="errorFile"
|
||||
>
|
||||
<pr-icon icon="'upload'" feather="true"></pr-icon> Load variables from .env file
|
||||
<pr-icon icon="'upload'"></pr-icon> Load variables from .env file
|
||||
</button>
|
||||
<span class="space-left" ng-if="errorFile.$error == 'maxSize'">
|
||||
<i class="fa fa-times red-icon space-right" aria-hidden="true"></i>
|
||||
<pr-icon icon="'x'" mode="'warning'" class-name="'space-right'"></pr-icon>
|
||||
File too large! Try uploading a file smaller than 1MB
|
||||
</span>
|
||||
</div>
|
||||
|
@ -36,7 +34,7 @@
|
|||
></environment-variables-simple-mode-item>
|
||||
</div>
|
||||
<div class="col-sm-12 small text-muted" ng-if="$ctrl.ngModel.length > 0 && $ctrl.showHelpMessage">
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" mode="'primary'"></pr-icon>
|
||||
Environment changes will not take effect until redeployment occurs manually or via webhook.
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
<input type="text" name="name" class="form-control" ng-model="$ctrl.variable" ng-change="$ctrl.onChangePath($ctrl.variable)" required />
|
||||
</div>
|
||||
<button class="btn btn-dangerlight" type="button" ng-click="$ctrl.removeValue()" title="Remove">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
<div ng-show="$ctrl[$ctrl.formName].name.$invalid">
|
||||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl[$ctrl.formName].name.$error" class="mt-1">
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon> Path is required. </p>
|
||||
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Path is required. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
<label class="control-label text-left">Additional paths</label>
|
||||
</div>
|
||||
<div class="col-sm-9 pt-1">
|
||||
<span class="label label-default interactive vertical-center" ng-click="$ctrl.add()">
|
||||
<pr-icon icon="'plus'" size="'sm'" mode="'alt'" feather="true"></pr-icon> <span>add file</span>
|
||||
</span>
|
||||
<span class="label label-default interactive vertical-center" ng-click="$ctrl.add()"> <pr-icon icon="'plus'" size="'sm'" mode="'alt'"></pr-icon> <span>add file</span> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 form-inline">
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="small mt-1 mb-3" ng-if="$ctrl.model.RepositoryAuthentication && $ctrl.showAuthExplanation">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
<span class="text-muted">Enabling authentication will store the credentials and it is advisable to use a git service account</span>
|
||||
</div>
|
||||
<div ng-if="$ctrl.model.RepositoryAuthentication" class="row">
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="small vertical-center" ng-if="$ctrl.model.RepositoryAutomaticUpdates">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
<span class="text-warning"
|
||||
>Any changes to this stack or application made locally in Portainer will be overridden, which may cause service interruption. Do you wish to continue?</span
|
||||
>
|
||||
|
@ -38,10 +38,10 @@
|
|||
<div class="col-sm-8">
|
||||
<span class="text-muted"> {{ $ctrl.model.RepositoryWebhookURL | truncatelr }} </span>
|
||||
<button type="button" class="btn btn-sm btn-light btn-sm space-left vertical-center" ng-if="$ctrl.model.RepositoryWebhookURL" ng-click="$ctrl.copyWebhook()">
|
||||
<pr-icon icon="'copy'" size="'sm'" feather="true"></pr-icon> Copy link
|
||||
<pr-icon icon="'copy'" size="'sm'"></pr-icon> Copy link
|
||||
</button>
|
||||
<span>
|
||||
<pr-icon icon="'check'" mode="'success'" feather="true" style="display: none"></pr-icon>
|
||||
<pr-icon icon="'check'" mode="'success'" style="display: none"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -62,9 +62,9 @@
|
|||
<div class="form-group col-md-12 pt-1" ng-show="autoUpdateForm.repository_fetch_interval.$touched && autoUpdateForm.repository_fetch_interval.$invalid">
|
||||
<div class="small text-warning">
|
||||
<div ng-messages="autoUpdateForm.repository_fetch_interval.$error">
|
||||
<p ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon> This field is required.</p>
|
||||
<p ng-message="invalidIntervalFormat"> <pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon> Please enter a valid time interval.</p>
|
||||
<p ng-message="minimumInterval"> <pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon> Minimum interval is 1m</p>
|
||||
<p ng-message="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This field is required.</p>
|
||||
<p ng-message="invalidIntervalFormat"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Please enter a valid time interval.</p>
|
||||
<p ng-message="minimumInterval"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Minimum interval is 1m</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -97,11 +97,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="small vertical-center" ng-if="$ctrl.model.RepositoryAutomaticUpdates">
|
||||
<pr-icon icon="'info'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
<span class="text-muted">When enabled, enforces automatic deployment at each interval or webhook invocation.</span>
|
||||
</div>
|
||||
<div class="small vertical-center" ng-if="!$ctrl.model.RepositoryAutomaticUpdates">
|
||||
<pr-icon icon="'info'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
<span class="text-muted">When enabled, updates from the git repository will occur automatically at an interval or webhook.</span>
|
||||
</div>
|
||||
</ng-form>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<ng-form name="pathForm">
|
||||
<div class="form-group">
|
||||
<span class="col-sm-12 text-muted small vertical-center">
|
||||
<pr-icon icon="'info'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
<span
|
||||
>Indicate the path to the {{ $ctrl.deployMethod == 'compose' ? 'Compose' : 'Manifest' }} file from the root of your repository.
|
||||
<span ng-if="$ctrl.isDockerStandalone">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="form-group">
|
||||
<span class="col-sm-12 text-muted small vertical-center">
|
||||
<pr-icon icon="'info'" mode="'primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
<span>
|
||||
Specify a reference of the repository using the following syntax: branches with <code>refs/heads/branch_name</code> or tags with <code>refs/tags/tag_name</code>. If not
|
||||
specified, will use the default <code>HEAD</code> reference normally the <code>master</code> branch.
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="endpointGroupForm.group_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
<div class="col-sm-12">
|
||||
<p>
|
||||
<a class="small interactive" ng-click="$ctrl.state.showConfig = !$ctrl.state.showConfig">
|
||||
<i ng-class="['fa space-right', { 'fa-minus': $ctrl.state.showConfig, 'fa-plus': !$ctrl.state.showConfig }]" aria-hidden="true"></i>
|
||||
<pr-icon ng-if="$ctrl.state.showConfig" icon="'minus'" class-name="'mr-1'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.state.showConfig" icon="'plus'" class-name="'mr-1'"></pr-icon>
|
||||
{{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration
|
||||
</a>
|
||||
</p>
|
||||
|
@ -37,7 +38,10 @@
|
|||
analytics-category="kubernetes"
|
||||
analytics-event="kubernetes-application-edit-git-pull"
|
||||
>
|
||||
<span ng-show="!$ctrl.state.redeployInProgress"> <i class="fa fa-sync space-right" aria-hidden="true"></i> Pull and update application </span>
|
||||
<span ng-show="!$ctrl.state.redeployInProgress">
|
||||
<pr-icon icon="'refresh-cw'" class="!mr-1"></pr-icon>
|
||||
Pull and update application
|
||||
</span>
|
||||
<span ng-show="$ctrl.state.redeployInProgress">In progress...</span>
|
||||
</button>
|
||||
<button
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
<div class="col-sm-12">
|
||||
<p>
|
||||
<a class="small interactive" ng-click="$ctrl.state.showConfig = !$ctrl.state.showConfig">
|
||||
<i ng-class="['fa space-right', { 'fa-minus': $ctrl.state.showConfig, 'fa-plus': !$ctrl.state.showConfig }]" aria-hidden="true"></i>
|
||||
<pr-icon ng-if="$ctrl.state.showConfig" icon="'minus'" class-name="'mr-1'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.state.showConfig" icon="'plus'" class-name="'mr-1'"></pr-icon>
|
||||
{{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration
|
||||
</a>
|
||||
</p>
|
||||
|
@ -37,7 +38,10 @@
|
|||
analytics-category="kubernetes"
|
||||
analytics-event="kubernetes-application-edit-git-pull"
|
||||
>
|
||||
<span ng-show="!$ctrl.state.redeployInProgress"> <i class="fa fa-sync space-right" aria-hidden="true"></i> Pull and update application </span>
|
||||
<span ng-show="!$ctrl.state.redeployInProgress">
|
||||
<pr-icon icon="'refresh-cw'" class="!mr-1"></pr-icon>
|
||||
Pull and update application
|
||||
</span>
|
||||
<span ng-show="$ctrl.state.redeployInProgress">In progress...</span>
|
||||
</button>
|
||||
<button
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormEcr.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormEcr.registry_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -88,7 +88,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormEcr.registry_access_key.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -107,7 +107,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormEcr.registry_secret_access_key.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -126,11 +126,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormEcr.registry_region.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormAzure.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -34,7 +34,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormAzure.registry_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormAzure.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormAzure.registry_password.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormCustom.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormCustom.registry_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -75,7 +75,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormCustom.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormCustom.registry_password.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormDockerhub.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormDockerhub.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -58,7 +58,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormDockerhub.registry_password.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar vertical-center">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true" class-name="'icon-blue'"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon" class-name="'icon-blue'"></pr-icon>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class="searchIcon"></pr-icon>
|
||||
<pr-icon icon="'search'" class="searchIcon"></pr-icon>
|
||||
<input type="text" class="searchInput" ng-model="$ctrl.state.textFilter" ng-change="$ctrl.onTextFilterChange()" placeholder="Search..." auto-focus />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="registryFormGitlab.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="registryFormGitlab.registry_perso_acc_token.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -54,7 +54,7 @@
|
|||
ng-if="!$ctrl.state.overrideConfiguration"
|
||||
ng-click="$ctrl.state.overrideConfiguration = true;"
|
||||
>
|
||||
<pr-icon icon="'tool'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'wrench'"></pr-icon>
|
||||
Override default configuration
|
||||
</button>
|
||||
<button
|
||||
|
@ -63,7 +63,7 @@
|
|||
ng-if="$ctrl.state.overrideConfiguration"
|
||||
ng-click="$ctrl.state.overrideConfiguration = false; $ctrl.resetDefaults()"
|
||||
>
|
||||
<pr-icon icon="'settings'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'settings'"></pr-icon>
|
||||
Use default configuration
|
||||
</button>
|
||||
</div>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="registryFormGitlab.instance_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -102,7 +102,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="registryFormGitlab.registry_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -126,7 +126,7 @@
|
|||
<div class="form-group">
|
||||
<span class="col-sm-12 text-muted small"> Select the project's registries you want to manage. Portainer will create one registry for each selected project. </span>
|
||||
<span class="col-sm-12 text-muted small vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true" class-name="'icon-warning'"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" class-name="'icon-warning'"></pr-icon>
|
||||
If you can't select a project, make sure that registry feature is activated on it.
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormProGet.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormProGet.registry_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -62,7 +62,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormProGet.registry_base_url.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormProGet.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -99,7 +99,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormProGet.registry_password.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormQuay.registry_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
<p ng-message="used" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
A registry with the same name already exists.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -31,7 +31,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormQuay.registry_username.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -49,7 +49,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormQuay.registry_password.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.registryFormQuay.organisation_name.$error">
|
||||
<p ng-message="required" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'"></pr-icon>
|
||||
This field is required.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
<div class="col-sm-12 small text-warning">
|
||||
<div ng-messages="stackTemplateForm.template_name.$error">
|
||||
<p ng-message="pattern" class="vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
<span>This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').</span>
|
||||
</p>
|
||||
<p ng-message="required" class="vertical-center"><pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>This field is required.</p>
|
||||
<p ng-message="required" class="vertical-center"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>This field is required. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -69,12 +69,12 @@
|
|||
<button type="button" class="btn btn-default" ng-click="$ctrl.unselectTemplate($ctrl.template)">Hide</button>
|
||||
<div class="form-group" ng-if="$ctrl.state.formValidationError">
|
||||
<div class="col-sm-12 small text-danger" ng-if="$ctrl.state.formValidationError">
|
||||
<p class="vertical-center"><pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>{{ $ctrl.state.formValidationError }}</p>
|
||||
<p class="vertical-center"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>{{ $ctrl.state.formValidationError }} </p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="!$ctrl.state.deployable">
|
||||
<div class="col-sm-12 small text-danger" ng-if="!$ctrl.state.deployable">
|
||||
<p class="vertical-center"><pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>This template type cannot be deployed on this environment.</p>
|
||||
<p class="vertical-center"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>This template type cannot be deployed on this environment. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -17,7 +17,8 @@
|
|||
<div class="col-sm-12">
|
||||
<p>
|
||||
<a class="small interactive" ng-click="$ctrl.state.showConfig = !$ctrl.state.showConfig">
|
||||
<i ng-class="{ 'fa fa-minus space-right': $ctrl.state.showConfig, 'fa fa-plus space-right': !$ctrl.state.showConfig }" aria-hidden="true"></i>
|
||||
<pr-icon ng-if="$ctrl.state.showConfig" icon="'minus'" class-name="'mr-1'"></pr-icon>
|
||||
<pr-icon ng-if="!$ctrl.state.showConfig" icon="'plus'" class-name="'mr-1'"></pr-icon>
|
||||
{{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration
|
||||
</a>
|
||||
</p>
|
||||
|
@ -48,7 +49,10 @@
|
|||
analytics-event="docker-stack-pull-redeploy"
|
||||
analytics-category="docker"
|
||||
>
|
||||
<span ng-hide="$ctrl.state.redeployInProgress"> <i class="fa fa-sync space-right" aria-hidden="true"></i> Pull and redeploy </span>
|
||||
<span ng-hide="$ctrl.state.redeployInProgress">
|
||||
<pr-icon icon="'refresh-cw'" class="!mr-1"></pr-icon>
|
||||
Pull and redeploy
|
||||
</span>
|
||||
<span ng-show="$ctrl.state.redeployInProgress">In progress...</span>
|
||||
</button>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle">{{ $ctrl.title }}</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
<rd-widget>
|
||||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar">
|
||||
<div class="toolBarTitle"> <i class="fa fa-bolt" aria-hidden="true" style="margin-right: 2px"></i> {{ $ctrl.titleText }} </div>
|
||||
<div class="toolBarTitle">
|
||||
<pr-icon icon="'zap'" class-name="'mr-0.5'"></pr-icon>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="blocklist">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="row" ng-if="$ctrl.registry">
|
||||
<div class="col-lg-12 col-md-12 col-xs-12">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="radio" feather-icon="true" title-text="Registry"></rd-widget-header>
|
||||
<rd-widget-header icon="radio" title-text="Registry"></rd-widget-header>
|
||||
<rd-widget-body classes="no-padding">
|
||||
<table class="table">
|
||||
<tbody>
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
<button type="button" class="btn btn-link nopadding" ng-click="$ctrl.show = !$ctrl.show" title="Show/Hide value">
|
||||
<div ng-if="!$ctrl.show">
|
||||
<pr-icon icon="'eye-off'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'eye-off'"></pr-icon>
|
||||
Show</div
|
||||
>
|
||||
<div ng-if="$ctrl.show">
|
||||
<pr-icon icon="'eye'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'eye'"></pr-icon>
|
||||
Hide</div
|
||||
>
|
||||
</button>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
<div class="col-sm-12 small text-warning">
|
||||
<div ng-messages="dupStackForm.new_stack_name.$error">
|
||||
<p ng-message="pattern">
|
||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
<span>This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').</span>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -42,7 +42,10 @@
|
|||
style="margin-top: 7px; margin-left: 0"
|
||||
button-spinner="$ctrl.state.migrationInProgress"
|
||||
>
|
||||
<span ng-hide="$ctrl.state.migrationInProgress"> <i class="fa fa-long-arrow-alt-right space-right" aria-hidden="true"></i> Migrate </span>
|
||||
<span ng-hide="$ctrl.state.migrationInProgress">
|
||||
<pr-icon icon="'arrow-right'" class-name="'mr-1'"></pr-icon>
|
||||
Migrate
|
||||
</span>
|
||||
<span ng-show="$ctrl.state.migrationInProgress">Migration in progress...</span>
|
||||
</button>
|
||||
<button
|
||||
|
@ -52,7 +55,10 @@
|
|||
style="margin-top: 7px; margin-left: 0"
|
||||
button-spinner="$ctrl.state.duplicationInProgress"
|
||||
>
|
||||
<span ng-hide="$ctrl.state.duplicationInProgress"> <i class="fa fa-clone space-right" aria-hidden="true"></i> Duplicate </span>
|
||||
<span ng-hide="$ctrl.state.duplicationInProgress">
|
||||
<pr-icon icon="'copy'" class-name="'space-right'"></pr-icon>
|
||||
Duplicate
|
||||
</span>
|
||||
<span ng-show="$ctrl.state.duplicationInProgress">Duplication in progress...</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="blocklist-item-box">
|
||||
<!-- template-image -->
|
||||
<div class="vertical-center justify-center min-w-[56px]">
|
||||
<fallback-image src="$ctrl.model.Logo" fallback-icon="'svg-rocket'" class-name="'blocklist-item-logo'" size="'3xl'"></fallback-image>
|
||||
<fallback-image src="$ctrl.model.Logo" fallback-icon="'rocket'" class-name="'blocklist-item-logo'" size="'3xl'"></fallback-image>
|
||||
</div>
|
||||
<!-- !template-image -->
|
||||
<!-- template-details -->
|
||||
|
@ -15,7 +15,7 @@
|
|||
</span>
|
||||
<div class="inline-flex items-center space-left blocklist-item-subtitle">
|
||||
<div ng-if="$ctrl.model.Type != 3" class="vertical-center">
|
||||
<i class="fab fa-linux space-right" aria-hidden="true" ng-if="$ctrl.model.Platform === 1 || $ctrl.model.Platform === 'linux' || !$ctrl.model.Platform"></i>
|
||||
<pr-icon ng-if="$ctrl.model.Platform === 1 || $ctrl.model.Platform === 'linux' || !$ctrl.model.Platform" icon="'svg-linux'" class="mr-1"></pr-icon>
|
||||
<span ng-if="!$ctrl.model.Platform"> & </span>
|
||||
<pr-icon
|
||||
icon="'svg-microsoft'"
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true" class-name="'searchIcon'"></pr-icon>
|
||||
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
@ -22,7 +22,7 @@
|
|||
</div>
|
||||
<div class="actionBar !gap-3" ng-if="$ctrl.showAddAction">
|
||||
<button type="button" class="btn btn-sm btn-primary h-fit vertical-center !ml-0" ui-sref="docker.templates.new" data-cy="template-addTemplateButton">
|
||||
<pr-icon icon="'plus'" feather="true"></pr-icon>Add template
|
||||
<pr-icon icon="'plus'"></pr-icon>Add template
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="mt-6">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="sliders" feather-icon="true" title-text="User theme"></rd-widget-header>
|
||||
<rd-widget-header icon="sliders" title-text="User theme"></rd-widget-header>
|
||||
<rd-widget-body>
|
||||
<form class="form-horizontal">
|
||||
<box-selector radio-name="'theme'" value="$ctrl.state.userTheme" options="$ctrl.state.availableThemes" on-change="($ctrl.setTheme)"></box-selector>
|
||||
</form>
|
||||
<p class="mt-2 vertical-center">
|
||||
<pr-icon icon="'alert-circle'" class-name="'icon-primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" class-name="'icon-primary'"></pr-icon>
|
||||
Dark and High-contrast theme are experimental. Some UI components might not display properly.
|
||||
</p>
|
||||
</rd-widget-body>
|
||||
|
|
|
@ -10,7 +10,7 @@ export const rdWidgetCustomHeader = {
|
|||
<div class="row">
|
||||
<span class="pull-left">
|
||||
<img class="custom-header-ico space-right" ng-src="{{$ctrl.icon}}" ng-if="$ctrl.icon" alt="header-icon"></img>
|
||||
<i class="fa fa-rocket" aria-hidden="true" ng-if="!$ctrl.icon"></i>
|
||||
<pr-icon ng-if="!$ctrl.icon" icon="'rocket'"></pr-icon>
|
||||
<span class="text-muted"> {{$ctrl.titleText}} </span>
|
||||
</span>
|
||||
<span class="pull-right col-xs-6 col-sm-4" ng-transclude></span>
|
||||
|
|
|
@ -3,7 +3,6 @@ export const rdWidgetTitle = {
|
|||
bindings: {
|
||||
titleText: '@',
|
||||
icon: '@',
|
||||
featherIcon: '<',
|
||||
classes: '@?',
|
||||
parentClasses: '@?',
|
||||
},
|
||||
|
@ -15,7 +14,7 @@ export const rdWidgetTitle = {
|
|||
<div class="row">
|
||||
<span ng-class="$ctrl.classes" class="pull-left vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="$ctrl.icon" feather="$ctrl.featherIcon"></pr-icon>
|
||||
<pr-icon icon="$ctrl.icon"></pr-icon>
|
||||
</div>
|
||||
<span ng-transclude="title">{{ $ctrl.titleText }}</span>
|
||||
</span>
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
import moment from 'moment';
|
||||
import _ from 'lodash-es';
|
||||
import filesize from 'filesize';
|
||||
import { Eye, EyeOff, Users, Cloud } from 'lucide-react';
|
||||
|
||||
import { Eye, EyeOff, Users } from 'react-feather';
|
||||
import Kube from '@/assets/ico/kube.svg?c';
|
||||
import DockerIcon from '@/assets/ico/vendor/docker-icon.svg?c';
|
||||
import MicrosoftIcon from '@/assets/ico/vendor/microsoft-icon.svg?c';
|
||||
import NomadIcon from '@/assets/ico/vendor/nomad-icon.svg?c';
|
||||
import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';
|
||||
import { EnvironmentType } from '@/react/portainer/environments/types';
|
||||
|
||||
export function truncateLeftRight(text, max, left, right) {
|
||||
max = isNaN(max) ? 50 : max;
|
||||
|
@ -94,14 +99,23 @@ export function endpointTypeName(type) {
|
|||
}
|
||||
|
||||
export function environmentTypeIcon(type) {
|
||||
if (type === 3) {
|
||||
return 'fab fa-microsoft';
|
||||
} else if (type === 4) {
|
||||
return 'fa fa-cloud';
|
||||
} else if (type === 5 || type === 6 || type === 7) {
|
||||
return 'fas fa-dharmachakra';
|
||||
switch (type) {
|
||||
case EnvironmentType.Azure:
|
||||
return MicrosoftIcon;
|
||||
case EnvironmentType.EdgeAgentOnDocker:
|
||||
return Cloud;
|
||||
case EnvironmentType.AgentOnKubernetes:
|
||||
case EnvironmentType.EdgeAgentOnKubernetes:
|
||||
case EnvironmentType.KubernetesLocal:
|
||||
return Kube;
|
||||
case EnvironmentType.AgentOnDocker:
|
||||
case EnvironmentType.Docker:
|
||||
return DockerIcon;
|
||||
case EnvironmentType.EdgeAgentOnNomad:
|
||||
return NomadIcon;
|
||||
default:
|
||||
throw new Error(`type ${type}-${EnvironmentType[type]} is not supported`);
|
||||
}
|
||||
return 'fab fa-docker';
|
||||
}
|
||||
|
||||
export function ownershipIcon(ownership) {
|
||||
|
|
|
@ -6,7 +6,6 @@ export function UserAccessViewModel(data) {
|
|||
this.Inherited = false;
|
||||
this.Override = false;
|
||||
this.Role = { Id: 0, Name: '-' };
|
||||
this.icon = '<i class="fa fa-user" aria-hidden="true"></i>';
|
||||
}
|
||||
|
||||
// create TeamAccessViewModel from TeamViewModel
|
||||
|
@ -17,5 +16,4 @@ export function TeamAccessViewModel(data) {
|
|||
this.Inherited = false;
|
||||
this.Override = false;
|
||||
this.Role = { Id: 0, Name: '-' };
|
||||
this.icon = '<i class="fa fa-users" aria-hidden="true"></i>';
|
||||
}
|
||||
|
|
|
@ -16,24 +16,3 @@ export class PortainerEndpointInitFormValues {
|
|||
this.AzureAuthenticationKey = '';
|
||||
}
|
||||
}
|
||||
|
||||
class PortainerEndpointInitFormValueEndpointSection {
|
||||
constructor(value, title, classes, description) {
|
||||
this.Id = value;
|
||||
this.Value = value;
|
||||
this.Title = title;
|
||||
this.Classes = classes;
|
||||
this.Description = description;
|
||||
}
|
||||
}
|
||||
|
||||
export const PortainerEndpointInitFormValueEndpointSections = Object.freeze([
|
||||
new PortainerEndpointInitFormValueEndpointSection(PortainerEndpointConnectionTypes.DOCKER_LOCAL, 'Docker', 'fab fa-docker', 'Manage the local Docker environment'),
|
||||
new PortainerEndpointInitFormValueEndpointSection(
|
||||
PortainerEndpointConnectionTypes.KUBERNETES_LOCAL,
|
||||
'Kubernetes',
|
||||
'fas fa-dharmachakra',
|
||||
'Manage the local Kubernetes environment'
|
||||
),
|
||||
new PortainerEndpointInitFormValueEndpointSection(PortainerEndpointConnectionTypes.AGENT, 'Agent', 'fa fa-bolt', 'Connect to a Portainer agent'),
|
||||
]);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Edit } from 'react-feather';
|
||||
import { Edit } from 'lucide-react';
|
||||
|
||||
import { FeatureId } from '@/react/portainer/feature-flags/enums';
|
||||
import Microsoft from '@/assets/ico/vendor/microsoft.svg?c';
|
||||
|
@ -11,7 +11,6 @@ export const options = [
|
|||
{
|
||||
id: 'microsoft',
|
||||
icon: Microsoft,
|
||||
featherIcon: true,
|
||||
label: 'Microsoft',
|
||||
description: 'Microsoft OAuth provider',
|
||||
value: 'microsoft',
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
<div class="col-sm-9" ng-if="$ctrl.teams.length > 0">
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<p class="vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" mode="'primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
The default team option will be disabled when automatic team membership is enabled
|
||||
</p>
|
||||
</div>
|
||||
|
@ -75,7 +75,7 @@
|
|||
ng-disabled="!$ctrl.settings.DefaultTeamID || $ctrl.settings.OAuthAutoMapTeamMemberships"
|
||||
ng-if="$ctrl.teams.length > 0"
|
||||
>
|
||||
<pr-icon icon="'x'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'x'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -115,7 +115,7 @@
|
|||
<label class="col-sm-3 col-lg-2 control-label text-left"> Statically assigned teams </label>
|
||||
<div class="col-sm-9 col-lg-10">
|
||||
<span class="label label-default interactive vertical-center ml-4" ng-click="$ctrl.addTeamMembershipMapping()">
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add team mapping
|
||||
</span>
|
||||
|
||||
|
@ -137,12 +137,12 @@
|
|||
</select>
|
||||
</div>
|
||||
<button type="button" class="btn btn-md btn-danger" ng-click="$ctrl.removeTeamMembership($index)">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
|
||||
<div>
|
||||
<div class="small text-warning vertical-center mt-1" ng-show="!mapping.ClaimValRegex">
|
||||
<pr-icon icon="'alert-triangle'" feather="true" mode="'warning'"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
Claim value regex is required.
|
||||
</div>
|
||||
</div>
|
||||
|
@ -368,11 +368,11 @@
|
|||
<div class="form-group" ng-if="$ctrl.state.provider != 'custom'">
|
||||
<div class="col-sm-12">
|
||||
<a class="small interactive vertical-center" ng-if="!$ctrl.state.overrideConfiguration" ng-click="$ctrl.state.overrideConfiguration = true;">
|
||||
<pr-icon icon="'tool'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'wrench'"></pr-icon>
|
||||
Override default configuration
|
||||
</a>
|
||||
<a class="small interactive vertical-center" ng-if="$ctrl.state.overrideConfiguration" ng-click="$ctrl.useDefaultProviderConfiguration($ctrl.state.provider)">
|
||||
<pr-icon icon="'settings'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'settings'"></pr-icon>
|
||||
Use default configuration
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
<div>
|
||||
<div class="form-section-title mb-1">Access</div>
|
||||
<div class="vertical-center">
|
||||
<pr-icon icon="'info'" mode="'primary'" feather="true" size="'sm'" class="vertical-center"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'" size="'sm'" class="vertical-center"></pr-icon>
|
||||
<span class="small text-muted"> Effective role for each environment will be displayed for the selected user </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" class="vertical-center" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'" class="vertical-center"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput ml-1"
|
||||
|
@ -55,12 +55,8 @@
|
|||
<td
|
||||
>{{ item.TeamName ? 'Team' : 'User' }} <code ng-if="item.TeamName">{{ item.TeamName }}</code> access defined on {{ item.AccessLocation }}
|
||||
<code ng-if="item.GroupName">{{ item.GroupName }}</code>
|
||||
<a ng-if="!item.GroupName && $ctrl.isAdmin" ui-sref="portainer.endpoints.endpoint.access({id: item.EndpointId})"
|
||||
><pr-icon icon="'users'" feather="true"></pr-icon> Manage access
|
||||
</a>
|
||||
<a ng-if="item.GroupName && $ctrl.isAdmin" ui-sref="portainer.groups.group.access({id: item.GroupId})"
|
||||
><pr-icon icon="'users'" feather="true"></pr-icon> Manage access
|
||||
</a>
|
||||
<a ng-if="!item.GroupName && $ctrl.isAdmin" ui-sref="portainer.endpoints.endpoint.access({id: item.EndpointId})"><pr-icon icon="'users'"></pr-icon> Manage access </a>
|
||||
<a ng-if="item.GroupName && $ctrl.isAdmin" ui-sref="portainer.groups.group.access({id: item.GroupId})"><pr-icon icon="'users'"></pr-icon> Manage access </a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="!$ctrl.dataset">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="col-sm-12" style="margin-bottom: 0px">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="svg-userlock" feather-icon="true">
|
||||
<rd-widget-header icon="user-x">
|
||||
<header-title>
|
||||
Effective access viewer
|
||||
<be-feature-indicator feature="$ctrl.limitedFeature" class="space-left"></be-feature-indicator>
|
||||
|
|
|
@ -6,7 +6,6 @@ export const rolesDatatable = {
|
|||
controller,
|
||||
bindings: {
|
||||
titleText: '@',
|
||||
titleIcon: '@',
|
||||
dataset: '<',
|
||||
tableKey: '@',
|
||||
orderBy: '@',
|
||||
|
|
|
@ -3,10 +3,13 @@
|
|||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar vertical-center">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true" class="vertical-center" class-name="'icon-white icon-primary icon-nested-blue'"></pr-icon>{{ $ctrl.titleText }}
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="'file-code'"></pr-icon>
|
||||
</div>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" class="vertical-center" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'" class="vertical-center"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput ml-1"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<roles-datatable title-text="Roles" title-icon="svg-filecode" dataset="$ctrl.roles" table-key="roles"></roles-datatable>
|
||||
<roles-datatable title-text="Roles" dataset="$ctrl.roles" table-key="roles"></roles-datatable>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -83,29 +83,19 @@ export const componentsModule = angular
|
|||
)
|
||||
.component(
|
||||
'fallbackImage',
|
||||
r2a(FallbackImage, [
|
||||
'src',
|
||||
'fallbackIcon',
|
||||
'alt',
|
||||
'size',
|
||||
'className',
|
||||
'feather',
|
||||
])
|
||||
)
|
||||
.component(
|
||||
'prIcon',
|
||||
r2a(Icon, ['className', 'feather', 'icon', 'mode', 'size'])
|
||||
r2a(FallbackImage, ['src', 'fallbackIcon', 'alt', 'size', 'className'])
|
||||
)
|
||||
.component('prIcon', r2a(Icon, ['className', 'icon', 'mode', 'size']))
|
||||
.component('reactQueryDevTools', r2a(ReactQueryDevtoolsWrapper, []))
|
||||
.component(
|
||||
'dashboardItem',
|
||||
r2a(DashboardItem, ['featherIcon', 'icon', 'type', 'value', 'children'])
|
||||
r2a(DashboardItem, ['icon', 'type', 'value', 'children'])
|
||||
)
|
||||
.component(
|
||||
'datatableSearchbar',
|
||||
r2a(SearchBar, ['data-cy', 'onChange', 'value', 'placeholder'])
|
||||
)
|
||||
.component('badgeIcon', r2a(BadgeIcon, ['featherIcon', 'icon', 'size']))
|
||||
.component('badgeIcon', r2a(BadgeIcon, ['icon', 'size']))
|
||||
.component(
|
||||
'accessControlPanel',
|
||||
r2a(withUIRouter(withReactQuery(withCurrentUser(AccessControlPanel))), [
|
||||
|
|
|
@ -154,7 +154,7 @@ export function confirmContainerRecreation(
|
|||
checkbox.prop('disabled', true);
|
||||
const formCheck = box.find('.form-check');
|
||||
formCheck.prop('style', 'height: 45px;');
|
||||
const cannotPullImageMessage = `<div class="fa fa-exclamation-triangle text-warning"/>
|
||||
const cannotPullImageMessage = `<pr-icon icon="'alert-triangle'" mode="'warning'"/>
|
||||
<div class="inline-text text-warning">
|
||||
<span>Cannot pull latest as the image is inaccessible - either it no longer exists or the tag or name is no longer correct.
|
||||
</span>
|
||||
|
|
|
@ -15,7 +15,7 @@ toastr.options = {
|
|||
closeButton: true,
|
||||
progressBar: true,
|
||||
tapToDismiss: false,
|
||||
// custom button, using the feather icon x.svg inside
|
||||
// custom button, using the lucide icon x.svg inside
|
||||
closeHtml: `<button type="button"><svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="18"
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<div class="form-group">
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<p class="vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" mode="'primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
You can configure multiple AD Controllers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all
|
||||
use the same certificates).
|
||||
</p>
|
||||
|
@ -43,7 +43,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
Add additional server
|
||||
</button>
|
||||
</label>
|
||||
|
@ -66,7 +66,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="form-group">
|
||||
<label for="ldap_password" class="col-sm-3 col-lg-2 control-label text-left vertical-center">
|
||||
Connectivity check
|
||||
<pr-icon icon="'check'" feather="true" mode="'success'" ng-if="$ctrl.state.successfulConnectivityCheck"></pr-icon>
|
||||
<pr-icon icon="'x'" feather="true" mode="'danger'" ng-if="$ctrl.state.failedConnectivityCheck"></pr-icon>
|
||||
<pr-icon icon="'check'" mode="'success'" ng-if="$ctrl.state.successfulConnectivityCheck"></pr-icon>
|
||||
<pr-icon icon="'x'" mode="'danger'" ng-if="$ctrl.state.failedConnectivityCheck"></pr-icon>
|
||||
</label>
|
||||
<div class="col-sm-9 col-lg-10">
|
||||
<button
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
limited-feature-tabindex="-1"
|
||||
/>
|
||||
<button class="btn btn-md btn-danger" type="button" ng-click="$ctrl.onRemoveClick($index)" ng-if="$index > 0">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -79,7 +79,7 @@
|
|||
limited-feature-class=" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}"
|
||||
limited-feature-disabled
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add group search configuration
|
||||
</button>
|
||||
</div>
|
||||
|
@ -96,7 +96,7 @@
|
|||
Fetch Admin Group(s)
|
||||
</button>
|
||||
<span ng-if="$ctrl.groups && $ctrl.groups.length === 0" class="ml-6 vertical-center">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
No groups found
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -31,13 +31,13 @@
|
|||
<div class="col-sm-8 col-md-10 vertical-center">
|
||||
<input type="text" class="form-control" id="ldap_group_filter_{{ $index }}" ng-model="config.GroupFilter" placeholder="(objectClass=account)" />
|
||||
<button class="btn btn-md btn-danger" type="button" ng-click="$ctrl.onRemoveClick($index)" ng-if="$index > 0">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<span class="col-sm-12 small" style="color: #ffa719">
|
||||
<pr-icon icon="'briefcase'" feather="true" class-name="'icon icon-xs vertical-center'"></pr-icon>
|
||||
<pr-icon icon="'briefcase'" class-name="'icon icon-xs vertical-center'"></pr-icon>
|
||||
Users removal synchronize between groups and teams only available in
|
||||
<a href="https://www.portainer.io/features?from=custom-login-banner" target="_blank">business edition.</a>
|
||||
<portainer-tooltip
|
||||
|
@ -52,7 +52,7 @@
|
|||
<div class="form-group" style="margin-top: 10px">
|
||||
<div class="col-sm-12">
|
||||
<button class="label label-default interactive vertical-center" style="border: 0" ng-click="$ctrl.onAddClick()">
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add group search configuration
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<div class="col-sm-8 col-md-10 vertical-center">
|
||||
<input type="text" class="form-control" id="ldap_filter_{{ $index }}" ng-model="config.Filter" placeholder="(objectClass=account)" />
|
||||
<button class="btn btn-md btn-danger" type="button" ng-click="$ctrl.onRemoveClick($index)" ng-if="$index > 0">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
|||
<div class="form-group" style="margin-top: 10px">
|
||||
<div class="col-sm-12">
|
||||
<button class="label label-default interactive vertical-center" style="border: 0" ng-click="$ctrl.onAddClick()">
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add user search configuration
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
|||
<div class="col-sm-12 vertical-center" style="margin-bottom: 5px">
|
||||
<label class="control-label text-left !pt-0">Groups</label>
|
||||
<span class="label label-default interactive vertical-center" style="margin-left: 10px" ng-click="$ctrl.addGroup()">
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add another group
|
||||
</span>
|
||||
</div>
|
||||
|
@ -69,7 +69,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add group search configuration
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<div class="form-group">
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<p class="vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" mode="'primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
You can configure multiple LDAP Servers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all use the
|
||||
same certificates).
|
||||
</p>
|
||||
|
@ -28,7 +28,7 @@
|
|||
limited-feature-disabled
|
||||
limited-feature-class="limited-be"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
Add additional server
|
||||
</button>
|
||||
</label>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<div class="mb-3 flex" ng-repeat="url in $ctrl.settings.URLs track by $index">
|
||||
<input type="text" class="form-control" id="ldap_url" ng-model="$ctrl.settings.URLs[$index]" placeholder="e.g. 10.0.0.10:389 or myldap.domain.tld:389" required />
|
||||
<button ng-if="$index > 0" class="btn btn-sm btn-danger" type="button" ng-click="$ctrl.removeLDAPUrl($index)">
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add another entry
|
||||
</button>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'arrow-up'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'arrow-up'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-md btn-primary"
|
||||
|
@ -51,7 +51,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'arrow-down'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'arrow-down'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-md btn-danger"
|
||||
|
@ -60,7 +60,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<div class="form-group">
|
||||
<div class="col-sm-12 small text-muted">
|
||||
<p class="vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" mode="'primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" mode="'primary'"></pr-icon>
|
||||
You can configure multiple LDAP Servers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all use
|
||||
the same certificates).
|
||||
</p>
|
||||
|
@ -35,7 +35,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
Add additional server
|
||||
</button>
|
||||
</label>
|
||||
|
@ -58,7 +58,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true" size="'md'"></pr-icon>
|
||||
<pr-icon icon="'trash-2'" size="'md'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -63,9 +63,9 @@
|
|||
</button>
|
||||
<span class="vertical-center">
|
||||
{{ $ctrl.tlscaCert.name }}
|
||||
<pr-icon icon="'check'" feather="true" class="icon-success" ng-if="$ctrl.tlscaCert && $ctrl.tlscaCert === $ctrl.settings.TLSConfig.TLSCACert"></pr-icon>
|
||||
<pr-icon icon="'x'" feather="true" class="icon-danger" ng-if="!$ctrl.tlscaCert"></pr-icon>
|
||||
<pr-icon icon="'fa fa-circle-notch fa-spin'" ng-if="$ctrl.uploadInProgress"></pr-icon>
|
||||
<pr-icon icon="'check'" class="icon-success" ng-if="$ctrl.tlscaCert && $ctrl.tlscaCert === $ctrl.settings.TLSConfig.TLSCACert"></pr-icon>
|
||||
<pr-icon icon="'x'" class="icon-danger" ng-if="!$ctrl.tlscaCert"></pr-icon>
|
||||
<pr-icon icon="'loader-2'" class-name="'animate-spin-slow ml-0.5'" ng-if="$ctrl.uploadInProgress"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -51,8 +51,8 @@
|
|||
<span ng-if="$ctrl.state.testStatus !== $ctrl.TEST_STATUS.LOADING">Test</span>
|
||||
<span ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.LOADING">Testing...</span>
|
||||
</button>
|
||||
<pr-icon icon="'check'" feather="true" class="icon-success" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.SUCCESS"></pr-icon>
|
||||
<pr-icon icon="'x'" feather="true" class="icon-danger" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE"></pr-icon>
|
||||
<pr-icon icon="'check'" class="icon-success" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.SUCCESS"></pr-icon>
|
||||
<pr-icon icon="'x'" class="icon-danger" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE"></pr-icon>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Edit } from 'react-feather';
|
||||
import { Edit } from 'lucide-react';
|
||||
|
||||
import { FeatureId } from '@/react/portainer/feature-flags/enums';
|
||||
import Openldap from '@/assets/ico/vendor/openldap.svg?c';
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'trash-2'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'trash-2'"></pr-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add another group
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
||||
limited-feature-tabindex="-1"
|
||||
>
|
||||
<pr-icon icon="'plus-circle'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||
add user search configuration
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
<rd-widget-body classes="no-padding">
|
||||
<div class="toolBar">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<pr-icon icon="$ctrl.titleIcon" feather="true"></pr-icon>
|
||||
<pr-icon icon="$ctrl.titleIcon"></pr-icon>
|
||||
{{ $ctrl.titleText }}
|
||||
</div>
|
||||
<div class="searchBar vertical-center">
|
||||
<pr-icon icon="'search'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'search'"></pr-icon>
|
||||
<input
|
||||
type="text"
|
||||
class="searchInput"
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="key" feather-icon="true" title-text="SSL certificate"></rd-widget-header>
|
||||
<rd-widget-header icon="key" title-text="SSL certificate"></rd-widget-header>
|
||||
<rd-widget-body>
|
||||
<form class="form-horizontal" name="$ctrl.sslForm">
|
||||
<span class="small">
|
||||
<p class="text-muted vertical-center">
|
||||
<pr-icon icon="'alert-circle'" feather="true" class-name="'icon-warning =vertical-center'"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" class-name="'icon-warning =vertical-center'"></pr-icon>
|
||||
Forcing HTTPs only will cause Portainer to stop listening on the HTTP port. Any edge agent environment that is using HTTP will no longer be available.
|
||||
</p>
|
||||
</span>
|
||||
|
@ -33,14 +33,17 @@
|
|||
<button class="btn btn-sm btn-primary" ngf-select ng-model="$ctrl.formValues.certFile" ngf-pattern="$ctrl.certFilePattern" name="certFile"> Select file </button>
|
||||
<span style="margin-left: 5px">
|
||||
{{ $ctrl.formValues.certFile.name }}
|
||||
<pr-icon icon="'x-circle'" feather="true" class-name="'icon-danger'" ng-if="!$ctrl.formValues.certFile"></pr-icon>
|
||||
<pr-icon icon="'x-circle'" class-name="'icon-danger'" ng-if="!$ctrl.formValues.certFile"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-12" ng-show="$ctrl.sslForm.certFile.$invalid">
|
||||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.sslForm.certFile.$error">
|
||||
<p ng-message="pattern"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> File type is invalid.</p>
|
||||
<p ng-message="pattern">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
File type is invalid.</p
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -54,14 +57,17 @@
|
|||
<button class="btn btn-sm btn-primary" ngf-select ng-model="$ctrl.formValues.keyFile" ngf-pattern="$ctrl.keyFilePattern" name="keyFile"> Select file </button>
|
||||
<span style="margin-left: 5px">
|
||||
{{ $ctrl.formValues.keyFile.name }}
|
||||
<pr-icon icon="'x-circle'" feather="true" class-name="'icon-danger'" ng-if="!$ctrl.formValues.keyFile"></pr-icon>
|
||||
<pr-icon icon="'x-circle'" class-name="'icon-danger'" ng-if="!$ctrl.formValues.keyFile"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-12" ng-show="$ctrl.sslForm.keyFile.$invalid">
|
||||
<div class="small text-warning">
|
||||
<div ng-messages="$ctrl.sslForm.keyFile.$error">
|
||||
<p ng-message="pattern"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> File type is invalid.</p>
|
||||
<p ng-message="pattern">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
File type is invalid.</p
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="'svg-clockrewind'"></pr-icon>
|
||||
<pr-icon icon="'history'"></pr-icon>
|
||||
</div>
|
||||
|
||||
Activity Logs
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<p class="text-muted small vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" class-name="'icon icon-sm icon-primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" class-name="'icon icon-sm icon-primary'"></pr-icon>
|
||||
Portainer user activity logs have a maximum retention of 7 days.
|
||||
</p>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-primary" limited-feature-dir="{{::$ctrl.limitedFeature}}" limited-feature-class="limited-be" limited-feature-disabled>
|
||||
<pr-icon icon="'download'" feather="true" icon-class="'icon icon-sm'"></pr-icon>
|
||||
<pr-icon icon="'download'" class-name="'icon icon-sm'"></pr-icon>
|
||||
Export as CSV
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap">
|
||||
<div class="toolBarTitle vertical-center">
|
||||
<div class="widget-icon space-right">
|
||||
<pr-icon icon="'svg-clockrewind'"></pr-icon>
|
||||
<pr-icon icon="'history'"></pr-icon>
|
||||
</div>
|
||||
|
||||
Authentication Events
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<p class="text-muted small vertical-center">
|
||||
<pr-icon icon="'info'" feather="true" class-name="'icon icon-sm icon-primary'"></pr-icon>
|
||||
<pr-icon icon="'info'" class-name="'icon icon-sm icon-primary'"></pr-icon>
|
||||
Portainer user authentication activity logs have a maximum retention of 7 days.
|
||||
</p>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-primary" limited-feature-dir="{{::$ctrl.limitedFeature}}" limited-feature-class="limited-be" limited-feature-disabled
|
||||
><pr-icon icon="'download'" feather="true" icon-class="'icon icon-sm'"></pr-icon>Export as CSV
|
||||
><pr-icon icon="'download'" class-name="'icon icon-sm'"></pr-icon>Export as CSV
|
||||
</button>
|
||||
</div>
|
||||
</rd-widget-body>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-xs-12">
|
||||
<rd-widget>
|
||||
<rd-widget-header icon="lock" feather-icon="true" title-text="Change user password"></rd-widget-header>
|
||||
<rd-widget-header icon="lock" title-text="Change user password"></rd-widget-header>
|
||||
<rd-widget-body>
|
||||
<form name="form" class="form-horizontal" style="margin-top: 15px">
|
||||
<!-- current-password-input -->
|
||||
|
@ -32,8 +32,8 @@
|
|||
<div class="input-group">
|
||||
<input type="password" class="form-control" ng-model="formValues.confirmPassword" id="confirm_password" />
|
||||
<span class="input-group-addon">
|
||||
<pr-icon icon="'check'" feather="true" class="icon-success" ng-if="formValues.newPassword === formValues.confirmPassword"></pr-icon>
|
||||
<pr-icon icon="'x'" feather="true" class="icon-danger" ng-if="!(formValues.newPassword === formValues.confirmPassword)"></pr-icon>
|
||||
<pr-icon icon="'check'" class="icon-success" ng-if="formValues.newPassword === formValues.confirmPassword"></pr-icon>
|
||||
<pr-icon icon="'x'" class="icon-danger" ng-if="!(formValues.newPassword === formValues.confirmPassword)"></pr-icon>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -59,18 +59,18 @@
|
|||
Remind me later
|
||||
</button>
|
||||
<span class="text-muted small vertical-center" style="margin-left: 5px" ng-if="AuthenticationMethod === 2 && !isInitialAdmin">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
You cannot change your password when using LDAP authentication.
|
||||
</span>
|
||||
<span class="text-muted small vertical-center" style="margin-left: 5px" ng-if="AuthenticationMethod === 3 && !isInitialAdmin">
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon>
|
||||
You cannot change your password when using OAuth authentication.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-if="userRole === 1">
|
||||
<p class="text-muted vertical-center">
|
||||
<pr-icon icon="'alert-circle'" class-name="'icon-primary'" feather="true"></pr-icon>
|
||||
<pr-icon icon="'alert-circle'" class-name="'icon-primary'"></pr-icon>
|
||||
Minimum password length is set <a ui-sref="portainer.settings.authentication">here.</a>
|
||||
</p>
|
||||
</div>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue