* refactor(http): parse axios errors (#6325) * refactor(home): use endpoint-list as react component [EE-1814] (#6060) * refactor(home): use endpoint-list as react component fix(home): add missing features and refactors - kubebutton - group name - poll when endpoint is off - state management refactor(endpoints): use stat component fix(endpoints): add space between items refactor(endpoints): move stats to components refactor(endpoints): fetch time refactor(home): move logic refactor(home): move fe render logic refactor(settings): use vanilla js for publicSettings refactor(kube): remove angular from kube config service feat(home): add kubeconfig button feat(home): send analytics when opening kubeconfig modal fix(home): memoize footer refactor(home): use react-query for loading fix(home): show correct control for kubeconfig modal refactor(home): use debounce refactor(home): use new components refactor(home): replace endpoints with environments refactor(home): move endpoint-list component to home fix(home): show group name refactor(home): use switch for environment icon fix(kubeconfig): fix default case refactor(axios): use parse axios error refactor(home): use link components for navigate fix(home): align azure icon refactor(home): refactor stats refactor(home): export envstatusbadge refactor(home): remove unused bindings * chore(home): write tests for edge indicator * chore(home): basic stories for environment item * style(settings): reformat * fix(environments): add publicurl * refactor(home): use table components * refactor(datatables): merge useSearchBarState * refactor(home): fetch group in env item * chore(tests): basic tests * chore(home): test when no envs * refactor(tags): use axios for tagService * refactor(env-groups): use axios for getGroups * feat(app): ui-state context provider * refactor(home): create MotdPanel * refactor(app): create InformationPanel * feat(endpoints): fetch number of total endpoints * refactor(app): merge hooks * refactor(home): migrate view to react [EE-1810] fixes [EE-1810] refactor(home): wip use react view feat(home): show message if no endpoints refactor(home): show endpoint list refactor(home): don't use home to manage link refactor(home): move state refactor(home): check if edge using util refactor(home): move inf panels chore(home): tests refactor(home): load groups and tags in env-item refactor(settings): revert publicSettings change refactor(home): move confirm snapshot method * fix(home): show tags * fix(environments): handle missing snapshots * fix(kube/volumes): fetch pesistent volume claims * refactor(kube): remove use of endpointProvider * refactor(endpoints): set current endpoint * chore(home): add data-cy for tests * chore(tests): mock axios-progress-bar * refactor(home): move use env list to env module * feat(app): sync home view changes with ee * fix(home): sort page header * fix(app): fix tests * chore(github): use yarn cache * refactor(environments): load list of groups * chore(babel): remove auto 18n keys extraction * chore(environments): fix tests * refactor(k8s/application): use current endpoint * fix(app/header): add margin to header * refactor(app): remove unused types * refactor(app): use rq onError handler * refactor(home): wrap element with button
300 lines
5.1 KiB
CSS
300 lines
5.1 KiB
CSS
.datatable .toolBar {
|
|
background-color: var(--bg-card-color);
|
|
color: var(--text-main-color);
|
|
overflow: auto;
|
|
padding: 10px;
|
|
}
|
|
|
|
.datatable .actionBar {
|
|
color: #767676;
|
|
padding: 10px;
|
|
}
|
|
|
|
.datatable .toolBar .toolBarTitle {
|
|
float: left;
|
|
margin: 5px 0 0 10px;
|
|
}
|
|
|
|
.datatable .toolBar .settings {
|
|
float: right;
|
|
margin: 5px 10px 0 0;
|
|
}
|
|
|
|
.datatable .toolBar .setting {
|
|
cursor: pointer;
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.datatable .toolBar .setting-active {
|
|
color: #337ab7;
|
|
}
|
|
|
|
.datatable .searchBar {
|
|
border-top: 1px solid var(--border-color);
|
|
border-bottom: 1px solid var(--border-color);
|
|
padding: 8px;
|
|
background: var(--bg-main-color);
|
|
}
|
|
|
|
.datatable .searchInput {
|
|
background: none;
|
|
border: none;
|
|
width: 95%;
|
|
}
|
|
|
|
.datatable .searchIcon {
|
|
color: #767676;
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.datatable .searchInput:active,
|
|
.datatable .searchInput:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.datatable .pagination-controls {
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.datatable .table {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.datatable .footer {
|
|
background-color: var(--bg-card-color);
|
|
color: var(--text-main-color);
|
|
overflow: auto;
|
|
border-top: 1px solid var(--border-datatable-top-color);
|
|
}
|
|
|
|
.datatable .footer .infoBar {
|
|
float: left;
|
|
font-size: 12px;
|
|
margin: 15px 0 0 10px;
|
|
}
|
|
|
|
.datatable .footer .paginationControls {
|
|
float: right;
|
|
margin: 10px 15px 5px 0;
|
|
}
|
|
|
|
.datatable .footer .paginationControls .limitSelector {
|
|
font-size: 12px;
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.datatable .footer .paginationControls .pagination {
|
|
margin: 0;
|
|
}
|
|
|
|
.datatable .pagination > li.disabled > a,
|
|
.datatable .pagination > li.disabled > button {
|
|
pointer-events: none;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.datatable .pagination > li.disabled {
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.datatable .pagination > li > a,
|
|
.datatable .pagination > li > button,
|
|
.pagination > li > span {
|
|
user-select: none;
|
|
float: none;
|
|
}
|
|
|
|
.datatable.datatable-empty .table > tbody > tr > td {
|
|
padding: 15px 0;
|
|
}
|
|
|
|
[data-reach-menu-list],
|
|
[data-reach-menu-items] {
|
|
padding: 0px;
|
|
border: 1px var(--bg-dropdown-menu-color);
|
|
}
|
|
|
|
.tableMenu {
|
|
color: #767676;
|
|
padding: 10px;
|
|
background-color: var(--bg-dropdown-menu-color) !important;
|
|
}
|
|
|
|
.tableMenu .menuHeader {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.tableMenu .menuContent {
|
|
border-bottom: 1px solid #777;
|
|
font-size: 12px;
|
|
margin: 10px 0;
|
|
max-height: 140px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.tableMenu .menuContent .md-radio:first-child {
|
|
margin: 0;
|
|
}
|
|
|
|
.datatable .table-filters thead tr > th {
|
|
height: 32px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.widget .widget-body table thead th .table-filter {
|
|
color: #767676;
|
|
cursor: pointer;
|
|
font-size: 12px !important;
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.widget .widget-body table thead th .filter-active {
|
|
color: #f0ad4e;
|
|
font-size: 12px !important;
|
|
}
|
|
|
|
.datatable .filterbar > th {
|
|
border: none;
|
|
font-size: 12px !important;
|
|
padding: 0;
|
|
}
|
|
|
|
.md-checkbox {
|
|
margin: 1px 0;
|
|
position: relative;
|
|
}
|
|
|
|
.md-checkbox label {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.md-checkbox label:before,
|
|
.md-checkbox label:after {
|
|
content: '';
|
|
left: 0;
|
|
position: absolute;
|
|
top: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.md-checkbox label:before {
|
|
background: var(--bg-main-color);
|
|
border: 2px solid var(--bg-checkbox-border-color);
|
|
border-radius: 2px;
|
|
cursor: pointer;
|
|
height: 16px;
|
|
transition: background 0.3s;
|
|
width: 16px;
|
|
}
|
|
|
|
.md-checkbox input[type='checkbox'] {
|
|
margin-right: 5px;
|
|
opacity: 0;
|
|
outline: 0;
|
|
}
|
|
|
|
.md-checkbox input[type='checkbox']:checked + label:before {
|
|
background: #337ab7;
|
|
border: none;
|
|
}
|
|
|
|
.md-checkbox input[type='checkbox']:disabled + label:before {
|
|
background: #ececec;
|
|
border: 2px solid #ddd;
|
|
cursor: auto;
|
|
}
|
|
|
|
.md-checkbox input[type='checkbox']:checked + label:after {
|
|
border: 2px solid #fff;
|
|
border-right-style: none;
|
|
border-top-style: none;
|
|
height: 4px;
|
|
left: 4px;
|
|
top: 5px;
|
|
transform: rotate(-45deg);
|
|
width: 9px;
|
|
}
|
|
|
|
.md-radio {
|
|
margin: 6px 0;
|
|
}
|
|
|
|
.md-radio .md-radio-inline {
|
|
display: inline-block;
|
|
}
|
|
|
|
.md-radio input[type='radio'] {
|
|
display: none;
|
|
}
|
|
|
|
.md-radio input[type='radio']:checked + label:before {
|
|
animation: ripple 0.2s linear forwards;
|
|
border-color: #337ab7;
|
|
}
|
|
|
|
.md-radio input[type='radio']:checked + label:after {
|
|
transform: scale(1);
|
|
}
|
|
|
|
.md-radio label {
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
height: 16px;
|
|
margin-bottom: 0;
|
|
padding: 0 22px;
|
|
position: relative;
|
|
vertical-align: bottom;
|
|
}
|
|
|
|
.md-radio label:before,
|
|
.md-radio label:after {
|
|
border-radius: 50%;
|
|
content: '';
|
|
position: absolute;
|
|
transition: all 0.3s ease;
|
|
transition-property: transform, border-color;
|
|
}
|
|
|
|
.md-radio label:before {
|
|
border: 2px solid black;
|
|
border: 2px solid rgba(0, 0, 0, 0.54);
|
|
height: 16px;
|
|
left: 0;
|
|
top: 0;
|
|
width: 16px;
|
|
}
|
|
|
|
.md-radio label:after {
|
|
background: #337ab7;
|
|
height: 8px;
|
|
left: 4px;
|
|
top: 4px;
|
|
transform: scale(0);
|
|
width: 8px;
|
|
}
|
|
|
|
.table th.selection,
|
|
.table td.selection {
|
|
width: 30px;
|
|
}
|
|
|
|
.table th button.sortable {
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
color: var(--text-link-color);
|
|
}
|
|
|
|
.table th button.sortable:hover .sortable-label {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.datatable .table-setting-menu-btn {
|
|
border: none;
|
|
background: none;
|
|
}
|