1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-21 14:29:40 +02:00

chore(prettier): add tailwind prettier plugin [EE-4809] (#8221)

* add prettier plugin

* apply tailwind prettier formatting
This commit is contained in:
Ali 2023-02-13 10:04:24 +13:00 committed by GitHub
parent 9f6702d0b8
commit 58d66d3142
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
226 changed files with 704 additions and 699 deletions

View file

@ -59,7 +59,7 @@
<tbody> <tbody>
<tr ng-if="!$ctrl.isRoot"> <tr ng-if="!$ctrl.isRoot">
<td colspan="4"> <td colspan="4">
<button type="button" class="btn btn-link hover:no-underline !ml-0 p-0" ng-click="$ctrl.goToParent()" <button type="button" class="btn btn-link !ml-0 p-0 hover:no-underline" ng-click="$ctrl.goToParent()"
><pr-icon icon="'corner-left-up'"></pr-icon>Go to parent</button ><pr-icon icon="'corner-left-up'"></pr-icon>Go to parent</button
> >
</td> </td>
@ -78,7 +78,7 @@
<a class="interactive" ng-click="$ctrl.rename({name: item.Name, newName: item.newName}); item.edit = false;"><pr-icon icon="'check'"></pr-icon></a> <a class="interactive" ng-click="$ctrl.rename({name: item.Name, newName: item.newName}); item.edit = false;"><pr-icon icon="'check'"></pr-icon></a>
</span> </span>
<span ng-if="!item.edit && item.Dir"> <span ng-if="!item.edit && item.Dir">
<button type="button" class="btn btn-link hover:no-underline !ml-0 p-0" ng-click="$ctrl.browse({name: item.Name})" class="vertical-center" <button type="button" class="btn btn-link !ml-0 p-0 hover:no-underline" ng-click="$ctrl.browse({name: item.Name})" class="vertical-center"
><pr-icon icon="'folder'"></pr-icon>{{ item.Name }}</button ><pr-icon icon="'folder'"></pr-icon>{{ item.Name }}</button
> >
</span> </span>
@ -101,10 +101,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No files found.</td> <td colspan="5" class="text-muted text-center">No files found.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -148,7 +148,7 @@ input[type='checkbox'] {
} }
.text-warning { .text-warning {
@apply text-warning-9 th-dark:text-warning-7 th-highcontrast:text-warning-1; @apply text-warning-9 th-highcontrast:text-warning-1 th-dark:text-warning-7;
} }
.widget .widget-body table tbody .image-tag { .widget .widget-body table tbody .image-tag {
@ -778,5 +778,5 @@ input[style*='background-image: url("data:image/png'] {
} }
input:-webkit-autofill { input:-webkit-autofill {
@apply caret-[--grey-25] th-dark:caret-white th-highcontrast:caret-white; @apply caret-[--grey-25] th-highcontrast:caret-white th-dark:caret-white;
} }

View file

@ -185,7 +185,7 @@ input:checked + .slider:before {
/* Widget */ /* Widget */
.widget .widget-icon { .widget .widget-icon {
@apply text-lg !p-2 mr-1; @apply mr-1 !p-2 text-lg;
@apply bg-blue-3 text-blue-8; @apply bg-blue-3 text-blue-8;
@apply th-dark:bg-gray-9 th-dark:text-blue-3; @apply th-dark:bg-gray-9 th-dark:text-blue-3;

View file

@ -25,15 +25,15 @@ fieldset[disabled] .btn {
} }
.btn.btn-primary { .btn.btn-primary {
@apply text-white bg-blue-8 border-blue-8; @apply border-blue-8 bg-blue-8 text-white;
@apply hover:text-white hover:bg-blue-9 hover:border-blue-9; @apply hover:border-blue-9 hover:bg-blue-9 hover:text-white;
@apply th-dark:hover:bg-blue-7 th-dark:hover:border-blue-7; @apply th-dark:hover:border-blue-7 th-dark:hover:bg-blue-7;
} }
.btn.btn-primary:active, .btn.btn-primary:active,
.btn.btn-primary.active, .btn.btn-primary.active,
.open > .dropdown-toggle.btn-primary { .open > .dropdown-toggle.btn-primary {
@apply bg-blue-9 border-blue-5; @apply border-blue-5 bg-blue-9;
} }
.nav-pills > li.active > a, .nav-pills > li.active > a,
@ -46,29 +46,29 @@ fieldset[disabled] .btn {
.btn.btn-secondary { .btn.btn-secondary {
@apply border border-solid; @apply border border-solid;
@apply text-blue-9 bg-blue-2 border-blue-8; @apply border-blue-8 bg-blue-2 text-blue-9;
@apply hover:bg-blue-3; @apply hover:bg-blue-3;
@apply th-dark:text-blue-3 th-dark:bg-gray-10 th-dark:border-blue-7; @apply th-dark:border-blue-7 th-dark:bg-gray-10 th-dark:text-blue-3;
@apply th-dark:hover:bg-blue-11; @apply th-dark:hover:bg-blue-11;
} }
.btn.btn-danger { .btn.btn-danger {
@apply bg-error-8 border-error-8; @apply border-error-8 bg-error-8;
@apply hover:bg-error-7 hover:border-error-7 hover:text-white; @apply hover:border-error-7 hover:bg-error-7 hover:text-white;
} }
.btn.btn-danger:active, .btn.btn-danger:active,
.btn.btn-danger.active, .btn.btn-danger.active,
.open > .dropdown-toggle.btn-danger { .open > .dropdown-toggle.btn-danger {
@apply bg-error-8 text-white border-blue-5; @apply border-blue-5 bg-error-8 text-white;
} }
.btn.btn-dangerlight { .btn.btn-dangerlight {
@apply text-error-9 th-dark:text-white; @apply text-error-9 th-dark:text-white;
@apply bg-error-3 th-dark:bg-error-9; @apply bg-error-3 th-dark:bg-error-9;
@apply hover:bg-error-2 th-dark:hover:bg-error-11; @apply hover:bg-error-2 th-dark:hover:bg-error-11;
@apply border-error-5 th-dark:border-error-7 th-highcontrast:border-error-7; @apply border-error-5 th-highcontrast:border-error-7 th-dark:border-error-7;
@apply border border-solid; @apply border border-solid;
} }
@ -83,15 +83,15 @@ fieldset[disabled] .btn {
/* secondary-grey */ /* secondary-grey */
.btn.btn-default, .btn.btn-default,
.btn.btn-light { .btn.btn-light {
@apply bg-white border-gray-5 text-gray-9; @apply border-gray-5 bg-white text-gray-9;
@apply hover:bg-gray-3 hover:border-gray-5 hover:text-gray-10; @apply hover:border-gray-5 hover:bg-gray-3 hover:text-gray-10;
/* dark mode */ /* dark mode */
@apply th-dark:bg-gray-iron-10 th-dark:border-gray-warm-7 th-dark:text-gray-warm-4; @apply th-dark:border-gray-warm-7 th-dark:bg-gray-iron-10 th-dark:text-gray-warm-4;
@apply th-dark:hover:bg-gray-iron-9 th-dark:hover:border-gray-6 th-dark:hover:text-gray-warm-4; @apply th-dark:hover:border-gray-6 th-dark:hover:bg-gray-iron-9 th-dark:hover:text-gray-warm-4;
@apply th-highcontrast:bg-black th-highcontrast:border-gray-2 th-highcontrast:text-white; @apply th-highcontrast:border-gray-2 th-highcontrast:bg-black th-highcontrast:text-white;
@apply th-highcontrast:hover:bg-gray-9 th-highcontrast:hover:border-gray-6 th-highcontrast:hover:text-gray-warm-4; @apply th-highcontrast:hover:border-gray-6 th-highcontrast:hover:bg-gray-9 th-highcontrast:hover:text-gray-warm-4;
} }
.btn.btn-light:active, .btn.btn-light:active,
@ -112,8 +112,8 @@ fieldset[disabled] .btn {
.input-group-btn .btn.active, .input-group-btn .btn.active,
.btn-group .btn.active { .btn-group .btn.active {
@apply bg-blue-2 text-blue-10 border-blue-5; @apply border-blue-5 bg-blue-2 text-blue-10;
@apply th-dark:bg-blue-11 th-dark:text-blue-2 th-dark:border-blue-9; @apply th-dark:border-blue-9 th-dark:bg-blue-11 th-dark:text-blue-2;
} }
/* focus */ /* focus */
@ -149,14 +149,14 @@ fieldset[disabled] .btn {
a.no-link, a.no-link,
a[ng-click] { a[ng-click] {
@apply text-current; @apply text-current;
@apply hover:no-underline hover:text-current; @apply hover:text-current hover:no-underline;
@apply focus:no-underline focus:text-current; @apply focus:text-current focus:no-underline;
} }
a, a,
a.hyperlink { a.hyperlink {
@apply text-blue-8 hover:text-blue-9; @apply text-blue-8 hover:text-blue-9;
@apply hover:underline cursor-pointer; @apply cursor-pointer hover:underline;
} }
a.no-decoration { a.no-decoration {

View file

@ -67,7 +67,7 @@ pr-icon {
.icon-warning, .icon-warning,
.icon-orange { .icon-orange {
@apply text-warning-9 th-dark:text-warning-7 th-highcontrast:text-warning-1; @apply text-warning-9 th-highcontrast:text-warning-1 th-dark:text-warning-7;
} }
.icon.icon-warning-alt { .icon.icon-warning-alt {

View file

@ -42,7 +42,7 @@
/* today's date tile */ /* today's date tile */
.react-datetime-picker .react-calendar__tile--now { .react-datetime-picker .react-calendar__tile--now {
/* use background color to avoid white on yellow in dark/high contrast modes */ /* use background color to avoid white on yellow in dark/high contrast modes */
@apply th-dark:text-[color:var(--bg-calendar-color)] th-highcontrast:text-[color:var(--bg-calendar-color)]; @apply th-highcontrast:text-[color:var(--bg-calendar-color)] th-dark:text-[color:var(--bg-calendar-color)];
} }
.react-datetime-picker .react-calendar__tile--now:enabled:hover, .react-datetime-picker .react-calendar__tile--now:enabled:hover,
.react-datetime-picker .react-calendar__tile--now:enabled:focus { .react-datetime-picker .react-calendar__tile--now:enabled:focus {

View file

@ -1,5 +1,5 @@
<div> <div>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr> <tr>
<td class="col-md-3"> <td class="col-md-3">
<span>Name</span> <span>Name</span>

View file

@ -24,7 +24,7 @@
<div class="actionBar !gap-3" authorization="DockerConfigDelete, DockerConfigCreate"> <div class="actionBar !gap-3" authorization="DockerConfigDelete, DockerConfigCreate">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="DockerConfigDelete" authorization="DockerConfigDelete"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -34,7 +34,7 @@
</button> </button>
<button <button
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.configs.new" ui-sref="docker.configs.new"
authorization="DockerConfigCreate" authorization="DockerConfigCreate"
data-cy="config-addConfigButton" data-cy="config-addConfigButton"
@ -80,7 +80,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -139,10 +139,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No config available.</td> <td colspan="3" class="text-muted text-center">No config available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -28,7 +28,7 @@
</form> </form>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th>Network</th> <th>Network</th>
@ -63,7 +63,7 @@
<td authorization="DockerNetworkDisconnect"> <td authorization="DockerNetworkDisconnect">
<button <button
type="button" type="button"
class="btn btn-xs btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-xs btn-dangerlight vertical-center !ml-0 h-fit"
ng-disabled="$ctrl.leaveNetworkActionInProgress || $ctrl.container.IsPortainer" ng-disabled="$ctrl.leaveNetworkActionInProgress || $ctrl.container.IsPortainer"
button-spinner="$ctrl.leaveNetworkActionInProgress" button-spinner="$ctrl.leaveNetworkActionInProgress"
ng-click="$ctrl.leaveNetworkAction($ctrl.container, key)" ng-click="$ctrl.leaveNetworkAction($ctrl.container, key)"
@ -87,10 +87,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.dataset.length === 0"> <tr ng-if="$ctrl.dataset.length === 0">
<td colspan="5" class="text-center text-muted">No network available.</td> <td colspan="5" class="text-muted text-center">No network available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -23,7 +23,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th ng-repeat="header in $ctrl.headerset"> <th ng-repeat="header in $ctrl.headerset">
@ -36,10 +36,10 @@
<td ng-repeat="info in item track by $index">{{ info }}</td> <td ng-repeat="info in item track by $index">{{ info }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="{{ $ctrl.headerset.length }}" class="text-center text-muted">Loading...</td> <td colspan="{{ $ctrl.headerset.length }}" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredProcesses.length === 0"> <tr ng-if="$ctrl.state.filteredProcesses.length === 0">
<td colspan="{{ $ctrl.headerset.length }}" class="text-center text-muted">No process available.</td> <td colspan="{{ $ctrl.headerset.length }}" class="text-muted text-center">No process available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -23,7 +23,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -65,10 +65,10 @@
<td>{{ item.Details }}</td> <td>{{ item.Details }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No event available.</td> <td colspan="3" class="text-muted text-center">No event available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -25,7 +25,7 @@
<div class="btn-group" authorization="DockerImageDelete"> <div class="btn-group" authorization="DockerImageDelete">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="DockerImageDelete" authorization="DockerImageDelete"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -77,7 +77,7 @@
<button <button
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.images.build" ui-sref="docker.images.build"
authorization="DockerImageBuild" authorization="DockerImageBuild"
data-cy="image-buildImageButton" data-cy="image-buildImageButton"
@ -123,11 +123,11 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-filters nowrap-cells"> <table class="table-hover table-filters nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th uib-dropdown dropdown-append-to-body auto-close="disabled" popover-placement="bottom-left" is-open="$ctrl.filters.state.open"> <th uib-dropdown dropdown-append-to-body auto-close="disabled" popover-placement="bottom-left" is-open="$ctrl.filters.state.open">
<div class="flex gap-1 items-center"> <div class="flex items-center gap-1">
<span class="md-checkbox"> <span class="md-checkbox">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" />
<label for="select_all"></label> <label for="select_all"></label>
@ -229,10 +229,10 @@
<td ng-if="$ctrl.showHostColumn">{{ item.NodeName ? item.NodeName : '-' }}</td> <td ng-if="$ctrl.showHostColumn">{{ item.NodeName ? item.NodeName : '-' }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No image available.</td> <td colspan="5" class="text-muted text-center">No image available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -22,7 +22,7 @@
/> />
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -99,10 +99,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="7" class="text-center text-muted">Loading...</td> <td colspan="7" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="7" class="text-center text-muted">No node available.</td> <td colspan="7" class="text-muted text-center">No node available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -24,7 +24,7 @@
<div class="actionBar !gap-3" authorization="DockerNetworkDelete, DockerNetworkCreate"> <div class="actionBar !gap-3" authorization="DockerNetworkDelete, DockerNetworkCreate">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="DockerNetworkDelete" authorization="DockerNetworkDelete"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -34,7 +34,7 @@
</button> </button>
<button <button
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.networks.new" ui-sref="docker.networks.new"
authorization="DockerNetworkCreate" authorization="DockerNetworkCreate"
data-cy="network-addNetworkButton" data-cy="network-addNetworkButton"
@ -80,7 +80,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th style="width: 55px"> <th style="width: 55px">
@ -207,10 +207,10 @@
</tr> </tr>
<tr dir-paginate-end ng-show="item.Expanded" ng-repeat="it in item.Subs" class="datatable-highlighted" network-row-content item="it" parent-ctrl="$ctrl"> </tr> <tr dir-paginate-end ng-show="item.Expanded" ng-repeat="it in item.Subs" class="datatable-highlighted" network-row-content item="it" parent-ctrl="$ctrl"> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="9" class="text-center text-muted">Loading...</td> <td colspan="9" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="9" class="text-center text-muted">No network available.</td> <td colspan="9" class="text-muted text-center">No network available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -22,7 +22,7 @@
/> />
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -88,10 +88,10 @@
<td>{{ item.Updated | getisodate }}</td> <td>{{ item.Updated | getisodate }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No task available.</td> <td colspan="5" class="text-muted text-center">No task available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -59,7 +59,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -158,10 +158,10 @@
> >
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="7" class="text-center text-muted">Loading...</td> <td colspan="7" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="7" class="text-center text-muted">No node available.</td> <td colspan="7" class="text-muted text-center">No node available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -24,7 +24,7 @@
<div class="actionBar !gap-3" authorization="DockerSecretDelete, DockerSecretCreate"> <div class="actionBar !gap-3" authorization="DockerSecretDelete, DockerSecretCreate">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="DockerSecretDelete" authorization="DockerSecretDelete"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -34,7 +34,7 @@
</button> </button>
<button <button
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.secrets.new" ui-sref="docker.secrets.new"
authorization="DockerSecretCreate" authorization="DockerSecretCreate"
data-cy="secret-addSecretButton" data-cy="secret-addSecretButton"
@ -80,7 +80,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -139,10 +139,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No secret available.</td> <td colspan="3" class="text-muted text-center">No secret available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,5 +1,5 @@
<div class="inner-datatable"> <div class="inner-datatable">
<table class="table table-condensed table-hover nowrap-cells"> <table class="table-condensed table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open" class="w-[10%]"> <th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open" class="w-[10%]">
@ -102,7 +102,7 @@
<td>{{ item.Updated | getisodate }}</td> <td>{{ item.Updated | getisodate }}</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No task matching filter.</td> <td colspan="5" class="text-muted text-center">No task matching filter.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -67,7 +67,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th style="width: 55px"> <th style="width: 55px">
@ -161,7 +161,7 @@
<pr-icon ng-if="!item.Expanded" icon="'chevron-right'" class-name="'mr-1'"></pr-icon> <pr-icon ng-if="!item.Expanded" icon="'chevron-right'" class-name="'mr-1'"></pr-icon>
</td> </td>
<td> <td>
<button type="button" class="btn btn-link hover:no-underline !ml-0 p-0" ui-sref="docker.services.service({id: item.Id})" ng-click="$event.stopPropagation()">{{ <button type="button" class="btn btn-link !ml-0 p-0 hover:no-underline" ui-sref="docker.services.service({id: item.Id})" ng-click="$event.stopPropagation()">{{
item.Name item.Name
}}</button> }}</button>
</td> </td>
@ -233,10 +233,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="8" class="text-center text-muted">Loading...</td> <td colspan="8" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="8" class="text-center text-muted">No service available.</td> <td colspan="8" class="text-muted text-center">No service available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -21,7 +21,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -109,10 +109,10 @@
<td>{{ item.Updated | getisodate }}</td> <td>{{ item.Updated | getisodate }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="6" class="text-center text-muted">No task available.</td> <td colspan="6" class="text-muted text-center">No task available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -24,7 +24,7 @@
<div class="actionBar !gap-3" authorization="DockerVolumeDelete, DockerVolumeCreate"> <div class="actionBar !gap-3" authorization="DockerVolumeDelete, DockerVolumeCreate">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="DockerVolumeDelete" authorization="DockerVolumeDelete"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -34,7 +34,7 @@
</button> </button>
<button <button
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.volumes.new" ui-sref="docker.volumes.new"
authorization="DockerVolumeCreate" authorization="DockerVolumeCreate"
data-cy="volume-addVolumeButton" data-cy="volume-addVolumeButton"
@ -80,7 +80,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-filters nowrap-cells"> <table class="table-hover table-filters nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open" class="flex gap-1"> <th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open" class="flex gap-1">
@ -211,10 +211,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="6" class="text-center text-muted">No volume available.</td> <td colspan="6" class="text-muted text-center">No volume available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -16,10 +16,10 @@
<td>{{ device.Vendor }}</td> <td>{{ device.Vendor }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.devices"> <tr ng-if="!$ctrl.devices">
<td colspan="2" class="text-center text-muted">Loading...</td> <td colspan="2" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.devices.length === 0"> <tr ng-if="$ctrl.devices.length === 0">
<td colspan="2" class="text-center text-muted"> No device available. </td> <td colspan="2" class="text-muted text-center"> No device available. </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -16,10 +16,10 @@
<td>{{ disk.Size | humansize }}</td> <td>{{ disk.Size | humansize }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.disks"> <tr ng-if="!$ctrl.disks">
<td colspan="2" class="text-center text-muted">Loading...</td> <td colspan="2" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.disks.length === 0"> <tr ng-if="$ctrl.disks.length === 0">
<td colspan="2" class="text-center text-muted"> No disks available. </td> <td colspan="2" class="text-muted text-center"> No disks available. </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<!-- use registry --> <!-- use registry -->
<div class="row"> <div class="row">
<div class="form-group" ng-if="$ctrl.model.UseRegistry"> <div class="form-group" ng-if="$ctrl.model.UseRegistry">
<label for="image_registry" class="control-label text-left col-sm-3 col-lg-2" ng-class="$ctrl.labelClass"> Registry </label> <label for="image_registry" class="control-label col-sm-3 col-lg-2 text-left" ng-class="$ctrl.labelClass"> Registry </label>
<div ng-class="$ctrl.inputClass" class="col-sm-8"> <div ng-class="$ctrl.inputClass" class="col-sm-8">
<select <select
ng-options="registry as registry.Name for registry in $ctrl.registries track by registry.Id" ng-options="registry as registry.Name for registry in $ctrl.registries track by registry.Id"
@ -13,7 +13,7 @@
</div> </div>
</div> </div>
<div class="form-group" ng-if="$ctrl.model.UseRegistry"> <div class="form-group" ng-if="$ctrl.model.UseRegistry">
<label for="image_name" ng-class="$ctrl.labelClass" class="control-label text-left col-sm-3 col-lg-2 required">Image</label> <label for="image_name" ng-class="$ctrl.labelClass" class="control-label col-sm-3 col-lg-2 required text-left">Image</label>
<div ng-class="$ctrl.inputClass" class="col-sm-8"> <div ng-class="$ctrl.inputClass" class="col-sm-8">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon" id="registry-name">{{ $ctrl.displayedRegistryURL() }}</span> <span class="input-group-addon" id="registry-name">{{ $ctrl.displayedRegistryURL() }}</span>
@ -49,7 +49,7 @@
<span class="small"> <span class="small">
<p class="text-muted ml-4"> When using advanced mode, image and repository <b>must be</b> publicly available. </p> <p class="text-muted ml-4"> When using advanced mode, image and repository <b>must be</b> publicly available. </p>
</span> </span>
<label for="image_name" ng-class="$ctrl.labelClass" class="control-label text-left col-sm-3 col-lg-2 required">Image </label> <label for="image_name" ng-class="$ctrl.labelClass" class="control-label col-sm-3 col-lg-2 required text-left">Image </label>
<div ng-class="$ctrl.inputClass" class="col-sm-8"> <div ng-class="$ctrl.inputClass" class="col-sm-8">
<input type="text" class="form-control" ng-model="$ctrl.model.Image" name="image_name" placeholder="e.g. registry:port/my-image:my-tag" required /> <input type="text" class="form-control" ng-model="$ctrl.model.Image" name="image_name" placeholder="e.g. registry:port/my-image:my-tag" required />
</div> </div>
@ -71,10 +71,10 @@
<!-- ! info message --> <!-- ! info message -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12"> <div class="col-sm-12">
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center" ng-if="!$ctrl.model.UseRegistry" ng-click="$ctrl.model.UseRegistry = true;"> <button type="button" class="btn btn-link btn-sm vertical-center !ml-0 p-0 hover:no-underline" ng-if="!$ctrl.model.UseRegistry" ng-click="$ctrl.model.UseRegistry = true;">
<pr-icon icon="'database'"> </pr-icon> Simple mode <pr-icon icon="'database'"> </pr-icon> Simple mode
</button> </button>
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0 vertical-center" ng-if="$ctrl.model.UseRegistry" ng-click="$ctrl.model.UseRegistry = false;"> <button type="button" class="btn btn-link btn-sm vertical-center !ml-0 p-0 hover:no-underline" ng-if="$ctrl.model.UseRegistry" ng-click="$ctrl.model.UseRegistry = false;">
<pr-icon icon="'globe'"> </pr-icon> Advanced mode <pr-icon icon="'globe'"> </pr-icon> Advanced mode
</button> </button>
</div> </div>

View file

@ -4,7 +4,7 @@
<div class="col-sm-12 form-section-title"> CIFS Settings </div> <div class="col-sm-12 form-section-title"> CIFS Settings </div>
<!-- address-input --> <!-- address-input -->
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="cifs_address" class="col-sm-2 col-md-1 control-label text-left required">Address</label> <label for="cifs_address" class="col-sm-2 col-md-1 control-label required text-left">Address</label>
<div class="col-sm-10 col-md-11"> <div class="col-sm-10 col-md-11">
<input type="text" class="form-control" ng-model="$ctrl.data.serverAddress" name="cifs_address" placeholder="e.g. my.cifs-server.com OR xxx.xxx.xxx.xxx" required /> <input type="text" class="form-control" ng-model="$ctrl.data.serverAddress" name="cifs_address" placeholder="e.g. my.cifs-server.com OR xxx.xxx.xxx.xxx" required />
</div> </div>
@ -19,7 +19,7 @@
<!-- !address-input --> <!-- !address-input -->
<!-- mount-point-input --> <!-- mount-point-input -->
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="cifs_share" class="col-sm-2 col-md-1 control-label text-left required">Share</label> <label for="cifs_share" class="col-sm-2 col-md-1 control-label required text-left">Share</label>
<div class="col-sm-10 col-md-11"> <div class="col-sm-10 col-md-11">
<input type="text" class="form-control" ng-model="$ctrl.data.share" name="cifs_share" placeholder="e.g. /myshare" required /> <input type="text" class="form-control" ng-model="$ctrl.data.share" name="cifs_share" placeholder="e.g. /myshare" required />
</div> </div>
@ -49,7 +49,7 @@
<!-- !version-input --> <!-- !version-input -->
<!-- username --> <!-- username -->
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="cifs_username" class="col-sm-2 col-md-1 control-label text-left required">Username</label> <label for="cifs_username" class="col-sm-2 col-md-1 control-label required text-left">Username</label>
<div class="col-sm-10 col-md-11"> <div class="col-sm-10 col-md-11">
<input type="text" class="form-control" ng-model="$ctrl.data.username" name="cifs_username" required /> <input type="text" class="form-control" ng-model="$ctrl.data.username" name="cifs_username" required />
</div> </div>

View file

@ -4,7 +4,7 @@
<div class="col-sm-12 form-section-title"> NFS Settings </div> <div class="col-sm-12 form-section-title"> NFS Settings </div>
<!-- address-input --> <!-- address-input -->
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="nfs_address" class="col-sm-2 col-md-1 control-label text-left required">Address</label> <label for="nfs_address" class="col-sm-2 col-md-1 control-label required text-left">Address</label>
<div class="col-sm-10 col-md-11"> <div class="col-sm-10 col-md-11">
<input type="text" class="form-control" ng-model="$ctrl.data.serverAddress" name="nfs_address" placeholder="e.g. my.nfs-server.com OR xxx.xxx.xxx.xxx" required /> <input type="text" class="form-control" ng-model="$ctrl.data.serverAddress" name="nfs_address" placeholder="e.g. my.nfs-server.com OR xxx.xxx.xxx.xxx" required />
</div> </div>
@ -34,7 +34,7 @@
<!-- !version-input --> <!-- !version-input -->
<!-- mount-point-input --> <!-- mount-point-input -->
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="nfs_mountpoint" class="col-sm-2 col-md-1 control-label text-left required">Mount point</label> <label for="nfs_mountpoint" class="col-sm-2 col-md-1 control-label required text-left">Mount point</label>
<div class="col-sm-10 col-md-11"> <div class="col-sm-10 col-md-11">
<input <input
type="text" type="text"

View file

@ -29,7 +29,7 @@
<!-- labels --> <!-- labels -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 mt-1"> <div class="col-sm-12 mt-1">
<label class="control-label text-left space-right">Labels</label> <label class="control-label space-right text-left">Labels</label>
<span class="label label-default interactive vertical-center space-left" ng-click="ctrl.addLabel()"> <pr-icon icon="'plus'" mode="'alt'"></pr-icon> add label </span> <span class="label label-default interactive vertical-center space-left" ng-click="ctrl.addLabel()"> <pr-icon icon="'plus'" mode="'alt'"></pr-icon> add label </span>
</div> </div>
<!-- labels-input-list --> <!-- labels-input-list -->

View file

@ -34,7 +34,7 @@
<tr ng-if="!(config.Labels | emptyobject)"> <tr ng-if="!(config.Labels | emptyobject)">
<td>Labels</td> <td>Labels</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in config.Labels"> <tr ng-repeat="(k, v) in config.Labels">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>

View file

@ -19,7 +19,7 @@
<div ng-if="state === states.disconnected"> <div ng-if="state === states.disconnected">
<!-- command-list --> <!-- command-list -->
<div class="form-group"> <div class="form-group">
<label for="command" class="col-lg-1 text-left col-sm-2 control-label">Command</label> <label for="command" class="col-lg-1 col-sm-2 control-label text-left">Command</label>
<div class="col-lg-11 col-sm-10"> <div class="col-lg-11 col-sm-10">
<div class="input-group" ng-if="!formValues.isCustomCommand"> <div class="input-group" ng-if="!formValues.isCustomCommand">
<span class="input-group-addon"> <span class="input-group-addon">
@ -48,7 +48,7 @@
></por-switch-field> ></por-switch-field>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-lg-1 text-left col-sm-2 control-label"> <label class="col-lg-1 col-sm-2 control-label text-left">
User User
<portainer-tooltip message="'Format is one of: user, user:group, uid or uid:gid'"></portainer-tooltip> <portainer-tooltip message="'Format is one of: user, user:group, uid or uid:gid'"></portainer-tooltip>
</label> </label>

View file

@ -718,7 +718,7 @@
<div class="col-sm-12 form-section-title"> Resources </div> <div class="col-sm-12 form-section-title"> Resources </div>
<!-- memory-reservation-input --> <!-- memory-reservation-input -->
<div class="form-group flex"> <div class="form-group flex">
<label for="memory-reservation" class="col-sm-3 col-lg-2 control-label text-left vertical-center"> Memory reservation (MB) </label> <label for="memory-reservation" class="col-sm-3 col-lg-2 control-label vertical-center text-left"> Memory reservation (MB) </label>
<div class="col-sm-6"> <div class="col-sm-6">
<slider <slider
on-change="(handleResourceChange)" on-change="(handleResourceChange)"
@ -755,7 +755,7 @@
<!-- !memory-reservation-input --> <!-- !memory-reservation-input -->
<!-- memory-limit-input --> <!-- memory-limit-input -->
<div class="form-group flex"> <div class="form-group flex">
<label for="memory-limit" class="col-sm-3 col-lg-2 control-label text-left vertical-center"> Memory limit (MB) </label> <label for="memory-limit" class="col-sm-3 col-lg-2 control-label vertical-center text-left"> Memory limit (MB) </label>
<div class="col-sm-6"> <div class="col-sm-6">
<slider <slider
on-change="(handleResourceChange)" on-change="(handleResourceChange)"
@ -792,7 +792,7 @@
<!-- !memory-limit-input --> <!-- !memory-limit-input -->
<!-- cpu-limit-input --> <!-- cpu-limit-input -->
<div class="form-group flex"> <div class="form-group flex">
<label for="cpu-limit" class="col-sm-3 col-lg-2 control-label text-left vertical-center"> Maximum CPU usage </label> <label for="cpu-limit" class="col-sm-3 col-lg-2 control-label vertical-center text-left"> Maximum CPU usage </label>
<div class="col-sm-8"> <div class="col-sm-8">
<slider <slider
on-change="(handleResourceChange)" on-change="(handleResourceChange)"

View file

@ -235,7 +235,7 @@
<rd-widget> <rd-widget>
<rd-widget-header icon="list" title-text="Container details"></rd-widget-header> <rd-widget-header icon="list" title-text="Container details"></rd-widget-header>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<table class="table container-details-table"> <table class="container-details-table table">
<tbody> <tbody>
<tr> <tr>
<td>Image</td> <td>Image</td>
@ -268,7 +268,7 @@
<tr> <tr>
<td>ENV</td> <td>ENV</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="var in container.Config.Env track by $index"> <tr ng-repeat="var in container.Config.Env track by $index">
<td>{{ var|key: '=' }}</td> <td>{{ var|key: '=' }}</td>
<td>{{ var|value: '=' }}</td> <td>{{ var|value: '=' }}</td>
@ -279,7 +279,7 @@
<tr ng-if="!(container.Config.Labels | emptyobject)"> <tr ng-if="!(container.Config.Labels | emptyobject)">
<td>Labels</td> <td>Labels</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in container.Config.Labels"> <tr ng-repeat="(k, v) in container.Config.Labels">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>
@ -302,7 +302,7 @@
<tr ng-if="!(container.HostConfig.Sysctls | emptyobject)"> <tr ng-if="!(container.HostConfig.Sysctls | emptyobject)">
<td>Sysctls</td> <td>Sysctls</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in container.HostConfig.Sysctls"> <tr ng-repeat="(k, v) in container.HostConfig.Sysctls">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>

View file

@ -143,7 +143,7 @@
<tr ng-if="!(image.Labels | emptyobject)"> <tr ng-if="!(image.Labels | emptyobject)">
<td>Labels</td> <td>Labels</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in image.Labels"> <tr ng-repeat="(k, v) in image.Labels">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>

View file

@ -37,7 +37,7 @@
<!-- labels --> <!-- labels -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 mt-1"> <div class="col-sm-12 mt-1">
<label class="control-label text-left space-right">Labels</label> <label class="control-label space-right text-left">Labels</label>
<span class="label label-default interactive vertical-center space-left" ng-click="addLabel()"> <pr-icon icon="'plus'" mode="'alt'"></pr-icon> add label </span> <span class="label label-default interactive vertical-center space-left" ng-click="addLabel()"> <pr-icon icon="'plus'" mode="'alt'"></pr-icon> add label </span>
</div> </div>
<!-- labels-input-list --> <!-- labels-input-list -->

View file

@ -31,7 +31,7 @@
<tr ng-if="!(secret.Labels | emptyobject)"> <tr ng-if="!(secret.Labels | emptyobject)">
<td>Labels</td> <td>Labels</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in secret.Labels"> <tr ng-repeat="(k, v) in secret.Labels">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>

View file

@ -45,7 +45,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="service.ServiceConfigs.length === 0"> <tr ng-if="service.ServiceConfigs.length === 0">
<td colspan="6" class="text-center text-muted">No configs associated to this service.</td> <td colspan="6" class="text-muted text-center">No configs associated to this service.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -49,7 +49,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="service.LogDriverOpts.length === 0"> <tr ng-if="service.LogDriverOpts.length === 0">
<td colspan="6" class="text-center text-muted">No options associated to this logging driver.</td> <td colspan="6" class="text-muted text-center">No options associated to this logging driver.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -44,7 +44,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="service.ServiceSecrets.length === 0"> <tr ng-if="service.ServiceSecrets.length === 0">
<td colspan="6" class="text-center text-muted">No secrets associated to this service.</td> <td colspan="6" class="text-muted text-center">No secrets associated to this service.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -92,7 +92,7 @@
<td colspan="2"> <td colspan="2">
<p class="small text-muted" authorization="DockerServiceUpdate"> <p class="small text-muted" authorization="DockerServiceUpdate">
Note: you can only rollback one level of changes. Clicking the rollback button without making a new change will undo your previous rollback </p Note: you can only rollback one level of changes. Clicking the rollback button without making a new change will undo your previous rollback </p
><div class="flex gap-x-2 gap-y-1 flex-wrap"> ><div class="flex flex-wrap gap-x-2 gap-y-1">
<a <a
authorization="DockerServiceLogs" authorization="DockerServiceLogs"
ng-if="applicationState.endpoint.apiVersion >= 1.3" ng-if="applicationState.endpoint.apiVersion >= 1.3"

View file

@ -31,7 +31,7 @@
<tr ng-if="!(volume.Labels | emptyobject)"> <tr ng-if="!(volume.Labels | emptyobject)">
<td>Labels</td> <td>Labels</td>
<td> <td>
<table class="table table-bordered table-condensed"> <table class="table-bordered table-condensed table">
<tr ng-repeat="(k, v) in volume.Labels"> <tr ng-repeat="(k, v) in volume.Labels">
<td>{{ k }}</td> <td>{{ k }}</td>
<td>{{ v }}</td> <td>{{ v }}</td>

View file

@ -22,7 +22,7 @@
/> />
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -58,10 +58,10 @@
<td>{{ item.GroupName }}</td> <td>{{ item.GroupName }}</td>
</tr> </tr>
<tr ng-if="$ctrl.state.loading"> <tr ng-if="$ctrl.state.loading">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0"> <tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No environment available.</td> <td colspan="5" class="text-muted text-center">No environment available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -2,7 +2,7 @@
<div class="col-sm-12 form-section-title"> Edge job configuration </div> <div class="col-sm-12 form-section-title"> Edge job configuration </div>
<!-- name-input --> <!-- name-input -->
<div class="form-group mt-4"> <div class="form-group mt-4">
<label for="edgejob_name" class="col-sm-2 control-label text-left required">Name </label> <label for="edgejob_name" class="col-sm-2 control-label required text-left">Name </label>
<div class="col-sm-10"> <div class="col-sm-10">
<input <input
type="text" type="text"

View file

@ -12,7 +12,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover table-filters nowrap-cells"> <table class="table-hover table-filters nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -40,10 +40,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="9" class="text-center text-muted">Loading...</td> <td colspan="9" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="9" class="text-center text-muted">No result available.</td> <td colspan="9" class="text-muted text-center">No result available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -15,7 +15,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -71,10 +71,10 @@
<td>{{ item.Created | getisodatefromtimestamp }}</td> <td>{{ item.Created | getisodatefromtimestamp }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No Edge job available.</td> <td colspan="3" class="text-muted text-center">No Edge job available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -17,7 +17,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -60,10 +60,10 @@
<td>{{ $ctrl.endpointStatusError(item.Id) }}</td> <td>{{ $ctrl.endpointStatusError(item.Id) }}</td>
</tr> </tr>
<tr ng-if="$ctrl.state.loading"> <tr ng-if="$ctrl.state.loading">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0"> <tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No environment available.</td> <td colspan="5" class="text-muted text-center">No environment available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -69,7 +69,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="edgeStack-stackTable"> <table class="table-hover nowrap-cells table" data-cy="edgeStack-stackTable">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -142,10 +142,10 @@
<td>{{ item.CreationDate | getisodatefromtimestamp }}</td> <td>{{ item.CreationDate | getisodatefromtimestamp }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset" data-cy="edgeStack-loadingRow"> <tr ng-if="!$ctrl.dataset" data-cy="edgeStack-loadingRow">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0" data-cy="edgeStack-noStackRow"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0" data-cy="edgeStack-noStackRow">
<td colspan="6" class="text-center text-muted"> No stack available. </td> <td colspan="6" class="text-muted text-center"> No stack available. </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -24,7 +24,7 @@
read-only="$ctrl.state.readOnlyCompose" read-only="$ctrl.state.readOnlyCompose"
></edge-stack-deployment-type-selector> ></edge-stack-deployment-type-selector>
<div class="flex gap-1 text-muted small" ng-show="!$ctrl.model.DeploymentType && $ctrl.hasKubeEndpoint()"> <div class="text-muted small flex gap-1" ng-show="!$ctrl.model.DeploymentType && $ctrl.hasKubeEndpoint()">
<pr-icon icon="'alert-circle'" mode="'warning'" class-name="'!mt-1'"></pr-icon> <pr-icon icon="'alert-circle'" mode="'warning'" class-name="'!mt-1'"></pr-icon>
<div> <div>
<p> <p>

View file

@ -1,6 +1,6 @@
<form class="form-horizontal" name="EdgeGroupForm" ng-submit="$ctrl.formAction()"> <form class="form-horizontal" name="EdgeGroupForm" ng-submit="$ctrl.formAction()">
<div class="form-group"> <div class="form-group">
<label for="group_name" class="col-sm-3 col-lg-2 control-label text-left required"> Name </label> <label for="group_name" class="col-sm-3 col-lg-2 control-label required text-left"> Name </label>
<div class="col-sm-9 col-lg-10"> <div class="col-sm-9 col-lg-10">
<input <input
type="text" type="text"

View file

@ -31,7 +31,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="edgeGroup-edgeGroupTable"> <table class="table-hover nowrap-cells table" data-cy="edgeGroup-edgeGroupTable">
<thead> <thead>
<tr> <tr>
<th class="flex"> <th class="flex">
@ -90,10 +90,10 @@
<td>{{ item.Dynamic ? 'Dynamic' : 'Static' }}</td> <td>{{ item.Dynamic ? 'Dynamic' : 'Static' }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="4" class="text-center text-muted"> No Edge group available. </td> <td colspan="4" class="text-muted text-center"> No Edge group available. </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -7,7 +7,7 @@
<form class="form-horizontal" name="$ctrl.form"> <form class="form-horizontal" name="$ctrl.form">
<!-- name-input --> <!-- name-input -->
<div class="form-group"> <div class="form-group">
<label for="stack_name" class="col-sm-1 control-label text-left required"> Name </label> <label for="stack_name" class="col-sm-1 control-label required text-left"> Name </label>
<div class="col-sm-11"> <div class="col-sm-11">
<input <input
type="text" type="text"

View file

@ -53,7 +53,7 @@
<div class="page-content"> <div class="page-content">
<div class="page-wrapper" ng-if="applicationState.loading"> <div class="page-wrapper" ng-if="applicationState.loading">
<!-- loading box --> <!-- loading box -->
<div class="container simple-box"> <div class="simple-box container">
<div class="col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3"> <div class="col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3">
<!-- loading box logo --> <!-- loading box logo -->
<div class="row"> <div class="row">
@ -75,7 +75,7 @@
stroke-width="2" stroke-width="2"
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" stroke-linejoin="round"
class="inline animate-spin-slow !ml-1" class="!ml-1 inline animate-spin-slow"
> >
<circle cx="12" cy="12" r="3"></circle> <circle cx="12" cy="12" r="3"></circle>
<path <path

View file

@ -57,7 +57,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="k8sAppDetail-containerTable"> <table class="table-hover nowrap-cells table" data-cy="k8sAppDetail-containerTable">
<thead> <thead>
<tr> <tr>
<th ng-if="!$ctrl.isPod"> <th ng-if="!$ctrl.isPod">
@ -178,10 +178,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="7" class="text-center text-muted">Loading...</td> <td colspan="7" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="7" class="text-center text-muted">No pod available.</td> <td colspan="7" class="text-muted text-center">No pod available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,4 +1,4 @@
<div class="col-xs-12 text-[13px] !px-0 !py-1"> Secrets </div> <div class="col-xs-12 !px-0 !py-1 text-[13px]"> Secrets </div>
<table style="width: 50%"> <table style="width: 50%">
<tbody> <tbody>
<tr> <tr>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<!-- toolbar header actions and settings --> <!-- toolbar header actions and settings -->
<div ng-if="$ctrl.isPrimary" class="toolBar !flex-col gap-1"> <div ng-if="$ctrl.isPrimary" class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'box'"></pr-icon> <pr-icon icon="'box'"></pr-icon>
@ -21,11 +21,11 @@
data-cy="k8sApp-searchApplicationsInput" data-cy="k8sApp-searchApplicationsInput"
/> />
</div> </div>
<div class="actionBar !gap-3 !mr-0"> <div class="actionBar !mr-0 !gap-3">
<button <button
ng-if="$ctrl.isPrimary" ng-if="$ctrl.isPrimary"
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
data-cy="k8sApp-removeAppButton" data-cy="k8sApp-removeAppButton"
@ -36,7 +36,7 @@
<button <button
ng-if="$ctrl.isPrimary" ng-if="$ctrl.isPrimary"
type="button" type="button"
class="btn btn-sm btn-secondary h-fit vertical-center !ml-0" class="btn btn-sm btn-secondary vertical-center !ml-0 h-fit"
ui-sref="kubernetes.applications.new" ui-sref="kubernetes.applications.new"
data-cy="k8sApp-addApplicationButton" data-cy="k8sApp-addApplicationButton"
> >
@ -45,7 +45,7 @@
<button <button
ng-if="$ctrl.isPrimary" ng-if="$ctrl.isPrimary"
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="kubernetes.deploy" ui-sref="kubernetes.deploy"
data-cy="k8sApp-deployFromManifestButton" data-cy="k8sApp-deployFromManifestButton"
> >
@ -105,8 +105,8 @@
</span> </span>
</div> </div>
</div> </div>
<div class="flex flex-row w-full" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem"> <div class="flex w-full flex-row" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem">
<span class="small text-muted mt-1 vertical-center"> <span class="small text-muted vertical-center mt-1">
<pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon> <pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon>
System resources are hidden, this can be changed in the table settings. System resources are hidden, this can be changed in the table settings.
</span> </span>
@ -114,16 +114,16 @@
</div> </div>
<!-- data table content --> <!-- data table content -->
<div ng-class="{ 'table-responsive': $ctrl.isPrimary, 'inner-datatable': !$ctrl.isPrimary }"> <div ng-class="{ 'table-responsive': $ctrl.isPrimary, 'inner-datatable': !$ctrl.isPrimary }">
<table class="table table-hover table-filters nowrap-cells" data-cy="k8sApp-appTable"> <table class="table-hover table-filters nowrap-cells table" data-cy="k8sApp-appTable">
<thead ng-class="{ 'secondary-heading': !$ctrl.isPrimary }"> <thead ng-class="{ 'secondary-heading': !$ctrl.isPrimary }">
<tr role="row"> <tr role="row">
<th role="columnheader" class="datatable-wide dropdown"> <th role="columnheader" class="datatable-wide dropdown">
<div ng-if="$ctrl.isPrimary" class="flex no-wrap min-w-max"> <div ng-if="$ctrl.isPrimary" class="no-wrap flex min-w-max">
<span class="md-checkbox vertical-center"> <span class="md-checkbox vertical-center">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" data-cy="k8sApp-selectAllCheckbox" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" data-cy="k8sApp-selectAllCheckbox" />
<label for="select_all"></label> <label for="select_all"></label>
</span> </span>
<div class="cursor-pointer vertical-center" ng-click="$ctrl.expandAll()"> <div class="vertical-center cursor-pointer" ng-click="$ctrl.expandAll()">
<pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon> <pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon>
<pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon> <pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon>
</div> </div>
@ -166,7 +166,7 @@
></table-column-header> ></table-column-header>
</th> </th>
<th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open"> <th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open">
<div class="flex flex-row no-wrap gap-2"> <div class="no-wrap flex flex-row gap-2">
<table-column-header <table-column-header
col-title="'Application Type'" col-title="'Application Type'"
can-sort="true" can-sort="true"
@ -174,7 +174,7 @@
is-sorted-desc="$ctrl.state.orderBy === 'ApplicationType' && $ctrl.state.reverseOrder" is-sorted-desc="$ctrl.state.orderBy === 'ApplicationType' && $ctrl.state.reverseOrder"
ng-click="$ctrl.changeOrderBy('ApplicationType')" ng-click="$ctrl.changeOrderBy('ApplicationType')"
></table-column-header> ></table-column-header>
<div class="flex flex-row no-wrap gap-1 items-center" uib-dropdown-toggle> <div class="no-wrap flex flex-row items-center gap-1" uib-dropdown-toggle>
<span class="table-filter">Filters</span> <span class="table-filter">Filters</span>
<pr-icon ng-if="!$ctrl.filters.state.enabled" icon="'filter'"></pr-icon> <pr-icon ng-if="!$ctrl.filters.state.enabled" icon="'filter'"></pr-icon>
<pr-icon ng-if="$ctrl.filters.state.enabled" icon="'check'"></pr-icon> <pr-icon ng-if="$ctrl.filters.state.enabled" icon="'check'"></pr-icon>
@ -308,10 +308,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="8" class="text-center text-muted">Loading...</td> <td colspan="8" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="8" class="text-center text-muted">No application available.</td> <td colspan="8" class="text-muted text-center">No application available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<!-- table title and action menu --> <!-- table title and action menu -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<!-- title --> <!-- title -->
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
@ -76,8 +76,8 @@
</div> </div>
</div> </div>
<!-- info text --> <!-- info text -->
<div class="flex flex-row w-full"> <div class="flex w-full flex-row">
<span class="small text-muted mt-1 vertical-center" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem"> <span class="small text-muted vertical-center mt-1" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem">
<pr-icon icon="'info'" mode="'primary'"></pr-icon> <pr-icon icon="'info'" mode="'primary'"></pr-icon>
System resources are hidden, this can be changed in the table settings. System resources are hidden, this can be changed in the table settings.
</span> </span>
@ -85,11 +85,11 @@
</div> </div>
<!-- table --> <!-- table -->
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
<div class="cursor-pointer vertical-center" ng-click="$ctrl.expandAll()" ng-if="$ctrl.hasExpandableItems()" class="flex no-wrap min-w-max"> <div class="vertical-center cursor-pointer" ng-click="$ctrl.expandAll()" ng-if="$ctrl.hasExpandableItems()" class="no-wrap flex min-w-max">
<pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'" class-name="'icon'"></pr-icon> <pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'" class-name="'icon'"></pr-icon>
<pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'" class-name="'icon'"></pr-icon> <pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'" class-name="'icon'"></pr-icon>
</div> </div>
@ -252,11 +252,11 @@
<tr class="!h-0" dir-paginate-end></tr> <tr class="!h-0" dir-paginate-end></tr>
<!-- no dataset --> <!-- no dataset -->
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<!-- no values in filtered dataset --> <!-- no values in filtered dataset -->
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="6" class="text-center text-muted">No application port mapping available.</td> <td colspan="6" class="text-muted text-center">No application port mapping available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<!-- table title and action menu --> <!-- table title and action menu -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<!-- title --> <!-- title -->
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
@ -22,10 +22,10 @@
ng-model-options="{ debounce: 300 }" ng-model-options="{ debounce: 300 }"
/> />
</div> </div>
<div class="actionBar !gap-3 !mr-0"> <div class="actionBar !mr-0 !gap-3">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
data-cy="k8sApp-removeStackButton" data-cy="k8sApp-removeStackButton"
@ -88,19 +88,19 @@
</div> </div>
</div> </div>
<!-- info text --> <!-- info text -->
<div class="flex flex-row w-full"> <div class="flex w-full flex-row">
<span class="small text-muted mt-1 vertical-center" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem"> <span class="small text-muted vertical-center mt-1" ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem">
<pr-icon icon="'info'" mode="'primary'"></pr-icon> <pr-icon icon="'info'" mode="'primary'"></pr-icon>
System resources are hidden, this can be changed in the table settings. System resources are hidden, this can be changed in the table settings.
</span> </span>
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th class="w-20 dropdown"> <th class="dropdown w-20">
<div class="flex no-wrap h-full items-center"> <div class="no-wrap flex h-full items-center">
<span class="md-checkbox"> <span class="md-checkbox">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" />
<label for="select_all"></label> <label for="select_all"></label>
@ -151,7 +151,7 @@
pagination-id="$ctrl.tableKey" pagination-id="$ctrl.tableKey"
> >
<td> <td>
<div class="flex no-wrap items-center"> <div class="no-wrap flex items-center">
<span class="md-checkbox"> <span class="md-checkbox">
<input <input
id="select_{{ $index }}" id="select_{{ $index }}"
@ -198,10 +198,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No stack available.</td> <td colspan="5" class="text-muted text-center">No stack available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -3,14 +3,14 @@
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<!-- table title and action menu --> <!-- table title and action menu -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !px-0 !py-1 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !px-0 !py-1">
<div class="toolBarTitle"> <div class="toolBarTitle">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'lock'"></pr-icon> <pr-icon icon="'lock'"></pr-icon>
</div> </div>
ConfigMaps & Secrets ConfigMaps & Secrets
</div> </div>
<div class="searchBar vertical-center w-72 !mr-0"> <div class="searchBar vertical-center !mr-0 w-72">
<pr-icon icon="'search'" class-name="'icon !h-3'"></pr-icon> <pr-icon icon="'search'" class-name="'icon !h-3'"></pr-icon>
<input <input
type="text" type="text"
@ -24,20 +24,20 @@
/> />
</div> </div>
<!-- actions --> <!-- actions -->
<div class="actionBar !gap-3 !mr-0"> <div class="actionBar !mr-0 !gap-3">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight !ml-0 vertical-center" class="btn btn-sm btn-dangerlight vertical-center !ml-0"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
data-cy="k8sConfig-removeConfigButton" data-cy="k8sConfig-removeConfigButton"
> >
<pr-icon icon="'trash-2'"></pr-icon>Remove <pr-icon icon="'trash-2'"></pr-icon>Remove
</button> </button>
<button type="button" class="btn btn-sm btn-secondary !ml-0 vertical-center" ui-sref="kubernetes.configurations.new" data-cy="k8sConfig-addConfigWithFormButton"> <button type="button" class="btn btn-sm btn-secondary vertical-center !ml-0" ui-sref="kubernetes.configurations.new" data-cy="k8sConfig-addConfigWithFormButton">
<pr-icon icon="'plus'" class-name="'!h-3'"></pr-icon>Add with form <pr-icon icon="'plus'" class-name="'!h-3'"></pr-icon>Add with form
</button> </button>
<button type="button" class="btn btn-sm btn-primary !ml-0 vertical-center" ui-sref="kubernetes.deploy" data-cy="k8sConfig-deployFromManifestButton"> <button type="button" class="btn btn-sm btn-primary vertical-center !ml-0" ui-sref="kubernetes.deploy" data-cy="k8sConfig-deployFromManifestButton">
<pr-icon icon="'plus'" class-name="'!h-3'"></pr-icon>Create from manifest <pr-icon icon="'plus'" class-name="'!h-3'"></pr-icon>Create from manifest
</button> </button>
</div> </div>
@ -88,15 +88,15 @@
</span> </span>
</div> </div>
</div> </div>
<div ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem" class="flex flex-row w-full"> <div ng-if="$ctrl.isAdmin && !$ctrl.settings.showSystem" class="flex w-full flex-row">
<span class="small text-muted mt-1 vertical-center"> <span class="small text-muted vertical-center mt-1">
<pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon> <pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon>
<div> System resources are hidden, this can be changed in the table settings. </div> <div> System resources are hidden, this can be changed in the table settings. </div>
</span> </span>
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="k8sConfig-tableSettingsButtonconfigsTable"> <table class="table-hover nowrap-cells table" data-cy="k8sConfig-tableSettingsButtonconfigsTable">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -164,10 +164,10 @@
<td>{{ item.CreationDate | getisodate }} {{ item.ConfigurationOwner ? 'by ' + item.ConfigurationOwner : '' }}</td> <td>{{ item.CreationDate | getisodate }} {{ item.ConfigurationOwner ? 'by ' + item.ConfigurationOwner : '' }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="4" class="text-center text-muted">No configuration available.</td> <td colspan="4" class="text-muted text-center">No configuration available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -55,7 +55,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="k8sConfigDetail-eventsTable"> <table class="table-hover nowrap-cells table" data-cy="k8sConfigDetail-eventsTable">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -109,10 +109,10 @@
<td>{{ item.Message }}</td> <td>{{ item.Message }}</td>
</tr> </tr>
<tr ng-if="$ctrl.loading"> <tr ng-if="$ctrl.loading">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)"> <tr ng-if="!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)">
<td colspan="4" class="text-center text-muted">No event available.</td> <td colspan="4" class="text-muted text-center">No event available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -58,7 +58,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -101,10 +101,10 @@
<td title="{{ item.Image }}">{{ item.Image | truncate : 64 }}</td> <td title="{{ item.Image }}">{{ item.Image | truncate : 64 }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No application available.</td> <td colspan="3" class="text-muted text-center">No application available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -58,7 +58,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -137,10 +137,10 @@
<td>{{ item.Memory | humansize }}</td> <td>{{ item.Memory | humansize }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="6" class="text-center text-muted">No stack available.</td> <td colspan="6" class="text-muted text-center">No stack available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -65,7 +65,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -159,10 +159,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="7" class="text-center text-muted">Loading...</td> <td colspan="7" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="7" class="text-center text-muted">No node available.</td> <td colspan="7" class="text-muted text-center">No node available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -56,7 +56,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -122,10 +122,10 @@
<td>{{ item.Memory | humansize }}</td> <td>{{ item.Memory | humansize }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No application available.</td> <td colspan="5" class="text-muted text-center">No application available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -3,7 +3,7 @@
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<!-- toolbar header actions and settings --> <!-- toolbar header actions and settings -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'layers'"></pr-icon> <pr-icon icon="'layers'"></pr-icon>
@ -23,10 +23,10 @@
data-cy="k8sNamespace-namespaceSearchInput" data-cy="k8sNamespace-namespaceSearchInput"
/> />
</div> </div>
<div class="actionBar !gap-3 !mr-0" ng-if="$ctrl.isAdmin"> <div class="actionBar !mr-0 !gap-3" ng-if="$ctrl.isAdmin">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
data-cy="k8sNamespace-removeNamespaceButton" data-cy="k8sNamespace-removeNamespaceButton"
@ -82,8 +82,8 @@
</div> </div>
</div> </div>
<div class="flex flex-row w-full" ng-if="!$ctrl.settings.showSystem && $ctrl.isAdmin"> <div class="flex w-full flex-row" ng-if="!$ctrl.settings.showSystem && $ctrl.isAdmin">
<span class="small text-muted mt-1 vertical-center"> <span class="small text-muted vertical-center mt-1">
<pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon> <pr-icon icon="'info'" mode="'primary'" class="vertical-center"></pr-icon>
<div> System resources are hidden, this can be changed in the table settings. </div> <div> System resources are hidden, this can be changed in the table settings. </div>
</span> </span>
@ -91,11 +91,11 @@
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th class="dropdown"> <th class="dropdown">
<div class="flex flex-nowrap min-w-max vertical-center"> <div class="vertical-center flex min-w-max flex-nowrap">
<span ng-if="$ctrl.isAdmin" class="md-checkbox vertical-center"> <span ng-if="$ctrl.isAdmin" class="md-checkbox vertical-center">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" />
<label for="select_all"></label> <label for="select_all"></label>
@ -171,10 +171,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="4" class="text-center text-muted">No namespace available.</td> <td colspan="4" class="text-muted text-center">No namespace available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<!-- toolbar header actions and settings --> <!-- toolbar header actions and settings -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'database'"></pr-icon> <pr-icon icon="'database'"></pr-icon>
@ -20,7 +20,7 @@
ng-model-options="{ debounce: 300 }" ng-model-options="{ debounce: 300 }"
/> />
</div> </div>
<div class="actionBar !gap-3 !mr-0"> <div class="actionBar !mr-0 !gap-3">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0"
@ -84,19 +84,19 @@
</span> </span>
</div> </div>
</div> </div>
<div class="flex flex-row w-full" ng-if="!ctrl.isAdmin && !$ctrl.settings.showSystem"> <div class="flex w-full flex-row" ng-if="!ctrl.isAdmin && !$ctrl.settings.showSystem">
<span class="small text-muted mt-1 vertical-center"> <span class="small text-muted vertical-center mt-1">
<pr-icon icon="'info'" mode="'primary'"></pr-icon> <pr-icon icon="'info'" mode="'primary'"></pr-icon>
<span> System resources are hidden, this can be changed in the table settings. </span> <span> System resources are hidden, this can be changed in the table settings. </span>
</span> </span>
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
<div class="flex flex-no-wrap items-center"> <div class="flex-no-wrap flex items-center">
<span class="md-checkbox vertical-center"> <span class="md-checkbox vertical-center">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" />
<label for="select_all"></label> <label for="select_all"></label>
@ -194,10 +194,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="6" class="text-center text-muted">No volume available.</td> <td colspan="6" class="text-muted text-center">No volume available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<rd-widget> <rd-widget>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap w-full relative"> <div class="toolBar vertical-center relative w-full flex-wrap !gap-x-5 !gap-y-1">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="$ctrl.titleIcon"></pr-icon> <pr-icon icon="$ctrl.titleIcon"></pr-icon>
@ -42,11 +42,11 @@
on-select="($ctrl.selectAction)" on-select="($ctrl.selectAction)"
> >
</helm-templates-list-item> </helm-templates-list-item>
<div ng-if="$ctrl.loading" class="text-center text-muted"> <div ng-if="$ctrl.loading" class="text-muted text-center">
Loading... Loading...
<div class="text-center text-muted"> Initial download of Helm Charts can take a few minutes </div> <div class="text-muted text-center"> Initial download of Helm Charts can take a few minutes </div>
</div> </div>
<div ng-if="!$ctrl.loading && $ctrl.charts.length === 0" class="text-center text-muted"> No helm charts available. </div> <div ng-if="!$ctrl.loading && $ctrl.charts.length === 0" class="text-muted text-center"> No helm charts available. </div>
</div> </div>
</rd-widget-body> </rd-widget-body>
</rd-widget> </rd-widget>

View file

@ -3,7 +3,7 @@
<information-panel title-text="Information" ng-if="!$ctrl.state.chart"> <information-panel title-text="Information" ng-if="!$ctrl.state.chart">
<span class="small text-muted"> <span class="small text-muted">
<p class="inline-flex flex-row items-center"> <p class="inline-flex flex-row items-center">
<pr-icon icon="'info'" class="mr-1 vertical-center" mode="'primary'"></pr-icon> <pr-icon icon="'info'" class="vertical-center mr-1" mode="'primary'"></pr-icon>
This is a first version for Helm charts, for more information see this&nbsp;<a This is a first version for Helm charts, for more information see this&nbsp;<a
class="hyperlink" class="hyperlink"
href="https://www.portainer.io/blog/portainer-now-with-helm-support" href="https://www.portainer.io/blog/portainer-now-with-helm-support"
@ -23,7 +23,7 @@
<!-- helmchart-form --> <!-- helmchart-form -->
<div class="col-sm-12" ng-if="$ctrl.state.chart"> <div class="col-sm-12" ng-if="$ctrl.state.chart">
<rd-widget> <rd-widget>
<div class="toolBarTitle vertical-center pt-5 px-5 text-muted"> <div class="toolBarTitle vertical-center text-muted px-5 pt-5">
<fallback-image src="$ctrl.state.chart.icon" fallback-icon="'svg-helm'" class-name="'h-8 w-8'" size="'lg'"></fallback-image> <fallback-image src="$ctrl.state.chart.icon" fallback-icon="'svg-helm'" class-name="'h-8 w-8'" size="'lg'"></fallback-image>
{{ $ctrl.state.chart.name }} {{ $ctrl.state.chart.name }}
</div> </div>
@ -34,7 +34,7 @@
<div class="col-sm-12 form-section-title"> Description </div> <div class="col-sm-12 form-section-title"> Description </div>
<div class="form-group"> <div class="form-group">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="text-xs text-muted" ng-bind-html="$ctrl.state.chart.description"></div> <div class="text-muted text-xs" ng-bind-html="$ctrl.state.chart.description"></div>
</div> </div>
</div> </div>
</div> </div>
@ -63,7 +63,7 @@
<!-- !namespace-input --> <!-- !namespace-input -->
<!-- name-input --> <!-- name-input -->
<div class="form-group mb-2"> <div class="form-group mb-2">
<label for="release_name" class="col-sm-2 control-label text-left required">Name</label> <label for="release_name" class="col-sm-2 control-label required text-left">Name</label>
<div class="col-sm-10"> <div class="col-sm-10">
<input <input
type="text" type="text"

View file

@ -1,12 +1,12 @@
<ng-form name="serviceForm"> <ng-form name="serviceForm">
<div ng-if="$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled"> <div ng-if="$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled">
<p class="text-warning pt-2 vertical-center"> <p class="text-warning vertical-center pt-2">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, click <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, click
<a class="hyperlink" ui-sref="kubernetes.cluster.setup">here</a> to configure load balancer. <a class="hyperlink" ui-sref="kubernetes.cluster.setup">here</a> to configure load balancer.
</p> </p>
</div> </div>
<div ng-if="!$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled"> <div ng-if="!$ctrl.isAdmin()" class="small" ng-show="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER && !$ctrl.loadbalancerEnabled">
<p class="text-warning pt-2 vertical-center"> <p class="text-warning vertical-center pt-2">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, contact your administrator. <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> No Load balancer is available in this cluster, contact your administrator.
</p> </p>
</div> </div>
@ -18,14 +18,14 @@
$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT $ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT
" "
> >
<div ng-show="!$ctrl.multiItemDisable" class="mt-5 mb-5 vertical-center"> <div ng-show="!$ctrl.multiItemDisable" class="vertical-center mt-5 mb-5">
<label class="control-label text-left !pt-0">Published ports</label> <label class="control-label !pt-0 text-left">Published ports</label>
<span class="label label-default interactive ml-2.5 vertical-center" ng-click="$ctrl.addPort()" data-cy="k8sAppCreate-addNewPortButton"> <span class="label label-default interactive vertical-center ml-2.5" ng-click="$ctrl.addPort()" data-cy="k8sAppCreate-addNewPortButton">
<pr-icon icon="'plus'" mode="'alt'" size="'sm'"></pr-icon> publish a new port <pr-icon icon="'plus'" mode="'alt'" size="'sm'"></pr-icon> publish a new port
</span> </span>
</div> </div>
<div ng-repeat="servicePort in $ctrl.service.Ports" class="mt-5 service-form row"> <div ng-repeat="servicePort in $ctrl.service.Ports" class="service-form row mt-5">
<div class="form-group !mx-0 !pl-0 col-sm-3"> <div class="form-group col-sm-3 !mx-0 !pl-0">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-addon required">Container port</span> <span class="input-group-addon required">Container port</span>
<input <input
@ -46,10 +46,10 @@
/> />
</div> </div>
<span> <span>
<div class="small mt-1 text-warning" ng-if="$ctrl.state.duplicates.targetPort.refs[$index] !== undefined"> <div class="small text-warning mt-1" ng-if="$ctrl.state.duplicates.targetPort.refs[$index] !== undefined">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This container port is already used. <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This container port is already used.
</div> </div>
<div class="small mt-1 text-warning" ng-messages="serviceForm['container_port_'+$index].$error"> <div class="small text-warning mt-1" ng-messages="serviceForm['container_port_'+$index].$error">
<p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number is required.</p> <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number is required.</p>
<p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p> <p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p>
<p class="vertical-center" ng-message="max"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p> <p class="vertical-center" ng-message="max"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Container port number must be inside the range 1-65535.</p>
@ -57,7 +57,7 @@
</span> </span>
</div> </div>
<div class="form-group !mx-0 !pl-0 col-sm-3"> <div class="form-group col-sm-3 !mx-0 !pl-0">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-addon required">Service port</span> <span class="input-group-addon required">Service port</span>
<input <input
@ -77,10 +77,10 @@
/> />
</div> </div>
<span> <span>
<div class="small mt-1 text-warning" ng-if="$ctrl.state.duplicates.servicePort.refs[$index] !== undefined"> <div class="small text-warning mt-1" ng-if="$ctrl.state.duplicates.servicePort.refs[$index] !== undefined">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This service port is already used. <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This service port is already used.
</div> </div>
<div class="small mt-1 text-warning"> <div class="small text-warning mt-1">
<div ng-messages="serviceForm['service_port_'+$index].$error"> <div ng-messages="serviceForm['service_port_'+$index].$error">
<p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number is required.</p> <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number is required.</p>
<p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number must be inside the range 1-65535.</p> <p class="vertical-center" ng-message="min"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Service port number must be inside the range 1-65535.</p>
@ -90,7 +90,7 @@
</span> </span>
</div> </div>
<div class="form-group !mx-0 !pl-0 col-sm-3" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT"> <div class="form-group col-sm-3 !mx-0 !pl-0" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.NODE_PORT">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-addon required">Nodeport</span> <span class="input-group-addon required">Nodeport</span>
<input <input
@ -110,7 +110,7 @@
</div> </div>
<div class="w-full"> <div class="w-full">
<span> <span>
<div class="small mt-1 text-warning"> <div class="small text-warning mt-1">
<div ng-messages="serviceForm['node_port_'+$index].$error"> <div ng-messages="serviceForm['node_port_'+$index].$error">
<p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport is required.</p> <p class="vertical-center" ng-message="required"><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport is required.</p>
<p class="vertical-center" ng-message="min" <p class="vertical-center" ng-message="min"
@ -119,7 +119,7 @@
<p class="vertical-center" ng-message="max" <p class="vertical-center" ng-message="max"
><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system allocated.</p ><pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Nodeport number must be inside the range 30000-32767 or blank for system allocated.</p
> >
<div class="mt-1 text-warning" ng-if="$ctrl.state.duplicates.nodePort.refs[$index] !== undefined"> <div class="text-warning mt-1" ng-if="$ctrl.state.duplicates.nodePort.refs[$index] !== undefined">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This node port is already used. <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> This node port is already used.
</div> </div>
</div> </div>
@ -127,7 +127,7 @@
</span> </span>
</div> </div>
</div> </div>
<div class="form-group !mx-0 !pl-0 col-sm-3" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER"> <div class="form-group col-sm-3 !mx-0 !pl-0" ng-if="$ctrl.service.Type === $ctrl.KubernetesApplicationPublishingTypes.LOAD_BALANCER">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-addon">Loadbalancer port</span> <span class="input-group-addon">Loadbalancer port</span>
<input <input
@ -147,7 +147,7 @@
</div> </div>
</div> </div>
<div class="form-group !mx-0 !pl-0 col-sm-3"> <div class="form-group col-sm-3 !mx-0 !pl-0">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<div class="btn-group btn-group-sm"> <div class="btn-group btn-group-sm">
<label <label

View file

@ -67,13 +67,13 @@
Ingress Ingress
</div> </div>
<div ng-if="$ctrl.isAdmin()" class="small"> <div ng-if="$ctrl.isAdmin()" class="small">
<p class="text-warning pt-2 vertical-center"> <p class="text-warning vertical-center pt-2">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Ingress is not configured in this namespace, select another namespace or click <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Ingress is not configured in this namespace, select another namespace or click
<a ui-sref="kubernetes.cluster.setup">here</a> to configure ingress. <a ui-sref="kubernetes.cluster.setup">here</a> to configure ingress.
</p> </p>
</div> </div>
<div ng-if="!$ctrl.isAdmin()" class="small"> <div ng-if="!$ctrl.isAdmin()" class="small">
<p class="text-warning pt-2 vertical-center"> <p class="text-warning vertical-center pt-2">
<pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Ingress is not configured in this namespace, select another namespace or contact your administrator. <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Ingress is not configured in this namespace, select another namespace or contact your administrator.
</p> </p>
</div> </div>

View file

@ -3,10 +3,10 @@
<div class="form-group" ng-if="$ctrl.isCreation"> <div class="form-group" ng-if="$ctrl.isCreation">
<div class="col-sm-12"> <div class="col-sm-12">
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0" ng-if="$ctrl.formValues.IsSimple" ng-click="$ctrl.showAdvancedMode()"> <button type="button" class="btn btn-link btn-sm !ml-0 p-0 hover:no-underline" ng-if="$ctrl.formValues.IsSimple" ng-click="$ctrl.showAdvancedMode()">
<pr-icon icon="'list'"></pr-icon> Advanced mode <pr-icon icon="'list'"></pr-icon> Advanced mode
</button> </button>
<button type="button" class="btn btn-link btn-sm hover:no-underline !ml-0 p-0" ng-if="!$ctrl.formValues.IsSimple" ng-click="$ctrl.showSimpleMode()"> <button type="button" class="btn btn-link btn-sm !ml-0 p-0 hover:no-underline" ng-if="!$ctrl.formValues.IsSimple" ng-click="$ctrl.showSimpleMode()">
<pr-icon icon="'edit'"></pr-icon> Simple mode <pr-icon icon="'edit'"></pr-icon> Simple mode
</button> </button>
</div> </div>
@ -61,7 +61,7 @@
<div ng-repeat="(index, entry) in $ctrl.formValues.Data" ng-if="$ctrl.formValues.IsSimple"> <div ng-repeat="(index, entry) in $ctrl.formValues.Data" ng-if="$ctrl.formValues.IsSimple">
<div class="form-group"> <div class="form-group">
<label for="configuration_data_key_{{ index }}" class="col-sm-3 col-lg-2 control-label text-left required" <label for="configuration_data_key_{{ index }}" class="col-sm-3 col-lg-2 control-label required text-left"
>Key >Key
<portainer-tooltip message="'The key must consist of alphanumeric characters, \'-\', \'_\' or \'.\' and be up to 253 characters in length.'"></portainer-tooltip> <portainer-tooltip message="'The key must consist of alphanumeric characters, \'-\', \'_\' or \'.\' and be up to 253 characters in length.'"></portainer-tooltip>
</label> </label>
@ -103,7 +103,7 @@
</div> </div>
<div class="form-group" ng-if="$ctrl.formValues.IsSimple && !entry.IsBinary"> <div class="form-group" ng-if="$ctrl.formValues.IsSimple && !entry.IsBinary">
<label for="configuration_data_value_{{ index }}" class="col-sm-3 col-lg-2 control-label text-left required">Value</label> <label for="configuration_data_value_{{ index }}" class="col-sm-3 col-lg-2 control-label required text-left">Value</label>
<div class="col-sm-8 col-lg-9"> <div class="col-sm-8 col-lg-9">
<textarea <textarea
class="form-control" class="form-control"
@ -123,7 +123,7 @@
</div> </div>
<div class="form-group" ng-if="$ctrl.formValues.IsSimple && entry.IsBinary"> <div class="form-group" ng-if="$ctrl.formValues.IsSimple && entry.IsBinary">
<label for="configuration_data_value_{{ index }}" class="col-sm-3 col-lg-2 control-label text-left required">Value</label> <label for="configuration_data_value_{{ index }}" class="col-sm-3 col-lg-2 control-label required text-left">Value</label>
<div class="col-sm-8 control-label small text-muted text-left" <div class="col-sm-8 control-label small text-muted text-left"
>Binary data <portainer-tooltip message="'This key holds binary data and cannot be displayed.'"></portainer-tooltip >Binary data <portainer-tooltip message="'This key holds binary data and cannot be displayed.'"></portainer-tooltip
></div> ></div>

View file

@ -119,7 +119,7 @@
on-change="(ctrl.onChangeFileContent)" on-change="(ctrl.onChangeFileContent)"
> >
<editor-description> <editor-description>
<div class="flex gap-1 text-muted small" ng-show="ctrl.stack.IsComposeFormat"> <div class="text-muted small flex gap-1" ng-show="ctrl.stack.IsComposeFormat">
<pr-icon icon="'alert-circle'" mode="'warning'" class-name="'!mt-1'"></pr-icon> <pr-icon icon="'alert-circle'" mode="'warning'" class-name="'!mt-1'"></pr-icon>
<div> <div>
<p> <p>
@ -154,7 +154,7 @@
<div class="col-sm-12 form-section-title"> Application </div> <div class="col-sm-12 form-section-title"> Application </div>
<!-- #region NAME FIELD --> <!-- #region NAME FIELD -->
<div class="form-group"> <div class="form-group">
<label for="application_name" class="col-sm-3 col-lg-2 control-label text-left required">Name</label> <label for="application_name" class="col-sm-3 col-lg-2 control-label required text-left">Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
type="text" type="text"
@ -245,7 +245,7 @@
<!-- #region ENVIRONMENT VARIABLES --> <!-- #region ENVIRONMENT VARIABLES -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 vertical-center pt-2.5"> <div class="col-sm-12 vertical-center pt-2.5">
<label class="control-label text-left !pt-0">Environment variables</label> <label class="control-label !pt-0 text-left">Environment variables</label>
<span <span
ng-if="ctrl.formValues.Containers.length <= 1" ng-if="ctrl.formValues.Containers.length <= 1"
class="label label-default interactive vertical-center" class="label label-default interactive vertical-center"
@ -350,7 +350,7 @@
<!-- #region CONFIGURATIONS --> <!-- #region CONFIGURATIONS -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 vertical-center pt-2.5"> <div class="col-sm-12 vertical-center pt-2.5">
<label class="control-label text-left !pt-0">Configurations</label> <label class="control-label !pt-0 text-left">Configurations</label>
<span <span
class="label label-default interactive vertical-center" class="label label-default interactive vertical-center"
style="margin-left: 10px" style="margin-left: 10px"
@ -507,7 +507,7 @@
<div class="form-group" ng-if="ctrl.storageClassAvailable()"> <div class="form-group" ng-if="ctrl.storageClassAvailable()">
<div class="col-sm-12 vertical-center pt-2.5" style="margin-top: 5px" ng-if="!ctrl.allQuotasExhaustedAndNoVolumesAvailable()"> <div class="col-sm-12 vertical-center pt-2.5" style="margin-top: 5px" ng-if="!ctrl.allQuotasExhaustedAndNoVolumesAvailable()">
<label class="control-label text-left !pt-0">Persisted folders</label> <label class="control-label !pt-0 text-left">Persisted folders</label>
<span <span
class="label label-default interactive vertical-center" class="label label-default interactive vertical-center"
style="margin-left: 10px" style="margin-left: 10px"
@ -585,9 +585,9 @@
ng-disabled="ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1" ng-disabled="ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1"
ng-change="ctrl.onChangeVolumeRequestedSize()" ng-change="ctrl.onChangeVolumeRequestedSize()"
/> />
<span class="input-group-addon !p-0 !rounded-r-[5px]"> <span class="input-group-addon !rounded-r-[5px] !p-0">
<select <select
class="form-control w-12 !h-[28px] !border-none !rounded-r-[5px] text-xs" class="form-control !h-[28px] w-12 !rounded-r-[5px] !border-none text-xs"
ng-model="persistedFolder.SizeUnit" ng-model="persistedFolder.SizeUnit"
ng-style="{ height: '100%', cursor: ctrl.isEditAndExistingPersistedFolder($index) ? 'not-allowed' : 'auto' }" ng-style="{ height: '100%', cursor: ctrl.isEditAndExistingPersistedFolder($index) ? 'not-allowed' : 'auto' }"
ng-options="unit for unit in ctrl.state.availableSizeUnits" ng-options="unit for unit in ctrl.state.availableSizeUnits"
@ -775,7 +775,7 @@
(!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1 (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1
" "
> >
<label for="memory-limit" class="col-sm-3 col-lg-2 control-label text-left flex flex-row items-center"> <label for="memory-limit" class="col-sm-3 col-lg-2 control-label flex flex-row items-center text-left">
Memory limit (MB) Memory limit (MB)
<portainer-tooltip <portainer-tooltip
message="'An instance of this application will reserve this amount of memory. If the instance memory usage exceeds the reservation, it might be subject to OOM.'" message="'An instance of this application will reserve this amount of memory. If the instance memory usage exceeds the reservation, it might be subject to OOM.'"
@ -818,7 +818,7 @@
(!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1 (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1
" "
> >
<label for="cpu-limit" class="col-sm-3 col-lg-2 control-label text-left flex flex-row items-center"> <label for="cpu-limit" class="col-sm-3 col-lg-2 control-label flex flex-row items-center text-left">
CPU limit CPU limit
<portainer-tooltip <portainer-tooltip
message="'An instance of this application will reserve this amount of CPU. If the instance CPU usage exceeds the reservation, it might be subject to CPU throttling.'" message="'An instance of this application will reserve this amount of CPU. If the instance CPU usage exceeds the reservation, it might be subject to CPU throttling.'"
@ -956,7 +956,7 @@
<div class="form-inline" ng-if="ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.formValues.AutoScaler.IsUsed"> <div class="form-inline" ng-if="ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.formValues.AutoScaler.IsUsed">
<div class="row"> <div class="row">
<div class="col-sm-4 pl-0"> <div class="col-sm-4 pl-0">
<label class="control-label text-left pb-2" for="auto_scaler_min">Minimum instances</label> <label class="control-label pb-2 text-left" for="auto_scaler_min">Minimum instances</label>
<div class="input-group input-group-sm" style="width: 100%"> <div class="input-group input-group-sm" style="width: 100%">
<input <input
type="number" type="number"
@ -984,7 +984,7 @@
</span> </span>
</div> </div>
<div class="col-sm-4 pl-0"> <div class="col-sm-4 pl-0">
<label class="control-label text-left pb-2" for="auto_scaler_max">Maximum instances</label> <label class="control-label pb-2 text-left" for="auto_scaler_max">Maximum instances</label>
<div class="input-group input-group-sm" style="width: 100%"> <div class="input-group input-group-sm" style="width: 100%">
<input <input
type="number" type="number"
@ -1006,7 +1006,7 @@
</span> </span>
</div> </div>
<div class="col-sm-4 pl-0"> <div class="col-sm-4 pl-0">
<label class="control-label text-left pb-2" for="auto_scaler_cpu"> <label class="control-label pb-2 text-left" for="auto_scaler_cpu">
Target CPU usage (<b>%</b>) Target CPU usage (<b>%</b>)
<portainer-tooltip message="'The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.'"> <portainer-tooltip message="'The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.'">
</portainer-tooltip> </portainer-tooltip>
@ -1054,7 +1054,7 @@
<!-- #region PLACEMENTS --> <!-- #region PLACEMENTS -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 vertical-center pt-2.5"> <div class="col-sm-12 vertical-center pt-2.5">
<label class="control-label text-left !pt-0">Placement rules</label> <label class="control-label !pt-0 text-left">Placement rules</label>
<span class="label label-default interactive vertical-center" style="margin-left: 10px" ng-click="ctrl.addPlacement()"> <span class="label label-default interactive vertical-center" style="margin-left: 10px" ng-click="ctrl.addPlacement()">
<pr-icon icon="'plus'" mode="'alt'" size="'sm'"></pr-icon> add rule <pr-icon icon="'plus'" mode="'alt'" size="'sm'"></pr-icon> add rule
</span> </span>

View file

@ -79,7 +79,7 @@
<tr> <tr>
<td>Creation</td> <td>Creation</td>
<td> <td>
<span ng-if="ctrl.application.ApplicationOwner" class="mr-1 vertical-center" data-cy="k8sAppDetail-owner"> <span ng-if="ctrl.application.ApplicationOwner" class="vertical-center mr-1" data-cy="k8sAppDetail-owner">
<pr-icon icon="'user'"></pr-icon> {{ ctrl.application.ApplicationOwner }} <pr-icon icon="'user'"></pr-icon> {{ ctrl.application.ApplicationOwner }}
</span> </span>
<span class="vertical-center"> <pr-icon icon="'clock'" mode="'alt'"></pr-icon> {{ ctrl.application.CreationDate | getisodate }} </span> <span class="vertical-center"> <pr-icon icon="'clock'" mode="'alt'"></pr-icon> {{ ctrl.application.CreationDate | getisodate }} </span>

View file

@ -56,7 +56,7 @@
</div> </div>
</div> </div>
<div class="table-responsive border-none"> <div class="table-responsive border-none">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th style="width: 2%"> <th style="width: 2%">
@ -162,10 +162,10 @@
</tr> </tr>
<!-- ! ADMIN + UNMET NODE AFFINITIES --> <!-- ! ADMIN + UNMET NODE AFFINITIES -->
<tr ng-if="$ctrl.loading"> <tr ng-if="$ctrl.loading">
<td colspan="2" class="text-center text-muted">Loading...</td> <td colspan="2" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)"> <tr ng-if="!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)">
<td colspan="2" class="text-center text-muted">No node available.</td> <td colspan="2" class="text-muted text-center">No node available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -11,7 +11,7 @@
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<rd-widget> <rd-widget>
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 p-5 flex-wrap w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 p-5">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'svg-helm'"></pr-icon> <pr-icon icon="'svg-helm'"></pr-icon>
@ -20,7 +20,7 @@
Release Release
</div> </div>
</div> </div>
<div class="toolBarTitle text-muted small vertical-center px-5 !gap-0"> <div class="toolBarTitle text-muted small vertical-center !gap-0 px-5">
<pr-icon icon="'info'" mode="'primary'" class-name="'!mr-1'" class="vertical-center"></pr-icon> <pr-icon icon="'info'" mode="'primary'" class-name="'!mr-1'" class="vertical-center"></pr-icon>
This is a first version for Helm charts, for more information see this&nbsp; This is a first version for Helm charts, for more information see this&nbsp;
<a href="https://www.portainer.io/blog/portainer-now-with-helm-support" target="_blank" class="hyperlink">blog post</a>. <a href="https://www.portainer.io/blog/portainer-now-with-helm-support" target="_blank" class="hyperlink">blog post</a>.

View file

@ -37,7 +37,7 @@
<div class="row" ng-if="ctrl.state.getMetrics"> <div class="row" ng-if="ctrl.state.getMetrics">
<div class="col-md-12"> <div class="col-md-12">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'info'"></pr-icon> <pr-icon icon="'info'"></pr-icon>
@ -84,7 +84,7 @@
<div class="row" ng-if="ctrl.state.getMetrics"> <div class="row" ng-if="ctrl.state.getMetrics">
<div class="col-lg-6 col-md-12 col-sm-12"> <div class="col-lg-6 col-md-12 col-sm-12">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'svg-memory'"></pr-icon> <pr-icon icon="'svg-memory'"></pr-icon>
@ -101,7 +101,7 @@
</div> </div>
<div class="col-lg-6 col-md-12 col-sm-12" ng-if="!ctrl.state.networkStatsUnavailable"> <div class="col-lg-6 col-md-12 col-sm-12" ng-if="!ctrl.state.networkStatsUnavailable">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'cpu'"></pr-icon> <pr-icon icon="'cpu'"></pr-icon>

View file

@ -135,7 +135,7 @@
<span class="label label-info image-tag" ng-if="ctrl.isSystemLabel($index)" style="margin-left: 5px">system</span> <span class="label label-info image-tag" ng-if="ctrl.isSystemLabel($index)" style="margin-left: 5px">system</span>
</div> </div>
</div> </div>
<div class="small mt-2 text-warning" ng-show="kubernetesNodeUpdateForm['label_key_' + $index].$invalid || ctrl.state.duplicateLabelKeys[$index] !== undefined"> <div class="small text-warning mt-2" ng-show="kubernetesNodeUpdateForm['label_key_' + $index].$invalid || ctrl.state.duplicateLabelKeys[$index] !== undefined">
<ng-messages for="kubernetesNodeUpdateForm['label_key_' + $index].$error"> <ng-messages for="kubernetesNodeUpdateForm['label_key_' + $index].$error">
<p ng-message="required" class="vertical-center"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Label key is required. </p> <p ng-message="required" class="vertical-center"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Label key is required. </p>
</ng-messages> </ng-messages>

View file

@ -25,7 +25,7 @@
<div class="row" ng-if="ctrl.state.getMetrics"> <div class="row" ng-if="ctrl.state.getMetrics">
<div class="col-md-12"> <div class="col-md-12">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'info'"></pr-icon> <pr-icon icon="'info'"></pr-icon>
@ -64,7 +64,7 @@
<div class="row" ng-show="ctrl.state.getMetrics"> <div class="row" ng-show="ctrl.state.getMetrics">
<div class="col-lg-6 col-md-12 col-sm-12"> <div class="col-lg-6 col-md-12 col-sm-12">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'svg-memory'"></pr-icon> <pr-icon icon="'svg-memory'"></pr-icon>
@ -81,7 +81,7 @@
</div> </div>
<div class="col-lg-6 col-md-12 col-sm-12"> <div class="col-lg-6 col-md-12 col-sm-12">
<rd-widget> <rd-widget>
<div class="toolBar pt-5 px-5"> <div class="toolBar px-5 pt-5">
<div class="toolBarTitle flex"> <div class="toolBarTitle flex">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'cpu'"></pr-icon> <pr-icon icon="'cpu'"></pr-icon>

View file

@ -15,7 +15,7 @@
<form class="form-horizontal" name="kubernetesConfigurationCreationForm" autocomplete="off"> <form class="form-horizontal" name="kubernetesConfigurationCreationForm" autocomplete="off">
<!-- name --> <!-- name -->
<div class="form-group mb-0"> <div class="form-group mb-0">
<label for="configuration_name" class="col-sm-3 col-lg-2 control-label text-left required">Name</label> <label for="configuration_name" class="col-sm-3 col-lg-2 control-label required text-left">Name</label>
<div class="col-sm-8 col-lg-9 mb-0"> <div class="col-sm-8 col-lg-9 mb-0">
<input <input
type="text" type="text"
@ -143,7 +143,7 @@
</div> </div>
</div> </div>
<div class="form-group" ng-if="ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.CUSTOM.value"> <div class="form-group" ng-if="ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.CUSTOM.value">
<label for="configuration_data_customtype" class="col-sm-3 col-lg-2 control-label text-left required">Custom Type</label> <label for="configuration_data_customtype" class="col-sm-3 col-lg-2 control-label required text-left">Custom Type</label>
<div class="col-sm-8 col-lg-9"> <div class="col-sm-8 col-lg-9">
<input <input
type="text" type="text"
@ -168,7 +168,7 @@
</div> </div>
</div> </div>
<div class="form-group" ng-if="ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value"> <div class="form-group" ng-if="ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value">
<label for="service_account" class="col-sm-3 col-lg-2 control-label text-left required">Service Account</label> <label for="service_account" class="col-sm-3 col-lg-2 control-label required text-left">Service Account</label>
<div class="col-sm-8 col-lg-9"> <div class="col-sm-8 col-lg-9">
<select <select
class="form-control" class="form-control"

View file

@ -32,7 +32,7 @@
<table class="table" data-cy="k8sConfigDetail-configTable"> <table class="table" data-cy="k8sConfigDetail-configTable">
<tbody> <tbody>
<tr> <tr>
<td class="!pl-0 !border-none w-[40%]">Name</td> <td class="w-[40%] !border-none !pl-0">Name</td>
<td class="!border-none"> <td class="!border-none">
{{ ctrl.configuration.Name }} {{ ctrl.configuration.Name }}
<span style="margin-left: 5px" class="label label-info image-tag" ng-if="ctrl.configuration.IsRegistrySecret">system</span> <span style="margin-left: 5px" class="label label-info image-tag" ng-if="ctrl.configuration.IsRegistrySecret">system</span>
@ -87,7 +87,7 @@
<pr-icon icon="'code'"></pr-icon> <pr-icon icon="'code'"></pr-icon>
YAML YAML
</uib-tab-heading> </uib-tab-heading>
<div class="!pt-5 px-5" ng-if="ctrl.state.showEditorTab"> <div class="px-5 !pt-5" ng-if="ctrl.state.showEditorTab">
<kubernetes-yaml-inspector key="configuration-yaml" data="ctrl.configuration.Yaml"> </kubernetes-yaml-inspector> <kubernetes-yaml-inspector key="configuration-yaml" data="ctrl.configuration.Yaml"> </kubernetes-yaml-inspector>
</div> </div>
</uib-tab> </uib-tab>

View file

@ -27,14 +27,14 @@
<div class="form-group"> <div class="form-group">
<div class="col-sm-12 text-muted small"> <div class="col-sm-12 text-muted small">
<p> Enabling the load balancer feature will allow users to expose application they deploy over an external IP address assigned by cloud provider. </p> <p> Enabling the load balancer feature will allow users to expose application they deploy over an external IP address assigned by cloud provider. </p>
<p class="mt-1 vertical-center"> <p class="vertical-center mt-1">
<pr-icon icon="'alert-circle'" mode="'warning'"></pr-icon> <pr-icon icon="'alert-circle'" mode="'warning'"></pr-icon>
Ensure that your cloud provider allows you to create load balancers if you want to use this feature. Might incur costs. Ensure that your cloud provider allows you to create load balancers if you want to use this feature. Might incur costs.
</p> </p>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<label class="control-label text-left col-sm-5 col-lg-4 px-0"> Allow users to use external load balancer </label> <label class="control-label col-sm-5 col-lg-4 px-0 text-left"> Allow users to use external load balancer </label>
<label class="switch col-sm-8 mb-0"> <label class="switch col-sm-8 mb-0">
<input type="checkbox" ng-model="ctrl.formValues.UseLoadBalancer" /><span class="slider round" data-cy="kubeSetup-loadBalancerToggle"></span> <input type="checkbox" ng-model="ctrl.formValues.UseLoadBalancer" /><span class="slider round" data-cy="kubeSetup-loadBalancerToggle"></span>
</label> </label>
@ -51,11 +51,11 @@
view="'cluster'" view="'cluster'"
></ingress-class-datatable> ></ingress-class-datatable>
<label htmlFor="foldingButtonIngControllerSettings" class="col-sm-12 form-section-title cursor-pointer flex items-center"> <label htmlFor="foldingButtonIngControllerSettings" class="col-sm-12 form-section-title flex cursor-pointer items-center">
<button <button
id="foldingButtonIngControllerSettings" id="foldingButtonIngControllerSettings"
type="button" type="button"
class="border-0 mx-2 bg-transparent inline-flex justify-center items-center w-2 !ml-0" class="mx-2 !ml-0 inline-flex w-2 items-center justify-center border-0 bg-transparent"
ng-click="ctrl.toggleAdvancedIngSettings()" ng-click="ctrl.toggleAdvancedIngSettings()"
> >
<pr-icon ng-if="!ctrl.state.isIngToggleSectionExpanded" icon="'chevron-right'"></pr-icon> <pr-icon ng-if="!ctrl.state.isIngToggleSectionExpanded" icon="'chevron-right'"></pr-icon>
@ -120,7 +120,7 @@
<div <div
ng-if="!ctrl.isRBACEnabled" ng-if="!ctrl.isRBACEnabled"
class="mt-1 mb-6 p-4 w-full border border-solid bg-warning-2 border-warning-5 text-warning-8 th-dark:bg-yellow-11 th-dark:text-white th-highcontrast:bg-yellow-11 th-highcontrast:text-white small flex gap-1 rounded-lg" class="small mt-1 mb-6 flex w-full gap-1 rounded-lg border border-solid border-warning-5 bg-warning-2 p-4 text-warning-8 th-highcontrast:bg-yellow-11 th-highcontrast:text-white th-dark:bg-yellow-11 th-dark:text-white"
> >
<div class="mt-0.5"> <div class="mt-0.5">
<pr-icon icon="'alert-triangle'" feather="true" class-name="'text-warning-7 th-dark:text-white th-highcontrast:text-white'"></pr-icon> <pr-icon icon="'alert-triangle'" feather="true" class-name="'text-warning-7 th-dark:text-white th-highcontrast:text-white'"></pr-icon>
@ -130,13 +130,13 @@
<p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p> <p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p>
<p class="mb-0"> <p class="mb-0">
To enable RBAC, start the&nbsp;<a To enable RBAC, start the&nbsp;<a
class="th-dark:text-blue-7 th-highcontrast:text-blue-4" class="th-highcontrast:text-blue-4 th-dark:text-blue-7"
href="https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver" href="https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver"
target="_blank" target="_blank"
>API server</a >API server</a
>&nbsp;with the&nbsp;<code class="box-decoration-clone bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">--authorization-mode</code>&nbsp;flag set to a >&nbsp;with the&nbsp;<code class="bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black">--authorization-mode</code>&nbsp;flag set to a
comma-separated list that includes&nbsp;<code class="bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">RBAC</code>, for example:&nbsp; comma-separated list that includes&nbsp;<code class="bg-gray-4 th-highcontrast:bg-black th-dark:bg-black">RBAC</code>, for example:&nbsp;
<code class="box-decoration-clone bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>. <code class="bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>.
</p> </p>
</div> </div>
</div> </div>
@ -185,7 +185,7 @@
By ENABLING resource over-commit, you are able to assign more resources to namespaces than is physically available in the cluster. This may lead to unexpected By ENABLING resource over-commit, you are able to assign more resources to namespaces than is physically available in the cluster. This may lead to unexpected
deployment failures if there is insufficient resource to service demand. deployment failures if there is insufficient resource to service demand.
</p> </p>
<p class="mt-1 vertical-center"> <p class="vertical-center mt-1">
<pr-icon icon="'alert-circle'" mode="'warning'"></pr-icon> <pr-icon icon="'alert-circle'" mode="'warning'"></pr-icon>
By DISABLING resource over-commit (highly recommended), you are only able to assign resources to namespaces that are less (in aggregate) than the cluster total By DISABLING resource over-commit (highly recommended), you are only able to assign resources to namespaces that are less (in aggregate) than the cluster total
minus any system resource reservation. minus any system resource reservation.
@ -218,7 +218,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-sm-12"> <div class="col-sm-12">
<label class="control-label text-left col-sm-5 col-lg-4 px-0"> Enable features using the metrics API </label> <label class="control-label col-sm-5 col-lg-4 px-0 text-left"> Enable features using the metrics API </label>
<label class="switch col-sm-8"> <label class="switch col-sm-8">
<input type="checkbox" ng-model="ctrl.formValues.UseServerMetrics" ng-change="ctrl.enableMetricsServer()" /> <input type="checkbox" ng-model="ctrl.formValues.UseServerMetrics" ng-change="ctrl.enableMetricsServer()" />
<span class="slider round" data-cy="kubeSetup-metricsToggle"></span> <span class="slider round" data-cy="kubeSetup-metricsToggle"></span>
@ -275,7 +275,7 @@
</tr> </tr>
<tr ng-repeat="class in ctrl.StorageClasses"> <tr ng-repeat="class in ctrl.StorageClasses">
<td> <td>
<div class="flex flex-row items-center h-full"> <div class="flex h-full flex-row items-center">
<label class="switch mr-2 mb-0"> <label class="switch mr-2 mb-0">
<input type="checkbox" ng-model="class.selected" /><span class="slider round" data-cy="kubeSetup-storageToggle{{ class.Name }}"></span> <input type="checkbox" ng-model="class.selected" /><span class="slider round" data-cy="kubeSetup-storageToggle{{ class.Name }}"></span>
</label> </label>
@ -291,7 +291,7 @@
></storage-access-mode-selector> ></storage-access-mode-selector>
</td> </td>
<td> <td>
<div class="flex flex-row items-center h-full"> <div class="flex h-full flex-row items-center">
<label class="switch mr-2 mb-0" <label class="switch mr-2 mb-0"
><input type="checkbox" ng-model="class.AllowVolumeExpansion" /><span ><input type="checkbox" ng-model="class.AllowVolumeExpansion" /><span
class="slider round" class="slider round"

View file

@ -18,13 +18,13 @@
<table class="table"> <table class="table">
<tbody> <tbody>
<tr> <tr>
<td class="!pl-0 !border-none">Environment</td> <td class="!border-none !pl-0">Environment</td>
<td class="!border-none"> <td class="!border-none">
{{ ctrl.endpoint.Name }} {{ ctrl.endpoint.Name }}
</td> </td>
</tr> </tr>
<tr ng-if="ctrl.showEnvUrl"> <tr ng-if="ctrl.showEnvUrl">
<td class="!pl-0 !border-t">URL</td> <td class="!border-t !pl-0">URL</td>
<td class="!border-t">{{ ctrl.endpoint.URL | stripprotocol }}</td> <td class="!border-t">{{ ctrl.endpoint.URL | stripprotocol }}</td>
</tr> </tr>
<tr> <tr>

View file

@ -48,7 +48,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="stack_name" class="col-lg-2 col-sm-3 control-label text-left required">Name</label> <label for="stack_name" class="col-lg-2 col-sm-3 control-label required text-left">Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" class="form-control" ng-model="ctrl.formValues.StackName" id="stack_name" placeholder="my-app" auto-focus /> <input type="text" class="form-control" ng-model="ctrl.formValues.StackName" id="stack_name" placeholder="my-app" auto-focus />
</div> </div>
@ -139,7 +139,7 @@
<span class="col-sm-12 text-muted small"> Indicate the URL to the manifest. </span> <span class="col-sm-12 text-muted small"> Indicate the URL to the manifest. </span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="manifest_url" class="col-sm-3 col-lg-2 control-label text-left required">URL</label> <label for="manifest_url" class="col-sm-3 col-lg-2 control-label required text-left">URL</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
type="text" type="text"

View file

@ -46,7 +46,7 @@
<div class="form-group"> <div class="form-group">
<div <div
ng-if="!ctrl.isRBACEnabled" ng-if="!ctrl.isRBACEnabled"
class="mb-6 mx-[15px] p-4 border border-solid bg-warning-2 border-warning-5 text-warning-8 th-dark:bg-yellow-11 th-dark:text-white th-highcontrast:bg-yellow-11 th-highcontrast:text-white small flex gap-1 rounded-lg" class="small mx-[15px] mb-6 flex gap-1 rounded-lg border border-solid border-warning-5 bg-warning-2 p-4 text-warning-8 th-highcontrast:bg-yellow-11 th-highcontrast:text-white th-dark:bg-yellow-11 th-dark:text-white"
> >
<div class="mt-0.5"> <div class="mt-0.5">
<pr-icon icon="'alert-triangle'" feather="true" class-name="'text-warning-7 th-dark:text-white th-highcontrast:text-white'"></pr-icon> <pr-icon icon="'alert-triangle'" feather="true" class-name="'text-warning-7 th-dark:text-white th-highcontrast:text-white'"></pr-icon>
@ -56,13 +56,13 @@
<p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p> <p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p>
<p class="mb-0"> <p class="mb-0">
To enable RBAC, start the&nbsp;<a To enable RBAC, start the&nbsp;<a
class="th-dark:text-blue-7 th-highcontrast:text-blue-4" class="th-highcontrast:text-blue-4 th-dark:text-blue-7"
href="https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver" href="https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver"
target="_blank" target="_blank"
>API server</a >API server</a
>&nbsp;with the&nbsp;<code class="box-decoration-clone bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">--authorization-mode</code>&nbsp;flag set to a >&nbsp;with the&nbsp;<code class="bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black">--authorization-mode</code>&nbsp;flag set to a
comma-separated list that includes&nbsp;<code class="bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">RBAC</code>, for example:&nbsp; comma-separated list that includes&nbsp;<code class="bg-gray-4 th-highcontrast:bg-black th-dark:bg-black">RBAC</code>, for example:&nbsp;
<code class="box-decoration-clone bg-gray-4 th-dark:bg-black th-highcontrast:bg-black">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>. <code class="bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>.
</p> </p>
</div> </div>
</div> </div>
@ -95,7 +95,7 @@
<div class="col-sm-12"> <div class="col-sm-12">
<button <button
type="submit" type="submit"
class="btn btn-primary btn-sm !ml-0 vertical-center" class="btn btn-primary btn-sm vertical-center !ml-0"
ng-disabled="ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress" ng-disabled="ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress"
ng-click="ctrl.authorizeAccess()" ng-click="ctrl.authorizeAccess()"
button-spinner="ctrl.actionInProgress" button-spinner="ctrl.actionInProgress"

View file

@ -15,7 +15,7 @@
<form class="form-horizontal" autocomplete="off" name="resourcePoolCreationForm"> <form class="form-horizontal" autocomplete="off" name="resourcePoolCreationForm">
<!-- #region NAME INPUT --> <!-- #region NAME INPUT -->
<div class="form-group"> <div class="form-group">
<label for="pool_name" class="col-sm-3 col-lg-2 control-label text-left required">Name</label> <label for="pool_name" class="col-sm-3 col-lg-2 control-label required text-left">Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
type="text" type="text"
@ -89,7 +89,7 @@
</div> </div>
<!-- memory-limit-input --> <!-- memory-limit-input -->
<div class="form-group flex flex-row !mb-0"> <div class="form-group !mb-0 flex flex-row">
<label for="memory-limit" class="col-sm-3 col-lg-2 control-label text-left"> Memory limit (MB) </label> <label for="memory-limit" class="col-sm-3 col-lg-2 control-label text-left"> Memory limit (MB) </label>
<div class="col-xs-6"> <div class="col-xs-6">
<por-slider <por-slider
@ -117,7 +117,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex flex-row w-full"> <div class="flex w-full flex-row">
<span class="col-sm-3 col-lg-2"></span> <span class="col-sm-3 col-lg-2"></span>
<span class="help-block col-sm-9 col-lg-10"> <span class="help-block col-sm-9 col-lg-10">
<div ng-show="resourcePoolCreationForm.memory_limit.$invalid"> <div ng-show="resourcePoolCreationForm.memory_limit.$invalid">
@ -205,7 +205,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 col-lg-2 control-label text-left !pt-0" for="registries-selector"> Select registries </label> <label class="col-sm-3 col-lg-2 control-label !pt-0 text-left" for="registries-selector"> Select registries </label>
<div class="col-sm-8 col-lg-9"> <div class="col-sm-8 col-lg-9">
<span class="small text-muted" ng-if="!$ctrl.registries.length && $ctrl.state.isAdmin"> <span class="small text-muted" ng-if="!$ctrl.registries.length && $ctrl.state.isAdmin">
No registries available. Head over to the <a ui-sref="portainer.registries">registry view</a> to define a container registry. No registries available. Head over to the <a ui-sref="portainer.registries">registry view</a> to define a container registry.

View file

@ -57,11 +57,11 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th ng-if="$ctrl.hasExpandableItems()" class="datatable-wide dropdown"> <th ng-if="$ctrl.hasExpandableItems()" class="datatable-wide dropdown">
<div class="cursor-pointer vertical-center" ng-click="$ctrl.expandAll()"> <div class="vertical-center cursor-pointer" ng-click="$ctrl.expandAll()">
<pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon> <pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon>
<pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon> <pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon>
</div> </div>
@ -111,10 +111,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="4" class="text-center text-muted">No ingresses available.</td> <td colspan="4" class="text-muted text-center">No ingresses available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -78,7 +78,7 @@
</div> </div>
<!-- memory-limit-input --> <!-- memory-limit-input -->
<div class="form-group flex"> <div class="form-group flex">
<label for="memory-limit" class="col-sm-3 col-lg-2 control-label text-left vertical-center"> Memory limit (MB) </label> <label for="memory-limit" class="col-sm-3 col-lg-2 control-label vertical-center text-left"> Memory limit (MB) </label>
<div class="col-sm-6"> <div class="col-sm-6">
<por-slider <por-slider
min="ctrl.ResourceQuotaDefaults.MemoryLimit" min="ctrl.ResourceQuotaDefaults.MemoryLimit"
@ -197,7 +197,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 col-lg-2 control-label text-left !pt-0" for="registries-selector"> Select registries </label> <label class="col-sm-3 col-lg-2 control-label !pt-0 text-left" for="registries-selector"> Select registries </label>
<div class="col-sm-9 col-lg-4"> <div class="col-sm-9 col-lg-4">
<span class="small text-muted" ng-if="!ctrl.registries.length && ctrl.isAdmin"> <span class="small text-muted" ng-if="!ctrl.registries.length && ctrl.isAdmin">
No registries available. Head over to the <a ui-sref="portainer.registries">registry view</a> to define a container registry. No registries available. Head over to the <a ui-sref="portainer.registries">registry view</a> to define a container registry.

View file

@ -23,7 +23,7 @@ ctrl.state.transition.name,
<div class="col-sm-12 form-section-title"> Actions </div> <div class="col-sm-12 form-section-title"> Actions </div>
<!-- auto-refresh --> <!-- auto-refresh -->
<div class="form-group"> <div class="form-group">
<label class="control-label text-left col-sm-3 col-lg-2 vertical-center !py-2"> <label class="control-label col-sm-3 col-lg-2 vertical-center !py-2 text-left">
Auto-refresh Auto-refresh
<portainer-tooltip message="'Automatically refresh logs every 30 seconds'"></portainer-tooltip> <portainer-tooltip message="'Automatically refresh logs every 30 seconds'"></portainer-tooltip>
</label> </label>
@ -54,7 +54,7 @@ ctrl.state.transition.name,
<!-- actions --> <!-- actions -->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12"> <div class="col-sm-12">
<button class="btn btn-primary btn-sm !ml-0 vertical-center" type="button" ng-click="ctrl.downloadLogs()"> <button class="btn btn-primary btn-sm vertical-center !ml-0" type="button" ng-click="ctrl.downloadLogs()">
<pr-icon icon="'download'"></pr-icon> <pr-icon icon="'download'"></pr-icon>
Download logs Download logs
</button> </button>

View file

@ -1,5 +1,5 @@
<div class="flex justify-start items-center form-section-title interactive" ng-click="$ctrl.toggleSummary()" ng-if="$ctrl.state.resources.length > 0"> <div class="form-section-title interactive flex items-center justify-start" ng-click="$ctrl.toggleSummary()" ng-if="$ctrl.state.resources.length > 0">
<pr-icon icon="$ctrl.state.expandedTemplate ? 'chevron-down' : 'chevron-right'" class="!mr-1 vertical-center"></pr-icon> <pr-icon icon="$ctrl.state.expandedTemplate ? 'chevron-down' : 'chevron-right'" class="vertical-center !mr-1"></pr-icon>
Summary Summary
</div> </div>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<!-- toolbar header actions and settings --> <!-- toolbar header actions and settings -->
<div class="toolBar !flex-col gap-1"> <div class="toolBar !flex-col gap-1">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap !p-0 w-full"> <div class="toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'hard-drive'"></pr-icon> <pr-icon icon="'hard-drive'"></pr-icon>
@ -59,11 +59,11 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th class="datatable-wide dropdown" ng-if="$ctrl.hasExpandableItems()"> <th class="datatable-wide dropdown" ng-if="$ctrl.hasExpandableItems()">
<div class="cursor-pointer vertical-center" ng-click="$ctrl.expandAll()"> <div class="vertical-center cursor-pointer" ng-click="$ctrl.expandAll()">
<pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon> <pr-icon ng-if="$ctrl.state.expandAll" icon="'chevron-down'"></pr-icon>
<pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon> <pr-icon ng-if="!$ctrl.state.expandAll" icon="'chevron-right'"></pr-icon>
</div> </div>
@ -121,10 +121,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No storage available.</td> <td colspan="5" class="text-muted text-center">No storage available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,4 +1,4 @@
<a class="ml-5 vertical-center be-indicator" href="{{ $ctrl.url }}" target="_blank" rel="noopener" ng-if="$ctrl.limitedToBE"> <a class="vertical-center be-indicator ml-5" href="{{ $ctrl.url }}" target="_blank" rel="noopener" ng-if="$ctrl.limitedToBE">
<ng-transclude></ng-transclude> <ng-transclude></ng-transclude>
<pr-icon icon="'briefcase'" class-name="'space-right be-indicator-icon'"></pr-icon> <pr-icon icon="'briefcase'" class-name="'space-right be-indicator-icon'"></pr-icon>
<span class="be-indicator-label">Business Edition Feature</span> <span class="be-indicator-label">Business Edition Feature</span>

View file

@ -32,7 +32,7 @@
</div> </div>
</div> </div>
<div class="mx-4 mb-4 small text-muted"> <div class="small text-muted mx-4 mb-4">
<div class="" ng-if="$ctrl.inheritFrom"> <div class="" ng-if="$ctrl.inheritFrom">
Access tagged as <code>inherited</code> are inherited from the group access. They cannot be removed or modified at the environment level but they can be overridden. Access tagged as <code>inherited</code> are inherited from the group access. They cannot be removed or modified at the environment level but they can be overridden.
</div> </div>
@ -40,7 +40,7 @@
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -86,10 +86,10 @@
<td>{{ item.Type }}</td> <td>{{ item.Type }}</td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="4" class="text-center text-muted">Loading...</td> <td colspan="4" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="4" class="text-center text-muted">No authorized users or teams.</td> <td colspan="4" class="text-muted text-center">No authorized users or teams.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,5 +1,5 @@
<div class="datatable"> <div class="datatable">
<table class="table table-hover"> <table class="table-hover table">
<div class="col-sm-12"> <div class="col-sm-12">
<pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon> <pr-icon icon="'search'" class-name="'searchIcon'"></pr-icon>
<input <input
@ -47,7 +47,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="2" class="text-center text-muted">Loading...</td> <td colspan="2" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr <tr
ng-if=" ng-if="
@ -55,7 +55,7 @@
($ctrl.dataset | filter : $ctrl.state.textFilter | orderBy : $ctrl.state.orderBy : $ctrl.state.reverseOrder | itemsPerPage : $ctrl.state.paginatedItemLimit).length === 0 ($ctrl.dataset | filter : $ctrl.state.textFilter | orderBy : $ctrl.state.orderBy : $ctrl.state.reverseOrder | itemsPerPage : $ctrl.state.paginatedItemLimit).length === 0
" "
> >
<td colspan="2" class="text-center text-muted">{{ $ctrl.emptyDatasetMessage }}</td> <td colspan="2" class="text-muted text-center">{{ $ctrl.emptyDatasetMessage }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -31,8 +31,8 @@
class="form-group mt-4" class="form-group mt-4"
ng-if="$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && ($ctrl.isAdmin || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1))" ng-if="$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && ($ctrl.isAdmin || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1))"
> >
<div class="w-full vertical-center"> <div class="vertical-center w-full">
<label for="group-access" class="control-label text-left col-sm-3 col-lg-2 !pt-0"> <label for="group-access" class="control-label col-sm-3 col-lg-2 !pt-0 text-left">
Authorized teams Authorized teams
<portainer-tooltip <portainer-tooltip
ng-if="$ctrl.isAdmin && $ctrl.availableTeams.length > 0" ng-if="$ctrl.isAdmin && $ctrl.availableTeams.length > 0"
@ -62,8 +62,8 @@
<!-- !authorized-teams --> <!-- !authorized-teams -->
<!-- authorized-users --> <!-- authorized-users -->
<div class="form-group" ng-if="$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && $ctrl.isAdmin"> <div class="form-group" ng-if="$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && $ctrl.isAdmin">
<div class="w-full vertical-center"> <div class="vertical-center w-full">
<label for="group-access" class="control-label text-left col-sm-3 col-lg-2 !pt-0"> <label for="group-access" class="control-label col-sm-3 col-lg-2 !pt-0 text-left">
Authorized users Authorized users
<portainer-tooltip <portainer-tooltip
ng-if="$ctrl.isAdmin && $ctrl.availableUsers.length > 0" ng-if="$ctrl.isAdmin && $ctrl.availableUsers.length > 0"

View file

@ -1,7 +1,7 @@
<ng-form name="commonCustomTemplateForm"> <ng-form name="commonCustomTemplateForm">
<!-- title-input --> <!-- title-input -->
<div class="form-group mb-0"> <div class="form-group mb-0">
<label for="template_title" class="col-sm-3 col-lg-2 control-label text-left required"> Title </label> <label for="template_title" class="col-sm-3 col-lg-2 control-label required text-left"> Title </label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
type="text" type="text"
@ -16,7 +16,7 @@
/> />
<span class="help-block"> <span class="help-block">
<div ng-show="commonCustomTemplateForm.template_title.$invalid"> <div ng-show="commonCustomTemplateForm.template_title.$invalid">
<div class="mt-2 small text-warning"> <div class="small text-warning mt-2">
<div ng-messages="commonCustomTemplateForm.template_title.$error"> <div ng-messages="commonCustomTemplateForm.template_title.$error">
<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="required"> <pr-icon icon="'alert-triangle'" mode="'warning'"></pr-icon> Title is required. </p>
<p class="vertical-center" ng-message="pattern"> <p class="vertical-center" ng-message="pattern">
@ -33,11 +33,11 @@
<!-- description-input --> <!-- description-input -->
<div class="form-group mb-0"> <div class="form-group mb-0">
<label for="description" class="col-sm-3 col-lg-2 control-label text-left required">Description</label> <label for="description" class="col-sm-3 col-lg-2 control-label required text-left">Description</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" class="form-control" id="description" ng-model="$ctrl.formValues.Description" name="description" required /> <input type="text" class="form-control" id="description" ng-model="$ctrl.formValues.Description" name="description" required />
<span class="help-block"> <span class="help-block">
<div class="mt-2 small text-warning"> <div class="small text-warning mt-2">
<div ng-show="commonCustomTemplateForm.description.$invalid"> <div ng-show="commonCustomTemplateForm.description.$invalid">
<div ng-messages="commonCustomTemplateForm.description.$error"> <div ng-messages="commonCustomTemplateForm.description.$error">
<p class="vertical-center" ng-message="required"> <pr-icon icon="'alert-triangle'" 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>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<rd-widget> <rd-widget>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap"> <div class="toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="$ctrl.titleIcon"></pr-icon> <pr-icon icon="$ctrl.titleIcon"></pr-icon>
@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div class="blocklist !px-[20px] gap-y-2 !pb-[20px]"> <div class="blocklist gap-y-2 !px-[20px] !pb-[20px]">
<template-item <template-item
ng-repeat="template in $ctrl.templates | filter:$ctrl.state.textFilter" ng-repeat="template in $ctrl.templates | filter:$ctrl.state.textFilter"
model="template" model="template"
@ -48,8 +48,8 @@
</div> </div>
</template-item-actions> </template-item-actions>
</template-item> </template-item>
<div ng-if="!$ctrl.templates" class="text-center text-muted"> Loading... </div> <div ng-if="!$ctrl.templates" class="text-muted text-center"> Loading... </div>
<div ng-if="($ctrl.templates | filter: $ctrl.state.textFilter).length === 0" class="text-center text-muted"> No templates available. </div> <div ng-if="($ctrl.templates | filter : $ctrl.state.textFilter).length === 0" class="text-muted text-center"> No templates available. </div>
</div> </div>
</rd-widget-body> </rd-widget-body>
</rd-widget> </rd-widget>

View file

@ -37,7 +37,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -107,7 +107,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -40,7 +40,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="endpoint-endpointTable"> <table class="table-hover nowrap-cells table" data-cy="endpoint-endpointTable">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -122,10 +122,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="$ctrl.state.loading"> <tr ng-if="$ctrl.state.loading">
<td colspan="5" class="text-center text-muted">Loading...</td> <td colspan="5" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0"> <tr ng-if="!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0">
<td colspan="5" class="text-center text-muted">No environment available.</td> <td colspan="5" class="text-muted text-center">No environment available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -38,7 +38,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="endpointGroup-endpointGroupTable"> <table class="table-hover nowrap-cells table" data-cy="endpointGroup-endpointGroupTable">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -83,10 +83,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="3" class="text-center text-muted">No group available.</td> <td colspan="3" class="text-muted text-center">No group available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -25,20 +25,20 @@
<button <button
ng-if="!$ctrl.endpointType" ng-if="!$ctrl.endpointType"
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
ng-disabled="$ctrl.state.selectedItemCount === 0" ng-disabled="$ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
data-cy="registry-removeRegistryButton" data-cy="registry-removeRegistryButton"
> >
<pr-icon icon="'trash-2'"></pr-icon>Remove <pr-icon icon="'trash-2'"></pr-icon>Remove
</button> </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"> <button type="button" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit" ui-sref="portainer.registries.new" data-cy="registry-addRegistryButton">
<pr-icon icon="'plus'"></pr-icon>Add registry <pr-icon icon="'plus'"></pr-icon>Add registry
</button> </button>
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -103,7 +103,7 @@
<td> <td>
<button <button
type="button" type="button"
class="btn btn-link hover:no-underline !ml-0 px-0 vertical-center" class="btn btn-link vertical-center !ml-0 px-0 hover:no-underline"
ng-if="$ctrl.canManageAccess(item)" ng-if="$ctrl.canManageAccess(item)"
ng-click="$ctrl.redirectToManageAccess(item)" ng-click="$ctrl.redirectToManageAccess(item)"
> >
@ -117,7 +117,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="3" class="text-center text-muted">Loading...</td> <td colspan="3" class="text-muted text-center">Loading...</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,7 +1,7 @@
<div class="datatable"> <div class="datatable">
<rd-widget> <rd-widget>
<rd-widget-body classes="no-padding" ng-if="$ctrl.createEnabled"> <rd-widget-body classes="no-padding" ng-if="$ctrl.createEnabled">
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap"> <div class="toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="'layers'"></pr-icon> <pr-icon icon="'layers'"></pr-icon>
@ -24,7 +24,7 @@
<div class="actionBar !gap-3" authorization="PortainerStackCreate, PortainerStackDelete"> <div class="actionBar !gap-3" authorization="PortainerStackCreate, PortainerStackDelete">
<button <button
type="button" type="button"
class="btn btn-sm btn-dangerlight h-fit vertical-center !ml-0" class="btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit"
authorization="PortainerStackDelete" authorization="PortainerStackDelete"
ng-disabled="!$ctrl.createEnabled || $ctrl.state.selectedItemCount === 0" ng-disabled="!$ctrl.createEnabled || $ctrl.state.selectedItemCount === 0"
ng-click="$ctrl.removeAction($ctrl.state.selectedItems)" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"
@ -35,7 +35,7 @@
<button <button
ng-disabled="!$ctrl.createEnabled" ng-disabled="!$ctrl.createEnabled"
type="button" type="button"
class="btn btn-sm btn-primary h-fit vertical-center !ml-0" class="btn btn-sm btn-primary vertical-center !ml-0 h-fit"
ui-sref="docker.stacks.newstack" ui-sref="docker.stacks.newstack"
authorization="PortainerStackCreate" authorization="PortainerStackCreate"
data-cy="stack-addStackButton" data-cy="stack-addStackButton"
@ -87,11 +87,11 @@
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells" data-cy="stack-stackTable"> <table class="table-hover nowrap-cells table" data-cy="stack-stackTable">
<thead> <thead>
<tr> <tr>
<th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open"> <th uib-dropdown dropdown-append-to-body auto-close="disabled" is-open="$ctrl.filters.state.open">
<div class="flex flex-row flex-no-wrap gap-1"> <div class="flex-no-wrap flex flex-row gap-1">
<span class="md-checkbox" authorization="PortainerStackCreate, PortainerStackDelete"> <span class="md-checkbox" authorization="PortainerStackCreate, PortainerStackDelete">
<input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" /> <input id="select_all" type="checkbox" ng-model="$ctrl.state.selectAll" ng-change="$ctrl.selectAll()" />
<label for="select_all"></label> <label for="select_all"></label>
@ -228,10 +228,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset" data-cy="stacks-loadingTableRow"> <tr ng-if="!$ctrl.dataset" data-cy="stacks-loadingTableRow">
<td colspan="6" class="text-center text-muted">Loading...</td> <td colspan="6" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0" data-cy="stacks-noStackTableRow"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0" data-cy="stacks-noStackTableRow">
<td colspan="6" class="text-center text-muted">No stack available.</td> <td colspan="6" class="text-muted text-center">No stack available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,6 +1,6 @@
<div class="datatable"> <div class="datatable">
<rd-widget> <rd-widget>
<div class="toolBar vertical-center !gap-x-5 !gap-y-1 flex-wrap w-full relative"> <div class="toolBar vertical-center relative w-full flex-wrap !gap-x-5 !gap-y-1">
<div class="toolBarTitle vertical-center"> <div class="toolBarTitle vertical-center">
<div class="widget-icon space-right"> <div class="widget-icon space-right">
<pr-icon icon="$ctrl.titleIcon"></pr-icon> <pr-icon icon="$ctrl.titleIcon"></pr-icon>
@ -32,7 +32,7 @@
</div> </div>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -73,7 +73,7 @@
</td> </td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td class="text-center text-muted">{{ $ctrl.emptyDatasetMessage }}</td> <td class="text-muted text-center">{{ $ctrl.emptyDatasetMessage }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -26,7 +26,7 @@
</div> </div>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover nowrap-cells"> <table class="table-hover nowrap-cells table">
<thead> <thead>
<tr> <tr>
<th> <th>
@ -60,10 +60,10 @@
</td> </td>
</tr> </tr>
<tr ng-if="!$ctrl.dataset"> <tr ng-if="!$ctrl.dataset">
<td colspan="1" class="text-center text-muted">Loading...</td> <td colspan="1" class="text-muted text-center">Loading...</td>
</tr> </tr>
<tr ng-if="$ctrl.state.filteredDataSet.length === 0"> <tr ng-if="$ctrl.state.filteredDataSet.length === 0">
<td colspan="1" class="text-center text-muted">No tag available.</td> <td colspan="1" class="text-muted text-center">No tag available.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

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