mirror of https://github.com/portainer/portainer
fix(teasers): updated muted styles from qa feedback [EE-6035] (#10391)
* fix(teasers): updated muted styles from qa feedback [EE-6035]pull/10413/head
parent
d9a3b98275
commit
6163aaa577
|
@ -351,7 +351,7 @@
|
||||||
></save-auth-settings-button>
|
></save-auth-settings-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-if="$ctrl.state.provider != 'custom'" class="limited-be">
|
<div ng-if="$ctrl.state.provider != 'custom'" class="limited-be be-indicator-container">
|
||||||
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeature"></be-feature-indicator></div>
|
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeature"></be-feature-indicator></div>
|
||||||
<div class="limited-be-content">
|
<div class="limited-be-content">
|
||||||
<div class="col-sm-12 form-section-title">OAuth Configuration</div>
|
<div class="col-sm-12 form-section-title">OAuth Configuration</div>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<div class="col-sm-12" style="margin-bottom: 0px">
|
<div class="col-sm-12" style="margin-bottom: 0px">
|
||||||
|
<div class="be-indicator-container limited-be">
|
||||||
|
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeature"></be-feature-indicator></div>
|
||||||
|
<div class="limited-be-content">
|
||||||
<rd-widget>
|
<rd-widget>
|
||||||
<rd-widget-header icon="user-x">
|
<rd-widget-header icon="user-x">
|
||||||
<header-title>
|
<header-title> Effective access viewer </header-title>
|
||||||
Effective access viewer
|
|
||||||
<be-feature-indicator feature="$ctrl.limitedFeature" class="space-left"></be-feature-indicator>
|
|
||||||
</header-title>
|
|
||||||
</rd-widget-header>
|
</rd-widget-header>
|
||||||
<rd-widget-body>
|
<rd-widget-body>
|
||||||
<form class="form-horizontal">
|
<form class="form-horizontal">
|
||||||
|
@ -21,4 +21,6 @@
|
||||||
</form>
|
</form>
|
||||||
</rd-widget-body>
|
</rd-widget-body>
|
||||||
</rd-widget>
|
</rd-widget>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ng-form class="ad-settings" limited-feature-dir="{{::$ctrl.limitedFeatureId}}" limited-feature-class="limited-be">
|
<ng-form class="ad-settings" limited-feature-dir="{{::$ctrl.limitedFeatureId}}" limited-feature-class="limited-be">
|
||||||
<div>
|
<div class="be-indicator-container">
|
||||||
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeatureId"></be-feature-indicator></div>
|
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeatureId"></be-feature-indicator></div>
|
||||||
<div class="limited-be-content">
|
<div class="limited-be-content">
|
||||||
<auto-user-provision-toggle ng-model="$ctrl.settings.AutoCreateUsers">
|
<auto-user-provision-toggle ng-model="$ctrl.settings.AutoCreateUsers">
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<div class="col-sm-12 form-section-title ldap-custom-admin-group-title" ng-style="$ctrl.isLimitedFeatureSelfContained && { 'padding-bottom': '15px' }">
|
<div class="col-sm-12 form-section-title flex items-center" style="float: initial">
|
||||||
Auto-populate team admins <be-feature-indicator feature="$ctrl.limitedFeatureId" class="space-left" ng-if="$ctrl.isLimitedFeatureSelfContained"></be-feature-indicator>
|
Auto-populate team admins <be-feature-indicator feature="$ctrl.limitedFeatureId" class="space-left" ng-if="$ctrl.isLimitedFeatureSelfContained"></be-feature-indicator>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full px-5 pt-3" ng-repeat="config in $ctrl.settings.AdminGroupSearchSettings | limitTo: (1 - $ctrl.settings.AdminGroupSearchSettings)">
|
<rd-widget>
|
||||||
|
<rd-widget-body>
|
||||||
|
<div class="w-full pt-3" ng-repeat="config in $ctrl.settings.AdminGroupSearchSettings | limitTo: (1 - $ctrl.settings.AdminGroupSearchSettings)">
|
||||||
<div class="form-group mb-3" ng-if="$index > 0">
|
<div class="form-group mb-3" ng-if="$index > 0">
|
||||||
<span class="col-sm-12 text-muted small"> Extra search configuration </span>
|
<span class="col-sm-12 text-muted small"> Extra search configuration </span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,24 +68,18 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group mt-3">
|
<div class="form-group mt-3">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button
|
<button disabled class="btn btn-sm btn-light vertical-center !ml-0" ng-click="$ctrl.onAddClick()">
|
||||||
class="label label-default interactive no-border vertical-center"
|
<pr-icon icon="'plus'"></pr-icon>
|
||||||
ng-click="$ctrl.onAddClick()"
|
Add group search configuration
|
||||||
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
|
||||||
limited-feature-class=" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}"
|
|
||||||
limited-feature-disabled
|
|
||||||
>
|
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
|
||||||
add group search configuration
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 vertical-center mt-2">
|
<div class="col-sm-12 vertical-center mt-2">
|
||||||
<button
|
<button
|
||||||
class="btn btm-sm btn-primary"
|
class="btn btm-sm btn-primary !ml-0"
|
||||||
type="button"
|
type="button"
|
||||||
ng-click="$ctrl.search()"
|
ng-click="$ctrl.search()"
|
||||||
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
||||||
|
@ -98,9 +94,9 @@
|
||||||
No groups found
|
No groups found
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12 vertical-center">
|
<div class="col-sm-12 vertical-center">
|
||||||
<label for="admin-auto-populate" class="control-label text-muted !pt-0 text-left" ng-class="{ 'text-muted': !$ctrl.enableAssignAdminGroup }">
|
<label for="admin-auto-populate" class="control-label text-muted !pt-0 text-left" ng-class="{ 'text-muted': !$ctrl.enableAssignAdminGroup }">
|
||||||
Assign admin rights to group(s)
|
Assign admin rights to group(s)
|
||||||
|
@ -110,9 +106,9 @@
|
||||||
<span class="slider round before:content-['']"></span>
|
<span class="slider round before:content-['']"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" ng-if="$ctrl.settings.AdminAutoPopulate && $ctrl.groups">
|
<div class="form-group" ng-if="$ctrl.settings.AdminAutoPopulate && $ctrl.groups">
|
||||||
<label for="group-access" class="control-label col-sm-2 text-left"> Select Group(s) </label>
|
<label for="group-access" class="control-label col-sm-2 text-left"> Select Group(s) </label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<por-select
|
<por-select
|
||||||
|
@ -126,4 +122,6 @@
|
||||||
>
|
>
|
||||||
</por-select>
|
</por-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</rd-widget-body>
|
||||||
|
</rd-widget>
|
||||||
|
|
|
@ -51,24 +51,19 @@
|
||||||
|
|
||||||
<div class="form-group" style="margin-top: 10px">
|
<div class="form-group" style="margin-top: 10px">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button class="label label-default interactive vertical-center" style="border: 0" ng-click="$ctrl.onAddClick()">
|
<button class="btn btn-sm btn-light vertical-center !ml-0" ng-click="$ctrl.onAddClick()">
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
<pr-icon icon="'plus'"></pr-icon>
|
||||||
add group search configuration
|
Add group search configuration
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12" style="margin-top: 10px">
|
<div class="col-sm-12" style="margin-top: 10px">
|
||||||
<button
|
<be-teaser-button
|
||||||
class="btn btm-sm btn-primary"
|
feature-id="$ctrl.limitedFeatureId"
|
||||||
type="button"
|
heading="'Display User/Group matching'"
|
||||||
ng-click="$ctrl.search()"
|
message="'Show the list of users and groups that match the Portainer search configurations'"
|
||||||
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
button-text="'Display User/Group matching'"
|
||||||
limited-feature-tabindex="-1"
|
button-class-name="'!ml-0'"
|
||||||
limited-feature-disabled
|
></be-teaser-button>
|
||||||
limited-feature-class="limited-be"
|
|
||||||
>
|
|
||||||
Display User/Group matching
|
|
||||||
</button>
|
|
||||||
<be-feature-indicator feature="$ctrl.limitedFeatureId" class="space-left"></be-feature-indicator>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -40,24 +40,19 @@
|
||||||
|
|
||||||
<div class="form-group" style="margin-top: 10px">
|
<div class="form-group" style="margin-top: 10px">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button class="label label-default interactive vertical-center" style="border: 0" ng-click="$ctrl.onAddClick()">
|
<button class="btn btn-sm btn-light vertical-center !ml-0" ng-click="$ctrl.onAddClick()">
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
<pr-icon icon="'plus'"></pr-icon>
|
||||||
add user search configuration
|
Add user search configuration
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12" style="margin-top: 10px">
|
<div class="col-sm-12" style="margin-top: 10px">
|
||||||
<button
|
<be-teaser-button
|
||||||
class="btn btm-sm btn-primary"
|
feature-id="$ctrl.limitedFeatureId"
|
||||||
type="button"
|
heading="'Display Users'"
|
||||||
ng-click="$ctrl.search()"
|
message="'Allows you to display users from your LDAP server'"
|
||||||
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
button-text="'Display Users'"
|
||||||
limited-feature-disabled
|
button-class-name="'!ml-0'"
|
||||||
limited-feature-class="limited-be"
|
></be-teaser-button>
|
||||||
limited-feature-tabindex="-1"
|
|
||||||
>
|
|
||||||
Display Users
|
|
||||||
</button>
|
|
||||||
<be-feature-indicator feature="$ctrl.limitedFeatureId" class="space-left"></be-feature-indicator>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -13,15 +13,9 @@
|
||||||
|
|
||||||
<div class="form-group" style="margin-top: 10px">
|
<div class="form-group" style="margin-top: 10px">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button
|
<button class="btn btn-sm btn-light vertical-center !ml-0" ng-click="$ctrl.onAddClick()" disabled>
|
||||||
class="label label-default interactive vertical-center"
|
<pr-icon icon="'plus'"></pr-icon>
|
||||||
style="border: 0"
|
Add group search configuration
|
||||||
ng-click="$ctrl.onAddClick()"
|
|
||||||
limited-feature-dir="{{::$ctrl.limitedFeatureId}}"
|
|
||||||
limited-feature-tabindex="-1"
|
|
||||||
>
|
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
|
||||||
add group search configuration
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12" style="margin-top: 10px">
|
<div class="col-sm-12" style="margin-top: 10px">
|
||||||
|
|
|
@ -18,20 +18,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="ldap_url" class="col-sm-3 col-lg-2 control-label flex flex-wrap text-left">
|
<label for="ldap_url" class="col-sm-3 col-lg-2 control-label flex flex-wrap text-left"> LDAP Server </label>
|
||||||
LDAP Server
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="label label-default interactive no-border vertical-center"
|
|
||||||
ng-click="$ctrl.addLDAPUrl()"
|
|
||||||
limited-feature-dir="{{ $ctrl.limitedFeatureId }}"
|
|
||||||
limited-feature-disabled
|
|
||||||
limited-feature-class="limited-be"
|
|
||||||
>
|
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
|
||||||
Add additional server
|
|
||||||
</button>
|
|
||||||
</label>
|
|
||||||
<div class="col-sm-9 col-lg-10">
|
<div class="col-sm-9 col-lg-10">
|
||||||
<div class="mb-3 flex" ng-repeat="url in $ctrl.settings.URLs track by $index">
|
<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 />
|
<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 />
|
||||||
|
@ -40,6 +27,15 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<be-teaser-button
|
||||||
|
feature-id="$ctrl.limitedFeatureId"
|
||||||
|
heading="'Add additional server'"
|
||||||
|
message="'Allows you to add an additional LDAP server'"
|
||||||
|
button-text="'Add additional server'"
|
||||||
|
button-class-name="'!ml-0'"
|
||||||
|
></be-teaser-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ng-form limited-feature-dir="{{::$ctrl.limitedFeatureId}}" limited-feature-class="limited-be" class="ldap-settings-openldap">
|
<ng-form limited-feature-dir="{{::$ctrl.limitedFeatureId}}" limited-feature-class="limited-be" class="ldap-settings-openldap">
|
||||||
<div>
|
<div class="be-indicator-container">
|
||||||
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeatureId"></be-feature-indicator></div>
|
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeatureId"></be-feature-indicator></div>
|
||||||
<div class="limited-be-content">
|
<div class="limited-be-content">
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div class="col-sm-12 form-section-title" ng-style="$ctrl.isLimitedFeatureSelfContained && { 'padding-bottom': '15px' }">
|
<div class="col-sm-12 form-section-title flex items-center" style="float: initial">
|
||||||
Test login
|
Test login
|
||||||
<be-feature-indicator
|
<be-feature-indicator
|
||||||
ng-if="$ctrl.showBeIndicatorIfNeeded"
|
ng-if="$ctrl.showBeIndicatorIfNeeded"
|
||||||
|
@ -7,7 +7,10 @@
|
||||||
ng-if="$ctrl.isLimitedFeatureSelfContained"
|
ng-if="$ctrl.isLimitedFeatureSelfContained"
|
||||||
></be-feature-indicator>
|
></be-feature-indicator>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-inline">
|
|
||||||
|
<rd-widget>
|
||||||
|
<rd-widget-body>
|
||||||
|
<div class="form-inline">
|
||||||
<div class="form-group" style="margin: 0">
|
<div class="form-group" style="margin: 0">
|
||||||
<label for="ldap_test_username" style="font-size: 0.9em; margin-right: 5px"> Username </label>
|
<label for="ldap_test_username" style="font-size: 0.9em; margin-right: 5px"> Username </label>
|
||||||
<input
|
<input
|
||||||
|
@ -55,4 +58,6 @@
|
||||||
<pr-icon icon="'x'" class="icon-danger" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE"></pr-icon>
|
<pr-icon icon="'x'" class="icon-danger" ng-if="$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE"></pr-icon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</rd-widget-body>
|
||||||
|
</rd-widget>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
limited-feature-tabindex="-1"
|
limited-feature-tabindex="-1"
|
||||||
>
|
>
|
||||||
<pr-icon icon="'plus-circle'"></pr-icon>
|
<pr-icon icon="'plus-circle'"></pr-icon>
|
||||||
add user search configuration
|
Add user search configuration
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12" style="margin-top: 10px">
|
<div class="col-sm-12" style="margin-top: 10px">
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
ng-class="[$ctrl.className, 'btn btn-primary btn-sm']"
|
ng-class="[$ctrl.className, 'btn btn-primary btn-sm !ml-0']"
|
||||||
ng-click="$ctrl.onSaveSettings()"
|
ng-click="$ctrl.onSaveSettings()"
|
||||||
ng-disabled="$ctrl.saveButtonDisabled || $ctrl.saveButtonState"
|
ng-disabled="$ctrl.saveButtonDisabled || $ctrl.saveButtonState"
|
||||||
button-spinner="$ctrl.saveButtonState"
|
button-spinner="$ctrl.saveButtonState"
|
||||||
|
|
|
@ -6,9 +6,7 @@
|
||||||
<div class="widget-icon space-right">
|
<div class="widget-icon space-right">
|
||||||
<pr-icon icon="'history'"></pr-icon>
|
<pr-icon icon="'history'"></pr-icon>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Activity Logs
|
Activity Logs
|
||||||
<be-feature-indicator feature="$ctrl.feature"></be-feature-indicator>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="vertical-center">
|
<div class="vertical-center">
|
||||||
<datatable-searchbar on-change="($ctrl.onChangeKeyword)" value="$ctrl.keyword"></datatable-searchbar>
|
<datatable-searchbar on-change="($ctrl.onChangeKeyword)" value="$ctrl.keyword"></datatable-searchbar>
|
||||||
|
|
|
@ -26,15 +26,7 @@
|
||||||
</div>
|
</div>
|
||||||
</rd-widget-body>
|
</rd-widget-body>
|
||||||
</rd-widget>
|
</rd-widget>
|
||||||
</div>
|
<div class="row mt-5">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="be-indicator-container limited-be mx-4">
|
|
||||||
<div>
|
|
||||||
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeature"></be-feature-indicator></div>
|
|
||||||
<div class="limited-be-content">
|
|
||||||
<div class="row">
|
|
||||||
<activity-logs-datatable
|
<activity-logs-datatable
|
||||||
logs="$ctrl.state.logs"
|
logs="$ctrl.state.logs"
|
||||||
keyword="$ctrl.state.keyword"
|
keyword="$ctrl.state.keyword"
|
||||||
|
|
|
@ -6,9 +6,7 @@
|
||||||
<div class="widget-icon space-right">
|
<div class="widget-icon space-right">
|
||||||
<pr-icon icon="'history'"></pr-icon>
|
<pr-icon icon="'history'"></pr-icon>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Authentication Events
|
Authentication Events
|
||||||
<be-feature-indicator feature="$ctrl.feature"></be-feature-indicator>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="vertical-center">
|
<div class="vertical-center">
|
||||||
<datatable-searchbar on-change="($ctrl.onChangeKeyword)"></datatable-searchbar>
|
<datatable-searchbar on-change="($ctrl.onChangeKeyword)"></datatable-searchbar>
|
||||||
|
|
|
@ -25,15 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
</rd-widget-body>
|
</rd-widget-body>
|
||||||
</rd-widget>
|
</rd-widget>
|
||||||
</div>
|
<div class="row mt-5">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="be-indicator-container limited-be mx-4">
|
|
||||||
<div>
|
|
||||||
<div class="limited-be-link vertical-center"><be-feature-indicator feature="$ctrl.limitedFeature"></be-feature-indicator></div>
|
|
||||||
<div class="limited-be-content">
|
|
||||||
<div class="row">
|
|
||||||
<auth-logs-datatable
|
<auth-logs-datatable
|
||||||
logs="$ctrl.state.logs"
|
logs="$ctrl.state.logs"
|
||||||
keyword="$ctrl.state.keyword"
|
keyword="$ctrl.state.keyword"
|
||||||
|
|
|
@ -23,5 +23,5 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.be-indicator-container {
|
.be-indicator-container {
|
||||||
@apply border border-solid border-gray-6;
|
@apply relative;
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,13 @@ export function BoxSelectorItem<T extends Value>({
|
||||||
type={type}
|
type={type}
|
||||||
checkIcon={checkIcon}
|
checkIcon={checkIcon}
|
||||||
>
|
>
|
||||||
{limitedToBE && <LimitedToBeBoxSelectorIndicator url={featureUrl} />}
|
{limitedToBE && (
|
||||||
|
<LimitedToBeBoxSelectorIndicator
|
||||||
|
url={featureUrl}
|
||||||
|
// show tooltip only for radio type options because be-only checkbox options can't be selected
|
||||||
|
showTooltip={type === 'radio'}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<div
|
<div
|
||||||
className={clsx('flex min-w-[140px] gap-2', {
|
className={clsx('flex min-w-[140px] gap-2', {
|
||||||
'opacity-30': limitedToBE,
|
'opacity-30': limitedToBE,
|
||||||
|
|
|
@ -5,9 +5,13 @@ import { Tooltip } from '@@/Tip/Tooltip';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
url?: string;
|
url?: string;
|
||||||
|
showTooltip?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function LimitedToBeBoxSelectorIndicator({ url }: Props) {
|
export function LimitedToBeBoxSelectorIndicator({
|
||||||
|
url,
|
||||||
|
showTooltip = true,
|
||||||
|
}: Props) {
|
||||||
return (
|
return (
|
||||||
<div className="absolute left-0 top-0 w-full">
|
<div className="absolute left-0 top-0 w-full">
|
||||||
<div className="mx-auto flex max-w-fit items-center rounded-b-lg border border-t-0 border-solid border-gray-6 bg-transparent px-3 py-1 text-gray-6">
|
<div className="mx-auto flex max-w-fit items-center rounded-b-lg border border-t-0 border-solid border-gray-6 bg-transparent px-3 py-1 text-gray-6">
|
||||||
|
@ -20,10 +24,12 @@ export function LimitedToBeBoxSelectorIndicator({ url }: Props) {
|
||||||
<Icon icon={Briefcase} className="!mr-1" />
|
<Icon icon={Briefcase} className="!mr-1" />
|
||||||
<span>Business Feature</span>
|
<span>Business Feature</span>
|
||||||
</a>
|
</a>
|
||||||
|
{showTooltip && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
size="sm"
|
size="sm"
|
||||||
message="Select this option to preview this business feature."
|
message="Select this option to preview this business feature."
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { Icon } from '@@/Icon';
|
||||||
import { confirm } from '@@/modals/confirm';
|
import { confirm } from '@@/modals/confirm';
|
||||||
import { ModalType } from '@@/modals';
|
import { ModalType } from '@@/modals';
|
||||||
import { buildConfirmButton } from '@@/modals/utils';
|
import { buildConfirmButton } from '@@/modals/utils';
|
||||||
|
import { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
useApplicationRevisionList,
|
useApplicationRevisionList,
|
||||||
|
@ -60,27 +61,38 @@ export function RollbackApplicationButton({
|
||||||
appName
|
appName
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
const isRollbackNotAvailable =
|
||||||
<Authorized authorizations="K8sApplicationDetailsW">
|
!app ||
|
||||||
|
!appRevisions ||
|
||||||
|
appRevisions?.length < 2 ||
|
||||||
|
appDeployMethod !== 'application form' ||
|
||||||
|
patchAppMutation.isLoading;
|
||||||
|
|
||||||
|
const rollbackButton = (
|
||||||
<Button
|
<Button
|
||||||
ng-if="!ctrl.isExternalApplication()"
|
ng-if="!ctrl.isExternalApplication()"
|
||||||
type="button"
|
type="button"
|
||||||
color="light"
|
color="light"
|
||||||
size="small"
|
size="small"
|
||||||
className="!ml-0"
|
className="!ml-0"
|
||||||
disabled={
|
disabled={isRollbackNotAvailable}
|
||||||
!app ||
|
|
||||||
!appRevisions ||
|
|
||||||
appRevisions?.length < 2 ||
|
|
||||||
appDeployMethod !== 'application form' ||
|
|
||||||
patchAppMutation.isLoading
|
|
||||||
}
|
|
||||||
onClick={() => rollbackApplication()}
|
onClick={() => rollbackApplication()}
|
||||||
data-cy="k8sAppDetail-rollbackButton"
|
data-cy="k8sAppDetail-rollbackButton"
|
||||||
>
|
>
|
||||||
<Icon icon={RotateCcw} className="mr-1" />
|
<Icon icon={RotateCcw} className="mr-1" />
|
||||||
Rollback to previous configuration
|
Rollback to previous configuration
|
||||||
</Button>
|
</Button>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Authorized authorizations="K8sApplicationDetailsW">
|
||||||
|
{isRollbackNotAvailable ? (
|
||||||
|
<TooltipWithChildren message="Cannot roll back to previous configuration as none currently exists">
|
||||||
|
<span>{rollbackButton}</span>
|
||||||
|
</TooltipWithChildren>
|
||||||
|
) : (
|
||||||
|
rollbackButton
|
||||||
|
)}
|
||||||
</Authorized>
|
</Authorized>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,8 @@ export function KubeConfigTeaserForm() {
|
||||||
return (
|
return (
|
||||||
<Formik initialValues={initialValues} onSubmit={() => {}} validateOnMount>
|
<Formik initialValues={initialValues} onSubmit={() => {}} validateOnMount>
|
||||||
{() => (
|
{() => (
|
||||||
<Form className="mt-5">
|
<Form>
|
||||||
<FormSectionTitle>Environment details</FormSectionTitle>
|
<FormSectionTitle>Environment details</FormSectionTitle>
|
||||||
|
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<div className="col-sm-12">
|
<div className="col-sm-12">
|
||||||
<TextTip color="blue">
|
<TextTip color="blue">
|
||||||
|
@ -32,10 +31,9 @@ export function KubeConfigTeaserForm() {
|
||||||
href="https://docs.portainer.io/admin/environments/add/kubernetes/import"
|
href="https://docs.portainer.io/admin/environments/add/kubernetes/import"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
className="mx-1"
|
|
||||||
>
|
>
|
||||||
Import the kubeconfig file
|
Import the kubeconfig file
|
||||||
</a>
|
</a>{' '}
|
||||||
of an existing Kubernetes cluster located on-premise or on a
|
of an existing Kubernetes cluster located on-premise or on a
|
||||||
cloud platform. This will create a corresponding environment
|
cloud platform. This will create a corresponding environment
|
||||||
in Portainer and install the agent on the cluster. Please
|
in Portainer and install the agent on the cluster. Please
|
||||||
|
@ -43,7 +41,7 @@ export function KubeConfigTeaserForm() {
|
||||||
</span>
|
</span>
|
||||||
</TextTip>
|
</TextTip>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-sm-12 text-muted small">
|
<div className="col-sm-12 text-muted text-xs">
|
||||||
<ul className="p-2 pl-4">
|
<ul className="p-2 pl-4">
|
||||||
<li>You have a load balancer enabled in your cluster</li>
|
<li>You have a load balancer enabled in your cluster</li>
|
||||||
<li>You specify current-context in your kubeconfig</li>
|
<li>You specify current-context in your kubeconfig</li>
|
||||||
|
|
|
@ -30,14 +30,14 @@ div.limited-be {
|
||||||
}
|
}
|
||||||
|
|
||||||
.limited-be-content {
|
.limited-be-content {
|
||||||
@apply border-gray-6 p-2.5 text-xs opacity-50;
|
@apply border-gray-6 p-2.5 opacity-50;
|
||||||
}
|
}
|
||||||
|
|
||||||
.limited-be-link {
|
.limited-be-link {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
width: inherit;
|
width: inherit;
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
position: relative;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
right: 0px;
|
right: 0px;
|
||||||
float: right;
|
float: right;
|
||||||
|
|
Loading…
Reference in New Issue