snapshot of https://github.com/espocrm/espocrm.git (master, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s
This commit is contained in:
444
frontend/less/espo/rtl/bootstrap.less
vendored
Normal file
444
frontend/less/espo/rtl/bootstrap.less
vendored
Normal file
@@ -0,0 +1,444 @@
|
||||
// Compact Bootstrap 3 RTL adjustments used by EspoCRM.
|
||||
// Native `dir=rtl` handles inline flow; physical Bootstrap declarations are
|
||||
// corrected here without changing the shared LTR styles.
|
||||
|
||||
span,
|
||||
a,
|
||||
label,
|
||||
strong,
|
||||
small {
|
||||
unicode-bidi: isolate;
|
||||
}
|
||||
|
||||
[class^="col-xs-"],
|
||||
[class*=" col-xs-"] {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@media (min-width: @screen-sm-min) {
|
||||
[class^="col-sm-"],
|
||||
[class*=" col-sm-"] {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.col-sm-offset-2 {
|
||||
margin-left: 0;
|
||||
margin-right: percentage((2 / @grid-columns));
|
||||
}
|
||||
|
||||
.form-horizontal .control-label {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.navbar-header,
|
||||
.navbar-brand,
|
||||
.navbar-nav,
|
||||
.navbar-nav > li {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.navbar-right {
|
||||
float: left !important;
|
||||
margin-left: calc(var(--grid-gutter-width-half) * -1);
|
||||
margin-right: 0;
|
||||
|
||||
.dropdown-menu {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-left {
|
||||
float: right !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: @screen-md-min) {
|
||||
[class^="col-md-"],
|
||||
[class*=" col-md-"] {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: @screen-lg-min) {
|
||||
[class^="col-lg-"],
|
||||
[class*=" col-lg-"] {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tabs > li,
|
||||
.btn-group > .btn,
|
||||
.pagination > li > a,
|
||||
.pagination > li > span {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.btn-toolbar .btn,
|
||||
.btn-toolbar .btn-group,
|
||||
.btn-toolbar .input-group,
|
||||
.btn-group > .btn-group,
|
||||
.input-group .form-control,
|
||||
.progress-bar {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.btn-toolbar {
|
||||
margin-left: 0;
|
||||
margin-right: var(--minus-5px);
|
||||
|
||||
> .btn,
|
||||
> .btn-group,
|
||||
> .input-group {
|
||||
margin-left: 0;
|
||||
margin-right: var(--5px);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group .form-control:first-child,
|
||||
.input-group-addon:first-child,
|
||||
.input-group-btn:first-child > .btn,
|
||||
.pagination > li:first-child > a,
|
||||
.pagination > li:first-child > span {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-right-radius: var(--border-radius);
|
||||
border-top-right-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.btn-group > .btn:last-child:not(:first-child),
|
||||
.btn-group > .dropdown-toggle:not(:first-child),
|
||||
.input-group .form-control:last-child,
|
||||
.input-group-addon:last-child,
|
||||
.input-group-btn:last-child > .btn,
|
||||
.pagination > li:last-child > a,
|
||||
.pagination > li:last-child > span {
|
||||
border-bottom-left-radius: var(--border-radius);
|
||||
border-top-left-radius: var(--border-radius);
|
||||
border-bottom-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
|
||||
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-right-radius: var(--border-radius);
|
||||
border-top-right-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
||||
border-bottom-left-radius: var(--border-radius);
|
||||
border-top-left-radius: var(--border-radius);
|
||||
border-bottom-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.input-group-addon:first-child {
|
||||
border-left: 0;
|
||||
border-right: var(--input-border-width) solid var(--input-border);
|
||||
}
|
||||
|
||||
.input-group-addon:last-child {
|
||||
border-left: var(--input-border-width) solid var(--input-border);
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.input-group-btn {
|
||||
> .btn + .btn {
|
||||
margin-left: 0;
|
||||
margin-right: var(--minus-1px);
|
||||
}
|
||||
|
||||
&:first-child > .btn,
|
||||
&:first-child > .btn-group {
|
||||
margin-left: var(--minus-1px);
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
&:last-child > .btn,
|
||||
&:last-child > .btn-group {
|
||||
margin-left: 0;
|
||||
margin-right: var(--minus-1px);
|
||||
}
|
||||
}
|
||||
|
||||
.caret {
|
||||
margin-left: 0;
|
||||
margin-right: var(--2px);
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
text-align: right;
|
||||
|
||||
&.pull-right {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.nav,
|
||||
.list-group {
|
||||
padding-left: initial;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.nav-tabs > li > a {
|
||||
margin-left: auto;
|
||||
margin-right: var(--minus-2px);
|
||||
}
|
||||
|
||||
.radio,
|
||||
.checkbox {
|
||||
label {
|
||||
padding-left: 0;
|
||||
padding-right: var(--20px);
|
||||
}
|
||||
}
|
||||
|
||||
.radio input[type="radio"],
|
||||
.checkbox input[type="checkbox"] {
|
||||
margin-left: auto;
|
||||
margin-right: calc(var(--20px) * -1);
|
||||
}
|
||||
|
||||
.has-feedback .form-control {
|
||||
padding-left: calc(var(--input-height-base) * 1.25);
|
||||
padding-right: var(--12px);
|
||||
}
|
||||
|
||||
.form-control-feedback {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.form-horizontal .has-feedback .form-control-feedback {
|
||||
left: var(--grid-gutter-width-half);
|
||||
right: auto;
|
||||
}
|
||||
|
||||
caption,
|
||||
th {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 0;
|
||||
border-right: var(--3px) solid var(--blockquote-border-color);
|
||||
}
|
||||
|
||||
.navbar-toggle {
|
||||
float: left;
|
||||
margin-left: var(--15px);
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.media-left {
|
||||
padding-left: var(--10px);
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.media-right {
|
||||
padding-left: 0;
|
||||
padding-right: var(--10px);
|
||||
}
|
||||
|
||||
.list-group-item > .badge,
|
||||
.close {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.list-group-item > .badge + .badge {
|
||||
margin-left: var(--5px);
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.pager .previous > a,
|
||||
.pager .previous > span {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.pager .next > a,
|
||||
.pager .next > span {
|
||||
float: left;
|
||||
}
|
||||
|
||||
// Typography
|
||||
|
||||
.list-unstyled,
|
||||
.list-inline {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.list-inline {
|
||||
margin-right: var(--minus-5px);
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.blockquote-reverse {
|
||||
padding-left: var(--15px);
|
||||
padding-right: 0;
|
||||
border-left: var(--5px) solid var(--blockquote-border-color);
|
||||
border-right: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
// Tables
|
||||
|
||||
.table-responsive {
|
||||
@media screen and (max-width: @screen-xs-max) {
|
||||
> .table-bordered > :is(thead, tbody, tfoot) > tr {
|
||||
> :is(th, td):first-child:not(:last-child) {
|
||||
border-left: var(--1px) solid @table-border-color;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
> :is(th, td):last-child:not(:first-child) {
|
||||
border-left: 0;
|
||||
border-right: var(--1px) solid @table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Forms
|
||||
|
||||
.radio-inline,
|
||||
.checkbox-inline {
|
||||
padding-left: 0;
|
||||
padding-right: var(--20px);
|
||||
}
|
||||
|
||||
.radio-inline input[type="radio"],
|
||||
.checkbox-inline input[type="checkbox"] {
|
||||
margin-left: auto;
|
||||
margin-right: calc(var(--20px) * -1);
|
||||
}
|
||||
|
||||
.radio-inline + .radio-inline,
|
||||
.checkbox-inline + .checkbox-inline {
|
||||
margin-left: 0;
|
||||
margin-right: var(--10px);
|
||||
}
|
||||
|
||||
// Button groups
|
||||
|
||||
.btn-group {
|
||||
.btn + .btn,
|
||||
.btn + .btn-group,
|
||||
.btn-group + .btn,
|
||||
.btn-group + .btn-group {
|
||||
margin-left: 0;
|
||||
margin-right: var(--minus-1px);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group.btn-group-justified > .btn,
|
||||
.btn-group.btn-group-justified > .btn-group {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.btn .caret {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
// Input groups
|
||||
|
||||
.input-group-btn:first-child > .btn-group > .btn,
|
||||
.input-group-btn:first-child > .dropdown-toggle,
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-right-radius: var(--border-radius);
|
||||
border-top-right-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.input-group-btn:last-child > .btn-group > .btn,
|
||||
.input-group-btn:last-child > .dropdown-toggle,
|
||||
.input-group-btn:first-child > .btn:not(:first-child),
|
||||
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
||||
border-bottom-left-radius: var(--border-radius);
|
||||
border-top-left-radius: var(--border-radius);
|
||||
border-bottom-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
// Navs
|
||||
|
||||
.nav-justified > li {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.nav-tabs-justified > li > a {
|
||||
margin-left: 0;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
// Navbar
|
||||
|
||||
.navbar-brand {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@media (max-width: @grid-float-breakpoint-max) {
|
||||
.navbar-nav .open .dropdown-menu {
|
||||
> li > a,
|
||||
.dropdown-header {
|
||||
padding: var(--5px) var(--25px) var(--5px) var(--15px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Badges
|
||||
|
||||
.nav-pills > li > a > .badge {
|
||||
margin-left: 0;
|
||||
margin-right: var(--3px);
|
||||
}
|
||||
|
||||
// Media objects
|
||||
|
||||
.media-list {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
// Panels
|
||||
|
||||
.panel {
|
||||
> .table-bordered,
|
||||
> .table-responsive > .table-bordered {
|
||||
> :is(thead, tbody, tfoot) > tr {
|
||||
> :is(th, td):first-child:not(:last-child) {
|
||||
border-left: var(--1px) solid @table-border-color;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
> :is(th, td):last-child:not(:first-child) {
|
||||
border-left: 0;
|
||||
border-right: var(--1px) solid @table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Modals
|
||||
|
||||
.modal-footer {
|
||||
text-align: left;
|
||||
|
||||
.btn + .btn {
|
||||
margin-left: 0;
|
||||
margin-right: var(--5px);
|
||||
}
|
||||
|
||||
.btn-group .btn + .btn {
|
||||
margin-left: 0;
|
||||
margin-right: var(--minus-1px);
|
||||
}
|
||||
}
|
||||
560
frontend/less/espo/rtl/custom.less
Normal file
560
frontend/less/espo/rtl/custom.less
Normal file
@@ -0,0 +1,560 @@
|
||||
.dropdown-menu {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu-right {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
.dropdown-menu-left {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
body > .alert.alert-closable {
|
||||
.message {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.close-container {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.list .checkbox-dropdown {
|
||||
margin-right: var(--2px);
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.list-buttons-container > div {
|
||||
&.settings-container.pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
&.pagination {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.list-buttons-container > div.total-count {
|
||||
float: left;
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.btn-group > a.pagination-btn {
|
||||
float: left;
|
||||
}
|
||||
|
||||
li .preset .pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.preset > div {
|
||||
padding-right: 0;
|
||||
padding-left: 26px;
|
||||
}
|
||||
|
||||
ul.dropdown-menu > li.checkbox {
|
||||
padding: 3px var(--14px) 3px 0;
|
||||
|
||||
.checkbox-text {
|
||||
padding-left: 0;
|
||||
padding-right: var(--2px);
|
||||
}
|
||||
}
|
||||
|
||||
.remove-filter.pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.modal-body > div > .list > table td:first-child,
|
||||
.modal-body > div > .list > table th:first-child,
|
||||
#main > .list-container > .list > table td:first-child,
|
||||
#main > .list-container > .list > table th:first-child,
|
||||
.panel-body .no-side-margin > table td:first-child,
|
||||
.panel-body .no-side-margin > table th:first-child {
|
||||
padding-right: var(--panel-padding);
|
||||
padding-left: var(--table-cell-padding-half);
|
||||
}
|
||||
|
||||
.modal-body > div > .list > table td:last-child,
|
||||
.modal-body > div > .list > table th:last-child,
|
||||
#main > .list-container > .list > table td:last-child,
|
||||
#main > .list-container > .list > table th:last-child,
|
||||
.panel-body .no-side-margin > table td:last-child,
|
||||
.panel-body .no-side-margin > table th:last-child {
|
||||
padding-left: var(--panel-padding);
|
||||
padding-right: var(--table-cell-padding-half);
|
||||
}
|
||||
|
||||
#main > .list-container > .list {
|
||||
margin-left: calc(var(--container-padding) * -1);
|
||||
margin-right: calc(var(--container-padding) * -1);
|
||||
}
|
||||
|
||||
.panel > .panel-heading > .btn-group {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.modal-footer .btn {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.detail-button-container > .pull-right,
|
||||
.edit-button-container > .pull-right,
|
||||
.layout-container > [data-role="layoutRow"] > .btn-group.pull-right,
|
||||
.header-buttons.pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.header-breadcrumbs > .pull-left {
|
||||
float: right !important;
|
||||
}
|
||||
|
||||
.calendar-container .range-switch-group .btn {
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.calendar-container .button-container > div > div.pull-right,
|
||||
.dropdown-menu > li > a > span.pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.button-container [data-action="previous"],
|
||||
.button-container [data-action="next"] {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.panel > .panel-heading > .pull-right.btn-group,
|
||||
.panel > .panel-heading > .pull-right.dropdown {
|
||||
float: left !important;
|
||||
|
||||
.dropdown-menu {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-heading > .btn-group {
|
||||
right: 0;
|
||||
margin-left: -11px;
|
||||
}
|
||||
|
||||
.panel > .panel-heading > .pull-right.dropdown {
|
||||
right: 0;
|
||||
margin-left: -11px;
|
||||
}
|
||||
|
||||
.panel .panel-heading > a.pull-right,
|
||||
.cell > a.pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.cell:has(> .inline-edit-link):has(> .field) .control-label {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.inline-save-link {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.inline-cancel-link {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.cell {
|
||||
.inline-save-link {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: var(--8px);
|
||||
}
|
||||
|
||||
.inline-cancel-link {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: var(--26px);
|
||||
}
|
||||
}
|
||||
|
||||
td.cell[data-name="buttons"] > .btn-group {
|
||||
margin-right: -17px;
|
||||
}
|
||||
|
||||
#main > .list-container > .list > table td.cell[data-name="buttons"] > .btn-group {
|
||||
margin-right: -14px;
|
||||
}
|
||||
|
||||
.list-expanded > .list-group > .list-group-item > .pull-right,
|
||||
.list-expanded > .list-group > .list-group-item > .pull-right > .list-row-buttons {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.list-expanded > .list-group > .list-group-item > .pull-right > .list-row-buttons {
|
||||
margin-right: 0;
|
||||
margin-left: -16px;
|
||||
}
|
||||
|
||||
[data-action="showMore"] .more-count {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.link-container > .list-group-item > .pull-right,
|
||||
.link-container > .list-group-item > .pull-left > .pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.link-container > .list-group-item > .pull-left {
|
||||
float: right !important;
|
||||
}
|
||||
|
||||
.field .link-container .list-group-item.link-with-role a {
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
#global-search-panel,
|
||||
#last-viewed-panel,
|
||||
#notifications-panel {
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
#last-viewed-panel > .panel,
|
||||
#notifications-panel > .panel {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: var(--panel-border-radius);
|
||||
}
|
||||
|
||||
#notifications-panel {
|
||||
.panel .panel-heading .pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
}
|
||||
|
||||
.page-header > div.row > div > .pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.grid-stack {
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.grid-stack > div {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.dynamic-logic-expression-container .pull-right,
|
||||
#fields-panel .cell .field .pull-right,
|
||||
.gray-box .pull-right {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
.panel.dashlet > .panel-heading > .btn-group {
|
||||
right: 0;
|
||||
left: -10px;
|
||||
}
|
||||
|
||||
ul {
|
||||
&.dropdown-menu-with-icons,
|
||||
&:has( > li > a > .icon-item) {
|
||||
padding-left: 0;
|
||||
padding-right: var(--8px);
|
||||
}
|
||||
|
||||
&.dropdown-menu-with-icons,
|
||||
&:has(> li:not(.hidden) > a span.item-icon) {
|
||||
> li:not(:has(.item-icon-grid)) {
|
||||
a {
|
||||
padding-left: var(--20px);
|
||||
padding-right: var(--12px);
|
||||
}
|
||||
|
||||
.item-text {
|
||||
padding-left: 0;
|
||||
padding-right: var(--10px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:has(> li:not(.hidden) > a span.item-icon) {
|
||||
> li > a:not(:has(span.item-icon)) {
|
||||
padding-right: var(--28px);
|
||||
padding-left: var(--20px);
|
||||
}
|
||||
}
|
||||
|
||||
&.dropdown-menu > li > a > .check-icon + div {
|
||||
padding-right: 0;
|
||||
padding-left: var(--26px);
|
||||
}
|
||||
}
|
||||
|
||||
.panel {
|
||||
> .panel-heading {
|
||||
|
||||
> .link-group {
|
||||
> a {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#navbar .navbar .menu-container {
|
||||
> ul.dropdown-menu > li > a:has(> .item-user-profile) .avatar {
|
||||
margin-left: var(--8px);
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.post-container {
|
||||
.stream-post-preview {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.link-multiple-item .link-multiple-item-icon,
|
||||
.link-field-icon {
|
||||
margin-left: 4px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.stream-details-container .fa-arrow-right {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.array-add-list-group > li {
|
||||
input[type="checkbox"] {
|
||||
margin-left: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: @screen-xs-max) {
|
||||
.search-row .search-right-buttons-group {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
div.list-kanban > div > table {
|
||||
.item .panel .item-menu-container {
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
th.group-header {
|
||||
> div {
|
||||
.create-button {
|
||||
float: left;
|
||||
right: auto;
|
||||
left: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-header .collapse-button {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.collapsed-modal-bar {
|
||||
> .collapsed-modal {
|
||||
.title-container {
|
||||
float: right !important;
|
||||
}
|
||||
|
||||
.close-container {
|
||||
float: left !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list-group-side > li {
|
||||
border-right: 3px solid transparent;
|
||||
border-left: 0;
|
||||
padding: 5px 12px 5px 0;
|
||||
}
|
||||
|
||||
.list-group-tree > li {
|
||||
padding: 0 var(--panel-padding) 0 0;
|
||||
}
|
||||
|
||||
.list > table th.action-cell {
|
||||
a {
|
||||
left: 11px;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
#main > .list-container > .list > table th.action-cell {
|
||||
a {
|
||||
left: 9px;
|
||||
right: auto;
|
||||
|
||||
@media screen and (max-width: @screen-xs-max) {
|
||||
left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table.table-admin-panel tr > td:first-child > div > a {
|
||||
padding-right: 28px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.input-group > .input-group-btn:not(:first-child) > .btn:first-child,
|
||||
.input-group > .input-group-btn:last-child > .form-control:last-child {
|
||||
border-top-left-radius: var(--border-radius) !important;
|
||||
border-bottom-left-radius: var(--border-radius) !important;
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
.field .input-group > .input-group-btn > button.btn.btn-icon:not(:last-child, .radius-right) {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.field .input-group > input.main-element.form-control:first-child {
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
}
|
||||
|
||||
.input-group > .input-group-item,
|
||||
.input-group {
|
||||
> .selectize-control {
|
||||
&.radius-right {
|
||||
> .selectize-input {
|
||||
border-top-left-radius: var(--border-radius);
|
||||
border-bottom-left-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
&:not(.radius-left) {
|
||||
> .selectize-input {
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.radius-left {
|
||||
> .selectize-input {
|
||||
border-top-right-radius: var(--border-radius);
|
||||
border-bottom-right-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
&:not(.radius-right) {
|
||||
> .selectize-input {
|
||||
border-top-left-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
&.radius-right {
|
||||
border-top-left-radius: var(--border-radius) !important;
|
||||
border-bottom-left-radius: var(--border-radius) !important;
|
||||
|
||||
&:not(.radius-left) {
|
||||
.border-right-radius(0) !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.radius-left {
|
||||
border-top-right-radius: var(--border-radius) !important;
|
||||
border-bottom-right-radius: var(--border-radius) !important;
|
||||
|
||||
&:not(.radius-right) {
|
||||
.border-left-radius(0) !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.margin-right {
|
||||
margin-left: var(--padding-base-horizontal);
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
&.margin-left {
|
||||
margin-right: var(--padding-base-horizontal);
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.table {
|
||||
> thead,
|
||||
> tbody {
|
||||
> tr {
|
||||
> th:first-child,
|
||||
> td:first-child {
|
||||
padding-right: var(--padding-base-horizontal);
|
||||
}
|
||||
|
||||
> th:last-child,
|
||||
> td:last-child {
|
||||
padding-left: var(--padding-base-horizontal);
|
||||
}
|
||||
|
||||
@media screen and (max-width: @screen-xs-max) {
|
||||
> th:first-child,
|
||||
> td:first-child {
|
||||
padding-right: var(--table-cell-padding);
|
||||
}
|
||||
|
||||
> th:last-child,
|
||||
> td:last-child {
|
||||
padding-left: var(--table-cell-padding);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
.modal-body .categories-container + .list-container,
|
||||
.list-categories-column + .list-main-column .list-container,
|
||||
.folders-container + .list-container {
|
||||
.list {
|
||||
> table {
|
||||
td:last-child, th:last-child {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
td.cell[data-name="buttons"] > .btn-group {
|
||||
margin-right: -17px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.folders-container.sticked {
|
||||
left: unset;
|
||||
right: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.list > table th[data-name="r-checkbox"] .select-all-container {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.checkbox input[type="checkbox"].form-checkbox {
|
||||
margin-left: 0;
|
||||
margin-right: -20px;
|
||||
}
|
||||
|
||||
.selectize-control.single {
|
||||
.selectize-input {
|
||||
padding-left: 19px;
|
||||
padding-right: 10px;
|
||||
|
||||
&.dropdown-active:after,
|
||||
&:after {
|
||||
left: 8px;
|
||||
right: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
236
frontend/less/espo/rtl/layout-side.less
Normal file
236
frontend/less/espo/rtl/layout-side.less
Normal file
@@ -0,0 +1,236 @@
|
||||
body[data-navbar="side"] {
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
&,
|
||||
&.minimized.side-menu-opened {
|
||||
#navbar .navbar {
|
||||
.nav > li.more > .dropdown-menu,
|
||||
.nav > li.more > .dropdown-menu > li.tab-group > ul.dropdown-menu,
|
||||
.nav > li.tab-group > .dropdown-menu {
|
||||
left: auto;
|
||||
right: var(--navbar-width);
|
||||
}
|
||||
|
||||
.nav > li.more > .dropdown-menu,
|
||||
.nav > li.tab-group > .dropdown-menu {
|
||||
border-right-width: 0;
|
||||
border-left-width: var(--dropdown-border-width);
|
||||
}
|
||||
|
||||
.nav li.tab-group {
|
||||
span.full-label {
|
||||
padding-left: var(--8px);
|
||||
padding-right: var(--navbar-tab-text-left-padding);
|
||||
}
|
||||
|
||||
.group-caret {
|
||||
right: auto;
|
||||
left: var(--13px);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
a.minimizer {
|
||||
margin-right: calc(var(--navbar-tab-left-padding) + var(--3px));
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
a.minimizer > span.left {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.minimizer > span.right {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.side-menu-backdrop {
|
||||
right: 0;
|
||||
margin-right: var(--navbar-width);
|
||||
left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#navbar {
|
||||
.navbar-right {
|
||||
left: auto;
|
||||
right: 0;
|
||||
margin-right: var(--navbar-width);
|
||||
padding-left: var(--navbar-width);
|
||||
margin-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
ul.tabs {
|
||||
li {
|
||||
float: none !important;
|
||||
}
|
||||
|
||||
li > a {
|
||||
padding-right: var(--navbar-tab-left-padding);
|
||||
padding-left: var(--navbar-tab-right-padding);
|
||||
}
|
||||
|
||||
li.tab > a {
|
||||
padding-right: var(--navbar-tab-left-padding);
|
||||
padding-left: var(--navbar-tab-right-padding);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.minimized.side-menu-opened {
|
||||
#navbar > .navbar {
|
||||
.navbar-logo-container {
|
||||
float: left;
|
||||
}
|
||||
|
||||
a.minimizer > span.left {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a.minimizer > span.right {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.navbar-brand {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#navbar {
|
||||
ul.tabs {
|
||||
> li.more > ul > li > a > span.full-label {
|
||||
padding-left: 0;
|
||||
padding-right: var(--navbar-tab-text-left-padding);
|
||||
}
|
||||
|
||||
> li a > span.full-label {
|
||||
padding-left: 0;
|
||||
padding-right: var(--navbar-tab-text-left-padding);
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-header {
|
||||
> a.minimizer span {
|
||||
margin-right: 8px;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar li.tab > a {
|
||||
border-right-width: 0;
|
||||
border-right-style: solid;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
&.minimized {
|
||||
#navbar {
|
||||
.nav > li.more > ul.dropdown-menu,
|
||||
.nav > li.tab-group > .dropdown-menu {
|
||||
left: auto;
|
||||
right: var(--navbar-minimized-width);
|
||||
}
|
||||
|
||||
a.minimizer > span.left {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a.minimizer > span.right {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.tabs {
|
||||
> li > a {
|
||||
padding-right: var(--navbar-tab-left-padding);
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
> li.tab > a {
|
||||
padding-right: var(--navbar-tab-left-padding);
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
> li > a > span.short-label > .short-label-text {
|
||||
left: auto;
|
||||
right: -1px;
|
||||
}
|
||||
|
||||
> li.tab-group .group-caret {
|
||||
left: 5px;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-right {
|
||||
margin-left: 0;
|
||||
padding-right: 0;
|
||||
margin-right: var(--navbar-minimized-width);
|
||||
padding-left: var(--navbar-minimized-width);
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
padding-left: var(--15px);
|
||||
padding-right: calc(var(--navbar-minimized-width) + var(--container-padding));
|
||||
}
|
||||
|
||||
#footer {
|
||||
margin-left: 0;
|
||||
margin-right: var(--navbar-minimized-width);
|
||||
}
|
||||
|
||||
> .side-menu-backdrop {
|
||||
margin-left: 0;
|
||||
margin-right: var(--navbar-width);
|
||||
}
|
||||
}
|
||||
|
||||
&.has-navbar > .content {
|
||||
padding-left: var(--15px);
|
||||
padding-right: calc(var(--navbar-width) + var(--container-padding));
|
||||
}
|
||||
|
||||
> footer {
|
||||
margin-left: 0;
|
||||
margin-right: var(--navbar-width);
|
||||
}
|
||||
}
|
||||
|
||||
.list-sticky-bar {
|
||||
left: auto;
|
||||
right: var(--navbar-width);
|
||||
}
|
||||
|
||||
&.minimized .list-sticky-bar {
|
||||
left: auto;
|
||||
right: var(--navbar-minimized-width);
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
.folders-container.sticked {
|
||||
left: auto;
|
||||
right: var(--navbar-width);
|
||||
}
|
||||
}
|
||||
|
||||
&.minimized {
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
.folders-container.sticked {
|
||||
left: auto;
|
||||
right: var(--navbar-minimized-width);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
.notifications-badge-container {
|
||||
> .notifications-button > .number-badge {
|
||||
left: auto;
|
||||
right: 22px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50
frontend/less/espo/rtl/layout-top.less
Normal file
50
frontend/less/espo/rtl/layout-top.less
Normal file
@@ -0,0 +1,50 @@
|
||||
body:not([data-navbar="side"]) {
|
||||
@media screen and (min-width: @screen-sm-min) {
|
||||
#navbar .navbar {
|
||||
ul.tabs {
|
||||
li.more > li > a {
|
||||
padding-right: 10px;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-right-container {
|
||||
padding-right: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: @screen-xs-max) {
|
||||
#navbar .navbar {
|
||||
ul.tabs {
|
||||
> li a > span.full-label {
|
||||
padding-right: 30px;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
div.list-kanban > div > table {
|
||||
th.group-header {
|
||||
> div {
|
||||
padding-left: 0;
|
||||
padding-right: var(--table-cell-padding);
|
||||
}
|
||||
|
||||
> div:before,
|
||||
> div:after {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.kanban-row {
|
||||
.item-menu-container.pull-right {
|
||||
left: -9px;
|
||||
margin-left: -10px;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
6
frontend/less/espo/rtl/main.less
Normal file
6
frontend/less/espo/rtl/main.less
Normal file
@@ -0,0 +1,6 @@
|
||||
html[dir="rtl"] {
|
||||
@import "bootstrap.less";
|
||||
@import "layout-top.less";
|
||||
@import "layout-side.less";
|
||||
@import "custom.less";
|
||||
}
|
||||
Reference in New Issue
Block a user